X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FCalculationChooser.java;h=fe96eaae318df0caae4ac53b1942afe6ea9b3999;hb=062ebc02980364930ceb26dd6c06448af971fe20;hp=a9f396634a63e9746e8ce405380ada7ec38b087e;hpb=3d0101179759ef157b088ea135423cd909512d9f;p=jalview.git diff --git a/src/jalview/gui/CalculationChooser.java b/src/jalview/gui/CalculationChooser.java index a9f3966..fe96eaa 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.ArchaeopteryxInit; import jalview.util.MessageManager; import java.awt.BorderLayout; @@ -103,7 +106,12 @@ 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 + */ + private PCAPanel pcaPanel; /** * Constructor @@ -370,7 +378,7 @@ public class CalculationChooser extends JPanel */ protected JComboBox buildModelOptionsList() { - final JComboBox scoreModelsCombo = new JComboBox(); + final JComboBox scoreModelsCombo = new JComboBox<>(); scoreModelsCombo.setRenderer(renderer); /* @@ -413,7 +421,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, @@ -460,34 +468,48 @@ public class CalculationChooser extends JPanel 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); + + String treeAlgo = determineTreeAlgo(); + TreeCalculator treeCalculator = new TreeCalculator(treeAlgo, + substitutionMatrix, params); + TreeBuilder calculatedTree = treeCalculator + .makeTree(af.getViewport()); + TreeModel tree = new TreeModel(calculatedTree); + + openTreePanel(tree, treeAlgo, substitutionMatrix); + ArchaeopteryxInit.createInstance(calculatedTree); + + + } // closeFrame(); } - /** - * Open a new Tree panel on the desktop - * - * @param modelName - * @param params - */ - protected void openTreePanel(String modelName, SimilarityParamsI params) + + + + 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) { @@ -499,11 +521,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); } /** @@ -534,7 +570,7 @@ public class CalculationChooser extends JPanel JvOptionPane.WARNING_MESSAGE); return; } - new PCAPanel(af.alignPanel, modelName, params); + pcaPanel = new PCAPanel(af.alignPanel, modelName, params); } /** @@ -576,6 +612,7 @@ public class CalculationChooser extends JPanel */ boolean matchGap = doPCA ? false : treeMatchGaps; + return new SimilarityParams(includeGapGap, matchGap, includeGapResidue, matchOnShortestLength); } @@ -592,4 +629,9 @@ public class CalculationChooser extends JPanel { } } + + public PCAPanel getPcaPanel() + { + return pcaPanel; + } }