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