in progress...
[jalview.git] / forester / java / src / org / forester / clade_analysis / CladeAnalysisTest.java
1
2 package org.forester.clade_analysis;
3
4 import java.io.File;
5
6 import org.forester.io.parsers.PhylogenyParser;
7 import org.forester.io.parsers.util.ParserUtils;
8 import org.forester.phylogeny.Phylogeny;
9 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
10 import org.forester.phylogeny.factories.PhylogenyFactory;
11 import org.forester.util.ForesterUtil;
12
13 public class CladeAnalysisTest {
14
15     private final static String PATH_TO_TEST_DATA = System.getProperty( "user.dir" ) + ForesterUtil.getFileSeparator()
16             + "test_data" + ForesterUtil.getFileSeparator();
17
18     public static void main( final String[] args ) {
19         boolean failed = false;
20         if ( !testCladeAnalysis1() ) {
21             System.out.println( "Clade analysis 1 failed" );
22             failed = true;
23         }
24         if ( !testCladeAnalysis2() ) {
25             System.out.println( "Clade analysis 2 failed" );
26             failed = true;
27         }
28         if ( !testCladeAnalysis3() ) {
29             System.out.println( "Clade analysis 3 failed" );
30             failed = true;
31         }
32         if ( !testCladeAnalysis4() ) {
33             System.out.println( "Clade analysis 4 failed" );
34             failed = true;
35         }
36         if ( !testCladeAnalysis5() ) {
37             System.out.println( "Clade analysis 5 failed" );
38             failed = true;
39         }
40         if ( !testCladeAnalysis6() ) {
41             System.out.println( "Clade analysis 6 failed" );
42             failed = true;
43         }
44         if ( !failed ) {
45             System.out.println( "OK" );
46         }
47         else {
48             System.out.println( "NOT OK" );
49         }
50     }
51
52     public static boolean test() {
53         if ( !testCladeAnalysis1() ) {
54             return false;
55         }
56         if ( !testCladeAnalysis2() ) {
57             return false;
58         }
59         if ( !testCladeAnalysis3() ) {
60             return false;
61         }
62         if ( !testCladeAnalysis4() ) {
63             return false;
64         }
65         if ( !testCladeAnalysis5() ) {
66             return false;
67         }
68         if ( !testCladeAnalysis6() ) {
69             return false;
70         }
71         return true;
72     }
73
74     private static boolean testCladeAnalysis1() {
75         try {
76             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_1.xml" );
77             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
78             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
79             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
80             ResultSingle res = AnalysisSingle.execute( p1, "A.1.1.1", "." );
81             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
82                 return false;
83             }
84             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
85                 return false;
86             }
87             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
88                 return false;
89             }
90             if ( res.getLeastEncompassingCladeSize() != 4 ) {
91                 return false;
92             }
93             if ( res.getTreeSize() != 25 ) {
94                 return false;
95             }
96             if ( res.getWarnings().size() != 0 ) {
97                 return false;
98             }
99             res = AnalysisSingle.execute( p1, "A.1.1.2", "." );
100             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
101                 return false;
102             }
103             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
104                 return false;
105             }
106             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
107                 return false;
108             }
109             if ( res.getLeastEncompassingCladeSize() != 4 ) {
110                 return false;
111             }
112             if ( res.getTreeSize() != 25 ) {
113                 return false;
114             }
115             if ( res.getWarnings().size() != 0 ) {
116                 return false;
117             }
118             res = AnalysisSingle.execute( p1, "A.1.1.3", "." );
119             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
120                 return false;
121             }
122             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
123                 return false;
124             }
125             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
126                 return false;
127             }
128             if ( res.getLeastEncompassingCladeSize() != 4 ) {
129                 return false;
130             }
131             if ( res.getTreeSize() != 25 ) {
132                 return false;
133             }
134             if ( res.getWarnings().size() != 0 ) {
135                 return false;
136             }
137             res = AnalysisSingle.execute( p1, "A.1.1.4", "." );
138             if ( !res.getGreatestCommonPrefix().equals( "A.1.1" ) ) {
139                 return false;
140             }
141             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
142                 return false;
143             }
144             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.1" ) ) {
145                 return false;
146             }
147             if ( res.getLeastEncompassingCladeSize() != 3 ) {
148                 return false;
149             }
150             if ( res.getTreeSize() != 25 ) {
151                 return false;
152             }
153             if ( res.getWarnings().size() != 0 ) {
154                 return false;
155             }
156             res = AnalysisSingle.execute( p1, "A.1.2.1", "." );
157             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
158                 return false;
159             }
160             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
161                 return false;
162             }
163             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
164                 return false;
165             }
166             if ( res.getLeastEncompassingCladeSize() != 17 ) {
167                 return false;
168             }
169             if ( res.getTreeSize() != 25 ) {
170                 return false;
171             }
172             if ( res.getWarnings().size() != 0 ) {
173                 return false;
174             }
175             res = AnalysisSingle.execute( p1, "A.2.1.1", "." );
176             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
177                 return false;
178             }
179             if ( !res.getGreatestCommonPrefixDown().equals( "A.2.1.2" ) ) {
180                 return false;
181             }
182             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
183                 return false;
184             }
185             if ( res.getLeastEncompassingCladeSize() != 17 ) {
186                 return false;
187             }
188             if ( res.getTreeSize() != 25 ) {
189                 return false;
190             }
191             if ( res.getWarnings().size() != 0 ) {
192                 return false;
193             }
194             res = AnalysisSingle.execute( p1, "A.2.1.2", "." );
195             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
196                 return false;
197             }
198             if ( !res.getGreatestCommonPrefixDown().equals( "A.2.1.1" ) ) {
199                 return false;
200             }
201             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
202                 return false;
203             }
204             if ( res.getLeastEncompassingCladeSize() != 17 ) {
205                 return false;
206             }
207             if ( res.getTreeSize() != 25 ) {
208                 return false;
209             }
210             if ( res.getWarnings().size() != 0 ) {
211                 return false;
212             }
213             res = AnalysisSingle.execute( p1, "A.3.1.1", "." );
214             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
215                 return false;
216             }
217             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1.2" ) ) {
218                 return false;
219             }
220             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.2.1" ) ) {
221                 return false;
222             }
223             if ( res.getLeastEncompassingCladeSize() != 2 ) {
224                 return false;
225             }
226             if ( res.getTreeSize() != 25 ) {
227                 return false;
228             }
229             if ( res.getWarnings().size() != 0 ) {
230                 return false;
231             }
232             res = AnalysisSingle.execute( p1, "A.3.1.2", "." );
233             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
234                 return false;
235             }
236             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1.1" ) ) {
237                 return false;
238             }
239             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.2.1" ) ) {
240                 return false;
241             }
242             if ( res.getLeastEncompassingCladeSize() != 2 ) {
243                 return false;
244             }
245             if ( res.getTreeSize() != 25 ) {
246                 return false;
247             }
248             if ( res.getWarnings().size() != 0 ) {
249                 return false;
250             }
251             res = AnalysisSingle.execute( p1, "A.3.2.1", "." );
252             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
253                 return false;
254             }
255             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1" ) ) {
256                 return false;
257             }
258             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.3.1" ) ) {
259                 return false;
260             }
261             if ( res.getLeastEncompassingCladeSize() != 3 ) {
262                 return false;
263             }
264             if ( res.getTreeSize() != 25 ) {
265                 return false;
266             }
267             if ( res.getWarnings().size() != 0 ) {
268                 return false;
269             }
270             res = AnalysisSingle.execute( p1, "A.3.3.1", "." );
271             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
272                 return false;
273             }
274             if ( !res.getGreatestCommonPrefixDown().equals( "A.3" ) ) {
275                 return false;
276             }
277             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
278                 return false;
279             }
280             if ( res.getLeastEncompassingCladeSize() != 10 ) {
281                 return false;
282             }
283             if ( res.getTreeSize() != 25 ) {
284                 return false;
285             }
286             if ( res.getWarnings().size() != 0 ) {
287                 return false;
288             }
289             res = AnalysisSingle.execute( p1, "A.4.1.1", "." );
290             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
291                 return false;
292             }
293             if ( !res.getGreatestCommonPrefixDown().equals( "A.4.1.1.a" ) ) {
294                 return false;
295             }
296             if ( !res.getGreatestCommonPrefixUp().equals( "A.4.1.2" ) ) {
297                 return false;
298             }
299             if ( res.getLeastEncompassingCladeSize() != 3 ) {
300                 return false;
301             }
302             if ( res.getTreeSize() != 25 ) {
303                 return false;
304             }
305             if ( res.getWarnings().size() != 0 ) {
306                 return false;
307             }
308             res = AnalysisSingle.execute( p1, "A.4.1.1.a", "." );
309             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
310                 return false;
311             }
312             if ( !res.getGreatestCommonPrefixDown().equals( "A.4.1.1" ) ) {
313                 return false;
314             }
315             if ( !res.getGreatestCommonPrefixUp().equals( "A.4.1.2" ) ) {
316                 return false;
317             }
318             if ( res.getLeastEncompassingCladeSize() != 3 ) {
319                 return false;
320             }
321             if ( res.getTreeSize() != 25 ) {
322                 return false;
323             }
324             if ( res.getWarnings().size() != 0 ) {
325                 return false;
326             }
327             res = AnalysisSingle.execute( p1, "A.4.1.2", "." );
328             res = AnalysisSingle.execute( p1, "A.4.1.2.a", "." );
329             res = AnalysisSingle.execute( p1, "A.5.1.1", "." );
330             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
331                 return false;
332             }
333             if ( !res.getGreatestCommonPrefixDown().equals( "A.5.1.2" ) ) {
334                 return false;
335             }
336             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
337                 return false;
338             }
339             if ( res.getLeastEncompassingCladeSize() != 10 ) {
340                 return false;
341             }
342             if ( res.getTreeSize() != 25 ) {
343                 return false;
344             }
345             if ( res.getWarnings().size() != 0 ) {
346                 return false;
347             }
348             res = AnalysisSingle.execute( p1, "A.5.1.2", "." );
349             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
350                 return false;
351             }
352             if ( !res.getGreatestCommonPrefixDown().equals( "A.5.1.1" ) ) {
353                 return false;
354             }
355             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
356                 return false;
357             }
358             if ( res.getLeastEncompassingCladeSize() != 10 ) {
359                 return false;
360             }
361             if ( res.getTreeSize() != 25 ) {
362                 return false;
363             }
364             if ( res.getWarnings().size() != 0 ) {
365                 return false;
366             }
367             res = AnalysisSingle.execute( p1, "A.6.3.12", "." );
368             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
369                 return false;
370             }
371             if ( !res.getGreatestCommonPrefixDown().equals( "A" ) ) {
372                 return false;
373             }
374             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
375                 return false;
376             }
377             if ( res.getLeastEncompassingCladeSize() != 17 ) {
378                 return false;
379             }
380             if ( res.getTreeSize() != 25 ) {
381                 return false;
382             }
383             if ( res.getWarnings().size() != 0 ) {
384                 return false;
385             }
386             res = AnalysisSingle.execute( p1, "B.1.1.1", "." );
387             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
388                 return false;
389             }
390             if ( !res.getGreatestCommonPrefixDown().equals( "B.1.234.3" ) ) {
391                 return false;
392             }
393             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
394                 return false;
395             }
396             if ( res.getLeastEncompassingCladeSize() != 25 ) {
397                 return false;
398             }
399             if ( res.getTreeSize() != 25 ) {
400                 return false;
401             }
402             if ( res.getWarnings().size() != 2 ) {
403                 return false;
404             }
405             res = AnalysisSingle.execute( p1, "B.1.234.3", "." );
406             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
407                 return false;
408             }
409             if ( !res.getGreatestCommonPrefixDown().equals( "B.1.1.1" ) ) {
410                 return false;
411             }
412             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
413                 return false;
414             }
415             if ( res.getLeastEncompassingCladeSize() != 25 ) {
416                 return false;
417             }
418             if ( res.getTreeSize() != 25 ) {
419                 return false;
420             }
421             if ( res.getWarnings().size() != 2 ) {
422                 return false;
423             }
424             res = AnalysisSingle.execute( p1, "C.1.1.1", "." );
425             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
426                 return false;
427             }
428             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1.2" ) ) {
429                 return false;
430             }
431             if ( !res.getGreatestCommonPrefixUp().equals( "C.1.2.1" ) ) {
432                 return false;
433             }
434             if ( res.getLeastEncompassingCladeSize() != 2 ) {
435                 return false;
436             }
437             if ( res.getTreeSize() != 25 ) {
438                 return false;
439             }
440             if ( res.getWarnings().size() != 0 ) {
441                 return false;
442             }
443             res = AnalysisSingle.execute( p1, "C.1.1.2", "." );
444             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
445                 return false;
446             }
447             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1.1" ) ) {
448                 return false;
449             }
450             if ( !res.getGreatestCommonPrefixUp().equals( "C.1.2.1" ) ) {
451                 return false;
452             }
453             if ( res.getLeastEncompassingCladeSize() != 2 ) {
454                 return false;
455             }
456             if ( res.getTreeSize() != 25 ) {
457                 return false;
458             }
459             if ( res.getWarnings().size() != 0 ) {
460                 return false;
461             }
462             res = AnalysisSingle.execute( p1, "C.1.2.1", "." );
463             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
464                 return false;
465             }
466             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1" ) ) {
467                 return false;
468             }
469             if ( !res.getGreatestCommonPrefixUp().equals( "C.2.1" ) ) {
470                 return false;
471             }
472             if ( res.getLeastEncompassingCladeSize() != 3 ) {
473                 return false;
474             }
475             if ( res.getTreeSize() != 25 ) {
476                 return false;
477             }
478             if ( res.getWarnings().size() != 0 ) {
479                 return false;
480             }
481             res = AnalysisSingle.execute( p1, "C.2.1", "." );
482             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
483                 return false;
484             }
485             if ( !res.getGreatestCommonPrefixDown().equals( "C.1" ) ) {
486                 return false;
487             }
488             if ( !res.getGreatestCommonPrefixUp().equals( "C.3" ) ) {
489                 return false;
490             }
491             if ( res.getLeastEncompassingCladeSize() != 4 ) {
492                 return false;
493             }
494             if ( res.getTreeSize() != 25 ) {
495                 return false;
496             }
497             if ( res.getWarnings().size() != 0 ) {
498                 return false;
499             }
500             res = AnalysisSingle.execute( p1, "C.3", "." );
501             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
502                 return false;
503             }
504             if ( !res.getGreatestCommonPrefixDown().equals( "C" ) ) {
505                 return false;
506             }
507             if ( !res.getGreatestCommonPrefixUp().equals( "QE.1.1.1.2.1" ) ) {
508                 return false;
509             }
510             if ( res.getLeastEncompassingCladeSize() != 5 ) {
511                 return false;
512             }
513             if ( res.getTreeSize() != 25 ) {
514                 return false;
515             }
516             if ( res.getWarnings().size() != 1 ) {
517                 return false;
518             }
519             res = AnalysisSingle.execute( p1, "QE.1.1.1.2.1", "." );
520             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
521                 return false;
522             }
523             if ( !res.getGreatestCommonPrefixDown().equals( "C" ) ) {
524                 return false;
525             }
526             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
527                 return false;
528             }
529             if ( res.getLeastEncompassingCladeSize() != 25 ) {
530                 return false;
531             }
532             if ( res.getTreeSize() != 25 ) {
533                 return false;
534             }
535             if ( res.getWarnings().size() != 2 ) {
536                 return false;
537             }
538         }
539         catch ( final Exception e ) {
540             e.printStackTrace( System.out );
541             return false;
542         }
543         return true;
544     }
545
546     private static boolean testCladeAnalysis2() {
547         try {
548             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_2.xml" );
549             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
550             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
551             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
552             ResultSingle res = AnalysisSingle.execute( p1, "6_DQ278891", null );
553             if ( !res.getGreatestCommonPrefix().equals( "6_" ) ) {
554                 return false;
555             }
556             if ( !res.getGreatestCommonPrefixDown().equals( "6_DQ278893" ) ) {
557                 return false;
558             }
559             if ( !res.getGreatestCommonPrefixUp().equals( "6_JX183550" ) ) {
560                 return false;
561             }
562             if ( res.getLeastEncompassingCladeSize() != 2 ) {
563                 return false;
564             }
565             if ( res.getTreeSize() != 219 ) {
566                 return false;
567             }
568             if ( res.getWarnings().size() != 0 ) {
569                 return false;
570             }
571             res = AnalysisSingle.execute( p1, "6xa_EU408330", null );
572             if ( !res.getGreatestCommonPrefix().equals( "6xa_EU40833" ) ) {
573                 return false;
574             }
575             if ( !res.getGreatestCommonPrefixDown().equals( "6xa_EU408331" ) ) {
576                 return false;
577             }
578             if ( !res.getGreatestCommonPrefixUp().equals( "6xa_EU408332" ) ) {
579                 return false;
580             }
581             if ( res.getLeastEncompassingCladeSize() != 2 ) {
582                 return false;
583             }
584             if ( res.getTreeSize() != 219 ) {
585                 return false;
586             }
587             if ( res.getWarnings().size() != 0 ) {
588                 return false;
589             }
590             res = AnalysisSingle.execute( p1, "7a_EF108306", null );
591             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
592                 return false;
593             }
594             if ( !res.getGreatestCommonPrefixDown().equals( "2" ) ) {
595                 return false;
596             }
597             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
598                 return false;
599             }
600             if ( res.getLeastEncompassingCladeSize() != 219 ) {
601                 return false;
602             }
603             if ( res.getTreeSize() != 219 ) {
604                 return false;
605             }
606             if ( res.getWarnings().size() != 2 ) {
607                 return false;
608             }
609         }
610         catch ( final Exception e ) {
611             e.printStackTrace( System.out );
612             return false;
613         }
614         return true;
615     }
616
617     private static boolean testCladeAnalysis3() {
618         try {
619             final ResultMulti res1 = new ResultMulti();
620             res1.addGreatestCommonPrefix( "A.1.1", 0.3 );
621             res1.addGreatestCommonPrefix( "A.1.2", 0.3 );
622             res1.addGreatestCommonPrefix( "A.1.3", 0.3 );
623             res1.addGreatestCommonPrefix( "B.1", 0.1 );
624             res1.analyze( 0.5 );
625             System.out.print( res1.toString() );
626             System.out.println( "------------------------- " );
627             System.out.println();
628             final ResultMulti res2 = new ResultMulti( "." );
629             res2.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
630             res2.addGreatestCommonPrefix( "A.1", 0.7 );
631             res2.addGreatestCommonPrefix( "A.1.2", 0.1 );
632             res2.addGreatestCommonPrefix( "B.1", 0.1 );
633             res2.analyze( 0.3 );
634             System.out.print( res2.toString() );
635             System.out.println( "------------------------- " );
636             System.out.println();
637             final ResultMulti res3 = new ResultMulti( "." );
638             res3.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
639             res3.addGreatestCommonPrefix( "A.1.1.1.1", 0.6 );
640             res3.addGreatestCommonPrefix( "A.1", 0.1 );
641             res3.addGreatestCommonPrefix( "A.1.2", 0.1 );
642             res3.addGreatestCommonPrefix( "B.1", 0.1 );
643             res3.analyze( 0.3 );
644             System.out.print( res3.toString() );
645             System.out.println( "------------------------- " );
646             System.out.println();
647             final ResultMulti res33 = new ResultMulti( "." );
648             res33.addGreatestCommonPrefix( "A.1.1.1", 0.1 );
649             res33.addGreatestCommonPrefix( "A.1.1.1.1", 0.3 );
650             res33.addGreatestCommonPrefix( "A.1", 0.1 );
651             res33.addGreatestCommonPrefix( "A.1.2", 0.1 );
652             res33.addGreatestCommonPrefix( "B.1", 0.1 );
653             res33.addGreatestCommonPrefix( "B.1.1.1", 0.3 );
654             res33.analyze( 0.3 );
655             System.out.print( res33.toString() );
656             System.out.println( "------------------------- " );
657             System.out.println();
658             final ResultMulti res4 = new ResultMulti();
659             res4.addGreatestCommonPrefix( "A.1.1.1.1", 0.35 );
660             res4.addGreatestCommonPrefix( "A.1.1.1.2", 0.35 );
661             res4.addGreatestCommonPrefix( "A.1", 0.1 );
662             res4.addGreatestCommonPrefix( "A.1.2", 0.1 );
663             res4.addGreatestCommonPrefix( "B.1", 0.1 );
664             res4.analyze( 0.3 );
665             System.out.print( res4.toString() );
666             System.out.println( "------------------------- " );
667             System.out.println();
668             final ResultMulti res5 = new ResultMulti();
669             res5.addGreatestCommonPrefix( "A.1.1.1.1", 0.2 );
670             res5.addGreatestCommonPrefix( "C.2.3", 0.2 );
671             res5.addGreatestCommonPrefix( "A.1.5", 0.1 );
672             res5.addGreatestCommonPrefix( "A.3.1.4", 0.2 );
673             res5.addGreatestCommonPrefix( "B.1.1", 0.2 );
674             res5.addGreatestCommonPrefix( "B.1.2", 0.09 );
675             res5.addGreatestCommonPrefix( "D.1.1.1.1", 0.01 );
676             res5.analyze( 0.3 );
677             System.out.print( res5.toString() );
678             System.out.println( "------------------------- " );
679             System.out.println();
680             final ResultMulti res6 = new ResultMulti();
681             res6.addGreatestCommonPrefix( "A.1.1.1", 0.05 );
682             res6.addGreatestCommonPrefix( "A.1.1.1.1", 0.65 );
683             res6.addGreatestCommonPrefix( "A.1", 0.1 );
684             res6.addGreatestCommonPrefix( "A.1.2", 0.1 );
685             res6.addGreatestCommonPrefix( "B.1", 0.1 );
686             res6.analyze( 0.3 );
687             System.out.print( res6.toString() );
688             System.out.println( "------------------------- " );
689             System.out.println();
690             final ResultMulti res7 = new ResultMulti();
691             res7.addGreatestCommonPrefix( "A.1.1.1", 0.07 );
692             res7.addGreatestCommonPrefix( "A.1.1.1.1", 0.9 );
693             res7.addGreatestCommonPrefix( "A.1", 0.01 );
694             res7.addGreatestCommonPrefix( "A.1.2", 0.01 );
695             res7.addGreatestCommonPrefix( "B.1", 0.01 );
696             res7.analyze( 0.3 );
697             System.out.print( res7.toString() );
698             System.out.println( "------------------------- " );
699             System.out.println();
700             final ResultMulti res8 = new ResultMulti( "_/_" );
701             res8.addGreatestCommonPrefix( "AA_/_abc_/_def", 0.07 );
702             res8.addGreatestCommonPrefix( "AA_/_abc_/_sfc", 0.9 );
703             res8.addGreatestCommonPrefix( "AA_/_abc_/_xcd", 0.01 );
704             res8.addGreatestCommonPrefix( "AA_/_abc_/_memr", 0.01 );
705             res8.addGreatestCommonPrefix( "AA_/_abc_/_fkem_/_odem", 0.01 );
706             res8.analyze( 0.3 );
707             System.out.print( res8.toString() );
708             System.out.println( "------------------------- " );
709             System.out.println();
710             final ResultMulti res9 = new ResultMulti( "_/_" );
711             res9.addGreatestCommonPrefix( "AA_/_abc_/_def", 0.07 );
712             res9.addGreatestCommonPrefix( "AA_/_abc_/_sfc", 0.6 );
713             res9.addGreatestCommonPrefix( "AA_/_abc_/_xcd", 0.01 );
714             res9.addGreatestCommonPrefix( "AA_/_abc_/_memr", 0.01 );
715             res9.addGreatestCommonPrefix( "AA_/_abc_/_fkem_/_odem", 0.01 );
716             res9.addGreatestCommonPrefix( "BB_/_fke_/_dme_/_nx2", 0.3 );
717             res9.analyze( 0.3 );
718             System.out.print( res9.toString() );
719             System.out.println( "------------------------- " );
720             System.out.println();
721         }
722         catch ( final Exception e ) {
723             e.printStackTrace( System.out );
724             return false;
725         }
726         return true;
727     }
728
729     private static boolean testCladeAnalysis4() {
730         try {
731             final File intreefile1 = new File( PATH_TO_TEST_DATA + "pplacer_2.tre" );
732             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
733             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
734             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
735             final ResultMulti res2 = AnalysisMulti.execute( p1 );
736             res2.analyze( 0.3 );
737             System.out.print( res2.toString() );
738             System.out.println( "------------------------- " );
739             System.out.println();
740         }
741         catch ( final Exception e ) {
742             e.printStackTrace( System.out );
743             return false;
744         }
745         return true;
746     }
747
748     private static boolean testCladeAnalysis5() {
749         try {
750             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_3.xml" );
751             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
752             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
753             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
754             final ResultMulti res = AnalysisMulti.execute( p1 );
755             res.analyze( 0.3 );
756             System.out.print( res.toString() );
757             System.out.println( "------------------------- " );
758             System.out.println();
759         }
760         catch ( final Exception e ) {
761             e.printStackTrace( System.out );
762             return false;
763         }
764         return true;
765     }
766
767     private static boolean testCladeAnalysis6() {
768         try {
769             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_4.xml" );
770             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
771             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
772             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
773             final ResultMulti res = AnalysisMulti.execute( p1, 0.45 );
774             System.out.print( res.toString() );
775             System.out.println( "------------------------- " );
776             System.out.println();
777         }
778         catch ( final Exception e ) {
779             e.printStackTrace( System.out );
780             return false;
781         }
782         return true;
783     }
784 }