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() {
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.PFAM_STYLE_RELAXED );
53 final String gene_trees_00_str = "(MOUSE,RAT);(MOUSE,RAT);(MOUSE,RAT);(RAT,MOUSE);";
54 final Phylogeny[] gene_trees_00 = factory.create( gene_trees_00_str, nhx );
55 final String species_trees_00_str = "(MOUSE,RAT);";
56 final Phylogeny species_tree_00 = factory.create( species_trees_00_str, new NHXParser() )[ 0 ];
57 species_tree_00.setRooted( true );
58 PhylogenyMethods.transferNodeNameToField( species_tree_00, PhylogenyNodeField.TAXONOMY_CODE, true );
59 RIO rio = RIO.executeAnalysis( gene_trees_00,
62 REROOTING.BY_ALGORITHM,
67 if ( rio.getAnalyzedGeneTrees().length != 4 ) {
70 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
73 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
76 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
79 IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
80 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE,4,4" ) ) {
81 System.out.println( m.toString() );
84 if ( !m.getRowAsString( 1, ',' ).equals( "RAT,4,4" ) ) {
85 System.out.println( m.toString() );
89 final String gene_trees_000_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE]);(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
90 final Phylogeny[] gene_trees_000 = factory.create( gene_trees_000_str, nhx );
91 final String species_trees_000_str = "[&&NHX:S=MOUSE];";
92 final Phylogeny species_tree_000 = factory.create( species_trees_000_str, new NHXParser() )[ 0 ];
93 species_tree_000.setRooted( true );
94 rio = RIO.executeAnalysis( gene_trees_000,
97 REROOTING.BY_ALGORITHM,
102 if ( rio.getAnalyzedGeneTrees().length != 2 ) {
105 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
108 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
111 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
114 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
115 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,2,0" ) ) {
116 System.out.println( m.toString() );
119 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,2" ) ) {
120 System.out.println( m.toString() );
125 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])";
126 final Phylogeny[] gene_trees_0000 = factory.create( gene_trees_0000_str, nhx );
127 final String species_trees_0000_str = "([&&NHX:S=MOUSE]);";
128 final Phylogeny species_tree_0000 = factory.create( species_trees_0000_str, new NHXParser() )[ 0 ];
129 species_tree_0000.setRooted( true );
130 rio = RIO.executeAnalysis( gene_trees_0000,
133 REROOTING.BY_ALGORITHM,
138 if ( rio.getAnalyzedGeneTrees().length != 3 ) {
141 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
144 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
147 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
150 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
151 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,3,0" ) ) {
152 System.out.println( m.toString() );
155 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,3" ) ) {
156 System.out.println( m.toString() );
160 final String gene_trees_x_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
161 final Phylogeny[] gene_trees_x = factory.create( gene_trees_x_str, nhx );
162 final String species_trees_x_str = "[&&NHX:S=MOUSE];";
163 final Phylogeny species_tree_x = factory.create( species_trees_x_str, new NHXParser() )[ 0 ];
164 species_tree_x.setRooted( true );
165 rio = RIO.executeAnalysis( gene_trees_x,
168 REROOTING.BY_ALGORITHM,
173 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
176 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
179 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
182 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
185 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
186 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,0" ) ) {
187 System.out.println( m.toString() );
190 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,1" ) ) {
191 System.out.println( m.toString() );
195 final String gene_trees_xx_str = "(MOUSE1[&&NHX:S=MOUSE],RAT1[&&NHX:S=RAT])";
196 final Phylogeny[] gene_trees_xx = factory.create( gene_trees_xx_str, nhx );
197 final String species_trees_xx_str = "([&&NHX:S=MOUSE],[&&NHX:S=RAT]);";
198 final Phylogeny species_tree_xx = factory.create( species_trees_xx_str, new NHXParser() )[ 0 ];
199 species_tree_xx.setRooted( true );
200 rio = RIO.executeAnalysis( gene_trees_xx,
203 REROOTING.BY_ALGORITHM,
208 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
211 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
214 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
217 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
220 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
221 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,1" ) ) {
222 System.out.println( m.toString() );
225 if ( !m.getRowAsString( 1, ',' ).equals( "RAT1,1,1" ) ) {
226 System.out.println( m.toString() );
230 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
231 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
232 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
233 final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
234 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
235 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
236 species_tree_1.setRooted( true );
237 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
238 rio = RIO.executeAnalysis( gene_trees_1,
241 REROOTING.BY_ALGORITHM,
246 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
249 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
252 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
255 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
258 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
259 // System.out.println( m.toString() );
260 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
263 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
266 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
269 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
272 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
275 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
279 final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
280 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
281 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
282 species_tree_2.setRooted( true );
283 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
284 rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
285 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
286 // System.out.println( m.toString() );
287 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
290 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
293 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
296 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
299 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
302 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
306 RIO r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode.run1.t" ),
307 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
309 REROOTING.BY_ALGORITHM,
316 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
319 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
322 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
325 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
328 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
331 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
334 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
335 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE,201,201,200,200,200,200" ) ) {
336 System.out.println( m.getRowAsString( 0, ',' ) );
339 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN,201,201,200,200,200,43" ) ) {
340 System.out.println( m.getRowAsString( 1, ',' ) );
343 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
344 System.out.println( m.getRowAsString( 2, ',' ) );
347 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_CIOSA,200,200,201,201,201,201" ) ) {
348 System.out.println( m.getRowAsString( 3, ',' ) );
351 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE,200,200,201,201,201,43" ) ) {
352 System.out.println( m.getRowAsString( 4, ',' ) );
355 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR,200,43,43,201,43,201" ) ) {
356 System.out.println( m.getRowAsString( 5, ',' ) );
360 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxid.run1.t" ),
361 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
363 REROOTING.BY_ALGORITHM,
370 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.ID ) {
373 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
376 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
379 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
382 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
385 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
388 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
389 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_45351,201,200,201,200,200,200" ) ) {
390 System.out.println( m.getRowAsString( 0, ',' ) );
394 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_10090,200,201,200,201,201,43" ) ) {
395 System.out.println( m.getRowAsString( 1, ',' ) );
399 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_9606,201,200,201,200,200,43" ) ) {
400 System.out.println( m.getRowAsString( 2, ',' ) );
403 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_51511,200,201,200,201,201,201" ) ) {
404 System.out.println( m.getRowAsString( 3, ',' ) );
407 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_7955,200,201,200,201,201,43" ) ) {
408 System.out.println( m.getRowAsString( 4, ',' ) );
411 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_8364,200,43,43,201,43,201" ) ) {
412 System.out.println( m.getRowAsString( 5, ',' ) );
415 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
416 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
418 REROOTING.BY_ALGORITHM,
425 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
428 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
431 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
434 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
437 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
440 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
443 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
444 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,200,200,200" ) ) {
445 System.out.println( m.getRowAsString( 0, ',' ) );
448 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,200,200,43" ) ) {
449 System.out.println( m.getRowAsString( 1, ',' ) );
452 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,201,201,43" ) ) {
453 System.out.println( m.getRowAsString( 2, ',' ) );
456 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,200,200,201,201,201,201" ) ) {
457 System.out.println( m.getRowAsString( 3, ',' ) );
460 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,201,201,43" ) ) {
461 System.out.println( m.getRowAsString( 4, ',' ) );
464 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,201,43,201" ) ) {
465 System.out.println( m.getRowAsString( 5, ',' ) );
469 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
470 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
479 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
482 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
485 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
488 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
491 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
494 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
497 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
498 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,94,93,160,93,93" ) ) {
499 System.out.println( m.getRowAsString( 0, ',' ) );
502 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,94,201,200,53,200,43" ) ) {
503 System.out.println( m.getRowAsString( 1, ',' ) );
506 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,93,200,201,53,201,43" ) ) {
507 System.out.println( m.getRowAsString( 2, ',' ) );
510 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,160,53,53,201,53,53" ) ) {
511 System.out.println( m.getRowAsString( 3, ',' ) );
514 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,93,200,201,53,201,43" ) ) {
515 System.out.println( m.getRowAsString( 4, ',' ) );
518 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,93,43,43,53,43,201" ) ) {
519 System.out.println( m.getRowAsString( 5, ',' ) );
523 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
524 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
527 "H2ZH97_Ciona_savignyi",
533 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
536 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
539 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
542 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
545 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
548 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
551 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
552 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,0,200,200" ) ) {
553 System.out.println( m.getRowAsString( 0, ',' ) );
556 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,0,200,43" ) ) {
557 System.out.println( m.getRowAsString( 1, ',' ) );
560 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,0,201,43" ) ) {
561 System.out.println( m.getRowAsString( 2, ',' ) );
564 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,0,0,0,201,0,0" ) ) {
565 System.out.println( m.getRowAsString( 3, ',' ) );
568 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,0,201,43" ) ) {
569 System.out.println( m.getRowAsString( 4, ',' ) );
572 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,0,43,201" ) ) {
573 System.out.println( m.getRowAsString( 5, ',' ) );
578 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
579 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
588 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
591 if ( r0.getAnalyzedGeneTrees().length != 10 ) {
594 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
597 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
600 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
603 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 4 ) {
606 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
607 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,10,0,0,10,0,0" ) ) {
608 System.out.println( m.getRowAsString( 0, ',' ) );
611 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,0,10,0,0,0,0" ) ) {
612 System.out.println( m.getRowAsString( 1, ',' ) );
615 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,0,0,10,0,0,0" ) ) {
616 System.out.println( m.getRowAsString( 2, ',' ) );
619 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,10,0,0,10,0,0" ) ) {
620 System.out.println( m.getRowAsString( 3, ',' ) );
623 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,0,0,0,0,10,0" ) ) {
624 System.out.println( m.getRowAsString( 4, ',' ) );
627 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,0,0,0,0,0,10" ) ) {
628 System.out.println( m.getRowAsString( 5, ',' ) );
632 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_1.run1.t" ),
633 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
635 REROOTING.BY_ALGORITHM,
642 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
645 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
648 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 3 ) {
651 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 2 ) {
654 if ( r0.getRemovedGeneTreeNodes().size() != 3 ) {
657 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 0 ) {
660 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
661 if ( !m.getRowAsString( 0, ',' ).equals( "BCDO2_HUMAN,201,201,201" ) ) {
662 System.out.println( m.getRowAsString( 0, ',' ) );
665 if ( !m.getRowAsString( 1, ',' ).equals( "Q1RLW1_DANRE,201,201,201" ) ) {
666 System.out.println( m.getRowAsString( 1, ',' ) );
669 if ( !m.getRowAsString( 2, ',' ).equals( "Q6DIN7_XENTR,201,201,201" ) ) {
670 System.out.println( m.getRowAsString( 2, ',' ) );
675 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_2.run1.t" ),
676 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
678 REROOTING.BY_ALGORITHM,
685 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
688 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
691 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
694 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
697 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
700 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
703 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
704 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE&1,201,201,200,200,200,200" ) ) {
705 System.out.println( m.getRowAsString( 0, ',' ) );
708 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN+,201,201,200,200,200,43" ) ) {
709 System.out.println( m.getRowAsString( 1, ',' ) );
712 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
713 System.out.println( m.getRowAsString( 2, ',' ) );
716 if ( !m.getRowAsString( 3, ',' ).equals( "CIOSA,200,200,201,201,201,201" ) ) {
717 System.out.println( m.getRowAsString( 3, ',' ) );
720 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE/12-45,200,200,201,201,201,43" ) ) {
721 System.out.println( m.getRowAsString( 4, ',' ) );
724 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR-LOUSE,200,43,43,201,43,201" ) ) {
725 System.out.println( m.getRowAsString( 5, ',' ) );
730 catch ( final Exception e ) {
731 e.printStackTrace( System.out );
737 private static boolean testRIO_GSDIR_Iterating() {
739 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
740 final NHXParser nhx = new NHXParser();
741 nhx.setReplaceUnderscores( false );
742 nhx.setIgnoreQuotes( true );
743 nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.PFAM_STYLE_RELAXED );
744 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
745 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
746 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
747 nhx.setSource( gene_trees_1_str );
748 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
749 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
750 species_tree_1.setRooted( true );
751 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
752 //Archaeopteryx.createApplication( species_trees_1 );
753 RIO rio = RIO.executeAnalysis( nhx,
756 REROOTING.BY_ALGORITHM,
761 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
764 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
767 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
770 IntMatrix m = rio.getOrthologTable();
771 //System.out.println( m.toString() );
772 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
775 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
778 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
781 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
784 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
787 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
791 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
792 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
793 species_tree_2.setRooted( true );
794 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
795 rio = RIO.executeAnalysis( nhx,
798 REROOTING.BY_ALGORITHM,
803 m = rio.getOrthologTable();
804 // System.out.println( m.toString() );
805 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
808 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
811 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
814 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
817 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
820 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
824 catch ( final Exception e ) {
825 e.printStackTrace( System.out );