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.nhx.NHXParser;
46 import org.forester.phylogeny.Phylogeny;
47 import org.forester.phylogeny.PhylogenyNode;
48 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
49 import org.forester.phylogeny.factories.PhylogenyFactory;
50 import org.forester.protein.BasicDomain;
51 import org.forester.protein.BasicProtein;
52 import org.forester.protein.BinaryDomainCombination;
53 import org.forester.protein.BinaryDomainCombination.DomainCombinationType;
54 import org.forester.protein.Domain;
55 import org.forester.protein.Protein;
56 import org.forester.protein.ProteinId;
57 import org.forester.species.BasicSpecies;
58 import org.forester.species.Species;
59 import org.forester.util.ForesterUtil;
61 @SuppressWarnings( "unused")
62 public class TestSurfacing {
64 private final static double ZERO_DIFF = 1.0E-9;
66 public static boolean isEqual( final double a, final double b ) {
67 return ( ( Math.abs( a - b ) ) < TestSurfacing.ZERO_DIFF );
70 public static boolean test( final File test_dir ) {
71 System.out.print( " Combinable domains: " );
72 if ( !TestSurfacing.testCombinableDomains() ) {
73 System.out.println( "failed." );
76 System.out.println( "OK." );
77 System.out.print( " Directed combinable domains: " );
78 if ( !TestSurfacing.testDirectedCombinableDomains() ) {
79 System.out.println( "failed." );
82 System.out.println( "OK." );
83 System.out.print( " Genome wide specific combinable domains: " );
84 if ( !TestSurfacing.testGenomeWideCombinableDomains() ) {
85 System.out.println( "failed." );
88 System.out.println( "OK." );
89 System.out.print( " Domain architecture based genome similarity calculator: " );
90 if ( !TestSurfacing.testDomainArchitectureBasedGenomeSimilarityCalculator() ) {
91 System.out.println( "failed." );
94 System.out.println( "OK." );
95 System.out.print( " Hmmpfam output parser: " );
96 if ( !TestSurfacing.testHmmPfamOutputParser( test_dir ) ) {
97 System.out.println( "failed." );
100 System.out.println( "OK." );
101 System.out.print( " Hmmpfam output parser with filter: " );
102 if ( !TestSurfacing.testHmmPfamOutputParserWithFilter( test_dir ) ) {
103 System.out.println( "failed." );
106 System.out.println( "OK." );
107 System.out.print( " Combinations based pairwise similarity calculator: " );
108 if ( !TestSurfacing.testCombinationsBasedPairwiseSimilarityCalculator() ) {
109 System.out.println( "failed." );
112 System.out.println( "OK." );
113 System.out.print( " Copy number based pairwise similarity calculator: " );
114 if ( !TestSurfacing.testCopyNumberBasedPairwiseSimilarityCalculator() ) {
117 System.out.println( "OK." );
118 System.out.print( " Domain combination counting: " );
119 if ( !TestSurfacing.testDomainCombinationCounting( test_dir ) ) {
120 System.out.println( "failed." );
123 System.out.println( "OK." );
124 System.out.print( " Basic domain similarity calculator: " );
125 if ( !TestSurfacing.testBasicDomainSimilarityCalculator() ) {
126 System.out.println( "failed." );
129 System.out.println( "OK." );
130 System.out.print( " Basic domain similarity calculator not ignoring species specific domains: " );
131 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() ) {
132 System.out.println( "failed." );
135 System.out.println( "OK." );
136 System.out.print( " Basic domain similarity calculator removal of singles: " );
137 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorRemovalOfSingles() ) {
138 System.out.println( "failed." );
141 System.out.println( "OK." );
142 System.out.print( " Domain sorting: " );
143 if ( !TestSurfacing.testDomainSorting() ) {
144 System.out.println( "failed." );
147 System.out.println( "OK." );
148 System.out.print( " Binary domain combination: " );
149 if ( !TestSurfacing.testBinaryDomainCombination() ) {
150 System.out.println( "failed." );
153 System.out.println( "OK." );
154 System.out.print( " Parsimony: " );
155 if ( !TestSurfacing.testParsimony() ) {
156 System.out.println( "failed." );
159 System.out.println( "OK." );
160 System.out.print( " Directedness: " );
161 if ( !TestSurfacing.testDirectedness() ) {
162 System.out.println( "failed." );
165 System.out.println( "OK." );
166 System.out.print( " Directedness and adjacency: " );
167 if ( !TestSurfacing.testDirectednessAndAdjacency() ) {
168 System.out.println( "failed." );
171 System.out.println( "OK." );
172 System.out.print( " Dollo parsimony on secodary features: " );
173 if ( !TestSurfacing.testParsimonyOnSecondaryFeatures() ) {
174 System.out.println( "failed." );
177 System.out.println( "OK." );
179 System.out.print( " Binary state matrix to gain loss matrix: " );
180 if ( !TestSurfacing.testBinaryStateMatrixToGainLossMatrix( test_dir ) ) {
181 System.out.println( "failed." );
184 System.out.println( "OK." );
188 private static StringBuffer mapToStringBuffer( final Map<PhylogenyNode, CharacterStateMatrix.BinaryStates> map ) {
189 final StringBuffer sb = new StringBuffer();
190 for( final PhylogenyNode key : map.keySet() ) {
191 if ( !key.isExternal() ) {
192 sb.append( key.getName() );
194 sb.append( map.get( key ).toString() );
195 sb.append( ForesterUtil.getLineSeparator() );
201 private static boolean testBasicDomainSimilarityCalculator() {
209 // m 2/(2+3) 0 4/(4+2)
214 // mean = ( 2/5 + 0 + 2/3 + 1/5 + 1/2 + 2/7 ) / 6
234 // m - 2/(2+3) 4/(4+2)
238 // mean = (2/5 + 2/3 + 1/2)/3 =
244 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
245 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
246 final Domain C = new BasicDomain( "C", 1, 2, ( short ) 1, ( short ) 1, 0.3, -12 );
247 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
248 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
249 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
250 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
251 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
252 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
253 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
254 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
255 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
256 mouse_1.addProteinDomain( A );
257 mouse_1.addProteinDomain( B );
258 mouse_1.addProteinDomain( C );
259 mouse_1.addProteinDomain( D );
260 mouse_1.addProteinDomain( E );
261 rabbit_1.addProteinDomain( A );
262 rabbit_1.addProteinDomain( C );
263 rabbit_1.addProteinDomain( E );
264 rabbit_1.addProteinDomain( F );
265 rabbit_1.addProteinDomain( F );
266 rabbit_1.addProteinDomain( F );
267 rabbit_1.addProteinDomain( F );
268 rabbit_1.addProteinDomain( F );
269 rabbit_1.addProteinDomain( F );
270 ciona_1.addProteinDomain( A );
271 ciona_1.addProteinDomain( A );
272 ciona_1.addProteinDomain( A );
273 ciona_1.addProteinDomain( A );
274 ciona_1.addProteinDomain( A );
275 ciona_1.addProteinDomain( F );
276 ciona_1.addProteinDomain( G );
277 ciona_1.addProteinDomain( X );
278 nemve_1.addProteinDomain( A );
279 nemve_1.addProteinDomain( B );
280 nemve_1.addProteinDomain( C );
281 nemve_1.addProteinDomain( D );
282 nemve_1.addProteinDomain( E );
283 nemve_1.addProteinDomain( F );
284 nemve_1.addProteinDomain( G );
285 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
286 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
287 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
288 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
289 protein_list_mouse.add( mouse_1 );
290 protein_list_rabbit.add( rabbit_1 );
291 protein_list_ciona.add( ciona_1 );
292 protein_list_nemve.add( nemve_1 );
293 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
294 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
296 new BasicSpecies( "mouse" ) ) );
297 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
299 new BasicSpecies( "rabbit" ) ) );
300 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
302 new BasicSpecies( "ciona" ) ) );
303 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
305 new BasicSpecies( "nemve" ) ) );
306 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
310 final SortedSet<DomainSimilarity> sims = calc
311 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
315 final Iterator<DomainSimilarity> sims_it = sims.iterator();
316 final DomainSimilarity sa = sims_it.next();
317 if ( !sa.getDomainId().equals( "A" ) ) {
320 if ( sa.getSpeciesData().size() != 4 ) {
323 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
326 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
329 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
332 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
335 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 5 )
336 + ( 1.0 / 2 ) + ( 2.0 / 7 ) ) / 6 ) ) {
339 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), ( 0.23410788192183737 ) ) ) {
342 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
345 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
348 if ( sa.getN() != 6 ) {
351 if ( sa.getMaximalDifference() != 7 ) {
354 if ( sa.getMaximalDifferenceInCounts() != 3 ) {
357 final DomainSimilarity sb = sims_it.next();
358 if ( !sb.getDomainId().equals( "B" ) ) {
361 if ( sb.getSpeciesData().size() != 2 ) {
364 if ( !sb.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
367 if ( !sb.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
370 if ( !TestSurfacing.isEqual( sb.getMeanSimilarityScore(), 2.0 / 3 ) ) {
373 if ( !TestSurfacing.isEqual( sb.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
376 if ( !TestSurfacing.isEqual( sb.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
379 if ( !TestSurfacing.isEqual( sb.getMinimalSimilarityScore(), ( 2.0 / 3 ) ) ) {
382 if ( sb.getN() != 1 ) {
385 if ( sb.getMaximalDifference() != 2 ) {
388 if ( sb.getMaximalDifferenceInCounts() != 2 ) {
391 final DomainSimilarity sc = sims_it.next();
392 if ( !sc.getDomainId().equals( "C" ) ) {
395 if ( sc.getSpeciesData().size() != 3 ) {
398 if ( !sc.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
401 if ( !sc.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
404 if ( !sc.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
407 if ( !TestSurfacing.isEqual( sc.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + ( 2.0 / 3 ) + ( 1.0 / 2 ) ) / 3 ) ) {
410 if ( !TestSurfacing.isEqual( sc.getStandardDeviationOfSimilarityScore(), 0.13471506281091264 ) ) {
413 if ( !TestSurfacing.isEqual( sc.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
416 if ( !TestSurfacing.isEqual( sc.getMinimalSimilarityScore(), ( 2.0 / 5 ) ) ) {
419 if ( sc.getN() != 3 ) {
422 if ( sc.getMaximalDifference() != 3 ) {
425 if ( sc.getMaximalDifferenceInCounts() != 3 ) {
428 // mouse : ....ABCDE.....
429 // rabbit: ....A.C.EFFF..
430 // ciona : AAAAA......FGX
431 // nemve : ....ABCDEFG...
435 // m 2/(2+3) 0 4/(4+2)
436 // r - 1/(1+5) 3/(3+3)
440 // mean = ( 2/5 + 0 + 2/3 + 1/6 + 1/2 + 2/8 ) / 6
444 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
445 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
447 new BasicSpecies( "mouse" ) ) );
448 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
450 new BasicSpecies( "rabbit" ) ) );
451 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
453 new BasicSpecies( "ciona" ) ) );
454 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
456 new BasicSpecies( "nemve" ) ) );
457 final DomainSimilarityCalculator calc2 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
461 final SortedSet<DomainSimilarity> sims2 = calc2
462 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
466 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
467 final DomainSimilarity sa2 = sims_it2.next();
468 if ( !sa2.getDomainId().equals( "A" ) ) {
471 if ( sa2.getSpeciesData().size() != 4 ) {
474 if ( !sa2.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
477 if ( !sa2.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
480 if ( !sa2.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
483 if ( !sa2.getSpeciesData().keySet().contains( new BasicSpecies( "rabbit" ) ) ) {
486 if ( !TestSurfacing.isEqual( sa2.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 6 )
487 + ( 1.0 / 2 ) + ( 2.0 / 8 ) ) / 6 ) ) {
490 if ( !TestSurfacing.isEqual( sa2.getStandardDeviationOfSimilarityScore(), ( 0.2404663678647683 ) ) ) {
493 if ( !TestSurfacing.isEqual( sa2.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
496 if ( !TestSurfacing.isEqual( sa2.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
499 if ( sa2.getN() != 6 ) {
502 if ( sa2.getMaximalDifference() != 8 ) {
505 if ( sa2.getMaximalDifferenceInCounts() != 3 ) {
508 final Protein ciona_2 = new BasicProtein( "2", "ciona", 0 );
509 ciona_2.addProteinDomain( A );
510 ciona_2.addProteinDomain( A );
511 ciona_2.addProteinDomain( A );
512 ciona_2.addProteinDomain( B );
513 ciona_2.addProteinDomain( B );
514 ciona_2.addProteinDomain( B );
515 ciona_2.addProteinDomain( F );
516 ciona_2.addProteinDomain( F );
517 ciona_2.addProteinDomain( F );
518 ciona_2.addProteinDomain( F );
519 ciona_2.addProteinDomain( G );
520 ciona_2.addProteinDomain( X );
521 final Protein ciona_3 = new BasicProtein( "3", "ciona", 0 );
522 ciona_3.addProteinDomain( A );
523 ciona_3.addProteinDomain( A );
524 ciona_3.addProteinDomain( A );
525 ciona_3.addProteinDomain( A );
526 ciona_3.addProteinDomain( B );
527 ciona_3.addProteinDomain( B );
528 ciona_3.addProteinDomain( X );
529 ciona_3.addProteinDomain( X );
530 protein_list_ciona.add( ciona_2 );
531 protein_list_ciona.add( ciona_3 );
532 final List<GenomeWideCombinableDomains> cdc_list3 = new ArrayList<GenomeWideCombinableDomains>();
533 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
535 new BasicSpecies( "mouse" ) ) );
536 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
538 new BasicSpecies( "rabbit" ) ) );
539 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
541 new BasicSpecies( "ciona" ) ) );
542 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
544 new BasicSpecies( "nemve" ) ) );
545 final DomainSimilarityCalculator calc3 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
549 final SortedSet<DomainSimilarity> sims3 = calc3
550 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
554 final Iterator<DomainSimilarity> sims_it3 = sims3.iterator();
555 final DomainSimilarity sa3 = sims_it3.next();
556 if ( !sa3.getDomainId().equals( "A" ) ) {
559 final SpeciesSpecificDcData ssdsd = sa3.getSpeciesData().get( new BasicSpecies( "ciona" ) );
560 if ( ssdsd.getCombinableDomainIdToCountsMap().size() != 4 ) {
563 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
566 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
569 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
572 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
575 final List<GenomeWideCombinableDomains> cdc_list4 = new ArrayList<GenomeWideCombinableDomains>();
576 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
578 new BasicSpecies( "mouse" ) ) );
579 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
581 new BasicSpecies( "rabbit" ) ) );
582 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
584 new BasicSpecies( "ciona" ) ) );
586 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
588 new BasicSpecies( "nemve" ) ) );
589 final DomainSimilarityCalculator calc4 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
593 final SortedSet<DomainSimilarity> sims4 = calc4
594 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
598 final Iterator<DomainSimilarity> sims_it4 = sims4.iterator();
599 final DomainSimilarity sa4 = sims_it4.next();
600 if ( !sa4.getDomainId().equals( "A" ) ) {
603 final SpeciesSpecificDcData ssdsd4 = sa4.getSpeciesData().get( new BasicSpecies( "ciona" ) );
604 if ( ssdsd4.getCombinableDomainIdToCountsMap().size() != 5 ) {
607 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "A" ) != 3 ) {
610 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
613 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
616 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
619 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
622 final SortedSet<DomainSimilarity> sims4_d = calc4
623 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list4, false, true );
624 final Iterator<DomainSimilarity> sims_it4_d = sims4_d.iterator();
625 final DomainSimilarity sa4_d = sims_it4_d.next();
626 if ( !sa4_d.getDomainId().equals( "A" ) ) {
629 if ( sa4_d.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
633 .isEqual( sa4_d.getMeanSimilarityScore(),
634 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
637 if ( !TestSurfacing.isEqual( sa4_d.getMaximalSimilarityScore(), 1.0 ) ) {
640 if ( !TestSurfacing.isEqual( sa4_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
643 if ( sa4_d.getN() != 6 ) {
646 final SortedSet<DomainSimilarity> sims4_p = calc4
647 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
651 final Iterator<DomainSimilarity> sims_it4_p = sims4_p.iterator();
652 final DomainSimilarity sa4_p = sims_it4_p.next();
653 if ( !sa4_p.getDomainId().equals( "A" ) ) {
656 if ( sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
659 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "A" ) ) {
662 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "B" ) ) {
665 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "F" ) ) {
668 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "G" ) ) {
671 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "X" ) ) {
675 .isEqual( sa4_p.getMeanSimilarityScore(),
676 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
679 if ( !TestSurfacing.isEqual( sa4_p.getMaximalSimilarityScore(), 1 ) ) {
682 if ( !TestSurfacing.isEqual( sa4_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
685 if ( sa4_p.getN() != 6 ) {
688 final List<GenomeWideCombinableDomains> cdc_list5 = new ArrayList<GenomeWideCombinableDomains>();
689 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
691 new BasicSpecies( "mouse" ) ) );
692 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
694 new BasicSpecies( "rabbit" ) ) );
695 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
697 new BasicSpecies( "ciona" ) ) );
698 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
700 new BasicSpecies( "nemve" ) ) );
701 final SortedSet<DomainSimilarity> sims5_d = calc4
702 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list5, false, true );
703 final Iterator<DomainSimilarity> sims_it5_d = sims5_d.iterator();
704 final DomainSimilarity sa5_d = sims_it5_d.next();
705 if ( sa5_d.getSpecies().size() != 4 ) {
708 if ( !sa5_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
711 final SpeciesSpecificDcData ssdsd5 = sa5_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
712 if ( ssdsd5.getCombinableDomainIdToCountsMap().size() != 4 ) {
715 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
718 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
721 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
724 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
727 if ( !sa5_d.getDomainId().equals( "A" ) ) {
730 final Species ciona = new BasicSpecies( "ciona" );
731 if ( sa5_d.getCombinableDomainIds( ciona ).size() != 4 ) {
734 if ( sa5_d.getCombinableDomainIds( ciona ).contains( "A" ) ) {
737 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "B" ) ) {
740 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "F" ) ) {
743 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "G" ) ) {
746 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "X" ) ) {
750 .isEqual( sa5_d.getMeanSimilarityScore(),
751 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
754 if ( !TestSurfacing.isEqual( sa5_d.getMaximalSimilarityScore(), 1.0 ) ) {
757 if ( !TestSurfacing.isEqual( sa5_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
760 if ( sa5_d.getN() != 6 ) {
763 if ( sa5_d.getMaximalDifference() != sa5_d.getMaximalDifferenceInCounts() ) {
766 if ( sa5_d.getMaximalDifference() != 11 ) {
769 if ( sa5_d.getMaximalDifferenceInCounts() != 11 ) {
772 final SortedSet<DomainSimilarity> sims5_p = calc4
773 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
777 final Iterator<DomainSimilarity> sims_it5_p = sims5_p.iterator();
778 final DomainSimilarity sa5_p = sims_it5_p.next();
779 if ( !sa5_p.getDomainId().equals( "A" ) ) {
782 if ( sa5_p.getCombinableDomainIds( ciona ).size() != 4 ) {
785 if ( sa5_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
788 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
791 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
794 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
797 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
801 .isEqual( sa5_p.getMeanSimilarityScore(),
802 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
805 if ( !TestSurfacing.isEqual( sa5_p.getMaximalSimilarityScore(), 1 ) ) {
808 if ( !TestSurfacing.isEqual( sa5_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
811 if ( sa5_p.getN() != 6 ) {
814 if ( sa5_p.getMaximalDifference() != sa5_p.getMaximalDifferenceInCounts() ) {
817 if ( sa5_p.getMaximalDifference() != 2 ) {
820 if ( sa5_p.getMaximalDifferenceInCounts() != 2 ) {
823 final List<GenomeWideCombinableDomains> cdc_list6 = new ArrayList<GenomeWideCombinableDomains>();
824 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
826 new BasicSpecies( "mouse" ) ) );
827 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
829 new BasicSpecies( "rabbit" ) ) );
830 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
832 new BasicSpecies( "ciona" ) ) );
833 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
835 new BasicSpecies( "nemve" ) ) );
836 final SortedSet<DomainSimilarity> sims6_d = calc4
837 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list6, false, true );
838 final Iterator<DomainSimilarity> sims_it6_d = sims6_d.iterator();
839 final DomainSimilarity sa6_d = sims_it6_d.next();
840 if ( sa6_d.getSpecies().size() != 4 ) {
843 if ( !sa6_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
846 final SpeciesSpecificDcData ssdsd6 = sa6_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
847 if ( ssdsd6.getCombinableDomainIdToCountsMap().size() != 5 ) {
850 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
853 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
856 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
859 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
862 if ( !sa5_d.getDomainId().equals( "A" ) ) {
865 final Species ciona6 = new BasicSpecies( "ciona" );
866 if ( sa6_d.getCombinableDomainIds( ciona6 ).size() != 5 ) {
869 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "A" ) ) {
872 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "B" ) ) {
875 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "F" ) ) {
878 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "G" ) ) {
881 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "X" ) ) {
885 .isEqual( sa6_d.getMeanSimilarityScore(),
886 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
889 if ( !TestSurfacing.isEqual( sa6_d.getMaximalSimilarityScore(), 1.0 ) ) {
892 if ( !TestSurfacing.isEqual( sa6_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
895 if ( sa6_d.getN() != 6 ) {
898 if ( sa6_d.getMaximalDifference() != sa6_d.getMaximalDifferenceInCounts() ) {
901 if ( sa6_d.getMaximalDifference() != 11 ) {
904 if ( sa6_d.getMaximalDifferenceInCounts() != 11 ) {
907 final SortedSet<DomainSimilarity> sims6_p = calc4
908 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
912 final Iterator<DomainSimilarity> sims_it6_p = sims6_p.iterator();
913 final DomainSimilarity sa6_p = sims_it6_p.next();
914 if ( !sa6_p.getDomainId().equals( "A" ) ) {
917 if ( sa6_p.getCombinableDomainIds( ciona ).size() != 5 ) {
920 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
923 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
926 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
929 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
932 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
936 .isEqual( sa6_p.getMeanSimilarityScore(),
937 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
940 if ( !TestSurfacing.isEqual( sa6_p.getMaximalSimilarityScore(), 1 ) ) {
943 if ( !TestSurfacing.isEqual( sa6_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
946 if ( sa6_p.getN() != 6 ) {
949 if ( sa6_p.getMaximalDifference() != sa6_p.getMaximalDifferenceInCounts() ) {
952 if ( sa6_p.getMaximalDifference() != 2 ) {
955 if ( sa6_p.getMaximalDifferenceInCounts() != 2 ) {
959 catch ( final Exception e ) {
960 e.printStackTrace( System.out );
966 private static boolean testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() {
968 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
969 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
970 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
971 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
972 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
973 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
974 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
975 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
976 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
977 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
978 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
979 mouse_1.addProteinDomain( A );
980 mouse_1.addProteinDomain( D );
981 mouse_1.addProteinDomain( E );
982 rabbit_1.addProteinDomain( B );
983 rabbit_1.addProteinDomain( E );
984 rabbit_1.addProteinDomain( F );
985 rabbit_1.addProteinDomain( F );
986 rabbit_1.addProteinDomain( F );
987 rabbit_1.addProteinDomain( F );
988 rabbit_1.addProteinDomain( F );
989 rabbit_1.addProteinDomain( F );
990 ciona_1.addProteinDomain( F );
991 ciona_1.addProteinDomain( G );
992 ciona_1.addProteinDomain( X );
993 nemve_1.addProteinDomain( D );
994 nemve_1.addProteinDomain( E );
995 nemve_1.addProteinDomain( F );
996 nemve_1.addProteinDomain( G );
997 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
998 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
999 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1000 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1001 protein_list_mouse.add( mouse_1 );
1002 protein_list_rabbit.add( rabbit_1 );
1003 protein_list_ciona.add( ciona_1 );
1004 protein_list_nemve.add( nemve_1 );
1005 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1006 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1008 new BasicSpecies( "mouse" ) ) );
1009 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1011 new BasicSpecies( "rabbit" ) ) );
1012 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1014 new BasicSpecies( "ciona" ) ) );
1015 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1017 new BasicSpecies( "nemve" ) ) );
1018 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1022 final SortedSet<DomainSimilarity> sims = calc
1023 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1027 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1028 final DomainSimilarity sa = sims_it.next();
1029 if ( !sa.getDomainId().equals( "A" ) ) {
1032 if ( sa.getSpeciesData().size() != 1 ) {
1035 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1038 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), 1.0 ) ) {
1041 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
1044 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), 1.0 ) ) {
1047 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), 1.0 ) ) {
1050 if ( sa.getN() != 0 ) {
1053 if ( sa.getMaximalDifference() != 0 ) {
1056 if ( sa.getMaximalDifferenceInCounts() != 0 ) {
1059 final DomainSimilarity sb = sims_it.next();
1060 if ( !sb.getDomainId().equals( "B" ) ) {
1063 if ( sb.getSpeciesData().size() != 1 ) {
1066 if ( !sb.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1069 final SortedSet<DomainSimilarity> sims2 = calc
1070 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1074 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
1075 final DomainSimilarity sa2 = sims_it2.next();
1076 if ( !sa2.getDomainId().equals( "D" ) ) {
1079 if ( sa2.getSpeciesData().size() != 2 ) {
1083 catch ( final Exception e ) {
1084 e.printStackTrace( System.out );
1090 private static boolean testBasicDomainSimilarityCalculatorRemovalOfSingles() {
1092 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
1093 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
1094 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
1095 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
1096 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
1097 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
1098 mouse_1.addProteinDomain( A );
1099 rabbit_1.addProteinDomain( A );
1100 ciona_1.addProteinDomain( A );
1101 ciona_1.addProteinDomain( A );
1102 ciona_1.addProteinDomain( A );
1103 ciona_1.addProteinDomain( A );
1104 ciona_1.addProteinDomain( A );
1105 nemve_1.addProteinDomain( A );
1106 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1107 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1108 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1109 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1110 protein_list_mouse.add( mouse_1 );
1111 protein_list_rabbit.add( rabbit_1 );
1112 protein_list_ciona.add( ciona_1 );
1113 protein_list_nemve.add( nemve_1 );
1114 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1115 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1117 new BasicSpecies( "mouse" ) ) );
1118 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1120 new BasicSpecies( "rabbit" ) ) );
1121 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1123 new BasicSpecies( "ciona" ) ) );
1124 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1126 new BasicSpecies( "nemve" ) ) );
1127 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1131 final SortedSet<DomainSimilarity> sims = calc
1132 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1136 if ( sims.size() != 1 ) {
1139 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1140 final DomainSimilarity sa = sims_it.next();
1141 if ( !sa.getDomainId().equals( "A" ) ) {
1144 if ( sa.getSpeciesData().size() != 4 ) {
1147 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
1150 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1153 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
1156 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1159 final SortedSet<DomainSimilarity> sims_ns = calc
1160 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1164 if ( sims_ns.size() != 0 ) {
1167 final Protein mouse_2 = new BasicProtein( "1", "mouse", 0 );
1168 final Protein rabbit_2 = new BasicProtein( "1", "rabbit", 0 );
1169 final Protein ciona_2 = new BasicProtein( "1", "ciona", 0 );
1170 final Protein nemve_2 = new BasicProtein( "1", "nemve", 0 );
1171 mouse_2.addProteinDomain( A );
1172 rabbit_2.addProteinDomain( A );
1173 ciona_2.addProteinDomain( A );
1174 ciona_2.addProteinDomain( A );
1175 ciona_2.addProteinDomain( B );
1176 ciona_2.addProteinDomain( A );
1177 ciona_2.addProteinDomain( A );
1178 ciona_2.addProteinDomain( A );
1179 nemve_2.addProteinDomain( A );
1180 final List<Protein> protein_list_mouse2 = new ArrayList<Protein>();
1181 final List<Protein> protein_list_rabbit2 = new ArrayList<Protein>();
1182 final List<Protein> protein_list_ciona2 = new ArrayList<Protein>();
1183 final List<Protein> protein_list_nemve2 = new ArrayList<Protein>();
1184 protein_list_mouse2.add( mouse_2 );
1185 protein_list_rabbit2.add( rabbit_2 );
1186 protein_list_ciona2.add( ciona_2 );
1187 protein_list_nemve2.add( nemve_2 );
1188 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
1189 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse2,
1191 new BasicSpecies( "mouse" ) ) );
1192 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit2,
1194 new BasicSpecies( "rabbit" ) ) );
1195 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona2,
1197 new BasicSpecies( "ciona" ) ) );
1198 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve2,
1200 new BasicSpecies( "nemve" ) ) );
1201 final SortedSet<DomainSimilarity> sims2 = calc
1202 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1206 if ( sims2.size() != 1 ) {
1210 catch ( final Exception e ) {
1211 e.printStackTrace( System.out );
1217 private static boolean testBinaryDomainCombination() {
1219 final BasicBinaryDomainCombination s0 = BasicBinaryDomainCombination.obtainInstance( "a", "a" );
1220 final BasicBinaryDomainCombination s1 = BasicBinaryDomainCombination.obtainInstance( "b", "a" );
1221 final BasicBinaryDomainCombination s2 = BasicBinaryDomainCombination.obtainInstance( "a", "b" );
1222 final BasicBinaryDomainCombination s3 = BasicBinaryDomainCombination.obtainInstance( "B", "A" );
1223 final BasicBinaryDomainCombination s4 = BasicBinaryDomainCombination.obtainInstance( "A", "B" );
1224 final BasicBinaryDomainCombination s5 = BasicBinaryDomainCombination.obtainInstance( "c", "a" );
1225 final BasicBinaryDomainCombination s6 = BasicBinaryDomainCombination.obtainInstance( "b", "c" );
1226 final BasicBinaryDomainCombination s7 = BasicBinaryDomainCombination.obtainInstance( "d", "a" );
1227 final BasicBinaryDomainCombination s8 = BasicBinaryDomainCombination.obtainInstance( "b", "d" );
1228 final BinaryDomainCombination s9 = BasicBinaryDomainCombination.obtainInstance( "z-z=a-aa" );
1229 if ( !s9.toString().equals( "a-aa=z-z" ) ) {
1230 System.out.println( s9.toString() );
1233 if ( !s0.equals( s0 ) ) {
1236 if ( s0.equals( s1 ) ) {
1239 if ( s1.equals( s0 ) ) {
1242 if ( !s1.equals( s2 ) ) {
1245 if ( !s2.equals( s1 ) ) {
1248 if ( s2.equals( s3 ) ) {
1251 if ( s2.equals( s3 ) ) {
1254 if ( s2.equals( s4 ) ) {
1257 final SortedSet<BasicBinaryDomainCombination> sorted = new TreeSet<BasicBinaryDomainCombination>();
1270 if ( sorted.size() != 7 ) {
1271 System.out.println( sorted.size() );
1274 final DirectedBinaryDomainCombination aa = DirectedBinaryDomainCombination.obtainInstance( "a", "a" );
1275 final DirectedBinaryDomainCombination ba = DirectedBinaryDomainCombination.obtainInstance( "b", "a" );
1276 final DirectedBinaryDomainCombination ab = DirectedBinaryDomainCombination.obtainInstance( "a", "b" );
1277 final DirectedBinaryDomainCombination bb = DirectedBinaryDomainCombination.obtainInstance( "b", "b" );
1278 if ( !aa.equals( aa ) ) {
1281 if ( aa.equals( bb ) ) {
1284 if ( ab.equals( ba ) ) {
1287 if ( ba.equals( ab ) ) {
1290 if ( !ab.equals( ab ) ) {
1293 if ( ab.equals( aa ) ) {
1296 if ( ab.equals( bb ) ) {
1300 catch ( final Exception e ) {
1301 e.printStackTrace( System.out );
1307 private static boolean testBinaryStateMatrixToGainLossMatrix( final File test_dir ) {
1308 final BinaryStates I = BinaryStates.PRESENT;
1309 final BinaryStates O = BinaryStates.ABSENT;
1311 final CharacterStateMatrix<BinaryStates> binary_states_matrix_0 = new BasicCharacterStateMatrix<BinaryStates>( 7,
1313 binary_states_matrix_0.setIdentifier( 0, "A" );
1314 binary_states_matrix_0.setIdentifier( 1, "B" );
1315 binary_states_matrix_0.setIdentifier( 2, "C" );
1316 binary_states_matrix_0.setIdentifier( 3, "D" );
1317 binary_states_matrix_0.setIdentifier( 4, "1" );
1318 binary_states_matrix_0.setIdentifier( 5, "2" );
1319 binary_states_matrix_0.setIdentifier( 6, "3" );
1320 binary_states_matrix_0.setState( 0, 0, O );
1321 binary_states_matrix_0.setState( 1, 0, O );
1322 binary_states_matrix_0.setState( 2, 0, O );
1323 binary_states_matrix_0.setState( 3, 0, O );
1324 binary_states_matrix_0.setState( 4, 0, O );
1325 binary_states_matrix_0.setState( 5, 0, O );
1326 binary_states_matrix_0.setState( 6, 0, O );
1327 binary_states_matrix_0.setState( 0, 1, I );
1328 binary_states_matrix_0.setState( 1, 1, O );
1329 binary_states_matrix_0.setState( 2, 1, O );
1330 binary_states_matrix_0.setState( 3, 1, O );
1331 binary_states_matrix_0.setState( 4, 1, O );
1332 binary_states_matrix_0.setState( 5, 1, O );
1333 binary_states_matrix_0.setState( 6, 1, O );
1334 binary_states_matrix_0.setState( 0, 2, O );
1335 binary_states_matrix_0.setState( 1, 2, O );
1336 binary_states_matrix_0.setState( 2, 2, O );
1337 binary_states_matrix_0.setState( 3, 2, O );
1338 binary_states_matrix_0.setState( 4, 2, I );
1339 binary_states_matrix_0.setState( 5, 2, O );
1340 binary_states_matrix_0.setState( 6, 2, O );
1341 binary_states_matrix_0.setState( 0, 3, I );
1342 binary_states_matrix_0.setState( 1, 3, O );
1343 binary_states_matrix_0.setState( 2, 3, O );
1344 binary_states_matrix_0.setState( 3, 3, O );
1345 binary_states_matrix_0.setState( 4, 3, I );
1346 binary_states_matrix_0.setState( 5, 3, O );
1347 binary_states_matrix_0.setState( 6, 3, I );
1348 binary_states_matrix_0.setState( 0, 4, I );
1349 binary_states_matrix_0.setState( 1, 4, O );
1350 binary_states_matrix_0.setState( 2, 4, I );
1351 binary_states_matrix_0.setState( 3, 4, O );
1352 binary_states_matrix_0.setState( 4, 4, I );
1353 binary_states_matrix_0.setState( 5, 4, O );
1354 binary_states_matrix_0.setState( 6, 4, I );
1355 binary_states_matrix_0.setState( 0, 5, I );
1356 binary_states_matrix_0.setState( 1, 5, I );
1357 binary_states_matrix_0.setState( 2, 5, I );
1358 binary_states_matrix_0.setState( 3, 5, I );
1359 binary_states_matrix_0.setState( 4, 5, I );
1360 binary_states_matrix_0.setState( 5, 5, I );
1361 binary_states_matrix_0.setState( 6, 5, I );
1362 final String[] character_labels_0 = new String[ 6 ];
1363 character_labels_0[ 0 ] = "first";
1364 character_labels_0[ 1 ] = "second";
1365 character_labels_0[ 2 ] = "third";
1366 character_labels_0[ 3 ] = "forth";
1367 character_labels_0[ 4 ] = "fifth";
1368 character_labels_0[ 5 ] = "sixth";
1369 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
1370 final Phylogeny phylogeny_0 = factory.create( "(((A,B)1,C)2,D)3", new NHXParser() )[ 0 ];
1371 final DomainParsimonyCalculator dom_pars = DomainParsimonyCalculator.createInstance( phylogeny_0 );
1372 dom_pars.executeOnGivenBinaryStatesMatrix( binary_states_matrix_0, character_labels_0 );
1373 final CharacterStateMatrix<GainLossStates> gl_matrix_0 = dom_pars.getGainLossMatrix();
1374 // final StringWriter sw = new StringWriter();
1375 // gl_matrix_0.toWriter( sw );
1376 // System.out.println( sw.toString() );
1377 if ( dom_pars.getCost() != 13 ) {
1380 if ( dom_pars.getTotalGains() != 5 ) {
1383 if ( dom_pars.getTotalLosses() != 8 ) {
1386 if ( dom_pars.getTotalUnchanged() != 29 ) {
1389 if ( gl_matrix_0.getState( "A", 1 ) != GainLossStates.GAIN ) {
1392 if ( gl_matrix_0.getState( "A", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1395 if ( gl_matrix_0.getState( "B", 4 ) != GainLossStates.LOSS ) {
1398 if ( gl_matrix_0.getState( "C", 4 ) != GainLossStates.GAIN ) {
1401 if ( gl_matrix_0.getState( "D", 4 ) != GainLossStates.LOSS ) {
1404 if ( gl_matrix_0.getState( "1", 4 ) != GainLossStates.GAIN ) {
1407 if ( gl_matrix_0.getState( "2", 4 ) != GainLossStates.LOSS ) {
1410 if ( gl_matrix_0.getState( "3", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1414 catch ( final Exception e ) {
1415 e.printStackTrace( System.out );
1421 private static boolean testCombinableDomains() {
1423 final Domain key0 = new BasicDomain( "key0", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1424 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1425 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1426 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1427 final CombinableDomains cd0 = new BasicCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1428 cd0.addCombinableDomain( a.getDomainId() );
1429 cd0.addCombinableDomain( b.getDomainId() );
1430 cd0.addCombinableDomain( b.getDomainId() );
1431 cd0.addCombinableDomain( c.getDomainId() );
1432 cd0.addCombinableDomain( c.getDomainId() );
1433 cd0.addCombinableDomain( c.getDomainId() );
1434 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1437 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1440 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1443 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1446 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1449 if ( cd0.getAllDomains().size() != 4 ) {
1452 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1455 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1458 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1461 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1464 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1467 final BasicBinaryDomainCombination s0 = BasicBinaryDomainCombination.obtainInstance( "key0", "a" );
1468 final BasicBinaryDomainCombination s1 = BasicBinaryDomainCombination.obtainInstance( "b", "key0" );
1469 final BasicBinaryDomainCombination s2 = BasicBinaryDomainCombination.obtainInstance( "key0", "c" );
1470 final BasicBinaryDomainCombination s3 = BasicBinaryDomainCombination.obtainInstance( "key0", "cc" );
1471 final BasicBinaryDomainCombination s4 = BasicBinaryDomainCombination.obtainInstance( "c", "key0" );
1472 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1475 if ( !cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1478 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1481 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1484 if ( !cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1487 final Domain key1 = new BasicDomain( "key1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1488 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1489 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1490 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1491 final CombinableDomains cd1 = new BasicCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1492 cd1.addCombinableDomain( a1.getDomainId() );
1493 cd1.addCombinableDomain( b1.getDomainId() );
1494 cd1.addCombinableDomain( c1.getDomainId() );
1495 cd1.addCombinableDomain( key1.getDomainId() );
1496 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1499 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1502 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1505 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1508 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1511 if ( cd1.getAllDomains().size() != 4 ) {
1514 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1517 final BasicBinaryDomainCombination kk = BasicBinaryDomainCombination.obtainInstance( "key1", "key1" );
1518 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1522 catch ( final Exception e ) {
1523 e.printStackTrace( System.out );
1529 private static boolean testCombinationsBasedPairwiseSimilarityCalculator() {
1531 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1532 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1533 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1534 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1535 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1536 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1537 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1538 new BasicSpecies( "rabbit" ) );
1539 one.addCombinableDomain( a.getDomainId() );
1540 one.addCombinableDomain( a.getDomainId() );
1541 two.addCombinableDomain( new BasicDomain( "A", 1, 5, ( short ) 1, ( short ) 4, 0.1, -12 ).getDomainId() );
1542 two.addCombinableDomain( b.getDomainId() );
1543 two.addCombinableDomain( c.getDomainId() );
1544 final PairwiseDomainSimilarityCalculator calc = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1545 final PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1546 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 / ( 1 + 2 ) ) ) {
1549 if ( s1.getDifferenceInCounts() != ( 1 - 3 ) ) {
1552 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s1 ).getNumberOfDifferentDomains() != 2 ) {
1555 one.addCombinableDomain( b.getDomainId() );
1556 one.addCombinableDomain( c.getDomainId() );
1557 final PairwiseDomainSimilarity s2 = calc.calculateSimilarity( one, two );
1558 if ( !TestSurfacing.isEqual( s2.getSimilarityScore(), 3.0 / ( 0 + 3 ) ) ) {
1561 if ( s2.getDifferenceInCounts() != 0 ) {
1564 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s2 ).getNumberOfDifferentDomains() != 0 ) {
1567 final Domain d = new BasicDomain( "D", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1568 final Domain e = new BasicDomain( "E", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1569 final Domain f = new BasicDomain( "F", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1570 one.addCombinableDomain( d.getDomainId() );
1571 one.addCombinableDomain( d.getDomainId() );
1572 one.addCombinableDomain( e.getDomainId() );
1573 one.addCombinableDomain( f.getDomainId() );
1574 final PairwiseDomainSimilarity s3 = calc.calculateSimilarity( one, two );
1575 if ( !TestSurfacing.isEqual( s3.getSimilarityScore(), 3.0 / ( 3 + 3 ) ) ) {
1578 if ( s3.getDifferenceInCounts() != ( 6 - 3 ) ) {
1581 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s3 ).getNumberOfDifferentDomains() != 3 ) {
1584 final Domain aaa = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1585 final Domain bbb = new BasicDomain( "bbb", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1586 final Domain three_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1587 final Domain four_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1588 final CombinableDomains three = new BasicCombinableDomains( three_key.getDomainId(),
1589 new BasicSpecies( "mouse" ) );
1590 final CombinableDomains four = new BasicCombinableDomains( four_key.getDomainId(),
1591 new BasicSpecies( "rabbit" ) );
1592 three.addCombinableDomain( aaa.getDomainId() );
1593 four.addCombinableDomain( bbb.getDomainId() );
1594 final PairwiseDomainSimilarityCalculator calc2 = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1595 final PairwiseDomainSimilarity s4 = calc2.calculateSimilarity( three, four );
1596 if ( !TestSurfacing.isEqual( s4.getSimilarityScore(), 0.0 / ( 0 + 2 ) ) ) {
1599 final Domain aaa2 = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1600 four.addCombinableDomain( aaa2.getDomainId() );
1601 final PairwiseDomainSimilarity s5 = calc.calculateSimilarity( three, four );
1602 if ( !TestSurfacing.isEqual( s5.getSimilarityScore(), 1.0 / ( 1 + 1 ) ) ) {
1606 catch ( final Exception e ) {
1607 e.printStackTrace( System.out );
1613 private static boolean testCopyNumberBasedPairwiseSimilarityCalculator() {
1615 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1616 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1617 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1618 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1619 new BasicSpecies( "rabbit" ) );
1620 one.setKeyDomainCount( 2 );
1621 two.setKeyDomainCount( 3 );
1622 final PairwiseDomainSimilarityCalculator calc = new DomainCountsBasedPairwiseSimilarityCalculator();
1623 PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1624 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( ( 3 - 2.0 ) / ( 2 + 3 ) ) ) ) {
1627 if ( s1.getDifferenceInCounts() != ( 2 - 3 ) ) {
1630 one.setKeyDomainCount( 1 );
1631 two.setKeyDomainCount( 1 );
1632 s1 = calc.calculateSimilarity( one, two );
1633 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 ) ) {
1636 if ( s1.getDifferenceInCounts() != ( 1 - 1 ) ) {
1639 one.setKeyDomainCount( 1 );
1640 two.setKeyDomainCount( 1000 );
1641 s1 = calc.calculateSimilarity( one, two );
1642 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( 999.0 / 1001 ) ) ) {
1645 if ( s1.getDifferenceInCounts() != ( 1 - 1000 ) ) {
1649 catch ( final Exception e ) {
1650 e.printStackTrace( System.out );
1656 private static boolean testDirectedCombinableDomains() {
1658 final Domain key0 = new BasicDomain( "key0", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 );
1659 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1660 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1661 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1662 final CombinableDomains cd0 = new DirectedCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1663 cd0.addCombinableDomain( a.getDomainId() );
1664 cd0.addCombinableDomain( b.getDomainId() );
1665 cd0.addCombinableDomain( b.getDomainId() );
1666 cd0.addCombinableDomain( c.getDomainId() );
1667 cd0.addCombinableDomain( c.getDomainId() );
1668 cd0.addCombinableDomain( c.getDomainId() );
1669 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1672 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1675 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1678 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1681 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1684 if ( cd0.getAllDomains().size() != 4 ) {
1687 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1690 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1693 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1696 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1699 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1702 final BinaryDomainCombination s0 = DirectedBinaryDomainCombination.obtainInstance( "key0", "a" );
1703 final BinaryDomainCombination s1 = DirectedBinaryDomainCombination.obtainInstance( "b", "key0" );
1704 final BinaryDomainCombination s2 = DirectedBinaryDomainCombination.obtainInstance( "key0", "c" );
1705 final BinaryDomainCombination s3 = DirectedBinaryDomainCombination.obtainInstance( "key0", "cc" );
1706 final BinaryDomainCombination s4 = DirectedBinaryDomainCombination.obtainInstance( "a", "b" );
1707 final BinaryDomainCombination s5 = DirectedBinaryDomainCombination.obtainInstance( "b", "a" );
1708 final BinaryDomainCombination s6 = DirectedBinaryDomainCombination.obtainInstance( "key0", "b" );
1709 final BinaryDomainCombination s7 = DirectedBinaryDomainCombination.obtainInstance( "a", "key0" );
1710 final BinaryDomainCombination s8 = DirectedBinaryDomainCombination.obtainInstance( "c", "key0" );
1711 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1714 if ( cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1717 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1720 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1723 if ( cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1726 if ( cd0.toBinaryDomainCombinations().contains( s5 ) ) {
1729 if ( !cd0.toBinaryDomainCombinations().contains( s6 ) ) {
1732 if ( cd0.toBinaryDomainCombinations().contains( s7 ) ) {
1735 if ( cd0.toBinaryDomainCombinations().contains( s8 ) ) {
1738 final Domain key1 = new BasicDomain( "key1", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 );
1739 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1740 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1741 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1742 final CombinableDomains cd1 = new DirectedCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1743 cd1.addCombinableDomain( a1.getDomainId() );
1744 cd1.addCombinableDomain( b1.getDomainId() );
1745 cd1.addCombinableDomain( c1.getDomainId() );
1746 cd1.addCombinableDomain( key1.getDomainId() );
1747 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1750 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1753 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1756 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1759 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1762 if ( cd1.getAllDomains().size() != 4 ) {
1765 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1768 final BinaryDomainCombination kk = DirectedBinaryDomainCombination.obtainInstance( "key1", "key1" );
1769 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1773 catch ( final Exception e ) {
1774 e.printStackTrace( System.out );
1780 private static boolean testDirectedness() {
1782 final BinaryStates X = BinaryStates.PRESENT;
1783 final BinaryStates O = BinaryStates.ABSENT;
1784 final GainLossStates G = GainLossStates.GAIN;
1785 final GainLossStates L = GainLossStates.LOSS;
1786 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
1787 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
1788 final Protein one_1 = new BasicProtein( "one", "1", 0 );
1789 final Protein two_1 = new BasicProtein( "two", "1", 0 );
1790 final Protein three_1 = new BasicProtein( "three", "1", 0 );
1791 final Protein four_1 = new BasicProtein( "four", "1", 0 );
1792 final Protein five_1 = new BasicProtein( "five", "1", 0 );
1793 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1794 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1795 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1796 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1797 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1798 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1799 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1800 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1801 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1802 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1803 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1804 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1805 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1806 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1807 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1808 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1809 final List<Protein> list_1 = new ArrayList<Protein>();
1810 list_1.add( one_1 );
1811 list_1.add( two_1 );
1812 list_1.add( three_1 );
1813 list_1.add( four_1 );
1814 list_1.add( five_1 );
1815 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
1816 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED );
1817 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1821 if ( gwcd_1.toBinaryDomainCombinations()
1822 .contains( DirectedBinaryDomainCombination.obtainInstance( "B", "A" ) ) ) {
1825 if ( gwcd_1.toBinaryDomainCombinations()
1826 .contains( DirectedBinaryDomainCombination.obtainInstance( "A", "A" ) ) ) {
1829 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1833 if ( gwcd_1.toBinaryDomainCombinations()
1834 .contains( DirectedBinaryDomainCombination.obtainInstance( "C", "A" ) ) ) {
1837 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "B",
1841 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "C",
1845 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "C",
1849 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1853 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1857 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "Y",
1861 if ( gwcd_1.toBinaryDomainCombinations()
1862 .contains( DirectedBinaryDomainCombination.obtainInstance( "X", "A" ) ) ) {
1865 if ( gwcd_1.toBinaryDomainCombinations()
1866 .contains( DirectedBinaryDomainCombination.obtainInstance( "C", "B" ) ) ) {
1869 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "X",
1873 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "Y",
1877 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1881 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1885 if ( gwcd_1.toBinaryDomainCombinations()
1886 .contains( DirectedBinaryDomainCombination.obtainInstance( "Y", "C" ) ) ) {
1889 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "M",
1893 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "N",
1897 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "N",
1901 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "M",
1905 if ( gwcd_1.toBinaryDomainCombinations()
1906 .contains( DirectedBinaryDomainCombination.obtainInstance( "P", "N" ) ) ) {
1909 if ( gwcd_1.toBinaryDomainCombinations()
1910 .contains( DirectedBinaryDomainCombination.obtainInstance( "P", "M" ) ) ) {
1913 if ( gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "XX",
1917 if ( gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "YY",
1921 if ( gwcd_1.toBinaryDomainCombinations()
1922 .contains( DirectedBinaryDomainCombination.obtainInstance( "B", "B" ) ) ) {
1925 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1926 // gwcd_list.add( gwcd_1 );
1927 // gwcd_list.add( gwcd_2 );
1928 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
1929 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1930 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
1931 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1932 // if ( matrix_d.getState( 0, 0 ) != X ) {
1935 // if ( matrix_bc.getState( 0, 0 ) != X ) {
1940 // final BasicCharacterStateMatrix<BinaryStates> dm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1941 // { X, X, X, X, X, X }, { X, X, X, X, X, X } } );
1942 // if ( !matrix_d.equals( dm ) ) {
1945 // final BasicCharacterStateMatrix<BinaryStates> bcm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1946 // { X, O, X, X, X, X, O, X, X, O, X, X }, { X, X, X, O, O, O, O, X, O, O, X, X } } );
1947 // if ( !matrix_d.equals( dm ) ) {
1950 //``````````````````````````
1951 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1952 // gwcd_list.add( one );
1953 // gwcd_list.add( two );
1954 // gwcd_list.add( three );
1955 // gwcd_list.add( four );
1956 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimony
1957 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1958 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimony
1959 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1960 // // System.out.println( "d:" );
1961 // // System.out.println(matrix_d.toStringBuffer().toString() );
1962 // // System.out.println( "bc:" );
1963 // // System.out.println(matrix_bc.toStringBuffer().toString() );
1964 // // 1 a b c e f g h l m
1965 // // 2 a b c e f g i n o
1966 // // 3 a b d e f g j p q
1968 // if ( matrix_d.getState( 0, 0 ) != X ) {
1971 // if ( matrix_d.getState( 0, 1 ) != X ) {
1974 // if ( matrix_d.getState( 0, 2 ) != X ) {
1977 // if ( matrix_d.getState( 0, 3 ) != O ) {
1980 // if ( matrix_d.getState( 0, 4 ) != X ) {
1983 // if ( matrix_d.getState( 0, 5 ) != X ) {
1986 // if ( matrix_d.getState( 0, 6 ) != X ) {
1989 // if ( matrix_d.getState( 0, 7 ) != X ) {
1992 // if ( matrix_d.getState( 0, 8 ) != O ) {
1995 // // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
1996 // // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
1997 // // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
1999 // if ( matrix_bc.getState( 0, 0 ) != X ) {
2002 // if ( matrix_bc.getState( 0, 1 ) != X ) {
2005 // if ( matrix_bc.getState( 0, 2 ) != X ) {
2008 // if ( matrix_bc.getState( 0, 3 ) != O ) {
2011 // if ( matrix_bc.getState( 0, 4 ) != X ) {
2014 // if ( matrix_bc.getState( 1, 0 ) != O ) {
2017 // if ( matrix_bc.getState( 1, 1 ) != X ) {
2020 // if ( matrix_bc.getState( 1, 2 ) != X ) {
2023 // if ( matrix_bc.getState( 1, 3 ) != O ) {
2026 // if ( matrix_bc.getState( 1, 4 ) != X ) {
2029 // if ( matrix_bc.getState( 2, 0 ) != O ) {
2032 // if ( matrix_bc.getState( 2, 1 ) != X ) {
2035 // if ( matrix_bc.getState( 2, 2 ) != O ) {
2038 // if ( matrix_bc.getState( 2, 3 ) != X ) {
2041 // if ( matrix_bc.getState( 2, 4 ) != X ) {
2044 // final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
2045 // final String p0_str = "((one,two)1-2,(three,four)3-4)root";
2046 // final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
2047 // final DomainParsimony dp0 = DomainParsimony.createInstance( p0, gwcd_list );
2048 // dp0.executeDolloParsimonyOnDomainPresence();
2049 // final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
2050 // final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
2051 // dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2052 // final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
2053 // final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
2054 // if ( is_matrix_d.getState( "root", "A" ) != X ) {
2057 // if ( is_matrix_d.getState( "root", "B" ) != X ) {
2060 // if ( is_matrix_d.getState( "root", "C" ) != O ) {
2063 // if ( is_matrix_d.getState( "root", "D" ) != O ) {
2066 // if ( is_matrix_d.getState( "root", "E" ) != X ) {
2069 // if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
2072 // if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
2075 // if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
2078 // if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
2081 // if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
2084 // if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
2087 // if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
2090 // if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
2093 // if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
2096 // if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
2099 // if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
2102 // if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
2105 // if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
2108 // if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
2111 // final Protein ab_1 = new BasicProtein( "ab", "one" );
2112 // ab_1.addProteinDomain( a );
2113 // ab_1.addProteinDomain( b );
2114 // final Protein ac_1 = new BasicProtein( "ac", "one" );
2115 // ac_1.addProteinDomain( a );
2116 // ac_1.addProteinDomain( c );
2117 // final Protein de_1 = new BasicProtein( "de", "one" );
2118 // de_1.addProteinDomain( d );
2119 // de_1.addProteinDomain( e );
2120 // final Protein ac_2 = new BasicProtein( "ac", "two" );
2121 // ac_2.addProteinDomain( a );
2122 // ac_2.addProteinDomain( c );
2123 // final Protein ab_3 = new BasicProtein( "ab", "three" );
2124 // ab_3.addProteinDomain( a );
2125 // ab_3.addProteinDomain( b );
2126 // final Protein de_4 = new BasicProtein( "de", "four" );
2127 // de_4.addProteinDomain( d );
2128 // de_4.addProteinDomain( e );
2129 // final Protein ab_6 = new BasicProtein( "ab", "six" );
2130 // ab_6.addProteinDomain( a );
2131 // ab_6.addProteinDomain( b );
2132 // final List<Protein> spec_one = new ArrayList<Protein>();
2133 // final List<Protein> spec_two = new ArrayList<Protein>();
2134 // final List<Protein> spec_three = new ArrayList<Protein>();
2135 // final List<Protein> spec_four = new ArrayList<Protein>();
2136 // final List<Protein> spec_five = new ArrayList<Protein>();
2137 // final List<Protein> spec_six = new ArrayList<Protein>();
2138 // final List<Protein> spec_seven = new ArrayList<Protein>();
2139 // spec_one.add( ab_1 );
2140 // spec_one.add( ac_1 );
2141 // spec_one.add( de_1 );
2142 // spec_two.add( ac_2 );
2143 // spec_three.add( ab_3 );
2144 // spec_four.add( de_4 );
2145 // spec_six.add( ab_6 );
2146 // final GenomeWideCombinableDomains one_gwcd = BasicGenomeWideCombinableDomains
2147 // .createInstance( spec_one, false, new BasicSpecies( "one" ), false );
2148 // final GenomeWideCombinableDomains two_gwcd = BasicGenomeWideCombinableDomains
2149 // .createInstance( spec_two, false, new BasicSpecies( "two" ), false );
2150 // final GenomeWideCombinableDomains three_gwcd = BasicGenomeWideCombinableDomains
2151 // .createInstance( spec_three, false, new BasicSpecies( "three" ), false );
2152 // final GenomeWideCombinableDomains four_gwcd = BasicGenomeWideCombinableDomains
2153 // .createInstance( spec_four, false, new BasicSpecies( "four" ), false );
2154 // final GenomeWideCombinableDomains five_gwcd = BasicGenomeWideCombinableDomains
2155 // .createInstance( spec_five, false, new BasicSpecies( "five" ), false );
2156 // final GenomeWideCombinableDomains six_gwcd = BasicGenomeWideCombinableDomains
2157 // .createInstance( spec_six, false, new BasicSpecies( "six" ), false );
2158 // final GenomeWideCombinableDomains seven_gwcd = BasicGenomeWideCombinableDomains
2159 // .createInstance( spec_seven, false, new BasicSpecies( "seven" ), false
2161 // final List<GenomeWideCombinableDomains> gwcd_list1 = new ArrayList<GenomeWideCombinableDomains>();
2162 // gwcd_list1.add( one_gwcd );
2163 // gwcd_list1.add( two_gwcd );
2164 // gwcd_list1.add( three_gwcd );
2165 // gwcd_list1.add( four_gwcd );
2166 // gwcd_list1.add( five_gwcd );
2167 // gwcd_list1.add( six_gwcd );
2168 // gwcd_list1.add( seven_gwcd );
2169 // final PhylogenyFactory factory1 = ParserBasedPhylogenyFactory.getInstance();
2170 // final String p1_str = "(((((one,two)12,three)123,(four,five)45)12345,six)123456,seven)root";
2171 // final Phylogeny p1 = factory1.create( p1_str, new NHXParser() )[ 0 ];
2172 // final DomainParsimony dp1 = DomainParsimony.createInstance( p1, gwcd_list1 );
2173 // dp1.executeDolloParsimonyOnDomainPresence();
2174 // final CharacterStateMatrix<GainLossStates> gl_dollo_d = dp1.getGainLossMatrix();
2175 // final CharacterStateMatrix<BinaryStates> i_dollo_d = dp1.getInternalStatesMatrix();
2176 // if ( dp1.getCost() != 14 ) {
2179 // if ( dp1.getTotalGains() != 5 ) {
2182 // if ( dp1.getTotalLosses() != 9 ) {
2185 // if ( dp1.getTotalUnchanged() != 51 ) {
2188 // if ( dp1.getNetGainsOnNode( "45" ) != -2 ) {
2191 // if ( dp1.getSumOfGainsOnNode( "45" ) != 0 ) {
2194 // if ( dp1.getSumOfLossesOnNode( "45" ) != 2 ) {
2197 // if ( dp1.getSumOfUnchangedOnNode( "45" ) != 3 ) {
2200 // if ( dp1.getSumOfUnchangedPresentOnNode( "45" ) != 2 ) {
2203 // if ( dp1.getSumOfUnchangedAbsentOnNode( "45" ) != 1 ) {
2206 // if ( dp1.getUnitsGainedOnNode( "45" ).contains( "A" ) ) {
2209 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A" ) ) {
2212 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "B" ) ) {
2215 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D" ) ) {
2218 // if ( !dp1.getUnitsOnNode( "12" ).contains( "A" ) ) {
2221 // if ( !dp1.getUnitsOnNode( "12" ).contains( "B" ) ) {
2224 // if ( !dp1.getUnitsOnNode( "12" ).contains( "C" ) ) {
2227 // if ( !dp1.getUnitsOnNode( "12" ).contains( "D" ) ) {
2230 // if ( !dp1.getUnitsOnNode( "12" ).contains( "E" ) ) {
2233 // if ( dp1.getNetGainsOnNode( "123456" ) != 2 ) {
2236 // if ( dp1.getSumOfGainsOnNode( "123456" ) != 2 ) {
2239 // dp1.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2240 // final CharacterStateMatrix<GainLossStates> gl_dollo_bc = dp1.getGainLossMatrix();
2241 // final CharacterStateMatrix<BinaryStates> i_dollo_bc = dp1.getInternalStatesMatrix();
2242 // if ( dp1.getCost() != 8 ) {
2245 // if ( dp1.getTotalGains() != 3 ) {
2248 // if ( dp1.getTotalLosses() != 5 ) {
2251 // if ( dp1.getTotalUnchanged() != 31 ) {
2254 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2257 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D=E" ) ) {
2260 // dp1.executeFitchParsimonyOnDomainPresence();
2261 // final CharacterStateMatrix<GainLossStates> gl_fitch_d = dp1.getGainLossMatrix();
2262 // final CharacterStateMatrix<BinaryStates> i_fitch_d = dp1.getInternalStatesMatrix();
2263 // if ( dp1.getCost() != 10 ) {
2266 // if ( dp1.getTotalGains() != 7 ) {
2269 // if ( dp1.getTotalLosses() != 3 ) {
2272 // if ( dp1.getTotalUnchanged() != 55 ) {
2275 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "E" ) ) {
2278 // dp1.executeFitchParsimonyOnBinaryDomainCombintion();
2279 // final CharacterStateMatrix<GainLossStates> gl_fitch_bc = dp1.getGainLossMatrix();
2280 // final CharacterStateMatrix<BinaryStates> i_fitch_bc = dp1.getInternalStatesMatrix();
2281 // if ( dp1.getCost() != 6 ) {
2284 // if ( dp1.getTotalGains() != 4 ) {
2287 // if ( dp1.getTotalLosses() != 2 ) {
2290 // if ( dp1.getTotalUnchanged() != 33 ) {
2293 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2296 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "D=E" ) ) {
2299 // if ( dp1.getNetGainsOnNode( "two" ) != -1 ) {
2302 // if ( dp1.getNetGainsOnNode( "123" ) != 0 ) {
2305 // if ( dp1.getSumOfUnchangedPresentOnNode( "123" ) != 1 ) {
2308 // if ( dp1.getSumOfUnchangedAbsentOnNode( "123" ) != 2 ) {
2311 // if ( dp1.getSumOfUnchangedOnNode( "123" ) != 3 ) {
2314 // if ( dp1.getSumOfUnchangedOnNode( "two" ) != 2 ) {
2317 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "two" ).contains( "D=E" ) ) {
2320 // if ( !dp1.getUnitsUnchangedPresentOnNode( "two" ).contains( "A=C" ) ) {
2323 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "A=C" ) ) {
2326 // if ( !dp1.getUnitsUnchangedPresentOnNode( "123" ).contains( "A=B" ) ) {
2329 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "D=E" ) ) {
2332 // CharacterStateMatrix<BinaryStates> bsm = null;
2333 // CharacterStateMatrix<GainLossStates> glm = null;
2334 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, X, X },
2335 // { 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 } } );
2336 // if ( !bsm.equals( i_dollo_d ) ) {
2339 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, O, O },
2340 // { 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 } } );
2341 // if ( !bsm.equals( i_fitch_d ) ) {
2344 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, P, P },
2345 // { 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 },
2346 // { 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 },
2347 // { A, A, A, A, A }, { A, A, A, A, A } } );
2348 // if ( !glm.equals( gl_dollo_d ) ) {
2351 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, G, G },
2352 // { 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 },
2353 // { 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 },
2354 // { A, A, A, A, A }, { A, A, A, A, A } } );
2355 // if ( !glm.equals( gl_fitch_d ) ) {
2358 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X }, { X, O, X },
2359 // { O, O, X }, { X, O, X }, { X, O, O }, { O, O, O } } );
2360 // if ( !bsm.equals( i_dollo_bc ) ) {
2363 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, O }, { X, O, O },
2364 // { O, O, O }, { X, O, O }, { X, O, O }, { O, O, O } } );
2365 // if ( !bsm.equals( i_fitch_bc ) ) {
2368 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P }, { L, P, L },
2369 // { P, G, P }, { P, A, L }, { P, A, P }, { A, A, P }, { A, A, L }, { L, A, P }, { P, A, G },
2370 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2371 // if ( !glm.equals( gl_dollo_bc ) ) {
2374 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, G }, { L, P, A },
2375 // { P, G, A }, { P, A, A }, { P, A, A }, { A, A, G }, { A, A, A }, { L, A, A }, { P, A, A },
2376 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2377 // if ( !glm.equals( gl_fitch_bc ) ) {
2381 catch ( final Exception e ) {
2382 e.printStackTrace( System.out );
2388 private static boolean testDirectednessAndAdjacency() {
2390 final Protein one_1 = new BasicProtein( "one", "1", 0 );
2391 final Protein two_1 = new BasicProtein( "two", "1", 0 );
2392 final Protein three_1 = new BasicProtein( "three", "1", 0 );
2393 final Protein four_1 = new BasicProtein( "four", "1", 0 );
2394 final Protein five_1 = new BasicProtein( "five", "1", 0 );
2395 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2396 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2397 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2398 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2399 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2400 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2401 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2402 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2403 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2404 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2405 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2406 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2407 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2408 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2409 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2410 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2411 final List<Protein> list_1 = new ArrayList<Protein>();
2412 list_1.add( one_1 );
2413 list_1.add( two_1 );
2414 list_1.add( three_1 );
2415 list_1.add( four_1 );
2416 list_1.add( five_1 );
2417 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
2418 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED_ADJACTANT );
2419 if ( !gwcd_1.toBinaryDomainCombinations()
2420 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "B" ) ) ) {
2423 if ( gwcd_1.toBinaryDomainCombinations()
2424 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "A" ) ) ) {
2427 if ( gwcd_1.toBinaryDomainCombinations()
2428 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "A" ) ) ) {
2431 if ( gwcd_1.toBinaryDomainCombinations()
2432 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "C" ) ) ) {
2435 if ( gwcd_1.toBinaryDomainCombinations()
2436 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "A" ) ) ) {
2439 if ( !gwcd_1.toBinaryDomainCombinations()
2440 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "C" ) ) ) {
2443 if ( !gwcd_1.toBinaryDomainCombinations()
2444 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "X" ) ) ) {
2447 if ( gwcd_1.toBinaryDomainCombinations()
2448 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "Y" ) ) ) {
2451 if ( !gwcd_1.toBinaryDomainCombinations()
2452 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "Y" ) ) ) {
2455 if ( gwcd_1.toBinaryDomainCombinations()
2456 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "X" ) ) ) {
2459 if ( gwcd_1.toBinaryDomainCombinations()
2460 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "Y" ) ) ) {
2463 if ( !gwcd_1.toBinaryDomainCombinations()
2464 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "A" ) ) ) {
2467 if ( gwcd_1.toBinaryDomainCombinations()
2468 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "A" ) ) ) {
2471 if ( gwcd_1.toBinaryDomainCombinations()
2472 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "B" ) ) ) {
2475 if ( !gwcd_1.toBinaryDomainCombinations()
2476 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "Y" ) ) ) {
2479 if ( gwcd_1.toBinaryDomainCombinations()
2480 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "X" ) ) ) {
2483 if ( gwcd_1.toBinaryDomainCombinations()
2484 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "Y" ) ) ) {
2487 if ( gwcd_1.toBinaryDomainCombinations()
2488 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "X" ) ) ) {
2491 if ( gwcd_1.toBinaryDomainCombinations()
2492 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "C" ) ) ) {
2495 if ( !gwcd_1.toBinaryDomainCombinations()
2496 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "M", "N" ) ) ) {
2499 if ( !gwcd_1.toBinaryDomainCombinations()
2500 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "N", "M" ) ) ) {
2503 if ( !gwcd_1.toBinaryDomainCombinations()
2504 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "N", "P" ) ) ) {
2507 if ( gwcd_1.toBinaryDomainCombinations()
2508 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "M", "P" ) ) ) {
2511 if ( gwcd_1.toBinaryDomainCombinations()
2512 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "P", "N" ) ) ) {
2515 if ( gwcd_1.toBinaryDomainCombinations()
2516 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "P", "M" ) ) ) {
2519 if ( gwcd_1.toBinaryDomainCombinations()
2520 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "XX", "YY" ) ) ) {
2523 if ( gwcd_1.toBinaryDomainCombinations()
2524 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "YY", "XX" ) ) ) {
2527 if ( gwcd_1.toBinaryDomainCombinations()
2528 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "B" ) ) ) {
2532 catch ( final Exception e ) {
2533 e.printStackTrace( System.out );
2539 private static boolean testDomainArchitectureBasedGenomeSimilarityCalculator() {
2541 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2542 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2543 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2544 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2545 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2546 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2547 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2548 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2549 final Domain i = new BasicDomain( "i", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2550 final Domain j = new BasicDomain( "j", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2551 final Domain k = new BasicDomain( "k", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2552 final Domain l = new BasicDomain( "l", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2553 final Domain m = new BasicDomain( "m", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2554 final Domain n = new BasicDomain( "n", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2555 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
2556 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
2557 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
2558 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
2559 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
2560 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
2561 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
2562 final Protein rat_0 = new BasicProtein( "0", "rat", 0 );
2563 final Protein rat_1 = new BasicProtein( "1", "rat", 0 );
2564 final Protein rat_2 = new BasicProtein( "2", "rat", 0 );
2565 final Protein rat_3 = new BasicProtein( "3", "rat", 0 );
2566 final Protein rat_4 = new BasicProtein( "4", "rat", 0 );
2567 final Protein rat_5 = new BasicProtein( "5", "rat", 0 );
2568 final Protein rat_6 = new BasicProtein( "6", "rat", 0 );
2569 final Protein rat_7 = new BasicProtein( "7", "rat", 0 );
2570 eel_1.addProteinDomain( a );
2571 eel_2.addProteinDomain( a );
2572 eel_2.addProteinDomain( b );
2573 eel_3.addProteinDomain( a );
2574 eel_3.addProteinDomain( a );
2575 eel_3.addProteinDomain( b );
2576 eel_4.addProteinDomain( a );
2577 eel_4.addProteinDomain( b );
2578 eel_4.addProteinDomain( c );
2579 eel_4.addProteinDomain( d );
2580 eel_4.addProteinDomain( e );
2581 eel_5.addProteinDomain( e );
2582 eel_5.addProteinDomain( e );
2583 eel_5.addProteinDomain( f );
2584 eel_5.addProteinDomain( f );
2585 eel_5.addProteinDomain( f );
2586 eel_5.addProteinDomain( f );
2587 eel_6.addProteinDomain( g );
2588 eel_6.addProteinDomain( h );
2589 rat_1.addProteinDomain( a );
2590 rat_2.addProteinDomain( a );
2591 rat_2.addProteinDomain( b );
2592 rat_3.addProteinDomain( a );
2593 rat_3.addProteinDomain( a );
2594 rat_3.addProteinDomain( b );
2595 rat_4.addProteinDomain( a );
2596 rat_4.addProteinDomain( b );
2597 rat_4.addProteinDomain( c );
2598 rat_4.addProteinDomain( i );
2599 rat_4.addProteinDomain( l );
2600 rat_5.addProteinDomain( i );
2601 rat_5.addProteinDomain( f );
2602 rat_5.addProteinDomain( f );
2603 rat_6.addProteinDomain( j );
2604 rat_6.addProteinDomain( k );
2605 rat_7.addProteinDomain( m );
2606 rat_7.addProteinDomain( n );
2607 final List<Protein> protein_list_eel = new ArrayList<Protein>();
2608 protein_list_eel.add( eel_0 );
2609 protein_list_eel.add( eel_1 );
2610 protein_list_eel.add( eel_2 );
2611 protein_list_eel.add( eel_3 );
2612 protein_list_eel.add( eel_4 );
2613 protein_list_eel.add( eel_5 );
2614 protein_list_eel.add( eel_6 );
2615 final List<Protein> protein_list_rat = new ArrayList<Protein>();
2616 protein_list_rat.add( rat_0 );
2617 protein_list_rat.add( rat_1 );
2618 protein_list_rat.add( rat_2 );
2619 protein_list_rat.add( rat_3 );
2620 protein_list_rat.add( rat_4 );
2621 protein_list_rat.add( rat_5 );
2622 protein_list_rat.add( rat_6 );
2623 protein_list_rat.add( rat_7 );
2624 final GenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
2625 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
2626 final GenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
2627 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
2628 final GenomeWideCombinableDomains rat_not_ignore = BasicGenomeWideCombinableDomains
2629 .createInstance( protein_list_rat, false, new BasicSpecies( "rat" ) );
2630 final GenomeWideCombinableDomains rat_ignore = BasicGenomeWideCombinableDomains
2631 .createInstance( protein_list_rat, true, new BasicSpecies( "rat" ) );
2632 final DomainArchitectureBasedGenomeSimilarityCalculator calc_ni = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_not_ignore,
2634 final DomainArchitectureBasedGenomeSimilarityCalculator calc_i = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_ignore,
2636 if ( calc_ni.getAllDomains().size() != 14 ) {
2639 if ( calc_i.getAllDomains().size() != 14 ) {
2642 if ( calc_ni.getDomainsSpecificToGenome0().size() != 4 ) {
2645 if ( calc_i.getDomainsSpecificToGenome0().size() != 4 ) {
2648 if ( calc_ni.getDomainsSpecificToGenome1().size() != 6 ) {
2651 if ( calc_i.getDomainsSpecificToGenome1().size() != 6 ) {
2654 if ( calc_i.getSharedDomains().size() != 4 ) {
2657 if ( calc_ni.getSharedDomains().size() != 4 ) {
2660 if ( !calc_ni.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2663 if ( !calc_ni.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2666 if ( !calc_ni.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2669 if ( !calc_ni.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2672 if ( calc_ni.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2675 if ( calc_ni.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2678 if ( !calc_i.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2681 if ( !calc_i.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2684 if ( !calc_i.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2687 if ( !calc_i.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2690 if ( calc_i.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2693 if ( calc_i.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2696 if ( !calc_ni.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2699 if ( !calc_ni.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2702 if ( !calc_ni.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2705 if ( !calc_ni.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2708 if ( !calc_ni.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2711 if ( !calc_ni.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2714 if ( calc_ni.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2717 if ( calc_ni.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2720 if ( calc_ni.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2723 if ( !calc_i.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2726 if ( !calc_i.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2729 if ( !calc_i.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2732 if ( !calc_i.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2735 if ( !calc_i.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2738 if ( !calc_i.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2741 if ( calc_i.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2744 if ( calc_i.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2747 if ( calc_i.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2750 if ( !calc_i.getSharedDomains().contains( a.getDomainId() ) ) {
2753 if ( !calc_i.getSharedDomains().contains( b.getDomainId() ) ) {
2756 if ( !calc_i.getSharedDomains().contains( c.getDomainId() ) ) {
2759 if ( !calc_i.getSharedDomains().contains( f.getDomainId() ) ) {
2762 final Set<String> all = calc_ni.getAllDomains();
2763 if ( !all.contains( a.getDomainId() ) ) {
2766 if ( !all.contains( b.getDomainId() ) ) {
2769 if ( !all.contains( c.getDomainId() ) ) {
2772 if ( !all.contains( d.getDomainId() ) ) {
2775 if ( !all.contains( e.getDomainId() ) ) {
2778 if ( !all.contains( f.getDomainId() ) ) {
2781 if ( !all.contains( g.getDomainId() ) ) {
2784 if ( !all.contains( h.getDomainId() ) ) {
2787 if ( !all.contains( i.getDomainId() ) ) {
2790 if ( !all.contains( l.getDomainId() ) ) {
2793 if ( !all.contains( j.getDomainId() ) ) {
2796 if ( !all.contains( k.getDomainId() ) ) {
2799 if ( !all.contains( m.getDomainId() ) ) {
2802 if ( !all.contains( n.getDomainId() ) ) {
2805 final Set<BinaryDomainCombination> s_0_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome0();
2806 final Set<BinaryDomainCombination> s_0_i = calc_i.getBinaryDomainCombinationsSpecificToGenome0();
2807 final Set<BinaryDomainCombination> s_1_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome1();
2808 final Set<BinaryDomainCombination> s_1_i = calc_i.getBinaryDomainCombinationsSpecificToGenome1();
2809 final Set<BinaryDomainCombination> a_ni = calc_ni.getAllBinaryDomainCombinations();
2810 final Set<BinaryDomainCombination> a_i = calc_i.getAllBinaryDomainCombinations();
2811 final Set<BinaryDomainCombination> shared_ni = calc_ni.getSharedBinaryDomainCombinations();
2812 final Set<BinaryDomainCombination> shared_i = calc_i.getSharedBinaryDomainCombinations();
2813 if ( a_ni.size() != 25 ) {
2816 if ( a_i.size() != 22 ) {
2819 if ( s_0_ni.size() != 10 ) {
2822 if ( s_0_i.size() != 9 ) {
2825 if ( s_1_ni.size() != 10 ) {
2828 if ( s_1_i.size() != 10 ) {
2831 if ( shared_ni.size() != 5 ) {
2834 if ( shared_i.size() != 3 ) {
2837 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2840 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
2843 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2846 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
2849 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
2852 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2855 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
2858 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
2861 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
2864 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
2867 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
2870 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
2873 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
2876 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2879 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2882 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
2885 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
2888 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
2891 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
2894 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
2897 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
2900 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "l" ) ) ) {
2903 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
2906 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2909 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
2912 if ( a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
2915 if ( a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "m" ) ) ) {
2918 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2921 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2924 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2927 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2930 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
2933 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2936 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2939 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2942 if ( shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2945 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2948 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
2951 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2954 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2957 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2960 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2963 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
2966 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
2969 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
2972 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
2975 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
2978 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
2981 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
2984 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
2987 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
2990 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2993 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
2996 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
2999 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
3002 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
3005 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
3008 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
3011 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
3014 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
3017 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
3020 if ( s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
3023 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
3026 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
3029 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
3032 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
3035 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
3038 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
3041 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "l", "i" ) ) ) {
3044 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
3047 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
3050 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
3053 if ( s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
3056 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
3059 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
3062 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
3065 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
3068 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
3071 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
3074 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "l", "i" ) ) ) {
3077 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
3080 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
3083 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
3086 if ( s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
3089 if ( !isEqual( calc_ni.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3090 1.0 - ( ( 25.0 - 5.0 ) / 25.0 ) ) ) {
3093 if ( !isEqual( calc_i.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3094 1.0 - ( ( 22.0 - 3.0 ) / 22.0 ) ) ) {
3097 if ( !isEqual( calc_ni.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3100 if ( !isEqual( calc_i.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3103 final Domain u = new BasicDomain( "u", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3104 final Domain v = new BasicDomain( "v", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3105 final Domain w = new BasicDomain( "w", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3106 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3107 final Domain y = new BasicDomain( "y", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3108 final Domain z = new BasicDomain( "z", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3109 final Protein a_0 = new BasicProtein( "0", "a", 0 );
3110 final Protein a_1 = new BasicProtein( "1", "a", 0 );
3111 final Protein a_2 = new BasicProtein( "2", "a", 0 );
3112 final Protein b_0 = new BasicProtein( "0", "b", 0 );
3113 final Protein b_1 = new BasicProtein( "1", "b", 0 );
3114 a_0.addProteinDomain( u );
3115 a_0.addProteinDomain( v );
3116 a_0.addProteinDomain( w );
3117 a_1.addProteinDomain( w );
3118 a_1.addProteinDomain( x );
3119 a_2.addProteinDomain( y );
3120 a_2.addProteinDomain( z );
3121 b_0.addProteinDomain( u );
3122 b_0.addProteinDomain( w );
3123 b_1.addProteinDomain( y );
3124 b_1.addProteinDomain( z );
3125 final List<Protein> protein_list_a = new ArrayList<Protein>();
3126 protein_list_a.add( a_0 );
3127 protein_list_a.add( a_1 );
3128 protein_list_a.add( a_2 );
3129 final List<Protein> protein_list_b = new ArrayList<Protein>();
3130 protein_list_b.add( b_0 );
3131 protein_list_b.add( b_1 );
3132 final GenomeWideCombinableDomains ca = BasicGenomeWideCombinableDomains
3133 .createInstance( protein_list_a, false, new BasicSpecies( "a" ) );
3134 final GenomeWideCombinableDomains cb = BasicGenomeWideCombinableDomains
3135 .createInstance( protein_list_b, true, new BasicSpecies( "b" ) );
3136 final DomainArchitectureBasedGenomeSimilarityCalculator calc_u = new DomainArchitectureBasedGenomeSimilarityCalculator( ca,
3138 calc_u.setAllowDomainsToBeIgnored( true );
3139 if ( calc_u.getAllDomains().size() != 6 ) {
3142 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3145 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3148 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3151 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3154 if ( calc_u.getSharedDomains().size() != 4 ) {
3157 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3160 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3163 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3166 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3169 if ( calc_u.getAllDomains().size() != 6 ) {
3172 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3175 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3178 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3181 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3184 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3187 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3190 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 3 ) {
3193 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3196 if ( calc_u.getSharedBinaryDomainCombinations().size() != 2 ) {
3199 if ( calc_u.getAllBinaryDomainCombinations().size() != 5 ) {
3202 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3203 .contains( BasicBinaryDomainCombination.obtainInstance( "v", "u" ) ) ) {
3206 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3207 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "v" ) ) ) {
3210 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3211 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "x" ) ) ) {
3214 if ( !calc_u.getSharedBinaryDomainCombinations()
3215 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "u" ) ) ) {
3218 if ( !calc_u.getSharedBinaryDomainCombinations()
3219 .contains( BasicBinaryDomainCombination.obtainInstance( "z", "y" ) ) ) {
3222 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "v",
3226 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3230 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3234 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3238 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3242 calc_u.setAllowDomainsToBeIgnored( true );
3243 calc_u.addDomainIdToIgnore( u.getDomainId() );
3244 calc_u.addDomainIdToIgnore( "other" );
3245 calc_u.addDomainIdToIgnore( "other_too" );
3246 if ( calc_u.getAllDomains().size() != 5 ) {
3249 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3252 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3255 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3258 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3261 if ( calc_u.getSharedDomains().size() != 3 ) {
3264 if ( calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3267 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3270 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3273 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3276 if ( calc_u.getAllDomains().size() != 5 ) {
3279 if ( calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3282 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3285 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3288 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3291 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3294 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3297 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 2 ) {
3300 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3303 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3306 if ( calc_u.getAllBinaryDomainCombinations().size() != 3 ) {
3309 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3310 .contains( BasicBinaryDomainCombination.obtainInstance( "v", "u" ) ) ) {
3313 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3314 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "v" ) ) ) {
3317 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3318 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "x" ) ) ) {
3321 if ( calc_u.getSharedBinaryDomainCombinations()
3322 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "u" ) ) ) {
3325 if ( !calc_u.getSharedBinaryDomainCombinations()
3326 .contains( BasicBinaryDomainCombination.obtainInstance( "z", "y" ) ) ) {
3329 if ( calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "v",
3333 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3337 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3341 if ( calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3345 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3349 calc_u.setAllowDomainsToBeIgnored( false );
3350 if ( calc_u.getAllDomains().size() != 6 ) {
3354 calc_u.setAllowDomainsToBeIgnored( true );
3355 calc_u.deleteAllDomainIdsToIgnore();
3356 calc_u.addDomainIdToIgnore( "v" );
3357 calc_u.addDomainIdToIgnore( "w" );
3358 calc_u.addDomainIdToIgnore( "other" );
3359 calc_u.addDomainIdToIgnore( "other_too" );
3360 if ( calc_u.getAllDomains().size() != 4 ) {
3363 if ( calc_u.getDomainsSpecificToGenome0().size() != 1 ) {
3366 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3369 if ( calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3372 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3375 if ( calc_u.getSharedDomains().size() != 3 ) {
3378 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3381 if ( calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3384 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3387 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3390 if ( calc_u.getAllDomains().size() != 4 ) {
3393 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3396 if ( calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3399 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3402 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3405 if ( calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3408 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3411 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 0 ) {
3414 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3417 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3420 if ( calc_u.getAllBinaryDomainCombinations().size() != 1 ) {
3423 if ( !calc_u.getSharedBinaryDomainCombinations()
3424 .contains( BasicBinaryDomainCombination.obtainInstance( "y", "z" ) ) ) {
3427 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3431 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3432 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3435 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3438 calc_u.setAllowDomainsToBeIgnored( false );
3439 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3440 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3443 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3446 calc_u.setAllowDomainsToBeIgnored( true );
3447 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3448 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3451 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3454 calc_u.deleteAllDomainIdsToIgnore();
3455 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3456 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3459 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3463 catch ( final Exception e ) {
3464 e.printStackTrace( System.out );
3470 private static boolean testDomainCombinationCounting( final File test_dir ) {
3472 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
3473 + ForesterUtil.getFileSeparator() + "hmmpfam_output2" ), "human", "ls" );
3474 parser.setEValueMaximum( 0.2 );
3475 parser.setIgnoreDufs( true );
3476 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
3477 final List<Protein> domain_collections = parser.parse();
3478 final BasicGenomeWideCombinableDomains cdcc = BasicGenomeWideCombinableDomains
3479 .createInstance( domain_collections, false, new BasicSpecies( "human" ) );
3480 CombinableDomains cd = cdcc.get( "A" );
3481 if ( cd.getKeyDomainCount() != 9 ) {
3484 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3487 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3490 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 2 ) {
3493 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3496 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3499 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3502 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3505 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3508 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3511 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3514 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3517 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3520 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3523 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3526 if ( cd.getKeyDomainCount() != 9 ) {
3529 cd = cdcc.get( "B" );
3530 if ( cd.getKeyDomainCount() != 12 ) {
3533 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3536 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3539 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 6 ) {
3542 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3545 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3548 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3551 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3554 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3557 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3560 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3563 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3566 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3569 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3572 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3575 if ( cd.getKeyDomainCount() != 12 ) {
3578 cd = cdcc.get( "C" );
3579 if ( cd.getKeyDomainCount() != 10 ) {
3582 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3585 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3588 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 4 ) {
3591 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3594 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 2 ) {
3597 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3600 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3603 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3606 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3609 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3612 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 2 ) {
3615 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 2 ) {
3618 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 2 ) {
3621 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3624 cd = cdcc.get( "D" );
3625 if ( cd.getKeyDomainCount() != 15 ) {
3628 if ( cd.getKeyDomainProteinsCount() != 6 ) {
3631 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3634 cd = cdcc.get( "E" );
3635 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3638 if ( cd.getKeyDomainCount() != 1 ) {
3641 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3644 cd = cdcc.get( "U" );
3645 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3648 if ( cd.getKeyDomainCount() != 6 ) {
3651 if ( cd.getKeyDomainProteinsCount() != 3 ) {
3654 cd = cdcc.get( "V" );
3655 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3658 if ( cd.getKeyDomainCount() != 3 ) {
3661 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3664 cd = cdcc.get( "W" );
3665 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3668 if ( cd.getKeyDomainCount() != 2 ) {
3671 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3674 cd = cdcc.get( "X" );
3675 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3678 if ( cd.getKeyDomainCount() != 2 ) {
3681 cd = cdcc.get( "Y" );
3682 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3685 cd = cdcc.get( "Z" );
3686 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3689 cd = cdcc.get( "NN" );
3690 if ( cd.getKeyDomainCount() != 1 ) {
3693 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3696 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3699 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3702 cd = cdcc.get( "MM" );
3703 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3706 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 0 ) {
3709 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3712 cd = cdcc.get( "OO" );
3713 if ( cd.getNumberOfCombinableDomains() != 2 ) {
3716 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3719 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 1 ) {
3722 cd = cdcc.get( "QQ" );
3723 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3726 if ( cd.getKeyDomainCount() != 17 ) {
3729 if ( cd.getKeyDomainProteinsCount() != 4 ) {
3732 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "QQ" ).getDomainId() ) != 3 ) {
3735 cd = cdcc.get( "PP" );
3736 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3739 if ( cd.getKeyDomainCount() != 2 ) {
3742 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3745 cd = cdcc.get( "singlet" );
3746 if ( cd.getKeyDomainCount() != 1 ) {
3749 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3752 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3755 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "singlet" ).getDomainId() ) != 0 ) {
3758 cd = cdcc.get( "three" );
3759 if ( cd.getKeyDomainCount() != 3 ) {
3762 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3765 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3768 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 1 ) {
3771 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
3774 // Ignore combinations with same:
3775 final BasicGenomeWideCombinableDomains cdcc2 = BasicGenomeWideCombinableDomains
3776 .createInstance( domain_collections,
3778 new BasicSpecies( "human" ),
3780 DomainCombinationType.BASIC,
3783 cd = cdcc2.get( "A" );
3784 if ( cd.getKeyDomainCount() != 9 ) {
3787 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3790 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3793 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 0 ) {
3796 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3799 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3802 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3805 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3808 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3811 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3814 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3817 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3820 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3823 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3826 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3829 cd = cdcc2.get( "B" );
3830 if ( cd.getKeyDomainCount() != 12 ) {
3833 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3836 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3839 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 6 ) {
3842 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 0 ) {
3845 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 4 ) {
3848 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3851 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3854 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3857 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3860 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3863 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3866 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3869 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3872 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3875 cd = cdcc2.get( "C" );
3876 if ( cd.getKeyDomainCount() != 10 ) {
3879 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3882 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3885 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 4 ) {
3888 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 4 ) {
3891 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 0 ) {
3894 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3897 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3900 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3903 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3906 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3909 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 2 ) {
3912 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 2 ) {
3915 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 2 ) {
3918 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3921 cd = cdcc2.get( "D" );
3922 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3925 cd = cdcc2.get( "E" );
3926 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3929 if ( cd.getKeyDomainCount() != 1 ) {
3932 cd = cdcc2.get( "U" );
3933 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3936 cd = cdcc2.get( "V" );
3937 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3940 cd = cdcc2.get( "W" );
3941 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3944 cd = cdcc2.get( "X" );
3945 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3948 cd = cdcc2.get( "Y" );
3949 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3952 cd = cdcc2.get( "Z" );
3953 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3956 cd = cdcc2.get( "NN" );
3957 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3960 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3963 cd = cdcc2.get( "MM" );
3964 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3967 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 0 ) {
3970 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 1 ) {
3973 cd = cdcc2.get( "OO" );
3974 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3977 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 0 ) {
3980 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 1 ) {
3983 cd = cdcc2.get( "QQ" );
3984 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3987 if ( cd.getNumberOfProteinsExhibitingCombination( "QQ" ) != 0 ) {
3990 cd = cdcc2.get( "singlet" );
3991 if ( cd.getKeyDomainCount() != 1 ) {
3994 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3997 if ( cd.getNumberOfCombinableDomains() != 0 ) {
4000 if ( cd.getNumberOfProteinsExhibitingCombination( "singlet" ) != 0 ) {
4003 cd = cdcc2.get( "three" );
4004 if ( cd.getKeyDomainCount() != 3 ) {
4007 if ( cd.getKeyDomainProteinsCount() != 1 ) {
4010 if ( cd.getNumberOfCombinableDomains() != 0 ) {
4013 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 0 ) {
4016 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
4020 catch ( final Exception e ) {
4021 e.printStackTrace( System.out );
4027 private static boolean testDomainSorting() {
4029 final Domain A = new BasicDomain( "A", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4030 final Domain B = new BasicDomain( "B", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4031 final Domain C = new BasicDomain( "C", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.2, -12 );
4032 final Domain D = new BasicDomain( "D", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.3, -12 );
4033 final Domain E = new BasicDomain( "E", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.4, -12 );
4034 final Domain F = new BasicDomain( "F", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.5, -12 );
4035 final Domain G = new BasicDomain( "G", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.6, -12 );
4036 final Domain H1 = new BasicDomain( "H", ( short ) 100, ( short ) 200, ( short ) 1, ( short ) 5, 0.7, -12 );
4037 final Domain H2 = new BasicDomain( "H", ( short ) 300, ( short ) 400, ( short ) 2, ( short ) 5, 0.7, -12 );
4038 final Domain H3 = new BasicDomain( "H", ( short ) 500, ( short ) 600, ( short ) 3, ( short ) 5, 0.7, -12 );
4039 final Domain H4 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 4, ( short ) 5, 0.7, -12 );
4040 final Domain H5 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4041 final Domain H6 = new BasicDomain( "H",
4048 final Domain H7 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4049 final Domain H8 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 200, 0.7, -12 );
4050 final Protein protein = new BasicProtein( "00", "bat", 0 );
4051 protein.addProteinDomain( H5 );
4052 protein.addProteinDomain( H2 );
4053 protein.addProteinDomain( H7 );
4054 protein.addProteinDomain( H6 );
4055 protein.addProteinDomain( A );
4056 protein.addProteinDomain( G );
4057 protein.addProteinDomain( H4 );
4058 protein.addProteinDomain( D );
4059 protein.addProteinDomain( H1 );
4060 protein.addProteinDomain( C );
4061 protein.addProteinDomain( E );
4062 protein.addProteinDomain( F );
4063 protein.addProteinDomain( B );
4064 protein.addProteinDomain( H3 );
4065 protein.addProteinDomain( H7 );
4066 protein.addProteinDomain( H7 );
4067 protein.addProteinDomain( H8 );
4068 final List<Domain> sorted = SurfacingUtil.sortDomainsWithAscendingConfidenceValues( protein );
4069 if ( sorted.size() != 17 ) {
4072 if ( !sorted.get( 0 ).getDomainId().equals( "A" ) ) {
4075 if ( sorted.get( 0 ).getNumber() != 1 ) {
4078 if ( !sorted.get( 1 ).getDomainId().equals( "B" ) ) {
4081 if ( sorted.get( 1 ).getNumber() != 1 ) {
4084 if ( !sorted.get( 2 ).getDomainId().equals( "C" ) ) {
4087 if ( sorted.get( 2 ).getNumber() != 1 ) {
4090 if ( !sorted.get( 3 ).getDomainId().equals( "D" ) ) {
4093 if ( sorted.get( 3 ).getNumber() != 1 ) {
4096 if ( !sorted.get( 4 ).getDomainId().equals( "E" ) ) {
4099 if ( sorted.get( 4 ).getNumber() != 1 ) {
4102 if ( !sorted.get( 5 ).getDomainId().equals( "F" ) ) {
4105 if ( sorted.get( 5 ).getNumber() != 1 ) {
4108 if ( !sorted.get( 6 ).getDomainId().equals( "G" ) ) {
4111 if ( sorted.get( 6 ).getNumber() != 1 ) {
4114 if ( !sorted.get( 7 ).getDomainId().equals( "H" ) ) {
4117 if ( sorted.get( 7 ).getNumber() != 5 ) {
4120 if ( !sorted.get( 8 ).getDomainId().equals( "H" ) ) {
4123 if ( sorted.get( 8 ).getNumber() != 2 ) {
4126 if ( !sorted.get( 9 ).getDomainId().equals( "H" ) ) {
4129 if ( sorted.get( 9 ).getNumber() != 6 ) {
4132 if ( !sorted.get( 10 ).getDomainId().equals( "H" ) ) {
4135 if ( sorted.get( 10 ).getNumber() != 4 ) {
4138 if ( !sorted.get( 11 ).getDomainId().equals( "H" ) ) {
4141 if ( sorted.get( 11 ).getNumber() != 1 ) {
4144 if ( sorted.get( 11 ).getTotalCount() != 5 ) {
4147 if ( !sorted.get( 12 ).getDomainId().equals( "H" ) ) {
4150 if ( sorted.get( 12 ).getNumber() != 3 ) {
4153 if ( !sorted.get( 13 ).getDomainId().equals( "H7" ) ) {
4156 if ( sorted.get( 13 ).getNumber() != 5 ) {
4159 if ( !sorted.get( 14 ).getDomainId().equals( "H7" ) ) {
4162 if ( sorted.get( 14 ).getNumber() != 5 ) {
4165 if ( !sorted.get( 15 ).getDomainId().equals( "H7" ) ) {
4168 if ( sorted.get( 15 ).getNumber() != 5 ) {
4171 // To check if sorting is stable [as claimed by Sun for
4172 // Collections.sort( List )]
4173 if ( !sorted.get( 16 ).getDomainId().equals( "H7" ) ) {
4176 if ( sorted.get( 16 ).getNumber() != 5 ) {
4179 if ( sorted.get( 16 ).getTotalCount() != 200 ) {
4183 catch ( final Exception e ) {
4184 e.printStackTrace( System.out );
4190 private static boolean testGenomeWideCombinableDomains() {
4192 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4193 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4194 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4195 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4196 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4197 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4198 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4199 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4200 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4201 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
4202 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
4203 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
4204 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
4205 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
4206 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
4207 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
4208 eel_1.addProteinDomain( a );
4209 eel_2.addProteinDomain( a );
4210 eel_2.addProteinDomain( b );
4211 eel_3.addProteinDomain( a );
4212 eel_3.addProteinDomain( a );
4213 eel_3.addProteinDomain( b );
4214 eel_4.addProteinDomain( a );
4215 eel_4.addProteinDomain( b );
4216 eel_4.addProteinDomain( c );
4217 eel_4.addProteinDomain( d );
4218 eel_4.addProteinDomain( e );
4219 eel_5.addProteinDomain( e );
4220 eel_5.addProteinDomain( e );
4221 eel_5.addProteinDomain( f );
4222 eel_5.addProteinDomain( f );
4223 eel_5.addProteinDomain( f );
4224 eel_5.addProteinDomain( f );
4225 eel_6.addProteinDomain( g );
4226 eel_6.addProteinDomain( h );
4227 final List<Protein> protein_list_eel = new ArrayList<Protein>();
4228 protein_list_eel.add( eel_0 );
4229 protein_list_eel.add( eel_1 );
4230 protein_list_eel.add( eel_2 );
4231 protein_list_eel.add( eel_3 );
4232 protein_list_eel.add( eel_4 );
4233 protein_list_eel.add( eel_5 );
4234 protein_list_eel.add( eel_6 );
4235 final BasicGenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
4236 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
4237 final BasicGenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
4238 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
4239 if ( !eel_not_ignore.contains( "a" ) ) {
4242 if ( !eel_not_ignore.contains( "b" ) ) {
4245 if ( !eel_not_ignore.contains( "c" ) ) {
4248 if ( !eel_not_ignore.contains( "d" ) ) {
4251 if ( !eel_not_ignore.contains( "e" ) ) {
4254 if ( !eel_not_ignore.contains( "f" ) ) {
4257 if ( !eel_not_ignore.contains( "g" ) ) {
4260 if ( !eel_not_ignore.contains( "h" ) ) {
4263 if ( eel_not_ignore.contains( "x" ) ) {
4266 if ( !eel_ignore.contains( "a" ) ) {
4269 if ( !eel_ignore.contains( "b" ) ) {
4272 if ( !eel_ignore.contains( "c" ) ) {
4275 if ( !eel_ignore.contains( "d" ) ) {
4278 if ( !eel_ignore.contains( "e" ) ) {
4281 if ( !eel_ignore.contains( "f" ) ) {
4284 if ( !eel_ignore.contains( "g" ) ) {
4287 if ( !eel_ignore.contains( "h" ) ) {
4290 if ( eel_ignore.contains( "x" ) ) {
4293 if ( eel_not_ignore.getSize() != 8 ) {
4296 if ( eel_ignore.getSize() != 8 ) {
4299 if ( eel_not_ignore.get( "a" ).getCombinableDomainsIds().size() != 5 ) {
4302 if ( eel_not_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4305 if ( eel_not_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4308 if ( eel_not_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4311 if ( eel_not_ignore.get( "e" ).getCombinableDomainsIds().size() != 6 ) {
4314 if ( eel_not_ignore.get( "f" ).getCombinableDomainsIds().size() != 2 ) {
4317 if ( eel_not_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4320 if ( eel_not_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4323 if ( eel_ignore.get( "a" ).getCombinableDomainsIds().size() != 4 ) {
4326 if ( eel_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4329 if ( eel_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4332 if ( eel_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4335 if ( eel_ignore.get( "e" ).getCombinableDomainsIds().size() != 5 ) {
4338 if ( eel_ignore.get( "f" ).getCombinableDomainsIds().size() != 1 ) {
4341 if ( eel_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4344 if ( eel_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4347 if ( eel_not_ignore.getAllDomainIds().size() != 8 ) {
4350 if ( !eel_not_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4353 if ( !eel_not_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4356 if ( !eel_not_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4359 if ( !eel_not_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4362 if ( !eel_not_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4365 if ( !eel_not_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4368 if ( !eel_not_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4371 if ( !eel_not_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4374 if ( eel_not_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4377 if ( eel_ignore.getAllDomainIds().size() != 8 ) {
4380 if ( !eel_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4383 if ( !eel_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4386 if ( !eel_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4389 if ( !eel_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4392 if ( !eel_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4395 if ( !eel_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4398 if ( !eel_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4401 if ( !eel_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4404 if ( eel_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4407 final SortedSet<BinaryDomainCombination> bc0 = eel_not_ignore.toBinaryDomainCombinations();
4408 if ( bc0.size() != 15 ) {
4411 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
4414 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
4417 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
4420 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
4423 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
4426 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
4429 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
4432 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
4435 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
4438 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
4441 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
4444 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
4447 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
4450 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
4453 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
4456 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
4459 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "a" ) ) ) {
4462 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "b" ) ) ) {
4465 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "h" ) ) ) {
4468 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
4471 final SortedSet<BinaryDomainCombination> bc1 = eel_ignore.toBinaryDomainCombinations();
4472 if ( bc1.size() != 12 ) {
4475 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
4478 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
4481 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
4484 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
4487 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
4490 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
4493 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
4496 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
4499 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
4502 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
4505 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
4508 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
4511 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
4514 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
4517 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
4520 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
4523 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "a" ) ) ) {
4526 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "b" ) ) ) {
4529 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
4532 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "g" ) ) ) {
4536 catch ( final Exception e ) {
4537 e.printStackTrace( System.out );
4543 private static boolean testHmmPfamOutputParser( final File test_dir ) {
4545 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
4546 + ForesterUtil.getFileSeparator() + "hmmpfam_output" ), "human", "ls" );
4547 parser.setEValueMaximum( 0.2 );
4548 parser.setIgnoreDufs( true );
4549 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4550 List<?> domain_collections = null;
4551 domain_collections = parser.parse();
4552 if ( parser.getDomainsEncountered() != 4 ) {
4555 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4558 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4561 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4564 if ( parser.getDomainsStored() != 3 ) {
4567 if ( domain_collections.size() != 1 ) {
4570 final Protein pdc = ( Protein ) domain_collections.get( 0 );
4571 if ( !pdc.getProteinId().equals( new ProteinId( "ENSP00000285681" ) ) ) {
4574 if ( !pdc.getSpecies().getSpeciesId().equals( "human" ) ) {
4577 if ( pdc.getNumberOfProteinDomains() != 3 ) {
4580 if ( !pdc.getAccession().equals( "acc_ENSP00000285681" ) ) {
4585 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4588 final List<Domain> uba = pdc.getProteinDomains( "UBA" );
4589 final List<Domain> uim = pdc.getProteinDomains( "UIM" );
4590 final List<Domain> uch = pdc.getProteinDomains( "UCH" );
4591 if ( uba.size() != 1 ) {
4594 if ( uim.size() != 2 ) {
4597 if ( uch.size() != 0 ) {
4600 final BasicDomain uim_domain = ( BasicDomain ) uim.get( 1 );
4601 if ( !uim_domain.getDomainId().equals( "UIM" ) ) {
4604 if ( uim_domain.getTotalCount() != 2 ) {
4607 final BasicDomain uba_domain = ( BasicDomain ) uba.get( 0 );
4608 if ( !uba_domain.getDomainId().equals( "UBA" ) ) {
4611 if ( uba_domain.getNumber() != 1 ) {
4614 if ( uba_domain.getTotalCount() != 1 ) {
4617 if ( uba_domain.getFrom() != 16 ) {
4620 if ( uba_domain.getTo() != 57 ) {
4623 final HmmPfamOutputParser parser2 = new HmmPfamOutputParser( new File( test_dir
4624 + ForesterUtil.getFileSeparator() + "hmmpfam_output_short" ), "human", "ls" );
4625 parser2.setEValueMaximum( 0.2 );
4626 parser2.setIgnoreDufs( true );
4627 parser2.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4628 List<Protein> domain_collections2 = null;
4629 domain_collections2 = parser2.parse();
4630 if ( parser2.getDomainsEncountered() != 4 ) {
4633 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4636 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4639 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4642 if ( parser2.getDomainsStored() != 3 ) {
4645 if ( domain_collections2.size() != 1 ) {
4648 final Protein pdc2 = domain_collections2.get( 0 );
4649 if ( !pdc2.getProteinId().getId().equals( "ENSP00000285681" ) ) {
4652 if ( !pdc2.getSpecies().getSpeciesId().equals( "human" ) ) {
4655 if ( !pdc2.getName().equals( "" ) ) {
4658 if ( !pdc2.getAccession().equals( "223" ) ) {
4663 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4666 if ( pdc2.getNumberOfProteinDomains() != 3 ) {
4669 final List<Domain> uba2 = pdc2.getProteinDomains( "UBA" );
4670 final List<Domain> uim2 = pdc2.getProteinDomains( "UIM" );
4671 final List<Domain> uch2 = pdc2.getProteinDomains( "UCH" );
4672 if ( uba2.size() != 1 ) {
4675 if ( uim2.size() != 2 ) {
4678 if ( uch2.size() != 0 ) {
4681 final BasicDomain uim_domain2 = ( BasicDomain ) uim2.get( 1 );
4682 if ( !uim_domain2.getDomainId().equals( "UIM" ) ) {
4685 if ( uim_domain2.getTotalCount() != 2 ) {
4688 final BasicDomain uba_domain2 = ( BasicDomain ) uba2.get( 0 );
4689 if ( !uba_domain2.getDomainId().equals( "UBA" ) ) {
4692 if ( uba_domain2.getNumber() != 1 ) {
4695 if ( uba_domain2.getTotalCount() != 1 ) {
4698 if ( uba_domain2.getFrom() != 16 ) {
4701 if ( uba_domain2.getTo() != 57 ) {
4705 catch ( final Exception e ) {
4706 e.printStackTrace( System.out );
4712 private static boolean testHmmPfamOutputParserWithFilter( final File test_dir ) {
4714 HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator()
4715 + "hmmpfam_output3" ), "human", "ls" );
4716 parser.setEValueMaximum( 0.2 );
4717 parser.setIgnoreDufs( true );
4718 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4719 List<Protein> proteins = null;
4720 proteins = parser.parse();
4721 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4724 if ( proteins.size() != 4 ) {
4728 Set<String> filter = new TreeSet<String>();
4729 filter.add( "beauty" );
4730 filter.add( "strange" );
4731 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4734 HmmPfamOutputParser.FilterType.NEGATIVE_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() != 0 ) {
4743 if ( proteins.size() != 4 ) {
4747 filter = new TreeSet<String>();
4748 filter.add( "beauty" );
4749 filter.add( "strange" );
4750 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4753 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4754 parser.setEValueMaximum( 0.2 );
4755 parser.setIgnoreDufs( true );
4756 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4758 proteins = parser.parse();
4759 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4762 if ( proteins.size() != 0 ) {
4766 filter = new TreeSet<String>();
4767 filter.add( "UIM" );
4770 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4773 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4774 parser.setEValueMaximum( 0.2 );
4775 parser.setIgnoreDufs( true );
4776 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4778 proteins = parser.parse();
4779 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4782 if ( proteins.size() != 4 ) {
4786 filter = new TreeSet<String>();
4787 filter.add( "UIM" );
4791 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4794 HmmPfamOutputParser.FilterType.NEGATIVE_DOMAIN );
4795 parser.setEValueMaximum( 0.2 );
4796 parser.setIgnoreDufs( true );
4797 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4799 proteins = parser.parse();
4800 if ( parser.getDomainsIgnoredDueToNegativeDomainFilter() != 7 ) {
4803 if ( proteins.size() != 3 ) {
4807 filter = new TreeSet<String>();
4808 filter.add( "UIM" );
4811 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4814 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4815 parser.setEValueMaximum( 0.2 );
4816 parser.setIgnoreDufs( true );
4817 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4819 proteins = parser.parse();
4820 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4823 if ( proteins.size() != 0 ) {
4827 filter = new TreeSet<String>();
4828 filter.add( "UIM" );
4829 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4832 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4833 parser.setEValueMaximum( 0.2 );
4834 parser.setIgnoreDufs( true );
4835 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4837 proteins = parser.parse();
4838 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4841 if ( parser.getProteinsStored() != 3 ) {
4844 if ( proteins.size() != 3 ) {
4848 filter = new TreeSet<String>();
4849 filter.add( "UIM" );
4850 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4853 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4854 parser.setEValueMaximum( 0.2 );
4855 parser.setIgnoreDufs( true );
4856 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4858 proteins = parser.parse();
4859 if ( parser.getProteinsIgnoredDueToFilter() != 3 ) {
4862 if ( parser.getProteinsStored() != 1 ) {
4865 if ( proteins.size() != 1 ) {
4869 filter = new TreeSet<String>();
4872 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4875 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4876 parser.setEValueMaximum( 0.2 );
4877 parser.setIgnoreDufs( true );
4878 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4880 proteins = parser.parse();
4881 if ( parser.getDomainsEncountered() != 11 ) {
4884 if ( parser.getProteinsEncountered() != 4 ) {
4887 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4890 if ( parser.getProteinsStored() != 3 ) {
4893 if ( proteins.size() != 3 ) {
4897 catch ( final Exception e ) {
4898 e.printStackTrace( System.out );
4904 private static boolean testParsimony() {
4906 final BinaryStates X = BinaryStates.PRESENT;
4907 final BinaryStates O = BinaryStates.ABSENT;
4908 final GainLossStates G = GainLossStates.GAIN;
4909 final GainLossStates L = GainLossStates.LOSS;
4910 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
4911 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
4912 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4913 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4914 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4915 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4916 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4917 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4918 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4919 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4920 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4921 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4922 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4923 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4924 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4925 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4926 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4927 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4928 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4929 // 1 a-a a-b a-c e-f-g-h l-m
4930 // 2 a-b a-c e-f-g-i n-o
4931 // 3 a-b a-d e-f-g-j p-q
4933 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
4934 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
4935 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
4937 // 1 a b c e f g h l m
4938 // 2 a b c e f g i n o
4939 // 3 a b d e f g j p q
4941 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
4942 aa1.addProteinDomain( a );
4943 aa1.addProteinDomain( a );
4944 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
4945 ab1.addProteinDomain( a );
4946 ab1.addProteinDomain( b );
4947 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
4948 ac1.addProteinDomain( a );
4949 ac1.addProteinDomain( c );
4950 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
4951 efgh1.addProteinDomain( e );
4952 efgh1.addProteinDomain( f );
4953 efgh1.addProteinDomain( g );
4954 efgh1.addProteinDomain( h );
4955 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
4956 lm1.addProteinDomain( l );
4957 lm1.addProteinDomain( m );
4958 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
4959 ab2.addProteinDomain( a );
4960 ab2.addProteinDomain( b );
4961 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
4962 ac2.addProteinDomain( a );
4963 ac2.addProteinDomain( c );
4964 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
4965 efgi2.addProteinDomain( e );
4966 efgi2.addProteinDomain( f );
4967 efgi2.addProteinDomain( g );
4968 efgi2.addProteinDomain( i );
4969 final Protein no2 = new BasicProtein( "no2", "two", 0 );
4970 no2.addProteinDomain( n );
4971 no2.addProteinDomain( o );
4972 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
4973 ab3.addProteinDomain( a );
4974 ab3.addProteinDomain( b );
4975 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
4976 ad3.addProteinDomain( a );
4977 ad3.addProteinDomain( d );
4978 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
4979 efgj3.addProteinDomain( e );
4980 efgj3.addProteinDomain( f );
4981 efgj3.addProteinDomain( g );
4982 efgj3.addProteinDomain( j );
4983 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
4984 pq3.addProteinDomain( p );
4985 pq3.addProteinDomain( q );
4986 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
4987 ab4.addProteinDomain( a );
4988 ab4.addProteinDomain( b );
4989 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
4990 ad4.addProteinDomain( a );
4991 ad4.addProteinDomain( d );
4992 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
4993 pr4.addProteinDomain( p );
4994 pr4.addProteinDomain( r );
4995 final List<Protein> one_list = new ArrayList<Protein>();
4996 one_list.add( aa1 );
4997 one_list.add( ab1 );
4998 one_list.add( ac1 );
4999 one_list.add( efgh1 );
5000 one_list.add( lm1 );
5001 final List<Protein> two_list = new ArrayList<Protein>();
5002 two_list.add( ab2 );
5003 two_list.add( ac2 );
5004 two_list.add( efgi2 );
5005 two_list.add( no2 );
5006 final List<Protein> three_list = new ArrayList<Protein>();
5007 three_list.add( ab3 );
5008 three_list.add( ad3 );
5009 three_list.add( efgj3 );
5010 three_list.add( pq3 );
5011 final List<Protein> four_list = new ArrayList<Protein>();
5012 four_list.add( ab4 );
5013 four_list.add( ad4 );
5014 four_list.add( pr4 );
5015 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5016 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5017 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5018 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5019 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5020 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5021 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5022 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5023 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5024 gwcd_list.add( one );
5025 gwcd_list.add( two );
5026 gwcd_list.add( three );
5027 gwcd_list.add( four );
5028 final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
5029 .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
5030 final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
5031 .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
5032 // 1 a b c e f g h l m
5033 // 2 a b c e f g i n o
5034 // 3 a b d e f g j p q
5036 if ( matrix_d.getState( 0, 0 ) != X ) {
5039 if ( matrix_d.getState( 0, 1 ) != X ) {
5042 if ( matrix_d.getState( 0, 2 ) != X ) {
5045 if ( matrix_d.getState( 0, 3 ) != O ) {
5048 if ( matrix_d.getState( 0, 4 ) != X ) {
5051 if ( matrix_d.getState( 0, 5 ) != X ) {
5054 if ( matrix_d.getState( 0, 6 ) != X ) {
5057 if ( matrix_d.getState( 0, 7 ) != X ) {
5060 if ( matrix_d.getState( 0, 8 ) != O ) {
5063 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5064 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5065 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5067 if ( matrix_bc.getState( 0, 0 ) != X ) {
5070 if ( matrix_bc.getState( 0, 1 ) != X ) {
5073 if ( matrix_bc.getState( 0, 2 ) != X ) {
5076 if ( matrix_bc.getState( 0, 3 ) != O ) {
5079 if ( matrix_bc.getState( 0, 4 ) != X ) {
5082 if ( matrix_bc.getState( 1, 0 ) != O ) {
5085 if ( matrix_bc.getState( 1, 1 ) != X ) {
5088 if ( matrix_bc.getState( 1, 2 ) != X ) {
5091 if ( matrix_bc.getState( 1, 3 ) != O ) {
5094 if ( matrix_bc.getState( 1, 4 ) != X ) {
5097 if ( matrix_bc.getState( 2, 0 ) != O ) {
5100 if ( matrix_bc.getState( 2, 1 ) != X ) {
5103 if ( matrix_bc.getState( 2, 2 ) != O ) {
5106 if ( matrix_bc.getState( 2, 3 ) != X ) {
5109 if ( matrix_bc.getState( 2, 4 ) != X ) {
5112 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5113 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5114 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5115 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list );
5116 dp0.executeDolloParsimonyOnDomainPresence();
5117 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5118 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5119 dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
5120 final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
5121 final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
5122 if ( is_matrix_d.getState( "root", "A" ) != X ) {
5125 if ( is_matrix_d.getState( "root", "B" ) != X ) {
5128 if ( is_matrix_d.getState( "root", "C" ) != O ) {
5131 if ( is_matrix_d.getState( "root", "D" ) != O ) {
5134 if ( is_matrix_d.getState( "root", "E" ) != X ) {
5137 if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
5140 if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
5143 if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
5146 if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
5149 if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
5152 if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
5155 if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
5158 if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
5161 if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
5164 if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
5167 if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
5170 if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
5173 if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
5176 if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
5180 catch ( final Exception e ) {
5181 e.printStackTrace( System.out );
5187 private static boolean testParsimonyOnSecondaryFeatures() {
5189 final BinaryStates X = BinaryStates.PRESENT;
5190 final BinaryStates O = BinaryStates.ABSENT;
5191 final GainLossStates G = GainLossStates.GAIN;
5192 final GainLossStates L = GainLossStates.LOSS;
5193 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
5194 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
5195 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5196 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5197 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5198 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5199 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5200 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5201 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5202 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5203 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5204 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5205 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5206 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5207 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5208 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5209 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5210 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5211 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5212 // 1 a-a a-b a-c e-f-g-h l-m
5213 // 2 a-b a-c e-f-g-i n-o
5214 // 3 a-b a-d e-f-g-j p-q
5216 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5217 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5218 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5220 // 1 a b c e f g h l m
5221 // 2 a b c e f g i n o
5222 // 3 a b d e f g j p q
5224 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
5225 aa1.addProteinDomain( a );
5226 aa1.addProteinDomain( a );
5227 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
5228 ab1.addProteinDomain( a );
5229 ab1.addProteinDomain( b );
5230 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
5231 ac1.addProteinDomain( a );
5232 ac1.addProteinDomain( c );
5233 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
5234 efgh1.addProteinDomain( e );
5235 efgh1.addProteinDomain( f );
5236 efgh1.addProteinDomain( g );
5237 efgh1.addProteinDomain( h );
5238 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
5239 lm1.addProteinDomain( l );
5240 lm1.addProteinDomain( m );
5241 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
5242 ab2.addProteinDomain( a );
5243 ab2.addProteinDomain( b );
5244 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
5245 ac2.addProteinDomain( a );
5246 ac2.addProteinDomain( c );
5247 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
5248 efgi2.addProteinDomain( e );
5249 efgi2.addProteinDomain( f );
5250 efgi2.addProteinDomain( g );
5251 efgi2.addProteinDomain( i );
5252 final Protein no2 = new BasicProtein( "no2", "two", 0 );
5253 no2.addProteinDomain( n );
5254 no2.addProteinDomain( o );
5255 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
5256 ab3.addProteinDomain( a );
5257 ab3.addProteinDomain( b );
5258 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
5259 ad3.addProteinDomain( a );
5260 ad3.addProteinDomain( d );
5261 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
5262 efgj3.addProteinDomain( e );
5263 efgj3.addProteinDomain( f );
5264 efgj3.addProteinDomain( g );
5265 efgj3.addProteinDomain( j );
5266 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
5267 pq3.addProteinDomain( p );
5268 pq3.addProteinDomain( q );
5269 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
5270 ab4.addProteinDomain( a );
5271 ab4.addProteinDomain( b );
5272 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
5273 ad4.addProteinDomain( a );
5274 ad4.addProteinDomain( d );
5275 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
5276 pr4.addProteinDomain( p );
5277 pr4.addProteinDomain( r );
5278 final List<Protein> one_list = new ArrayList<Protein>();
5279 one_list.add( aa1 );
5280 one_list.add( ab1 );
5281 one_list.add( ac1 );
5282 one_list.add( efgh1 );
5283 one_list.add( lm1 );
5284 final List<Protein> two_list = new ArrayList<Protein>();
5285 two_list.add( ab2 );
5286 two_list.add( ac2 );
5287 two_list.add( efgi2 );
5288 two_list.add( no2 );
5289 final List<Protein> three_list = new ArrayList<Protein>();
5290 three_list.add( ab3 );
5291 three_list.add( ad3 );
5292 three_list.add( efgj3 );
5293 three_list.add( pq3 );
5294 final List<Protein> four_list = new ArrayList<Protein>();
5295 four_list.add( ab4 );
5296 four_list.add( ad4 );
5297 four_list.add( pr4 );
5298 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5299 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5300 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5301 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5302 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5303 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5304 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5305 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5306 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5307 gwcd_list.add( one );
5308 gwcd_list.add( two );
5309 gwcd_list.add( three );
5310 gwcd_list.add( four );
5311 final Map<String, Set<String>> map_same = new HashMap<String, Set<String>>();
5312 final HashSet<String> a_s = new HashSet<String>();
5314 final HashSet<String> b_s = new HashSet<String>();
5316 final HashSet<String> c_s = new HashSet<String>();
5318 final HashSet<String> d_s = new HashSet<String>();
5320 final HashSet<String> e_s = new HashSet<String>();
5322 final HashSet<String> f_s = new HashSet<String>();
5324 final HashSet<String> g_s = new HashSet<String>();
5326 final HashSet<String> h_s = new HashSet<String>();
5328 final HashSet<String> i_s = new HashSet<String>();
5330 final HashSet<String> j_s = new HashSet<String>();
5332 final HashSet<String> l_s = new HashSet<String>();
5334 final HashSet<String> m_s = new HashSet<String>();
5336 final HashSet<String> n_s = new HashSet<String>();
5338 final HashSet<String> o_s = new HashSet<String>();
5340 final HashSet<String> p_s = new HashSet<String>();
5342 final HashSet<String> q_s = new HashSet<String>();
5344 final HashSet<String> r_s = new HashSet<String>();
5346 map_same.put( a.getDomainId(), a_s );
5347 map_same.put( b.getDomainId(), b_s );
5348 map_same.put( c.getDomainId(), c_s );
5349 map_same.put( d.getDomainId(), d_s );
5350 map_same.put( e.getDomainId(), e_s );
5351 map_same.put( f.getDomainId(), f_s );
5352 map_same.put( g.getDomainId(), g_s );
5353 map_same.put( h.getDomainId(), h_s );
5354 map_same.put( i.getDomainId(), i_s );
5355 map_same.put( j.getDomainId(), j_s );
5356 map_same.put( l.getDomainId(), l_s );
5357 map_same.put( m.getDomainId(), m_s );
5358 map_same.put( n.getDomainId(), n_s );
5359 map_same.put( o.getDomainId(), o_s );
5360 map_same.put( p.getDomainId(), p_s );
5361 map_same.put( q.getDomainId(), q_s );
5362 map_same.put( r.getDomainId(), r_s );
5363 final CharacterStateMatrix<BinaryStates> matrix_s = DomainParsimonyCalculator
5364 .createMatrixOfSecondaryFeaturePresenceOrAbsence( gwcd_list, map_same, null );
5365 // 1 a b c e f g h l m
5366 // 2 a b c e f g i n o
5367 // 3 a b d e f g j p q
5369 if ( matrix_s.getState( 0, 0 ) != X ) {
5372 if ( matrix_s.getState( 0, 1 ) != X ) {
5375 if ( matrix_s.getState( 0, 2 ) != X ) {
5378 if ( matrix_s.getState( 0, 3 ) != O ) {
5381 if ( matrix_s.getState( 0, 4 ) != X ) {
5384 if ( matrix_s.getState( 0, 5 ) != X ) {
5387 if ( matrix_s.getState( 0, 6 ) != X ) {
5390 if ( matrix_s.getState( 0, 7 ) != X ) {
5393 if ( matrix_s.getState( 0, 8 ) != O ) {
5396 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5397 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5398 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5399 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list, map_same );
5400 dp0.executeDolloParsimonyOnSecondaryFeatures( null );
5401 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5402 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5403 if ( is_matrix_d.getState( "root", "AAA" ) != X ) {
5406 if ( is_matrix_d.getState( "root", "BBB" ) != X ) {
5409 if ( is_matrix_d.getState( "root", "CCC" ) != O ) {
5412 if ( is_matrix_d.getState( "root", "DDD" ) != O ) {
5415 if ( is_matrix_d.getState( "root", "EEE" ) != X ) {
5418 if ( gl_matrix_d.getState( "3-4", "PPP" ) != G ) {
5422 catch ( final Exception e ) {
5423 e.printStackTrace( System.out );