X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FDBRefFetcher.java;h=76931429f326be2c619a4492e83df234f090f836;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=a156b2c5768444237459dc3b30332641742024b1;hpb=efc6fa73d825eaec415caa9689bb435ca761d448;p=jalview.git diff --git a/src/jalview/ws/DBRefFetcher.java b/src/jalview/ws/DBRefFetcher.java index a156b2c..7693142 100644 --- a/src/jalview/ws/DBRefFetcher.java +++ b/src/jalview/ws/DBRefFetcher.java @@ -1,19 +1,21 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.ws; @@ -79,9 +81,10 @@ public class DBRefFetcher implements Runnable private SequenceI[] alseqs; /** - * when true - retrieved sequences will be trimmed to cover longest derived alignment sequence + * when true - retrieved sequences will be trimmed to cover longest derived + * alignment sequence */ - private boolean trimDsSeqs=true; + private boolean trimDsSeqs = true; public DBRefFetcher() { @@ -129,7 +132,8 @@ public class DBRefFetcher implements Runnable this.dataset = ds; // TODO Jalview 2.5 lots of this code should be in the gui package! sfetcher = jalview.gui.SequenceFetcher.getSequenceFetcherSingleton(af); - // set default behaviour for transferring excess sequence data to the dataset + // set default behaviour for transferring excess sequence data to the + // dataset trimDsSeqs = Cache.getDefault("TRIM_FETCHED_DATASET_SEQS", true); if (sources == null) { @@ -279,11 +283,14 @@ public class DBRefFetcher implements Runnable { if (dbSources == null) { - throw new Error("Implementation error. Must initialise dbSources"); + throw new Error( + MessageManager + .getString("error.implementation_error_must_init_dbsources")); } running = true; long startTime = System.currentTimeMillis(); - af.setProgressBar("Fetching db refs", startTime); + af.setProgressBar(MessageManager.getString("status.fetching_db_refs"), + startTime); try { if (Cache.getDefault("DBREFFETCH_USEPICR", false)) @@ -379,7 +386,7 @@ public class DBRefFetcher implements Runnable if (retrieved != null) { transferReferences(sdataset, dbsource.getDbSource(), - retrieved,trimDsSeqs); + retrieved, trimDsSeqs); } } else @@ -389,8 +396,8 @@ public class DBRefFetcher implements Runnable { SequenceI sequence = dataset[seqIndex]; DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs( - sequence.getDBRef(), new String[] - { dbsource.getDbSource() }); // jalview.datamodel.DBRefSource.UNIPROT + sequence.getDBRef(), + new String[] { dbsource.getDbSource() }); // jalview.datamodel.DBRefSource.UNIPROT // }); // check for existing dbrefs to use if (uprefs != null && uprefs.length > 0) @@ -458,15 +465,20 @@ public class DBRefFetcher implements Runnable } // all databases have been queries. if (sbuffer.length() > 0) { - output.setText(MessageManager.getString("label.your_sequences_have_been_verified") + output.setText(MessageManager + .getString("label.your_sequences_have_been_verified") + sbuffer.toString()); - Desktop.addInternalFrame(output, MessageManager.getString("label.sequence_names_updated"), 600, 300); + Desktop.addInternalFrame(output, + MessageManager.getString("label.sequence_names_updated"), + 600, 300); // The above is the dataset, we must now find out the index // of the viewed sequence } - af.setProgressBar(MessageManager.getString("label.dbref_search_completed"), startTime); + af.setProgressBar( + MessageManager.getString("label.dbref_search_completed"), + startTime); // promptBeforeBlast(); running = false; @@ -476,14 +488,15 @@ public class DBRefFetcher implements Runnable /** * Verify local sequences in seqRefs against the retrieved sequence database * records. - * @param trimDatasetSeqs + * + * @param trimDatasetSeqs * */ void transferReferences(Vector sdataset, String dbSource, AlignmentI retrievedAl, boolean trimDatasetSeqs) // File // file) { - System.out.println("trimming ? "+trimDatasetSeqs); + System.out.println("trimming ? " + trimDatasetSeqs); if (retrievedAl == null || retrievedAl.getHeight() == 0) { return; @@ -507,8 +520,7 @@ public class DBRefFetcher implements Runnable Vector sequenceMatches = new Vector(); // look for corresponding accession ids DBRefEntry[] entryRefs = jalview.util.DBRefUtils.selectRefs( - entry.getDBRef(), new String[] - { dbSource }); + entry.getDBRef(), new String[] { dbSource }); if (entryRefs == null) { System.err @@ -577,6 +589,7 @@ public class DBRefFetcher implements Runnable // mappings are made (but content matches retrieved set) boolean updateRefFrame = sequence.getDBRef() == null || sequence.getDBRef().length == 0; + // TODO: // verify sequence against the entry sequence String nonGapped = AlignSeq.extractGaps("-. ", @@ -605,11 +618,10 @@ public class DBRefFetcher implements Runnable // absStart = 0; // create valid mapping between matching region of local sequence and // the mapped sequence - mp = new Mapping(null, new int[] - { sequence.getStart() + absStart, + mp = new Mapping(null, new int[] { + sequence.getStart() + absStart, sequence.getStart() + absStart + entrySeq.length() - 1 }, - new int[] - { entry.getStart(), + new int[] { entry.getStart(), entry.getStart() + entrySeq.length() - 1 }, 1, 1); updateRefFrame = false; // mapping is based on current start/end so // don't modify start and end @@ -657,11 +669,21 @@ public class DBRefFetcher implements Runnable // unknownSequences.remove(sequence); int absEnd = absStart + nonGapped.length(); absStart += 1; + if (!trimDatasetSeqs) + { + // insert full length sequence from record + sequence.setSequence(entry.getSequenceAsString()); + sequence.setStart(entry.getStart()); + } if (updateRefFrame) { // finally, update local sequence reference frame if we're allowed - sequence.setStart(absStart); - sequence.setEnd(absEnd); + if (trimDatasetSeqs) + { + // just fix start/end + sequence.setStart(absStart); + sequence.setEnd(absEnd); + } // search for alignment sequences to update coordinate frame for for (int alsq = 0; alsq < alseqs.length; alsq++) {