rio
[jalview.git] / forester / java / src / org / forester / rio / TestRIO.java
1
2 package org.forester.rio;
3
4 import org.forester.datastructures.IntMatrix;
5 import org.forester.io.parsers.nhx.NHXParser;
6 import org.forester.phylogeny.Phylogeny;
7 import org.forester.phylogeny.PhylogenyMethods;
8 import org.forester.phylogeny.PhylogenyMethods.PhylogenyNodeField;
9 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
10 import org.forester.phylogeny.factories.PhylogenyFactory;
11 import org.forester.rio.RIO.REROOTING;
12 import org.forester.sdi.SDIutil.ALGORITHM;
13 import org.forester.sdi.SDIutil.TaxonomyComparisonBase;
14 import org.forester.util.ForesterUtil;
15
16 public final class TestRIO {
17
18     private final static String PATH_TO_TEST_DATA = System.getProperty( "user.dir" ) + ForesterUtil.getFileSeparator()
19                                                           + "test_data" + ForesterUtil.getFileSeparator();
20
21     public static boolean test() {
22         if ( !testRIO_GSDIR() ) {
23             return false;
24         }
25         return true;
26     }
27
28     private static boolean testRIO_GSDIR() {
29         try {
30             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
31             final NHXParser nhx = new NHXParser();
32             nhx.setReplaceUnderscores( false );
33             nhx.setIgnoreQuotes( true );
34             nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.YES );
35             final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
36                     + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
37                     + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
38             final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
39             final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
40             final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
41             species_tree_1.setRooted( true );
42             PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
43             //Archaeopteryx.createApplication( species_trees_1 );
44             RIO rio = new RIO( gene_trees_1, species_tree_1, ALGORITHM.GSDIR, REROOTING.BY_ALGORITHM, "", true, false );
45             if ( rio.getAnalyzedGeneTrees().length != 5 ) {
46                 return false;
47             }
48             if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
49                 return false;
50             }
51             if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
52                 return false;
53             }
54             if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
55                 return false;
56             }
57             IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
58             // System.out.println( m.toString() );
59             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
60                 return false;
61             }
62             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
63                 return false;
64             }
65             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
66                 return false;
67             }
68             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
69                 return false;
70             }
71             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
72                 return false;
73             }
74             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
75                 return false;
76             }
77             //
78             final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
79             final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
80             final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
81             species_tree_2.setRooted( true );
82             PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
83             rio = new RIO( gene_trees_2, species_tree_2, ALGORITHM.GSDIR, REROOTING.BY_ALGORITHM, null, true, false );
84             m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
85             // System.out.println( m.toString() );
86             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
87                 return false;
88             }
89             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
90                 return false;
91             }
92             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
93                 return false;
94             }
95             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
96                 return false;
97             }
98             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
99                 return false;
100             }
101             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
102                 return false;
103             }
104         }
105         catch ( final Exception e ) {
106             e.printStackTrace( System.out );
107             return false;
108         }
109         return true;
110     }
111
112     public static void main( final String[] args ) {
113         if ( !testRIO_GSDIR() ) {
114             System.out.println( "testRIO GSDIR failed" );
115         }
116         else {
117             System.out.println( "OK" );
118         }
119     }
120 }