messed up at the moment
[jalview.git] / forester / java / src / org / forester / rio / TestRIO.java
1
2 package org.forester.rio;
3
4 import java.io.File;
5
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;
17
18 public final class TestRIO {
19
20     private final static String PATH_TO_TEST_DATA = System.getProperty( "user.dir" ) + ForesterUtil.getFileSeparator()
21                                                           + "test_data" + ForesterUtil.getFileSeparator();
22
23     public static void main( final String[] args ) {
24         if ( !testRIO_GSDIR() ) {
25             System.out.println( "testRIO GSDIR failed" );
26         }
27         if ( !testRIO_GSDIR_Iterating() ) {
28             System.out.println( "testRIO GSDIR iterating failed" );
29         }
30         else {
31             System.out.println( "OK" );
32         }
33     }
34
35     public static boolean test() {
36         if ( !testRIO_GSDIR() ) {
37             return false;
38         }
39         if ( !testRIO_GSDIR_Iterating() ) {
40             return false;
41         }
42         return true;
43     }
44
45     private static boolean testRIO_GSDIR_Iterating() {
46         try {
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.YES );
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,
62                                            species_tree_1,
63                                            ALGORITHM.GSDIR,
64                                            REROOTING.BY_ALGORITHM,
65                                            "",
66                                            true,
67                                            false );
68             //if ( rio.getAnalyzedGeneTrees().length != 5 ) {
69             //    return false;
70             //}
71             if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
72                 return false;
73             }
74             if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
75                 return false;
76             }
77             if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
78                 return false;
79             }
80             IntMatrix m = rio.getOrthologTable();
81             //System.out.println( m.toString() );
82             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
83                 return false;
84             }
85             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
86                 return false;
87             }
88             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
89                 return false;
90             }
91             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
92                 return false;
93             }
94             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
95                 return false;
96             }
97             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
98                 return false;
99             }
100             //
101             final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
102             final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
103             species_tree_2.setRooted( true );
104             PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
105             rio = RIO.executeAnalysis( nhx, species_tree_2, ALGORITHM.GSDIR, REROOTING.BY_ALGORITHM, "", true, false );
106             m = rio.getOrthologTable();
107             // System.out.println( m.toString() );
108             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
109                 return false;
110             }
111             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
112                 return false;
113             }
114             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
115                 return false;
116             }
117             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
118                 return false;
119             }
120             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
121                 return false;
122             }
123             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
124                 return false;
125             }
126         }
127         catch ( final Exception e ) {
128             e.printStackTrace( System.out );
129             return false;
130         }
131         return true;
132     }
133
134     private static boolean testRIO_GSDIR() {
135         try {
136             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
137             final NHXParser nhx = new NHXParser();
138             nhx.setReplaceUnderscores( false );
139             nhx.setIgnoreQuotes( true );
140             nhx.setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.YES );
141             final String gene_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);"
142                     + "((((MOUSE,RAT),HUMAN),(ARATH,YEAST)),CAEEL);" + "((MOUSE,RAT),(((ARATH,YEAST),CAEEL),HUMAN));"
143                     + "(((((MOUSE,HUMAN),RAT),CAEEL),YEAST),ARATH);" + "((((HUMAN,MOUSE),RAT),(ARATH,YEAST)),CAEEL);";
144             final Phylogeny[] gene_trees_1 = factory.create( gene_trees_1_str, nhx );
145             final String species_trees_1_str = "(((((MOUSE,RAT),HUMAN),CAEEL),YEAST),ARATH);";
146             final Phylogeny species_tree_1 = factory.create( species_trees_1_str, new NHXParser() )[ 0 ];
147             species_tree_1.setRooted( true );
148             PhylogenyMethods.transferNodeNameToField( species_tree_1, PhylogenyNodeField.TAXONOMY_CODE, true );
149             //Archaeopteryx.createApplication( species_trees_1 );
150             RIO rio = RIO.executeAnalysis( gene_trees_1,
151                                            species_tree_1,
152                                            ALGORITHM.GSDIR,
153                                            REROOTING.BY_ALGORITHM,
154                                            "",
155                                            true,
156                                            false );
157             if ( rio.getAnalyzedGeneTrees().length != 5 ) {
158                 return false;
159             }
160             if ( rio.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
161                 return false;
162             }
163             if ( rio.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
164                 return false;
165             }
166             if ( rio.getRemovedGeneTreeNodes().size() != 0 ) {
167                 return false;
168             }
169             IntMatrix m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
170             // System.out.println( m.toString() );
171             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
172                 return false;
173             }
174             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
175                 return false;
176             }
177             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,3,5" ) ) {
178                 return false;
179             }
180             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,3,5" ) ) {
181                 return false;
182             }
183             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,3,3,5,5" ) ) {
184                 return false;
185             }
186             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
187                 return false;
188             }
189             //
190             final Phylogeny[] gene_trees_2 = factory.create( gene_trees_1_str, nhx );
191             final String species_trees_2_str = "((((MOUSE,RAT,HUMAN),CAEEL),YEAST),ARATH);";
192             final Phylogeny species_tree_2 = factory.create( species_trees_2_str, new NHXParser() )[ 0 ];
193             species_tree_2.setRooted( true );
194             PhylogenyMethods.transferNodeNameToField( species_tree_2, PhylogenyNodeField.TAXONOMY_CODE, true );
195             rio = RIO.executeAnalysis( gene_trees_2, species_tree_2 );
196             m = RIO.calculateOrthologTable( rio.getAnalyzedGeneTrees(), true );
197             // System.out.println( m.toString() );
198             if ( !m.getRowAsString( 0, ',' ).equals( "ARATH,5,5,5,5,5,5" ) ) {
199                 return false;
200             }
201             if ( !m.getRowAsString( 1, ',' ).equals( "CAEEL,5,5,5,5,5,5" ) ) {
202                 return false;
203             }
204             if ( !m.getRowAsString( 2, ',' ).equals( "HUMAN,5,5,5,5,5,5" ) ) {
205                 return false;
206             }
207             if ( !m.getRowAsString( 3, ',' ).equals( "MOUSE,5,5,5,5,5,5" ) ) {
208                 return false;
209             }
210             if ( !m.getRowAsString( 4, ',' ).equals( "RAT,5,5,5,5,5,5" ) ) {
211                 return false;
212             }
213             if ( !m.getRowAsString( 5, ',' ).equals( "YEAST,5,5,5,5,5,5" ) ) {
214                 return false;
215             }
216             //
217             RIO r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode.run1.t" ),
218                                           new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
219                                           ALGORITHM.GSDIR,
220                                           REROOTING.BY_ALGORITHM,
221                                           "",
222                                           -1,
223                                           -1,
224                                           true,
225                                           false );
226             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
227                 return false;
228             }
229             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
230                 return false;
231             }
232             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
233                 return false;
234             }
235             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
236                 return false;
237             }
238             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
239                 return false;
240             }
241             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
242                 return false;
243             }
244             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
245             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE,201,201,200,200,200,200" ) ) {
246                 System.out.println( m.getRowAsString( 0, ',' ) );
247                 return false;
248             }
249             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN,201,201,200,200,200,43" ) ) {
250                 System.out.println( m.getRowAsString( 1, ',' ) );
251                 return false;
252             }
253             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
254                 System.out.println( m.getRowAsString( 2, ',' ) );
255                 return false;
256             }
257             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_CIOSA,200,200,201,201,201,201" ) ) {
258                 System.out.println( m.getRowAsString( 3, ',' ) );
259                 return false;
260             }
261             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE,200,200,201,201,201,43" ) ) {
262                 System.out.println( m.getRowAsString( 4, ',' ) );
263                 return false;
264             }
265             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR,200,43,43,201,43,201" ) ) {
266                 System.out.println( m.getRowAsString( 5, ',' ) );
267                 return false;
268             }
269             //
270             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxid.run1.t" ),
271                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
272                                       ALGORITHM.GSDIR,
273                                       REROOTING.BY_ALGORITHM,
274                                       "",
275                                       -1,
276                                       -1,
277                                       true,
278                                       false );
279             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.ID ) {
280                 return false;
281             }
282             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
283                 return false;
284             }
285             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
286                 return false;
287             }
288             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
289                 return false;
290             }
291             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
292                 return false;
293             }
294             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
295                 return false;
296             }
297             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
298             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_45351,201,200,201,200,200,200" ) ) {
299                 System.out.println( m.getRowAsString( 0, ',' ) );
300                 return false;
301             }
302             //mouse
303             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_10090,200,201,200,201,201,43" ) ) {
304                 System.out.println( m.getRowAsString( 1, ',' ) );
305                 return false;
306             }
307             //human
308             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_9606,201,200,201,200,200,43" ) ) {
309                 System.out.println( m.getRowAsString( 2, ',' ) );
310                 return false;
311             }
312             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_51511,200,201,200,201,201,201" ) ) {
313                 System.out.println( m.getRowAsString( 3, ',' ) );
314                 return false;
315             }
316             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_7955,200,201,200,201,201,43" ) ) {
317                 System.out.println( m.getRowAsString( 4, ',' ) );
318                 return false;
319             }
320             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_8364,200,43,43,201,43,201" ) ) {
321                 System.out.println( m.getRowAsString( 5, ',' ) );
322                 return false;
323             }
324             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
325                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
326                                       ALGORITHM.GSDIR,
327                                       REROOTING.BY_ALGORITHM,
328                                       "",
329                                       -1,
330                                       -1,
331                                       true,
332                                       false );
333             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
334                 return false;
335             }
336             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
337                 return false;
338             }
339             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
340                 return false;
341             }
342             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
343                 return false;
344             }
345             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
346                 return false;
347             }
348             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
349                 return false;
350             }
351             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
352             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,200,200,200" ) ) {
353                 System.out.println( m.getRowAsString( 0, ',' ) );
354                 return false;
355             }
356             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,200,200,43" ) ) {
357                 System.out.println( m.getRowAsString( 1, ',' ) );
358                 return false;
359             }
360             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,201,201,43" ) ) {
361                 System.out.println( m.getRowAsString( 2, ',' ) );
362                 return false;
363             }
364             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,200,200,201,201,201,201" ) ) {
365                 System.out.println( m.getRowAsString( 3, ',' ) );
366                 return false;
367             }
368             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,201,201,43" ) ) {
369                 System.out.println( m.getRowAsString( 4, ',' ) );
370                 return false;
371             }
372             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,201,43,201" ) ) {
373                 System.out.println( m.getRowAsString( 5, ',' ) );
374                 return false;
375             }
376             //
377             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
378                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
379                                       ALGORITHM.GSDIR,
380                                       REROOTING.MIDPOINT,
381                                       "",
382                                       -1,
383                                       -1,
384                                       true,
385                                       false );
386             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
387                 return false;
388             }
389             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
390                 return false;
391             }
392             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
393                 return false;
394             }
395             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
396                 return false;
397             }
398             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
399                 return false;
400             }
401             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
402                 return false;
403             }
404             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
405             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,94,93,160,93,93" ) ) {
406                 System.out.println( m.getRowAsString( 0, ',' ) );
407                 return false;
408             }
409             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,94,201,200,53,200,43" ) ) {
410                 System.out.println( m.getRowAsString( 1, ',' ) );
411                 return false;
412             }
413             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,93,200,201,53,201,43" ) ) {
414                 System.out.println( m.getRowAsString( 2, ',' ) );
415                 return false;
416             }
417             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,160,53,53,201,53,53" ) ) {
418                 System.out.println( m.getRowAsString( 3, ',' ) );
419                 return false;
420             }
421             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,93,200,201,53,201,43" ) ) {
422                 System.out.println( m.getRowAsString( 4, ',' ) );
423                 return false;
424             }
425             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,93,43,43,53,43,201" ) ) {
426                 System.out.println( m.getRowAsString( 5, ',' ) );
427                 return false;
428             }
429             //
430             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
431                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
432                                       ALGORITHM.GSDIR,
433                                       REROOTING.OUTGROUP,
434                                       "H2ZH97_Ciona_savignyi",
435                                       -1,
436                                       -1,
437                                       true,
438                                       false );
439             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
440                 return false;
441             }
442             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
443                 return false;
444             }
445             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
446                 return false;
447             }
448             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
449                 return false;
450             }
451             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
452                 return false;
453             }
454             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 2 ) {
455                 return false;
456             }
457             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
458             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,201,201,200,0,200,200" ) ) {
459                 System.out.println( m.getRowAsString( 0, ',' ) );
460                 return false;
461             }
462             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,201,201,200,0,200,43" ) ) {
463                 System.out.println( m.getRowAsString( 1, ',' ) );
464                 return false;
465             }
466             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,200,200,201,0,201,43" ) ) {
467                 System.out.println( m.getRowAsString( 2, ',' ) );
468                 return false;
469             }
470             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,0,0,0,201,0,0" ) ) {
471                 System.out.println( m.getRowAsString( 3, ',' ) );
472                 return false;
473             }
474             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,200,200,201,0,201,43" ) ) {
475                 System.out.println( m.getRowAsString( 4, ',' ) );
476                 return false;
477             }
478             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,200,43,43,0,43,201" ) ) {
479                 System.out.println( m.getRowAsString( 5, ',' ) );
480                 return false;
481             }
482             //
483             //
484             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxsn.run1.t" ),
485                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
486                                       ALGORITHM.GSDIR,
487                                       REROOTING.NONE,
488                                       null,
489                                       10,
490                                       19,
491                                       true,
492                                       false );
493             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.SCIENTIFIC_NAME ) {
494                 return false;
495             }
496             if ( r0.getAnalyzedGeneTrees().length != 10 ) {
497                 return false;
498             }
499             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
500                 return false;
501             }
502             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
503                 return false;
504             }
505             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
506                 return false;
507             }
508             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 4 ) {
509                 return false;
510             }
511             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
512             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_Nematostella_vectensis,10,0,0,10,0,0" ) ) {
513                 System.out.println( m.getRowAsString( 0, ',' ) );
514                 return false;
515             }
516             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_Homo_sapiens,0,10,0,0,0,0" ) ) {
517                 System.out.println( m.getRowAsString( 1, ',' ) );
518                 return false;
519             }
520             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_Mus_musculus,0,0,10,0,0,0" ) ) {
521                 System.out.println( m.getRowAsString( 2, ',' ) );
522                 return false;
523             }
524             if ( !m.getRowAsString( 3, ',' ).equals( "H2ZH97_Ciona_savignyi,10,0,0,10,0,0" ) ) {
525                 System.out.println( m.getRowAsString( 3, ',' ) );
526                 return false;
527             }
528             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_Danio_rerio,0,0,0,0,10,0" ) ) {
529                 System.out.println( m.getRowAsString( 4, ',' ) );
530                 return false;
531             }
532             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_Xenopus_tropicalis,0,0,0,0,0,10" ) ) {
533                 System.out.println( m.getRowAsString( 5, ',' ) );
534                 return false;
535             }
536             //
537             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_1.run1.t" ),
538                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
539                                       ALGORITHM.GSDIR,
540                                       REROOTING.BY_ALGORITHM,
541                                       "",
542                                       -1,
543                                       -1,
544                                       true,
545                                       false );
546             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
547                 return false;
548             }
549             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
550                 return false;
551             }
552             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 3 ) {
553                 return false;
554             }
555             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 2 ) {
556                 return false;
557             }
558             if ( r0.getRemovedGeneTreeNodes().size() != 3 ) {
559                 return false;
560             }
561             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 0 ) {
562                 return false;
563             }
564             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
565             if ( !m.getRowAsString( 0, ',' ).equals( "BCDO2_HUMAN,201,201,201" ) ) {
566                 System.out.println( m.getRowAsString( 0, ',' ) );
567                 return false;
568             }
569             if ( !m.getRowAsString( 1, ',' ).equals( "Q1RLW1_DANRE,201,201,201" ) ) {
570                 System.out.println( m.getRowAsString( 1, ',' ) );
571                 return false;
572             }
573             if ( !m.getRowAsString( 2, ',' ).equals( "Q6DIN7_XENTR,201,201,201" ) ) {
574                 System.out.println( m.getRowAsString( 2, ',' ) );
575                 return false;
576             }
577             //
578             //
579             r0 = RIO.executeAnalysis( new File( PATH_TO_TEST_DATA + "rio_mb_taxcode_2.run1.t" ),
580                                       new File( PATH_TO_TEST_DATA + "rio_tol_1.xml" ),
581                                       ALGORITHM.GSDIR,
582                                       REROOTING.BY_ALGORITHM,
583                                       "",
584                                       -1,
585                                       -1,
586                                       true,
587                                       false );
588             if ( r0.getGSDIRtaxCompBase() != TaxonomyComparisonBase.CODE ) {
589                 return false;
590             }
591             if ( r0.getAnalyzedGeneTrees().length != 201 ) {
592                 return false;
593             }
594             if ( r0.getExtNodesOfAnalyzedGeneTrees() != 6 ) {
595                 return false;
596             }
597             if ( r0.getIntNodesOfAnalyzedGeneTrees() != 5 ) {
598                 return false;
599             }
600             if ( r0.getRemovedGeneTreeNodes().size() != 0 ) {
601                 return false;
602             }
603             if ( ForesterUtil.roundToInt( r0.getDuplicationsStatistics().median() ) != 1 ) {
604                 return false;
605             }
606             m = RIO.calculateOrthologTable( r0.getAnalyzedGeneTrees(), true );
607             if ( !m.getRowAsString( 0, ',' ).equals( "A7SHU1_NEMVE&1,201,201,200,200,200,200" ) ) {
608                 System.out.println( m.getRowAsString( 0, ',' ) );
609                 return false;
610             }
611             if ( !m.getRowAsString( 1, ',' ).equals( "BCDO2_HUMAN+,201,201,200,200,200,43" ) ) {
612                 System.out.println( m.getRowAsString( 1, ',' ) );
613                 return false;
614             }
615             if ( !m.getRowAsString( 2, ',' ).equals( "BCDO2_MOUSE,200,200,201,201,201,43" ) ) {
616                 System.out.println( m.getRowAsString( 2, ',' ) );
617                 return false;
618             }
619             if ( !m.getRowAsString( 3, ',' ).equals( "CIOSA,200,200,201,201,201,201" ) ) {
620                 System.out.println( m.getRowAsString( 3, ',' ) );
621                 return false;
622             }
623             if ( !m.getRowAsString( 4, ',' ).equals( "Q1RLW1_DANRE/12-45,200,200,201,201,201,43" ) ) {
624                 System.out.println( m.getRowAsString( 4, ',' ) );
625                 return false;
626             }
627             if ( !m.getRowAsString( 5, ',' ).equals( "Q6DIN7_XENTR-LOUSE,200,43,43,201,43,201" ) ) {
628                 System.out.println( m.getRowAsString( 5, ',' ) );
629                 return false;
630             }
631             //
632         }
633         catch ( final Exception e ) {
634             e.printStackTrace( System.out );
635             return false;
636         }
637         return true;
638     }
639 }