From: jprocter Date: Fri, 17 Dec 2010 16:47:51 +0000 (+0000) Subject: refactored gap insert/visible view modification code from JPredThread X-Git-Tag: Release_2_7~336 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=9659f01c9954d78d03e47aaedb89f6122f2b7142;p=jalview.git refactored gap insert/visible view modification code from JPredThread --- diff --git a/src/jalview/ws/jws1/JPredThread.java b/src/jalview/ws/jws1/JPredThread.java index 98f2645..5d734c1 100644 --- a/src/jalview/ws/jws1/JPredThread.java +++ b/src/jalview/ws/jws1/JPredThread.java @@ -197,7 +197,7 @@ class JPredThread extends JWS1Thread implements WSClientI { // Adjust input view for gaps // propagate insertions into profile - alcsel = propagateInsertions(profileseq, al, input); + alcsel = ColumnSelection.propagateInsertions(profileseq, al, input); } } } @@ -255,98 +255,6 @@ class JPredThread extends JWS1Thread implements WSClientI } } - /** - * Add gaps into the sequences aligned to profileseq under the given - * AlignmentView - * - * @param profileseq - * @param al - * @param input - */ - private ColumnSelection propagateInsertions(SequenceI profileseq, - Alignment al, AlignmentView input) - { - char gc = al.getGapCharacter(); - Object[] alandcolsel = input.getAlignmentAndColumnSelection(gc); - ColumnSelection nview = (ColumnSelection) alandcolsel[1]; - SequenceI origseq; - nview.pruneDeletions(ShiftList - .parseMap((origseq = ((SequenceI[]) alandcolsel[0])[0]) - .gapMap())); // recover original prediction sequence's - // mapping to view. - int[] viscontigs = nview.getVisibleContigs(0, profileseq.getLength()); - int spos = 0; - int offset = 0; - // input.pruneDeletions(ShiftList.parseMap(((SequenceI[]) - // alandcolsel[0])[0].gapMap())) - // add profile to visible contigs - for (int v = 0; v < viscontigs.length; v += 2) - { - if (viscontigs[v] > spos) - { - StringBuffer sb = new StringBuffer(); - for (int s = 0, ns = viscontigs[v] - spos; s < ns; s++) - { - sb.append(gc); - } - for (int s = 0, ns = al.getHeight(); s < ns; s++) - { - SequenceI sqobj = al.getSequenceAt(s); - if (sqobj != profileseq) - { - String sq = al.getSequenceAt(s).getSequenceAsString(); - if (sq.length() <= spos + offset) - { - // pad sequence - int diff = spos + offset - sq.length() - 1; - if (diff > 0) - { - // pad gaps - sq = sq + sb; - while ((diff = spos + offset - sq.length() - 1) > 0) - { - sq = sq - + ((diff >= sb.length()) ? sb.toString() : sb - .substring(0, diff)); - } - } - sq += sb.toString(); - } - else - { - al.getSequenceAt(s).setSequence( - sq.substring(0, spos + offset) + sb.toString() - + sq.substring(spos + offset)); - } - } - } - // offset+=sb.length(); - } - spos = viscontigs[v + 1] + 1; - } - if ((offset + spos) < profileseq.getLength()) - { - StringBuffer sb = new StringBuffer(); - for (int s = 0, ns = profileseq.getLength() - spos - offset; s < ns; s++) - { - sb.append(gc); - } - for (int s = 1, ns = al.getHeight(); s < ns; s++) - { - String sq = al.getSequenceAt(s).getSequenceAsString(); - // pad sequence - int diff = origseq.getLength() - sq.length(); - while (diff > 0) - { - sq = sq - + ((diff >= sb.length()) ? sb.toString() : sb - .substring(0, diff)); - diff = origseq.getLength() - sq.length(); - } - } - } - return nview; - } public JPredJob(Hashtable SequenceInfo, SequenceI seq, int[] delMap) {