inprogress
[jalview.git] / forester / java / src / org / forester / msa_compactor / Chart.java
index 73f569c..ccb6a0b 100644 (file)
@@ -50,12 +50,21 @@ public final class Chart extends JDialog implements ActionListener {
     private ChartPanel          _chart_panel     = null;
     private final JMenuItem     _m_exit          = new JMenuItem();
     private List<MsaProperties> _msa_props;
+    private final boolean       _show_msa_qual;
+    private final int           _initial_number_of_seqs;
+    private final String        _title;
 
-    private Chart( final List<MsaProperties> msa_props ) {
+    private Chart( final List<MsaProperties> msa_props,
+                   final int initial_number_of_seqs,
+                   final boolean show_msa_qual,
+                   final String title ) {
         super();
         _msa_props = msa_props;
+        _title = title;
+        _initial_number_of_seqs = initial_number_of_seqs;
+        _show_msa_qual = show_msa_qual;
         setTitle( "msa compactor" );
-        setSize( 500, 400 );
+        setSize( 600, 500 );
         setResizable( true );
         final JPanel content_pane = new JPanel();
         content_pane.setLayout( new BorderLayout() );
@@ -95,7 +104,7 @@ public final class Chart extends JDialog implements ActionListener {
             }
             final double[][] seqs_length = new double[ _msa_props.size() ][ 2 ];
             for( int i = 0; i < _msa_props.size(); ++i ) {
-                seqs_length[ i ][ 0 ] = _msa_props.get( i ).getNumberOfSequences();
+                seqs_length[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
                 seqs_length[ i ][ 1 ] = _msa_props.get( i ).getLength();
             }
             model.addData( seqs_length, "Length" );
@@ -103,26 +112,29 @@ public final class Chart extends JDialog implements ActionListener {
             model.setSeriesMarker( "Series " + "Length", false );
             final double[][] seqs_gaps = new double[ _msa_props.size() ][ 2 ];
             for( int i = 0; i < _msa_props.size(); ++i ) {
-                seqs_gaps[ i ][ 0 ] = _msa_props.get( i ).getNumberOfSequences();
-                seqs_gaps[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getGapRatio() * 100 );
+                seqs_gaps[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
+                seqs_gaps[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getGapRatio() * 200 );
             }
-            model.addData( seqs_gaps, "Gaps" );
-            model.setSeriesLine( "Series " + "Gaps", true );
-            model.setSeriesMarker( "Series " + "Gaps", false );
-            final double[][] seqs_identity = new double[ _msa_props.size() ][ 2 ];
-            for( int i = 0; i < _msa_props.size(); ++i ) {
-                seqs_identity[ i ][ 0 ] = _msa_props.get( i ).getNumberOfSequences();
-                seqs_identity[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getAverageIdentityRatio() * 100 );
+            model.addData( seqs_gaps, "Gap ratio" );
+            model.setSeriesLine( "Series " + "Gap ratio", true );
+            model.setSeriesMarker( "Series " + "Gap ratio", false );
+            if ( _show_msa_qual ) {
+                final double[][] seqs_identity = new double[ _msa_props.size() ][ 2 ];
+                for( int i = 0; i < _msa_props.size(); ++i ) {
+                    seqs_identity[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
+                    seqs_identity[ i ][ 1 ] = ForesterUtil
+                            .roundToInt( _msa_props.get( i ).getAverageIdentityRatio() * 200 );
+                }
+                model.addData( seqs_identity, "mean MSA column identity" );
+                model.setSeriesLine( "Series " + "mean MSA column identity", true );
+                model.setSeriesMarker( "Series " + "mean MSA column identity", false );
             }
-            model.addData( seqs_identity, "Id" );
-            model.setSeriesLine( "Series " + "Id", true );
-            model.setSeriesMarker( "Series " + "Id", false );
             final BoxCoordSystem coord = new BoxCoordSystem( model );
-            coord.setUnitFont( coord.getUnitFont().deriveFont( 20.0f ) );
-            coord.setXAxisUnit( "Number of Sequences" );
+            coord.setUnitFont( coord.getUnitFont().deriveFont( 16.0f ) );
+            coord.setXAxisUnit( "Number of Removed Sequences" );
             coord.setPaintGrid( true );
             coord.setYAxisUnit( "MSA Length" );
-            _chart_panel = new ChartPanel( model, "msa compactor" );
+            _chart_panel = new ChartPanel( model, _title );
             _chart_panel.setCoordSystem( coord );
             final MultiScatterChartRenderer renderer = new MultiScatterChartRenderer( coord, model );
             renderer.setAllowBuffer( false );
@@ -131,14 +143,17 @@ public final class Chart extends JDialog implements ActionListener {
         return _chart_panel;
     }
 
-    public static void display( final List<MsaProperties> msa_props ) {
+    public static void display( final List<MsaProperties> msa_props,
+                                final int initial_number_of_seqs,
+                                final boolean show_msa_qual,
+                                final String title ) {
         try {
             UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
         }
         catch ( final Exception e ) {
             e.printStackTrace();
         }
-        final Chart chart = new Chart( msa_props );
+        final Chart chart = new Chart( msa_props, initial_number_of_seqs, show_msa_qual, title );
         chart.setVisible( true );
     }
 
@@ -149,7 +164,7 @@ public final class Chart extends JDialog implements ActionListener {
         catch ( final Exception e ) {
             e.printStackTrace();
         }
-        final Chart temp = new Chart( null );
+        final Chart temp = new Chart( null, 0, true, "title" );
         temp.setVisible( true );
     }
 }