/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
package jalview.gui;
import jalview.analysis.AlignmentUtils;
-import jalview.analysis.AlignmentUtils.MappingResult;
import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
import jalview.analysis.NJTree;
import jalview.api.AlignViewportI;
import jalview.api.ViewStyleI;
import jalview.bin.Cache;
import jalview.commands.CommandI;
+import jalview.datamodel.AlignedCodonFrame;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
showConsensus = Cache.getDefault("SHOW_IDENTITY", true);
}
initAutoAnnotation();
- if (jalview.bin.Cache.getProperty(Preferences.DEFAULT_COLOUR) != null)
+ String colourProperty = alignment.isNucleotide() ? Preferences.DEFAULT_COLOUR_NUC
+ : Preferences.DEFAULT_COLOUR_PROT;
+ String propertyValue = Cache.getProperty(colourProperty);
+ if (propertyValue == null)
+ {
+ // fall back on this property for backwards compatibility
+ propertyValue = Cache.getProperty(Preferences.DEFAULT_COLOUR);
+ }
+ if (propertyValue != null)
{
globalColourScheme = ColourSchemeProperty.getColour(alignment,
- jalview.bin.Cache.getProperty(Preferences.DEFAULT_COLOUR));
+ propertyValue);
if (globalColourScheme instanceof UserColourScheme)
{
* If one alignment is protein and one nucleotide, with at least one
* sequence name in common, offer to open a linked alignment.
*/
- if (getAlignment().isNucleotide() != al.isNucleotide())
+ if (AlignmentUtils.isMappable(al, getAlignment()))
{
- // TODO: JAL-845 try a bit harder to link up imported sequences
- final Set<String> sequenceNames = getAlignment().getSequenceNames();
- sequenceNames.retainAll(al.getSequenceNames());
- if (!sequenceNames.isEmpty()) // at least one sequence name in both
+ if (openLinkedAlignment(al, title))
{
- if (openLinkedAlignment(al, title))
- {
- return;
- }
+ return;
}
}
// TODO: JAL-407 regardless of above - identical sequences (based on ID and
}
/*
- * Try to find mappings for at least one sequence. Any mappings made will be
- * added to the protein alignment.
+ * Map sequences. At least one should get mapped as we have already passed
+ * the test for 'mappability'. Any mappings made will be added to the
+ * protein alignment.
*/
- MappingResult mapped = AlignmentUtils.mapProteinToCdna(protein, cdna);
- if (mapped != MappingResult.Mapped)
- {
- /*
- * No mapping possible - warn the user, but leave window open.
- */
- final String msg = JvSwingUtils.wrapTooltip(true,
- MessageManager.getString("label.mapping_failed"));
- JOptionPane.showInternalMessageDialog(Desktop.desktop, msg,
- MessageManager.getString("label.no_mappings"),
- JOptionPane.WARNING_MESSAGE);
- }
+ AlignmentUtils.mapProteinToCdna(protein, cdna);
try
{
if (openSplitPane)
{
- protein = openSplitFrame(newAlignFrame,
- thisAlignment.getSequencesArray());
+ protein = openSplitFrame(newAlignFrame, thisAlignment,
+ protein.getCodonFrames());
}
/*
*
* @param newAlignFrame
* containing a new alignment to be shown
- * @param seqs
- * 'complementary' sequences to show in the other split half
+ * @param complement
+ * cdna/protein complement alignment to show in the other split half
+ * @param mappings
* @return the protein alignment in the split frame
*/
protected AlignmentI openSplitFrame(AlignFrame newAlignFrame,
- SequenceI[] seqs)
+ AlignmentI complement, Set<AlignedCodonFrame> mappings)
{
- AlignmentI complementAlignment = new Alignment(seqs);
- // TODO: move this to a factory/controller method ?
/*
* Open in split pane. DNA sequence above, protein below.
*/
- AlignFrame copyMe = new AlignFrame(complementAlignment,
+ AlignFrame copyMe = new AlignFrame(complement,
AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
copyMe.setTitle(getAlignPanel().alignFrame.getTitle());
final AlignFrame cdnaFrame = al.isNucleotide() ? newAlignFrame
: copyMe;
AlignmentI protein = proteinFrame.viewport.getAlignment();
+ protein.setCodonFrames(mappings);
+ proteinFrame.viewport.initComplementConsensus();
cdnaFrame.setVisible(true);
proteinFrame.setVisible(true);