2 package org.forester.rio;
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;
16 public final class TestRIO {
18 private final static String PATH_TO_TEST_DATA = System.getProperty( "user.dir" ) + ForesterUtil.getFileSeparator()
19 + "test_data" + ForesterUtil.getFileSeparator();
21 public static boolean test() {
22 if ( !testRIO_GSDIR() ) {
28 private static boolean testRIO_GSDIR() {
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 = RIO.executeAnalysis( gene_trees_1,
47 REROOTING.BY_ALGORITHM,
51 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
54 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
57 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
60 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
63 IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
64 // System.out.println( m.toString() );
65 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
68 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
71 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
74 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
77 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
80 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
84 final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
85 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
86 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
87 species_tree_2.setRooted( true );
88 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
89 rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
90 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
91 // System.out.println( m.toString() );
92 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
95 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
98 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
101 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
104 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
107 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
111 catch ( final Exception e ) {
112 e.printStackTrace( System.out );
118 public static void main( final String[] args ) {
119 if ( !testRIO_GSDIR() ) {
120 System.out.println( "testRIO GSDIR failed" );
123 System.out.println( "OK" );