X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAlignmentUtils.java;h=2feeb919a3d7791c74584018f69e26b493371ec0;hb=a94284081155efc1183fac5d8254826db542a933;hp=5bbdc4a6df0cb467c144945a6637ada539cc8430;hpb=efde43fab576590026bbe0ced39e13426aa6532f;p=jalview.git diff --git a/src/jalview/analysis/AlignmentUtils.java b/src/jalview/analysis/AlignmentUtils.java index 5bbdc4a..2feeb91 100644 --- a/src/jalview/analysis/AlignmentUtils.java +++ b/src/jalview/analysis/AlignmentUtils.java @@ -1,3 +1,23 @@ +/* + * 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. + * + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.analysis; import java.util.ArrayList; @@ -7,16 +27,19 @@ import jalview.datamodel.SequenceI; import jalview.datamodel.AlignmentI; /** - * grab bag of useful alignment manipulation operations - * Expect these to be refactored elsewhere at some point. + * grab bag of useful alignment manipulation operations Expect these to be + * refactored elsewhere at some point. + * * @author jimp - * + * */ public class AlignmentUtils { /** - * given an existing alignment, create a new alignment including all, or up to flankSize additional symbols from each sequence's dataset sequence + * given an existing alignment, create a new alignment including all, or up to + * flankSize additional symbols from each sequence's dataset sequence + * * @param core * @param flankSize * @return AlignmentI @@ -25,67 +48,79 @@ public class AlignmentUtils { List sq = new ArrayList(); int maxoffset = 0; - for (SequenceI s:core.getSequences()) + for (SequenceI s : core.getSequences()) { SequenceI newSeq = s.deriveSequence(); - if (newSeq.getStart()>maxoffset) + if (newSeq.getStart() > maxoffset + && newSeq.getDatasetSequence().getStart() < s.getStart()) { maxoffset = newSeq.getStart(); } sq.add(newSeq); } - if (flankSize>-1) { + if (flankSize > -1) + { maxoffset = flankSize; } // now add offset to create a new expanded alignment - for (SequenceI s:sq) + for (SequenceI s : sq) { SequenceI ds = s; - while (ds.getDatasetSequence()!=null) { - ds=ds.getDatasetSequence(); + while (ds.getDatasetSequence() != null) + { + ds = ds.getDatasetSequence(); } - int s_end = s.findPosition(s.getStart()+s.getLength()); + int s_end = s.findPosition(s.getStart() + s.getLength()); // find available flanking residues for sequence - int ustream_ds=s.getStart()-ds.getStart(),dstream_ds=ds.getEnd()-s_end; - + int ustream_ds = s.getStart() - ds.getStart(), dstream_ds = ds + .getEnd() - s_end; + // build new flanked sequence - + // compute gap padding to start of flanking sequence - int offset=maxoffset - ustream_ds; - + int offset = maxoffset - ustream_ds; + // padding is gapChar x ( maxoffset - min(ustream_ds, flank) - if (flankSize>=0) { - if (flankSize= 0) + { + if (flankSize < ustream_ds) { - // take up to flankSize residues - offset = maxoffset-flankSize; - ustream_ds = flankSize; - } - if (flankSize