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 void main( final String[] args ) {
22 if ( !testRIO_GSDIR() ) {
23 System.out.println( "testRIO GSDIR failed" );
26 System.out.println( "OK" );
30 public static boolean test() {
31 if ( !testRIO_GSDIR() ) {
37 private static boolean testRIO_GSDIR() {
39 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
40 final NHXParser nhx = new NHXParser();
41 nhx.setReplaceUnderscores( false );
42 nhx.setIgnoreQuotes( true );
43 nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.YES );
44 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
45 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
46 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
47 final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
48 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
49 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
50 species_tree_1.setRooted( true );
51 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
52 //Archaeopteryx.createApplication( species_trees_1 );
53 RIO rio = RIO.executeAnalysis( gene_trees_1,
56 REROOTING.BY_ALGORITHM,
60 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
63 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
66 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
69 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
72 IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
73 // System.out.println( m.toString() );
74 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
77 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
80 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
83 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
86 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
89 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
93 final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
94 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
95 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
96 species_tree_2.setRooted( true );
97 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
98 rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
99 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
100 // System.out.println( m.toString() );
101 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
104 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
107 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
110 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
113 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
116 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
120 catch ( final Exception e ) {
121 e.printStackTrace( System.out );