/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
* Copyright (C) 2014 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 <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ws;
import jalview.gui.Desktop;
import jalview.gui.IProgressIndicator;
import jalview.gui.OOMWarning;
+import jalview.util.MessageManager;
import jalview.ws.dbsources.das.api.jalviewSourceI;
import jalview.ws.seqfetcher.DbSourceProxy;
private SequenceI[] alseqs;
+ /**
+ * when true - retrieved sequences will be trimmed to cover longest derived
+ * alignment sequence
+ */
+ private boolean trimDsSeqs = true;
+
public DBRefFetcher()
{
}
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
+ trimDsSeqs = Cache.getDefault("TRIM_FETCHED_DATASET_SEQS", true);
if (sources == null)
{
// af.featureSettings_actionPerformed(null);
if (retrieved != null)
{
transferReferences(sdataset, dbsource.getDbSource(),
- retrieved);
+ retrieved, trimDsSeqs);
}
}
else
} // all databases have been queries.
if (sbuffer.length() > 0)
{
- output.setText("Your sequences have been verified against known sequence databases. Some of the ids have been\n"
- + "altered, most likely the start/end residue will have been updated.\n"
- + "Save your alignment to maintain the updated id.\n\n"
+ output.setText(MessageManager
+ .getString("label.your_sequences_have_been_verified")
+ sbuffer.toString());
- Desktop.addInternalFrame(output, "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("DBRef search completed", startTime);
+ af.setProgressBar(
+ MessageManager.getString("label.dbref_search_completed"),
+ startTime);
// promptBeforeBlast();
running = false;
* Verify local sequences in seqRefs against the retrieved sequence database
* records.
*
+ * @param trimDatasetSeqs
+ *
*/
void transferReferences(Vector sdataset, String dbSource,
- AlignmentI retrievedAl) // File
+ AlignmentI retrievedAl, boolean trimDatasetSeqs) // File
// file)
{
+ System.out.println("trimming ? " + trimDatasetSeqs);
if (retrievedAl == null || retrievedAl.getHeight() == 0)
{
return;
// 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("-. ",
// 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++)
{