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.AGGRESSIVE );
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() );
88 final String gene_trees_000_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE]);(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
89 final Phylogeny[] gene_trees_000 = factory.create( gene_trees_000_str, nhx );
90 final String species_trees_000_str = "[&&NHX:S=MOUSE];";
91 final Phylogeny species_tree_000 = factory.create( species_trees_000_str, new NHXParser() )[ 0 ];
92 species_tree_000.setRooted( true );
93 rio = RIO.executeAnalysis( gene_trees_000,
96 REROOTING.BY_ALGORITHM,
101 if ( rio.getAnalyzedGeneTrees().length != 2 ) {
104 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
107 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
110 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
113 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
114 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,2,0" ) ) {
115 System.out.println( m.toString() );
118 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,2" ) ) {
119 System.out.println( m.toString() );
124 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])";
125 final Phylogeny[] gene_trees_0000 = factory.create( gene_trees_0000_str, nhx );
126 final String species_trees_0000_str = "([&&NHX:S=MOUSE]);";
127 final Phylogeny species_tree_0000 = factory.create( species_trees_0000_str, new NHXParser() )[ 0 ];
128 species_tree_0000.setRooted( true );
129 rio = RIO.executeAnalysis( gene_trees_0000,
132 REROOTING.BY_ALGORITHM,
137 if ( rio.getAnalyzedGeneTrees().length != 3 ) {
140 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
143 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
146 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
149 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
150 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,3,0" ) ) {
151 System.out.println( m.toString() );
154 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,3" ) ) {
155 System.out.println( m.toString() );
159 final String gene_trees_x_str = "(MOUSE1[&&NHX:S=MOUSE],MOUSE2[&&NHX:S=MOUSE])";
160 final Phylogeny[] gene_trees_x = factory.create( gene_trees_x_str, nhx );
161 final String species_trees_x_str = "[&&NHX:S=MOUSE];";
162 final Phylogeny species_tree_x = factory.create( species_trees_x_str, new NHXParser() )[ 0 ];
163 species_tree_x.setRooted( true );
164 rio = RIO.executeAnalysis( gene_trees_x,
167 REROOTING.BY_ALGORITHM,
172 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
175 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
178 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
181 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
184 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
185 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,0" ) ) {
186 System.out.println( m.toString() );
189 if ( !m.getRowAsString( 1, ',' ).equals( "MOUSE2,0,1" ) ) {
190 System.out.println( m.toString() );
193 final String gene_trees_xx_str = "(MOUSE1[&&NHX:S=MOUSE],RAT1[&&NHX:S=RAT])";
194 final Phylogeny[] gene_trees_xx = factory.create( gene_trees_xx_str, nhx );
195 final String species_trees_xx_str = "([&&NHX:S=MOUSE],[&&NHX:S=RAT]);";
196 final Phylogeny species_tree_xx = factory.create( species_trees_xx_str, new NHXParser() )[ 0 ];
197 species_tree_xx.setRooted( true );
198 rio = RIO.executeAnalysis( gene_trees_xx,
201 REROOTING.BY_ALGORITHM,
206 if ( rio.getAnalyzedGeneTrees().length != 1 ) {
209 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 2 ) {
212 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
215 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
218 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
219 if ( !m.getRowAsString( 0, ',' ).equals( "MOUSE1,1,1" ) ) {
220 System.out.println( m.toString() );
223 if ( !m.getRowAsString( 1, ',' ).equals( "RAT1,1,1" ) ) {
224 System.out.println( m.toString() );
227 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
228 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
229 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
230 final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
231 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
232 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
233 species_tree_1.setRooted( true );
234 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
235 rio = RIO.executeAnalysis( gene_trees_1,
238 REROOTING.BY_ALGORITHM,
243 if ( rio.getAnalyzedGeneTrees().length != 5 ) {
246 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
249 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
252 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
255 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
256 // System.out.println( m.toString() );
257 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
260 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
263 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
266 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
269 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
272 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
276 final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
277 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
278 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
279 species_tree_2.setRooted( true );
280 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
281 rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
282 m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
283 // System.out.println( m.toString() );
284 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
287 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
290 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
293 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
296 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
299 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
303 RIO r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode.run1.t" ),
304 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
306 REROOTING.BY_ALGORITHM,
313 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
316 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
319 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
320 System.out.println( r0.getExtNodesOfAnalyzedGeneTrees() );
323 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
326 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
329 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
332 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
333 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE,201,201,200,200,200,200" ) ) {
334 System.out.println( m.getRowAsString( 0, ',' ) );
337 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN,201,201,200,200,200,43" ) ) {
338 System.out.println( m.getRowAsString( 1, ',' ) );
341 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
342 System.out.println( m.getRowAsString( 2, ',' ) );
345 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_CIOSA,200,200,201,201,201,201" ) ) {
346 System.out.println( m.getRowAsString( 3, ',' ) );
349 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE,200,200,201,201,201,43" ) ) {
350 System.out.println( m.getRowAsString( 4, ',' ) );
353 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR,200,43,43,201,43,201" ) ) {
354 System.out.println( m.getRowAsString( 5, ',' ) );
357 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxid.run1.t" ),
358 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
360 REROOTING.BY_ALGORITHM,
367 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.ID ) {
370 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
373 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
376 if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
379 if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
382 if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
385 m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
386 if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_45351,201,200,201,200,200,200" ) ) {
387 System.out.println( m.getRowAsString( 0, ',' ) );
391 if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_10090,200,201,200,201,201,43" ) ) {
392 System.out.println( m.getRowAsString( 1, ',' ) );
396 if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_9606,201,200,201,200,200,43" ) ) {
397 System.out.println( m.getRowAsString( 2, ',' ) );
400 if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_51511,200,201,200,201,201,201" ) ) {
401 System.out.println( m.getRowAsString( 3, ',' ) );
404 if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_7955,200,201,200,201,201,43" ) ) {
405 System.out.println( m.getRowAsString( 4, ',' ) );
408 if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_8364,200,43,43,201,43,201" ) ) {
409 System.out.println( m.getRowAsString( 5, ',' ) );
412 r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
413 new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
415 REROOTING.BY_ALGORITHM,
422 if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
425 if ( r0.getAnalyzedGeneTrees().length != 201 ) {
428 if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
429 System.out.println( r0.getExtNodesOfAnalyzedGeneTrees() );
432 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
435 // if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
438 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
441 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
442 // if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,200,200,200" ) ) {
443 // System.out.println( m.getRowAsString( 0, ',' ) );
446 // if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,200,200,43" ) ) {
447 // System.out.println( m.getRowAsString( 1, ',' ) );
450 // if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,201,201,43" ) ) {
451 // System.out.println( m.getRowAsString( 2, ',' ) );
454 // if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,200,200,201,201,201,201" ) ) {
455 // System.out.println( m.getRowAsString( 3, ',' ) );
458 // if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,201,201,43" ) ) {
459 // System.out.println( m.getRowAsString( 4, ',' ) );
462 // if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,201,43,201" ) ) {
463 // System.out.println( m.getRowAsString( 5, ',' ) );
467 // r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
468 // new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
470 // REROOTING.MIDPOINT,
477 // if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
480 // if ( r0.getAnalyzedGeneTrees().length != 201 ) {
483 // if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
486 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
489 // if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
492 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
495 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
496 // if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,94,93,160,93,93" ) ) {
497 // System.out.println( m.getRowAsString( 0, ',' ) );
500 // if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,94,201,200,53,200,43" ) ) {
501 // System.out.println( m.getRowAsString( 1, ',' ) );
504 // if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,93,200,201,53,201,43" ) ) {
505 // System.out.println( m.getRowAsString( 2, ',' ) );
508 // if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,160,53,53,201,53,53" ) ) {
509 // System.out.println( m.getRowAsString( 3, ',' ) );
512 // if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,93,200,201,53,201,43" ) ) {
513 // System.out.println( m.getRowAsString( 4, ',' ) );
516 // if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,93,43,43,53,43,201" ) ) {
517 // System.out.println( m.getRowAsString( 5, ',' ) );
521 // r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
522 // new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
524 // REROOTING.OUTGROUP,
525 // "H2ZH97_Ciona_savignyi",
531 // if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
534 // if ( r0.getAnalyzedGeneTrees().length != 201 ) {
537 // if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
540 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
543 // if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
546 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
549 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
550 // if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,0,200,200" ) ) {
551 // System.out.println( m.getRowAsString( 0, ',' ) );
554 // if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,0,200,43" ) ) {
555 // System.out.println( m.getRowAsString( 1, ',' ) );
558 // if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,0,201,43" ) ) {
559 // System.out.println( m.getRowAsString( 2, ',' ) );
562 // if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,0,0,0,201,0,0" ) ) {
563 // System.out.println( m.getRowAsString( 3, ',' ) );
566 // if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,0,201,43" ) ) {
567 // System.out.println( m.getRowAsString( 4, ',' ) );
570 // if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,0,43,201" ) ) {
571 // System.out.println( m.getRowAsString( 5, ',' ) );
576 // r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
577 // new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
586 // if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
589 // if ( r0.getAnalyzedGeneTrees().length != 10 ) {
592 // if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
595 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
598 // if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
601 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 4 ) {
604 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
605 // if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,10,0,0,10,0,0" ) ) {
606 // System.out.println( m.getRowAsString( 0, ',' ) );
609 // if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,0,10,0,0,0,0" ) ) {
610 // System.out.println( m.getRowAsString( 1, ',' ) );
613 // if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,0,0,10,0,0,0" ) ) {
614 // System.out.println( m.getRowAsString( 2, ',' ) );
617 // if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,10,0,0,10,0,0" ) ) {
618 // System.out.println( m.getRowAsString( 3, ',' ) );
621 // if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,0,0,0,0,10,0" ) ) {
622 // System.out.println( m.getRowAsString( 4, ',' ) );
625 // if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,0,0,0,0,0,10" ) ) {
626 // System.out.println( m.getRowAsString( 5, ',' ) );
630 // r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_1.run1.t" ),
631 // new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
633 // REROOTING.BY_ALGORITHM,
640 // if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
643 // if ( r0.getAnalyzedGeneTrees().length != 201 ) {
646 // if ( r0.getExtNodesOfAnalyzedGeneTrees() != 3 ) {
649 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 2 ) {
652 // if ( r0.getRemovedGeneTreeNodes().size() != 3 ) {
655 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 0 ) {
658 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
659 // if ( !m.getRowAsString( 0, ',' ).equals( "BCDO2_HUMAN,201,201,201" ) ) {
660 // System.out.println( m.getRowAsString( 0, ',' ) );
663 // if ( !m.getRowAsString( 1, ',' ).equals( "Q1RLW1_DANRE,201,201,201" ) ) {
664 // System.out.println( m.getRowAsString( 1, ',' ) );
667 // if ( !m.getRowAsString( 2, ',' ).equals( "Q6DIN7_XENTR,201,201,201" ) ) {
668 // System.out.println( m.getRowAsString( 2, ',' ) );
673 // r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_2.run1.t" ),
674 // new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
676 // REROOTING.BY_ALGORITHM,
683 // if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
686 // if ( r0.getAnalyzedGeneTrees().length != 201 ) {
689 // if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
692 // if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
695 // if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
698 // if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
701 // m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
702 // if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE&1,201,201,200,200,200,200" ) ) {
703 // System.out.println( m.getRowAsString( 0, ',' ) );
706 // if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN+,201,201,200,200,200,43" ) ) {
707 // System.out.println( m.getRowAsString( 1, ',' ) );
710 // if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
711 // System.out.println( m.getRowAsString( 2, ',' ) );
714 // if ( !m.getRowAsString( 3, ',' ).equals( "CIOSA,200,200,201,201,201,201" ) ) {
715 // System.out.println( m.getRowAsString( 3, ',' ) );
718 // if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE/12-45,200,200,201,201,201,43" ) ) {
719 // System.out.println( m.getRowAsString( 4, ',' ) );
722 // if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR-LOUSE,200,43,43,201,43,201" ) ) {
723 // System.out.println( m.getRowAsString( 5, ',' ) );
727 catch ( final Exception e ) {
728 e.printStackTrace( System.out );
734 private static boolean testRIO_GSDIR_Iterating() {
736 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
737 final NHXParser nhx = new NHXParser();
738 nhx.setReplaceUnderscores( false );
739 nhx.setIgnoreQuotes( true );
740 nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.AGGRESSIVE );
741 final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
742 + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
743 + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
744 nhx.setSource( gene_trees_1_str );
745 final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
746 final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
747 species_tree_1.setRooted( true );
748 PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
749 //Archaeopteryx.createApplication( species_trees_1 );
750 RIO rio = RIO.executeAnalysis( nhx,
753 REROOTING.BY_ALGORITHM,
758 if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
761 if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
764 if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
767 IntMatrix m = rio.getOrthologTable();
768 //System.out.println( m.toString() );
769 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
772 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
775 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
778 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
781 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
784 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
788 final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
789 final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
790 species_tree_2.setRooted( true );
791 PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
792 rio = RIO.executeAnalysis( nhx,
795 REROOTING.BY_ALGORITHM,
800 m = rio.getOrthologTable();
801 // System.out.println( m.toString() );
802 if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
805 if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
808 if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
811 if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
814 if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
817 if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
821 catch ( final Exception e ) {
822 e.printStackTrace( System.out );