From 27a1456b0a4a6366240f96d984cacbc1116279d2 Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 3 Jun 2005 13:16:56 +0000 Subject: [PATCH] Reinstated 'create tree from selected region only' with better indication that only part of an alignment was used to calculate the tree. --- src/jalview/analysis/NJTree.java | 4 ++-- src/jalview/gui/AlignFrame.java | 47 ++++++++++++++++++++++++------------ src/jalview/util/Comparison.java | 49 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 17 deletions(-) diff --git a/src/jalview/analysis/NJTree.java b/src/jalview/analysis/NJTree.java index d56464c..85749a1 100755 --- a/src/jalview/analysis/NJTree.java +++ b/src/jalview/analysis/NJTree.java @@ -412,7 +412,7 @@ public class NJTree { if (j==i) { distance[i][i] = 0; } else { - distance[i][j] = 100-Comparison.PID(sequence[i], sequence[j]); + distance[i][j] = 100-Comparison.PID(sequence[i], sequence[j], start, end); distance[j][i] = distance[i][j]; } } @@ -423,7 +423,7 @@ public class NJTree { for (int i = 0; i < noseqs-1; i++) { for (int j = i; j < noseqs; j++) { int score = 0; - for (int k=0; k < sequence[i].getLength(); k++) { + for (int k=start; k < end; k++) { try{ score += ResidueProperties.getBLOSUM62(sequence[i].getSequence(k, diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index afb1f0c..4d97f49 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1068,34 +1068,51 @@ public class AlignFrame extends GAlignFrame void NewTreePanel(String type, String pwType, String title) { - //are the sequences aligned? - if(!viewport.alignment.isAligned()) - { - JOptionPane.showMessageDialog(Desktop.desktop, "The sequences must be aligned before creating a tree.\n" - +"Try using the Pad function in the edit menu,\n" - +"or one of the multiple sequence alignment web services.", - "Sequences not aligned", JOptionPane.WARNING_MESSAGE); - return; - } - + String ltitle; final TreePanel tp; if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize() > 3) { + int s=0; + SequenceGroup sg = viewport.getSelectionGroup(); + + /* Decide if the selection is a column region */ + while (s s2.getSequence().length()) + len = s1.getSequence().length(); + else + len = s2.getSequence().length(); + + if (end