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