in progress...
[jalview.git] / forester / java / src / org / forester / clade_analysis / CladeAnalysisTest.java
index d91e36e..35c08b5 100644 (file)
@@ -2,7 +2,6 @@
 package org.forester.clade_analysis;
 
 import java.io.File;
-import java.util.List;
 
 import org.forester.io.parsers.PhylogenyParser;
 import org.forester.io.parsers.util.ParserUtils;
@@ -30,9 +29,24 @@ public class CladeAnalysisTest {
             System.out.println( "Clade analysis 3 failed" );
             failed = true;
         }
+        if ( !testCladeAnalysis4() ) {
+            System.out.println( "Clade analysis 4 failed" );
+            failed = true;
+        }
+        if ( !testCladeAnalysis5() ) {
+            System.out.println( "Clade analysis 5 failed" );
+            failed = true;
+        }
+        if ( !testCladeAnalysis6() ) {
+            System.out.println( "Clade analysis 6 failed" );
+            failed = true;
+        }
         if ( !failed ) {
             System.out.println( "OK" );
         }
+        else {
+            System.out.println( "NOT OK" );
+        }
     }
 
     public static boolean test() {
@@ -45,6 +59,15 @@ public class CladeAnalysisTest {
         if ( !testCladeAnalysis3() ) {
             return false;
         }
+        if ( !testCladeAnalysis4() ) {
+            return false;
+        }
+        if ( !testCladeAnalysis5() ) {
+            return false;
+        }
+        if ( !testCladeAnalysis6() ) {
+            return false;
+        }
         return true;
     }
 
@@ -54,7 +77,7 @@ public class CladeAnalysisTest {
             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
-            Result res = Analysis.execute( p1, "A.1.1.1", "." );
+            ResultSingle res = AnalysisSingle.execute( p1, "A.1.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
                 return false;
             }
@@ -73,7 +96,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.1.1.2", "." );
+            res = AnalysisSingle.execute( p1, "A.1.1.2", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
                 return false;
             }
@@ -92,7 +115,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.1.1.3", "." );
+            res = AnalysisSingle.execute( p1, "A.1.1.3", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
                 return false;
             }
@@ -111,7 +134,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.1.1.4", "." );
+            res = AnalysisSingle.execute( p1, "A.1.1.4", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.1.1" ) ) {
                 return false;
             }
@@ -130,7 +153,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.1.2.1", "." );
+            res = AnalysisSingle.execute( p1, "A.1.2.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -149,7 +172,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.2.1.1", "." );
+            res = AnalysisSingle.execute( p1, "A.2.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -168,7 +191,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.2.1.2", "." );
+            res = AnalysisSingle.execute( p1, "A.2.1.2", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -187,7 +210,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.3.1.1", "." );
+            res = AnalysisSingle.execute( p1, "A.3.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
                 return false;
             }
@@ -206,7 +229,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.3.1.2", "." );
+            res = AnalysisSingle.execute( p1, "A.3.1.2", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
                 return false;
             }
@@ -225,7 +248,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.3.2.1", "." );
+            res = AnalysisSingle.execute( p1, "A.3.2.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
                 return false;
             }
@@ -244,7 +267,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.3.3.1", "." );
+            res = AnalysisSingle.execute( p1, "A.3.3.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -263,7 +286,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.4.1.1", "." );
+            res = AnalysisSingle.execute( p1, "A.4.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
                 return false;
             }
@@ -282,7 +305,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.4.1.1.a", "." );
+            res = AnalysisSingle.execute( p1, "A.4.1.1.a", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
                 return false;
             }
@@ -301,9 +324,9 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.4.1.2", "." );
-            res = Analysis.execute( p1, "A.4.1.2.a", "." );
-            res = Analysis.execute( p1, "A.5.1.1", "." );
+            res = AnalysisSingle.execute( p1, "A.4.1.2", "." );
+            res = AnalysisSingle.execute( p1, "A.4.1.2.a", "." );
+            res = AnalysisSingle.execute( p1, "A.5.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -322,7 +345,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.5.1.2", "." );
+            res = AnalysisSingle.execute( p1, "A.5.1.2", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -341,7 +364,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "A.6.3.12", "." );
+            res = AnalysisSingle.execute( p1, "A.6.3.12", "." );
             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
                 return false;
             }
@@ -360,7 +383,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "B.1.1.1", "." );
+            res = AnalysisSingle.execute( p1, "B.1.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
                 return false;
             }
@@ -379,7 +402,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 2 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "B.1.234.3", "." );
+            res = AnalysisSingle.execute( p1, "B.1.234.3", "." );
             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
                 return false;
             }
@@ -398,7 +421,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 2 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "C.1.1.1", "." );
+            res = AnalysisSingle.execute( p1, "C.1.1.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
                 return false;
             }
@@ -417,7 +440,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "C.1.1.2", "." );
+            res = AnalysisSingle.execute( p1, "C.1.1.2", "." );
             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
                 return false;
             }
@@ -436,7 +459,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "C.1.2.1", "." );
+            res = AnalysisSingle.execute( p1, "C.1.2.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
                 return false;
             }
@@ -455,7 +478,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "C.2.1", "." );
+            res = AnalysisSingle.execute( p1, "C.2.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
                 return false;
             }
@@ -474,7 +497,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "C.3", "." );
+            res = AnalysisSingle.execute( p1, "C.3", "." );
             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
                 return false;
             }
@@ -493,7 +516,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 1 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "QE.1.1.1.2.1", "." );
+            res = AnalysisSingle.execute( p1, "QE.1.1.1.2.1", "." );
             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
                 return false;
             }
@@ -526,7 +549,7 @@ public class CladeAnalysisTest {
             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
-            Result res = Analysis.execute( p1, "6_DQ278891", null );
+            ResultSingle res = AnalysisSingle.execute( p1, "6_DQ278891", null );
             if ( !res.getGreatestCommonPrefix().equals( "6_" ) ) {
                 return false;
             }
@@ -545,7 +568,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "6xa_EU408330", null );
+            res = AnalysisSingle.execute( p1, "6xa_EU408330", null );
             if ( !res.getGreatestCommonPrefix().equals( "6xa_EU40833" ) ) {
                 return false;
             }
@@ -564,7 +587,7 @@ public class CladeAnalysisTest {
             if ( res.getWarnings().size() != 0 ) {
                 return false;
             }
-            res = Analysis.execute( p1, "7a_EF108306", null );
+            res = AnalysisSingle.execute( p1, "7a_EF108306", null );
             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
                 return false;
             }
@@ -590,55 +613,167 @@ public class CladeAnalysisTest {
         }
         return true;
     }
-    
+
     private static boolean testCladeAnalysis3() {
         try {
-          final Result2 res1 = new Result2();
-          res1.addGreatestCommonPrefix( "A.1.1", 0.3 );
-          res1.addGreatestCommonPrefix( "A.1.2", 0.3 );
-          res1.addGreatestCommonPrefix( "A.1.3", 0.3 );
-          res1.addGreatestCommonPrefix( "B.1", 0.1 );
-          
-          List<String> x = ForesterUtil.spliIntoPrefixes( "A.1.2.3.4", "." );
-         // System.out.println( x );
-          x =ForesterUtil.spliIntoPrefixes( "A", "." );
-         // System.out.println( x );
-          
-          
-          res1.analyzeGreatestCommonPrefixes( "." );
-          
-          final Result2 res2 = new Result2();
-          res2.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
-          res2.addGreatestCommonPrefix( "A.1", 0.7 );
-          res2.addGreatestCommonPrefix( "A.1.2", 0.1 );
-          res2.addGreatestCommonPrefix( "B.1", 0.1 );
-          res2.analyzeGreatestCommonPrefixes( "." );
-          
-          final Result2 res3 = new Result2();
-          res3.addGreatestCommonPrefix( "A.1.1.1", 0.7 );
-          res3.addGreatestCommonPrefix( "A.1", 0.1 );
-          res3.addGreatestCommonPrefix( "A.1.2", 0.1 );
-          res3.addGreatestCommonPrefix( "B.1", 0.1 );
-          res3.analyzeGreatestCommonPrefixes( "." );
-          
-          
-          final Result2 res4 = new Result2();
-          res4.addGreatestCommonPrefix( "A.1.1.1.1", 0.35);
-          res4.addGreatestCommonPrefix( "A.1.1.1.2", 0.35 );
-          res4.addGreatestCommonPrefix( "A.1", 0.1 );
-          res4.addGreatestCommonPrefix( "A.1.2", 0.1 );
-          res4.addGreatestCommonPrefix( "B.1", 0.1 );
-          res4.analyzeGreatestCommonPrefixes( "." );
-          
-          final Result2 res5 = new Result2();
-          res5.addGreatestCommonPrefix( "A.1.1.1.1", 0.2);
-          res5.addGreatestCommonPrefix( "C.2.3", 0.2 );
-          res5.addGreatestCommonPrefix( "A.1.5", 0.1 );
-          res5.addGreatestCommonPrefix( "A.3.1.4", 0.2 );
-          res5.addGreatestCommonPrefix( "B.1.1", 0.2 );
-          res5.addGreatestCommonPrefix( "B.1.2", 0.09 );
-          res5.addGreatestCommonPrefix( "D.1.1.1.1", 0.01 );
-          res5.analyzeGreatestCommonPrefixes( "." );
+            final ResultMulti res1 = new ResultMulti();
+            res1.addGreatestCommonPrefix( "A.1.1", 0.3 );
+            res1.addGreatestCommonPrefix( "A.1.2", 0.3 );
+            res1.addGreatestCommonPrefix( "A.1.3", 0.3 );
+            res1.addGreatestCommonPrefix( "B.1", 0.1 );
+            res1.analyze( 0.5 );
+            System.out.print( res1.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res2 = new ResultMulti( "." );
+            res2.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
+            res2.addGreatestCommonPrefix( "A.1", 0.7 );
+            res2.addGreatestCommonPrefix( "A.1.2", 0.1 );
+            res2.addGreatestCommonPrefix( "B.1", 0.1 );
+            res2.analyze( 0.3 );
+            System.out.print( res2.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res3 = new ResultMulti( "." );
+            res3.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
+            res3.addGreatestCommonPrefix( "A.1.1.1.1", 0.6 );
+            res3.addGreatestCommonPrefix( "A.1", 0.1 );
+            res3.addGreatestCommonPrefix( "A.1.2", 0.1 );
+            res3.addGreatestCommonPrefix( "B.1", 0.1 );
+            res3.analyze( 0.3 );
+            System.out.print( res3.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res33 = new ResultMulti( "." );
+            res33.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
+            res33.addGreatestCommonPrefix( "A.1.1.1.1", 0.3 );
+            res33.addGreatestCommonPrefix( "A.1", 0.1 );
+            res33.addGreatestCommonPrefix( "A.1.2", 0.1 );
+            res33.addGreatestCommonPrefix( "B.1", 0.1 );
+            res33.addGreatestCommonPrefix( "B.1.1.1", 0.3 );
+            res33.analyze( 0.3 );
+            System.out.print( res33.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res4 = new ResultMulti();
+            res4.addGreatestCommonPrefix( "A.1.1.1.1", 0.35 );
+            res4.addGreatestCommonPrefix( "A.1.1.1.2", 0.35 );
+            res4.addGreatestCommonPrefix( "A.1", 0.1 );
+            res4.addGreatestCommonPrefix( "A.1.2", 0.1 );
+            res4.addGreatestCommonPrefix( "B.1", 0.1 );
+            res4.analyze( 0.3 );
+            System.out.print( res4.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res5 = new ResultMulti();
+            res5.addGreatestCommonPrefix( "A.1.1.1.1", 0.2 );
+            res5.addGreatestCommonPrefix( "C.2.3", 0.2 );
+            res5.addGreatestCommonPrefix( "A.1.5", 0.1 );
+            res5.addGreatestCommonPrefix( "A.3.1.4", 0.2 );
+            res5.addGreatestCommonPrefix( "B.1.1", 0.2 );
+            res5.addGreatestCommonPrefix( "B.1.2", 0.09 );
+            res5.addGreatestCommonPrefix( "D.1.1.1.1", 0.01 );
+            res5.analyze( 0.3 );
+            System.out.print( res5.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res6 = new ResultMulti();
+            res6.addGreatestCommonPrefix( "A.1.1.1", 0.05 );
+            res6.addGreatestCommonPrefix( "A.1.1.1.1", 0.65 );
+            res6.addGreatestCommonPrefix( "A.1", 0.1 );
+            res6.addGreatestCommonPrefix( "A.1.2", 0.1 );
+            res6.addGreatestCommonPrefix( "B.1", 0.1 );
+            res6.analyze( 0.3 );
+            System.out.print( res6.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res7 = new ResultMulti();
+            res7.addGreatestCommonPrefix( "A.1.1.1", 0.07 );
+            res7.addGreatestCommonPrefix( "A.1.1.1.1", 0.9 );
+            res7.addGreatestCommonPrefix( "A.1", 0.01 );
+            res7.addGreatestCommonPrefix( "A.1.2", 0.01 );
+            res7.addGreatestCommonPrefix( "B.1", 0.01 );
+            res7.analyze( 0.3 );
+            System.out.print( res7.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res8 = new ResultMulti( "_/_" );
+            res8.addGreatestCommonPrefix( "AA_/_abc_/_def", 0.07 );
+            res8.addGreatestCommonPrefix( "AA_/_abc_/_sfc", 0.9 );
+            res8.addGreatestCommonPrefix( "AA_/_abc_/_xcd", 0.01 );
+            res8.addGreatestCommonPrefix( "AA_/_abc_/_memr", 0.01 );
+            res8.addGreatestCommonPrefix( "AA_/_abc_/_fkem_/_odem", 0.01 );
+            res8.analyze( 0.3 );
+            System.out.print( res8.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+            final ResultMulti res9 = new ResultMulti( "_/_" );
+            res9.addGreatestCommonPrefix( "AA_/_abc_/_def", 0.07 );
+            res9.addGreatestCommonPrefix( "AA_/_abc_/_sfc", 0.6 );
+            res9.addGreatestCommonPrefix( "AA_/_abc_/_xcd", 0.01 );
+            res9.addGreatestCommonPrefix( "AA_/_abc_/_memr", 0.01 );
+            res9.addGreatestCommonPrefix( "AA_/_abc_/_fkem_/_odem", 0.01 );
+            res9.addGreatestCommonPrefix( "BB_/_fke_/_dme_/_nx2", 0.3 );
+            res9.analyze( 0.3 );
+            System.out.print( res9.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+        }
+        catch ( final Exception e ) {
+            e.printStackTrace( System.out );
+            return false;
+        }
+        return true;
+    }
+
+    private static boolean testCladeAnalysis4() {
+        try {
+            final File intreefile1 = new File( PATH_TO_TEST_DATA + "pplacer_2.tre" );
+            final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
+            final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
+            final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
+            ResultMulti res2 = AnalysisMulti.execute( p1 );
+            res2.analyze( 0.3 );
+            System.out.print( res2.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+        }
+        catch ( final Exception e ) {
+            e.printStackTrace( System.out );
+            return false;
+        }
+        return true;
+    }
+
+    private static boolean testCladeAnalysis5() {
+        try {
+            final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_3.xml" );
+            final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
+            final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
+            final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
+            ResultMulti res = AnalysisMulti.execute( p1 );
+            res.analyze( 0.3 );
+            System.out.print( res.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
+        }
+        catch ( final Exception e ) {
+            e.printStackTrace( System.out );
+            return false;
+        }
+        return true;
+    }
+
+    private static boolean testCladeAnalysis6() {
+        try {
+            final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_4.xml" );
+            final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
+            final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
+            final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
+            ResultMulti res = AnalysisMulti.execute( p1, 0.45 );
+            System.out.print( res.toString() );
+            System.out.println( "------------------------- " );
+            System.out.println();
         }
         catch ( final Exception e ) {
             e.printStackTrace( System.out );