SequenceI genomicSequence = null;
EnsemblFeatures gffFetcher = new EnsemblFeatures(getDomain());
EnsemblFeatureType[] features = getFeaturesToFetch();
+
+ Platform.timeCheck("ESP.getsequencerec1", Platform.TIME_MARK);
+
+
AlignmentI geneFeatures = gffFetcher.getSequenceRecords(accId,
features);
if (geneFeatures != null && geneFeatures.getHeight() > 0)
{
genomicSequence = geneFeatures.getSequenceAt(0);
}
+
+ Platform.timeCheck("ESP.getsequencerec2", Platform.TIME_MARK);
+
if (genomicSequence != null)
{
/*
* transfer features to the query sequence
*/
SequenceI querySeq = alignment.findName(accId, true);
+
+ Platform.timeCheck("ESP.transferfeat", Platform.TIME_MARK);
+
if (transferFeatures(accId, genomicSequence, querySeq))
{
* fetch and map protein product, and add it as a cross-reference
* of the retrieved sequence
*/
+ Platform.timeCheck("ESP.addprotein", Platform.TIME_MARK);
addProteinProduct(querySeq);
}
}
System.err.println(
"Error transferring Ensembl features: " + e.getMessage());
}
+ Platform.timeCheck("ESP.addfeat done", Platform.TIME_MARK);
}
/**
DBRefEntry dbr = new DBRefEntry(getDbSource(),
getEnsemblDataVersion(), proteinSeq.getName(), map);
querySeq.getDatasetSequence().addDBRef(dbr);
- DBRefEntry[] uprots = DBRefUtils.selectRefs(ds.getDBRefs(),
+ List<DBRefEntry> uprots = DBRefUtils.selectRefs(ds.getDBRefs(),
new String[]
{ DBRefSource.UNIPROT });
- DBRefEntry[] upxrefs = DBRefUtils.selectRefs(querySeq.getDBRefs(),
+ List<DBRefEntry> upxrefs = DBRefUtils.selectRefs(querySeq.getDBRefs(),
new String[]
{ DBRefSource.UNIPROT });
if (uprots != null)
*/
protected void getCrossReferences(SequenceI seq)
{
+
+ Platform.timeCheck("ESP. getdataseq ", Platform.TIME_MARK);
+
+
while (seq.getDatasetSequence() != null)
{
seq = seq.getDatasetSequence();
}
+ Platform.timeCheck("ESP. getxref ", Platform.TIME_MARK);
+
EnsemblXref xrefFetcher = new EnsemblXref(getDomain(), getDbSource(),
getEnsemblDataVersion());
List<DBRefEntry> xrefs = xrefFetcher.getCrossReferences(seq.getName());
- for (DBRefEntry xref : xrefs)
+
+ for (int i = 0, n = xrefs.size(); i < n; i++)
{
- seq.addDBRef(xref);
+ Platform.timeCheck("ESP. getxref + " + (i) + "/" + n, Platform.TIME_MARK);
+ // BH 2019.01.25 this next method was taking 174 ms PER addition for a 266-reference example.
+ // DBRefUtils.ensurePrimaries(seq)
+ // was at the end of seq.addDBRef, so executed after ever addition!
+ // This method was moved to seq.getPrimaryDBRefs()
+ seq.addDBRef(xrefs.get(i));
}
+ System.out.println("primaries are " + seq.getPrimaryDBRefs().toString());
/*
* and add a reference to itself
*/
+
+ Platform.timeCheck("ESP. getxref self ", Platform.TIME_MARK);
+
DBRefEntry self = new DBRefEntry(getDbSource(), getEnsemblDataVersion(),
seq.getName());
+
+ Platform.timeCheck("ESP. getxref self add ", Platform.TIME_MARK);
+
seq.addDBRef(self);
+
+ Platform.timeCheck("ESP. seqprox done ", Platform.TIME_MARK);
+
}
/**
* for now, assumes only one sequence returned; refactor if needed
* in future to handle a JSONArray with more than one
*/
+
+ Platform.timeCheck("ENS seqproxy", Platform.TIME_MARK);
Map<String, Object> val = (Map<String, Object>) getJSON(null, ids, -1, MODE_MAP, null);
if (val == null)
return null;
System.err.println("Error processing JSON response: " + e.toString());
// ignore
}
+ Platform.timeCheck("ENS seqproxy2", Platform.TIME_MARK);
return result;
}