From 5351b9fbb6e8a15f4c3cc83d8cc58cec4e1c016a Mon Sep 17 00:00:00 2001 From: gmungoc Date: Thu, 23 Apr 2015 09:24:02 +0100 Subject: [PATCH] JAL-1681 create mappings before AlignFrame to ensure cDNA consensus added --- src/jalview/gui/AlignViewport.java | 40 +++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index c59d201..cf12145 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -857,14 +857,6 @@ public class AlignViewport extends AlignmentViewport implements final boolean openInNewWindow = (response == 2); /* - * Create the AlignFrame first (which creates the new alignment's datasets), - * before attempting sequence mapping. - */ - AlignFrame newAlignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - newAlignFrame.setTitle(title); - - /* * Identify protein and dna alignments. Make a copy of this one if opening * in a new split pane. */ @@ -873,6 +865,23 @@ public class AlignViewport extends AlignmentViewport implements 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. + */ + al.setDataset(null); + AlignmentUtils.mapProteinToCdna(protein, cdna); + + /* + * Create the AlignFrame for the added alignment. Note this will include the + * cDNA consensus annotation if it is protein (because the alignment holds + * mappings to nucleotide) + */ + AlignFrame newAlignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + newAlignFrame.setTitle(title); newAlignFrame.statusBar.setText(MessageManager.formatMessage( "label.successfully_loaded_file", new Object[] { title })); @@ -891,13 +900,6 @@ public class AlignViewport extends AlignmentViewport implements AlignFrame.DEFAULT_HEIGHT); } - /* - * 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. - */ - AlignmentUtils.mapProteinToCdna(protein, cdna); - try { newAlignFrame.setMaximum(jalview.bin.Cache.getDefault( @@ -939,7 +941,9 @@ public class AlignViewport extends AlignmentViewport implements AlignmentI complement, Set mappings) { /* - * Open in split pane. DNA sequence above, protein below. + * Make a new frame with a copy of the alignment we are adding to. If this + * is protein, the new frame will have a cDNA consensus annotation row + * added. */ AlignFrame copyMe = new AlignFrame(complement, AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); @@ -957,6 +961,10 @@ public class AlignViewport extends AlignmentViewport implements proteinFrame.setVisible(true); String linkedTitle = MessageManager .getString("label.linked_view_title"); + + /* + * Open in split pane. DNA sequence above, protein below. + */ JInternalFrame splitFrame = new SplitFrame(cdnaFrame, proteinFrame); Desktop.addInternalFrame(splitFrame, linkedTitle, -1, -1); -- 1.7.10.2