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 = new RIO( gene_trees_1, species_tree_1, ALGORITHM.GSDIR, REROOTING.BY_ALGORITHM, "", true, false );
45 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
48 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
51 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
54 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
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" ) ) {
62 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
65 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
68 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
71 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
74 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
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" ) ) {
89 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
92 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
95 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
98 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
101 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
105 catch ( final Exception e ) {
106 e.printStackTrace( System.out );
112 public static void main( final String[] args ) {
113 if ( !testRIO_GSDIR() ) {
114 System.out.println( "testRIO GSDIR failed" );
117 System.out.println( "OK" );