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