X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblSeqProxy.java;fp=src%2Fjalview%2Fext%2Fensembl%2FEnsemblSeqProxy.java;h=744aa495b89837203b9dd9c892c9495adda0e26a;hb=3cccac4697c371b1964236e17b532fd3d180e1c4;hp=0bfeda1121211a99e65976ef798a8853065f2182;hpb=949fed115506ff00c221669e096546f9c39a6ace;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblSeqProxy.java b/src/jalview/ext/ensembl/EnsemblSeqProxy.java index 0bfeda1..744aa49 100644 --- a/src/jalview/ext/ensembl/EnsemblSeqProxy.java +++ b/src/jalview/ext/ensembl/EnsemblSeqProxy.java @@ -11,7 +11,8 @@ import jalview.datamodel.SequenceI; import jalview.exceptions.JalviewException; import jalview.io.FastaFile; import jalview.io.FileParse; -import jalview.io.gff.SequenceOntology; +import jalview.io.gff.SequenceOntologyFactory; +import jalview.io.gff.SequenceOntologyI; import jalview.schemes.ResidueProperties; import jalview.util.DBRefUtils; import jalview.util.MapList; @@ -127,7 +128,6 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient @Override public AlignmentI getSequenceRecords(String query) throws Exception { - long now = System.currentTimeMillis(); // TODO use a String... query vararg instead? // danger: accession separator used as a regex here, a string elsewhere @@ -156,14 +156,15 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient + " chunks. Unexpected problem (" + r.getLocalizedMessage() + ")"; System.err.println(msg); - if (alignment != null) - { - break; // return what we got - } - else - { - throw new JalviewException(msg, r); - } + break; + // if (alignment != null) + // { + // break; // return what we got + // } + // else + // { + // throw new JalviewException(msg, r); + // } } } @@ -181,8 +182,6 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient getCrossReferences(seq); } - System.out.println(getClass().getName() + " took " - + (System.currentTimeMillis() - now) + "ms to fetch"); return alignment; } @@ -368,11 +367,12 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient } /** - * Adds CDS ranges to the ranges list, and returns the total length mapped. + * Adds CDS ranges to the ranges list, and returns the total length mapped + * from. * - * No need to worry about reverse strand dna here since the retrieved sequence - * is as transcribed (reverse complement for reverse strand), i.e in the same - * sense as the peptide. + * No need to worry about reverse strand dna, here since the retrieved + * sequence is as transcribed (reverse complement for reverse strand), i.e in + * the same sense as the peptide. * * @param dnaSeq * @param ranges @@ -391,7 +391,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient /* * process a CDS feature (or a sub-type of CDS) */ - if (SequenceOntology.getInstance().isA(sf.getType(), SequenceOntology.CDS)) + if (SequenceOntologyFactory.getInstance().isA(sf.getType(), + SequenceOntologyI.CDS)) { int phase = 0; try { @@ -579,7 +580,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient * the start position of the sequence we are mapping to * @return */ - protected MapList getGenomicRanges(SequenceI sourceSequence, + protected MapList getGenomicRangesFromFeatures(SequenceI sourceSequence, String accId, int start) { SequenceFeature[] sfs = sourceSequence.getSequenceFeatures(); @@ -605,11 +606,12 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient */ if (identifiesSequence(sf, accId)) { - int strand = sf.getStrand(); - - if (directionSet && strand != direction) - { - // abort - mix of forward and backward + int strand = sf.getStrand(); + strand = strand == 0 ? 1 : strand; // treat unknown as forward + + if (directionSet && strand != direction) + { + // abort - mix of forward and backward System.err.println("Error: forward and backward strand for " + accId); return null; @@ -654,8 +656,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient */ Collections.sort(regions, new RangeSorter(direction == 1)); - List to = new ArrayList(); - to.add(new int[] { start, start + mappedLength - 1 }); + List to = Arrays.asList(new int[] { start, + start + mappedLength - 1 }); return new MapList(regions, to, 1, 1); } @@ -710,7 +712,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient /* * for sequence_variant, make an additional feature with consequence */ - if (SequenceOntology.getInstance().isSequenceVariant(sf.getType())) + if (SequenceOntologyFactory.getInstance().isA(sf.getType(), + SequenceOntologyI.SEQUENCE_VARIANT)) { String consequence = (String) sf.getValue(CONSEQUENCE_TYPE); if (consequence != null) @@ -741,7 +744,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient } SequenceFeature[] sfs = sourceSequence.getSequenceFeatures(); - MapList mapping = getGenomicRanges(sourceSequence, accessionId, + MapList mapping = getGenomicRangesFromFeatures(sourceSequence, accessionId, targetSequence.getStart()); if (mapping == null) { @@ -850,7 +853,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient SequenceFeature[] sfs = sequence.getSequenceFeatures(); if (sfs != null) { - SequenceOntology so = SequenceOntology.getInstance(); + SequenceOntologyI so = SequenceOntologyFactory.getInstance(); for (SequenceFeature sf :sfs) { if (so.isA(sf.getType(), type)) { @@ -888,7 +891,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient } AlignmentUtils.transferFeatures(dnaSeq, peptide, dnaToProtein, - SequenceOntology.EXON); + SequenceOntologyI.EXON); LinkedHashMap variants = buildDnaVariantsMap( dnaSeq, dnaToProtein); @@ -909,7 +912,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient String desc = StringUtils.listToDelimitedString(peptideVariants, ", "); SequenceFeature sf = new SequenceFeature( - SequenceOntology.SEQUENCE_VARIANT, desc, peptidePos, + SequenceOntologyI.SEQUENCE_VARIANT, desc, peptidePos, peptidePos, 0f, null); peptide.addSequenceFeature(sf); count++; @@ -934,7 +937,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient * LinkedHashMap ensures we add the peptide features in sequence order */ LinkedHashMap variants = new LinkedHashMap(); - SequenceOntology so = SequenceOntology.getInstance(); + SequenceOntologyI so = SequenceOntologyFactory.getInstance(); SequenceFeature[] dnaFeatures = dnaSeq.getSequenceFeatures(); if (dnaFeatures == null) @@ -957,7 +960,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient // not handling multi-locus variant features continue; } - if (so.isSequenceVariant(sf.getType())) + if (so.isA(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT)) { int[] mapsTo = dnaToProtein.locateInTo(dnaCol, dnaCol); if (mapsTo == null) @@ -1096,6 +1099,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient public static boolean isTranscript(String featureType) { return NMD_VARIANT.equals(featureType) - || SequenceOntology.getInstance().isA(featureType, SequenceOntology.TRANSCRIPT); + || SequenceOntologyFactory.getInstance().isA(featureType, + SequenceOntologyI.TRANSCRIPT); } }