Subject: forester needs openchart library
Description: biojava makes use of a limited set of forester
 As openchart is not available in Debian, remove openchart related calls
 to make forester compilation OK in biojava context
Author: Olivier Sallou <osallou@debian.org>
Last-Updated: 2016-12-09
Forwarded: not-needed
--- a/forester/org/forester/msa_compactor/Chart.java
+++ b/forester/org/forester/msa_compactor/Chart.java
@@ -40,47 +40,22 @@
 
 import org.forester.util.ForesterUtil;
 
-import com.approximatrix.charting.coordsystem.BoxCoordSystem;
-import com.approximatrix.charting.model.MultiScatterDataModel;
-import com.approximatrix.charting.render.MultiScatterChartRenderer;
-import com.approximatrix.charting.swing.ChartPanel;
 
 public final class Chart extends JDialog implements ActionListener {
 
     final private static NumberFormat NF_1             = new DecimalFormat( "0.##" );
     private static final long         serialVersionUID = -5292420246132943515L;
-    private ChartPanel                _chart_panel     = null;
-    private final int                 _initial_number_of_seqs;
+    private final int                 _initial_number_of_seqs=0;
     private final JMenuItem           _m_exit          = new JMenuItem();
-    private final List<MsaProperties> _msa_props;
-    private final boolean             _show_msa_qual;
-    private final String              _title;
+    private final List<MsaProperties> _msa_props=null;
+    private final boolean             _show_msa_qual=false;
+    private final String              _title=null;
 
     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( 600, 500 );
-        setResizable( true );
-        final JPanel content_pane = new JPanel();
-        content_pane.setLayout( new BorderLayout() );
-        setContentPane( content_pane );
-        final JMenuBar menu_bar = new JMenuBar();
-        final JMenu file_menu = new JMenu();
-        file_menu.setText( "File" );
-        _m_exit.setText( "Exit" );
-        file_menu.add( _m_exit );
-        menu_bar.add( file_menu );
-        setJMenuBar( menu_bar );
-        setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
-        _m_exit.addActionListener( this );
-        content_pane.add( obtainChartPanel(), BorderLayout.CENTER );
     }
 
     @Override
@@ -90,150 +65,4 @@
         }
     }
 
-    private ChartPanel obtainChartPanel() {
-        if ( _chart_panel == null ) {
-            final MultiScatterDataModel model = new MultiScatterDataModel();
-            final double[][] seqs_length = new double[ _msa_props.size() ][ 2 ];
-            int max_length = -1;
-            int min_length = Integer.MAX_VALUE;
-            double max_gap_ratio = -1;
-            double min_gap_ratio = Double.MAX_VALUE;
-            double max_avg_gap_count = -1;
-            double min_avg_gap_count = Double.MAX_VALUE;
-            for( int i = 0; i < _msa_props.size(); ++i ) {
-                seqs_length[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
-                //
-                final int length = _msa_props.get( i ).getLength();
-                seqs_length[ i ][ 1 ] = length;
-                if ( length > max_length ) {
-                    max_length = length;
-                }
-                if ( length < min_length ) {
-                    min_length = length;
-                }
-                //
-                final double gap_ratio = _msa_props.get( i ).getGapRatio();
-                if ( gap_ratio > max_gap_ratio ) {
-                    max_gap_ratio = gap_ratio;
-                }
-                if ( gap_ratio < min_gap_ratio ) {
-                    min_gap_ratio = gap_ratio;
-                }
-                //
-                final double avg_gap_count = _msa_props.get( i ).getAvgNumberOfGaps();
-                if ( avg_gap_count > max_avg_gap_count ) {
-                    max_avg_gap_count = avg_gap_count;
-                }
-                if ( avg_gap_count < min_avg_gap_count ) {
-                    min_avg_gap_count = avg_gap_count;
-                }
-            }
-            model.addData( seqs_length, "Length" + " (" + minMaxToString( min_length, max_length ) + ")" );
-            model.setSeriesLine( "Series " + "Length", true );
-            model.setSeriesMarker( "Series " + "Length", false );
-            final double[][] seqs_gaps = new double[ _msa_props.size() ][ 2 ];
-            double max_ent7 = -1;
-            double max_ent21 = -1;
-            double min_ent7 = Double.MAX_VALUE;
-            double min_ent21 = Double.MAX_VALUE;
-            if ( _show_msa_qual ) {
-                for( int i = 0; i < _msa_props.size(); ++i ) {
-                    final double ent7 = _msa_props.get( i ).getEntropy7();
-                    if ( ent7 > max_ent7 ) {
-                        max_ent7 = ent7;
-                    }
-                    if ( ent7 < max_ent7 ) {
-                        min_ent7 = ent7;
-                    }
-                    final double ent21 = _msa_props.get( i ).getEntropy21();
-                    if ( ent21 > min_ent21 ) {
-                        max_ent21 = ent21;
-                    }
-                    if ( ent21 < min_ent21 ) {
-                        min_ent21 = ent21;
-                    }
-                }
-            }
-            final double gap_ratio_factor = ( max_length / 2.0 ) / max_gap_ratio;
-            final double avg_gaps_counts_factor = ( max_length / 2.0 ) / max_avg_gap_count;
-            final double ent7_factor = ( max_length / 2.0 ) / max_ent7;
-            final double ent21_factor = ( max_length / 2.0 ) / max_ent21;
-            for( int i = 0; i < _msa_props.size(); ++i ) {
-                seqs_gaps[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
-                seqs_gaps[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getGapRatio() * gap_ratio_factor );
-            }
-            model.addData( seqs_gaps, "Gap Ratio" + " (" + minMaxToString( min_gap_ratio, max_gap_ratio ) + ")" );
-            model.setSeriesLine( "Series " + "Gap Ratio", true );
-            model.setSeriesMarker( "Series " + "Gap Ratio", false );
-            final double[][] gap_counts = new double[ _msa_props.size() ][ 2 ];
-            for( int i = 0; i < _msa_props.size(); ++i ) {
-                gap_counts[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
-                gap_counts[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getAvgNumberOfGaps()
-                                                                * avg_gaps_counts_factor );
-            }
-            model.addData( gap_counts, "Mean Gap Count" + " (" + minMaxToString( min_avg_gap_count, max_avg_gap_count )
-                    + ")" );
-            model.setSeriesLine( "Series " + "Mean Gap Count", true );
-            model.setSeriesMarker( "Series " + "Mean Gap Count", false );
-            if ( _show_msa_qual ) {
-                final double[][] entropy7 = new double[ _msa_props.size() ][ 2 ];
-                for( int i = 0; i < _msa_props.size(); ++i ) {
-                    entropy7[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
-                    entropy7[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getEntropy7() * ent7_factor );
-                }
-                model.addData( entropy7, "Entropy norm 7" + " (" + minMaxToString( min_ent7, max_ent7 ) + ")" );
-                model.setSeriesLine( "Series " + "Entropy norm 7", true );
-                model.setSeriesMarker( "Series " + "Entropy norm 7", false );
-                //
-                final double[][] entropy21 = new double[ _msa_props.size() ][ 2 ];
-                for( int i = 0; i < _msa_props.size(); ++i ) {
-                    entropy21[ i ][ 0 ] = _initial_number_of_seqs - _msa_props.get( i ).getNumberOfSequences();
-                    entropy21[ i ][ 1 ] = ForesterUtil.roundToInt( _msa_props.get( i ).getEntropy21() * ent21_factor );
-                }
-                model.addData( entropy21, "Entropy norm 21" + " (" + minMaxToString( min_ent21, max_ent21 ) + ")" );
-                model.setSeriesLine( "Series " + "Entropy norm 21", true );
-                model.setSeriesMarker( "Series " + "Entropy norm 21", false );
-            }
-            final BoxCoordSystem coord = new BoxCoordSystem( model );
-            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, _title );
-            _chart_panel.setCoordSystem( coord );
-            final MultiScatterChartRenderer renderer = new MultiScatterChartRenderer( coord, model );
-            renderer.setAllowBuffer( false );
-            _chart_panel.addChartRenderer( renderer, 0 );
-        }
-        return _chart_panel;
-    }
-
-    private final static String minMaxToString( final double min, final double max ) {
-        return NF_1.format( min ) + "-" + NF_1.format( max );
-    }
-
-    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, initial_number_of_seqs, show_msa_qual, title );
-        chart.setVisible( true );
-    }
-
-    public static void main( final String[] args ) {
-        try {
-            UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
-        }
-        catch ( final Exception e ) {
-            e.printStackTrace();
-        }
-        final Chart temp = new Chart( null, 0, true, "title" );
-        temp.setVisible( true );
-    }
 }
--- a/forester/org/forester/application/msa_compactor.java
+++ b/forester/org/forester/application/msa_compactor.java
@@ -39,7 +39,6 @@
 import org.forester.msa.Msa.MSA_FORMAT;
 import org.forester.msa.MsaInferrer;
 import org.forester.msa.MsaMethods;
-import org.forester.msa_compactor.Chart;
 import org.forester.msa_compactor.MsaCompactor;
 import org.forester.msa_compactor.MsaProperties;
 import org.forester.util.CommandLineArguments;
@@ -396,7 +395,7 @@
                 else {
                     msa_props = mc.chart( step, realign, normalize_for_effective_seq_length );
                 }
-                Chart.display( msa_props, initial_number_of_seqs, report_entropy, in.getName() );
+                //Chart.display( msa_props, initial_number_of_seqs, report_entropy, in.getName() );
                 System.out.println();
                 System.out.println( "Final MSA properties" );
                 printMsaInfo( msa,  MsaMethods.calculateEffectiveLengthStatistics( msa ));
