/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* 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/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ws;
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
/**
* 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++)
{