comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/mummer-3.23/src/tigr/translate.cc @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 69:33d812a61356
1 #include "translate.hh"
2
3
4 long int Translate_DNA
5 (char * A, char * tA, int Frame)
6
7 // function to translate dna sequence to aminoacid sequence
8 // uses esttrans' headers and algo
9 // A as read in from gene.h Read_String
10 // tA should be an empty string malloced to atleast (Len A / 3)
11 // frame is 1,2,3,4,5,6
12 // returns new (strlen(tA+1)) or -1 on error
13
14 {
15 int dna_int;
16 int dnaseq_len, aaseq_len;
17 int aa_index;
18 char *dna_seq, *dna_ptr, *dna_end, *aa_ptr;
19
20 dnaseq_len = strlen ( A + 1 );
21 aa_ptr = tA + 1;
22 dna_seq = A + 1;
23 dna_end = A + dnaseq_len;
24
25 if ( Frame >= 1 && Frame <= 3 )
26 {
27 dna_end -= 2;
28 dna_ptr = dna_seq + Frame - 1;
29 for (; dna_ptr <= dna_end;)
30 {
31 dna_int = transdna [ int(*dna_ptr++) ];
32 if ( dna_int == BAD_PEP_CHAR ) {
33 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
34 dna_int = DNA_XN;
35 }
36 aa_index = dna_int;
37 aa_index <<= 4;
38
39 dna_int = transdna [ int(*dna_ptr++) ];
40 if ( dna_int == BAD_PEP_CHAR ) {
41 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
42 dna_int = DNA_XN;
43 }
44 aa_index += dna_int;
45 aa_index <<= 4;
46
47 dna_int = transdna [ int(*dna_ptr++) ];
48 if ( dna_int == BAD_PEP_CHAR ) {
49 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
50 dna_int = DNA_XN;
51 }
52 aa_index += dna_int;
53
54 *(aa_ptr++) = universal[aa_index];
55 }
56
57 *aa_ptr = '\0';
58 aaseq_len = strlen ( tA + 1 );
59 }
60 else if ( Frame >= 4 && Frame <= 6 )
61 {
62 Frame -= 3;
63
64 dna_seq += 2;
65 dna_ptr = dna_end - Frame + 1;
66 for (; dna_ptr >= dna_seq;)
67 {
68 dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
69 if ( dna_int == BAD_PEP_CHAR ) {
70 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
71 dna_int = DNA_XN;
72 }
73 aa_index = dna_int;
74 aa_index <<= 4;
75
76 dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
77 if ( dna_int == BAD_PEP_CHAR ) {
78 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
79 dna_int = DNA_XN;
80 }
81 aa_index += dna_int;
82 aa_index <<= 4;
83
84 dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
85 if ( dna_int == BAD_PEP_CHAR ) {
86 fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
87 dna_int = DNA_XN;
88 }
89 aa_index += dna_int;
90
91 *(aa_ptr++) = universal[aa_index];
92 }
93
94 *aa_ptr = '\0';
95 aaseq_len = strlen ( tA + 1 );
96 }
97 else
98 aaseq_len = -1;
99
100
101 return aaseq_len;
102 }
103