X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblSeqProxy.java;h=c86469f7b5ab393157107bd323bf0d8000bae725;hb=1c6ddae580d69eb0fa5b4291ba84fd6ba9b83621;hp=b4c708d8826f2a96e2ec5781a562405b508227d3;hpb=a57f7818a994eaabd11db26e83bc23832cc7b359;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblSeqProxy.java b/src/jalview/ext/ensembl/EnsemblSeqProxy.java index b4c708d..c86469f 100644 --- a/src/jalview/ext/ensembl/EnsemblSeqProxy.java +++ b/src/jalview/ext/ensembl/EnsemblSeqProxy.java @@ -14,6 +14,7 @@ import jalview.io.FastaFile; import jalview.io.FileParse; import jalview.io.gff.SequenceOntologyFactory; import jalview.io.gff.SequenceOntologyI; +import jalview.util.Comparison; import jalview.util.DBRefUtils; import jalview.util.MapList; @@ -36,12 +37,6 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient { private static final String ALLELES = "alleles"; - private static final List CROSS_REFERENCES = Arrays - .asList(new String[] { "CCDS", "Uniprot/SWISSPROT", - "Uniprot/SPTREMBL" }); - - protected static final String CONSEQUENCE_TYPE = "consequence_type"; - protected static final String PARENT = "Parent"; protected static final String ID = "ID"; @@ -61,7 +56,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient GENOMIC("genomic"), /** - * type=cdna to fetch dna including UTRs + * type=cdna to fetch coding dna including UTRs */ CDNA("cdna"), @@ -283,9 +278,10 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient // clunky: ensure Uniprot xref if we have one is on mapped sequence SequenceI ds = proteinSeq.getDatasetSequence(); ds.setSourceDBRef(proteinSeq.getSourceDBRef()); + Mapping map = new Mapping(ds, mapList); - DBRefEntry dbr = new DBRefEntry(getDbSource(), getDbVersion(), - accId, map); + DBRefEntry dbr = new DBRefEntry(getDbSource(), + getEnsemblDataVersion(), proteinSeq.getName(), map); querySeq.getDatasetSequence().addDBRef(dbr); /* @@ -315,8 +311,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient } EnsemblXref xrefFetcher = new EnsemblXref(getDomain()); - List xrefs = xrefFetcher.getCrossReferences(seq.getName(), - getCrossReferenceDatabases()); + List xrefs = xrefFetcher.getCrossReferences(seq.getName()); for (DBRefEntry xref : xrefs) { seq.addDBRef(xref); @@ -328,18 +323,13 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient seq.setSourceDBRef(xref); } } - } - /** - * Returns a list of database names to be used when fetching cross-references. - * Specifically, the names are used to filter data returned by the Ensembl - * xrefs REST service on the value in field 'dbname'. - * - * @return - */ - protected List getCrossReferenceDatabases() - { - return CROSS_REFERENCES; + /* + * and add a reference to itself + */ + DBRefEntry self = new DBRefEntry(getDbSource(), + getEnsemblDataVersion(), seq.getName()); + seq.addDBRef(self); } /** @@ -397,7 +387,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient if (ids.contains(name) || ids.contains(name.replace("ENSP", "ENST"))) { - DBRefUtils.parseToDbRef(sq, DBRefSource.ENSEMBL, "0", name); + DBRefUtils.parseToDbRef(sq, getDbSource(), + getEnsemblDataVersion(), name); } } if (alignment == null) @@ -691,16 +682,21 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient { complement.append(","); } - if ("HGMD_MUTATION".equalsIgnoreCase(allele)) + + /* + * some 'alleles' are actually descriptive terms + * e.g. HGMD_MUTATION, PhenCode_variation + * - we don't want to 'reverse complement' these + */ + if (!Comparison.isNucleotideSequence(allele, true)) { complement.append(allele); } else { - char[] alleles = allele.toCharArray(); - for (int i = alleles.length - 1; i >= 0; i--) + for (int i = allele.length() - 1; i >= 0; i--) { - complement.append(Dna.getComplement(alleles[i])); + complement.append(Dna.getComplement(allele.charAt(i))); } } }