tests...
[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 ( !failed ) {
29             System.out.println( "OK" );
30         }
31     }
32
33     public static boolean test() {
34         if ( !testCladeAnalysis1() ) {
35             return false;
36         }
37         if ( !testCladeAnalysis2() ) {
38             return false;
39         }
40         return true;
41     }
42
43     private static boolean testCladeAnalysis1() {
44         try {
45             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_1.xml" );
46             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
47             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
48             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
49             Result res = Analysis.execute( p1, "A.1.1.1", "." );
50             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
51                 return false;
52             }
53             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
54                 return false;
55             }
56             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
57                 return false;
58             }
59             if ( res.getLeastEncompassingCladeSize() != 4 ) {
60                 return false;
61             }
62             if ( res.getTreeSize() != 25 ) {
63                 return false;
64             }
65             if ( res.getWarnings().size() != 0 ) {
66                 return false;
67             }
68             res = Analysis.execute( p1, "A.1.1.2", "." );
69             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
70                 return false;
71             }
72             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
73                 return false;
74             }
75             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
76                 return false;
77             }
78             if ( res.getLeastEncompassingCladeSize() != 4 ) {
79                 return false;
80             }
81             if ( res.getTreeSize() != 25 ) {
82                 return false;
83             }
84             if ( res.getWarnings().size() != 0 ) {
85                 return false;
86             }
87             res = Analysis.execute( p1, "A.1.1.3", "." );
88             if ( !res.getGreatestCommonPrefix().equals( "A.1" ) ) {
89                 return false;
90             }
91             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
92                 return false;
93             }
94             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.2.1" ) ) {
95                 return false;
96             }
97             if ( res.getLeastEncompassingCladeSize() != 4 ) {
98                 return false;
99             }
100             if ( res.getTreeSize() != 25 ) {
101                 return false;
102             }
103             if ( res.getWarnings().size() != 0 ) {
104                 return false;
105             }
106             res = Analysis.execute( p1, "A.1.1.4", "." );
107             if ( !res.getGreatestCommonPrefix().equals( "A.1.1" ) ) {
108                 return false;
109             }
110             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
111                 return false;
112             }
113             if ( !res.getGreatestCommonPrefixUp().equals( "A.1.1" ) ) {
114                 return false;
115             }
116             if ( res.getLeastEncompassingCladeSize() != 3 ) {
117                 return false;
118             }
119             if ( res.getTreeSize() != 25 ) {
120                 return false;
121             }
122             if ( res.getWarnings().size() != 0 ) {
123                 return false;
124             }
125             res = Analysis.execute( p1, "A.1.2.1", "." );
126             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
127                 return false;
128             }
129             if ( !res.getGreatestCommonPrefixDown().equals( "A.1.1" ) ) {
130                 return false;
131             }
132             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
133                 return false;
134             }
135             if ( res.getLeastEncompassingCladeSize() != 17 ) {
136                 return false;
137             }
138             if ( res.getTreeSize() != 25 ) {
139                 return false;
140             }
141             if ( res.getWarnings().size() != 0 ) {
142                 return false;
143             }
144             res = Analysis.execute( p1, "A.2.1.1", "." );
145             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
146                 return false;
147             }
148             if ( !res.getGreatestCommonPrefixDown().equals( "A.2.1.2" ) ) {
149                 return false;
150             }
151             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
152                 return false;
153             }
154             if ( res.getLeastEncompassingCladeSize() != 17 ) {
155                 return false;
156             }
157             if ( res.getTreeSize() != 25 ) {
158                 return false;
159             }
160             if ( res.getWarnings().size() != 0 ) {
161                 return false;
162             }
163             res = Analysis.execute( p1, "A.2.1.2", "." );
164             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
165                 return false;
166             }
167             if ( !res.getGreatestCommonPrefixDown().equals( "A.2.1.1" ) ) {
168                 return false;
169             }
170             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
171                 return false;
172             }
173             if ( res.getLeastEncompassingCladeSize() != 17 ) {
174                 return false;
175             }
176             if ( res.getTreeSize() != 25 ) {
177                 return false;
178             }
179             if ( res.getWarnings().size() != 0 ) {
180                 return false;
181             }
182             res = Analysis.execute( p1, "A.3.1.1", "." );
183             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
184                 return false;
185             }
186             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1.2" ) ) {
187                 return false;
188             }
189             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.2.1" ) ) {
190                 return false;
191             }
192             if ( res.getLeastEncompassingCladeSize() != 2 ) {
193                 return false;
194             }
195             if ( res.getTreeSize() != 25 ) {
196                 return false;
197             }
198             if ( res.getWarnings().size() != 0 ) {
199                 return false;
200             }
201             res = Analysis.execute( p1, "A.3.1.2", "." );
202             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
203                 return false;
204             }
205             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1.1" ) ) {
206                 return false;
207             }
208             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.2.1" ) ) {
209                 return false;
210             }
211             if ( res.getLeastEncompassingCladeSize() != 2 ) {
212                 return false;
213             }
214             if ( res.getTreeSize() != 25 ) {
215                 return false;
216             }
217             if ( res.getWarnings().size() != 0 ) {
218                 return false;
219             }
220             res = Analysis.execute( p1, "A.3.2.1", "." );
221             if ( !res.getGreatestCommonPrefix().equals( "A.3" ) ) {
222                 return false;
223             }
224             if ( !res.getGreatestCommonPrefixDown().equals( "A.3.1" ) ) {
225                 return false;
226             }
227             if ( !res.getGreatestCommonPrefixUp().equals( "A.3.3.1" ) ) {
228                 return false;
229             }
230             if ( res.getLeastEncompassingCladeSize() != 3 ) {
231                 return false;
232             }
233             if ( res.getTreeSize() != 25 ) {
234                 return false;
235             }
236             if ( res.getWarnings().size() != 0 ) {
237                 return false;
238             }
239             res = Analysis.execute( p1, "A.3.3.1", "." );
240             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
241                 return false;
242             }
243             if ( !res.getGreatestCommonPrefixDown().equals( "A.3" ) ) {
244                 return false;
245             }
246             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
247                 return false;
248             }
249             if ( res.getLeastEncompassingCladeSize() != 10 ) {
250                 return false;
251             }
252             if ( res.getTreeSize() != 25 ) {
253                 return false;
254             }
255             if ( res.getWarnings().size() != 0 ) {
256                 return false;
257             }
258             res = Analysis.execute( p1, "A.4.1.1", "." );
259             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
260                 return false;
261             }
262             if ( !res.getGreatestCommonPrefixDown().equals( "A.4.1.1.a" ) ) {
263                 return false;
264             }
265             if ( !res.getGreatestCommonPrefixUp().equals( "A.4.1.2" ) ) {
266                 return false;
267             }
268             if ( res.getLeastEncompassingCladeSize() != 3 ) {
269                 return false;
270             }
271             if ( res.getTreeSize() != 25 ) {
272                 return false;
273             }
274             if ( res.getWarnings().size() != 0 ) {
275                 return false;
276             }
277             res = Analysis.execute( p1, "A.4.1.1.a", "." );
278             if ( !res.getGreatestCommonPrefix().equals( "A.4.1" ) ) {
279                 return false;
280             }
281             if ( !res.getGreatestCommonPrefixDown().equals( "A.4.1.1" ) ) {
282                 return false;
283             }
284             if ( !res.getGreatestCommonPrefixUp().equals( "A.4.1.2" ) ) {
285                 return false;
286             }
287             if ( res.getLeastEncompassingCladeSize() != 3 ) {
288                 return false;
289             }
290             if ( res.getTreeSize() != 25 ) {
291                 return false;
292             }
293             if ( res.getWarnings().size() != 0 ) {
294                 return false;
295             }
296             res = Analysis.execute( p1, "A.4.1.2", "." );
297             res = Analysis.execute( p1, "A.4.1.2.a", "." );
298             res = Analysis.execute( p1, "A.5.1.1", "." );
299             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
300                 return false;
301             }
302             if ( !res.getGreatestCommonPrefixDown().equals( "A.5.1.2" ) ) {
303                 return false;
304             }
305             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
306                 return false;
307             }
308             if ( res.getLeastEncompassingCladeSize() != 10 ) {
309                 return false;
310             }
311             if ( res.getTreeSize() != 25 ) {
312                 return false;
313             }
314             if ( res.getWarnings().size() != 0 ) {
315                 return false;
316             }
317             res = Analysis.execute( p1, "A.5.1.2", "." );
318             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
319                 return false;
320             }
321             if ( !res.getGreatestCommonPrefixDown().equals( "A.5.1.1" ) ) {
322                 return false;
323             }
324             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
325                 return false;
326             }
327             if ( res.getLeastEncompassingCladeSize() != 10 ) {
328                 return false;
329             }
330             if ( res.getTreeSize() != 25 ) {
331                 return false;
332             }
333             if ( res.getWarnings().size() != 0 ) {
334                 return false;
335             }
336             res = Analysis.execute( p1, "A.6.3.12", "." );
337             if ( !res.getGreatestCommonPrefix().equals( "A" ) ) {
338                 return false;
339             }
340             if ( !res.getGreatestCommonPrefixDown().equals( "A" ) ) {
341                 return false;
342             }
343             if ( !res.getGreatestCommonPrefixUp().equals( "A" ) ) {
344                 return false;
345             }
346             if ( res.getLeastEncompassingCladeSize() != 17 ) {
347                 return false;
348             }
349             if ( res.getTreeSize() != 25 ) {
350                 return false;
351             }
352             if ( res.getWarnings().size() != 0 ) {
353                 return false;
354             }
355             res = Analysis.execute( p1, "B.1.1.1", "." );
356             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
357                 return false;
358             }
359             if ( !res.getGreatestCommonPrefixDown().equals( "B.1.234.3" ) ) {
360                 return false;
361             }
362             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
363                 return false;
364             }
365             if ( res.getLeastEncompassingCladeSize() != 25 ) {
366                 return false;
367             }
368             if ( res.getTreeSize() != 25 ) {
369                 return false;
370             }
371             if ( res.getWarnings().size() != 2 ) {
372                 return false;
373             }
374             res = Analysis.execute( p1, "B.1.234.3", "." );
375             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
376                 return false;
377             }
378             if ( !res.getGreatestCommonPrefixDown().equals( "B.1.1.1" ) ) {
379                 return false;
380             }
381             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
382                 return false;
383             }
384             if ( res.getLeastEncompassingCladeSize() != 25 ) {
385                 return false;
386             }
387             if ( res.getTreeSize() != 25 ) {
388                 return false;
389             }
390             if ( res.getWarnings().size() != 2 ) {
391                 return false;
392             }
393             res = Analysis.execute( p1, "C.1.1.1", "." );
394             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
395                 return false;
396             }
397             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1.2" ) ) {
398                 return false;
399             }
400             if ( !res.getGreatestCommonPrefixUp().equals( "C.1.2.1" ) ) {
401                 return false;
402             }
403             if ( res.getLeastEncompassingCladeSize() != 2 ) {
404                 return false;
405             }
406             if ( res.getTreeSize() != 25 ) {
407                 return false;
408             }
409             if ( res.getWarnings().size() != 0 ) {
410                 return false;
411             }
412             res = Analysis.execute( p1, "C.1.1.2", "." );
413             if ( !res.getGreatestCommonPrefix().equals( "C.1" ) ) {
414                 return false;
415             }
416             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1.1" ) ) {
417                 return false;
418             }
419             if ( !res.getGreatestCommonPrefixUp().equals( "C.1.2.1" ) ) {
420                 return false;
421             }
422             if ( res.getLeastEncompassingCladeSize() != 2 ) {
423                 return false;
424             }
425             if ( res.getTreeSize() != 25 ) {
426                 return false;
427             }
428             if ( res.getWarnings().size() != 0 ) {
429                 return false;
430             }
431             res = Analysis.execute( p1, "C.1.2.1", "." );
432             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
433                 return false;
434             }
435             if ( !res.getGreatestCommonPrefixDown().equals( "C.1.1" ) ) {
436                 return false;
437             }
438             if ( !res.getGreatestCommonPrefixUp().equals( "C.2.1" ) ) {
439                 return false;
440             }
441             if ( res.getLeastEncompassingCladeSize() != 3 ) {
442                 return false;
443             }
444             if ( res.getTreeSize() != 25 ) {
445                 return false;
446             }
447             if ( res.getWarnings().size() != 0 ) {
448                 return false;
449             }
450             res = Analysis.execute( p1, "C.2.1", "." );
451             if ( !res.getGreatestCommonPrefix().equals( "C" ) ) {
452                 return false;
453             }
454             if ( !res.getGreatestCommonPrefixDown().equals( "C.1" ) ) {
455                 return false;
456             }
457             if ( !res.getGreatestCommonPrefixUp().equals( "C.3" ) ) {
458                 return false;
459             }
460             if ( res.getLeastEncompassingCladeSize() != 4 ) {
461                 return false;
462             }
463             if ( res.getTreeSize() != 25 ) {
464                 return false;
465             }
466             if ( res.getWarnings().size() != 0 ) {
467                 return false;
468             }
469             res = Analysis.execute( p1, "C.3", "." );
470             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
471                 return false;
472             }
473             if ( !res.getGreatestCommonPrefixDown().equals( "C" ) ) {
474                 return false;
475             }
476             if ( !res.getGreatestCommonPrefixUp().equals( "QE.1.1.1.2.1" ) ) {
477                 return false;
478             }
479             if ( res.getLeastEncompassingCladeSize() != 5 ) {
480                 return false;
481             }
482             if ( res.getTreeSize() != 25 ) {
483                 return false;
484             }
485             if ( res.getWarnings().size() != 1 ) {
486                 return false;
487             }
488             res = Analysis.execute( p1, "QE.1.1.1.2.1", "." );
489             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
490                 return false;
491             }
492             if ( !res.getGreatestCommonPrefixDown().equals( "C" ) ) {
493                 return false;
494             }
495             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
496                 return false;
497             }
498             if ( res.getLeastEncompassingCladeSize() != 25 ) {
499                 return false;
500             }
501             if ( res.getTreeSize() != 25 ) {
502                 return false;
503             }
504             if ( res.getWarnings().size() != 2 ) {
505                 return false;
506             }
507         }
508         catch ( final Exception e ) {
509             e.printStackTrace( System.out );
510             return false;
511         }
512         return true;
513     }
514
515     private static boolean testCladeAnalysis2() {
516         try {
517             final File intreefile1 = new File( PATH_TO_TEST_DATA + "clade_analysis_test_2.xml" );
518             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
519             final PhylogenyParser pp = ParserUtils.createParserDependingOnFileType( intreefile1, true );
520             final Phylogeny p1 = factory.create( intreefile1, pp )[ 0 ];
521             Result res = Analysis.execute( p1, "6_DQ278891", null );
522             if ( !res.getGreatestCommonPrefix().equals( "6_" ) ) {
523                 return false;
524             }
525             if ( !res.getGreatestCommonPrefixDown().equals( "6_DQ278893" ) ) {
526                 return false;
527             }
528             if ( !res.getGreatestCommonPrefixUp().equals( "6_JX183550" ) ) {
529                 return false;
530             }
531             if ( res.getLeastEncompassingCladeSize() != 2 ) {
532                 return false;
533             }
534             if ( res.getTreeSize() != 219 ) {
535                 return false;
536             }
537             if ( res.getWarnings().size() != 0 ) {
538                 return false;
539             }
540             res = Analysis.execute( p1, "6xa_EU408330", null );
541             if ( !res.getGreatestCommonPrefix().equals( "6xa_EU40833" ) ) {
542                 return false;
543             }
544             if ( !res.getGreatestCommonPrefixDown().equals( "6xa_EU408331" ) ) {
545                 return false;
546             }
547             if ( !res.getGreatestCommonPrefixUp().equals( "6xa_EU408332" ) ) {
548                 return false;
549             }
550             if ( res.getLeastEncompassingCladeSize() != 2 ) {
551                 return false;
552             }
553             if ( res.getTreeSize() != 219 ) {
554                 return false;
555             }
556             if ( res.getWarnings().size() != 0 ) {
557                 return false;
558             }
559             res = Analysis.execute( p1, "7a_EF108306", null );
560             if ( !res.getGreatestCommonPrefix().equals( "" ) ) {
561                 return false;
562             }
563             if ( !res.getGreatestCommonPrefixDown().equals( "2" ) ) {
564                 return false;
565             }
566             if ( !res.getGreatestCommonPrefixUp().equals( "" ) ) {
567                 return false;
568             }
569             if ( res.getLeastEncompassingCladeSize() != 219 ) {
570                 return false;
571             }
572             if ( res.getTreeSize() != 219 ) {
573                 return false;
574             }
575             if ( res.getWarnings().size() != 2 ) {
576                 return false;
577             }
578         }
579         catch ( final Exception e ) {
580             e.printStackTrace( System.out );
581             return false;
582         }
583         return true;
584     }
585 }