From 3b9a7d3cb0b635a3f1271dff7e429dd9ca7c4762 Mon Sep 17 00:00:00 2001
From: Kieron Taylor <ktaylor@ebi.ac.uk>
Date: Wed, 7 Nov 2012 15:05:50 +0000
Subject: [PATCH] Added support for situations where original canonical
 transcripts have disappeared from the data.

---
 misc-scripts/canonical_transcripts/reason_changes.pl     | 6 ++++--
 .../select_canonical_transcripts.pl                      | 9 ++++++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/misc-scripts/canonical_transcripts/reason_changes.pl b/misc-scripts/canonical_transcripts/reason_changes.pl
index 3bd96cf5b7..764d88da9e 100755
--- a/misc-scripts/canonical_transcripts/reason_changes.pl
+++ b/misc-scripts/canonical_transcripts/reason_changes.pl
@@ -87,8 +87,10 @@ sub compare {
       $blurt !~ /nmd/i          #User suppressing this test     
       ) {
       $reason_key = 'havana_merge_nmd_over_e_coding';
-    }
-    else {
+    } elsif (! $old->[1] ) {
+        # The old canonical transcript was not found.
+        $reason_key = 'new';
+    } else {
       $reason_key = 'other';
     }
   }
diff --git a/misc-scripts/canonical_transcripts/select_canonical_transcripts.pl b/misc-scripts/canonical_transcripts/select_canonical_transcripts.pl
index 8a7448e278..fe072dc28b 100644
--- a/misc-scripts/canonical_transcripts/select_canonical_transcripts.pl
+++ b/misc-scripts/canonical_transcripts/select_canonical_transcripts.pl
@@ -144,7 +144,13 @@ foreach my $slice (@$slices) {
         
         my $old_canonical = $gene->canonical_transcript;
         
-        if ($new_canonical->dbID != $old_canonical->dbID) {
+        if (! defined($old_canonical)) {
+            # Original canonical transcript is now absent, or never set.
+            if ($log_fh) {
+                print $log_fh "Old=[,,,,,,]\n";
+                printf $log_fh "New=[%s,%s,%s,%s,%s,%s,'%s']\n", @{ $transcript_selector->encode_transcript($new_canonical) };
+            }
+        } elsif ($new_canonical->dbID != $old_canonical->dbID) {
             no warnings 'uninitialized';
             printf "%s (%s) changed transcript from %s (%s) to %s (%s)\n",
                 $gene->stable_id,$gene->dbID,$old_canonical->stable_id,$old_canonical->dbID,
@@ -166,6 +172,7 @@ foreach my $slice (@$slices) {
                 printf $log_fh "New=[%s,%s,%s,%s,%s,%s,'%s']\n", @{ $transcript_selector->encode_transcript($new_canonical) };
             }
         }
+        
     }
 }
 
-- 
GitLab