2 package org.forester.rio;
6 import org.forester.datastructures.IntMatrix;
7 import org.forester.io.parsers.nhx.NHXParser;
8 import org.forester.phylogeny.Phylogeny;
9 import org.forester.phylogeny.PhylogenyMethods;
10 import org.forester.phylogeny.PhylogenyMethods.PhylogenyNodeField;
11 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
12 import org.forester.phylogeny.factories.PhylogenyFactory;
13 import org.forester.rio.RIO.REROOTING;
14 import org.forester.sdi.SDIutil.ALGORITHM;
15 import org.forester.sdi.SDIutil.TaxonomyComparisonBase;
16 import org.forester.util.ForesterUtil;
18 public final class TestRIO {
20 private final static String PATH_TO_TEST_DATA = System.getProperty( "user.dir" ) + ForesterUtil.getFileSeparator()
21 + "test_data" + ForesterUtil.getFileSeparator();
23 public static void main( final String[] args ) {
24 if ( !testRIO_GSDIR() ) {
25 System.out.println( "testRIO GSDIR failed" );
27 if ( !testRIO_GSDIR_Iterating() ) {
28 System.out.println( "testRIO GSDIR iterating failed" );
31 System.out.println( "OK" );
35 public static boolean test() {
36 if ( !testRIO_GSDIR() ) {
39 if ( !testRIO_GSDIR_Iterating() ) {
45 private static boolean testRIO_GSDIR_Iterating() {
47 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
48 final NHXParser nhx = new NHXParser();
49 nhx.setReplaceUnderscores( false );
50 nhx.setIgnoreQuotes( true );
51 nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.AGRESSIVE );
52 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
53 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
54 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
55 nhx.setSource( gene_trees_1_str );
56 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
57 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
58 species_tree_1.setRooted( true );
59 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
60 //Archaeopteryx.createApplication( species_trees_1 );
61 RIO rio = RIO.executeAnalysis( nhx,
64 REROOTING.BY_ALGORITHM,
68 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
71 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
74 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
77 IntMatrix m = rio.getOrthologTable();
78 //System.out.println( m.toString() );
79 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
82 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
85 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
88 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
91 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
94 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
98 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
99 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
100 species_tree_2.setRooted( true );
101 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
102 rio = RIO.executeAnalysis( nhx, species_tree_2, ALGORITHM.GSDIR, REROOTING.BY_ALGORITHM, "", true, false );
103 m = rio.getOrthologTable();
104 // System.out.println( m.toString() );
105 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
108 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
111 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
114 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
117 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
120 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
124 catch ( final Exception e ) {
125 e.printStackTrace( System.out );
131 private static boolean testRIO_GSDIR() {
133 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
134 final NHXParser nhx = new NHXParser();
135 nhx.setReplaceUnderscores( false );
136 nhx.setIgnoreQuotes( true );
137 nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.AGRESSIVE );
139 final String gene_trees_00_str = "(MOUSE,RAT);(MOUSE,RAT);(MOUSE,RAT);(RAT,MOUSE);";
140 final Phylogeny[] gene_trees_00 = factory.create( gene_trees_00_str, nhx );
141 final String species_trees_00_str = "(MOUSE,RAT);";
142 final Phylogeny species_tree_00 = factory.create( species_trees_00_str, new NHXParser() )[ 0 ];
143 species_tree_00.setRooted( true );
144 PhylogenyMethods.transferNodeNameToField( species_tree_00, PhylogenyNodeField.TAXONOMY_CODE, true );
145 RIO rio = RIO.executeAnalysis( gene_trees_00,
148 REROOTING.BY_ALGORITHM,
152 if ( rio.getAnalyzedGeneTrees().length != 4 ) {
155 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
158 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
161 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
164 IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
165 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE,4,4" ) ) {
166 System.out.println( m.toString() );
169 if ( !m.getRowAsString( 1, ',' ).equals( "RAT,4,4" ) ) {
170 System.out.println( m.toString() );
174 final String gene_trees_000_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE]);(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
175 final Phylogeny[] gene_trees_000 = factory.create( gene_trees_000_str, nhx );
176 final String species_trees_000_str = "[&&NHX:S=MOUSE];";
177 final Phylogeny species_tree_000 = factory.create( species_trees_000_str, new NHXParser() )[ 0 ];
178 species_tree_000.setRooted( true );
179 rio = RIO.executeAnalysis( gene_trees_000,
182 REROOTING.BY_ALGORITHM,
186 if ( rio.getAnalyzedGeneTrees().length != 2 ) {
189 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
192 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
195 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
198 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
199 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,2,0" ) ) {
200 System.out.println( m.toString() );
203 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,2" ) ) {
204 System.out.println( m.toString() );
209 final String gene_trees_0000_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE]);(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE]);(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
210 final Phylogeny[] gene_trees_0000 = factory.create( gene_trees_0000_str, nhx );
211 final String species_trees_0000_str = "([&&NHX:S=MOUSE]);";
212 final Phylogeny species_tree_0000 = factory.create( species_trees_0000_str, new NHXParser() )[ 0 ];
213 species_tree_0000.setRooted( true );
214 rio = RIO.executeAnalysis( gene_trees_0000,
217 REROOTING.BY_ALGORITHM,
221 if ( rio.getAnalyzedGeneTrees().length != 3 ) {
224 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
227 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
230 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
233 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
234 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,3,0" ) ) {
235 System.out.println( m.toString() );
238 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,3" ) ) {
239 System.out.println( m.toString() );
243 final String gene_trees_x_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
244 final Phylogeny[] gene_trees_x = factory.create( gene_trees_x_str, nhx );
245 final String species_trees_x_str = "[&&NHX:S=MOUSE];";
246 final Phylogeny species_tree_x = factory.create( species_trees_x_str, new NHXParser() )[ 0 ];
247 species_tree_x.setRooted( true );
248 rio = RIO.executeAnalysis( gene_trees_x,
251 REROOTING.BY_ALGORITHM,
255 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
258 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
261 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
264 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
267 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
268 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,0" ) ) {
269 System.out.println( m.toString() );
272 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,1" ) ) {
273 System.out.println( m.toString() );
277 final String gene_trees_xx_str = "(MOUSE1[&&NHX:S=MOUSE],RAT1[&&NHX:S=RAT])";
278 final Phylogeny[] gene_trees_xx = factory.create( gene_trees_xx_str, nhx );
279 final String species_trees_xx_str = "([&&NHX:S=MOUSE],[&&NHX:S=RAT]);";
280 final Phylogeny species_tree_xx = factory.create( species_trees_xx_str, new NHXParser() )[ 0 ];
281 species_tree_xx.setRooted( true );
282 rio = RIO.executeAnalysis( gene_trees_xx,
285 REROOTING.BY_ALGORITHM,
289 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
292 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
295 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
298 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
301 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
302 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,1" ) ) {
303 System.out.println( m.toString() );
306 if ( !m.getRowAsString( 1, ',' ).equals( "RAT1,1,1" ) ) {
307 System.out.println( m.toString() );
311 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
312 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
313 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
314 final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
315 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
316 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
317 species_tree_1.setRooted( true );
318 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
319 rio = RIO.executeAnalysis( gene_trees_1,
322 REROOTING.BY_ALGORITHM,
326 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
329 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
332 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
335 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
338 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
339 // System.out.println( m.toString() );
340 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
343 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
346 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
349 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
352 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
355 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
359 final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
360 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
361 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
362 species_tree_2.setRooted( true );
363 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
364 rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
365 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
366 // System.out.println( m.toString() );
367 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
370 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
373 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
376 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
379 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
382 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
386 RIO r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode.run1.t" ),
387 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
389 REROOTING.BY_ALGORITHM,
395 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
398 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
401 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
404 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
407 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
410 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
413 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
414 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE,201,201,200,200,200,200" ) ) {
415 System.out.println( m.getRowAsString( 0, ',' ) );
418 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN,201,201,200,200,200,43" ) ) {
419 System.out.println( m.getRowAsString( 1, ',' ) );
422 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
423 System.out.println( m.getRowAsString( 2, ',' ) );
426 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_CIOSA,200,200,201,201,201,201" ) ) {
427 System.out.println( m.getRowAsString( 3, ',' ) );
430 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE,200,200,201,201,201,43" ) ) {
431 System.out.println( m.getRowAsString( 4, ',' ) );
434 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR,200,43,43,201,43,201" ) ) {
435 System.out.println( m.getRowAsString( 5, ',' ) );
439 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxid.run1.t" ),
440 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
442 REROOTING.BY_ALGORITHM,
448 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.ID ) {
451 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
454 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
457 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
460 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
463 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
466 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
467 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_45351,201,200,201,200,200,200" ) ) {
468 System.out.println( m.getRowAsString( 0, ',' ) );
472 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_10090,200,201,200,201,201,43" ) ) {
473 System.out.println( m.getRowAsString( 1, ',' ) );
477 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_9606,201,200,201,200,200,43" ) ) {
478 System.out.println( m.getRowAsString( 2, ',' ) );
481 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_51511,200,201,200,201,201,201" ) ) {
482 System.out.println( m.getRowAsString( 3, ',' ) );
485 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_7955,200,201,200,201,201,43" ) ) {
486 System.out.println( m.getRowAsString( 4, ',' ) );
489 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_8364,200,43,43,201,43,201" ) ) {
490 System.out.println( m.getRowAsString( 5, ',' ) );
493 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
494 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
496 REROOTING.BY_ALGORITHM,
502 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
505 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
508 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
511 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
514 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
517 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
520 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
521 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,200,200,200" ) ) {
522 System.out.println( m.getRowAsString( 0, ',' ) );
525 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,200,200,43" ) ) {
526 System.out.println( m.getRowAsString( 1, ',' ) );
529 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,201,201,43" ) ) {
530 System.out.println( m.getRowAsString( 2, ',' ) );
533 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,200,200,201,201,201,201" ) ) {
534 System.out.println( m.getRowAsString( 3, ',' ) );
537 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,201,201,43" ) ) {
538 System.out.println( m.getRowAsString( 4, ',' ) );
541 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,201,43,201" ) ) {
542 System.out.println( m.getRowAsString( 5, ',' ) );
546 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
547 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
555 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
558 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
561 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
564 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
567 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
570 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
573 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
574 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,94,93,160,93,93" ) ) {
575 System.out.println( m.getRowAsString( 0, ',' ) );
578 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,94,201,200,53,200,43" ) ) {
579 System.out.println( m.getRowAsString( 1, ',' ) );
582 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,93,200,201,53,201,43" ) ) {
583 System.out.println( m.getRowAsString( 2, ',' ) );
586 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,160,53,53,201,53,53" ) ) {
587 System.out.println( m.getRowAsString( 3, ',' ) );
590 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,93,200,201,53,201,43" ) ) {
591 System.out.println( m.getRowAsString( 4, ',' ) );
594 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,93,43,43,53,43,201" ) ) {
595 System.out.println( m.getRowAsString( 5, ',' ) );
599 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
600 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
603 "H2ZH97_Ciona_savignyi",
608 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
611 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
614 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
617 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
620 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
623 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
626 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
627 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,0,200,200" ) ) {
628 System.out.println( m.getRowAsString( 0, ',' ) );
631 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,0,200,43" ) ) {
632 System.out.println( m.getRowAsString( 1, ',' ) );
635 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,0,201,43" ) ) {
636 System.out.println( m.getRowAsString( 2, ',' ) );
639 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,0,0,0,201,0,0" ) ) {
640 System.out.println( m.getRowAsString( 3, ',' ) );
643 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,0,201,43" ) ) {
644 System.out.println( m.getRowAsString( 4, ',' ) );
647 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,0,43,201" ) ) {
648 System.out.println( m.getRowAsString( 5, ',' ) );
653 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
654 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
662 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
665 if ( r0.getAnalyzedGeneTrees().length != 10 ) {
668 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
671 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
674 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
677 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 4 ) {
680 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
681 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,10,0,0,10,0,0" ) ) {
682 System.out.println( m.getRowAsString( 0, ',' ) );
685 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,0,10,0,0,0,0" ) ) {
686 System.out.println( m.getRowAsString( 1, ',' ) );
689 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,0,0,10,0,0,0" ) ) {
690 System.out.println( m.getRowAsString( 2, ',' ) );
693 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,10,0,0,10,0,0" ) ) {
694 System.out.println( m.getRowAsString( 3, ',' ) );
697 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,0,0,0,0,10,0" ) ) {
698 System.out.println( m.getRowAsString( 4, ',' ) );
701 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,0,0,0,0,0,10" ) ) {
702 System.out.println( m.getRowAsString( 5, ',' ) );
706 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_1.run1.t" ),
707 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
709 REROOTING.BY_ALGORITHM,
715 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
718 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
721 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 3 ) {
724 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 2 ) {
727 if ( r0.getRemovedGeneTreeNodes().size() != 3 ) {
730 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 0 ) {
733 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
734 if ( !m.getRowAsString( 0, ',' ).equals( "BCDO2_HUMAN,201,201,201" ) ) {
735 System.out.println( m.getRowAsString( 0, ',' ) );
738 if ( !m.getRowAsString( 1, ',' ).equals( "Q1RLW1_DANRE,201,201,201" ) ) {
739 System.out.println( m.getRowAsString( 1, ',' ) );
742 if ( !m.getRowAsString( 2, ',' ).equals( "Q6DIN7_XENTR,201,201,201" ) ) {
743 System.out.println( m.getRowAsString( 2, ',' ) );
748 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_2.run1.t" ),
749 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
751 REROOTING.BY_ALGORITHM,
757 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
760 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
763 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
766 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
769 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
772 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
775 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
776 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE&1,201,201,200,200,200,200" ) ) {
777 System.out.println( m.getRowAsString( 0, ',' ) );
780 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN+,201,201,200,200,200,43" ) ) {
781 System.out.println( m.getRowAsString( 1, ',' ) );
784 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
785 System.out.println( m.getRowAsString( 2, ',' ) );
788 if ( !m.getRowAsString( 3, ',' ).equals( "CIOSA,200,200,201,201,201,201" ) ) {
789 System.out.println( m.getRowAsString( 3, ',' ) );
792 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE/12-45,200,200,201,201,201,43" ) ) {
793 System.out.println( m.getRowAsString( 4, ',' ) );
796 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR-LOUSE,200,43,43,201,43,201" ) ) {
797 System.out.println( m.getRowAsString( 5, ',' ) );
802 catch ( final Exception e ) {
803 e.printStackTrace( System.out );