in progress
[jalview.git] / forester / java / src / org / forester / test / Test.java
index 4a8b8d8..d6a70ee 100644 (file)
@@ -87,7 +87,6 @@ import org.forester.protein.Protein;
 import org.forester.sdi.SDI;
 import org.forester.sdi.SDIR;
 import org.forester.sdi.SDIse;
-import org.forester.sdi.TaxonomyAssigner;
 import org.forester.sdi.TestGSDI;
 import org.forester.sequence.BasicSequence;
 import org.forester.sequence.Sequence;
@@ -496,15 +495,6 @@ public final class Test {
             System.out.println( "failed." );
             failed++;
         }
-        System.out.print( "Taxonomy assigner: " );
-        if ( Test.testTaxonomyAssigner() ) {
-            System.out.println( "OK." );
-            succeeded++;
-        }
-        else {
-            System.out.println( "failed." );
-            failed++;
-        }
         System.out.print( "SDIunrooted: " );
         if ( Test.testSDIunrooted() ) {
             System.out.println( "OK." );
@@ -697,9 +687,27 @@ public final class Test {
             System.out.println( "failed." );
             failed++;
         }
-        if ( Mafft.isInstalled() ) {
+        //----
+        String path = "";
+        final String os = ForesterUtil.OS_NAME.toLowerCase();
+        if ( ( os.indexOf( "mac" ) >= 0 ) && ( os.indexOf( "os" ) > 0 ) ) {
+            path = "/usr/local/bin/mafft";
+        }
+        else if ( os.indexOf( "win" ) >= 0 ) {
+            path = "C:\\Program Files\\mafft-win\\mafft.bat";
+        }
+        else {
+            path = "/home/czmasek/bin/mafft";
+        }
+        if ( !Mafft.isInstalled( path ) ) {
+            path = "mafft";
+        }
+        if ( !Mafft.isInstalled( path ) ) {
+            path = "/usr/local/bin/mafft";
+        }
+        if ( Mafft.isInstalled( path ) ) {
             System.out.print( "MAFFT (external program): " );
-            if ( Test.testMafft() ) {
+            if ( Test.testMafft( path ) ) {
                 System.out.println( "OK." );
                 succeeded++;
             }
@@ -707,6 +715,7 @@ public final class Test {
                 System.out.println( "failed [will not count towards failed tests]" );
             }
         }
+        //----
         System.out.print( "Next nodes with collapsed: " );
         if ( Test.testNextNodeWithCollapsing() ) {
             System.out.println( "OK." );
@@ -1924,26 +1933,6 @@ public final class Test {
                 return false;
             }
             final PhylogenyNode n = t3.getNode( "ABC" );
-            PhylogenyNodeIterator it;
-            for( it = n.iterateChildNodesForward(); it.hasNext(); ) {
-                it.next();
-            }
-            for( it.reset(); it.hasNext(); ) {
-                it.next();
-            }
-            final PhylogenyNodeIterator it2 = n.iterateChildNodesForward();
-            if ( !it2.next().getName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !it2.next().getName().equals( "B" ) ) {
-                return false;
-            }
-            if ( !it2.next().getName().equals( "C" ) ) {
-                return false;
-            }
-            if ( it2.hasNext() ) {
-                return false;
-            }
             final Phylogeny t4 = factory.create( "((A:1,B:2,C:10)ABC:1,(D:3,E:5)DE:3,(F,G,H,I))", new NHXParser() )[ 0 ];
             if ( t4.getNumberOfExternalNodes() != 9 ) {
                 return false;
@@ -2143,7 +2132,7 @@ public final class Test {
                 return false;
             }
             t2.setIdentifier( new Identifier( "ecoli" ) );
-            t2.setTaxonomyCode( "other" );
+            t2.setTaxonomyCode( "OTHER" );
             t2.setScientificName( "what" );
             t2.setCommonName( "something" );
             if ( !t1.isEqual( t2 ) ) {
@@ -4726,69 +4715,81 @@ public final class Test {
             if ( PhylogenyMethods.getSpecies( n23 ).length() > 0 ) {
                 return false;
             }
-            if ( NHXParser.LIMIT_SPECIES_NAMES_TO_FIVE_CHARS ) {
-                final PhylogenyNode a = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_ECOLI/1-2",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !a.getName().equals( "n10_ECOLI/1-2" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( a ).equals( "ECOLI" ) ) {
-                    return false;
-                }
-                final PhylogenyNode b = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_ECOLI1/1-2",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !b.getName().equals( "n10_ECOLI1/1-2" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( b ).equals( "" ) ) {
-                    return false;
-                }
-                final PhylogenyNode c = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_RATAF12/1000-2000",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !c.getName().equals( "n10_RATAF12/1000-2000" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( c ).equals( "" ) ) {
-                    return false;
-                }
-                final PhylogenyNode c1 = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_BOVIN_1/1000-2000",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !c1.getName().equals( "n10_BOVIN_1/1000-2000" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( c1 ).equals( "BOVIN" ) ) {
-                    return false;
-                }
-                final PhylogenyNode c2 = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_Bovin_1/1000-2000",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !c2.getName().equals( "n10_Bovin_1/1000-2000" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( c2 ).equals( "" ) ) {
-                    return false;
-                }
-                final PhylogenyNode d = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_RAT1/1-2",
-                                                      PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !d.getName().equals( "n10_RAT1/1-2" ) ) {
-                    return false;
-                }
-                if ( !PhylogenyMethods.getSpecies( d ).equals( "RAT" ) ) {
-                    return false;
-                }
-                final PhylogenyNode e = PhylogenyNode
-                        .createInstanceFromNhxString( "n10_RAT1", PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
-                if ( !e.getName().equals( "n10_RAT1" ) ) {
-                    return false;
-                }
-                if ( !ForesterUtil.isEmpty( PhylogenyMethods.getSpecies( e ) ) ) {
-                    return false;
-                }
+            final PhylogenyNode a = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_ECOLI/1-2", PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !a.getName().equals( "n10_ECOLI/1-2" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( a ).equals( "ECOLI" ) ) {
+                return false;
+            }
+            final PhylogenyNode b = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_ECOLI1/1-2",
+                                                  PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !b.getName().equals( "n10_ECOLI1/1-2" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( b ).equals( "ECOLI" ) ) {
+                return false;
+            }
+            final PhylogenyNode c = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_RATAF12/1000-2000",
+                                                  PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !c.getName().equals( "n10_RATAF12/1000-2000" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( c ).equals( "RATAF" ) ) {
+                return false;
+            }
+            final PhylogenyNode c1 = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_BOVIN_1/1000-2000",
+                                                  PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !c1.getName().equals( "n10_BOVIN_1/1000-2000" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( c1 ).equals( "BOVIN" ) ) {
+                return false;
+            }
+            final PhylogenyNode c2 = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_Bovin_1/1000-2000",
+                                                  PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !c2.getName().equals( "n10_Bovin_1/1000-2000" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( c2 ).equals( "" ) ) {
+                return false;
+            }
+            final PhylogenyNode d = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_RAT1/1-2", PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !d.getName().equals( "n10_RAT1/1-2" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( d ).equals( "RAT" ) ) {
+                return false;
+            }
+            final PhylogenyNode e = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_RAT1", PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+            if ( !e.getName().equals( "n10_RAT1" ) ) {
+                return false;
+            }
+            if ( !ForesterUtil.isEmpty( PhylogenyMethods.getSpecies( e ) ) ) {
+                return false;
+            }
+            final PhylogenyNode e2 = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_RAT1", PhylogenyMethods.TAXONOMY_EXTRACTION.YES );
+            if ( !e2.getName().equals( "n10_RAT1" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( e2 ).equals( "RAT" ) ) {
+                return false;
+            }
+            final PhylogenyNode e3 = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_RAT~", PhylogenyMethods.TAXONOMY_EXTRACTION.YES );
+            if ( !e3.getName().equals( "n10_RAT~" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( e3 ).equals( "RAT" ) ) {
+                return false;
             }
             final PhylogenyNode n11 = PhylogenyNode
                     .createInstanceFromNhxString( "n111111_ECOLI/jdj:0.4",
@@ -4814,6 +4815,22 @@ public final class Test {
             if ( PhylogenyMethods.getSpecies( n12 ).length() > 0 ) {
                 return false;
             }
+            final PhylogenyNode m = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_MOUSEa", PhylogenyMethods.TAXONOMY_EXTRACTION.YES );
+            if ( !m.getName().equals( "n10_MOUSEa" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( m ).equals( "MOUSE" ) ) {
+                return false;
+            }
+            final PhylogenyNode o = PhylogenyNode
+                    .createInstanceFromNhxString( "n10_MOUSE_", PhylogenyMethods.TAXONOMY_EXTRACTION.YES );
+            if ( !o.getName().equals( "n10_MOUSE_" ) ) {
+                return false;
+            }
+            if ( !PhylogenyMethods.getSpecies( o ).equals( "MOUSE" ) ) {
+                return false;
+            }
             final Property tvu1 = n5.getNodeData().getProperties().getProperty( "tag1" );
             final Property tvu3 = n5.getNodeData().getProperties().getProperty( "tag3" );
             if ( !tvu1.getRef().equals( "tag1" ) ) {
@@ -4898,7 +4915,7 @@ public final class Test {
             if ( !n13.getName().equals( "blah_12345/1-2" ) ) {
                 return false;
             }
-            if ( !PhylogenyMethods.getSpecies( n13 ).equals( "" ) ) {
+            if ( !PhylogenyMethods.getSpecies( n13 ).equals( "12345" ) ) {
                 return false;
             }
             final PhylogenyNode n14 = PhylogenyNode
@@ -7489,361 +7506,6 @@ public final class Test {
         return true;
     }
 
-    private static boolean testTaxonomyAssigner() {
-        try {
-            String s0_str = "(((([&&NHX:S=A],[&&NHX:S=B])[&&NHX:S=AB],[&&NHX:S=C])[&&NHX:S=ABC],[&&NHX:S=D])[&&NHX:S=ABCD],[&&NHX:S=E])[&&NHX:S=ABCDE]";
-            String g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A])a,[&&NHX:S=B])b,[&&NHX:S=C])c";
-            Phylogeny s0 = ParserBasedPhylogenyFactory.getInstance().create( s0_str, new NHXParser() )[ 0 ];
-            Phylogeny g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            s0.setRooted( true );
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ABC" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A])a,[&&NHX:S=A])b,[&&NHX:S=A])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=B])a,[&&NHX:S=A])b,[&&NHX:S=A])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=B])a,[&&NHX:S=C])b,[&&NHX:S=A])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABC" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ABC" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=B])a,[&&NHX:S=C])b,[&&NHX:S=D])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "AB" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABC" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=E])a,[&&NHX:S=C])b,[&&NHX:S=D])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=E])a,[&&NHX:S=A])b,[&&NHX:S=A])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCDE" ) ) {
-                return false;
-            }
-            s0_str = "(([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=C],[&&NHX:S=D])[&&NHX:S=ABCD],"
-                    + "([&&NHX:S=E],[&&NHX:S=F],[&&NHX:S=G],[&&NHX:S=H])[&&NHX:S=EFGH],"
-                    + "([&&NHX:S=I],[&&NHX:S=J],[&&NHX:S=K],[&&NHX:S=L])[&&NHX:S=IJKL], "
-                    + "([&&NHX:S=M],[&&NHX:S=N],[&&NHX:S=O],[&&NHX:S=P])[&&NHX:S=MNOP])[&&NHX:S=ROOT]";
-            s0 = ParserBasedPhylogenyFactory.getInstance().create( s0_str, new NHXParser() )[ 0 ];
-            s0.setRooted( true );
-            g0_str = "(([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=E],[&&NHX:S=F],[&&NHX:S=G],[&&NHX:S=H])b,"
-                    + "([&&NHX:S=I],[&&NHX:S=J],[&&NHX:S=K],[&&NHX:S=L])c, "
-                    + "([&&NHX:S=M],[&&NHX:S=N],[&&NHX:S=O],[&&NHX:S=P])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "EFGH" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "IJKL" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "MNOP" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=A],[&&NHX:S=B])a,"
-                    + "([&&NHX:S=E],[&&NHX:S=F],[&&NHX:S=F],[&&NHX:S=F])b,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=I])c, "
-                    + "([&&NHX:S=M],[&&NHX:S=N],[&&NHX:S=O],[&&NHX:S=O])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "EFGH" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "IJKL" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "MNOP" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=A],[&&NHX:S=B])a,"
-                    + "([&&NHX:S=E],[&&NHX:S=F],[&&NHX:S=F],[&&NHX:S=F])b,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])c, "
-                    + "([&&NHX:S=M],[&&NHX:S=N],[&&NHX:S=A],[&&NHX:S=O])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "EFGH" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])a,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])b,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])c, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A])a,[&&NHX:S=A])b,[&&NHX:S=A])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            g0_str = "((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=B])a,[&&NHX:S=I])b,[&&NHX:S=J])c";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(((([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=D],[&&NHX:S=C],[&&NHX:S=B],[&&NHX:S=A])b)ab,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])c)abc, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "ab" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "abc" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=D],[&&NHX:S=D],[&&NHX:S=B],[&&NHX:S=A])b)ab,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])c)abc, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "ab" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "abc" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=D],[&&NHX:S=D],[&&NHX:S=B],[&&NHX:S=A])b)ab,"
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L])c)abc, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=A])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "ab" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "L" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "abc" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            g0_str = "(((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=D],[&&NHX:S=D],[&&NHX:S=B],[&&NHX:S=A])b)ab,"
-                    + "([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A])c)abc, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=A])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( !g0.getNode( "a" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "b" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "ab" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "abc" ).getNodeData().getTaxonomy().getScientificName().equals( "ABCD" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "d" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            if ( !g0.getNode( "r" ).getNodeData().getTaxonomy().getScientificName().equals( "ROOT" ) ) {
-                return false;
-            }
-            s0_str = "(([&&NHX:S=A],[&&NHX:S=B],[&&NHX:S=C],[&&NHX:S=D]),"
-                    + "([&&NHX:S=E],[&&NHX:S=F],[&&NHX:S=G],[&&NHX:S=H]),"
-                    + "([&&NHX:S=I],[&&NHX:S=J],[&&NHX:S=K],[&&NHX:S=L]), "
-                    + "([&&NHX:S=M],[&&NHX:S=N],[&&NHX:S=O],[&&NHX:S=P]))";
-            s0 = ParserBasedPhylogenyFactory.getInstance().create( s0_str, new NHXParser() )[ 0 ];
-            s0.setRooted( true );
-            g0_str = "(((([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=C],[&&NHX:S=D])a,"
-                    + "([&&NHX:S=D],[&&NHX:S=D],[&&NHX:S=B],[&&NHX:S=A])b)ab,"
-                    + "([&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A],[&&NHX:S=A])c)abc, "
-                    + "([&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=L],[&&NHX:S=A])d)r";
-            g0 = ParserBasedPhylogenyFactory.getInstance().create( g0_str, new NHXParser() )[ 0 ];
-            g0.setRooted( true );
-            TaxonomyAssigner.execute( g0, s0 );
-            if ( g0.getNode( "a" ).getNodeData().isHasTaxonomy() ) {
-                return false;
-            }
-            if ( !g0.getNode( "c" ).getNodeData().getTaxonomy().getScientificName().equals( "A" ) ) {
-                return false;
-            }
-        }
-        catch ( final Exception e ) {
-            e.printStackTrace( System.out );
-            return false;
-        }
-        return true;
-    }
-
     private static boolean testUniprotTaxonomySearch() {
         try {
             List<UniProtTaxonomy> results = SequenceDbWsTools.getTaxonomiesFromCommonNameStrict( "starlet sea anemone",
@@ -8301,15 +7963,17 @@ public final class Test {
         return true;
     }
 
-    private static boolean testMafft() {
+    private static boolean testMafft( final String path ) {
         try {
             final List<String> opts = new ArrayList<String>();
             opts.add( "--maxiterate" );
             opts.add( "1000" );
             opts.add( "--localpair" );
             opts.add( "--quiet" );
+        
+         
             Msa msa = null;
-            final MsaInferrer mafft = Mafft.createInstance();
+            final MsaInferrer mafft = Mafft.createInstance( path );
             msa = mafft.infer( new File( PATH_TO_TEST_DATA + "ncbi_sn.fasta" ), opts );
             if ( ( msa == null ) || ( msa.getLength() < 20 ) || ( msa.getNumberOfSequences() != 19 ) ) {
                 return false;