import javax.swing.event.InternalFrameEvent;
import jalview.analysis.TreeBuilder;
+import jalview.analysis.scoremodels.ScoreMatrix;
import jalview.analysis.scoremodels.ScoreModels;
import jalview.analysis.scoremodels.SimilarityParams;
import jalview.api.analysis.ScoreModelI;
private static final Font VERDANA_11PT = new Font("Verdana", 0, 11);
+
+ private static final int MIN_PAIRWISE_SELECTION = 2;
+
private static final int MIN_TREE_SELECTION = 3;
private static final int MIN_PCA_SELECTION = 4;
AlignFrame af;
+ JRadioButton pairwise;
+
JRadioButton pca;
JRadioButton neighbourJoining;
averageDistance = new JRadioButton(
MessageManager.getString("label.tree_calc_av"));
averageDistance.setOpaque(false);
+
+ pairwise = new JRadioButton(MessageManager.getString("label.pairwise_alignment"));
+ pairwise.setOpaque(false);
JPanel calcChoicePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
calcChoicePanel.setOpaque(false);
treePanel.add(averageDistance);
calcChoicePanel.add(treePanel);
+ calcChoicePanel.add(pairwise,FlowLayout.CENTER);
ButtonGroup calcTypes = new ButtonGroup();
calcTypes.add(pca);
calcTypes.add(neighbourJoining);
calcTypes.add(averageDistance);
+ calcTypes.add(pairwise);
ActionListener calcChanged = new ActionListener()
{
pca.addActionListener(calcChanged);
neighbourJoining.addActionListener(calcChanged);
averageDistance.addActionListener(calcChanged);
-
+ pairwise.addActionListener(calcChanged);
/*
* score models drop-down - with added tooltips!
*/
MIN_TREE_SELECTION);
boolean checkAverageDistance = checkEnabled(averageDistance, size,
MIN_TREE_SELECTION);
+ boolean checkPairwise = checkEnabled(pairwise, size,
+ MIN_PAIRWISE_SELECTION);
- if (checkPca || checkNeighbourJoining || checkAverageDistance)
+ if (checkPca || checkNeighbourJoining || checkAverageDistance || checkPairwise)
{
calculate.setToolTipText(null);
calculate.setEnabled(true);
if (doPCA)
{
openPcaPanel(modelName, params);
- }
- else
+ } else {
+ if (pairwise.isSelected())
+ {
+ openPairwisePanel(modelName,params);
+ } else
{
openTreePanel(modelName, params);
- }
+ }}
// closeFrame();
}
+ private void openPairwisePanel(String modelName, SimilarityParamsI params)
+ {
+ ScoreModelI sm = ScoreModels.getInstance().getScoreModel(modelName, af.alignPanel);
+ if (sm==null || !(sm instanceof ScoreMatrix))
+ {
+ return;
+ }
+ JInternalFrame frame = new JInternalFrame();
+ frame.setFrameIcon(null);
+ frame.setContentPane(new PairwiseAlignPanel(af.getViewport(),(ScoreMatrix)sm));
+ Desktop.addInternalFrame(frame,
+ MessageManager.getString("action.pairwise_alignment"), 600,
+ 500);
+ }
+
/**
* Open a new Tree panel on the desktop
*
new Thread(pcaPanel).start();
}
+
/**
*
package jalview.gui;
import jalview.analysis.AlignSeq;
+import jalview.analysis.scoremodels.ScoreMatrix;
+import jalview.api.analysis.ScoreModelI;
+import jalview.api.analysis.SimilarityParamsI;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.SequenceGroup;
* Creates a new PairwiseAlignPanel object.
*
* @param viewport
- * DOCUMENT ME!
+ * contains selected sequences to align
*/
public PairwiseAlignPanel(AlignmentViewport viewport)
{
+ this(viewport,null);
+ }
+
+ /**
+ * Creates a new PairwiseAlignPanel object.
+ *
+ * @param viewport
+ * contains selected sequences to align
+ */
+
+ public PairwiseAlignPanel(AlignmentViewport viewport, ScoreMatrix params)
+ {
super();
this.av = viewport;
{
continue;
}
-
+ if (params!=null)
+ {
+ as.setScoreMatrix(params);
+ }
as.calcScoreMatrix();
as.traceAlignment();