3 // FORESTER -- software libraries and applications
4 // for evolutionary biology research and applications.
6 // Copyright (C) 2008-2009 Christian M. Zmasek
7 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU Lesser General Public
12 // License as published by the Free Software Foundation; either
13 // version 2.1 of the License, or (at your option) any later version.
15 // This library is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 // Contact: phylosoft @ gmail . com
25 // WWW: https://sites.google.com/site/cmzmasek/home/software/forester
27 package org.forester.surfacing;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.HashSet;
33 import java.util.Iterator;
34 import java.util.List;
37 import java.util.SortedSet;
38 import java.util.TreeSet;
40 import org.forester.evoinference.matrix.character.BasicCharacterStateMatrix;
41 import org.forester.evoinference.matrix.character.CharacterStateMatrix;
42 import org.forester.evoinference.matrix.character.CharacterStateMatrix.BinaryStates;
43 import org.forester.evoinference.matrix.character.CharacterStateMatrix.GainLossStates;
44 import org.forester.io.parsers.HmmPfamOutputParser;
45 import org.forester.io.parsers.nexus.PaupLogParser;
46 import org.forester.io.parsers.nhx.NHXParser;
47 import org.forester.phylogeny.Phylogeny;
48 import org.forester.phylogeny.PhylogenyNode;
49 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
50 import org.forester.phylogeny.factories.PhylogenyFactory;
51 import org.forester.protein.BasicDomain;
52 import org.forester.protein.BasicProtein;
53 import org.forester.protein.BinaryDomainCombination;
54 import org.forester.protein.BinaryDomainCombination.DomainCombinationType;
55 import org.forester.protein.Domain;
56 import org.forester.protein.Protein;
57 import org.forester.protein.ProteinId;
58 import org.forester.species.BasicSpecies;
59 import org.forester.species.Species;
60 import org.forester.test.Test;
61 import org.forester.util.ForesterUtil;
63 @SuppressWarnings( "unused")
64 public class TestSurfacing {
66 private final static double ZERO_DIFF = 1.0E-9;
68 public static boolean isEqual( final double a, final double b ) {
69 return ( ( Math.abs( a - b ) ) < TestSurfacing.ZERO_DIFF );
72 public static boolean test( final File test_dir ) {
73 System.out.print( " Combinable domains: " );
74 if ( !TestSurfacing.testCombinableDomains() ) {
75 System.out.println( "failed." );
78 System.out.println( "OK." );
79 System.out.print( " Directed combinable domains: " );
80 if ( !TestSurfacing.testDirectedCombinableDomains() ) {
81 System.out.println( "failed." );
84 System.out.println( "OK." );
85 System.out.print( " Genome wide specific combinable domains: " );
86 if ( !TestSurfacing.testGenomeWideCombinableDomains() ) {
87 System.out.println( "failed." );
90 System.out.println( "OK." );
91 System.out.print( " Domain architecture based genome similarity calculator: " );
92 if ( !TestSurfacing.testDomainArchitectureBasedGenomeSimilarityCalculator() ) {
93 System.out.println( "failed." );
96 System.out.println( "OK." );
97 System.out.print( " Hmmpfam output parser: " );
98 if ( !TestSurfacing.testHmmPfamOutputParser( test_dir ) ) {
99 System.out.println( "failed." );
102 System.out.println( "OK." );
103 System.out.print( " Hmmpfam output parser with filter: " );
104 if ( !TestSurfacing.testHmmPfamOutputParserWithFilter( test_dir ) ) {
105 System.out.println( "failed." );
108 System.out.println( "OK." );
109 System.out.print( " Combinations based pairwise similarity calculator: " );
110 if ( !TestSurfacing.testCombinationsBasedPairwiseSimilarityCalculator() ) {
111 System.out.println( "failed." );
114 System.out.println( "OK." );
115 System.out.print( " Copy number based pairwise similarity calculator: " );
116 if ( !TestSurfacing.testCopyNumberBasedPairwiseSimilarityCalculator() ) {
119 System.out.println( "OK." );
120 System.out.print( " Domain combination counting: " );
121 if ( !TestSurfacing.testDomainCombinationCounting( test_dir ) ) {
122 System.out.println( "failed." );
125 System.out.println( "OK." );
126 System.out.print( " Basic domain similarity calculator: " );
127 if ( !TestSurfacing.testBasicDomainSimilarityCalculator() ) {
128 System.out.println( "failed." );
131 System.out.println( "OK." );
132 System.out.print( " Basic domain similarity calculator not ignoring species specific domains: " );
133 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() ) {
134 System.out.println( "failed." );
137 System.out.println( "OK." );
138 System.out.print( " Basic domain similarity calculator removal of singles: " );
139 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorRemovalOfSingles() ) {
140 System.out.println( "failed." );
143 System.out.println( "OK." );
144 System.out.print( " Domain sorting: " );
145 if ( !TestSurfacing.testDomainSorting() ) {
146 System.out.println( "failed." );
149 System.out.println( "OK." );
150 System.out.print( " Binary domain combination: " );
151 if ( !TestSurfacing.testBinaryDomainCombination() ) {
152 System.out.println( "failed." );
155 System.out.println( "OK." );
156 System.out.print( " Parsimony: " );
157 if ( !TestSurfacing.testParsimony() ) {
158 System.out.println( "failed." );
161 System.out.println( "OK." );
162 System.out.print( " Directedness: " );
163 if ( !TestSurfacing.testDirectedness() ) {
164 System.out.println( "failed." );
167 System.out.println( "OK." );
168 System.out.print( " Directedness and adjacency: " );
169 if ( !TestSurfacing.testDirectednessAndAdjacency() ) {
170 System.out.println( "failed." );
173 System.out.println( "OK." );
174 System.out.print( " Dollo parsimony on secodary features: " );
175 if ( !TestSurfacing.testParsimonyOnSecondaryFeatures() ) {
176 System.out.println( "failed." );
179 System.out.println( "OK." );
180 System.out.print( " Paup log parser: " );
181 if ( !TestSurfacing.testPaupLogParser( test_dir ) ) {
182 System.out.println( "failed." );
185 System.out.println( "OK." );
186 System.out.print( " Binary state matrix to gain loss matrix: " );
187 if ( !TestSurfacing.testBinaryStateMatrixToGainLossMatrix( test_dir ) ) {
188 System.out.println( "failed." );
191 System.out.println( "OK." );
195 private static StringBuffer mapToStringBuffer( final Map<PhylogenyNode, CharacterStateMatrix.BinaryStates> map ) {
196 final StringBuffer sb = new StringBuffer();
197 for( final PhylogenyNode key : map.keySet() ) {
198 if ( !key.isExternal() ) {
199 sb.append( key.getName() );
201 sb.append( map.get( key ).toString() );
202 sb.append( ForesterUtil.getLineSeparator() );
208 private static boolean testBasicDomainSimilarityCalculator() {
216 // m 2/(2+3) 0 4/(4+2)
221 // mean = ( 2/5 + 0 + 2/3 + 1/5 + 1/2 + 2/7 ) / 6
241 // m - 2/(2+3) 4/(4+2)
245 // mean = (2/5 + 2/3 + 1/2)/3 =
251 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
252 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
253 final Domain C = new BasicDomain( "C", 1, 2, ( short ) 1, ( short ) 1, 0.3, -12 );
254 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
255 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
256 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
257 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
258 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
259 if ( !TestSurfacing.isEqual( X.getPerSequenceScore(), -12 ) ) {
262 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
263 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
264 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
265 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
266 mouse_1.addProteinDomain( A );
267 mouse_1.addProteinDomain( B );
268 mouse_1.addProteinDomain( C );
269 mouse_1.addProteinDomain( D );
270 mouse_1.addProteinDomain( E );
271 rabbit_1.addProteinDomain( A );
272 rabbit_1.addProteinDomain( C );
273 rabbit_1.addProteinDomain( E );
274 rabbit_1.addProteinDomain( F );
275 rabbit_1.addProteinDomain( F );
276 rabbit_1.addProteinDomain( F );
277 rabbit_1.addProteinDomain( F );
278 rabbit_1.addProteinDomain( F );
279 rabbit_1.addProteinDomain( F );
280 ciona_1.addProteinDomain( A );
281 ciona_1.addProteinDomain( A );
282 ciona_1.addProteinDomain( A );
283 ciona_1.addProteinDomain( A );
284 ciona_1.addProteinDomain( A );
285 ciona_1.addProteinDomain( F );
286 ciona_1.addProteinDomain( G );
287 ciona_1.addProteinDomain( X );
288 nemve_1.addProteinDomain( A );
289 nemve_1.addProteinDomain( B );
290 nemve_1.addProteinDomain( C );
291 nemve_1.addProteinDomain( D );
292 nemve_1.addProteinDomain( E );
293 nemve_1.addProteinDomain( F );
294 nemve_1.addProteinDomain( G );
295 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
296 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
297 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
298 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
299 protein_list_mouse.add( mouse_1 );
300 protein_list_rabbit.add( rabbit_1 );
301 protein_list_ciona.add( ciona_1 );
302 protein_list_nemve.add( nemve_1 );
303 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
304 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
306 new BasicSpecies( "mouse" ) ) );
307 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
309 new BasicSpecies( "rabbit" ) ) );
310 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
312 new BasicSpecies( "ciona" ) ) );
313 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
315 new BasicSpecies( "nemve" ) ) );
316 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
320 final SortedSet<DomainSimilarity> sims = calc
321 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
325 final Iterator<DomainSimilarity> sims_it = sims.iterator();
326 final DomainSimilarity sa = sims_it.next();
327 if ( !sa.getDomainId().equals( "A" ) ) {
330 if ( sa.getSpeciesData().size() != 4 ) {
333 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
336 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
339 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
342 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
345 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 5 )
346 + ( 1.0 / 2 ) + ( 2.0 / 7 ) ) / 6 ) ) {
349 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), ( 0.23410788192183737 ) ) ) {
352 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
355 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
358 if ( sa.getN() != 6 ) {
361 if ( sa.getMaximalDifference() != 7 ) {
364 if ( sa.getMaximalDifferenceInCounts() != 3 ) {
367 final DomainSimilarity sb = sims_it.next();
368 if ( !sb.getDomainId().equals( "B" ) ) {
371 if ( sb.getSpeciesData().size() != 2 ) {
374 if ( !sb.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
377 if ( !sb.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
380 if ( !TestSurfacing.isEqual( sb.getMeanSimilarityScore(), 2.0 / 3 ) ) {
383 if ( !TestSurfacing.isEqual( sb.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
386 if ( !TestSurfacing.isEqual( sb.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
389 if ( !TestSurfacing.isEqual( sb.getMinimalSimilarityScore(), ( 2.0 / 3 ) ) ) {
392 if ( sb.getN() != 1 ) {
395 if ( sb.getMaximalDifference() != 2 ) {
398 if ( sb.getMaximalDifferenceInCounts() != 2 ) {
401 final DomainSimilarity sc = sims_it.next();
402 if ( !sc.getDomainId().equals( "C" ) ) {
405 if ( sc.getSpeciesData().size() != 3 ) {
408 if ( !sc.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
411 if ( !sc.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
414 if ( !sc.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
417 if ( !TestSurfacing.isEqual( sc.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + ( 2.0 / 3 ) + ( 1.0 / 2 ) ) / 3 ) ) {
420 if ( !TestSurfacing.isEqual( sc.getStandardDeviationOfSimilarityScore(), 0.13471506281091264 ) ) {
423 if ( !TestSurfacing.isEqual( sc.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
426 if ( !TestSurfacing.isEqual( sc.getMinimalSimilarityScore(), ( 2.0 / 5 ) ) ) {
429 if ( sc.getN() != 3 ) {
432 if ( sc.getMaximalDifference() != 3 ) {
435 if ( sc.getMaximalDifferenceInCounts() != 3 ) {
438 // mouse : ....ABCDE.....
439 // rabbit: ....A.C.EFFF..
440 // ciona : AAAAA......FGX
441 // nemve : ....ABCDEFG...
445 // m 2/(2+3) 0 4/(4+2)
446 // r - 1/(1+5) 3/(3+3)
450 // mean = ( 2/5 + 0 + 2/3 + 1/6 + 1/2 + 2/8 ) / 6
454 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
455 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
457 new BasicSpecies( "mouse" ) ) );
458 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
460 new BasicSpecies( "rabbit" ) ) );
461 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
463 new BasicSpecies( "ciona" ) ) );
464 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
466 new BasicSpecies( "nemve" ) ) );
467 final DomainSimilarityCalculator calc2 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
471 final SortedSet<DomainSimilarity> sims2 = calc2
472 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
476 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
477 final DomainSimilarity sa2 = sims_it2.next();
478 if ( !sa2.getDomainId().equals( "A" ) ) {
481 if ( sa2.getSpeciesData().size() != 4 ) {
484 if ( !sa2.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
487 if ( !sa2.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
490 if ( !sa2.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
493 if ( !sa2.getSpeciesData().keySet().contains( new BasicSpecies( "rabbit" ) ) ) {
496 if ( !TestSurfacing.isEqual( sa2.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 6 )
497 + ( 1.0 / 2 ) + ( 2.0 / 8 ) ) / 6 ) ) {
500 if ( !TestSurfacing.isEqual( sa2.getStandardDeviationOfSimilarityScore(), ( 0.2404663678647683 ) ) ) {
503 if ( !TestSurfacing.isEqual( sa2.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
506 if ( !TestSurfacing.isEqual( sa2.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
509 if ( sa2.getN() != 6 ) {
512 if ( sa2.getMaximalDifference() != 8 ) {
515 if ( sa2.getMaximalDifferenceInCounts() != 3 ) {
518 final Protein ciona_2 = new BasicProtein( "2", "ciona", 0 );
519 ciona_2.addProteinDomain( A );
520 ciona_2.addProteinDomain( A );
521 ciona_2.addProteinDomain( A );
522 ciona_2.addProteinDomain( B );
523 ciona_2.addProteinDomain( B );
524 ciona_2.addProteinDomain( B );
525 ciona_2.addProteinDomain( F );
526 ciona_2.addProteinDomain( F );
527 ciona_2.addProteinDomain( F );
528 ciona_2.addProteinDomain( F );
529 ciona_2.addProteinDomain( G );
530 ciona_2.addProteinDomain( X );
531 final Protein ciona_3 = new BasicProtein( "3", "ciona", 0 );
532 ciona_3.addProteinDomain( A );
533 ciona_3.addProteinDomain( A );
534 ciona_3.addProteinDomain( A );
535 ciona_3.addProteinDomain( A );
536 ciona_3.addProteinDomain( B );
537 ciona_3.addProteinDomain( B );
538 ciona_3.addProteinDomain( X );
539 ciona_3.addProteinDomain( X );
540 protein_list_ciona.add( ciona_2 );
541 protein_list_ciona.add( ciona_3 );
542 final List<GenomeWideCombinableDomains> cdc_list3 = new ArrayList<GenomeWideCombinableDomains>();
543 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
545 new BasicSpecies( "mouse" ) ) );
546 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
548 new BasicSpecies( "rabbit" ) ) );
549 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
551 new BasicSpecies( "ciona" ) ) );
552 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
554 new BasicSpecies( "nemve" ) ) );
555 final DomainSimilarityCalculator calc3 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
559 final SortedSet<DomainSimilarity> sims3 = calc3
560 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
564 final Iterator<DomainSimilarity> sims_it3 = sims3.iterator();
565 final DomainSimilarity sa3 = sims_it3.next();
566 if ( !sa3.getDomainId().equals( "A" ) ) {
569 final SpeciesSpecificDcData ssdsd = sa3.getSpeciesData().get( new BasicSpecies( "ciona" ) );
570 if ( ssdsd.getCombinableDomainIdToCountsMap().size() != 4 ) {
573 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
576 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
579 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
582 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
585 final List<GenomeWideCombinableDomains> cdc_list4 = new ArrayList<GenomeWideCombinableDomains>();
586 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
588 new BasicSpecies( "mouse" ) ) );
589 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
591 new BasicSpecies( "rabbit" ) ) );
592 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
594 new BasicSpecies( "ciona" ) ) );
596 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
598 new BasicSpecies( "nemve" ) ) );
599 final DomainSimilarityCalculator calc4 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
603 final SortedSet<DomainSimilarity> sims4 = calc4
604 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
608 final Iterator<DomainSimilarity> sims_it4 = sims4.iterator();
609 final DomainSimilarity sa4 = sims_it4.next();
610 if ( !sa4.getDomainId().equals( "A" ) ) {
613 final SpeciesSpecificDcData ssdsd4 = sa4.getSpeciesData().get( new BasicSpecies( "ciona" ) );
614 if ( ssdsd4.getCombinableDomainIdToCountsMap().size() != 5 ) {
617 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "A" ) != 3 ) {
620 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
623 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
626 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
629 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
632 final SortedSet<DomainSimilarity> sims4_d = calc4
633 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list4, false, true );
634 final Iterator<DomainSimilarity> sims_it4_d = sims4_d.iterator();
635 final DomainSimilarity sa4_d = sims_it4_d.next();
636 if ( !sa4_d.getDomainId().equals( "A" ) ) {
639 if ( sa4_d.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
643 .isEqual( sa4_d.getMeanSimilarityScore(),
644 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
647 if ( !TestSurfacing.isEqual( sa4_d.getMaximalSimilarityScore(), 1.0 ) ) {
650 if ( !TestSurfacing.isEqual( sa4_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
653 if ( sa4_d.getN() != 6 ) {
656 final SortedSet<DomainSimilarity> sims4_p = calc4
657 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
661 final Iterator<DomainSimilarity> sims_it4_p = sims4_p.iterator();
662 final DomainSimilarity sa4_p = sims_it4_p.next();
663 if ( !sa4_p.getDomainId().equals( "A" ) ) {
666 if ( sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
669 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "A" ) ) {
672 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "B" ) ) {
675 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "F" ) ) {
678 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "G" ) ) {
681 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "X" ) ) {
685 .isEqual( sa4_p.getMeanSimilarityScore(),
686 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
689 if ( !TestSurfacing.isEqual( sa4_p.getMaximalSimilarityScore(), 1 ) ) {
692 if ( !TestSurfacing.isEqual( sa4_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
695 if ( sa4_p.getN() != 6 ) {
698 final List<GenomeWideCombinableDomains> cdc_list5 = new ArrayList<GenomeWideCombinableDomains>();
699 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
701 new BasicSpecies( "mouse" ) ) );
702 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
704 new BasicSpecies( "rabbit" ) ) );
705 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
707 new BasicSpecies( "ciona" ) ) );
708 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
710 new BasicSpecies( "nemve" ) ) );
711 final SortedSet<DomainSimilarity> sims5_d = calc4
712 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list5, false, true );
713 final Iterator<DomainSimilarity> sims_it5_d = sims5_d.iterator();
714 final DomainSimilarity sa5_d = sims_it5_d.next();
715 if ( sa5_d.getSpecies().size() != 4 ) {
718 if ( !sa5_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
721 final SpeciesSpecificDcData ssdsd5 = sa5_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
722 if ( ssdsd5.getCombinableDomainIdToCountsMap().size() != 4 ) {
725 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
728 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
731 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
734 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
737 if ( !sa5_d.getDomainId().equals( "A" ) ) {
740 final Species ciona = new BasicSpecies( "ciona" );
741 if ( sa5_d.getCombinableDomainIds( ciona ).size() != 4 ) {
744 if ( sa5_d.getCombinableDomainIds( ciona ).contains( "A" ) ) {
747 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "B" ) ) {
750 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "F" ) ) {
753 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "G" ) ) {
756 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "X" ) ) {
760 .isEqual( sa5_d.getMeanSimilarityScore(),
761 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
764 if ( !TestSurfacing.isEqual( sa5_d.getMaximalSimilarityScore(), 1.0 ) ) {
767 if ( !TestSurfacing.isEqual( sa5_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
770 if ( sa5_d.getN() != 6 ) {
773 if ( sa5_d.getMaximalDifference() != sa5_d.getMaximalDifferenceInCounts() ) {
776 if ( sa5_d.getMaximalDifference() != 11 ) {
779 if ( sa5_d.getMaximalDifferenceInCounts() != 11 ) {
782 final SortedSet<DomainSimilarity> sims5_p = calc4
783 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
787 final Iterator<DomainSimilarity> sims_it5_p = sims5_p.iterator();
788 final DomainSimilarity sa5_p = sims_it5_p.next();
789 if ( !sa5_p.getDomainId().equals( "A" ) ) {
792 if ( sa5_p.getCombinableDomainIds( ciona ).size() != 4 ) {
795 if ( sa5_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
798 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
801 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
804 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
807 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
811 .isEqual( sa5_p.getMeanSimilarityScore(),
812 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
815 if ( !TestSurfacing.isEqual( sa5_p.getMaximalSimilarityScore(), 1 ) ) {
818 if ( !TestSurfacing.isEqual( sa5_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
821 if ( sa5_p.getN() != 6 ) {
824 if ( sa5_p.getMaximalDifference() != sa5_p.getMaximalDifferenceInCounts() ) {
827 if ( sa5_p.getMaximalDifference() != 2 ) {
830 if ( sa5_p.getMaximalDifferenceInCounts() != 2 ) {
833 final List<GenomeWideCombinableDomains> cdc_list6 = new ArrayList<GenomeWideCombinableDomains>();
834 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
836 new BasicSpecies( "mouse" ) ) );
837 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
839 new BasicSpecies( "rabbit" ) ) );
840 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
842 new BasicSpecies( "ciona" ) ) );
843 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
845 new BasicSpecies( "nemve" ) ) );
846 final SortedSet<DomainSimilarity> sims6_d = calc4
847 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list6, false, true );
848 final Iterator<DomainSimilarity> sims_it6_d = sims6_d.iterator();
849 final DomainSimilarity sa6_d = sims_it6_d.next();
850 if ( sa6_d.getSpecies().size() != 4 ) {
853 if ( !sa6_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
856 final SpeciesSpecificDcData ssdsd6 = sa6_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
857 if ( ssdsd6.getCombinableDomainIdToCountsMap().size() != 5 ) {
860 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
863 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
866 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
869 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
872 if ( !sa5_d.getDomainId().equals( "A" ) ) {
875 final Species ciona6 = new BasicSpecies( "ciona" );
876 if ( sa6_d.getCombinableDomainIds( ciona6 ).size() != 5 ) {
879 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "A" ) ) {
882 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "B" ) ) {
885 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "F" ) ) {
888 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "G" ) ) {
891 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "X" ) ) {
895 .isEqual( sa6_d.getMeanSimilarityScore(),
896 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
899 if ( !TestSurfacing.isEqual( sa6_d.getMaximalSimilarityScore(), 1.0 ) ) {
902 if ( !TestSurfacing.isEqual( sa6_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
905 if ( sa6_d.getN() != 6 ) {
908 if ( sa6_d.getMaximalDifference() != sa6_d.getMaximalDifferenceInCounts() ) {
911 if ( sa6_d.getMaximalDifference() != 11 ) {
914 if ( sa6_d.getMaximalDifferenceInCounts() != 11 ) {
917 final SortedSet<DomainSimilarity> sims6_p = calc4
918 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
922 final Iterator<DomainSimilarity> sims_it6_p = sims6_p.iterator();
923 final DomainSimilarity sa6_p = sims_it6_p.next();
924 if ( !sa6_p.getDomainId().equals( "A" ) ) {
927 if ( sa6_p.getCombinableDomainIds( ciona ).size() != 5 ) {
930 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
933 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
936 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
939 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
942 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
946 .isEqual( sa6_p.getMeanSimilarityScore(),
947 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
950 if ( !TestSurfacing.isEqual( sa6_p.getMaximalSimilarityScore(), 1 ) ) {
953 if ( !TestSurfacing.isEqual( sa6_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
956 if ( sa6_p.getN() != 6 ) {
959 if ( sa6_p.getMaximalDifference() != sa6_p.getMaximalDifferenceInCounts() ) {
962 if ( sa6_p.getMaximalDifference() != 2 ) {
965 if ( sa6_p.getMaximalDifferenceInCounts() != 2 ) {
969 catch ( final Exception e ) {
970 e.printStackTrace( System.out );
976 private static boolean testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() {
978 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
979 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
980 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
981 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
982 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
983 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
984 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
985 if ( !TestSurfacing.isEqual( X.getPerSequenceScore(), -12 ) ) {
988 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
989 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
990 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
991 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
992 mouse_1.addProteinDomain( A );
993 mouse_1.addProteinDomain( D );
994 mouse_1.addProteinDomain( E );
995 rabbit_1.addProteinDomain( B );
996 rabbit_1.addProteinDomain( E );
997 rabbit_1.addProteinDomain( F );
998 rabbit_1.addProteinDomain( F );
999 rabbit_1.addProteinDomain( F );
1000 rabbit_1.addProteinDomain( F );
1001 rabbit_1.addProteinDomain( F );
1002 rabbit_1.addProteinDomain( F );
1003 ciona_1.addProteinDomain( F );
1004 ciona_1.addProteinDomain( G );
1005 ciona_1.addProteinDomain( X );
1006 nemve_1.addProteinDomain( D );
1007 nemve_1.addProteinDomain( E );
1008 nemve_1.addProteinDomain( F );
1009 nemve_1.addProteinDomain( G );
1010 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1011 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1012 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1013 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1014 protein_list_mouse.add( mouse_1 );
1015 protein_list_rabbit.add( rabbit_1 );
1016 protein_list_ciona.add( ciona_1 );
1017 protein_list_nemve.add( nemve_1 );
1018 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1019 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1021 new BasicSpecies( "mouse" ) ) );
1022 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1024 new BasicSpecies( "rabbit" ) ) );
1025 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1027 new BasicSpecies( "ciona" ) ) );
1028 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1030 new BasicSpecies( "nemve" ) ) );
1031 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1035 final SortedSet<DomainSimilarity> sims = calc
1036 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1040 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1041 final DomainSimilarity sa = sims_it.next();
1042 if ( !sa.getDomainId().equals( "A" ) ) {
1045 if ( sa.getSpeciesData().size() != 1 ) {
1048 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1051 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), 1.0 ) ) {
1054 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
1057 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), 1.0 ) ) {
1060 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), 1.0 ) ) {
1063 if ( sa.getN() != 0 ) {
1066 if ( sa.getMaximalDifference() != 0 ) {
1069 if ( sa.getMaximalDifferenceInCounts() != 0 ) {
1072 final DomainSimilarity sb = sims_it.next();
1073 if ( !sb.getDomainId().equals( "B" ) ) {
1076 if ( sb.getSpeciesData().size() != 1 ) {
1079 if ( !sb.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1082 final SortedSet<DomainSimilarity> sims2 = calc
1083 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1087 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
1088 final DomainSimilarity sa2 = sims_it2.next();
1089 if ( !sa2.getDomainId().equals( "D" ) ) {
1092 if ( sa2.getSpeciesData().size() != 2 ) {
1096 catch ( final Exception e ) {
1097 e.printStackTrace( System.out );
1103 private static boolean testBasicDomainSimilarityCalculatorRemovalOfSingles() {
1105 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
1106 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
1107 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
1108 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
1109 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
1110 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
1111 mouse_1.addProteinDomain( A );
1112 rabbit_1.addProteinDomain( A );
1113 ciona_1.addProteinDomain( A );
1114 ciona_1.addProteinDomain( A );
1115 ciona_1.addProteinDomain( A );
1116 ciona_1.addProteinDomain( A );
1117 ciona_1.addProteinDomain( A );
1118 nemve_1.addProteinDomain( A );
1119 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1120 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1121 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1122 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1123 protein_list_mouse.add( mouse_1 );
1124 protein_list_rabbit.add( rabbit_1 );
1125 protein_list_ciona.add( ciona_1 );
1126 protein_list_nemve.add( nemve_1 );
1127 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1128 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1130 new BasicSpecies( "mouse" ) ) );
1131 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1133 new BasicSpecies( "rabbit" ) ) );
1134 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1136 new BasicSpecies( "ciona" ) ) );
1137 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1139 new BasicSpecies( "nemve" ) ) );
1140 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1144 final SortedSet<DomainSimilarity> sims = calc
1145 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1149 if ( sims.size() != 1 ) {
1152 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1153 final DomainSimilarity sa = sims_it.next();
1154 if ( !sa.getDomainId().equals( "A" ) ) {
1157 if ( sa.getSpeciesData().size() != 4 ) {
1160 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
1163 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1166 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
1169 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1172 final SortedSet<DomainSimilarity> sims_ns = calc
1173 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1177 if ( sims_ns.size() != 0 ) {
1180 final Protein mouse_2 = new BasicProtein( "1", "mouse", 0 );
1181 final Protein rabbit_2 = new BasicProtein( "1", "rabbit", 0 );
1182 final Protein ciona_2 = new BasicProtein( "1", "ciona", 0 );
1183 final Protein nemve_2 = new BasicProtein( "1", "nemve", 0 );
1184 mouse_2.addProteinDomain( A );
1185 rabbit_2.addProteinDomain( A );
1186 ciona_2.addProteinDomain( A );
1187 ciona_2.addProteinDomain( A );
1188 ciona_2.addProteinDomain( B );
1189 ciona_2.addProteinDomain( A );
1190 ciona_2.addProteinDomain( A );
1191 ciona_2.addProteinDomain( A );
1192 nemve_2.addProteinDomain( A );
1193 final List<Protein> protein_list_mouse2 = new ArrayList<Protein>();
1194 final List<Protein> protein_list_rabbit2 = new ArrayList<Protein>();
1195 final List<Protein> protein_list_ciona2 = new ArrayList<Protein>();
1196 final List<Protein> protein_list_nemve2 = new ArrayList<Protein>();
1197 protein_list_mouse2.add( mouse_2 );
1198 protein_list_rabbit2.add( rabbit_2 );
1199 protein_list_ciona2.add( ciona_2 );
1200 protein_list_nemve2.add( nemve_2 );
1201 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
1202 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse2,
1204 new BasicSpecies( "mouse" ) ) );
1205 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit2,
1207 new BasicSpecies( "rabbit" ) ) );
1208 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona2,
1210 new BasicSpecies( "ciona" ) ) );
1211 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve2,
1213 new BasicSpecies( "nemve" ) ) );
1214 final SortedSet<DomainSimilarity> sims2 = calc
1215 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1219 if ( sims2.size() != 1 ) {
1223 catch ( final Exception e ) {
1224 e.printStackTrace( System.out );
1230 private static boolean testBinaryDomainCombination() {
1232 final BasicBinaryDomainCombination s0 = new BasicBinaryDomainCombination( "a", "a" );
1233 final BasicBinaryDomainCombination s1 = new BasicBinaryDomainCombination( "b", "a" );
1234 final BasicBinaryDomainCombination s2 = new BasicBinaryDomainCombination( "a", "b" );
1235 final BasicBinaryDomainCombination s3 = new BasicBinaryDomainCombination( "B", "A" );
1236 final BasicBinaryDomainCombination s4 = new BasicBinaryDomainCombination( "A", "B" );
1237 final BasicBinaryDomainCombination s5 = new BasicBinaryDomainCombination( "c", "a" );
1238 final BasicBinaryDomainCombination s6 = new BasicBinaryDomainCombination( "b", "c" );
1239 final BasicBinaryDomainCombination s7 = new BasicBinaryDomainCombination( "d", "a" );
1240 final BasicBinaryDomainCombination s8 = new BasicBinaryDomainCombination( "b", "d" );
1241 final BinaryDomainCombination s9 = BasicBinaryDomainCombination.createInstance( "z-z=a-aa" );
1242 if ( !s9.toString().equals( "a-aa=z-z" ) ) {
1243 System.out.println( s9.toString() );
1246 if ( !s0.equals( s0 ) ) {
1249 if ( s0.equals( s1 ) ) {
1252 if ( s1.equals( s0 ) ) {
1255 if ( !s1.equals( s2 ) ) {
1258 if ( !s2.equals( s1 ) ) {
1261 if ( s2.equals( s3 ) ) {
1264 if ( s2.equals( s3 ) ) {
1267 if ( s2.equals( s4 ) ) {
1270 final SortedSet<BasicBinaryDomainCombination> sorted = new TreeSet<BasicBinaryDomainCombination>();
1283 if ( sorted.size() != 7 ) {
1284 System.out.println( sorted.size() );
1287 final DirectedBinaryDomainCombination aa = new DirectedBinaryDomainCombination( "a", "a" );
1288 final DirectedBinaryDomainCombination ba = new DirectedBinaryDomainCombination( "b", "a" );
1289 final DirectedBinaryDomainCombination ab = new DirectedBinaryDomainCombination( "a", "b" );
1290 final DirectedBinaryDomainCombination bb = new DirectedBinaryDomainCombination( "b", "b" );
1291 if ( !aa.equals( aa ) ) {
1294 if ( aa.equals( bb ) ) {
1297 if ( ab.equals( ba ) ) {
1300 if ( ba.equals( ab ) ) {
1303 if ( !ab.equals( ab ) ) {
1306 if ( ab.equals( aa ) ) {
1309 if ( ab.equals( bb ) ) {
1313 catch ( final Exception e ) {
1314 e.printStackTrace( System.out );
1320 private static boolean testBinaryStateMatrixToGainLossMatrix( final File test_dir ) {
1321 final BinaryStates I = BinaryStates.PRESENT;
1322 final BinaryStates O = BinaryStates.ABSENT;
1324 final CharacterStateMatrix<BinaryStates> binary_states_matrix_0 = new BasicCharacterStateMatrix<BinaryStates>( 7,
1326 binary_states_matrix_0.setIdentifier( 0, "A" );
1327 binary_states_matrix_0.setIdentifier( 1, "B" );
1328 binary_states_matrix_0.setIdentifier( 2, "C" );
1329 binary_states_matrix_0.setIdentifier( 3, "D" );
1330 binary_states_matrix_0.setIdentifier( 4, "1" );
1331 binary_states_matrix_0.setIdentifier( 5, "2" );
1332 binary_states_matrix_0.setIdentifier( 6, "3" );
1333 binary_states_matrix_0.setState( 0, 0, O );
1334 binary_states_matrix_0.setState( 1, 0, O );
1335 binary_states_matrix_0.setState( 2, 0, O );
1336 binary_states_matrix_0.setState( 3, 0, O );
1337 binary_states_matrix_0.setState( 4, 0, O );
1338 binary_states_matrix_0.setState( 5, 0, O );
1339 binary_states_matrix_0.setState( 6, 0, O );
1340 binary_states_matrix_0.setState( 0, 1, I );
1341 binary_states_matrix_0.setState( 1, 1, O );
1342 binary_states_matrix_0.setState( 2, 1, O );
1343 binary_states_matrix_0.setState( 3, 1, O );
1344 binary_states_matrix_0.setState( 4, 1, O );
1345 binary_states_matrix_0.setState( 5, 1, O );
1346 binary_states_matrix_0.setState( 6, 1, O );
1347 binary_states_matrix_0.setState( 0, 2, O );
1348 binary_states_matrix_0.setState( 1, 2, O );
1349 binary_states_matrix_0.setState( 2, 2, O );
1350 binary_states_matrix_0.setState( 3, 2, O );
1351 binary_states_matrix_0.setState( 4, 2, I );
1352 binary_states_matrix_0.setState( 5, 2, O );
1353 binary_states_matrix_0.setState( 6, 2, O );
1354 binary_states_matrix_0.setState( 0, 3, I );
1355 binary_states_matrix_0.setState( 1, 3, O );
1356 binary_states_matrix_0.setState( 2, 3, O );
1357 binary_states_matrix_0.setState( 3, 3, O );
1358 binary_states_matrix_0.setState( 4, 3, I );
1359 binary_states_matrix_0.setState( 5, 3, O );
1360 binary_states_matrix_0.setState( 6, 3, I );
1361 binary_states_matrix_0.setState( 0, 4, I );
1362 binary_states_matrix_0.setState( 1, 4, O );
1363 binary_states_matrix_0.setState( 2, 4, I );
1364 binary_states_matrix_0.setState( 3, 4, O );
1365 binary_states_matrix_0.setState( 4, 4, I );
1366 binary_states_matrix_0.setState( 5, 4, O );
1367 binary_states_matrix_0.setState( 6, 4, I );
1368 binary_states_matrix_0.setState( 0, 5, I );
1369 binary_states_matrix_0.setState( 1, 5, I );
1370 binary_states_matrix_0.setState( 2, 5, I );
1371 binary_states_matrix_0.setState( 3, 5, I );
1372 binary_states_matrix_0.setState( 4, 5, I );
1373 binary_states_matrix_0.setState( 5, 5, I );
1374 binary_states_matrix_0.setState( 6, 5, I );
1375 final String[] character_labels_0 = new String[ 6 ];
1376 character_labels_0[ 0 ] = "first";
1377 character_labels_0[ 1 ] = "second";
1378 character_labels_0[ 2 ] = "third";
1379 character_labels_0[ 3 ] = "forth";
1380 character_labels_0[ 4 ] = "fifth";
1381 character_labels_0[ 5 ] = "sixth";
1382 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
1383 final Phylogeny phylogeny_0 = factory.create( "(((A,B)1,C)2,D)3", new NHXParser() )[ 0 ];
1384 final DomainParsimonyCalculator dom_pars = DomainParsimonyCalculator.createInstance( phylogeny_0 );
1385 dom_pars.executeOnGivenBinaryStatesMatrix( binary_states_matrix_0, character_labels_0 );
1386 final CharacterStateMatrix<GainLossStates> gl_matrix_0 = dom_pars.getGainLossMatrix();
1387 // final StringWriter sw = new StringWriter();
1388 // gl_matrix_0.toWriter( sw );
1389 // System.out.println( sw.toString() );
1390 if ( dom_pars.getCost() != 13 ) {
1393 if ( dom_pars.getTotalGains() != 5 ) {
1396 if ( dom_pars.getTotalLosses() != 8 ) {
1399 if ( dom_pars.getTotalUnchanged() != 29 ) {
1402 if ( gl_matrix_0.getState( "A", 1 ) != GainLossStates.GAIN ) {
1405 if ( gl_matrix_0.getState( "A", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1408 if ( gl_matrix_0.getState( "B", 4 ) != GainLossStates.LOSS ) {
1411 if ( gl_matrix_0.getState( "C", 4 ) != GainLossStates.GAIN ) {
1414 if ( gl_matrix_0.getState( "D", 4 ) != GainLossStates.LOSS ) {
1417 if ( gl_matrix_0.getState( "1", 4 ) != GainLossStates.GAIN ) {
1420 if ( gl_matrix_0.getState( "2", 4 ) != GainLossStates.LOSS ) {
1423 if ( gl_matrix_0.getState( "3", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1427 catch ( final Exception e ) {
1428 e.printStackTrace( System.out );
1434 private static boolean testCombinableDomains() {
1436 final Domain key0 = new BasicDomain( "key0", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1437 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1438 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1439 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1440 final CombinableDomains cd0 = new BasicCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1441 cd0.addCombinableDomain( a.getDomainId() );
1442 cd0.addCombinableDomain( b.getDomainId() );
1443 cd0.addCombinableDomain( b.getDomainId() );
1444 cd0.addCombinableDomain( c.getDomainId() );
1445 cd0.addCombinableDomain( c.getDomainId() );
1446 cd0.addCombinableDomain( c.getDomainId() );
1447 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1450 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1453 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1456 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1459 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1462 if ( cd0.getAllDomains().size() != 4 ) {
1465 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1468 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1471 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1474 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1477 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1480 final BasicBinaryDomainCombination s0 = new BasicBinaryDomainCombination( "key0", "a" );
1481 final BasicBinaryDomainCombination s1 = new BasicBinaryDomainCombination( "b", "key0" );
1482 final BasicBinaryDomainCombination s2 = new BasicBinaryDomainCombination( "key0", "c" );
1483 final BasicBinaryDomainCombination s3 = new BasicBinaryDomainCombination( "key0", "cc" );
1484 final BasicBinaryDomainCombination s4 = new BasicBinaryDomainCombination( "c", "key0" );
1485 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1488 if ( !cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1491 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1494 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1497 if ( !cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1500 final Domain key1 = new BasicDomain( "key1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1501 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1502 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1503 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1504 final CombinableDomains cd1 = new BasicCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1505 cd1.addCombinableDomain( a1.getDomainId() );
1506 cd1.addCombinableDomain( b1.getDomainId() );
1507 cd1.addCombinableDomain( c1.getDomainId() );
1508 cd1.addCombinableDomain( key1.getDomainId() );
1509 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1512 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1515 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1518 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1521 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1524 if ( cd1.getAllDomains().size() != 4 ) {
1527 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1530 final BasicBinaryDomainCombination kk = new BasicBinaryDomainCombination( "key1", "key1" );
1531 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1535 catch ( final Exception e ) {
1536 e.printStackTrace( System.out );
1542 private static boolean testCombinationsBasedPairwiseSimilarityCalculator() {
1544 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1545 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1546 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1547 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1548 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1549 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1550 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1551 new BasicSpecies( "rabbit" ) );
1552 one.addCombinableDomain( a.getDomainId() );
1553 one.addCombinableDomain( a.getDomainId() );
1554 two.addCombinableDomain( new BasicDomain( "A", 1, 5, ( short ) 1, ( short ) 4, 0.1, -12 ).getDomainId() );
1555 two.addCombinableDomain( b.getDomainId() );
1556 two.addCombinableDomain( c.getDomainId() );
1557 final PairwiseDomainSimilarityCalculator calc = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1558 final PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1559 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 / ( 1 + 2 ) ) ) {
1562 if ( s1.getDifferenceInCounts() != ( 1 - 3 ) ) {
1565 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s1 ).getNumberOfDifferentDomains() != 2 ) {
1568 one.addCombinableDomain( b.getDomainId() );
1569 one.addCombinableDomain( c.getDomainId() );
1570 final PairwiseDomainSimilarity s2 = calc.calculateSimilarity( one, two );
1571 if ( !TestSurfacing.isEqual( s2.getSimilarityScore(), 3.0 / ( 0 + 3 ) ) ) {
1574 if ( s2.getDifferenceInCounts() != 0 ) {
1577 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s2 ).getNumberOfDifferentDomains() != 0 ) {
1580 final Domain d = new BasicDomain( "D", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1581 final Domain e = new BasicDomain( "E", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1582 final Domain f = new BasicDomain( "F", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1583 one.addCombinableDomain( d.getDomainId() );
1584 one.addCombinableDomain( d.getDomainId() );
1585 one.addCombinableDomain( e.getDomainId() );
1586 one.addCombinableDomain( f.getDomainId() );
1587 final PairwiseDomainSimilarity s3 = calc.calculateSimilarity( one, two );
1588 if ( !TestSurfacing.isEqual( s3.getSimilarityScore(), 3.0 / ( 3 + 3 ) ) ) {
1591 if ( s3.getDifferenceInCounts() != ( 6 - 3 ) ) {
1594 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s3 ).getNumberOfDifferentDomains() != 3 ) {
1597 final Domain aaa = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1598 final Domain bbb = new BasicDomain( "bbb", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1599 final Domain three_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1600 final Domain four_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1601 final CombinableDomains three = new BasicCombinableDomains( three_key.getDomainId(),
1602 new BasicSpecies( "mouse" ) );
1603 final CombinableDomains four = new BasicCombinableDomains( four_key.getDomainId(),
1604 new BasicSpecies( "rabbit" ) );
1605 three.addCombinableDomain( aaa.getDomainId() );
1606 four.addCombinableDomain( bbb.getDomainId() );
1607 final PairwiseDomainSimilarityCalculator calc2 = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1608 final PairwiseDomainSimilarity s4 = calc2.calculateSimilarity( three, four );
1609 if ( !TestSurfacing.isEqual( s4.getSimilarityScore(), 0.0 / ( 0 + 2 ) ) ) {
1612 final Domain aaa2 = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1613 four.addCombinableDomain( aaa2.getDomainId() );
1614 final PairwiseDomainSimilarity s5 = calc.calculateSimilarity( three, four );
1615 if ( !TestSurfacing.isEqual( s5.getSimilarityScore(), 1.0 / ( 1 + 1 ) ) ) {
1619 catch ( final Exception e ) {
1620 e.printStackTrace( System.out );
1626 private static boolean testCopyNumberBasedPairwiseSimilarityCalculator() {
1628 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1629 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1630 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1631 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1632 new BasicSpecies( "rabbit" ) );
1633 one.setKeyDomainCount( 2 );
1634 two.setKeyDomainCount( 3 );
1635 final PairwiseDomainSimilarityCalculator calc = new DomainCountsBasedPairwiseSimilarityCalculator();
1636 PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1637 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( ( 3 - 2.0 ) / ( 2 + 3 ) ) ) ) {
1640 if ( s1.getDifferenceInCounts() != ( 2 - 3 ) ) {
1643 one.setKeyDomainCount( 1 );
1644 two.setKeyDomainCount( 1 );
1645 s1 = calc.calculateSimilarity( one, two );
1646 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 ) ) {
1649 if ( s1.getDifferenceInCounts() != ( 1 - 1 ) ) {
1652 one.setKeyDomainCount( 1 );
1653 two.setKeyDomainCount( 1000 );
1654 s1 = calc.calculateSimilarity( one, two );
1655 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( 999.0 / 1001 ) ) ) {
1658 if ( s1.getDifferenceInCounts() != ( 1 - 1000 ) ) {
1662 catch ( final Exception e ) {
1663 e.printStackTrace( System.out );
1669 private static boolean testDirectedCombinableDomains() {
1671 final Domain key0 = new BasicDomain( "key0", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 );
1672 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1673 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1674 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1675 final CombinableDomains cd0 = new DirectedCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1676 cd0.addCombinableDomain( a.getDomainId() );
1677 cd0.addCombinableDomain( b.getDomainId() );
1678 cd0.addCombinableDomain( b.getDomainId() );
1679 cd0.addCombinableDomain( c.getDomainId() );
1680 cd0.addCombinableDomain( c.getDomainId() );
1681 cd0.addCombinableDomain( c.getDomainId() );
1682 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1685 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1688 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1691 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1694 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1697 if ( cd0.getAllDomains().size() != 4 ) {
1700 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1703 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1706 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1709 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1712 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1715 final BinaryDomainCombination s0 = new DirectedBinaryDomainCombination( "key0", "a" );
1716 final BinaryDomainCombination s1 = new DirectedBinaryDomainCombination( "b", "key0" );
1717 final BinaryDomainCombination s2 = new DirectedBinaryDomainCombination( "key0", "c" );
1718 final BinaryDomainCombination s3 = new DirectedBinaryDomainCombination( "key0", "cc" );
1719 final BinaryDomainCombination s4 = new DirectedBinaryDomainCombination( "a", "b" );
1720 final BinaryDomainCombination s5 = new DirectedBinaryDomainCombination( "b", "a" );
1721 final BinaryDomainCombination s6 = new DirectedBinaryDomainCombination( "key0", "b" );
1722 final BinaryDomainCombination s7 = new DirectedBinaryDomainCombination( "a", "key0" );
1723 final BinaryDomainCombination s8 = new DirectedBinaryDomainCombination( "c", "key0" );
1724 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1727 if ( cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1730 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1733 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1736 if ( cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1739 if ( cd0.toBinaryDomainCombinations().contains( s5 ) ) {
1742 if ( !cd0.toBinaryDomainCombinations().contains( s6 ) ) {
1745 if ( cd0.toBinaryDomainCombinations().contains( s7 ) ) {
1748 if ( cd0.toBinaryDomainCombinations().contains( s8 ) ) {
1751 final Domain key1 = new BasicDomain( "key1", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 );
1752 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1753 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1754 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1755 final CombinableDomains cd1 = new DirectedCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1756 cd1.addCombinableDomain( a1.getDomainId() );
1757 cd1.addCombinableDomain( b1.getDomainId() );
1758 cd1.addCombinableDomain( c1.getDomainId() );
1759 cd1.addCombinableDomain( key1.getDomainId() );
1760 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1763 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1766 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1769 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1772 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1775 if ( cd1.getAllDomains().size() != 4 ) {
1778 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1781 final BinaryDomainCombination kk = new DirectedBinaryDomainCombination( "key1", "key1" );
1782 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1786 catch ( final Exception e ) {
1787 e.printStackTrace( System.out );
1793 private static boolean testDirectedness() {
1795 final BinaryStates X = BinaryStates.PRESENT;
1796 final BinaryStates O = BinaryStates.ABSENT;
1797 final GainLossStates G = GainLossStates.GAIN;
1798 final GainLossStates L = GainLossStates.LOSS;
1799 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
1800 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
1801 final Protein one_1 = new BasicProtein( "one", "1", 0 );
1802 final Protein two_1 = new BasicProtein( "two", "1", 0 );
1803 final Protein three_1 = new BasicProtein( "three", "1", 0 );
1804 final Protein four_1 = new BasicProtein( "four", "1", 0 );
1805 final Protein five_1 = new BasicProtein( "five", "1", 0 );
1806 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1807 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1808 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1809 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1810 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1811 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1812 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1813 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1814 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1815 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1816 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1817 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1818 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1819 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1820 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1821 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1822 final List<Protein> list_1 = new ArrayList<Protein>();
1823 list_1.add( one_1 );
1824 list_1.add( two_1 );
1825 list_1.add( three_1 );
1826 list_1.add( four_1 );
1827 list_1.add( five_1 );
1828 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
1829 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED );
1830 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "B" ) ) ) {
1833 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "A" ) ) ) {
1836 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "A" ) ) ) {
1839 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "C" ) ) ) {
1842 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "A" ) ) ) {
1845 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "C" ) ) ) {
1848 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "X" ) ) ) {
1851 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "Y" ) ) ) {
1854 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "X" ) ) ) {
1857 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "Y" ) ) ) {
1860 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "A" ) ) ) {
1863 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "X", "A" ) ) ) {
1866 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "B" ) ) ) {
1869 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "X", "Y" ) ) ) {
1872 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "X" ) ) ) {
1875 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "Y" ) ) ) {
1878 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "X" ) ) ) {
1881 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "C" ) ) ) {
1884 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "M", "N" ) ) ) {
1887 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "N", "M" ) ) ) {
1890 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "N", "P" ) ) ) {
1893 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "M", "P" ) ) ) {
1896 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "P", "N" ) ) ) {
1899 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "P", "M" ) ) ) {
1902 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "XX", "YY" ) ) ) {
1905 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "YY", "XX" ) ) ) {
1908 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "B" ) ) ) {
1911 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1912 // gwcd_list.add( gwcd_1 );
1913 // gwcd_list.add( gwcd_2 );
1914 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
1915 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1916 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
1917 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1918 // if ( matrix_d.getState( 0, 0 ) != X ) {
1921 // if ( matrix_bc.getState( 0, 0 ) != X ) {
1926 // final BasicCharacterStateMatrix<BinaryStates> dm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1927 // { X, X, X, X, X, X }, { X, X, X, X, X, X } } );
1928 // if ( !matrix_d.equals( dm ) ) {
1931 // final BasicCharacterStateMatrix<BinaryStates> bcm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1932 // { X, O, X, X, X, X, O, X, X, O, X, X }, { X, X, X, O, O, O, O, X, O, O, X, X } } );
1933 // if ( !matrix_d.equals( dm ) ) {
1936 //``````````````````````````
1937 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1938 // gwcd_list.add( one );
1939 // gwcd_list.add( two );
1940 // gwcd_list.add( three );
1941 // gwcd_list.add( four );
1942 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimony
1943 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1944 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimony
1945 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1946 // // System.out.println( "d:" );
1947 // // System.out.println(matrix_d.toStringBuffer().toString() );
1948 // // System.out.println( "bc:" );
1949 // // System.out.println(matrix_bc.toStringBuffer().toString() );
1950 // // 1 a b c e f g h l m
1951 // // 2 a b c e f g i n o
1952 // // 3 a b d e f g j p q
1954 // if ( matrix_d.getState( 0, 0 ) != X ) {
1957 // if ( matrix_d.getState( 0, 1 ) != X ) {
1960 // if ( matrix_d.getState( 0, 2 ) != X ) {
1963 // if ( matrix_d.getState( 0, 3 ) != O ) {
1966 // if ( matrix_d.getState( 0, 4 ) != X ) {
1969 // if ( matrix_d.getState( 0, 5 ) != X ) {
1972 // if ( matrix_d.getState( 0, 6 ) != X ) {
1975 // if ( matrix_d.getState( 0, 7 ) != X ) {
1978 // if ( matrix_d.getState( 0, 8 ) != O ) {
1981 // // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
1982 // // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
1983 // // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
1985 // if ( matrix_bc.getState( 0, 0 ) != X ) {
1988 // if ( matrix_bc.getState( 0, 1 ) != X ) {
1991 // if ( matrix_bc.getState( 0, 2 ) != X ) {
1994 // if ( matrix_bc.getState( 0, 3 ) != O ) {
1997 // if ( matrix_bc.getState( 0, 4 ) != X ) {
2000 // if ( matrix_bc.getState( 1, 0 ) != O ) {
2003 // if ( matrix_bc.getState( 1, 1 ) != X ) {
2006 // if ( matrix_bc.getState( 1, 2 ) != X ) {
2009 // if ( matrix_bc.getState( 1, 3 ) != O ) {
2012 // if ( matrix_bc.getState( 1, 4 ) != X ) {
2015 // if ( matrix_bc.getState( 2, 0 ) != O ) {
2018 // if ( matrix_bc.getState( 2, 1 ) != X ) {
2021 // if ( matrix_bc.getState( 2, 2 ) != O ) {
2024 // if ( matrix_bc.getState( 2, 3 ) != X ) {
2027 // if ( matrix_bc.getState( 2, 4 ) != X ) {
2030 // final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
2031 // final String p0_str = "((one,two)1-2,(three,four)3-4)root";
2032 // final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
2033 // final DomainParsimony dp0 = DomainParsimony.createInstance( p0, gwcd_list );
2034 // dp0.executeDolloParsimonyOnDomainPresence();
2035 // final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
2036 // final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
2037 // dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2038 // final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
2039 // final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
2040 // if ( is_matrix_d.getState( "root", "A" ) != X ) {
2043 // if ( is_matrix_d.getState( "root", "B" ) != X ) {
2046 // if ( is_matrix_d.getState( "root", "C" ) != O ) {
2049 // if ( is_matrix_d.getState( "root", "D" ) != O ) {
2052 // if ( is_matrix_d.getState( "root", "E" ) != X ) {
2055 // if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
2058 // if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
2061 // if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
2064 // if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
2067 // if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
2070 // if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
2073 // if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
2076 // if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
2079 // if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
2082 // if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
2085 // if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
2088 // if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
2091 // if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
2094 // if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
2097 // final Protein ab_1 = new BasicProtein( "ab", "one" );
2098 // ab_1.addProteinDomain( a );
2099 // ab_1.addProteinDomain( b );
2100 // final Protein ac_1 = new BasicProtein( "ac", "one" );
2101 // ac_1.addProteinDomain( a );
2102 // ac_1.addProteinDomain( c );
2103 // final Protein de_1 = new BasicProtein( "de", "one" );
2104 // de_1.addProteinDomain( d );
2105 // de_1.addProteinDomain( e );
2106 // final Protein ac_2 = new BasicProtein( "ac", "two" );
2107 // ac_2.addProteinDomain( a );
2108 // ac_2.addProteinDomain( c );
2109 // final Protein ab_3 = new BasicProtein( "ab", "three" );
2110 // ab_3.addProteinDomain( a );
2111 // ab_3.addProteinDomain( b );
2112 // final Protein de_4 = new BasicProtein( "de", "four" );
2113 // de_4.addProteinDomain( d );
2114 // de_4.addProteinDomain( e );
2115 // final Protein ab_6 = new BasicProtein( "ab", "six" );
2116 // ab_6.addProteinDomain( a );
2117 // ab_6.addProteinDomain( b );
2118 // final List<Protein> spec_one = new ArrayList<Protein>();
2119 // final List<Protein> spec_two = new ArrayList<Protein>();
2120 // final List<Protein> spec_three = new ArrayList<Protein>();
2121 // final List<Protein> spec_four = new ArrayList<Protein>();
2122 // final List<Protein> spec_five = new ArrayList<Protein>();
2123 // final List<Protein> spec_six = new ArrayList<Protein>();
2124 // final List<Protein> spec_seven = new ArrayList<Protein>();
2125 // spec_one.add( ab_1 );
2126 // spec_one.add( ac_1 );
2127 // spec_one.add( de_1 );
2128 // spec_two.add( ac_2 );
2129 // spec_three.add( ab_3 );
2130 // spec_four.add( de_4 );
2131 // spec_six.add( ab_6 );
2132 // final GenomeWideCombinableDomains one_gwcd = BasicGenomeWideCombinableDomains
2133 // .createInstance( spec_one, false, new BasicSpecies( "one" ), false );
2134 // final GenomeWideCombinableDomains two_gwcd = BasicGenomeWideCombinableDomains
2135 // .createInstance( spec_two, false, new BasicSpecies( "two" ), false );
2136 // final GenomeWideCombinableDomains three_gwcd = BasicGenomeWideCombinableDomains
2137 // .createInstance( spec_three, false, new BasicSpecies( "three" ), false );
2138 // final GenomeWideCombinableDomains four_gwcd = BasicGenomeWideCombinableDomains
2139 // .createInstance( spec_four, false, new BasicSpecies( "four" ), false );
2140 // final GenomeWideCombinableDomains five_gwcd = BasicGenomeWideCombinableDomains
2141 // .createInstance( spec_five, false, new BasicSpecies( "five" ), false );
2142 // final GenomeWideCombinableDomains six_gwcd = BasicGenomeWideCombinableDomains
2143 // .createInstance( spec_six, false, new BasicSpecies( "six" ), false );
2144 // final GenomeWideCombinableDomains seven_gwcd = BasicGenomeWideCombinableDomains
2145 // .createInstance( spec_seven, false, new BasicSpecies( "seven" ), false
2147 // final List<GenomeWideCombinableDomains> gwcd_list1 = new ArrayList<GenomeWideCombinableDomains>();
2148 // gwcd_list1.add( one_gwcd );
2149 // gwcd_list1.add( two_gwcd );
2150 // gwcd_list1.add( three_gwcd );
2151 // gwcd_list1.add( four_gwcd );
2152 // gwcd_list1.add( five_gwcd );
2153 // gwcd_list1.add( six_gwcd );
2154 // gwcd_list1.add( seven_gwcd );
2155 // final PhylogenyFactory factory1 = ParserBasedPhylogenyFactory.getInstance();
2156 // final String p1_str = "(((((one,two)12,three)123,(four,five)45)12345,six)123456,seven)root";
2157 // final Phylogeny p1 = factory1.create( p1_str, new NHXParser() )[ 0 ];
2158 // final DomainParsimony dp1 = DomainParsimony.createInstance( p1, gwcd_list1 );
2159 // dp1.executeDolloParsimonyOnDomainPresence();
2160 // final CharacterStateMatrix<GainLossStates> gl_dollo_d = dp1.getGainLossMatrix();
2161 // final CharacterStateMatrix<BinaryStates> i_dollo_d = dp1.getInternalStatesMatrix();
2162 // if ( dp1.getCost() != 14 ) {
2165 // if ( dp1.getTotalGains() != 5 ) {
2168 // if ( dp1.getTotalLosses() != 9 ) {
2171 // if ( dp1.getTotalUnchanged() != 51 ) {
2174 // if ( dp1.getNetGainsOnNode( "45" ) != -2 ) {
2177 // if ( dp1.getSumOfGainsOnNode( "45" ) != 0 ) {
2180 // if ( dp1.getSumOfLossesOnNode( "45" ) != 2 ) {
2183 // if ( dp1.getSumOfUnchangedOnNode( "45" ) != 3 ) {
2186 // if ( dp1.getSumOfUnchangedPresentOnNode( "45" ) != 2 ) {
2189 // if ( dp1.getSumOfUnchangedAbsentOnNode( "45" ) != 1 ) {
2192 // if ( dp1.getUnitsGainedOnNode( "45" ).contains( "A" ) ) {
2195 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A" ) ) {
2198 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "B" ) ) {
2201 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D" ) ) {
2204 // if ( !dp1.getUnitsOnNode( "12" ).contains( "A" ) ) {
2207 // if ( !dp1.getUnitsOnNode( "12" ).contains( "B" ) ) {
2210 // if ( !dp1.getUnitsOnNode( "12" ).contains( "C" ) ) {
2213 // if ( !dp1.getUnitsOnNode( "12" ).contains( "D" ) ) {
2216 // if ( !dp1.getUnitsOnNode( "12" ).contains( "E" ) ) {
2219 // if ( dp1.getNetGainsOnNode( "123456" ) != 2 ) {
2222 // if ( dp1.getSumOfGainsOnNode( "123456" ) != 2 ) {
2225 // dp1.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2226 // final CharacterStateMatrix<GainLossStates> gl_dollo_bc = dp1.getGainLossMatrix();
2227 // final CharacterStateMatrix<BinaryStates> i_dollo_bc = dp1.getInternalStatesMatrix();
2228 // if ( dp1.getCost() != 8 ) {
2231 // if ( dp1.getTotalGains() != 3 ) {
2234 // if ( dp1.getTotalLosses() != 5 ) {
2237 // if ( dp1.getTotalUnchanged() != 31 ) {
2240 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2243 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D=E" ) ) {
2246 // dp1.executeFitchParsimonyOnDomainPresence();
2247 // final CharacterStateMatrix<GainLossStates> gl_fitch_d = dp1.getGainLossMatrix();
2248 // final CharacterStateMatrix<BinaryStates> i_fitch_d = dp1.getInternalStatesMatrix();
2249 // if ( dp1.getCost() != 10 ) {
2252 // if ( dp1.getTotalGains() != 7 ) {
2255 // if ( dp1.getTotalLosses() != 3 ) {
2258 // if ( dp1.getTotalUnchanged() != 55 ) {
2261 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "E" ) ) {
2264 // dp1.executeFitchParsimonyOnBinaryDomainCombintion();
2265 // final CharacterStateMatrix<GainLossStates> gl_fitch_bc = dp1.getGainLossMatrix();
2266 // final CharacterStateMatrix<BinaryStates> i_fitch_bc = dp1.getInternalStatesMatrix();
2267 // if ( dp1.getCost() != 6 ) {
2270 // if ( dp1.getTotalGains() != 4 ) {
2273 // if ( dp1.getTotalLosses() != 2 ) {
2276 // if ( dp1.getTotalUnchanged() != 33 ) {
2279 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2282 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "D=E" ) ) {
2285 // if ( dp1.getNetGainsOnNode( "two" ) != -1 ) {
2288 // if ( dp1.getNetGainsOnNode( "123" ) != 0 ) {
2291 // if ( dp1.getSumOfUnchangedPresentOnNode( "123" ) != 1 ) {
2294 // if ( dp1.getSumOfUnchangedAbsentOnNode( "123" ) != 2 ) {
2297 // if ( dp1.getSumOfUnchangedOnNode( "123" ) != 3 ) {
2300 // if ( dp1.getSumOfUnchangedOnNode( "two" ) != 2 ) {
2303 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "two" ).contains( "D=E" ) ) {
2306 // if ( !dp1.getUnitsUnchangedPresentOnNode( "two" ).contains( "A=C" ) ) {
2309 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "A=C" ) ) {
2312 // if ( !dp1.getUnitsUnchangedPresentOnNode( "123" ).contains( "A=B" ) ) {
2315 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "D=E" ) ) {
2318 // CharacterStateMatrix<BinaryStates> bsm = null;
2319 // CharacterStateMatrix<GainLossStates> glm = null;
2320 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, X, X },
2321 // { X, X, O, X, X }, { O, O, O, X, X }, { X, X, O, X, X }, { X, X, O, O, O }, { O, O, O, O, O } } );
2322 // if ( !bsm.equals( i_dollo_d ) ) {
2325 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, O, O },
2326 // { X, X, O, O, O }, { O, O, O, O, O }, { X, X, O, O, O }, { X, X, O, O, O }, { O, O, O, O, O } } );
2327 // if ( !bsm.equals( i_fitch_d ) ) {
2330 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, P, P },
2331 // { P, L, P, L, L }, { P, P, G, P, P }, { P, P, A, L, L }, { P, P, A, P, P }, { A, A, A, P, P },
2332 // { A, A, A, L, L }, { L, L, A, P, P }, { P, P, A, G, G }, { P, P, A, A, A }, { G, G, A, A, A },
2333 // { A, A, A, A, A }, { A, A, A, A, A } } );
2334 // if ( !glm.equals( gl_dollo_d ) ) {
2337 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, G, G },
2338 // { P, L, P, A, A }, { P, P, G, A, A }, { P, P, A, A, A }, { P, P, A, A, A }, { A, A, A, G, G },
2339 // { A, A, A, A, A }, { L, L, A, A, A }, { P, P, A, A, A }, { P, P, A, A, A }, { G, G, A, A, A },
2340 // { A, A, A, A, A }, { A, A, A, A, A } } );
2341 // if ( !glm.equals( gl_fitch_d ) ) {
2344 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X }, { X, O, X },
2345 // { O, O, X }, { X, O, X }, { X, O, O }, { O, O, O } } );
2346 // if ( !bsm.equals( i_dollo_bc ) ) {
2349 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, O }, { X, O, O },
2350 // { O, O, O }, { X, O, O }, { X, O, O }, { O, O, O } } );
2351 // if ( !bsm.equals( i_fitch_bc ) ) {
2354 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P }, { L, P, L },
2355 // { P, G, P }, { P, A, L }, { P, A, P }, { A, A, P }, { A, A, L }, { L, A, P }, { P, A, G },
2356 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2357 // if ( !glm.equals( gl_dollo_bc ) ) {
2360 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, G }, { L, P, A },
2361 // { P, G, A }, { P, A, A }, { P, A, A }, { A, A, G }, { A, A, A }, { L, A, A }, { P, A, A },
2362 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2363 // if ( !glm.equals( gl_fitch_bc ) ) {
2367 catch ( final Exception e ) {
2368 e.printStackTrace( System.out );
2374 private static boolean testDirectednessAndAdjacency() {
2376 final Protein one_1 = new BasicProtein( "one", "1", 0 );
2377 final Protein two_1 = new BasicProtein( "two", "1", 0 );
2378 final Protein three_1 = new BasicProtein( "three", "1", 0 );
2379 final Protein four_1 = new BasicProtein( "four", "1", 0 );
2380 final Protein five_1 = new BasicProtein( "five", "1", 0 );
2381 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2382 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2383 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2384 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2385 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2386 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2387 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2388 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2389 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2390 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2391 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2392 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2393 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2394 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2395 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2396 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2397 final List<Protein> list_1 = new ArrayList<Protein>();
2398 list_1.add( one_1 );
2399 list_1.add( two_1 );
2400 list_1.add( three_1 );
2401 list_1.add( four_1 );
2402 list_1.add( five_1 );
2403 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
2404 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED_ADJACTANT );
2405 if ( !gwcd_1.toBinaryDomainCombinations()
2406 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "B" ) ) ) {
2409 if ( gwcd_1.toBinaryDomainCombinations()
2410 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "A" ) ) ) {
2413 if ( gwcd_1.toBinaryDomainCombinations()
2414 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "A" ) ) ) {
2417 if ( gwcd_1.toBinaryDomainCombinations()
2418 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "C" ) ) ) {
2421 if ( gwcd_1.toBinaryDomainCombinations()
2422 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "A" ) ) ) {
2425 if ( !gwcd_1.toBinaryDomainCombinations()
2426 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "C" ) ) ) {
2429 if ( !gwcd_1.toBinaryDomainCombinations()
2430 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "X" ) ) ) {
2433 if ( gwcd_1.toBinaryDomainCombinations()
2434 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "Y" ) ) ) {
2437 if ( !gwcd_1.toBinaryDomainCombinations()
2438 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "Y" ) ) ) {
2441 if ( gwcd_1.toBinaryDomainCombinations()
2442 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "X" ) ) ) {
2445 if ( gwcd_1.toBinaryDomainCombinations()
2446 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "Y" ) ) ) {
2449 if ( !gwcd_1.toBinaryDomainCombinations()
2450 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "A" ) ) ) {
2453 if ( gwcd_1.toBinaryDomainCombinations()
2454 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "A" ) ) ) {
2457 if ( gwcd_1.toBinaryDomainCombinations()
2458 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "B" ) ) ) {
2461 if ( !gwcd_1.toBinaryDomainCombinations()
2462 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "Y" ) ) ) {
2465 if ( gwcd_1.toBinaryDomainCombinations()
2466 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "X" ) ) ) {
2469 if ( gwcd_1.toBinaryDomainCombinations()
2470 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "Y" ) ) ) {
2473 if ( gwcd_1.toBinaryDomainCombinations()
2474 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "X" ) ) ) {
2477 if ( gwcd_1.toBinaryDomainCombinations()
2478 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "C" ) ) ) {
2481 if ( !gwcd_1.toBinaryDomainCombinations()
2482 .contains( new AdjactantDirectedBinaryDomainCombination( "M", "N" ) ) ) {
2485 if ( !gwcd_1.toBinaryDomainCombinations()
2486 .contains( new AdjactantDirectedBinaryDomainCombination( "N", "M" ) ) ) {
2489 if ( !gwcd_1.toBinaryDomainCombinations()
2490 .contains( new AdjactantDirectedBinaryDomainCombination( "N", "P" ) ) ) {
2493 if ( gwcd_1.toBinaryDomainCombinations()
2494 .contains( new AdjactantDirectedBinaryDomainCombination( "M", "P" ) ) ) {
2497 if ( gwcd_1.toBinaryDomainCombinations()
2498 .contains( new AdjactantDirectedBinaryDomainCombination( "P", "N" ) ) ) {
2501 if ( gwcd_1.toBinaryDomainCombinations()
2502 .contains( new AdjactantDirectedBinaryDomainCombination( "P", "M" ) ) ) {
2505 if ( gwcd_1.toBinaryDomainCombinations()
2506 .contains( new AdjactantDirectedBinaryDomainCombination( "XX", "YY" ) ) ) {
2509 if ( gwcd_1.toBinaryDomainCombinations()
2510 .contains( new AdjactantDirectedBinaryDomainCombination( "YY", "XX" ) ) ) {
2513 if ( gwcd_1.toBinaryDomainCombinations()
2514 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "B" ) ) ) {
2518 catch ( final Exception e ) {
2519 e.printStackTrace( System.out );
2525 private static boolean testDomainArchitectureBasedGenomeSimilarityCalculator() {
2527 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2528 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2529 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2530 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2531 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2532 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2533 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2534 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2535 final Domain i = new BasicDomain( "i", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2536 final Domain j = new BasicDomain( "j", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2537 final Domain k = new BasicDomain( "k", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2538 final Domain l = new BasicDomain( "l", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2539 final Domain m = new BasicDomain( "m", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2540 final Domain n = new BasicDomain( "n", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2541 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
2542 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
2543 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
2544 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
2545 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
2546 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
2547 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
2548 final Protein rat_0 = new BasicProtein( "0", "rat", 0 );
2549 final Protein rat_1 = new BasicProtein( "1", "rat", 0 );
2550 final Protein rat_2 = new BasicProtein( "2", "rat", 0 );
2551 final Protein rat_3 = new BasicProtein( "3", "rat", 0 );
2552 final Protein rat_4 = new BasicProtein( "4", "rat", 0 );
2553 final Protein rat_5 = new BasicProtein( "5", "rat", 0 );
2554 final Protein rat_6 = new BasicProtein( "6", "rat", 0 );
2555 final Protein rat_7 = new BasicProtein( "7", "rat", 0 );
2556 eel_1.addProteinDomain( a );
2557 eel_2.addProteinDomain( a );
2558 eel_2.addProteinDomain( b );
2559 eel_3.addProteinDomain( a );
2560 eel_3.addProteinDomain( a );
2561 eel_3.addProteinDomain( b );
2562 eel_4.addProteinDomain( a );
2563 eel_4.addProteinDomain( b );
2564 eel_4.addProteinDomain( c );
2565 eel_4.addProteinDomain( d );
2566 eel_4.addProteinDomain( e );
2567 eel_5.addProteinDomain( e );
2568 eel_5.addProteinDomain( e );
2569 eel_5.addProteinDomain( f );
2570 eel_5.addProteinDomain( f );
2571 eel_5.addProteinDomain( f );
2572 eel_5.addProteinDomain( f );
2573 eel_6.addProteinDomain( g );
2574 eel_6.addProteinDomain( h );
2575 rat_1.addProteinDomain( a );
2576 rat_2.addProteinDomain( a );
2577 rat_2.addProteinDomain( b );
2578 rat_3.addProteinDomain( a );
2579 rat_3.addProteinDomain( a );
2580 rat_3.addProteinDomain( b );
2581 rat_4.addProteinDomain( a );
2582 rat_4.addProteinDomain( b );
2583 rat_4.addProteinDomain( c );
2584 rat_4.addProteinDomain( i );
2585 rat_4.addProteinDomain( l );
2586 rat_5.addProteinDomain( i );
2587 rat_5.addProteinDomain( f );
2588 rat_5.addProteinDomain( f );
2589 rat_6.addProteinDomain( j );
2590 rat_6.addProteinDomain( k );
2591 rat_7.addProteinDomain( m );
2592 rat_7.addProteinDomain( n );
2593 final List<Protein> protein_list_eel = new ArrayList<Protein>();
2594 protein_list_eel.add( eel_0 );
2595 protein_list_eel.add( eel_1 );
2596 protein_list_eel.add( eel_2 );
2597 protein_list_eel.add( eel_3 );
2598 protein_list_eel.add( eel_4 );
2599 protein_list_eel.add( eel_5 );
2600 protein_list_eel.add( eel_6 );
2601 final List<Protein> protein_list_rat = new ArrayList<Protein>();
2602 protein_list_rat.add( rat_0 );
2603 protein_list_rat.add( rat_1 );
2604 protein_list_rat.add( rat_2 );
2605 protein_list_rat.add( rat_3 );
2606 protein_list_rat.add( rat_4 );
2607 protein_list_rat.add( rat_5 );
2608 protein_list_rat.add( rat_6 );
2609 protein_list_rat.add( rat_7 );
2610 final GenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
2611 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
2612 final GenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
2613 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
2614 final GenomeWideCombinableDomains rat_not_ignore = BasicGenomeWideCombinableDomains
2615 .createInstance( protein_list_rat, false, new BasicSpecies( "rat" ) );
2616 final GenomeWideCombinableDomains rat_ignore = BasicGenomeWideCombinableDomains
2617 .createInstance( protein_list_rat, true, new BasicSpecies( "rat" ) );
2618 final DomainArchitectureBasedGenomeSimilarityCalculator calc_ni = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_not_ignore,
2620 final DomainArchitectureBasedGenomeSimilarityCalculator calc_i = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_ignore,
2622 if ( calc_ni.getAllDomains().size() != 14 ) {
2625 if ( calc_i.getAllDomains().size() != 14 ) {
2628 if ( calc_ni.getDomainsSpecificToGenome0().size() != 4 ) {
2631 if ( calc_i.getDomainsSpecificToGenome0().size() != 4 ) {
2634 if ( calc_ni.getDomainsSpecificToGenome1().size() != 6 ) {
2637 if ( calc_i.getDomainsSpecificToGenome1().size() != 6 ) {
2640 if ( calc_i.getSharedDomains().size() != 4 ) {
2643 if ( calc_ni.getSharedDomains().size() != 4 ) {
2646 if ( !calc_ni.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2649 if ( !calc_ni.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2652 if ( !calc_ni.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2655 if ( !calc_ni.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2658 if ( calc_ni.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2661 if ( calc_ni.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2664 if ( !calc_i.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2667 if ( !calc_i.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2670 if ( !calc_i.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2673 if ( !calc_i.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2676 if ( calc_i.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2679 if ( calc_i.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2682 if ( !calc_ni.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2685 if ( !calc_ni.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2688 if ( !calc_ni.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2691 if ( !calc_ni.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2694 if ( !calc_ni.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2697 if ( !calc_ni.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2700 if ( calc_ni.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2703 if ( calc_ni.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2706 if ( calc_ni.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2709 if ( !calc_i.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2712 if ( !calc_i.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2715 if ( !calc_i.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2718 if ( !calc_i.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2721 if ( !calc_i.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2724 if ( !calc_i.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2727 if ( calc_i.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2730 if ( calc_i.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2733 if ( calc_i.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2736 if ( !calc_i.getSharedDomains().contains( a.getDomainId() ) ) {
2739 if ( !calc_i.getSharedDomains().contains( b.getDomainId() ) ) {
2742 if ( !calc_i.getSharedDomains().contains( c.getDomainId() ) ) {
2745 if ( !calc_i.getSharedDomains().contains( f.getDomainId() ) ) {
2748 final Set<String> all = calc_ni.getAllDomains();
2749 if ( !all.contains( a.getDomainId() ) ) {
2752 if ( !all.contains( b.getDomainId() ) ) {
2755 if ( !all.contains( c.getDomainId() ) ) {
2758 if ( !all.contains( d.getDomainId() ) ) {
2761 if ( !all.contains( e.getDomainId() ) ) {
2764 if ( !all.contains( f.getDomainId() ) ) {
2767 if ( !all.contains( g.getDomainId() ) ) {
2770 if ( !all.contains( h.getDomainId() ) ) {
2773 if ( !all.contains( i.getDomainId() ) ) {
2776 if ( !all.contains( l.getDomainId() ) ) {
2779 if ( !all.contains( j.getDomainId() ) ) {
2782 if ( !all.contains( k.getDomainId() ) ) {
2785 if ( !all.contains( m.getDomainId() ) ) {
2788 if ( !all.contains( n.getDomainId() ) ) {
2791 final Set<BinaryDomainCombination> s_0_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome0();
2792 final Set<BinaryDomainCombination> s_0_i = calc_i.getBinaryDomainCombinationsSpecificToGenome0();
2793 final Set<BinaryDomainCombination> s_1_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome1();
2794 final Set<BinaryDomainCombination> s_1_i = calc_i.getBinaryDomainCombinationsSpecificToGenome1();
2795 final Set<BinaryDomainCombination> a_ni = calc_ni.getAllBinaryDomainCombinations();
2796 final Set<BinaryDomainCombination> a_i = calc_i.getAllBinaryDomainCombinations();
2797 final Set<BinaryDomainCombination> shared_ni = calc_ni.getSharedBinaryDomainCombinations();
2798 final Set<BinaryDomainCombination> shared_i = calc_i.getSharedBinaryDomainCombinations();
2799 if ( a_ni.size() != 25 ) {
2802 if ( a_i.size() != 22 ) {
2805 if ( s_0_ni.size() != 10 ) {
2808 if ( s_0_i.size() != 9 ) {
2811 if ( s_1_ni.size() != 10 ) {
2814 if ( s_1_i.size() != 10 ) {
2817 if ( shared_ni.size() != 5 ) {
2820 if ( shared_i.size() != 3 ) {
2823 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2826 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
2829 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2832 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2835 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2838 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2841 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
2844 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
2847 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
2850 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
2853 if ( !a_ni.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
2856 if ( !a_ni.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
2859 if ( !a_ni.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
2862 if ( !a_ni.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2865 if ( !a_ni.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2868 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
2871 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
2874 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
2877 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
2880 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
2883 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
2886 if ( !a_ni.contains( new BasicBinaryDomainCombination( "i", "l" ) ) ) {
2889 if ( !a_ni.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
2892 if ( !a_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2895 if ( !a_ni.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
2898 if ( a_ni.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
2901 if ( a_ni.contains( new BasicBinaryDomainCombination( "a", "m" ) ) ) {
2904 if ( a_i.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2907 if ( a_i.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2910 if ( a_i.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2913 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2916 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
2919 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2922 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2925 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2928 if ( shared_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2931 if ( shared_i.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2934 if ( !shared_i.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
2937 if ( !shared_i.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2940 if ( !shared_i.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2943 if ( shared_i.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2946 if ( shared_i.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2949 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2952 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2955 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
2958 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
2961 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
2964 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
2967 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
2970 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
2973 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
2976 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2979 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2982 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2985 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
2988 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
2991 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
2994 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
2997 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
3000 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
3003 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
3006 if ( s_0_i.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
3009 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
3012 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
3015 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
3018 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
3021 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
3024 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
3027 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "l", "i" ) ) ) {
3030 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
3033 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
3036 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
3039 if ( s_1_ni.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
3042 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
3045 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
3048 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
3051 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
3054 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
3057 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
3060 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "l", "i" ) ) ) {
3063 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
3066 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
3069 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
3072 if ( s_1_i.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
3075 if ( !isEqual( calc_ni.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3076 1.0 - ( ( 25.0 - 5.0 ) / 25.0 ) ) ) {
3079 if ( !isEqual( calc_i.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3080 1.0 - ( ( 22.0 - 3.0 ) / 22.0 ) ) ) {
3083 if ( !isEqual( calc_ni.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3086 if ( !isEqual( calc_i.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3089 final Domain u = new BasicDomain( "u", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3090 final Domain v = new BasicDomain( "v", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3091 final Domain w = new BasicDomain( "w", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3092 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3093 final Domain y = new BasicDomain( "y", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3094 final Domain z = new BasicDomain( "z", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3095 final Protein a_0 = new BasicProtein( "0", "a", 0 );
3096 final Protein a_1 = new BasicProtein( "1", "a", 0 );
3097 final Protein a_2 = new BasicProtein( "2", "a", 0 );
3098 final Protein b_0 = new BasicProtein( "0", "b", 0 );
3099 final Protein b_1 = new BasicProtein( "1", "b", 0 );
3100 a_0.addProteinDomain( u );
3101 a_0.addProteinDomain( v );
3102 a_0.addProteinDomain( w );
3103 a_1.addProteinDomain( w );
3104 a_1.addProteinDomain( x );
3105 a_2.addProteinDomain( y );
3106 a_2.addProteinDomain( z );
3107 b_0.addProteinDomain( u );
3108 b_0.addProteinDomain( w );
3109 b_1.addProteinDomain( y );
3110 b_1.addProteinDomain( z );
3111 final List<Protein> protein_list_a = new ArrayList<Protein>();
3112 protein_list_a.add( a_0 );
3113 protein_list_a.add( a_1 );
3114 protein_list_a.add( a_2 );
3115 final List<Protein> protein_list_b = new ArrayList<Protein>();
3116 protein_list_b.add( b_0 );
3117 protein_list_b.add( b_1 );
3118 final GenomeWideCombinableDomains ca = BasicGenomeWideCombinableDomains
3119 .createInstance( protein_list_a, false, new BasicSpecies( "a" ) );
3120 final GenomeWideCombinableDomains cb = BasicGenomeWideCombinableDomains
3121 .createInstance( protein_list_b, true, new BasicSpecies( "b" ) );
3122 final DomainArchitectureBasedGenomeSimilarityCalculator calc_u = new DomainArchitectureBasedGenomeSimilarityCalculator( ca,
3124 calc_u.setAllowDomainsToBeIgnored( true );
3125 if ( calc_u.getAllDomains().size() != 6 ) {
3128 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3131 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3134 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3137 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3140 if ( calc_u.getSharedDomains().size() != 4 ) {
3143 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3146 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3149 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3152 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3155 if ( calc_u.getAllDomains().size() != 6 ) {
3158 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3161 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3164 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3167 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3170 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3173 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3176 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 3 ) {
3179 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3182 if ( calc_u.getSharedBinaryDomainCombinations().size() != 2 ) {
3185 if ( calc_u.getAllBinaryDomainCombinations().size() != 5 ) {
3188 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3189 .contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3192 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3193 .contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3196 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3197 .contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3200 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3203 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3206 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3209 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3212 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3215 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3218 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3221 calc_u.setAllowDomainsToBeIgnored( true );
3222 calc_u.addDomainIdToIgnore( u.getDomainId() );
3223 calc_u.addDomainIdToIgnore( "other" );
3224 calc_u.addDomainIdToIgnore( "other_too" );
3225 if ( calc_u.getAllDomains().size() != 5 ) {
3228 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3231 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3234 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3237 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3240 if ( calc_u.getSharedDomains().size() != 3 ) {
3243 if ( calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3246 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3249 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3252 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3255 if ( calc_u.getAllDomains().size() != 5 ) {
3258 if ( calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3261 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3264 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3267 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3270 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3273 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3276 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 2 ) {
3279 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3282 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3285 if ( calc_u.getAllBinaryDomainCombinations().size() != 3 ) {
3288 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3289 .contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3292 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3293 .contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3296 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3297 .contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3300 if ( calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3303 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3306 if ( calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3309 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3312 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3315 if ( calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3318 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3321 calc_u.setAllowDomainsToBeIgnored( false );
3322 if ( calc_u.getAllDomains().size() != 6 ) {
3326 calc_u.setAllowDomainsToBeIgnored( true );
3327 calc_u.deleteAllDomainIdsToIgnore();
3328 calc_u.addDomainIdToIgnore( "v" );
3329 calc_u.addDomainIdToIgnore( "w" );
3330 calc_u.addDomainIdToIgnore( "other" );
3331 calc_u.addDomainIdToIgnore( "other_too" );
3332 if ( calc_u.getAllDomains().size() != 4 ) {
3335 if ( calc_u.getDomainsSpecificToGenome0().size() != 1 ) {
3338 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3341 if ( calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3344 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3347 if ( calc_u.getSharedDomains().size() != 3 ) {
3350 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3353 if ( calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3356 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3359 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3362 if ( calc_u.getAllDomains().size() != 4 ) {
3365 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3368 if ( calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3371 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3374 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3377 if ( calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3380 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3383 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 0 ) {
3386 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3389 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3392 if ( calc_u.getAllBinaryDomainCombinations().size() != 1 ) {
3395 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "y", "z" ) ) ) {
3398 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3401 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3402 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3405 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3408 calc_u.setAllowDomainsToBeIgnored( false );
3409 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3410 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3413 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3416 calc_u.setAllowDomainsToBeIgnored( true );
3417 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3418 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3421 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3424 calc_u.deleteAllDomainIdsToIgnore();
3425 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3426 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3429 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3433 catch ( final Exception e ) {
3434 e.printStackTrace( System.out );
3440 private static boolean testDomainCombinationCounting( final File test_dir ) {
3442 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
3443 + ForesterUtil.getFileSeparator() + "hmmpfam_output2" ), "human", "ls" );
3444 parser.setEValueMaximum( 0.2 );
3445 parser.setIgnoreDufs( true );
3446 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
3447 final List<Protein> domain_collections = parser.parse();
3448 final BasicGenomeWideCombinableDomains cdcc = BasicGenomeWideCombinableDomains
3449 .createInstance( domain_collections, false, new BasicSpecies( "human" ) );
3450 CombinableDomains cd = cdcc.get( "A" );
3451 if ( cd.getKeyDomainCount() != 9 ) {
3454 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3457 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3460 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 2 ) {
3463 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3466 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3469 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3472 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3475 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3478 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3481 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3484 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3487 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3490 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3493 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3496 if ( cd.getKeyDomainCount() != 9 ) {
3499 cd = cdcc.get( "B" );
3500 if ( cd.getKeyDomainCount() != 12 ) {
3503 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3506 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3509 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 6 ) {
3512 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3515 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3518 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3521 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3524 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3527 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3530 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3533 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3536 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3539 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3542 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3545 if ( cd.getKeyDomainCount() != 12 ) {
3548 cd = cdcc.get( "C" );
3549 if ( cd.getKeyDomainCount() != 10 ) {
3552 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3555 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3558 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 4 ) {
3561 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3564 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 2 ) {
3567 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3570 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3573 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3576 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3579 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3582 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 2 ) {
3585 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 2 ) {
3588 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 2 ) {
3591 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3594 cd = cdcc.get( "D" );
3595 if ( cd.getKeyDomainCount() != 15 ) {
3598 if ( cd.getKeyDomainProteinsCount() != 6 ) {
3601 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3604 cd = cdcc.get( "E" );
3605 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3608 if ( cd.getKeyDomainCount() != 1 ) {
3611 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3614 cd = cdcc.get( "U" );
3615 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3618 if ( cd.getKeyDomainCount() != 6 ) {
3621 if ( cd.getKeyDomainProteinsCount() != 3 ) {
3624 cd = cdcc.get( "V" );
3625 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3628 if ( cd.getKeyDomainCount() != 3 ) {
3631 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3634 cd = cdcc.get( "W" );
3635 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3638 if ( cd.getKeyDomainCount() != 2 ) {
3641 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3644 cd = cdcc.get( "X" );
3645 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3648 if ( cd.getKeyDomainCount() != 2 ) {
3651 cd = cdcc.get( "Y" );
3652 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3655 cd = cdcc.get( "Z" );
3656 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3659 cd = cdcc.get( "NN" );
3660 if ( cd.getKeyDomainCount() != 1 ) {
3663 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3666 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3669 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3672 cd = cdcc.get( "MM" );
3673 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3676 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 0 ) {
3679 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3682 cd = cdcc.get( "OO" );
3683 if ( cd.getNumberOfCombinableDomains() != 2 ) {
3686 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3689 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 1 ) {
3692 cd = cdcc.get( "QQ" );
3693 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3696 if ( cd.getKeyDomainCount() != 17 ) {
3699 if ( cd.getKeyDomainProteinsCount() != 4 ) {
3702 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "QQ" ).getDomainId() ) != 3 ) {
3705 cd = cdcc.get( "PP" );
3706 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3709 if ( cd.getKeyDomainCount() != 2 ) {
3712 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3715 cd = cdcc.get( "singlet" );
3716 if ( cd.getKeyDomainCount() != 1 ) {
3719 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3722 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3725 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "singlet" ).getDomainId() ) != 0 ) {
3728 cd = cdcc.get( "three" );
3729 if ( cd.getKeyDomainCount() != 3 ) {
3732 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3735 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3738 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 1 ) {
3741 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
3744 // Ignore combinations with same:
3745 final BasicGenomeWideCombinableDomains cdcc2 = BasicGenomeWideCombinableDomains
3746 .createInstance( domain_collections,
3748 new BasicSpecies( "human" ),
3750 DomainCombinationType.BASIC,
3753 cd = cdcc2.get( "A" );
3754 if ( cd.getKeyDomainCount() != 9 ) {
3757 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3760 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3763 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 0 ) {
3766 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3769 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3772 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3775 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3778 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3781 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3784 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3787 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3790 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3793 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3796 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3799 cd = cdcc2.get( "B" );
3800 if ( cd.getKeyDomainCount() != 12 ) {
3803 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3806 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3809 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 6 ) {
3812 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 0 ) {
3815 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 4 ) {
3818 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3821 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3824 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3827 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3830 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3833 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3836 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3839 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3842 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3845 cd = cdcc2.get( "C" );
3846 if ( cd.getKeyDomainCount() != 10 ) {
3849 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3852 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3855 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 4 ) {
3858 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 4 ) {
3861 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 0 ) {
3864 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3867 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3870 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3873 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3876 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3879 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 2 ) {
3882 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 2 ) {
3885 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 2 ) {
3888 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3891 cd = cdcc2.get( "D" );
3892 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3895 cd = cdcc2.get( "E" );
3896 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3899 if ( cd.getKeyDomainCount() != 1 ) {
3902 cd = cdcc2.get( "U" );
3903 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3906 cd = cdcc2.get( "V" );
3907 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3910 cd = cdcc2.get( "W" );
3911 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3914 cd = cdcc2.get( "X" );
3915 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3918 cd = cdcc2.get( "Y" );
3919 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3922 cd = cdcc2.get( "Z" );
3923 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3926 cd = cdcc2.get( "NN" );
3927 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3930 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3933 cd = cdcc2.get( "MM" );
3934 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3937 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 0 ) {
3940 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 1 ) {
3943 cd = cdcc2.get( "OO" );
3944 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3947 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 0 ) {
3950 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 1 ) {
3953 cd = cdcc2.get( "QQ" );
3954 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3957 if ( cd.getNumberOfProteinsExhibitingCombination( "QQ" ) != 0 ) {
3960 cd = cdcc2.get( "singlet" );
3961 if ( cd.getKeyDomainCount() != 1 ) {
3964 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3967 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3970 if ( cd.getNumberOfProteinsExhibitingCombination( "singlet" ) != 0 ) {
3973 cd = cdcc2.get( "three" );
3974 if ( cd.getKeyDomainCount() != 3 ) {
3977 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3980 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3983 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 0 ) {
3986 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
3990 catch ( final Exception e ) {
3991 e.printStackTrace( System.out );
3997 private static boolean testDomainSorting() {
3999 final Domain A = new BasicDomain( "A", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4000 final Domain B = new BasicDomain( "B", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4001 final Domain C = new BasicDomain( "C", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.2, -12 );
4002 final Domain D = new BasicDomain( "D", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.3, -12 );
4003 final Domain E = new BasicDomain( "E", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.4, -12 );
4004 final Domain F = new BasicDomain( "F", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.5, -12 );
4005 final Domain G = new BasicDomain( "G", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.6, -12 );
4006 final Domain H1 = new BasicDomain( "H", ( short ) 100, ( short ) 200, ( short ) 1, ( short ) 5, 0.7, -12 );
4007 final Domain H2 = new BasicDomain( "H", ( short ) 300, ( short ) 400, ( short ) 2, ( short ) 5, 0.7, -12 );
4008 final Domain H3 = new BasicDomain( "H", ( short ) 500, ( short ) 600, ( short ) 3, ( short ) 5, 0.7, -12 );
4009 final Domain H4 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 4, ( short ) 5, 0.7, -12 );
4010 final Domain H5 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4011 final Domain H6 = new BasicDomain( "H",
4018 final Domain H7 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4019 final Domain H8 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 200, 0.7, -12 );
4020 final Protein protein = new BasicProtein( "00", "bat", 0 );
4021 protein.addProteinDomain( H5 );
4022 protein.addProteinDomain( H2 );
4023 protein.addProteinDomain( H7 );
4024 protein.addProteinDomain( H6 );
4025 protein.addProteinDomain( A );
4026 protein.addProteinDomain( G );
4027 protein.addProteinDomain( H4 );
4028 protein.addProteinDomain( D );
4029 protein.addProteinDomain( H1 );
4030 protein.addProteinDomain( C );
4031 protein.addProteinDomain( E );
4032 protein.addProteinDomain( F );
4033 protein.addProteinDomain( B );
4034 protein.addProteinDomain( H3 );
4035 protein.addProteinDomain( H7 );
4036 protein.addProteinDomain( H7 );
4037 protein.addProteinDomain( H8 );
4038 final List<Domain> sorted = SurfacingUtil.sortDomainsWithAscendingConfidenceValues( protein );
4039 if ( sorted.size() != 17 ) {
4042 if ( !sorted.get( 0 ).getDomainId().equals( "A" ) ) {
4045 if ( sorted.get( 0 ).getNumber() != 1 ) {
4048 if ( !sorted.get( 1 ).getDomainId().equals( "B" ) ) {
4051 if ( sorted.get( 1 ).getNumber() != 1 ) {
4054 if ( !sorted.get( 2 ).getDomainId().equals( "C" ) ) {
4057 if ( sorted.get( 2 ).getNumber() != 1 ) {
4060 if ( !sorted.get( 3 ).getDomainId().equals( "D" ) ) {
4063 if ( sorted.get( 3 ).getNumber() != 1 ) {
4066 if ( !sorted.get( 4 ).getDomainId().equals( "E" ) ) {
4069 if ( sorted.get( 4 ).getNumber() != 1 ) {
4072 if ( !sorted.get( 5 ).getDomainId().equals( "F" ) ) {
4075 if ( sorted.get( 5 ).getNumber() != 1 ) {
4078 if ( !sorted.get( 6 ).getDomainId().equals( "G" ) ) {
4081 if ( sorted.get( 6 ).getNumber() != 1 ) {
4084 if ( !sorted.get( 7 ).getDomainId().equals( "H" ) ) {
4087 if ( sorted.get( 7 ).getNumber() != 5 ) {
4090 if ( !sorted.get( 8 ).getDomainId().equals( "H" ) ) {
4093 if ( sorted.get( 8 ).getNumber() != 2 ) {
4096 if ( !sorted.get( 9 ).getDomainId().equals( "H" ) ) {
4099 if ( sorted.get( 9 ).getNumber() != 6 ) {
4102 if ( !sorted.get( 10 ).getDomainId().equals( "H" ) ) {
4105 if ( sorted.get( 10 ).getNumber() != 4 ) {
4108 if ( !sorted.get( 11 ).getDomainId().equals( "H" ) ) {
4111 if ( sorted.get( 11 ).getNumber() != 1 ) {
4114 if ( sorted.get( 11 ).getTotalCount() != 5 ) {
4117 if ( !sorted.get( 12 ).getDomainId().equals( "H" ) ) {
4120 if ( sorted.get( 12 ).getNumber() != 3 ) {
4123 if ( !sorted.get( 13 ).getDomainId().equals( "H7" ) ) {
4126 if ( sorted.get( 13 ).getNumber() != 5 ) {
4129 if ( !sorted.get( 14 ).getDomainId().equals( "H7" ) ) {
4132 if ( sorted.get( 14 ).getNumber() != 5 ) {
4135 if ( !sorted.get( 15 ).getDomainId().equals( "H7" ) ) {
4138 if ( sorted.get( 15 ).getNumber() != 5 ) {
4141 // To check if sorting is stable [as claimed by Sun for
4142 // Collections.sort( List )]
4143 if ( !sorted.get( 16 ).getDomainId().equals( "H7" ) ) {
4146 if ( sorted.get( 16 ).getNumber() != 5 ) {
4149 if ( sorted.get( 16 ).getTotalCount() != 200 ) {
4153 catch ( final Exception e ) {
4154 e.printStackTrace( System.out );
4160 private static boolean testGenomeWideCombinableDomains() {
4162 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4163 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4164 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4165 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4166 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4167 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4168 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4169 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4170 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4171 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
4172 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
4173 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
4174 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
4175 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
4176 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
4177 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
4178 eel_1.addProteinDomain( a );
4179 eel_2.addProteinDomain( a );
4180 eel_2.addProteinDomain( b );
4181 eel_3.addProteinDomain( a );
4182 eel_3.addProteinDomain( a );
4183 eel_3.addProteinDomain( b );
4184 eel_4.addProteinDomain( a );
4185 eel_4.addProteinDomain( b );
4186 eel_4.addProteinDomain( c );
4187 eel_4.addProteinDomain( d );
4188 eel_4.addProteinDomain( e );
4189 eel_5.addProteinDomain( e );
4190 eel_5.addProteinDomain( e );
4191 eel_5.addProteinDomain( f );
4192 eel_5.addProteinDomain( f );
4193 eel_5.addProteinDomain( f );
4194 eel_5.addProteinDomain( f );
4195 eel_6.addProteinDomain( g );
4196 eel_6.addProteinDomain( h );
4197 final List<Protein> protein_list_eel = new ArrayList<Protein>();
4198 protein_list_eel.add( eel_0 );
4199 protein_list_eel.add( eel_1 );
4200 protein_list_eel.add( eel_2 );
4201 protein_list_eel.add( eel_3 );
4202 protein_list_eel.add( eel_4 );
4203 protein_list_eel.add( eel_5 );
4204 protein_list_eel.add( eel_6 );
4205 final BasicGenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
4206 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
4207 final BasicGenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
4208 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
4209 if ( !eel_not_ignore.contains( "a" ) ) {
4212 if ( !eel_not_ignore.contains( "b" ) ) {
4215 if ( !eel_not_ignore.contains( "c" ) ) {
4218 if ( !eel_not_ignore.contains( "d" ) ) {
4221 if ( !eel_not_ignore.contains( "e" ) ) {
4224 if ( !eel_not_ignore.contains( "f" ) ) {
4227 if ( !eel_not_ignore.contains( "g" ) ) {
4230 if ( !eel_not_ignore.contains( "h" ) ) {
4233 if ( eel_not_ignore.contains( "x" ) ) {
4236 if ( !eel_ignore.contains( "a" ) ) {
4239 if ( !eel_ignore.contains( "b" ) ) {
4242 if ( !eel_ignore.contains( "c" ) ) {
4245 if ( !eel_ignore.contains( "d" ) ) {
4248 if ( !eel_ignore.contains( "e" ) ) {
4251 if ( !eel_ignore.contains( "f" ) ) {
4254 if ( !eel_ignore.contains( "g" ) ) {
4257 if ( !eel_ignore.contains( "h" ) ) {
4260 if ( eel_ignore.contains( "x" ) ) {
4263 if ( eel_not_ignore.getSize() != 8 ) {
4266 if ( eel_ignore.getSize() != 8 ) {
4269 if ( eel_not_ignore.get( "a" ).getCombinableDomainsIds().size() != 5 ) {
4272 if ( eel_not_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4275 if ( eel_not_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4278 if ( eel_not_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4281 if ( eel_not_ignore.get( "e" ).getCombinableDomainsIds().size() != 6 ) {
4284 if ( eel_not_ignore.get( "f" ).getCombinableDomainsIds().size() != 2 ) {
4287 if ( eel_not_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4290 if ( eel_not_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4293 if ( eel_ignore.get( "a" ).getCombinableDomainsIds().size() != 4 ) {
4296 if ( eel_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4299 if ( eel_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4302 if ( eel_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4305 if ( eel_ignore.get( "e" ).getCombinableDomainsIds().size() != 5 ) {
4308 if ( eel_ignore.get( "f" ).getCombinableDomainsIds().size() != 1 ) {
4311 if ( eel_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4314 if ( eel_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4317 if ( eel_not_ignore.getAllDomainIds().size() != 8 ) {
4320 if ( !eel_not_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4323 if ( !eel_not_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4326 if ( !eel_not_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4329 if ( !eel_not_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4332 if ( !eel_not_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4335 if ( !eel_not_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4338 if ( !eel_not_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4341 if ( !eel_not_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4344 if ( eel_not_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4347 if ( eel_ignore.getAllDomainIds().size() != 8 ) {
4350 if ( !eel_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4353 if ( !eel_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4356 if ( !eel_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4359 if ( !eel_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4362 if ( !eel_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4365 if ( !eel_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4368 if ( !eel_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4371 if ( !eel_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4374 if ( eel_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4377 final SortedSet<BinaryDomainCombination> bc0 = eel_not_ignore.toBinaryDomainCombinations();
4378 if ( bc0.size() != 15 ) {
4381 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
4384 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
4387 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
4390 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
4393 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
4396 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
4399 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
4402 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
4405 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
4408 if ( !bc0.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
4411 if ( !bc0.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
4414 if ( !bc0.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
4417 if ( !bc0.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
4420 if ( !bc0.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
4423 if ( !bc0.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
4426 if ( !bc0.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
4429 if ( bc0.contains( new BasicBinaryDomainCombination( "f", "a" ) ) ) {
4432 if ( bc0.contains( new BasicBinaryDomainCombination( "f", "b" ) ) ) {
4435 if ( bc0.contains( new BasicBinaryDomainCombination( "a", "h" ) ) ) {
4438 if ( bc0.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
4441 final SortedSet<BinaryDomainCombination> bc1 = eel_ignore.toBinaryDomainCombinations();
4442 if ( bc1.size() != 12 ) {
4445 if ( bc1.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
4448 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
4451 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
4454 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
4457 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
4460 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
4463 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
4466 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
4469 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
4472 if ( !bc1.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
4475 if ( !bc1.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
4478 if ( !bc1.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
4481 if ( !bc1.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
4484 if ( !bc1.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
4487 if ( bc1.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
4490 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
4493 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "a" ) ) ) {
4496 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "b" ) ) ) {
4499 if ( bc1.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
4502 if ( bc1.contains( new BasicBinaryDomainCombination( "b", "g" ) ) ) {
4506 catch ( final Exception e ) {
4507 e.printStackTrace( System.out );
4513 private static boolean testHmmPfamOutputParser( final File test_dir ) {
4515 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
4516 + ForesterUtil.getFileSeparator() + "hmmpfam_output" ), "human", "ls" );
4517 parser.setEValueMaximum( 0.2 );
4518 parser.setIgnoreDufs( true );
4519 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4520 List<?> domain_collections = null;
4521 domain_collections = parser.parse();
4522 if ( parser.getDomainsEncountered() != 4 ) {
4525 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4528 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4531 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4534 if ( parser.getDomainsStored() != 3 ) {
4537 if ( domain_collections.size() != 1 ) {
4540 final Protein pdc = ( Protein ) domain_collections.get( 0 );
4541 if ( !pdc.getProteinId().equals( new ProteinId( "ENSP00000285681" ) ) ) {
4544 if ( !pdc.getSpecies().getSpeciesId().equals( "human" ) ) {
4547 if ( pdc.getNumberOfProteinDomains() != 3 ) {
4550 if ( !pdc.getAccession().equals( "acc_ENSP00000285681" ) ) {
4555 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4558 final List<Domain> uba = pdc.getProteinDomains( "UBA" );
4559 final List<Domain> uim = pdc.getProteinDomains( "UIM" );
4560 final List<Domain> uch = pdc.getProteinDomains( "UCH" );
4561 if ( uba.size() != 1 ) {
4564 if ( uim.size() != 2 ) {
4567 if ( uch.size() != 0 ) {
4570 final BasicDomain uim_domain = ( BasicDomain ) uim.get( 1 );
4571 if ( !uim_domain.getDomainId().equals( "UIM" ) ) {
4574 if ( uim_domain.getTotalCount() != 2 ) {
4577 final BasicDomain uba_domain = ( BasicDomain ) uba.get( 0 );
4578 if ( !uba_domain.getDomainId().equals( "UBA" ) ) {
4581 if ( uba_domain.getNumber() != 1 ) {
4584 if ( uba_domain.getTotalCount() != 1 ) {
4587 if ( uba_domain.getFrom() != 16 ) {
4590 if ( uba_domain.getTo() != 57 ) {
4593 if ( !Test.isEqual( uba_domain.getPerSequenceEvalue(), 0.00084 ) ) {
4596 if ( !Test.isEqual( uba_domain.getPerSequenceScore(), 23.2 ) ) {
4599 final HmmPfamOutputParser parser2 = new HmmPfamOutputParser( new File( test_dir
4600 + ForesterUtil.getFileSeparator() + "hmmpfam_output_short" ), "human", "ls" );
4601 parser2.setEValueMaximum( 0.2 );
4602 parser2.setIgnoreDufs( true );
4603 parser2.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4604 List<Protein> domain_collections2 = null;
4605 domain_collections2 = parser2.parse();
4606 if ( parser2.getDomainsEncountered() != 4 ) {
4609 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4612 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4615 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4618 if ( parser2.getDomainsStored() != 3 ) {
4621 if ( domain_collections2.size() != 1 ) {
4624 final Protein pdc2 = domain_collections2.get( 0 );
4625 if ( !pdc2.getProteinId().getId().equals( "ENSP00000285681" ) ) {
4628 if ( !pdc2.getSpecies().getSpeciesId().equals( "human" ) ) {
4631 if ( !pdc2.getName().equals( "" ) ) {
4634 if ( !pdc2.getAccession().equals( "223" ) ) {
4639 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4642 if ( pdc2.getNumberOfProteinDomains() != 3 ) {
4645 final List<Domain> uba2 = pdc2.getProteinDomains( "UBA" );
4646 final List<Domain> uim2 = pdc2.getProteinDomains( "UIM" );
4647 final List<Domain> uch2 = pdc2.getProteinDomains( "UCH" );
4648 if ( uba2.size() != 1 ) {
4651 if ( uim2.size() != 2 ) {
4654 if ( uch2.size() != 0 ) {
4657 final BasicDomain uim_domain2 = ( BasicDomain ) uim2.get( 1 );
4658 if ( !uim_domain2.getDomainId().equals( "UIM" ) ) {
4661 if ( uim_domain2.getTotalCount() != 2 ) {
4664 final BasicDomain uba_domain2 = ( BasicDomain ) uba2.get( 0 );
4665 if ( !uba_domain2.getDomainId().equals( "UBA" ) ) {
4668 if ( uba_domain2.getNumber() != 1 ) {
4671 if ( uba_domain2.getTotalCount() != 1 ) {
4674 if ( uba_domain2.getFrom() != 16 ) {
4677 if ( uba_domain2.getTo() != 57 ) {
4680 if ( !Test.isEqual( uba_domain2.getPerSequenceEvalue(), 0.00084 ) ) {
4684 catch ( final Exception e ) {
4685 e.printStackTrace( System.out );
4691 private static boolean testHmmPfamOutputParserWithFilter( final File test_dir ) {
4693 HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator()
4694 + "hmmpfam_output3" ), "human", "ls" );
4695 parser.setEValueMaximum( 0.2 );
4696 parser.setIgnoreDufs( true );
4697 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4698 List<Protein> proteins = null;
4699 proteins = parser.parse();
4700 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4703 if ( proteins.size() != 4 ) {
4707 Set<String> filter = new TreeSet<String>();
4708 filter.add( "beauty" );
4709 filter.add( "strange" );
4710 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4714 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4715 parser.setEValueMaximum( 0.2 );
4716 parser.setIgnoreDufs( true );
4717 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4719 proteins = parser.parse();
4720 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4723 if ( proteins.size() != 4 ) {
4727 filter = new TreeSet<String>();
4728 filter.add( "beauty" );
4729 filter.add( "strange" );
4730 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4734 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4735 parser.setEValueMaximum( 0.2 );
4736 parser.setIgnoreDufs( true );
4737 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4739 proteins = parser.parse();
4740 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4743 if ( proteins.size() != 0 ) {
4747 filter = new TreeSet<String>();
4748 filter.add( "UIM" );
4751 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4755 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4756 parser.setEValueMaximum( 0.2 );
4757 parser.setIgnoreDufs( true );
4758 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4760 proteins = parser.parse();
4761 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4764 if ( proteins.size() != 4 ) {
4768 filter = new TreeSet<String>();
4769 filter.add( "UIM" );
4773 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4777 HmmPfamOutputParser.FilterType.NEGATIVE_DOMAIN );
4778 parser.setEValueMaximum( 0.2 );
4779 parser.setIgnoreDufs( true );
4780 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4782 proteins = parser.parse();
4783 if ( parser.getDomainsIgnoredDueToNegativeDomainFilter() != 7 ) {
4786 if ( proteins.size() != 3 ) {
4790 filter = new TreeSet<String>();
4791 filter.add( "UIM" );
4794 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4798 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4799 parser.setEValueMaximum( 0.2 );
4800 parser.setIgnoreDufs( true );
4801 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4803 proteins = parser.parse();
4804 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4807 if ( proteins.size() != 0 ) {
4811 filter = new TreeSet<String>();
4812 filter.add( "UIM" );
4813 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4817 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4818 parser.setEValueMaximum( 0.2 );
4819 parser.setIgnoreDufs( true );
4820 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4822 proteins = parser.parse();
4823 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4826 if ( parser.getProteinsStored() != 3 ) {
4829 if ( proteins.size() != 3 ) {
4833 filter = new TreeSet<String>();
4834 filter.add( "UIM" );
4835 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4839 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4840 parser.setEValueMaximum( 0.2 );
4841 parser.setIgnoreDufs( true );
4842 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4844 proteins = parser.parse();
4845 if ( parser.getProteinsIgnoredDueToFilter() != 3 ) {
4848 if ( parser.getProteinsStored() != 1 ) {
4851 if ( proteins.size() != 1 ) {
4855 filter = new TreeSet<String>();
4858 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4862 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4863 parser.setEValueMaximum( 0.2 );
4864 parser.setIgnoreDufs( true );
4865 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4867 proteins = parser.parse();
4868 if ( parser.getDomainsEncountered() != 11 ) {
4871 if ( parser.getProteinsEncountered() != 4 ) {
4874 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4877 if ( parser.getProteinsStored() != 3 ) {
4880 if ( proteins.size() != 3 ) {
4884 catch ( final Exception e ) {
4885 e.printStackTrace( System.out );
4891 private static boolean testParsimony() {
4893 final BinaryStates X = BinaryStates.PRESENT;
4894 final BinaryStates O = BinaryStates.ABSENT;
4895 final GainLossStates G = GainLossStates.GAIN;
4896 final GainLossStates L = GainLossStates.LOSS;
4897 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
4898 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
4899 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4900 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4901 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4902 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4903 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4904 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4905 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4906 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4907 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4908 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4909 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4910 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4911 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4912 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4913 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4914 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4915 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4916 // 1 a-a a-b a-c e-f-g-h l-m
4917 // 2 a-b a-c e-f-g-i n-o
4918 // 3 a-b a-d e-f-g-j p-q
4920 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
4921 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
4922 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
4924 // 1 a b c e f g h l m
4925 // 2 a b c e f g i n o
4926 // 3 a b d e f g j p q
4928 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
4929 aa1.addProteinDomain( a );
4930 aa1.addProteinDomain( a );
4931 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
4932 ab1.addProteinDomain( a );
4933 ab1.addProteinDomain( b );
4934 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
4935 ac1.addProteinDomain( a );
4936 ac1.addProteinDomain( c );
4937 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
4938 efgh1.addProteinDomain( e );
4939 efgh1.addProteinDomain( f );
4940 efgh1.addProteinDomain( g );
4941 efgh1.addProteinDomain( h );
4942 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
4943 lm1.addProteinDomain( l );
4944 lm1.addProteinDomain( m );
4945 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
4946 ab2.addProteinDomain( a );
4947 ab2.addProteinDomain( b );
4948 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
4949 ac2.addProteinDomain( a );
4950 ac2.addProteinDomain( c );
4951 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
4952 efgi2.addProteinDomain( e );
4953 efgi2.addProteinDomain( f );
4954 efgi2.addProteinDomain( g );
4955 efgi2.addProteinDomain( i );
4956 final Protein no2 = new BasicProtein( "no2", "two", 0 );
4957 no2.addProteinDomain( n );
4958 no2.addProteinDomain( o );
4959 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
4960 ab3.addProteinDomain( a );
4961 ab3.addProteinDomain( b );
4962 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
4963 ad3.addProteinDomain( a );
4964 ad3.addProteinDomain( d );
4965 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
4966 efgj3.addProteinDomain( e );
4967 efgj3.addProteinDomain( f );
4968 efgj3.addProteinDomain( g );
4969 efgj3.addProteinDomain( j );
4970 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
4971 pq3.addProteinDomain( p );
4972 pq3.addProteinDomain( q );
4973 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
4974 ab4.addProteinDomain( a );
4975 ab4.addProteinDomain( b );
4976 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
4977 ad4.addProteinDomain( a );
4978 ad4.addProteinDomain( d );
4979 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
4980 pr4.addProteinDomain( p );
4981 pr4.addProteinDomain( r );
4982 final List<Protein> one_list = new ArrayList<Protein>();
4983 one_list.add( aa1 );
4984 one_list.add( ab1 );
4985 one_list.add( ac1 );
4986 one_list.add( efgh1 );
4987 one_list.add( lm1 );
4988 final List<Protein> two_list = new ArrayList<Protein>();
4989 two_list.add( ab2 );
4990 two_list.add( ac2 );
4991 two_list.add( efgi2 );
4992 two_list.add( no2 );
4993 final List<Protein> three_list = new ArrayList<Protein>();
4994 three_list.add( ab3 );
4995 three_list.add( ad3 );
4996 three_list.add( efgj3 );
4997 three_list.add( pq3 );
4998 final List<Protein> four_list = new ArrayList<Protein>();
4999 four_list.add( ab4 );
5000 four_list.add( ad4 );
5001 four_list.add( pr4 );
5002 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5003 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5004 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5005 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5006 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5007 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5008 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5009 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5010 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5011 gwcd_list.add( one );
5012 gwcd_list.add( two );
5013 gwcd_list.add( three );
5014 gwcd_list.add( four );
5015 final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
5016 .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
5017 final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
5018 .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
5019 // 1 a b c e f g h l m
5020 // 2 a b c e f g i n o
5021 // 3 a b d e f g j p q
5023 if ( matrix_d.getState( 0, 0 ) != X ) {
5026 if ( matrix_d.getState( 0, 1 ) != X ) {
5029 if ( matrix_d.getState( 0, 2 ) != X ) {
5032 if ( matrix_d.getState( 0, 3 ) != O ) {
5035 if ( matrix_d.getState( 0, 4 ) != X ) {
5038 if ( matrix_d.getState( 0, 5 ) != X ) {
5041 if ( matrix_d.getState( 0, 6 ) != X ) {
5044 if ( matrix_d.getState( 0, 7 ) != X ) {
5047 if ( matrix_d.getState( 0, 8 ) != O ) {
5050 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5051 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5052 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5054 if ( matrix_bc.getState( 0, 0 ) != X ) {
5057 if ( matrix_bc.getState( 0, 1 ) != X ) {
5060 if ( matrix_bc.getState( 0, 2 ) != X ) {
5063 if ( matrix_bc.getState( 0, 3 ) != O ) {
5066 if ( matrix_bc.getState( 0, 4 ) != X ) {
5069 if ( matrix_bc.getState( 1, 0 ) != O ) {
5072 if ( matrix_bc.getState( 1, 1 ) != X ) {
5075 if ( matrix_bc.getState( 1, 2 ) != X ) {
5078 if ( matrix_bc.getState( 1, 3 ) != O ) {
5081 if ( matrix_bc.getState( 1, 4 ) != X ) {
5084 if ( matrix_bc.getState( 2, 0 ) != O ) {
5087 if ( matrix_bc.getState( 2, 1 ) != X ) {
5090 if ( matrix_bc.getState( 2, 2 ) != O ) {
5093 if ( matrix_bc.getState( 2, 3 ) != X ) {
5096 if ( matrix_bc.getState( 2, 4 ) != X ) {
5099 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5100 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5101 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5102 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list );
5103 dp0.executeDolloParsimonyOnDomainPresence();
5104 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5105 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5106 dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
5107 final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
5108 final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
5109 if ( is_matrix_d.getState( "root", "A" ) != X ) {
5112 if ( is_matrix_d.getState( "root", "B" ) != X ) {
5115 if ( is_matrix_d.getState( "root", "C" ) != O ) {
5118 if ( is_matrix_d.getState( "root", "D" ) != O ) {
5121 if ( is_matrix_d.getState( "root", "E" ) != X ) {
5124 if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
5127 if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
5130 if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
5133 if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
5136 if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
5139 if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
5142 if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
5145 if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
5148 if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
5151 if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
5154 if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
5157 if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
5160 if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
5163 if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
5167 catch ( final Exception e ) {
5168 e.printStackTrace( System.out );
5174 private static boolean testParsimonyOnSecondaryFeatures() {
5176 final BinaryStates X = BinaryStates.PRESENT;
5177 final BinaryStates O = BinaryStates.ABSENT;
5178 final GainLossStates G = GainLossStates.GAIN;
5179 final GainLossStates L = GainLossStates.LOSS;
5180 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
5181 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
5182 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5183 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5184 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5185 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5186 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5187 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5188 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5189 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5190 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5191 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5192 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5193 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5194 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5195 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5196 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5197 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5198 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5199 // 1 a-a a-b a-c e-f-g-h l-m
5200 // 2 a-b a-c e-f-g-i n-o
5201 // 3 a-b a-d e-f-g-j p-q
5203 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5204 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5205 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5207 // 1 a b c e f g h l m
5208 // 2 a b c e f g i n o
5209 // 3 a b d e f g j p q
5211 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
5212 aa1.addProteinDomain( a );
5213 aa1.addProteinDomain( a );
5214 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
5215 ab1.addProteinDomain( a );
5216 ab1.addProteinDomain( b );
5217 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
5218 ac1.addProteinDomain( a );
5219 ac1.addProteinDomain( c );
5220 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
5221 efgh1.addProteinDomain( e );
5222 efgh1.addProteinDomain( f );
5223 efgh1.addProteinDomain( g );
5224 efgh1.addProteinDomain( h );
5225 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
5226 lm1.addProteinDomain( l );
5227 lm1.addProteinDomain( m );
5228 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
5229 ab2.addProteinDomain( a );
5230 ab2.addProteinDomain( b );
5231 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
5232 ac2.addProteinDomain( a );
5233 ac2.addProteinDomain( c );
5234 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
5235 efgi2.addProteinDomain( e );
5236 efgi2.addProteinDomain( f );
5237 efgi2.addProteinDomain( g );
5238 efgi2.addProteinDomain( i );
5239 final Protein no2 = new BasicProtein( "no2", "two", 0 );
5240 no2.addProteinDomain( n );
5241 no2.addProteinDomain( o );
5242 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
5243 ab3.addProteinDomain( a );
5244 ab3.addProteinDomain( b );
5245 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
5246 ad3.addProteinDomain( a );
5247 ad3.addProteinDomain( d );
5248 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
5249 efgj3.addProteinDomain( e );
5250 efgj3.addProteinDomain( f );
5251 efgj3.addProteinDomain( g );
5252 efgj3.addProteinDomain( j );
5253 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
5254 pq3.addProteinDomain( p );
5255 pq3.addProteinDomain( q );
5256 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
5257 ab4.addProteinDomain( a );
5258 ab4.addProteinDomain( b );
5259 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
5260 ad4.addProteinDomain( a );
5261 ad4.addProteinDomain( d );
5262 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
5263 pr4.addProteinDomain( p );
5264 pr4.addProteinDomain( r );
5265 final List<Protein> one_list = new ArrayList<Protein>();
5266 one_list.add( aa1 );
5267 one_list.add( ab1 );
5268 one_list.add( ac1 );
5269 one_list.add( efgh1 );
5270 one_list.add( lm1 );
5271 final List<Protein> two_list = new ArrayList<Protein>();
5272 two_list.add( ab2 );
5273 two_list.add( ac2 );
5274 two_list.add( efgi2 );
5275 two_list.add( no2 );
5276 final List<Protein> three_list = new ArrayList<Protein>();
5277 three_list.add( ab3 );
5278 three_list.add( ad3 );
5279 three_list.add( efgj3 );
5280 three_list.add( pq3 );
5281 final List<Protein> four_list = new ArrayList<Protein>();
5282 four_list.add( ab4 );
5283 four_list.add( ad4 );
5284 four_list.add( pr4 );
5285 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5286 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5287 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5288 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5289 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5290 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5291 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5292 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5293 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5294 gwcd_list.add( one );
5295 gwcd_list.add( two );
5296 gwcd_list.add( three );
5297 gwcd_list.add( four );
5298 final Map<String, Set<String>> map_same = new HashMap<String, Set<String>>();
5299 final HashSet<String> a_s = new HashSet<String>();
5301 final HashSet<String> b_s = new HashSet<String>();
5303 final HashSet<String> c_s = new HashSet<String>();
5305 final HashSet<String> d_s = new HashSet<String>();
5307 final HashSet<String> e_s = new HashSet<String>();
5309 final HashSet<String> f_s = new HashSet<String>();
5311 final HashSet<String> g_s = new HashSet<String>();
5313 final HashSet<String> h_s = new HashSet<String>();
5315 final HashSet<String> i_s = new HashSet<String>();
5317 final HashSet<String> j_s = new HashSet<String>();
5319 final HashSet<String> l_s = new HashSet<String>();
5321 final HashSet<String> m_s = new HashSet<String>();
5323 final HashSet<String> n_s = new HashSet<String>();
5325 final HashSet<String> o_s = new HashSet<String>();
5327 final HashSet<String> p_s = new HashSet<String>();
5329 final HashSet<String> q_s = new HashSet<String>();
5331 final HashSet<String> r_s = new HashSet<String>();
5333 map_same.put( a.getDomainId(), a_s );
5334 map_same.put( b.getDomainId(), b_s );
5335 map_same.put( c.getDomainId(), c_s );
5336 map_same.put( d.getDomainId(), d_s );
5337 map_same.put( e.getDomainId(), e_s );
5338 map_same.put( f.getDomainId(), f_s );
5339 map_same.put( g.getDomainId(), g_s );
5340 map_same.put( h.getDomainId(), h_s );
5341 map_same.put( i.getDomainId(), i_s );
5342 map_same.put( j.getDomainId(), j_s );
5343 map_same.put( l.getDomainId(), l_s );
5344 map_same.put( m.getDomainId(), m_s );
5345 map_same.put( n.getDomainId(), n_s );
5346 map_same.put( o.getDomainId(), o_s );
5347 map_same.put( p.getDomainId(), p_s );
5348 map_same.put( q.getDomainId(), q_s );
5349 map_same.put( r.getDomainId(), r_s );
5350 final CharacterStateMatrix<BinaryStates> matrix_s = DomainParsimonyCalculator
5351 .createMatrixOfSecondaryFeaturePresenceOrAbsence( gwcd_list, map_same, null );
5352 // 1 a b c e f g h l m
5353 // 2 a b c e f g i n o
5354 // 3 a b d e f g j p q
5356 if ( matrix_s.getState( 0, 0 ) != X ) {
5359 if ( matrix_s.getState( 0, 1 ) != X ) {
5362 if ( matrix_s.getState( 0, 2 ) != X ) {
5365 if ( matrix_s.getState( 0, 3 ) != O ) {
5368 if ( matrix_s.getState( 0, 4 ) != X ) {
5371 if ( matrix_s.getState( 0, 5 ) != X ) {
5374 if ( matrix_s.getState( 0, 6 ) != X ) {
5377 if ( matrix_s.getState( 0, 7 ) != X ) {
5380 if ( matrix_s.getState( 0, 8 ) != O ) {
5383 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5384 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5385 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5386 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list, map_same );
5387 dp0.executeDolloParsimonyOnSecondaryFeatures( null );
5388 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5389 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5390 if ( is_matrix_d.getState( "root", "AAA" ) != X ) {
5393 if ( is_matrix_d.getState( "root", "BBB" ) != X ) {
5396 if ( is_matrix_d.getState( "root", "CCC" ) != O ) {
5399 if ( is_matrix_d.getState( "root", "DDD" ) != O ) {
5402 if ( is_matrix_d.getState( "root", "EEE" ) != X ) {
5405 if ( gl_matrix_d.getState( "3-4", "PPP" ) != G ) {
5409 catch ( final Exception e ) {
5410 e.printStackTrace( System.out );
5416 private static boolean testPaupLogParser( final File test_dir ) {
5418 final PaupLogParser parser = new PaupLogParser();
5419 parser.setSource( new File( test_dir + ForesterUtil.getFileSeparator() + "paup_log_test_1" ) );
5420 final CharacterStateMatrix<BinaryStates> matrix = parser.parse();
5421 if ( matrix.getNumberOfIdentifiers() != 8 ) {
5424 if ( !matrix.getIdentifier( 0 ).equals( "MOUSE" ) ) {
5427 if ( !matrix.getIdentifier( 1 ).equals( "NEMVE" ) ) {
5430 if ( !matrix.getIdentifier( 2 ).equals( "MONBE" ) ) {
5433 if ( !matrix.getIdentifier( 3 ).equals( "DICDI" ) ) {
5436 if ( !matrix.getIdentifier( 4 ).equals( "ARATH" ) ) {
5439 if ( !matrix.getIdentifier( 5 ).equals( "6" ) ) {
5442 if ( !matrix.getIdentifier( 6 ).equals( "7" ) ) {
5445 if ( !matrix.getIdentifier( 7 ).equals( "8" ) ) {
5448 if ( matrix.getNumberOfCharacters() != ( 66 + 66 + 28 ) ) {
5451 if ( matrix.getState( 0, 4 ) != BinaryStates.ABSENT ) {
5454 if ( matrix.getState( 0, 5 ) != BinaryStates.PRESENT ) {
5457 if ( matrix.getState( 1, 5 ) != BinaryStates.PRESENT ) {
5460 if ( matrix.getState( 7, 154 ) != BinaryStates.ABSENT ) {
5463 if ( matrix.getState( 7, 155 ) != BinaryStates.PRESENT ) {
5466 if ( matrix.getState( 7, 156 ) != BinaryStates.PRESENT ) {
5469 if ( matrix.getState( 7, 157 ) != BinaryStates.ABSENT ) {
5472 if ( matrix.getState( 7, 158 ) != BinaryStates.PRESENT ) {
5475 if ( matrix.getState( 7, 159 ) != BinaryStates.ABSENT ) {
5479 catch ( final Exception e ) {
5480 e.printStackTrace( System.out );