*/
package jalview.ws.dbsources;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
+import java.util.Vector;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import com.stevesoft.pat.Regex;
import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.xml.binding.uniprot.PositionType;
import jalview.xml.binding.uniprot.PropertyType;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import com.stevesoft.pat.Regex;
-
/**
* This class queries the Uniprot database for sequence data, unmarshals the
* returned XML, and converts it to Jalview Sequence records (including attached
SequenceI sequence = new Sequence(id, seqString);
sequence.setDescription(getUniprotEntryDescription(entry));
-
+ final String uniprotRecordVersion = "" + entry.getVersion();
/*
* add a 'self' DBRefEntry for each accession
*/
boolean canonical = true;
for (String accessionId : entry.getAccession())
{
- DBRefEntry dbRef = new DBRefEntry(DBRefSource.UNIPROT, dbVersion,
- accessionId, null, canonical);
+ DBRefEntry dbRef = new DBRefEntry(DBRefSource.UNIPROT,
+ uniprotRecordVersion, accessionId, null, canonical);
canonical = false;
dbRefs.add(dbRef);
}
// remove version
String[] vrs = cdsId.split("\\.");
String version = vrs.length > 1 ? vrs[1]
- : DBRefSource.UNIPROT + ":" + dbVersion;
+ : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
dbr = new DBRefEntry(DBRefSource.EMBLCDS, version, vrs[0]);
+ // TODO: process VARIANT features to allow EMBLCDS record's product to
+ // match Uniprot
+ dbr.setCanonical(true);
dbRefs.add(dbr);
}
}
- if ("Ensembl".equals(type))
+ if (type != null
+ && type.toLowerCase(Locale.ROOT).startsWith("ensembl"))
{
+ // remove version
+ String[] vrs = dbref.getId().split("\\.");
+ String version = vrs.length > 1 ? vrs[1]
+ : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
+ dbr.setAccessionId(vrs[0]);
+ dbr.setVersion(version);
/*
* e.g. Uniprot accession Q9BXM7 has
* <dbReference type="Ensembl" id="ENST00000321556">
"protein sequence ID");
if (cdsId != null && cdsId.trim().length() > 0)
{
+ // remove version
+ String[] cdsVrs = cdsId.split("\\.");
+ String cdsVersion = cdsVrs.length > 1 ? cdsVrs[1]
+ : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
dbr = new DBRefEntry(DBRefSource.ENSEMBL,
- DBRefSource.UNIPROT + ":" + dbVersion, cdsId.trim());
+ DBRefSource.UNIPROT + ":" + cdsVersion, cdsVrs[0]);
dbRefs.add(dbr);
}
}
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.util.List;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.SequenceI;
import jalview.xml.binding.uniprot.LocationType;
import jalview.xml.binding.uniprot.PositionType;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.math.BigInteger;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
public class UniprotTest
{
*/
assertTrue(res.get(0).isCanonical());
assertFalse(res.get(1).isCanonical());
+
+ // check version is preserved for EMBLCDS
+ res = DBRefUtils.searchRefs(seq.getDBRefs(), "AAK85932");
+ assertEquals(1, res.size());
+ // Ideally we would expect AAK85932.1 -> AAK85932
+ // assertTrue("1".equals(res.get(0).getVersion()));
+ // but it also passes through DBrefUtils.ensurePrimaries which adds
+ // (promoted) to the version string
+ // FIXME: Jim needs to specify what (promoted) means !! - or perhaps we just
+ // ignore it !
+ assertEquals("1 (promoted)", (res.get(0).getVersion()));
}
/**