+++ /dev/null
-package jalview.datamodel.xdb.embl;\r
-\r
-import jalview.datamodel.DBRefEntry;\r
-import jalview.datamodel.Sequence;\r
-import jalview.datamodel.SequenceFeature;\r
-import jalview.datamodel.SequenceI;\r
-\r
-import java.util.Iterator;\r
-import java.util.Vector;\r
-\r
-public class EmblEntry {\r
- String accession;\r
- String version;\r
- String taxDivision;\r
- String desc;\r
- String rCreated;\r
- String rLastUpdated;\r
- String lastUpdated;\r
- Vector keywords;\r
- Vector refs;\r
- Vector dbRefs;\r
- Vector features;\r
- EmblSequence sequence;\r
- /**\r
- * @return the accession\r
- */\r
- public String getAccession() {\r
- return accession;\r
- }\r
- /**\r
- * @param accession the accession to set\r
- */\r
- public void setAccession(String accession) {\r
- this.accession = accession;\r
- }\r
- /**\r
- * @return the dbRefs\r
- */\r
- public Vector getDbRefs() {\r
- return dbRefs;\r
- }\r
- /**\r
- * @param dbRefs the dbRefs to set\r
- */\r
- public void setDbRefs(Vector dbRefs) {\r
- this.dbRefs = dbRefs;\r
- }\r
- /**\r
- * @return the desc\r
- */\r
- public String getDesc() {\r
- return desc;\r
- }\r
- /**\r
- * @param desc the desc to set\r
- */\r
- public void setDesc(String desc) {\r
- this.desc = desc;\r
- }\r
- /**\r
- * @return the features\r
- */\r
- public Vector getFeatures() {\r
- return features;\r
- }\r
- /**\r
- * @param features the features to set\r
- */\r
- public void setFeatures(Vector features) {\r
- this.features = features;\r
- }\r
- /**\r
- * @return the keywords\r
- */\r
- public Vector getKeywords() {\r
- return keywords;\r
- }\r
- /**\r
- * @param keywords the keywords to set\r
- */\r
- public void setKeywords(Vector keywords) {\r
- this.keywords = keywords;\r
- }\r
- /**\r
- * @return the lastUpdated\r
- */\r
- public String getLastUpdated() {\r
- return lastUpdated;\r
- }\r
- /**\r
- * @param lastUpdated the lastUpdated to set\r
- */\r
- public void setLastUpdated(String lastUpdated) {\r
- this.lastUpdated = lastUpdated;\r
- }\r
- /**\r
- * @return the refs\r
- */\r
- public Vector getRefs() {\r
- return refs;\r
- }\r
- /**\r
- * @param refs the refs to set\r
- */\r
- public void setRefs(Vector refs) {\r
- this.refs = refs;\r
- }\r
- /**\r
- * @return the releaseCreated\r
- */\r
- public String getRCreated() {\r
- return rCreated;\r
- }\r
- /**\r
- * @param releaseCreated the releaseCreated to set\r
- */\r
- public void setRcreated(String releaseCreated) {\r
- this.rCreated = releaseCreated;\r
- }\r
- /**\r
- * @return the releaseLastUpdated\r
- */\r
- public String getRLastUpdated() {\r
- return rLastUpdated;\r
- }\r
- /**\r
- * @param releaseLastUpdated the releaseLastUpdated to set\r
- */\r
- public void setRLastUpdated(String releaseLastUpdated) {\r
- this.rLastUpdated = releaseLastUpdated;\r
- }\r
- /**\r
- * @return the sequence\r
- */\r
- public EmblSequence getSequence() {\r
- return sequence;\r
- }\r
- /**\r
- * @param sequence the sequence to set\r
- */\r
- public void setSequence(EmblSequence sequence) {\r
- this.sequence = sequence;\r
- }\r
- /**\r
- * @return the taxDivision\r
- */\r
- public String getTaxDivision() {\r
- return taxDivision;\r
- }\r
- /**\r
- * @param taxDivision the taxDivision to set\r
- */\r
- public void setTaxDivision(String taxDivision) {\r
- this.taxDivision = taxDivision;\r
- }\r
- /**\r
- * @return the version\r
- */\r
- public String getVersion() {\r
- return version;\r
- }\r
- /**\r
- * @param version the version to set\r
- */\r
- public void setVersion(String version) {\r
- this.version = version;\r
- }\r
-\r
- /**\r
- * Recover annotated sequences from EMBL file\r
- * @param noNa don't return nucleic acid sequences \r
- * @param sourceDb TODO\r
- * @param noProtein don't return any translated protein sequences marked in features\r
- * @return dataset sequences with DBRefs and features - DNA always comes first\r
- */\r
- public jalview.datamodel.SequenceI[] getSequences(boolean noNa, boolean noPeptide, String sourceDb) {\r
- Vector seqs=new Vector();\r
- Sequence dna=null;\r
- if (!noNa) {\r
- dna = new Sequence(sourceDb+"|"+accession, sequence.getSequence());\r
- dna.setDescription(desc);\r
- dna.addDBRef(new DBRefEntry(sourceDb, version, accession));\r
- // TODO: add mapping for parentAccession attribute\r
- // TODO: transform EMBL Database refs to canonical form\r
- if (dbRefs!=null)\r
- for (Iterator i=dbRefs.iterator(); i.hasNext(); dna.addDBRef((DBRefEntry)i.next()));\r
- }\r
- for (Iterator i=features.iterator(); i.hasNext(); ) {\r
- EmblFeature feature = (EmblFeature) i.next();\r
- if (!noNa) {\r
- if (feature.dbRefs!=null && feature.dbRefs.size()>0) {\r
- for (Iterator dbr=feature.dbRefs.iterator(); dbr.hasNext(); dna.addDBRef((DBRefEntry)dbr.next()) )\r
- ;\r
- }\r
- }\r
- if (feature.getName().equalsIgnoreCase("CDS")) {\r
- // extract coding region(s)\r
- jalview.datamodel.Mapping map = null;\r
- int[] exon=null;\r
- if (feature.locations!=null && feature.locations.size()>0) {\r
- for (Iterator locs=feature.locations.iterator();\r
- locs.hasNext(); ) {\r
- EmblFeatureLocations loc = (EmblFeatureLocations) locs.next();\r
- int[] se = loc.getElementRanges();\r
- if (exon==null) {\r
- exon=se;\r
- } else {\r
- int[] t=new int[exon.length+se.length];\r
- System.arraycopy(exon, 0, t, 0, exon.length);\r
- System.arraycopy(se, 0, t, exon.length,se.length);\r
- exon=t;\r
- }\r
- }\r
- }\r
- String prseq=null;\r
- String prname=null;\r
- String prid=null;\r
- int prstart=1;\r
- // get qualifiers\r
- if (feature.getQualifiers()!=null && feature.getQualifiers().size()>0) {\r
- for (Iterator quals=feature.getQualifiers().iterator(); quals.hasNext(); ) {\r
- Qualifier q = (Qualifier) quals.next();\r
- if (q.getName().equals("translation")) \r
- {\r
- prseq=q.getValue();\r
- } \r
- else\r
- if (q.getName().equals("protein_id")) \r
- {\r
- prid=q.getValue();\r
- }\r
- else\r
- if (q.getName().equals("codon_start"))\r
- {\r
- prstart = Integer.parseInt(q.getValue());\r
- }\r
- else\r
- if (q.getName().equals("product")) {\r
- prname = q.getValue();\r
- }\r
- }\r
- }\r
- Sequence product=null;\r
- if (prseq!=null && prname!=null && prid!=null) {\r
- // extract proteins.\r
- if (!noPeptide) {\r
- product = new Sequence(sourceDb+"|"+"EMBLCDS|"+prid+"|"+prname, prseq, prstart, prstart+prseq.length()-1);\r
- product.setDescription("Protein Product from "+sourceDb);\r
- seqs.add(product);\r
- }\r
- // we have everything - create the mapping and perhaps the protein sequence\r
- map = new jalview.datamodel.Mapping(product, exon, new int[] { prstart, prstart+prseq.length()-1}, 3, 1);\r
- // add cds feature to dna seq - this may include the stop codon\r
- for (int xint=0;xint<exon.length; xint+=2) {\r
- SequenceFeature sf = new SequenceFeature();\r
- sf.setBegin(exon[xint]);\r
- sf.setEnd(exon[xint+1]);\r
- sf.setType(feature.getName());\r
- sf.setFeatureGroup(jalview.datamodel.DBRefSource.EMBL);\r
- sf.setDescription("Exon "+(1+xint)+" for protein '"+prname+"' EMBLCDS:"+prid);\r
- dna.addSequenceFeature(sf);\r
- }\r
- }\r
- // add dbRefs to sequence\r
- if (feature.dbRefs!=null && feature.dbRefs.size()>0) \r
- {\r
- for (Iterator dbr=feature.dbRefs.iterator(); dbr.hasNext(); ) \r
- {\r
- DBRefEntry ref = (DBRefEntry)dbr.next();\r
- ref.setSource(jalview.util.DBRefUtils.getCanonicalName(ref.getSource()));\r
- if (ref.getSource().equals(jalview.datamodel.DBRefSource.UNIPROT)) \r
- {\r
- ref.setMap(map);\r
- }\r
- if (product!=null) {\r
- DBRefEntry pref = new DBRefEntry(ref.getSource(), ref.getVersion(), ref.getAccessionId());\r
- pref.setMap(null); // reference is direct\r
- }\r
- dna.addDBRef(ref);\r
- }\r
- }\r
- \r
- } else {\r
- // General feature type.\r
- if (!noNa) {\r
- if (feature.dbRefs!=null && feature.dbRefs.size()>0) {\r
- for (Iterator dbr=feature.dbRefs.iterator(); dbr.hasNext(); dna.addDBRef((DBRefEntry)dbr.next()) )\r
- ;\r
- }\r
- }\r
- }\r
-\r
- }\r
- if (!noNa) {\r
- seqs.add(dna);\r
- }\r
- SequenceI[] sqs = new SequenceI[seqs.size()];\r
- for (int i=0,j=seqs.size();i<j; i++) {\r
- sqs[i] = (SequenceI) seqs.elementAt(i);\r
- seqs.set(i, null);\r
- }\r
- return sqs;\r
- }\r
-}\r