X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=d56764b0bec5879d701a374bb6a03851f51159ee;hb=9d465da4f21e403c20b835264929906b538c0c9b;hp=ef9e575a1949f029291516e20d59ad6507e2c1c7;hpb=f16c439627f599f52a372704e72ae5464134fa2b;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index ef9e575..d56764b 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -830,18 +830,31 @@ public class AlignViewport extends AlignmentViewport AlignmentI thisAlignment = newWindowOrSplitPane ? new Alignment(getAlignment()) : getAlignment(); - AlignmentI protein = al.isNucleotide() ? thisAlignment : al; - final AlignmentI cdna = al.isNucleotide() ? al : thisAlignment; - - /* - * 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. Note creating dataset sequences on the new alignment - * is a pre-requisite for building mappings. - */ + + // always create dataset for imported alignment before doing anything else.. al.setDataset(null); - AlignmentUtils.mapProteinAlignmentToCdna(protein, cdna); + + if (!al.isNucleotide() && !thisAlignment.isNucleotide()) + { + // link AA to 3di or other kind of 'alternative' 1:1 mapping alignment + AlignmentUtils.map3diPeptideToProteinAligment(thisAlignment,al); + } + else + { + // link CODON triplets to Protein + AlignmentI protein = al.isNucleotide() ? thisAlignment : al; + final AlignmentI cdna = al.isNucleotide() ? al : thisAlignment; + + /* + * 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. Note creating dataset sequences on the new alignment + * is a pre-requisite for building mappings. + */ + AlignmentUtils.mapProteinAlignmentToCdna(protein, cdna); + } + /* * Create the AlignFrame for the added alignment. If it is protein, mappings * are registered with StructureSelectionManager as a side-effect. @@ -876,7 +889,7 @@ public class AlignViewport extends AlignmentViewport if (newWindowOrSplitPane) { al.alignAs(thisAlignment); - protein = openSplitFrame(newAlignFrame, thisAlignment); + AlignmentI mapped = openSplitFrame(newAlignFrame, thisAlignment); } } @@ -997,7 +1010,7 @@ public class AlignViewport extends AlignmentViewport */ protected boolean noReferencesTo(AlignedCodonFrame acf) { - AlignFrame[] frames = Desktop.getAlignFrames(); + AlignFrame[] frames = Desktop.getDesktopAlignFrames(); if (frames == null) { return true;