package jalview.gui;
import jalview.analysis.AlignmentSorter;
-import jalview.analysis.AverageDistanceTree;
-import jalview.analysis.NJTree;
-import jalview.analysis.TreeBuilder;
import jalview.analysis.TreeModel;
-import jalview.analysis.scoremodels.ScoreModels;
-import jalview.api.analysis.ScoreModelI;
-import jalview.api.analysis.SimilarityParamsI;
import jalview.bin.Cache;
import jalview.commands.CommandI;
import jalview.commands.OrderCommand;
*/
public class TreePanel extends GTreePanel
{
- String treeType;
+ String substitutionMatrix;
- String scoreModelName; // if tree computed
+ String treeType;
String treeTitle; // if tree loaded
- SimilarityParamsI similarityParams;
-
TreeCanvas treeCanvas;
TreeModel tree;
* Creates a new TreePanel object.
*
* @param ap
- * @param type
- * @param modelName
- * @param options
+ * @param tree
+ * @param treeType
+ * @param substitutionMatrix
*/
- public TreePanel(AlignmentPanel ap, String type, String modelName,
- SimilarityParamsI options)
+ public TreePanel(AlignmentPanel ap, TreeModel tree, String treeType,
+ String substitutionMatrix)
{
super();
- this.similarityParams = options;
- initTreePanel(ap, type, modelName, null, null);
+ this.treeType = treeType;
+ this.substitutionMatrix = substitutionMatrix;
+ this.tree = tree;
+ initTreePanel(ap, tree);
// We know this tree has distances. JBPNote TODO: prolly should add this as
// a userdefined default
// showDistances(true);
}
+ /**
+ * Creates a new TreePanel object.
+ *
+ * @param alignPanel
+ * @param newtree
+ * @param theTitle
+ * @param inputData
+ */
public TreePanel(AlignmentPanel alignPanel, NewickFile newtree,
String theTitle, AlignmentView inputData)
{
super();
this.treeTitle = theTitle;
- initTreePanel(alignPanel, null, null, newtree, inputData);
+ initTreePanel(alignPanel, newtree, inputData);
}
public AlignmentI getAlignment()
return treeCanvas.av;
}
- void initTreePanel(AlignmentPanel ap, String type, String modelName,
- NewickFile newTree, AlignmentView inputData)
+ /**
+ * Initialize a tree panel based on a calculated tree
+ *
+ * @param ap
+ * @param tree
+ */
+ void initTreePanel(AlignmentPanel ap, TreeModel tree)
+ {
+ buildTreeCanvas(ap);
+
+ TreeLoader tl = new TreeLoader(null, null);
+ tl.start();
+
+ }
+
+ /**
+ * Initialize a tree panel based on a loaded in tree file.
+ *
+ * @param ap
+ * @param loadedTree
+ * @param inputData
+ */
+ void initTreePanel(AlignmentPanel ap,
+ NewickFile loadedTree, AlignmentView inputData)
{
+ buildTreeCanvas(ap);
+
+ TreeLoader tl = new TreeLoader(loadedTree, inputData);
+ tl.start();
+ }
- av = ap.av;
- this.treeType = type;
- this.scoreModelName = modelName;
+public void buildTreeCanvas(AlignmentPanel ap) {
+ av = ap.av;
treeCanvas = new TreeCanvas(this, ap, scrollPane);
scrollPane.setViewportView(treeCanvas);
+
PaintRefresher.Register(this, ap.av.getSequenceSetId());
buildAssociatedViewMenu();
}
if (evt.getNewValue() == null)
{
- System.out
- .println("new alignment sequences vector value is null");
+ System.out.println(
+ "new alignment sequences vector value is null");
}
tree.updatePlaceHolders((List<SequenceI>) evt.getNewValue());
}
});
- TreeLoader tl = new TreeLoader(newTree, inputData);
- tl.start();
+
+
}
void buildAssociatedViewMenu()
{
- AlignmentPanel[] aps = PaintRefresher.getAssociatedPanels(av
- .getSequenceSetId());
+ AlignmentPanel[] aps = PaintRefresher
+ .getAssociatedPanels(av.getSequenceSetId());
if (aps.length == 1 && treeCanvas.ap == aps[0])
{
associateLeavesMenu.setVisible(false);
associateLeavesMenu.setVisible(true);
- if ((viewMenu.getItem(viewMenu.getItemCount() - 2) instanceof JMenuItem))
+ if ((viewMenu
+ .getItem(viewMenu.getItemCount() - 2) instanceof JMenuItem))
{
viewMenu.insertSeparator(viewMenu.getItemCount() - 1);
}
class TreeLoader extends Thread
{
- private NewickFile newtree;
+ private NewickFile newTree;
private AlignmentView odata = null;
public TreeLoader(NewickFile newickFile, AlignmentView inputData)
{
- this.newtree = newickFile;
+ this.newTree = newickFile;
this.odata = inputData;
- if (newickFile != null)
+ if (newTree != null)
{
// Must be outside run(), as Jalview2XML tries to
// update distance/bootstrap visibility at the same time
- showBootstrap(newickFile.HasBootstrap());
- showDistances(newickFile.HasDistances());
+ showBootstrap(newTree.hasBootstrap());
+ showDistances(newTree.hasDistances());
+
}
+
}
@Override
public void run()
{
- if (newtree != null)
+ if (newTree != null)
{
tree = new TreeModel(av.getAlignment().getSequencesArray(), odata,
- newtree);
+ newTree);
if (tree.getOriginalData() == null)
{
originalSeqData.setVisible(false);
}
+
+
+
}
- else
- {
- ScoreModelI sm = ScoreModels.getInstance().getScoreModel(
- scoreModelName, treeCanvas.ap);
- TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING) ? new NJTree(
- av, sm, similarityParams) : new AverageDistanceTree(av, sm,
- similarityParams);
- tree = new TreeModel(njtree);
- showDistances(true);
- }
+ showTree(tree);
+ }
+
+ public void showTree(TreeModel tree)
+ {
tree.reCount(tree.getTopNode());
tree.findHeight(tree.getTopNode());
treeCanvas.setTree(tree);
treeCanvas.repaint();
+
av.setCurrentTree(tree);
if (av.getSortByTree())
{
sortByTree_actionPerformed();
}
+
}
}
JalviewFileChooser chooser = new JalviewFileChooser(
jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
chooser.setFileView(new JalviewFileView());
- chooser.setDialogTitle(MessageManager
- .getString("label.save_tree_as_newick"));
+ chooser.setDialogTitle(
+ MessageManager.getString("label.save_tree_as_newick"));
chooser.setToolTipText(MessageManager.getString("action.save"));
int value = chooser.showSaveDialog(null);
if (value == JalviewFileChooser.APPROVE_OPTION)
{
String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
- .getSelectedFile().getParent());
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ chooser.getSelectedFile().getParent());
try
{
jalview.io.NewickFile fout = new jalview.io.NewickFile(
tree.getTopNode());
- String output = fout.print(tree.hasBootstrap(),
- tree.hasDistances(), tree.hasRootDistance());
+ String output = fout.print(tree.hasBootstrap(), tree.hasDistances(),
+ tree.hasRootDistance());
java.io.PrintWriter out = new java.io.PrintWriter(
new java.io.FileWriter(choice));
out.println(output);
AlignmentView originalData = tree.getOriginalData();
if (originalData == null)
{
- jalview.bin.Cache.log
- .info("Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action.");
+ jalview.bin.Cache.log.info(
+ "Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action.");
return;
}
// decide if av alignment is sufficiently different to original data to
// AlignmentOrder origorder = new AlignmentOrder(alAndColsel[0]);
AlignmentI al = new Alignment((SequenceI[]) alAndColsel[0]);
- AlignmentI dataset = (av != null && av.getAlignment() != null) ? av
- .getAlignment().getDataset() : null;
+ AlignmentI dataset = (av != null && av.getAlignment() != null)
+ ? av.getAlignment().getDataset()
+ : null;
if (dataset != null)
{
al.setDataset(dataset);
{
// make a new frame!
AlignFrame af = new AlignFrame(al, (HiddenColumns) alAndColsel[1],
- AlignFrame.DEFAULT_WIDTH,
- AlignFrame.DEFAULT_HEIGHT);
+ AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
// >>>This is a fix for the moment, until a better solution is
// found!!<<<
// msaorder);
Desktop.addInternalFrame(af, MessageManager.formatMessage(
- "label.original_data_for_params",
- new Object[] { this.title }), AlignFrame.DEFAULT_WIDTH,
+ "label.original_data_for_params", new Object[]
+ { this.title }), AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
}
}
* @param e
*/
@Override
- public void sortByTree_actionPerformed()
+ public void sortByTree_actionPerformed()// modify for Aptx
{
if (treeCanvas.applyToAllViews)
{
- final ArrayList<CommandI> commands = new ArrayList<CommandI>();
- for (AlignmentPanel ap : PaintRefresher.getAssociatedPanels(av
- .getSequenceSetId()))
+ final ArrayList<CommandI> commands = new ArrayList<>();
+ for (AlignmentPanel ap : PaintRefresher
+ .getAssociatedPanels(av.getSequenceSetId()))
{
commands.add(sortAlignmentIn(ap.av.getAlignPanel()));
}
}
}
});
- for (AlignmentPanel ap : PaintRefresher.getAssociatedPanels(av
- .getSequenceSetId()))
+ for (AlignmentPanel ap : PaintRefresher
+ .getAssociatedPanels(av.getSequenceSetId()))
{
// ensure all the alignFrames refresh their GI after adding an undo item
ap.alignFrame.updateEditMenuBar();
public CommandI sortAlignmentIn(AlignmentPanel ap)
{
+ // TODO: move to alignment view controller
AlignmentViewport viewport = ap.av;
SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
AlignmentSorter.sortByTree(viewport.getAlignment(), tree);
CommandI undo;
undo = new OrderCommand("Tree Sort", oldOrder, viewport.getAlignment());
- ap.paintAlignment(true);
+ ap.paintAlignment(true, false);
return undo;
}
JalviewFileChooser chooser = new JalviewFileChooser(
ImageMaker.EPS_EXTENSION, ImageMaker.EPS_EXTENSION);
chooser.setFileView(new JalviewFileView());
- chooser.setDialogTitle(MessageManager
- .getString("label.create_eps_from_tree"));
+ chooser.setDialogTitle(
+ MessageManager.getString("label.create_eps_from_tree"));
chooser.setToolTipText(MessageManager.getString("action.save"));
int value = chooser.showSaveDialog(this);
return;
}
- Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile()
- .getParent());
+ Cache.setProperty("LAST_DIRECTORY",
+ chooser.getSelectedFile().getParent());
- FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());
- EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width, height);
+ FileOutputStream out = new FileOutputStream(
+ chooser.getSelectedFile());
+ EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width,
+ height);
pg.setAccurateTextMode(accurateText);
ImageMaker.PNG_EXTENSION, ImageMaker.PNG_DESCRIPTION);
chooser.setFileView(new jalview.io.JalviewFileView());
- chooser.setDialogTitle(MessageManager
- .getString("label.create_png_from_tree"));
+ chooser.setDialogTitle(
+ MessageManager.getString("label.create_png_from_tree"));
chooser.setToolTipText(MessageManager.getString("action.save"));
int value = chooser.showSaveDialog(this);
return;
}
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
- .getSelectedFile().getParent());
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ chooser.getSelectedFile().getParent());
- FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());
+ FileOutputStream out = new FileOutputStream(
+ chooser.getSelectedFile());
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
if (sq != null)
{
// search dbrefs, features and annotation
- DBRefEntry[] refs = jalview.util.DBRefUtils.selectRefs(
- sq.getDBRefs(),
- new String[] { labelClass.toUpperCase() });
+ DBRefEntry[] refs = jalview.util.DBRefUtils
+ .selectRefs(sq.getDBRefs(), new String[]
+ { labelClass.toUpperCase() });
if (refs != null)
{
for (int i = 0; i < refs.length; i++)
* Neighbour Joining Using BLOSUM62
* <p>
* For a tree loaded from file, just uses the file name
+ *
* @return
*/
- public String getPanelTitle()
+ public String getPanelTitle() // to be moved/fixed
{
if (treeTitle != null)
{
return treeTitle;
}
-
- /*
- * i18n description of Neighbour Joining or Average Distance method
- */
- String treecalcnm = MessageManager.getString("label.tree_calc_"
- + treeType.toLowerCase());
-
- /*
- * short score model name (long description can be too long)
- */
- String smn = scoreModelName;
-
- /*
- * put them together as <method> Using <model>
- */
- final String ttl = MessageManager.formatMessage("label.treecalc_title",
- treecalcnm, smn);
- return ttl;
+ else
+ {
+ /*
+ * i18n description of Neighbour Joining or Average Distance method
+ */
+ String treecalcnm = MessageManager
+ .getString("label.tree_calc_" + treeType.toLowerCase());
+
+ /*
+ * short score model name (long description can be too long)
+ */
+ String smn = substitutionMatrix;
+
+ /*
+ * put them together as <method> Using <model>
+ */
+ final String ttl = MessageManager
+ .formatMessage("label.treecalc_title", treecalcnm, smn);
+ return ttl;
+ }
}
}