[med-svn] [Git][med-team/trnascan-se][master] 6 commits: New upstream version 2.0.7+ds

Étienne Mollier gitlab at salsa.debian.org
Wed Nov 4 19:52:10 GMT 2020



Étienne Mollier pushed to branch master at Debian Med / trnascan-se


Commits:
ca11dede by Étienne Mollier at 2020-11-04T20:19:11+01:00
New upstream version 2.0.7+ds
- - - - -
2f0da508 by Étienne Mollier at 2020-11-04T20:19:11+01:00
routine-update: New upstream version

- - - - -
700d1501 by Étienne Mollier at 2020-11-04T20:19:39+01:00
Update upstream source from tag 'upstream/2.0.7+ds'

Update to upstream version '2.0.7+ds'
with Debian dir c04a6330ec3582817eb1fcd40c610d1462a5f2cd
- - - - -
e355ed73 by Étienne Mollier at 2020-11-04T20:26:29+01:00
fix typo in tRNAscan-SE.1

- - - - -
6620ef58 by Étienne Mollier at 2020-11-04T20:38:52+01:00
Bring back debugging symbols

The configure script now has a custom option to activate those,
but it needed to be enabled from dh_auto_donfigure to allow the
production of the -dbg package.

- - - - -
92374a97 by Étienne Mollier at 2020-11-04T20:41:35+01:00
routine-update: Ready to upload to unstable

- - - - -


12 changed files:

- configure.ac
- debian/changelog
- debian/rules
- debian/tRNAscan-SE.1
- + lib/gcode/gcode.marsumito
- lib/tRNAscanSE/ArraytRNA.pm
- lib/tRNAscanSE/CM.pm
- lib/tRNAscanSE/GeneticCode.pm
- lib/tRNAscanSE/ScanResult.pm
- lib/tRNAscanSE/tRNA.pm
- tRNAscan-SE.conf.src
- tRNAscan-SE.src


Changes:

=====================================
configure.ac
=====================================
@@ -7,9 +7,25 @@ AC_PREREQ([2.69])
 AC_INIT([tRNAscan-SE],[2.0.0],[pchan at soe.ucsc.edu])
 AC_CONFIG_HEADERS([config.h])
 
+AC_ARG_ENABLE(debugging,
+  AS_HELP_STRING([--enable-debugging],[enable debugging, default: no]),
+[
+case "${enableval}" in
+  yes) enable_debugging=yes ;;
+  no)  enable_debugging=no ;;
+  *)   AC_MSG_ERROR([bad value ${enableval} for --enable-debugging]) ;;
+esac],
+[enable_debugging=no])
+
 # Checks for programs.
 AC_PROG_CC
 
+if test "$enable_debugging" != "no"; then
+  CFLAGS="-g -Wall"
+else
+  CFLAGS="-O3"
+fi
+
 # standard install program
 AC_PROG_INSTALL
 


=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+trnascan-se (2.0.7+ds-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream version.
+  * Fixed typo in tRNAscan-SE.1.
+
+ -- Étienne Mollier <etienne.mollier at mailoo.org>  Wed, 04 Nov 2020 20:40:45 +0100
+
 trnascan-se (2.0.6+ds-1) unstable; urgency=medium
 
   * Team upload.


=====================================
debian/rules
=====================================
@@ -5,6 +5,9 @@ export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 %:
 	dh $@ --no-parallel
 
+override_dh_auto_configure:
+	dh_auto_configure -- --enable-debugging
+
 # tRNAscan can't handle compressed fasta files
 override_dh_compress:
 	dh_compress -X .fa


=====================================
debian/tRNAscan-SE.1
=====================================
@@ -171,7 +171,7 @@ predictions per tRNA identification)
 .TP
 \fB\-e\fR  \fB\-\-eufind\fR
 : search using Eukaryotic tRNA finder (EufindtRNA) only
-(defaults to Normal seach parameters when run alone,
+(defaults to Normal search parameters when run alone,
 or to Relaxed search params when run with Cove)
 .TP
 \fB\-\-emode\fR <mode>


=====================================
lib/gcode/gcode.marsumito
=====================================
@@ -0,0 +1,7 @@
+# Marsupial mitochondrial translation codes
+# Format:  <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA	Trp	W
+ATA	Met	M
+GGC	Asp	D
+AGR	Stp	*


=====================================
lib/tRNAscanSE/ArraytRNA.pm
=====================================
@@ -210,7 +210,14 @@ sub bsearch_id
     my $x = shift;
     my $key = shift;
     my ($l, $u) = (0, @{$self->{ar_tRNAs}} - 1);  
-    my $i;                       
+    my $i;
+
+    my @x_parts = ();
+    if ($key eq "gtrnadb_id_parts")
+    {
+        @x_parts = split(/\-/, $x);
+    }
+
     while ($l <= $u)
 	{
 		$i = int(($l + $u)/2);
@@ -259,6 +266,66 @@ sub bsearch_id
                 return $i; 
             }
         }
+        elsif ($key eq "gtrnadb_id_parts")
+        {
+            my @ar_parts = split(/\-/, $self->{ar_tRNAs}->[$i]->gtrnadb_id());
+            if ($ar_parts[0] lt $x_parts[0])
+            {
+                $l = $i+1;
+            }
+            elsif ($ar_parts[0] gt $x_parts[0])
+            {
+                $u = $i-1;
+            }
+            else
+            {
+                if ($ar_parts[1] lt $x_parts[1])
+                {
+                    $l = $i+1;
+                }
+                elsif ($ar_parts[1] gt $x_parts[1])
+                {
+                    $u = $i-1;
+                }
+                else
+                {
+                    if ($ar_parts[2] lt $x_parts[2])
+                    {
+                        $l = $i+1;
+                    }
+                    elsif ($ar_parts[2] gt $x_parts[2])
+                    {
+                        $u = $i-1;
+                    }
+                    else
+                    {
+                        if ($ar_parts[3] < $x_parts[3])
+                        {
+                            $l = $i+1;
+                        }
+                        elsif ($ar_parts[3] > $x_parts[3])
+                        {
+                            $u = $i-1;
+                        }
+                        else
+                        {
+                            if ($ar_parts[4] < $x_parts[4])
+                            {
+                                $l = $i+1;
+                            }
+                            elsif ($ar_parts[4] > $x_parts[4])
+                            {
+                                $u = $i-1;
+                            }
+                            else
+                            {
+                                return $i;
+                            }
+                        }
+                    }
+                }
+            }
+        }
         elsif ($key eq "extdb_id")
         {
             if ($self->{ar_tRNAs}->[$i]->extdb_id() lt $x)
@@ -295,6 +362,10 @@ sub sort_array
     {
         @{$self->{ar_tRNAs}} = sort sort_by_gtrnadb_id @{$self->{ar_tRNAs}};
     }
+    elsif ($key eq "gtrnadb_id_parts")
+    {
+        @{$self->{ar_tRNAs}} = sort sort_by_gtrnadb_id_parts @{$self->{ar_tRNAs}};
+    }
     elsif ($key eq "extdb_id")
     {
         @{$self->{ar_tRNAs}} = sort sort_by_extdb_id @{$self->{ar_tRNAs}};
@@ -344,6 +415,18 @@ sub sort_by_gtrnadb_id
     return ($a->gtrnadb_id() cmp $b->gtrnadb_id()); 
 }
 
+sub sort_by_gtrnadb_id_parts
+{
+    my @a_parts = split(/\-/, $a->gtrnadb_id());
+    my @b_parts = split(/\-/, $b->gtrnadb_id());
+
+    return ($a_parts[0] cmp $b_parts[0] ||
+            $a_parts[1] cmp $b_parts[1] ||
+            $a_parts[2] cmp $b_parts[2] ||
+            int($a_parts[3]) <=> int($b_parts[3]) ||
+            int($a_parts[4]) <=> int($b_parts[4]));
+}
+
 sub sort_by_extdb_id
 {
     return ($a->extdb_id() cmp $b->extdb_id()); 


=====================================
lib/tRNAscanSE/CM.pm
=====================================
@@ -710,7 +710,6 @@ sub find_anticodon
 
     my $seq = $trna->seq();
     my $ss = $trna->ss();
-    my $model = $trna->model();
     my $undef_anticodon = $gc->undef_anticodon();
     
     my $antiloop_index = 0;
@@ -720,29 +719,101 @@ sub find_anticodon
     # looking for second stem-loop structure ">>>>...<<<<"
     # that should be the anitocodon stem-loop 
 
-    if ($opts->mito_mode() and $model eq "SerGCT")
+    if ($ss =~ /^([>.]+<[<.]+>[>.]*)>([.]{4,})<+.+[>.]+<[<.]+/o)
     {
-        if ($ss =~ /^([>.]+)>([.]{4,})<+.+[>.]+<[<.]+/o)
-        {
-            # set to index position of first base in anticodon loop
-            $antiloop_index = length($1) + 1;
-            $antiloop_len = length($2);   # anticodon loop length            
-        }
+        # set to index position of first base in anticodon loop
+        $antiloop_index = length($1) + 1;
+        $antiloop_len = length($2);   # anticodon loop length
     }
-    elsif ($opts->mito_mode()) 
+    
+    if ($antiloop_index != 0 and $antiloop_len != 0)
     {
-        if ($ss =~ /^([>.]+<[<.]+[>.]*)>([.]{4,})<+.+[>.]+<[<.]+/o)
+        # index of end of anticodon loop
+        $antiloop_end = $antiloop_index + $antiloop_len - 1;
+    
+        $antiloop = substr($seq, $antiloop_index, $antiloop_len);
+    
+        # remove '-' gaps from loop
+        $antiloop =~ s/[\-]//g;      
+
+        # Don't guess if even number of bp in 
+        # anticodon loop
+
+        # remove introns & non-canonical bases
+        $antiloop =~ s/[a-z]//g;      
+
+        if ((length($antiloop) < 5) || ((length($antiloop) % 2) == 0))
         {
-            # set to index position of first base in anticodon loop
-            $antiloop_index = length($1) + 1;
-            $antiloop_len = length($2);   # anticodon loop length
+            return ($undef_anticodon, -1, -1, -1);
         }
+        # get anticodon 
+        $ac_index = (length($antiloop) - 3) / 2;
+        $anticodon = substr($antiloop, $ac_index, 3);
+        $verify_ac = substr($seq, $ac_index + $antiloop_index, 3);
+            
+        # check to see if anticodon extracted from the entire
+        #  trna sequence (coveseq) is same as that extracted from
+        #  just the anticodon loop sequence (antiloop)
+    
+        if ($verify_ac ne $anticodon)
+        {
+            $trna->category("undetermined_ac");
+            return ($undef_anticodon, -1, -1, -1);            
+        }
+        return ($anticodon, $antiloop_index, $antiloop_end, $ac_index + $antiloop_index + 1);
+    }
+    else
+    {
+        $trna->category("undetermined_ac");
+        return ($undef_anticodon, -1, -1, -1);
+    }
+}
+
+# find anticodon loop & a-codon from coves or cmsearch output
+sub find_mito_anticodon
+{                
+    my $self = shift;
+    my ($opts, $trna, $gc) = @_;
+    my ($antiloop, $antiloop_end, $ac_index, $anticodon, $verify_ac);
+
+    my $seq = $trna->seq();
+    my $ss = $trna->ss();
+    my $model = $trna->model();
+    my $undef_anticodon = $gc->undef_anticodon();
+    
+    my $antiloop_index = 0;
+    my $antiloop_len = 0;
+
+    # Match pattern in secondary structure output, 
+    # looking for second stem-loop structure ">>>>...<<<<"
+    # that should be the anitocodon stem-loop 
+
+    if ($model eq "SerGCT" and $ss =~ /^([>.]+)>([.]{4,})<+.+[>.]+<[<.]+/o)
+    {
+        # set to index position of first base in anticodon loop
+        $antiloop_index = length($1) + 1;
+        $antiloop_len = length($2);   # anticodon loop length
+        $trna->note("No D-arm");
+    }
+    elsif ($ss =~ /^([>.]+<[<.]+[>.]*)>([.]{4,})<[<.]+[.]{4,}<[<.]+$/o)
+    {
+        # set to index position of first base in anticodon loop
+        $antiloop_index = length($1) + 1;
+        $antiloop_len = length($2);   # anticodon loop length          
+        $trna->note("No T-arm");
     }
-    elsif ($ss =~ /^([>.]+<[<.]+>[>.]*)>([.]{4,})<+.+[>.]+<[<.]+/o)
+    elsif ($ss =~ /^([>.]+[.]{4,}[>.]+)>([.]{4,})<[<.]+\.+[>.]+<[<.]+$/o)
     {
         # set to index position of first base in anticodon loop
         $antiloop_index = length($1) + 1;
         $antiloop_len = length($2);   # anticodon loop length
+        $trna->note("No D-arm");
+    }
+    elsif ($ss =~ /^([>.]+<[<.]+[>.]*)>([.]{4,})<+.+[>.]+<[<.]+/o)
+    {
+        # set to index position of first base in anticodon loop
+        $antiloop_index = length($1) + 1;
+        $antiloop_len = length($2);   # anticodon loop length          
     }
     
     if ($antiloop_index != 0 and $antiloop_len != 0)
@@ -757,65 +828,65 @@ sub find_anticodon
 
         # Don't guess if even number of bp in 
         # anticodon loop
-        if (!$opts->mito_mode())
+        $antiloop = uc($antiloop);
+        if (length($antiloop) < 5)
         {
-            # remove introns & non-canonical bases
-            $antiloop =~ s/[a-z]//g;      
-
-            if ((length($antiloop) < 5) || ((length($antiloop) % 2) == 0))
-            {
-                return ($undef_anticodon, -1, -1, -1);
-            }
-            # get anticodon 
-            $ac_index = (length($antiloop) - 3) / 2;
-            $anticodon = substr($antiloop, $ac_index, 3);
-            $verify_ac = substr($seq, $ac_index + $antiloop_index, 3);
+            $trna->category("undetermined_ac");
+            return ($undef_anticodon, -1, -1, -1);
         }
-        else
+        elsif ((length($antiloop) % 2) == 0)
         {
-            $antiloop = uc($antiloop);
-            if (length($antiloop) < 5)
+            my $found = 0;
+            $ac_index = int((length($antiloop) - 3) / 2);
+            $anticodon = substr($antiloop, $ac_index, 3);
+            my $isotype = $gc->get_tRNA_type($self, $anticodon, $self->{main_cm_file_path}->{$model}, $model, $self->cove_mode());
+            if ($model eq $isotype or ($model eq "SerGCT" and $isotype eq "Ser") or ($model eq "SerTGA" and $isotype eq "Ser")
+                or ($model eq "LeuTAG" and $isotype eq "Leu") or ($model eq "LeuTAA" and $isotype eq "Leu"))
             {
-                $trna->category("undetermined_ac");
-                return ($undef_anticodon, -1, -1, -1);
+                $trna->category("mito_ac_mislocation");
+                $found = 1;
             }
-            elsif ((length($antiloop) % 2) == 0)
+            else
             {
-                $ac_index = int((length($antiloop) - 3) / 2);
+                $ac_index = int((length($antiloop) - 3) / 2 + 1);
                 $anticodon = substr($antiloop, $ac_index, 3);
-                my $isotype = $gc->get_tRNA_type($self, $anticodon, $self->{main_cm_file_path}->{$model}, $model, $self->cove_mode());
+                $isotype = $gc->get_tRNA_type($self, $anticodon, $self->{main_cm_file_path}->{$model}, $model, $self->cove_mode());
                 if ($model eq $isotype or ($model eq "SerGCT" and $isotype eq "Ser") or ($model eq "SerTGA" and $isotype eq "Ser")
                     or ($model eq "LeuTAG" and $isotype eq "Leu") or ($model eq "LeuTAA" and $isotype eq "Leu"))
                 {
                     $trna->category("mito_ac_mislocation");
-                    $trna->note("(".$anticodon.")");
+                    $found = 1;                        
                 }
                 else
                 {
-                    $ac_index = int((length($antiloop) - 3) / 2 + 1);
+                    $ac_index = 2;
                     $anticodon = substr($antiloop, $ac_index, 3);
                     $isotype = $gc->get_tRNA_type($self, $anticodon, $self->{main_cm_file_path}->{$model}, $model, $self->cove_mode());
                     if ($model eq $isotype or ($model eq "SerGCT" and $isotype eq "Ser") or ($model eq "SerTGA" and $isotype eq "Ser")
                         or ($model eq "LeuTAG" and $isotype eq "Leu") or ($model eq "LeuTAA" and $isotype eq "Leu"))
                     {
                         $trna->category("mito_ac_mislocation");
-                        $trna->note("(".$anticodon.")");                        
-                    }
-                    else
-                    {
-                        $trna->category("mito_mismatch_ac");
-                        $trna->note("(".$anticodon.")");
+                        $found = 1;                        
                     }
                 }
-                return ($undef_anticodon, -1, -1, -1);
             }
-            else
+
+            if ($found)
             {
-                # get anticodon 
-                $ac_index = (length($antiloop) - 3) / 2;
-                $anticodon = substr($antiloop, $ac_index, 3);
                 $verify_ac = uc(substr($seq, $ac_index + $antiloop_index, 3));
             }
+            else
+            {
+                $trna->category("undetermined_ac");
+                return ($undef_anticodon, -1, -1, -1);
+            }
+        }
+        else
+        {
+            # get anticodon 
+            $ac_index = (length($antiloop) - 3) / 2;
+            $anticodon = substr($antiloop, $ac_index, 3);
+            $verify_ac = uc(substr($seq, $ac_index + $antiloop_index, 3));
         }
             
         # check to see if anticodon extracted from the entire
@@ -1044,7 +1115,7 @@ sub decode_nci_tRNA_properties
     else
     {                               
         ($intron, $istart, $iend) = $self->find_intron($trna->seq(), $antiloop_index, $antiloop_end);
-        
+
         if ($intron)
         {
             $mat_seq = substr($trna->seq(), 0, $istart - 1).substr($trna->seq(), $iend);
@@ -1372,7 +1443,7 @@ sub decode_mito_tRNA_properties
 
     $anticodon = "ERR";
 
-    ($anticodon, $antiloop_index, $antiloop_end, $acodon_index) = $self->find_anticodon($opts, $trna, $gc);
+    ($anticodon, $antiloop_index, $antiloop_end, $acodon_index) = $self->find_mito_anticodon($opts, $trna, $gc);
     $trna->anticodon($anticodon);
     $trna->add_ac_pos($acodon_index, $acodon_index + 2);
     
@@ -1424,8 +1495,15 @@ sub decode_mito_tRNA_properties
     {
         if ($trna->category() eq "")
         {
-            $trna->category("mito_iso_conflict");
-            $trna->note("(".$isotype.")");
+            $trna->category("mito_inconsistent_isotype");
+            if ($trna->note() ne "")
+            {
+                $trna->note("(".$isotype."); ".$trna->note());
+            }
+            else
+            {
+                $trna->note("(".$isotype.")");
+            }
         }
         $log->broadcast($prescan_tRNA->tRNAscan_id().".trna".$trna->id()." - isotype/anticondon conflict\t Model: ".$trna->model()." Detected: ".$isotype.$anticodon."\n".
                         $trna->seq()."\n".$trna->ss()."\n");
@@ -1434,15 +1512,22 @@ sub decode_mito_tRNA_properties
     {
         if ($trna->category() eq "")
         {
-            $trna->category("mito_mismatch_ac");
-            $trna->note("(".$model_ac.")");
+            $trna->category("mito_inconsistent_ac");
+            if ($trna->note() ne "")
+            {
+                $trna->note("(".$model_ac."); ".$trna->note());
+            }
+            else
+            {
+                $trna->note("(".$model_ac.")");
+            }
         }
     }
     if ($vert_mito_isotype eq "")
     {
         if ($trna->category() eq "")
         {
-            $trna->category("mito_noncanonical_ac");
+            $trna->category("mito_unexpected_ac");
         }
     }
     
@@ -1581,7 +1666,7 @@ sub scan_noncanonical_introns
         if ($nci_count > 0)
         {
             my $ci_seq = "";
-			if ($ci_index > -1)
+			if ($ci_index > -1 and $tRNA->model() ne "SeC")
             {
                 if ($add_ci)
                 {
@@ -1640,7 +1725,7 @@ sub add_canonical_intron
         }
     }
     $mat_seq .= substr($precursor_seq, $introns[scalar(@introns)-1]->{rel_end});
-    
+
     if (uc($mat_seq) ne uc($tRNA->mat_seq()))
     {
         my $trna_file = tRNAscanSE::Sequence->new;
@@ -1785,12 +1870,13 @@ sub check_intron_validity
     }
     
     my $clip_seq = substr($padded_seq, 0, $cm_intron->start() - $previous_intron_len + length($pre_intron_seq) - 1) . substr($padded_seq, $cm_intron->end() - $previous_intron_len - length($post_intron_seq));
+
     my $trna_file = tRNAscanSE::Sequence->new;
     $trna_file->open_file($global_constants->get("tmp_trnaseq_file"), "write");
     $trna_file->set_seq_info($tRNA->seqname().".trna".&pad_num($tRNA->id(), 6), $tRNA->tRNAscan_id(), length($clip_seq), $clip_seq);
     $trna_file->write_fasta();
     $trna_file->close_file();
-    
+
     my $scan_flag = 0;
     my $cms_output_file = "";
     my $file_idx = -1;
@@ -1852,7 +1938,31 @@ sub check_intron_validity
             {
                 $intron_start = $pos + 1;
                 $intron_end = length($intron_seq) + $pos;
-                my @ar_introns = $tRNA->ar_introns();
+                my @ar_introns_src = $tRNA->ar_introns();
+                my @ar_introns = ();
+                my $intron_rec = {};
+                # Adjust intron relative start and end when round1 seq is different from round2 seq
+                for (my $i = 0; $i < scalar(@ar_introns_src); $i++)
+                {
+                    $intron_rec = {};
+                    $intron_rec->{seq} = $ar_introns_src[$i]->{seq};
+                    $intron_rec->{start} = $ar_introns_src[$i]->{start};
+                    $intron_rec->{end} = $ar_introns_src[$i]->{end};
+                    $intron_rec->{type} = $ar_introns_src[$i]->{type};
+                    if (uc(substr($seq, $ar_introns_src[$i]->{rel_start} - 1, $ar_introns_src[$i]->{rel_end} - $ar_introns_src[$i]->{rel_start} + 1)) ne uc($ar_introns_src[$i]->{seq}))
+                    {
+                        my $pos_i = index(uc($seq), uc($ar_introns_src[$i]->{seq}));
+                        $intron_rec->{rel_start} = $pos_i + 1;
+                        $intron_rec->{rel_end} = length($ar_introns_src[$i]->{seq}) + $pos_i;
+                    }
+                    else
+                    {
+                        $intron_rec->{rel_start} = $ar_introns_src[$i]->{rel_start};
+                        $intron_rec->{rel_end} = $ar_introns_src[$i]->{rel_end};
+                    }
+                    $ar_introns[$i] = $intron_rec;
+                }
+                # Check intron duplication
                 for (my $i = 0; $i < scalar(@ar_introns); $i++)
                 {
                     if ($ar_introns[$i]->{rel_start} == $intron_start and $ar_introns[$i]->{rel_end} == $intron_end)
@@ -1879,6 +1989,13 @@ sub check_intron_validity
                         $log->debug("Overlap with intron ".$tRNA->tRNAscan_id()." ".$intron_seq);
                         last;
                     }
+                    elsif ($ar_introns[$i]->{type} eq "NCI" and
+                           &seg_overlap($ar_introns[$i]->{rel_start}, $ar_introns[$i]->{rel_end}, $intron_start, $intron_end, 0))
+                    {
+                        $ret_value = 0;
+                        $log->debug("Overlap with noncanonical intron ".$tRNA->tRNAscan_id()." ".$intron_seq);
+                        last;
+                    }
                 }
             }
             
@@ -1901,6 +2018,16 @@ sub check_intron_validity
             my $hit_overlap = &seg_overlap($tRNA->start(), $tRNA->end(), $start, $end, 40);
             if ($ret_value and $hit_overlap and $cm_tRNA->score() > $tRNA->score() and length($cm_tRNA->seq()) >= $self->{min_tRNA_no_intron})
             {
+                # Adjust intron relative start and end when round1 seq is different from round2 seq
+                my @ar_introns = $tRNA->ar_introns();
+                for (my $i = 0; $i < scalar(@ar_introns); $i++)
+                {
+                    if (uc(substr($seq, $ar_introns[$i]->{rel_start} - 1, $ar_introns[$i]->{rel_end} - $ar_introns[$i]->{rel_start} + 1)) ne uc($ar_introns[$i]->{seq}))
+                    {
+                        my $pos_i = index(uc($seq), uc($ar_introns[$i]->{seq}));
+                        $tRNA->set_intron($i, $pos_i + 1, length($ar_introns[$i]->{seq}) + $pos_i, $ar_introns[$i]->{type}, $ar_introns[$i]->{seq});
+                    }
+                }
                 $tRNA->upstream(substr($clip_seq, 0, $upstream_len));
                 $tRNA->downstream(substr($clip_seq, $cm_tRNA->end()));
                 $tRNA->seq($seq);


=====================================
lib/tRNAscanSE/GeneticCode.pm
=====================================
@@ -117,7 +117,7 @@ sub initialize
                 'GAA'=>'Phe', 'GTT'=>'Asn', 'TTT'=>'Lys', 'GTC'=>'Asp', 'TTC'=>'Glu',
                 'GTG'=>'His', 'TTG'=>'Gln', 'GTA'=>'Tyr',
                 'GAT'=>'Ile', 'TAT'=>'Met', 'CAT'=>'Met',
-                'GCA'=>'Cys', 'TCA'=>'Trp'
+                'GCA'=>'Cys', 'TCA'=>'Trp', 'GCC'=>'Asp',
     };
     
     $self->{trans_map} = +{};


=====================================
lib/tRNAscanSE/ScanResult.pm
=====================================
@@ -548,15 +548,26 @@ sub save_allStruct_output
 			$note = $tRNA->category();
 			$note =~ s/_/ /g;
 			$note =~ s/mito //g;
-			$note =~ s/iso/type/g;
 			$note =~ s/ac/anticodon/g;
 			$note = uc(substr($note, 0, 1)).substr($note, 1);
 			if ($tRNA->note() ne "")
 			{
-				$note = $note . " ". $tRNA->note();
+				if ($tRNA->note() =~ /^\(/)
+				{
+					$note = $note . " ". $tRNA->note();
+				}
+				else
+				{
+					$note = $note . ";". $tRNA->note();
+				}
 			}
 			$line .= "Note: ".$note;
 		}
+		elsif ($tRNA->note() ne "")
+		{
+			$note = $tRNA->note();
+			$line .= "Note: ".$note;
+		}
 	}
 
 	if ($line ne "")
@@ -832,13 +843,23 @@ sub construct_tab_output
 		if ($tRNA->category() ne "" and $opts->detail())
 		{
 			$note = $tRNA->category();
-			$note =~ s/mito //g;
-			$note =~ s/iso/type/g;
+			$note =~ s/mito_//g;
 			if ($tRNA->note() ne "")
 			{
-				$note = $note . $tRNA->note();
+				if ($tRNA->note() =~ /^\(/)
+				{
+					$note = $note . " " . $tRNA->note();
+				}
+				else
+				{
+					$note = $note . ";" . $tRNA->note();
+				}
 			}
 		}
+		elsif ($tRNA->note() ne "" and $opts->detail())
+		{
+			$note = $tRNA->note();
+		}
 		$result_line .= "\t".$note;
 	}
     $result_line .= "\n";


=====================================
lib/tRNAscanSE/tRNA.pm
=====================================
@@ -1274,6 +1274,22 @@ sub get_base_at_rel_align_pos
 	return $base;
 }
 
+sub get_seq_at_rel_align_pos
+{
+	my $self = shift;
+	my $rel_pos_start = shift;
+	my $rel_pos_end = shift;
+
+	my $len = $rel_pos_end - $rel_pos_start + 1;
+
+	my $seq = "";
+	if ($rel_pos_start != -1 and $len > 0)
+	{
+		$seq = substr($self->{data}->[_sprinzl_align], $rel_pos_start, $len);
+	}
+	return $seq;
+}
+
 sub get_rel_pos
 {
 	my $self = shift;


=====================================
tRNAscan-SE.conf.src
=====================================
@@ -82,6 +82,7 @@ gc_invert_mito: {lib_dir}/gcode/gcode.invmito
 gc_ciliate_cyto: {lib_dir}/gcode/gcode.cilnuc
 gc_echinoderm_mito: {lib_dir}/gcode/gcode.echdmito
 gc_other_mito: {lib_dir}/gcode/gcode.othmito
+gc_marsu_mito: {lib_dir}/gcode/gcode.marsumito
 
 # Infernal 1.1 covariance models
 cm_dir: {lib_dir}/models


=====================================
tRNAscan-SE.src
=====================================
@@ -4,7 +4,7 @@
 # tRNAscan-SE: a program for improved detection of transfer RNA
 #              genes in genomic sequence
 #
-# Version 2.0.6
+# Version 2.0.7
 #
 # Copyright (C) 2020 Patricia Chan and Todd Lowe 
 #
@@ -39,8 +39,8 @@ use tRNAscanSE::IntResultFile;
 use tRNAscanSE::MultiResultFile;
 use tRNAscanSE::SS;
 
-our $version = "2.0.6"; 
-our $release_date = "May 2020";
+our $version = "2.0.7"; 
+our $release_date = "Oct 2020";
 our $program_id = "tRNAscan-SE-".$version;
 
 # modified by 'make'
@@ -621,7 +621,7 @@ sub error_handler
 
 sub display_credits
 {
-    print STDERR "Copyright (C) 2019 Patricia Chan and Todd Lowe\n",
+    print STDERR "Copyright (C) 2020 Patricia Chan and Todd Lowe\n",
                  "                   University of California Santa Cruz\n",
                  "Freely distributed under the GNU General Public License (GPLv3)\n\n";
 }
@@ -1063,7 +1063,7 @@ sub set_options
         $opts->no_isotype(0);
         if ($opt_isocm eq "off")
         {
-            $opts->no_isotype(0);
+            $opts->no_isotype(1);
         }
 
         if ($opt_mt ne '')



View it on GitLab: https://salsa.debian.org/med-team/trnascan-se/-/compare/aec148d60d97f347982a95905b4c01ad0178e6f5...92374a979ef1fc164bc4be8843ae9d1dcccbc241

-- 
View it on GitLab: https://salsa.debian.org/med-team/trnascan-se/-/compare/aec148d60d97f347982a95905b4c01ad0178e6f5...92374a979ef1fc164bc4be8843ae9d1dcccbc241
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20201104/a62ce6f5/attachment-0001.html>


More information about the debian-med-commit mailing list