X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAlignSeq.java;h=86bf7216d14c0e2dc6705f3fd7a04084f9f76951;hb=fc238ee902aa8604e5ed4af33a77ad3e1c1f42ae;hp=bd4cc223152a38191ca5fccff936147c4f68744e;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/analysis/AlignSeq.java b/src/jalview/analysis/AlignSeq.java index bd4cc22..86bf721 100755 --- a/src/jalview/analysis/AlignSeq.java +++ b/src/jalview/analysis/AlignSeq.java @@ -51,13 +51,13 @@ public class AlignSeq public static final String DNA = "dna"; - static String[] dna = - { "A", "C", "G", "T", "-" }; + private static final String NEWLINE = System.lineSeparator(); + + static String[] dna = { "A", "C", "G", "T", "-" }; // "C", "T", "A", "G", "-"}; - static String[] pep = - { "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", - "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "-" }; + static String[] pep = { "A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", + "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "-" }; int[][] score; @@ -449,7 +449,8 @@ public class AlignSeq else { output.append("Wrong type = dna or pep only"); - throw new Error(MessageManager.formatMessage("error.unknown_type_dna_or_pep", new String[]{type2})); + throw new Error(MessageManager.formatMessage( + "error.unknown_type_dna_or_pep", new String[] { type2 })); } } @@ -576,24 +577,32 @@ public class AlignSeq } } int len = 72 - maxid - 1; - int nochunks = ((aseq1.length - count) / len) + 1; + int nochunks = ((aseq1.length - count) / len) + + ((aseq1.length - count) % len > 0 ? 1 : 0); pid = 0; - output.append("Score = " + score[maxi][maxj] + "\n"); - output.append("Length of alignment = " + (aseq1.length - count) + "\n"); + output.append("Score = ").append(score[maxi][maxj]).append(NEWLINE); + output.append("Length of alignment = ") + .append(String.valueOf(aseq1.length - count)).append(NEWLINE); output.append("Sequence "); output.append(new Format("%" + maxid + "s").form(s1.getName())); - output.append(" : " + s1.getStart() + " - " + s1.getEnd() - + " (Sequence length = " + s1str.length() + ")\n"); + output.append(" : ").append(String.valueOf(s1.getStart())) + .append(" - ").append(String.valueOf(s1.getEnd())); + output.append(" (Sequence length = ") + .append(String.valueOf(s1str.length())).append(")") + .append(NEWLINE); output.append("Sequence "); output.append(new Format("%" + maxid + "s").form(s2.getName())); - output.append(" : " + s2.getStart() + " - " + s2.getEnd() - + " (Sequence length = " + s2str.length() + ")\n\n"); + output.append(" : ").append(String.valueOf(s2.getStart())) + .append(" - ").append(String.valueOf(s2.getEnd())); + output.append(" (Sequence length = ") + .append(String.valueOf(s2str.length())).append(")") + .append(NEWLINE).append(NEWLINE); for (int j = 0; j < nochunks; j++) { // Print the first aligned sequence - output.append(new Format("%" + (maxid) + "s").form(s1id) + " "); + output.append(new Format("%" + (maxid) + "s").form(s1id)).append(" "); for (int i = 0; i < len; i++) { @@ -603,15 +612,18 @@ public class AlignSeq } } - output.append("\n"); - output.append(new Format("%" + (maxid) + "s").form(" ") + " "); + output.append(NEWLINE); + output.append(new Format("%" + (maxid) + "s").form(" ")).append(" "); // Print out the matching chars for (int i = 0; i < len; i++) { if ((i + (j * len)) < astr1.length()) { - if (astr1.charAt(i + (j * len)) == astr2.charAt(i + (j * len)) + boolean sameChar = Comparison.isSameResidue( + astr1.charAt(i + (j * len)), astr2.charAt(i + (j * len)), + false); + if (sameChar && !jalview.util.Comparison.isGap(astr1.charAt(i + (j * len)))) { @@ -638,9 +650,9 @@ public class AlignSeq } // Now print the second aligned sequence - output = output.append("\n"); - output = output.append(new Format("%" + (maxid) + "s").form(s2id) - + " "); + output = output.append(NEWLINE); + output = output.append(new Format("%" + (maxid) + "s").form(s2id)) + .append(" "); for (int i = 0; i < len; i++) { @@ -650,13 +662,11 @@ public class AlignSeq } } - output = output.append("\n\n"); + output.append(NEWLINE).append(NEWLINE); } pid = pid / (aseq1.length - count) * 100; - output = output.append(new Format("Percentage ID = %2.2f\n\n") - .form(pid)); - + output = output.append(new Format("Percentage ID = %2.2f\n").form(pid)); try { os.print(output.toString()); @@ -940,6 +950,7 @@ public class AlignSeq public static void displayMatrix(Graphics g, int[][] mat, int n, int m, int psize) { + // TODO method dosen't seem to be referenced anywhere delete?? int max = -1000; int min = 1000; @@ -1088,8 +1099,8 @@ public class AlignSeq */ public static List> replaceMatchingSeqsWith( List seqs, List annotations, - List ochains, - AlignmentI al, String dnaOrProtein, boolean removeOldAnnots) + List ochains, AlignmentI al, String dnaOrProtein, + boolean removeOldAnnots) { List orig = new ArrayList(), repl = new ArrayList(); List aligs = new ArrayList(); @@ -1097,7 +1108,7 @@ public class AlignSeq { ArrayList matches = new ArrayList(); ArrayList aligns = new ArrayList(); - + for (SequenceI sq : ochains) { SequenceI bestm = null; @@ -1105,8 +1116,7 @@ public class AlignSeq int bestscore = 0; for (SequenceI msq : al.getSequences()) { - AlignSeq aseq = doGlobalNWAlignment(msq, sq, - dnaOrProtein); + AlignSeq aseq = doGlobalNWAlignment(msq, sq, dnaOrProtein); if (bestm == null || aseq.getMaxScore() > bestscore) { bestscore = aseq.getMaxScore(); @@ -1132,7 +1142,8 @@ public class AlignSeq sq.setName(sp.getName()); sq.setDescription(sp.getDescription()); Mapping sp2sq; - sq.transferAnnotation(sp, sp2sq = aligns.get(q).getMappingFromS1(false)); + sq.transferAnnotation(sp, + sp2sq = aligns.get(q).getMappingFromS1(false)); aligs.add(aligns.get(q)); int inspos = -1; for (int ap = 0; ap < annotations.size();) @@ -1143,9 +1154,12 @@ public class AlignSeq { inspos = ap; } - if (removeOldAnnots) { + if (removeOldAnnots) + { annotations.remove(ap); - } else { + } + else + { AlignmentAnnotation alan = annotations.remove(ap); alan.liftOver(sq, sp2sq); alan.setSequenceRef(sq);