Mercurial > repos > rliterman > csp2
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 |