X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FDasSequenceFeatureFetcher.java;h=b4dd1f66ddb0472f9eed4f09d03da4ea77760de3;hb=4f24ef0848cf3c43ba0467f31fce1baa5c57aad5;hp=dc516174859bd2b7f1e249a8c8e3ba7f8a476323;hpb=062dc2bf3f9a188f2797c4133da4474f79704185;p=jalview.git diff --git a/src/jalview/io/DasSequenceFeatureFetcher.java b/src/jalview/io/DasSequenceFeatureFetcher.java index dc51617..b4dd1f6 100755 --- a/src/jalview/io/DasSequenceFeatureFetcher.java +++ b/src/jalview/io/DasSequenceFeatureFetcher.java @@ -40,7 +40,9 @@ import org.biojava.dasobert.das2.DasSourceConverter; import jalview.bin.Cache; +import org.biojava.dasobert.dasregistry.DasCoordinateSystem; +import javax.swing.*; /** * DOCUMENT ME! @@ -50,8 +52,8 @@ import jalview.bin.Cache; */ public class DasSequenceFeatureFetcher implements Runnable { - final AlignmentI dataset; - final AlignFrame af; + SequenceI [] sequences; + AlignFrame af; StringBuffer sbuffer = new StringBuffer(); Vector selectedSources; @@ -66,14 +68,77 @@ public class DasSequenceFeatureFetcher implements Runnable * @param align DOCUMENT ME! * @param ap DOCUMENT ME! */ - public DasSequenceFeatureFetcher(AlignmentI align, - AlignFrame af, + public DasSequenceFeatureFetcher(SequenceI [] sequences, + final AlignFrame af, Vector selectedSources) { this.selectedSources = selectedSources; - this.dataset = align.getDataset(); + this.sequences = sequences; this.af = af; + int uniprotCount = 0; + for (int i = 0; i < selectedSources.size(); i++) + { + DasSource source = (DasSource) selectedSources.elementAt(i); + DasCoordinateSystem[] coords = source.getCoordinateSystem(); + for (int c = 0; c < coords.length; c++) + { + System.out.println(coords[c].getName()); + if (coords[c].getName().indexOf("UniProt")>-1) + { + uniprotCount++; + break; + } + } + } + + int refCount = 0; + for(int i=0; i0) + { + + int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop, + "Do you want Jalview to find\n" + +"Uniprot Accession ids for given sequence names?", + "Find Uniprot Accession Ids", + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + + if(reply == JOptionPane.YES_OPTION) + { + new DBRefFetcher( + af.getViewport().getAlignment(), af).fetchDBRefs(true); + + } + } + + System.out.println("User selection is " + + + ( ( (float) uniprotCount / (float) selectedSources.size()) * 100) + + " % Uniprot, and "+refCount+" / " +sequences.length+" have uniprot accession"); + + Thread thread = new Thread(this); thread.start(); } @@ -145,10 +210,11 @@ public class DasSequenceFeatureFetcher implements Runnable * @param SourceUrl * @param id */ - protected void createFeatureFetcher(final Sequence seq, + protected void createFeatureFetcher(final SequenceI seq, final String sourceUrl, String id, - String nickname) { + String nickname) + { ////////////// /// fetch DAS features final Das1Source source = new Das1Source(); @@ -158,13 +224,27 @@ public class DasSequenceFeatureFetcher implements Runnable Cache.log.debug("new Das Feature Fetcher for " + id + " querying " + sourceUrl); + if (id != null && id.length() > 0) { setThreadsRunning(+1); + int start=seq.getStart(), end = seq.getEnd(); + + if(af.getViewport().getSelectionGroup()!=null) + { + SequenceI tmp = af.getViewport().getAlignment().findName(seq.getName()); + start = tmp.findPosition( + af.getViewport().getSelectionGroup().getStartRes() + ); + + end = tmp.findPosition( + af.getViewport().getSelectionGroup().getEndRes() + ); + } + FeatureThread fetcher = new FeatureThread(id - + ":" + seq.getStart() + "," +seq.getEnd() - , source); + + ":" + start + "," + end, source); fetcher.addFeatureListener(new FeatureListener() { @@ -262,11 +342,9 @@ public class DasSequenceFeatureFetcher implements Runnable try { int seqIndex = 0; - Vector sequences = dataset.getSequences(); - while (seqIndex < sequences.size()) + while (seqIndex < sequences.length) { - Sequence sequence = (Sequence) sequences.get(seqIndex); - Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), + Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequences[seqIndex].getDBRef(), new String[] { jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROT}); @@ -292,7 +370,7 @@ public class DasSequenceFeatureFetcher implements Runnable cs[l].getName()); - createFeatureFetcher(sequence, + createFeatureFetcher(sequences[seqIndex], dasSource.getUrl(), ( (DBRefEntry) uprefs.get(j)). getAccessionId(), @@ -305,19 +383,19 @@ public class DasSequenceFeatureFetcher implements Runnable { String id = null; // try and use the name as the sequence id - if (sequence.getName().indexOf("|") > -1) + if (sequences[seqIndex].getName().indexOf("|") > -1) { - id = sequence.getName().substring( - sequence.getName().lastIndexOf("|") + 1); + id = sequences[seqIndex].getName().substring( + sequences[seqIndex].getName().lastIndexOf("|") + 1); } else { - id = sequence.getName(); + id = sequences[seqIndex].getName(); } if (id != null) { // Should try to call a general feature fetcher that queries many sources with name to discover applicable ID references - createFeatureFetcher(sequence, + createFeatureFetcher(sequences[seqIndex], dasSource.getUrl(), id, dasSource.getNickname()); @@ -340,7 +418,7 @@ public class DasSequenceFeatureFetcher implements Runnable DasSourceReaderImpl reader = new DasSourceReaderImpl(); String registryURL =jalview.bin.Cache.getDefault("DAS_REGISTRY_URL", - "http://www.spice-3d.org/dasregistry/das1/sources" + "http://das.sanger.ac.uk/registry/das1/sources/" ); try