import jalview.analysis.AlignmentUtils;
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 pasimap;
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(pasimap);
calcTypes.add(neighbourJoining);
calcTypes.add(averageDistance);
+ calcTypes.add(pairwise);
ActionListener calcChanged = new ActionListener()
{
//to do
ssSourceDropdown = buildSSSourcesOptionsList();
ssSourceDropdown.setVisible(false); // Initially hide the dropdown
-
+ 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 || checkPasimap || checkNeighbourJoining || checkAverageDistance)
+ if (checkPca || checkPasimap || checkPca || checkNeighbourJoining || checkAverageDistance || checkPairwise)
{
calculate.setToolTipText(null);
calculate.setEnabled(true);
{
boolean doPCA = pca.isSelected();
boolean doPaSiMap = pasimap.isSelected();
+ boolean doPairwise= pairwise.isSelected();
String modelName = modelNames.getSelectedItem() == null ? "" : modelNames.getSelectedItem().toString();
String ssSource = "";
Object selectedItem = ssSourceDropdown.getSelectedItem();
params.setSecondaryStructureSource(ssSource);
}
- if (doPCA && !doPaSiMap)
+ if (doPCA)
{
openPcaPanel(modelName, params);
- }
- else if (doPaSiMap && !doPCA)
- {
- openPasimapPanel(modelName, params);
- }
- else
- {
- openTreePanel(modelName, params);
- }
+ } else if (doPaSiMap) {
+ openPasimapPanel(modelName, params);
+ } else if (doPairwise) {
+ 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
*
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
* @param endGaps ~ toggle gaps and the beginning and end of sequences
*/
public PairwiseAlignPanel(AlignmentViewport viewport)
{
- this(viewport, null, false, 120, 20, true); // default penalties used in AlignSeq
+ this(viewport, null, false, 120, 20, true, null); // default penalties used in AlignSeq
+ }
+ public PairwiseAlignPanel(AlignmentViewport viewport, ScoreMatrix params)
+ {
+ this(viewport, null, false, 120, 20, true,params); // default penalties used in AlignSeq
}
public PairwiseAlignPanel(AlignmentViewport viewport, boolean endGaps, int gapOpenCost, int gapExtendCost)
{
- this(viewport, null, endGaps, gapOpenCost, gapExtendCost, true);
+ this(viewport, null, endGaps, gapOpenCost, gapExtendCost, true, null);
}
+ /**
+ * Create a new pairwise alignpanel with specified parameters and score model, and optionally start the calculation
+ * @param viewport
+ * @param selection
+ * @param endGaps
+ * @param gapOpenCost
+ * @param gapExtendCost
+ * @param run
+ * @param scoreMatrix
+ */
public PairwiseAlignPanel(AlignmentViewport viewport, SequenceGroup selection, boolean endGaps,
- int gapOpenCost, int gapExtendCost, boolean run)
+ int gapOpenCost, int gapExtendCost, boolean run, ScoreMatrix scoreMatrix)
{
super();
this.av = viewport;
this.endGaps = endGaps;
this.selection = selection;
this.total = MiscMath.combinations(av.getAlignment().getHeight(), 2);
-
- if (run)
- calculate();
+
+ if (run) {
+ calculate(scoreMatrix);
+ }
+
System.out.println("Creating pap");
}
{
AlignSeq as = new AlignSeq(seqs[i], seqStrings[i], seqs[j],
seqStrings[j], type, GAP_OPEN_COST, GAP_EXTEND_COST);
- if (sm != null)
- as.setScoreMatrix(sm);
- if (as.s1str.length() == 0 || as.s2str.length() == 0)
+ if (sm != null) {
+ as.setScoreMatrix(sm);
+ }
+
+ if (as.s1str.length() == 0 || as.s2str.length() == 0)
{
continue;
}