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