diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/mummer-3.23/src/tigr/translate.cc	Tue Mar 18 17:55:14 2025 -0400
@@ -0,0 +1,103 @@
+#include "translate.hh"
+
+
+long int Translate_DNA
+     (char * A, char * tA, int Frame)
+
+     // function to translate dna sequence to aminoacid sequence
+     // uses esttrans' headers and algo
+     // A as read in from gene.h Read_String
+     // tA should be an empty string malloced to atleast (Len A / 3)
+     // frame is 1,2,3,4,5,6
+     // returns new (strlen(tA+1)) or -1 on error
+
+{
+  int     dna_int;
+  int     dnaseq_len, aaseq_len;
+  int     aa_index;
+  char    *dna_seq, *dna_ptr, *dna_end, *aa_ptr;
+
+  dnaseq_len = strlen ( A + 1 );
+  aa_ptr =  tA + 1;
+  dna_seq = A + 1;
+  dna_end = A + dnaseq_len;
+
+  if ( Frame >= 1  &&  Frame <= 3 )
+    {
+      dna_end -= 2;
+      dna_ptr = dna_seq + Frame - 1;
+      for (; dna_ptr <= dna_end;)
+	{
+	  dna_int = transdna [ int(*dna_ptr++) ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index = dna_int;
+	  aa_index <<= 4;
+	  
+	  dna_int = transdna [ int(*dna_ptr++) ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index += dna_int;
+	  aa_index <<= 4;
+	  
+	  dna_int = transdna [ int(*dna_ptr++) ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index += dna_int;
+	  
+	  *(aa_ptr++) = universal[aa_index];
+	}
+      
+      *aa_ptr = '\0';
+      aaseq_len = strlen ( tA + 1 );
+    }
+  else if ( Frame >= 4  &&  Frame <= 6 )
+    {
+      Frame -= 3;
+
+      dna_seq += 2;
+      dna_ptr = dna_end - Frame + 1;
+      for (; dna_ptr >= dna_seq;)
+	{
+	  dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index = dna_int;
+	  aa_index <<= 4;
+	  
+	  dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index += dna_int;
+	  aa_index <<= 4;
+	  
+	  dna_int = compdna [ transdna [ int(*dna_ptr--)] ];
+	  if ( dna_int == BAD_PEP_CHAR ) {
+	    fprintf(stderr,"WARNING: Forcing unrecognized DNA char to N\n");
+	    dna_int = DNA_XN;
+	  }
+	  aa_index += dna_int;
+	  
+	  *(aa_ptr++) = universal[aa_index];
+	}
+      
+      *aa_ptr = '\0';
+      aaseq_len = strlen ( tA + 1 );
+    }
+  else
+    aaseq_len = -1;
+     
+
+  return aaseq_len;
+}
+