X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2FDBRefFetcher.java;h=581901a5450a2f9655ea2bf278ab694c988f27db;hb=f5a2fd32ad34d909ba7326ab40c1709cf00bdf32;hp=1fd9f1c1078b210f835dab27133f9745e558d8c6;hpb=cb37b13542829ad0406c5f0ff8349334f83c31ae;p=jalview.git diff --git a/src/jalview/ws/DBRefFetcher.java b/src/jalview/ws/DBRefFetcher.java index 1fd9f1c..581901a 100644 --- a/src/jalview/ws/DBRefFetcher.java +++ b/src/jalview/ws/DBRefFetcher.java @@ -74,6 +74,8 @@ public class DBRefFetcher implements Runnable SequenceFetcher sfetcher; + private SequenceI[] alseqs; + public DBRefFetcher() { } @@ -106,9 +108,11 @@ public class DBRefFetcher implements Runnable public DBRefFetcher(SequenceI[] seqs, AlignFrame af, String[] sources) { this.af = af; + alseqs = new SequenceI[seqs.length]; SequenceI[] ds = new SequenceI[seqs.length]; for (int i = 0; i < seqs.length; i++) { + alseqs[i] = seqs[i]; if (seqs[i].getDatasetSequence() != null) ds[i] = seqs[i].getDatasetSequence(); else @@ -496,27 +500,31 @@ public class DBRefFetcher implements Runnable DBRefEntry[] entryRefs = jalview.util.DBRefUtils.selectRefs(entry .getDBRef(), new String[] { dbSource }); + if (entryRefs==null) { + System.err.println("Dud dbSource string ? no entryrefs selected for "+dbSource+ " on "+entry.getName()); + continue; + } for (int j = 0; j < entryRefs.length; j++) - { - String accessionId = entryRefs[j].getAccessionId(); // .getAccession().elementAt(j).toString(); - // match up on accessionId - if (seqRefs.containsKey(accessionId.toUpperCase())) { - Vector seqs = (Vector) seqRefs.get(accessionId); - for (int jj = 0; jj < seqs.size(); jj++) + String accessionId = entryRefs[j].getAccessionId(); // .getAccession().elementAt(j).toString(); + // match up on accessionId + if (seqRefs.containsKey(accessionId.toUpperCase())) { - sequence = (SequenceI) seqs.elementAt(jj); - if (!sequenceMatches.contains(sequence)) + Vector seqs = (Vector) seqRefs.get(accessionId); + for (int jj = 0; jj < seqs.size(); jj++) { - sequenceMatches.addElement(sequence); + sequence = (SequenceI) seqs.elementAt(jj); + if (!sequenceMatches.contains(sequence)) + { + sequenceMatches.addElement(sequence); + } } } } - } - if (sequenceMatches.size() == 0) - { - // failed to match directly on accessionId==query so just compare all - // sequences to entry + if (sequenceMatches.size() == 0) + { + // failed to match directly on accessionId==query so just compare all + // sequences to entry Enumeration e = seqRefs.keys(); while (e.hasMoreElements()) { @@ -608,8 +616,9 @@ public class DBRefFetcher implements Runnable // absStart+sequence.getStart()+entrySeq.length()-1}, // new int[] { entry.getStart(), entry.getEnd() }, 1, 1); // relocate local features for updated start - if (updateRefFrame && sequence.getSequenceFeatures() != null) - { + if (updateRefFrame) { + if (sequence.getSequenceFeatures() != null) + { SequenceFeature[] sf = sequence.getSequenceFeatures(); int start = sequence.getStart(); int end = sequence.getEnd(); @@ -624,6 +633,7 @@ public class DBRefFetcher implements Runnable sf[sfi].setEnd(sf[sfi].getEnd() + startShift); } } + } } } @@ -638,6 +648,22 @@ public class DBRefFetcher implements Runnable // finally, update local sequence reference frame if we're allowed sequence.setStart(absStart); sequence.setEnd(absEnd); + // search for alignment sequences to update coordinate frame for + for (int alsq = 0; alsq