From 105c710d4fb92c12b7fdb9acd929500127b939b9 Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Thu, 6 Jul 2006 15:08:58 +0000
Subject: [PATCH] fix for multiple transcripts
git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@4524 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
uk/ac/sanger/artemis/io/GFFDocumentEntry.java | 50 +++++++++++++++----
1 file changed, 40 insertions(+), 10 deletions(-)
diff --git a/uk/ac/sanger/artemis/io/GFFDocumentEntry.java b/uk/ac/sanger/artemis/io/GFFDocumentEntry.java
index 6ef468b6a..44ab7e255 100644
--- a/uk/ac/sanger/artemis/io/GFFDocumentEntry.java
+++ b/uk/ac/sanger/artemis/io/GFFDocumentEntry.java
@@ -20,7 +20,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/GFFDocumentEntry.java,v 1.27 2006-07-04 15:59:38 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/GFFDocumentEntry.java,v 1.28 2006-07-06 15:08:58 tjc Exp $
*/
package uk.ac.sanger.artemis.io;
@@ -30,6 +30,7 @@ import uk.ac.sanger.artemis.util.*;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Enumeration;
+import java.util.Set;
import java.util.Vector;
import java.sql.Timestamp;
@@ -37,7 +38,7 @@ import java.sql.Timestamp;
* A DocumentEntry that can read an GFF entry from a Document.
*
* @author Kim Rutherford
- * @version $Id: GFFDocumentEntry.java,v 1.27 2006-07-04 15:59:38 tjc Exp $
+ * @version $Id: GFFDocumentEntry.java,v 1.28 2006-07-06 15:08:58 tjc Exp $
**/
public class GFFDocumentEntry extends SimpleDocumentEntry
@@ -199,9 +200,8 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
Qualifier parent_qualifier = this_feature.getQualifierByName("Parent");
Qualifier derives_qualifier = this_feature.getQualifierByName("Derives_from");
if(parent_qualifier == null && derives_qualifier == null)
- continue;
-
-
+ continue;
+
// compare this features parent_id's to transcript id's in the
// chado gene hash to decide if it is part of it
final StringVector parent_id;
@@ -215,9 +215,11 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
for(int j=0; j<parent_id.size(); j++)
{
String parent = (String)parent_id.get(j);
+
if(transcripts_lookup.containsKey(parent))
{
ChadoCanonicalGene gene = (ChadoCanonicalGene)transcripts_lookup.get(parent);
+
if(parent_qualifier == null)
gene.addProtein(parent, this_feature);
else
@@ -345,14 +347,17 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
{
Vector transcripts = (Vector)gene.getTranscripts();
- final RangeVector new_range_vector = new RangeVector();
- QualifierVector qualifier_vector = new QualifierVector();
+ RangeVector new_range_vector;
+ QualifierVector qualifier_vector;
Hashtable id_range_store = new Hashtable();
Timestamp lasttimemodified = null;
-
+ Hashtable new_exon_set = new Hashtable();
+
for(int i=0; i<transcripts.size(); i++)
{
+ new_range_vector = new RangeVector();
+ qualifier_vector = new QualifierVector();
Feature transcript = (Feature)transcripts.get(i);
String transcript_id = null;
try
@@ -364,10 +369,11 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
e1.printStackTrace();
}
Vector v_exons = (Vector)gene.getExonsOfTranscript(transcript_id);
-
+
if(v_exons == null)
continue;
+
for(int j=0; j<v_exons.size(); j++)
{
final GFFStreamFeature this_feature =
@@ -447,7 +453,9 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
new_feature.setQualifier(old_codon_start_qualifier);
}
forcedAdd(new_feature);
- gene.addExon(transcript_id, new_feature, true );
+ //gene.addExon(transcript_id, new_feature, true );
+ new_exon_set.put(transcript_id, new_feature);
+
}
catch(ReadOnlyException e)
{
@@ -462,6 +470,28 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
throw new Error("internal error - unexpected exception: " + e);
}
}
+
+
+ // now merge the exons in the ChadoCanonicalGene feature
+ Enumeration enum_exon_set = new_exon_set.keys();
+ int num = 0;
+ while(enum_exon_set.hasMoreElements())
+ {
+ String transcript_id = (String)enum_exon_set.nextElement();
+ try
+ {
+ if(num == 0)
+ gene.addExon(transcript_id, new_exon_set.get(transcript_id), true );
+ else
+ gene.addExon(transcript_id, new_exon_set.get(transcript_id));
+ num++;
+ }
+ catch(InvalidRelationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
/**
--
GitLab