in progress
[jalview.git] / forester / java / src / org / forester / archaeopteryx / MainFrameApplication.java
index 6ad71f3..3b1c0aa 100644 (file)
@@ -93,11 +93,12 @@ import org.forester.phylogeny.PhylogenyMethods;
 import org.forester.phylogeny.PhylogenyNode;\r
 import org.forester.phylogeny.PhylogenyNode.NH_CONVERSION_SUPPORT_VALUE_STYLE;\r
 import org.forester.phylogeny.data.Confidence;\r
+import org.forester.phylogeny.data.Sequence;\r
 import org.forester.phylogeny.data.Taxonomy;\r
 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;\r
 import org.forester.phylogeny.factories.PhylogenyFactory;\r
 import org.forester.phylogeny.iterators.PhylogenyNodeIterator;\r
-import org.forester.sequence.Sequence;\r
+import org.forester.sequence.MolecularSequence;\r
 import org.forester.util.BasicDescriptiveStatistics;\r
 import org.forester.util.BasicTable;\r
 import org.forester.util.BasicTableParser;\r
@@ -123,6 +124,7 @@ public final class MainFrameApplication extends MainFrame {
     private final static SequencesFileFilter seqsfilter                            = new SequencesFileFilter();\r
     private final static DefaultFilter       defaultfilter                         = new DefaultFilter();\r
     private static final long                serialVersionUID                      = -799735726778865234L;\r
+    private static final boolean             PREPROCESS_TREES                      = false;\r
     private final JFileChooser               _values_filechooser;\r
     private final JFileChooser               _sequences_filechooser;\r
     private final JFileChooser               _open_filechooser;\r
@@ -153,7 +155,7 @@ public final class MainFrameApplication extends MainFrame {
     private PhylogeneticInferenceOptions     _phylogenetic_inference_options       = null;\r
     private Msa                              _msa                                  = null;\r
     private File                             _msa_file                             = null;\r
-    private List<Sequence>                   _seqs                                 = null;\r
+    private List<MolecularSequence>          _seqs                                 = null;\r
     private File                             _seqs_file                            = null;\r
     JMenuItem                                _read_values_jmi;\r
     JMenuItem                                _read_seqs_jmi;\r
@@ -589,7 +591,7 @@ public final class MainFrameApplication extends MainFrame {
         return _msa_file;\r
     }\r
 \r
-    public List<Sequence> getSeqs() {\r
+    public List<MolecularSequence> getSeqs() {\r
         return _seqs;\r
     }\r
 \r
@@ -697,11 +699,11 @@ public final class MainFrameApplication extends MainFrame {
         if ( ( file != null ) && !file.isDirectory() && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
             setSeqsFile( null );\r
             setSeqs( null );\r
-            List<Sequence> seqs = null;\r
+            List<MolecularSequence> seqs = null;\r
             try {\r
                 if ( FastaParser.isLikelyFasta( new FileInputStream( file ) ) ) {\r
                     seqs = FastaParser.parse( new FileInputStream( file ) );\r
-                    for( final Sequence seq : seqs ) {\r
+                    for( final MolecularSequence seq : seqs ) {\r
                         System.out.println( SequenceWriter.toFasta( seq, 60 ) );\r
                     }\r
                 }\r
@@ -868,16 +870,16 @@ public final class MainFrameApplication extends MainFrame {
                         .createCurrentFontDesc( getMainPanel().getTreeFontSet() ) );\r
                 setTextForGraphicsSizeChooserMenuItem( _print_size_mi, getOptions() );\r
                 setTextForPdfLineWidthChooserMenuItem( _choose_pdf_width_mi, getOptions() );\r
-                MainFrame.updateOptionsMenuDependingOnPhylogenyType( getMainPanel(),\r
-                                                                     _show_scale_cbmi,\r
-                                                                     _show_branch_length_values_cbmi,\r
-                                                                     _non_lined_up_cladograms_rbmi,\r
-                                                                     _uniform_cladograms_rbmi,\r
-                                                                     _ext_node_dependent_cladogram_rbmi,\r
-                                                                     _label_direction_cbmi );\r
                 MainFrame.setCycleNodeFillMenuItem( _cycle_node_fill_mi, getOptions() );\r
                 MainFrame.setCycleNodeShapeMenuItem( _cycle_node_shape_mi, getOptions() );\r
                 MainFrame.setTextNodeSizeMenuItem( _choose_node_size_mi, getOptions() );\r
+                try {\r
+                    getMainPanel().getControlPanel().setVisibilityOfDomainStrucureCB();\r
+                    getMainPanel().getControlPanel().setVisibilityOfX();\r
+                }\r
+                catch ( final Exception ignore ) {\r
+                    // do nothing, not important.\r
+                }\r
             }\r
         } );\r
         _options_jmenu.add( customizeMenuItemAsLabel( new JMenuItem( DISPLAY_SUBHEADER ), getConfiguration() ) );\r
@@ -893,16 +895,14 @@ public final class MainFrameApplication extends MainFrame {
         _options_jmenu.add( _show_overview_cbmi = new JCheckBoxMenuItem( SHOW_OVERVIEW_LABEL ) );\r
         _options_jmenu.add( _show_scale_cbmi = new JCheckBoxMenuItem( DISPLAY_SCALE_LABEL ) );\r
         _options_jmenu\r
-                .add( _show_branch_length_values_cbmi = new JCheckBoxMenuItem( DISPLAY_BRANCH_LENGTH_VALUES_LABEL ) );\r
-        _options_jmenu\r
                 .add( _show_default_node_shapes_internal_cbmi = new JCheckBoxMenuItem( DISPLAY_NODE_BOXES_LABEL_INT ) );\r
         _options_jmenu\r
                 .add( _show_default_node_shapes_external_cbmi = new JCheckBoxMenuItem( DISPLAY_NODE_BOXES_LABEL_EXT ) );\r
+        _options_jmenu.add( _line_up_renderable_data_cbmi = new JCheckBoxMenuItem( MainFrame.LINE_UP_RENDERABLE_DATA ) );\r
         if ( getConfiguration().doDisplayOption( Configuration.show_domain_architectures ) ) {\r
-            _options_jmenu.add( _show_domain_labels = new JCheckBoxMenuItem( SHOW_DOMAIN_LABELS_LABEL ) );\r
             _options_jmenu.add( _right_line_up_domains_cbmi = new JCheckBoxMenuItem( MainFrame.RIGHT_LINE_UP_DOMAINS ) );\r
+            _options_jmenu.add( _show_domain_labels = new JCheckBoxMenuItem( MainFrame.SHOW_DOMAIN_LABELS_LABEL ) );\r
         }\r
-        _options_jmenu.add( _line_up_renderable_data_cbmi = new JCheckBoxMenuItem( MainFrame.LINE_UP_RENDERABLE_DATA ) );\r
         _options_jmenu.add( _show_annotation_ref_source = new JCheckBoxMenuItem( SHOW_ANN_REF_SOURCE_LABEL ) );\r
         _options_jmenu.add( _show_confidence_stddev_cbmi = new JCheckBoxMenuItem( SHOW_CONF_STDDEV_LABEL ) );\r
         _options_jmenu.add( _color_by_taxonomic_group_cbmi = new JCheckBoxMenuItem( COLOR_BY_TAXONOMIC_GROUP ) );\r
@@ -1001,7 +1001,6 @@ public final class MainFrameApplication extends MainFrame {
                                       getOptions().getCladogramType() == CLADOGRAM_TYPE.TOTAL_NODE_SUM_DEP );\r
         customizeRadioButtonMenuItem( _ext_node_dependent_cladogram_rbmi,\r
                                       getOptions().getCladogramType() == CLADOGRAM_TYPE.EXT_NODE_SUM_DEP );\r
-        customizeCheckBoxMenuItem( _show_branch_length_values_cbmi, getOptions().isShowBranchLengthValues() );\r
         customizeCheckBoxMenuItem( _show_overview_cbmi, getOptions().isShowOverview() );\r
         customizeCheckBoxMenuItem( _label_direction_cbmi,\r
                                    getOptions().getNodeLabelDirection() == NODE_LABEL_DIRECTION.RADIAL );\r
@@ -1263,7 +1262,7 @@ public final class MainFrameApplication extends MainFrame {
         _msa_file = msa_file;\r
     }\r
 \r
-    void setSeqs( final List<Sequence> seqs ) {\r
+    void setSeqs( final List<MolecularSequence> seqs ) {\r
         _seqs = seqs;\r
     }\r
 \r
@@ -1434,7 +1433,7 @@ public final class MainFrameApplication extends MainFrame {
         }\r
         final int result = _sequences_filechooser.showOpenDialog( _contentpane );\r
         final File file = _sequences_filechooser.getSelectedFile();\r
-        List<Sequence> seqs = null;\r
+        List<MolecularSequence> seqs = null;\r
         if ( ( file != null ) && !file.isDirectory() && ( result == JFileChooser.APPROVE_OPTION ) ) {\r
             try {\r
                 if ( FastaParser.isLikelyFasta( new FileInputStream( file ) ) ) {\r
@@ -1483,13 +1482,13 @@ public final class MainFrameApplication extends MainFrame {
             }\r
         }\r
         if ( seqs != null ) {\r
-            for( final Sequence seq : seqs ) {\r
+            for( final MolecularSequence seq : seqs ) {\r
                 System.out.println( seq.getIdentifier() );\r
             }\r
             final Phylogeny phy = getCurrentTreePanel().getPhylogeny();\r
             int total_counter = 0;\r
             int attached_counter = 0;\r
-            for( final Sequence seq : seqs ) {\r
+            for( final MolecularSequence seq : seqs ) {\r
                 ++total_counter;\r
                 final String seq_name = seq.getIdentifier();\r
                 if ( !ForesterUtil.isEmpty( seq_name ) ) {\r
@@ -2214,6 +2213,9 @@ public final class MainFrameApplication extends MainFrame {
                                 }\r
                             }\r
                         }\r
+                        if ( PREPROCESS_TREES ) {\r
+                            preProcessTreesUponReading( phys );\r
+                        }\r
                         AptxUtil.addPhylogeniesToTabs( phys,\r
                                                        file.getName(),\r
                                                        file.getAbsolutePath(),\r
@@ -2237,6 +2239,30 @@ public final class MainFrameApplication extends MainFrame {
         System.gc();\r
     }\r
 \r
+    private void preProcessTreesUponReading( final Phylogeny[] phys ) {\r
+        for( final Phylogeny phy : phys ) {\r
+            if ( ( phy != null ) && !phy.isEmpty() ) {\r
+                for( final PhylogenyNodeIterator it = phy.iteratorPreorder(); it.hasNext(); ) {\r
+                    final PhylogenyNode n = it.next();\r
+                    if ( n.isExternal() ) {\r
+                        if ( n.getNodeData().isHasSequence() ) {\r
+                            final Sequence s = n.getNodeData().getSequence();\r
+                            if ( ForesterUtil.isEmpty( s.getGeneName() ) || s.getGeneName().startsWith( "LOC" ) ) {\r
+                                if ( ( s.getAccession() != null )\r
+                                        && !ForesterUtil.isEmpty( s.getAccession().getValue() ) ) {\r
+                                    s.setGeneName( s.getAccession().getValue() );\r
+                                }\r
+                                else if ( !ForesterUtil.isEmpty( n.getName() ) ) {\r
+                                    s.setGeneName( n.getName() );\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
     private void readSpeciesTreeFromFile() {\r
         Phylogeny t = null;\r
         boolean exception = false;\r