X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FCalculationChooser.java;h=bae49862295e3abebea728a14e56301d3922c32e;hb=914a9aaf5a2eeb3cdedf136c2e6b4b6e4b5d6174;hp=e403dba1847fbcdd17633a941cfc3872f29f66e4;hpb=df0df46c6900f9f425666ccfda9433411b801824;p=jalview.git diff --git a/src/jalview/gui/CalculationChooser.java b/src/jalview/gui/CalculationChooser.java index e403dba..bae4986 100644 --- a/src/jalview/gui/CalculationChooser.java +++ b/src/jalview/gui/CalculationChooser.java @@ -21,11 +21,14 @@ package jalview.gui; import jalview.analysis.TreeBuilder; +import jalview.analysis.TreeCalculator; +import jalview.analysis.TreeModel; import jalview.analysis.scoremodels.ScoreModels; import jalview.analysis.scoremodels.SimilarityParams; import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; import jalview.datamodel.SequenceGroup; +import jalview.ext.archaeopteryx.AptxInit; import jalview.util.MessageManager; import java.awt.BorderLayout; @@ -43,6 +46,7 @@ import java.awt.event.FocusListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyVetoException; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -103,7 +107,7 @@ public class CalculationChooser extends JPanel final ComboBoxTooltipRenderer renderer = new ComboBoxTooltipRenderer(); - List tips = new ArrayList(); + List tips = new ArrayList<>(); /* * the most recently opened PCA results panel @@ -375,7 +379,7 @@ public class CalculationChooser extends JPanel */ protected JComboBox buildModelOptionsList() { - final JComboBox scoreModelsCombo = new JComboBox(); + final JComboBox scoreModelsCombo = new JComboBox<>(); scoreModelsCombo.setRenderer(renderer); /* @@ -418,7 +422,7 @@ public class CalculationChooser extends JPanel { Object curSel = comboBox.getSelectedItem(); toolTips.clear(); - DefaultComboBoxModel model = new DefaultComboBoxModel(); + DefaultComboBoxModel model = new DefaultComboBoxModel<>(); /* * now we can actually add entries to the combobox, @@ -461,38 +465,73 @@ public class CalculationChooser extends JPanel /** * Open and calculate the selected tree or PCA on 'OK' + * + * @throws IOException */ protected void calculate_actionPerformed() { boolean doPCA = pca.isSelected(); - String modelName = modelNames.getSelectedItem().toString(); + String substitutionMatrix = modelNames.getSelectedItem().toString(); SimilarityParamsI params = getSimilarityParameters(doPCA); if (doPCA) { - openPcaPanel(modelName, params); + openPcaPanel(substitutionMatrix, params); } else { - openTreePanel(modelName, params); + try + { + createTree(substitutionMatrix, params); + } catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + + + + } // closeFrame(); } - /** - * Open a new Tree panel on the desktop - * - * @param modelName - * @param params - */ - protected void openTreePanel(String modelName, SimilarityParamsI params) + protected void createTree(String substitutionMatrix, + SimilarityParamsI params) throws IOException + { + String treeAlgo = determineTreeAlgo(); + TreeCalculator treeCalculator = new TreeCalculator(treeAlgo, + substitutionMatrix, params); + TreeBuilder calculatedTree = treeCalculator.makeTree(af.getViewport()); + + // AptxInit.createInstanceFromCalculation(calculatedTree); + + TreeModel tree = new TreeModel(calculatedTree); + jalview.io.NewickFile newick = new jalview.io.NewickFile( + tree.getTopNode()); + String output = newick.print(tree.hasBootstrap(), tree.hasDistances(), + tree.hasRootDistance()); + AptxInit.createInstanceFromNhx(af.getTitle(), output, + af.getViewport()); + // openTreePanel(tree, treeAlgo, substitutionMatrix); + } + + + protected String determineTreeAlgo() // to be modified & expanded + { + String treeAlgorithm = neighbourJoining.isSelected() + ? TreeBuilder.NEIGHBOUR_JOINING + : TreeBuilder.AVERAGE_DISTANCE; + + return treeAlgorithm; + + } + + protected void checkEnoughSequences(AlignViewport viewport) { - /* - * gui validation shouldn't allow insufficient sequences here, but leave - * this check in in case this method gets exposed programmatically in future - */ - AlignViewport viewport = af.getViewport(); SequenceGroup sg = viewport.getSelectionGroup(); if (sg != null && sg.getSize() < MIN_TREE_SELECTION) { @@ -504,11 +543,25 @@ public class CalculationChooser extends JPanel JvOptionPane.WARNING_MESSAGE); return; } + } - String treeType = neighbourJoining.isSelected() - ? TreeBuilder.NEIGHBOUR_JOINING - : TreeBuilder.AVERAGE_DISTANCE; - af.newTreePanel(treeType, modelName, params); + /** + * Open a new Tree panel on the desktop + * + * @param tree + * @param params + * @param treeAlgo + */ + protected void openTreePanel(TreeModel tree, String treeAlgo, + String substitutionMatrix) + { + /* + * gui validation shouldn't allow insufficient sequences here, but leave + * this check in in case this method gets exposed programmatically in future + */ + checkEnoughSequences(af.getViewport()); + + af.newTreePanel(tree, treeAlgo, substitutionMatrix); } /**