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