3 // FORESTER -- software libraries and applications
4 // for evolutionary biology research and applications.
6 // Copyright (C) 2008-2009 Christian M. Zmasek
7 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU Lesser General Public
12 // License as published by the Free Software Foundation; either
13 // version 2.1 of the License, or (at your option) any later version.
15 // This library is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 // Contact: phylosoft @ gmail . com
25 // WWW: https://sites.google.com/site/cmzmasek/home/software/forester
27 package org.forester.surfacing;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.HashSet;
33 import java.util.Iterator;
34 import java.util.List;
37 import java.util.SortedSet;
38 import java.util.TreeSet;
40 import org.forester.evoinference.matrix.character.BasicCharacterStateMatrix;
41 import org.forester.evoinference.matrix.character.CharacterStateMatrix;
42 import org.forester.evoinference.matrix.character.CharacterStateMatrix.BinaryStates;
43 import org.forester.evoinference.matrix.character.CharacterStateMatrix.GainLossStates;
44 import org.forester.io.parsers.HmmPfamOutputParser;
45 import org.forester.io.parsers.nexus.PaupLogParser;
46 import org.forester.io.parsers.nhx.NHXParser;
47 import org.forester.phylogeny.Phylogeny;
48 import org.forester.phylogeny.PhylogenyNode;
49 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
50 import org.forester.phylogeny.factories.PhylogenyFactory;
51 import org.forester.protein.BasicDomain;
52 import org.forester.protein.BasicProtein;
53 import org.forester.protein.BinaryDomainCombination;
54 import org.forester.protein.BinaryDomainCombination.DomainCombinationType;
55 import org.forester.protein.Domain;
56 import org.forester.protein.Protein;
57 import org.forester.protein.ProteinId;
58 import org.forester.species.BasicSpecies;
59 import org.forester.species.Species;
60 import org.forester.util.ForesterUtil;
62 @SuppressWarnings( "unused")
63 public class TestSurfacing {
65 private final static double ZERO_DIFF = 1.0E-9;
67 public static boolean isEqual( final double a, final double b ) {
68 return ( ( Math.abs( a - b ) ) < TestSurfacing.ZERO_DIFF );
71 public static boolean test( final File test_dir ) {
72 System.out.print( " Combinable domains: " );
73 if ( !TestSurfacing.testCombinableDomains() ) {
74 System.out.println( "failed." );
77 System.out.println( "OK." );
78 System.out.print( " Directed combinable domains: " );
79 if ( !TestSurfacing.testDirectedCombinableDomains() ) {
80 System.out.println( "failed." );
83 System.out.println( "OK." );
84 System.out.print( " Genome wide specific combinable domains: " );
85 if ( !TestSurfacing.testGenomeWideCombinableDomains() ) {
86 System.out.println( "failed." );
89 System.out.println( "OK." );
90 System.out.print( " Domain architecture based genome similarity calculator: " );
91 if ( !TestSurfacing.testDomainArchitectureBasedGenomeSimilarityCalculator() ) {
92 System.out.println( "failed." );
95 System.out.println( "OK." );
96 System.out.print( " Hmmpfam output parser: " );
97 if ( !TestSurfacing.testHmmPfamOutputParser( test_dir ) ) {
98 System.out.println( "failed." );
101 System.out.println( "OK." );
102 System.out.print( " Hmmpfam output parser with filter: " );
103 if ( !TestSurfacing.testHmmPfamOutputParserWithFilter( test_dir ) ) {
104 System.out.println( "failed." );
107 System.out.println( "OK." );
108 System.out.print( " Combinations based pairwise similarity calculator: " );
109 if ( !TestSurfacing.testCombinationsBasedPairwiseSimilarityCalculator() ) {
110 System.out.println( "failed." );
113 System.out.println( "OK." );
114 System.out.print( " Copy number based pairwise similarity calculator: " );
115 if ( !TestSurfacing.testCopyNumberBasedPairwiseSimilarityCalculator() ) {
118 System.out.println( "OK." );
119 System.out.print( " Domain combination counting: " );
120 if ( !TestSurfacing.testDomainCombinationCounting( test_dir ) ) {
121 System.out.println( "failed." );
124 System.out.println( "OK." );
125 System.out.print( " Basic domain similarity calculator: " );
126 if ( !TestSurfacing.testBasicDomainSimilarityCalculator() ) {
127 System.out.println( "failed." );
130 System.out.println( "OK." );
131 System.out.print( " Basic domain similarity calculator not ignoring species specific domains: " );
132 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() ) {
133 System.out.println( "failed." );
136 System.out.println( "OK." );
137 System.out.print( " Basic domain similarity calculator removal of singles: " );
138 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorRemovalOfSingles() ) {
139 System.out.println( "failed." );
142 System.out.println( "OK." );
143 System.out.print( " Domain sorting: " );
144 if ( !TestSurfacing.testDomainSorting() ) {
145 System.out.println( "failed." );
148 System.out.println( "OK." );
149 System.out.print( " Binary domain combination: " );
150 if ( !TestSurfacing.testBinaryDomainCombination() ) {
151 System.out.println( "failed." );
154 System.out.println( "OK." );
155 System.out.print( " Parsimony: " );
156 if ( !TestSurfacing.testParsimony() ) {
157 System.out.println( "failed." );
160 System.out.println( "OK." );
161 System.out.print( " Directedness: " );
162 if ( !TestSurfacing.testDirectedness() ) {
163 System.out.println( "failed." );
166 System.out.println( "OK." );
167 System.out.print( " Directedness and adjacency: " );
168 if ( !TestSurfacing.testDirectednessAndAdjacency() ) {
169 System.out.println( "failed." );
172 System.out.println( "OK." );
173 System.out.print( " Dollo parsimony on secodary features: " );
174 if ( !TestSurfacing.testParsimonyOnSecondaryFeatures() ) {
175 System.out.println( "failed." );
178 System.out.println( "OK." );
179 System.out.print( " Paup log parser: " );
180 if ( !TestSurfacing.testPaupLogParser( test_dir ) ) {
181 System.out.println( "failed." );
184 System.out.println( "OK." );
185 System.out.print( " Binary state matrix to gain loss matrix: " );
186 if ( !TestSurfacing.testBinaryStateMatrixToGainLossMatrix( test_dir ) ) {
187 System.out.println( "failed." );
190 System.out.println( "OK." );
194 private static StringBuffer mapToStringBuffer( final Map<PhylogenyNode, CharacterStateMatrix.BinaryStates> map ) {
195 final StringBuffer sb = new StringBuffer();
196 for( final PhylogenyNode key : map.keySet() ) {
197 if ( !key.isExternal() ) {
198 sb.append( key.getName() );
200 sb.append( map.get( key ).toString() );
201 sb.append( ForesterUtil.getLineSeparator() );
207 private static boolean testBasicDomainSimilarityCalculator() {
215 // m 2/(2+3) 0 4/(4+2)
220 // mean = ( 2/5 + 0 + 2/3 + 1/5 + 1/2 + 2/7 ) / 6
240 // m - 2/(2+3) 4/(4+2)
244 // mean = (2/5 + 2/3 + 1/2)/3 =
250 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
251 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
252 final Domain C = new BasicDomain( "C", 1, 2, ( short ) 1, ( short ) 1, 0.3, -12 );
253 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
254 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
255 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
256 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
257 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
258 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
259 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
260 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
261 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
262 mouse_1.addProteinDomain( A );
263 mouse_1.addProteinDomain( B );
264 mouse_1.addProteinDomain( C );
265 mouse_1.addProteinDomain( D );
266 mouse_1.addProteinDomain( E );
267 rabbit_1.addProteinDomain( A );
268 rabbit_1.addProteinDomain( C );
269 rabbit_1.addProteinDomain( E );
270 rabbit_1.addProteinDomain( F );
271 rabbit_1.addProteinDomain( F );
272 rabbit_1.addProteinDomain( F );
273 rabbit_1.addProteinDomain( F );
274 rabbit_1.addProteinDomain( F );
275 rabbit_1.addProteinDomain( F );
276 ciona_1.addProteinDomain( A );
277 ciona_1.addProteinDomain( A );
278 ciona_1.addProteinDomain( A );
279 ciona_1.addProteinDomain( A );
280 ciona_1.addProteinDomain( A );
281 ciona_1.addProteinDomain( F );
282 ciona_1.addProteinDomain( G );
283 ciona_1.addProteinDomain( X );
284 nemve_1.addProteinDomain( A );
285 nemve_1.addProteinDomain( B );
286 nemve_1.addProteinDomain( C );
287 nemve_1.addProteinDomain( D );
288 nemve_1.addProteinDomain( E );
289 nemve_1.addProteinDomain( F );
290 nemve_1.addProteinDomain( G );
291 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
292 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
293 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
294 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
295 protein_list_mouse.add( mouse_1 );
296 protein_list_rabbit.add( rabbit_1 );
297 protein_list_ciona.add( ciona_1 );
298 protein_list_nemve.add( nemve_1 );
299 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
300 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
302 new BasicSpecies( "mouse" ) ) );
303 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
305 new BasicSpecies( "rabbit" ) ) );
306 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
308 new BasicSpecies( "ciona" ) ) );
309 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
311 new BasicSpecies( "nemve" ) ) );
312 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
316 final SortedSet<DomainSimilarity> sims = calc
317 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
321 final Iterator<DomainSimilarity> sims_it = sims.iterator();
322 final DomainSimilarity sa = sims_it.next();
323 if ( !sa.getDomainId().equals( "A" ) ) {
326 if ( sa.getSpeciesData().size() != 4 ) {
329 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
332 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
335 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
338 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
341 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 5 )
342 + ( 1.0 / 2 ) + ( 2.0 / 7 ) ) / 6 ) ) {
345 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), ( 0.23410788192183737 ) ) ) {
348 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
351 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
354 if ( sa.getN() != 6 ) {
357 if ( sa.getMaximalDifference() != 7 ) {
360 if ( sa.getMaximalDifferenceInCounts() != 3 ) {
363 final DomainSimilarity sb = sims_it.next();
364 if ( !sb.getDomainId().equals( "B" ) ) {
367 if ( sb.getSpeciesData().size() != 2 ) {
370 if ( !sb.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
373 if ( !sb.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
376 if ( !TestSurfacing.isEqual( sb.getMeanSimilarityScore(), 2.0 / 3 ) ) {
379 if ( !TestSurfacing.isEqual( sb.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
382 if ( !TestSurfacing.isEqual( sb.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
385 if ( !TestSurfacing.isEqual( sb.getMinimalSimilarityScore(), ( 2.0 / 3 ) ) ) {
388 if ( sb.getN() != 1 ) {
391 if ( sb.getMaximalDifference() != 2 ) {
394 if ( sb.getMaximalDifferenceInCounts() != 2 ) {
397 final DomainSimilarity sc = sims_it.next();
398 if ( !sc.getDomainId().equals( "C" ) ) {
401 if ( sc.getSpeciesData().size() != 3 ) {
404 if ( !sc.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
407 if ( !sc.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
410 if ( !sc.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
413 if ( !TestSurfacing.isEqual( sc.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + ( 2.0 / 3 ) + ( 1.0 / 2 ) ) / 3 ) ) {
416 if ( !TestSurfacing.isEqual( sc.getStandardDeviationOfSimilarityScore(), 0.13471506281091264 ) ) {
419 if ( !TestSurfacing.isEqual( sc.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
422 if ( !TestSurfacing.isEqual( sc.getMinimalSimilarityScore(), ( 2.0 / 5 ) ) ) {
425 if ( sc.getN() != 3 ) {
428 if ( sc.getMaximalDifference() != 3 ) {
431 if ( sc.getMaximalDifferenceInCounts() != 3 ) {
434 // mouse : ....ABCDE.....
435 // rabbit: ....A.C.EFFF..
436 // ciona : AAAAA......FGX
437 // nemve : ....ABCDEFG...
441 // m 2/(2+3) 0 4/(4+2)
442 // r - 1/(1+5) 3/(3+3)
446 // mean = ( 2/5 + 0 + 2/3 + 1/6 + 1/2 + 2/8 ) / 6
450 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
451 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
453 new BasicSpecies( "mouse" ) ) );
454 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
456 new BasicSpecies( "rabbit" ) ) );
457 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
459 new BasicSpecies( "ciona" ) ) );
460 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
462 new BasicSpecies( "nemve" ) ) );
463 final DomainSimilarityCalculator calc2 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
467 final SortedSet<DomainSimilarity> sims2 = calc2
468 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
472 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
473 final DomainSimilarity sa2 = sims_it2.next();
474 if ( !sa2.getDomainId().equals( "A" ) ) {
477 if ( sa2.getSpeciesData().size() != 4 ) {
480 if ( !sa2.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
483 if ( !sa2.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
486 if ( !sa2.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
489 if ( !sa2.getSpeciesData().keySet().contains( new BasicSpecies( "rabbit" ) ) ) {
492 if ( !TestSurfacing.isEqual( sa2.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 6 )
493 + ( 1.0 / 2 ) + ( 2.0 / 8 ) ) / 6 ) ) {
496 if ( !TestSurfacing.isEqual( sa2.getStandardDeviationOfSimilarityScore(), ( 0.2404663678647683 ) ) ) {
499 if ( !TestSurfacing.isEqual( sa2.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
502 if ( !TestSurfacing.isEqual( sa2.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
505 if ( sa2.getN() != 6 ) {
508 if ( sa2.getMaximalDifference() != 8 ) {
511 if ( sa2.getMaximalDifferenceInCounts() != 3 ) {
514 final Protein ciona_2 = new BasicProtein( "2", "ciona", 0 );
515 ciona_2.addProteinDomain( A );
516 ciona_2.addProteinDomain( A );
517 ciona_2.addProteinDomain( A );
518 ciona_2.addProteinDomain( B );
519 ciona_2.addProteinDomain( B );
520 ciona_2.addProteinDomain( B );
521 ciona_2.addProteinDomain( F );
522 ciona_2.addProteinDomain( F );
523 ciona_2.addProteinDomain( F );
524 ciona_2.addProteinDomain( F );
525 ciona_2.addProteinDomain( G );
526 ciona_2.addProteinDomain( X );
527 final Protein ciona_3 = new BasicProtein( "3", "ciona", 0 );
528 ciona_3.addProteinDomain( A );
529 ciona_3.addProteinDomain( A );
530 ciona_3.addProteinDomain( A );
531 ciona_3.addProteinDomain( A );
532 ciona_3.addProteinDomain( B );
533 ciona_3.addProteinDomain( B );
534 ciona_3.addProteinDomain( X );
535 ciona_3.addProteinDomain( X );
536 protein_list_ciona.add( ciona_2 );
537 protein_list_ciona.add( ciona_3 );
538 final List<GenomeWideCombinableDomains> cdc_list3 = new ArrayList<GenomeWideCombinableDomains>();
539 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
541 new BasicSpecies( "mouse" ) ) );
542 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
544 new BasicSpecies( "rabbit" ) ) );
545 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
547 new BasicSpecies( "ciona" ) ) );
548 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
550 new BasicSpecies( "nemve" ) ) );
551 final DomainSimilarityCalculator calc3 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
555 final SortedSet<DomainSimilarity> sims3 = calc3
556 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
560 final Iterator<DomainSimilarity> sims_it3 = sims3.iterator();
561 final DomainSimilarity sa3 = sims_it3.next();
562 if ( !sa3.getDomainId().equals( "A" ) ) {
565 final SpeciesSpecificDcData ssdsd = sa3.getSpeciesData().get( new BasicSpecies( "ciona" ) );
566 if ( ssdsd.getCombinableDomainIdToCountsMap().size() != 4 ) {
569 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
572 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
575 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
578 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
581 final List<GenomeWideCombinableDomains> cdc_list4 = new ArrayList<GenomeWideCombinableDomains>();
582 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
584 new BasicSpecies( "mouse" ) ) );
585 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
587 new BasicSpecies( "rabbit" ) ) );
588 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
590 new BasicSpecies( "ciona" ) ) );
592 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
594 new BasicSpecies( "nemve" ) ) );
595 final DomainSimilarityCalculator calc4 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
599 final SortedSet<DomainSimilarity> sims4 = calc4
600 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
604 final Iterator<DomainSimilarity> sims_it4 = sims4.iterator();
605 final DomainSimilarity sa4 = sims_it4.next();
606 if ( !sa4.getDomainId().equals( "A" ) ) {
609 final SpeciesSpecificDcData ssdsd4 = sa4.getSpeciesData().get( new BasicSpecies( "ciona" ) );
610 if ( ssdsd4.getCombinableDomainIdToCountsMap().size() != 5 ) {
613 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "A" ) != 3 ) {
616 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
619 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
622 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
625 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
628 final SortedSet<DomainSimilarity> sims4_d = calc4
629 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list4, false, true );
630 final Iterator<DomainSimilarity> sims_it4_d = sims4_d.iterator();
631 final DomainSimilarity sa4_d = sims_it4_d.next();
632 if ( !sa4_d.getDomainId().equals( "A" ) ) {
635 if ( sa4_d.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
639 .isEqual( sa4_d.getMeanSimilarityScore(),
640 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
643 if ( !TestSurfacing.isEqual( sa4_d.getMaximalSimilarityScore(), 1.0 ) ) {
646 if ( !TestSurfacing.isEqual( sa4_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
649 if ( sa4_d.getN() != 6 ) {
652 final SortedSet<DomainSimilarity> sims4_p = calc4
653 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
657 final Iterator<DomainSimilarity> sims_it4_p = sims4_p.iterator();
658 final DomainSimilarity sa4_p = sims_it4_p.next();
659 if ( !sa4_p.getDomainId().equals( "A" ) ) {
662 if ( sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
665 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "A" ) ) {
668 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "B" ) ) {
671 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "F" ) ) {
674 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "G" ) ) {
677 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "X" ) ) {
681 .isEqual( sa4_p.getMeanSimilarityScore(),
682 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
685 if ( !TestSurfacing.isEqual( sa4_p.getMaximalSimilarityScore(), 1 ) ) {
688 if ( !TestSurfacing.isEqual( sa4_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
691 if ( sa4_p.getN() != 6 ) {
694 final List<GenomeWideCombinableDomains> cdc_list5 = new ArrayList<GenomeWideCombinableDomains>();
695 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
697 new BasicSpecies( "mouse" ) ) );
698 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
700 new BasicSpecies( "rabbit" ) ) );
701 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
703 new BasicSpecies( "ciona" ) ) );
704 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
706 new BasicSpecies( "nemve" ) ) );
707 final SortedSet<DomainSimilarity> sims5_d = calc4
708 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list5, false, true );
709 final Iterator<DomainSimilarity> sims_it5_d = sims5_d.iterator();
710 final DomainSimilarity sa5_d = sims_it5_d.next();
711 if ( sa5_d.getSpecies().size() != 4 ) {
714 if ( !sa5_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
717 final SpeciesSpecificDcData ssdsd5 = sa5_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
718 if ( ssdsd5.getCombinableDomainIdToCountsMap().size() != 4 ) {
721 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
724 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
727 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
730 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
733 if ( !sa5_d.getDomainId().equals( "A" ) ) {
736 final Species ciona = new BasicSpecies( "ciona" );
737 if ( sa5_d.getCombinableDomainIds( ciona ).size() != 4 ) {
740 if ( sa5_d.getCombinableDomainIds( ciona ).contains( "A" ) ) {
743 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "B" ) ) {
746 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "F" ) ) {
749 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "G" ) ) {
752 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "X" ) ) {
756 .isEqual( sa5_d.getMeanSimilarityScore(),
757 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
760 if ( !TestSurfacing.isEqual( sa5_d.getMaximalSimilarityScore(), 1.0 ) ) {
763 if ( !TestSurfacing.isEqual( sa5_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
766 if ( sa5_d.getN() != 6 ) {
769 if ( sa5_d.getMaximalDifference() != sa5_d.getMaximalDifferenceInCounts() ) {
772 if ( sa5_d.getMaximalDifference() != 11 ) {
775 if ( sa5_d.getMaximalDifferenceInCounts() != 11 ) {
778 final SortedSet<DomainSimilarity> sims5_p = calc4
779 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
783 final Iterator<DomainSimilarity> sims_it5_p = sims5_p.iterator();
784 final DomainSimilarity sa5_p = sims_it5_p.next();
785 if ( !sa5_p.getDomainId().equals( "A" ) ) {
788 if ( sa5_p.getCombinableDomainIds( ciona ).size() != 4 ) {
791 if ( sa5_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
794 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
797 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
800 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
803 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
807 .isEqual( sa5_p.getMeanSimilarityScore(),
808 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
811 if ( !TestSurfacing.isEqual( sa5_p.getMaximalSimilarityScore(), 1 ) ) {
814 if ( !TestSurfacing.isEqual( sa5_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
817 if ( sa5_p.getN() != 6 ) {
820 if ( sa5_p.getMaximalDifference() != sa5_p.getMaximalDifferenceInCounts() ) {
823 if ( sa5_p.getMaximalDifference() != 2 ) {
826 if ( sa5_p.getMaximalDifferenceInCounts() != 2 ) {
829 final List<GenomeWideCombinableDomains> cdc_list6 = new ArrayList<GenomeWideCombinableDomains>();
830 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
832 new BasicSpecies( "mouse" ) ) );
833 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
835 new BasicSpecies( "rabbit" ) ) );
836 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
838 new BasicSpecies( "ciona" ) ) );
839 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
841 new BasicSpecies( "nemve" ) ) );
842 final SortedSet<DomainSimilarity> sims6_d = calc4
843 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list6, false, true );
844 final Iterator<DomainSimilarity> sims_it6_d = sims6_d.iterator();
845 final DomainSimilarity sa6_d = sims_it6_d.next();
846 if ( sa6_d.getSpecies().size() != 4 ) {
849 if ( !sa6_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
852 final SpeciesSpecificDcData ssdsd6 = sa6_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
853 if ( ssdsd6.getCombinableDomainIdToCountsMap().size() != 5 ) {
856 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
859 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
862 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
865 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
868 if ( !sa5_d.getDomainId().equals( "A" ) ) {
871 final Species ciona6 = new BasicSpecies( "ciona" );
872 if ( sa6_d.getCombinableDomainIds( ciona6 ).size() != 5 ) {
875 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "A" ) ) {
878 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "B" ) ) {
881 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "F" ) ) {
884 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "G" ) ) {
887 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "X" ) ) {
891 .isEqual( sa6_d.getMeanSimilarityScore(),
892 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
895 if ( !TestSurfacing.isEqual( sa6_d.getMaximalSimilarityScore(), 1.0 ) ) {
898 if ( !TestSurfacing.isEqual( sa6_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
901 if ( sa6_d.getN() != 6 ) {
904 if ( sa6_d.getMaximalDifference() != sa6_d.getMaximalDifferenceInCounts() ) {
907 if ( sa6_d.getMaximalDifference() != 11 ) {
910 if ( sa6_d.getMaximalDifferenceInCounts() != 11 ) {
913 final SortedSet<DomainSimilarity> sims6_p = calc4
914 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
918 final Iterator<DomainSimilarity> sims_it6_p = sims6_p.iterator();
919 final DomainSimilarity sa6_p = sims_it6_p.next();
920 if ( !sa6_p.getDomainId().equals( "A" ) ) {
923 if ( sa6_p.getCombinableDomainIds( ciona ).size() != 5 ) {
926 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
929 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
932 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
935 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
938 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
942 .isEqual( sa6_p.getMeanSimilarityScore(),
943 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
946 if ( !TestSurfacing.isEqual( sa6_p.getMaximalSimilarityScore(), 1 ) ) {
949 if ( !TestSurfacing.isEqual( sa6_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
952 if ( sa6_p.getN() != 6 ) {
955 if ( sa6_p.getMaximalDifference() != sa6_p.getMaximalDifferenceInCounts() ) {
958 if ( sa6_p.getMaximalDifference() != 2 ) {
961 if ( sa6_p.getMaximalDifferenceInCounts() != 2 ) {
965 catch ( final Exception e ) {
966 e.printStackTrace( System.out );
972 private static boolean testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() {
974 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
975 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
976 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
977 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
978 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
979 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
980 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
981 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
982 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
983 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
984 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
985 mouse_1.addProteinDomain( A );
986 mouse_1.addProteinDomain( D );
987 mouse_1.addProteinDomain( E );
988 rabbit_1.addProteinDomain( B );
989 rabbit_1.addProteinDomain( E );
990 rabbit_1.addProteinDomain( F );
991 rabbit_1.addProteinDomain( F );
992 rabbit_1.addProteinDomain( F );
993 rabbit_1.addProteinDomain( F );
994 rabbit_1.addProteinDomain( F );
995 rabbit_1.addProteinDomain( F );
996 ciona_1.addProteinDomain( F );
997 ciona_1.addProteinDomain( G );
998 ciona_1.addProteinDomain( X );
999 nemve_1.addProteinDomain( D );
1000 nemve_1.addProteinDomain( E );
1001 nemve_1.addProteinDomain( F );
1002 nemve_1.addProteinDomain( G );
1003 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1004 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1005 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1006 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1007 protein_list_mouse.add( mouse_1 );
1008 protein_list_rabbit.add( rabbit_1 );
1009 protein_list_ciona.add( ciona_1 );
1010 protein_list_nemve.add( nemve_1 );
1011 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1012 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1014 new BasicSpecies( "mouse" ) ) );
1015 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1017 new BasicSpecies( "rabbit" ) ) );
1018 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1020 new BasicSpecies( "ciona" ) ) );
1021 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1023 new BasicSpecies( "nemve" ) ) );
1024 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1028 final SortedSet<DomainSimilarity> sims = calc
1029 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1033 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1034 final DomainSimilarity sa = sims_it.next();
1035 if ( !sa.getDomainId().equals( "A" ) ) {
1038 if ( sa.getSpeciesData().size() != 1 ) {
1041 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1044 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), 1.0 ) ) {
1047 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
1050 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), 1.0 ) ) {
1053 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), 1.0 ) ) {
1056 if ( sa.getN() != 0 ) {
1059 if ( sa.getMaximalDifference() != 0 ) {
1062 if ( sa.getMaximalDifferenceInCounts() != 0 ) {
1065 final DomainSimilarity sb = sims_it.next();
1066 if ( !sb.getDomainId().equals( "B" ) ) {
1069 if ( sb.getSpeciesData().size() != 1 ) {
1072 if ( !sb.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1075 final SortedSet<DomainSimilarity> sims2 = calc
1076 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1080 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
1081 final DomainSimilarity sa2 = sims_it2.next();
1082 if ( !sa2.getDomainId().equals( "D" ) ) {
1085 if ( sa2.getSpeciesData().size() != 2 ) {
1089 catch ( final Exception e ) {
1090 e.printStackTrace( System.out );
1096 private static boolean testBasicDomainSimilarityCalculatorRemovalOfSingles() {
1098 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
1099 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
1100 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
1101 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
1102 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
1103 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
1104 mouse_1.addProteinDomain( A );
1105 rabbit_1.addProteinDomain( A );
1106 ciona_1.addProteinDomain( A );
1107 ciona_1.addProteinDomain( A );
1108 ciona_1.addProteinDomain( A );
1109 ciona_1.addProteinDomain( A );
1110 ciona_1.addProteinDomain( A );
1111 nemve_1.addProteinDomain( A );
1112 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1113 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1114 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1115 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1116 protein_list_mouse.add( mouse_1 );
1117 protein_list_rabbit.add( rabbit_1 );
1118 protein_list_ciona.add( ciona_1 );
1119 protein_list_nemve.add( nemve_1 );
1120 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1121 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1123 new BasicSpecies( "mouse" ) ) );
1124 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1126 new BasicSpecies( "rabbit" ) ) );
1127 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1129 new BasicSpecies( "ciona" ) ) );
1130 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1132 new BasicSpecies( "nemve" ) ) );
1133 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1137 final SortedSet<DomainSimilarity> sims = calc
1138 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1142 if ( sims.size() != 1 ) {
1145 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1146 final DomainSimilarity sa = sims_it.next();
1147 if ( !sa.getDomainId().equals( "A" ) ) {
1150 if ( sa.getSpeciesData().size() != 4 ) {
1153 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
1156 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1159 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
1162 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1165 final SortedSet<DomainSimilarity> sims_ns = calc
1166 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1170 if ( sims_ns.size() != 0 ) {
1173 final Protein mouse_2 = new BasicProtein( "1", "mouse", 0 );
1174 final Protein rabbit_2 = new BasicProtein( "1", "rabbit", 0 );
1175 final Protein ciona_2 = new BasicProtein( "1", "ciona", 0 );
1176 final Protein nemve_2 = new BasicProtein( "1", "nemve", 0 );
1177 mouse_2.addProteinDomain( A );
1178 rabbit_2.addProteinDomain( A );
1179 ciona_2.addProteinDomain( A );
1180 ciona_2.addProteinDomain( A );
1181 ciona_2.addProteinDomain( B );
1182 ciona_2.addProteinDomain( A );
1183 ciona_2.addProteinDomain( A );
1184 ciona_2.addProteinDomain( A );
1185 nemve_2.addProteinDomain( A );
1186 final List<Protein> protein_list_mouse2 = new ArrayList<Protein>();
1187 final List<Protein> protein_list_rabbit2 = new ArrayList<Protein>();
1188 final List<Protein> protein_list_ciona2 = new ArrayList<Protein>();
1189 final List<Protein> protein_list_nemve2 = new ArrayList<Protein>();
1190 protein_list_mouse2.add( mouse_2 );
1191 protein_list_rabbit2.add( rabbit_2 );
1192 protein_list_ciona2.add( ciona_2 );
1193 protein_list_nemve2.add( nemve_2 );
1194 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
1195 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse2,
1197 new BasicSpecies( "mouse" ) ) );
1198 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit2,
1200 new BasicSpecies( "rabbit" ) ) );
1201 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona2,
1203 new BasicSpecies( "ciona" ) ) );
1204 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve2,
1206 new BasicSpecies( "nemve" ) ) );
1207 final SortedSet<DomainSimilarity> sims2 = calc
1208 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1212 if ( sims2.size() != 1 ) {
1216 catch ( final Exception e ) {
1217 e.printStackTrace( System.out );
1223 private static boolean testBinaryDomainCombination() {
1225 final BasicBinaryDomainCombination s0 = BasicBinaryDomainCombination.obtainInstance( "a", "a" );
1226 final BasicBinaryDomainCombination s1 = BasicBinaryDomainCombination.obtainInstance( "b", "a" );
1227 final BasicBinaryDomainCombination s2 = BasicBinaryDomainCombination.obtainInstance( "a", "b" );
1228 final BasicBinaryDomainCombination s3 = BasicBinaryDomainCombination.obtainInstance( "B", "A" );
1229 final BasicBinaryDomainCombination s4 = BasicBinaryDomainCombination.obtainInstance( "A", "B" );
1230 final BasicBinaryDomainCombination s5 = BasicBinaryDomainCombination.obtainInstance( "c", "a" );
1231 final BasicBinaryDomainCombination s6 = BasicBinaryDomainCombination.obtainInstance( "b", "c" );
1232 final BasicBinaryDomainCombination s7 = BasicBinaryDomainCombination.obtainInstance( "d", "a" );
1233 final BasicBinaryDomainCombination s8 = BasicBinaryDomainCombination.obtainInstance( "b", "d" );
1234 final BinaryDomainCombination s9 = BasicBinaryDomainCombination.obtainInstance( "z-z=a-aa" );
1235 if ( !s9.toString().equals( "a-aa=z-z" ) ) {
1236 System.out.println( s9.toString() );
1239 if ( !s0.equals( s0 ) ) {
1242 if ( s0.equals( s1 ) ) {
1245 if ( s1.equals( s0 ) ) {
1248 if ( !s1.equals( s2 ) ) {
1251 if ( !s2.equals( s1 ) ) {
1254 if ( s2.equals( s3 ) ) {
1257 if ( s2.equals( s3 ) ) {
1260 if ( s2.equals( s4 ) ) {
1263 final SortedSet<BasicBinaryDomainCombination> sorted = new TreeSet<BasicBinaryDomainCombination>();
1276 if ( sorted.size() != 7 ) {
1277 System.out.println( sorted.size() );
1280 final DirectedBinaryDomainCombination aa = DirectedBinaryDomainCombination.obtainInstance( "a", "a" );
1281 final DirectedBinaryDomainCombination ba = DirectedBinaryDomainCombination.obtainInstance( "b", "a" );
1282 final DirectedBinaryDomainCombination ab = DirectedBinaryDomainCombination.obtainInstance( "a", "b" );
1283 final DirectedBinaryDomainCombination bb = DirectedBinaryDomainCombination.obtainInstance( "b", "b" );
1284 if ( !aa.equals( aa ) ) {
1287 if ( aa.equals( bb ) ) {
1290 if ( ab.equals( ba ) ) {
1293 if ( ba.equals( ab ) ) {
1296 if ( !ab.equals( ab ) ) {
1299 if ( ab.equals( aa ) ) {
1302 if ( ab.equals( bb ) ) {
1306 catch ( final Exception e ) {
1307 e.printStackTrace( System.out );
1313 private static boolean testBinaryStateMatrixToGainLossMatrix( final File test_dir ) {
1314 final BinaryStates I = BinaryStates.PRESENT;
1315 final BinaryStates O = BinaryStates.ABSENT;
1317 final CharacterStateMatrix<BinaryStates> binary_states_matrix_0 = new BasicCharacterStateMatrix<BinaryStates>( 7,
1319 binary_states_matrix_0.setIdentifier( 0, "A" );
1320 binary_states_matrix_0.setIdentifier( 1, "B" );
1321 binary_states_matrix_0.setIdentifier( 2, "C" );
1322 binary_states_matrix_0.setIdentifier( 3, "D" );
1323 binary_states_matrix_0.setIdentifier( 4, "1" );
1324 binary_states_matrix_0.setIdentifier( 5, "2" );
1325 binary_states_matrix_0.setIdentifier( 6, "3" );
1326 binary_states_matrix_0.setState( 0, 0, O );
1327 binary_states_matrix_0.setState( 1, 0, O );
1328 binary_states_matrix_0.setState( 2, 0, O );
1329 binary_states_matrix_0.setState( 3, 0, O );
1330 binary_states_matrix_0.setState( 4, 0, O );
1331 binary_states_matrix_0.setState( 5, 0, O );
1332 binary_states_matrix_0.setState( 6, 0, O );
1333 binary_states_matrix_0.setState( 0, 1, I );
1334 binary_states_matrix_0.setState( 1, 1, O );
1335 binary_states_matrix_0.setState( 2, 1, O );
1336 binary_states_matrix_0.setState( 3, 1, O );
1337 binary_states_matrix_0.setState( 4, 1, O );
1338 binary_states_matrix_0.setState( 5, 1, O );
1339 binary_states_matrix_0.setState( 6, 1, O );
1340 binary_states_matrix_0.setState( 0, 2, O );
1341 binary_states_matrix_0.setState( 1, 2, O );
1342 binary_states_matrix_0.setState( 2, 2, O );
1343 binary_states_matrix_0.setState( 3, 2, O );
1344 binary_states_matrix_0.setState( 4, 2, I );
1345 binary_states_matrix_0.setState( 5, 2, O );
1346 binary_states_matrix_0.setState( 6, 2, O );
1347 binary_states_matrix_0.setState( 0, 3, I );
1348 binary_states_matrix_0.setState( 1, 3, O );
1349 binary_states_matrix_0.setState( 2, 3, O );
1350 binary_states_matrix_0.setState( 3, 3, O );
1351 binary_states_matrix_0.setState( 4, 3, I );
1352 binary_states_matrix_0.setState( 5, 3, O );
1353 binary_states_matrix_0.setState( 6, 3, I );
1354 binary_states_matrix_0.setState( 0, 4, I );
1355 binary_states_matrix_0.setState( 1, 4, O );
1356 binary_states_matrix_0.setState( 2, 4, I );
1357 binary_states_matrix_0.setState( 3, 4, O );
1358 binary_states_matrix_0.setState( 4, 4, I );
1359 binary_states_matrix_0.setState( 5, 4, O );
1360 binary_states_matrix_0.setState( 6, 4, I );
1361 binary_states_matrix_0.setState( 0, 5, I );
1362 binary_states_matrix_0.setState( 1, 5, I );
1363 binary_states_matrix_0.setState( 2, 5, I );
1364 binary_states_matrix_0.setState( 3, 5, I );
1365 binary_states_matrix_0.setState( 4, 5, I );
1366 binary_states_matrix_0.setState( 5, 5, I );
1367 binary_states_matrix_0.setState( 6, 5, I );
1368 final String[] character_labels_0 = new String[ 6 ];
1369 character_labels_0[ 0 ] = "first";
1370 character_labels_0[ 1 ] = "second";
1371 character_labels_0[ 2 ] = "third";
1372 character_labels_0[ 3 ] = "forth";
1373 character_labels_0[ 4 ] = "fifth";
1374 character_labels_0[ 5 ] = "sixth";
1375 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
1376 final Phylogeny phylogeny_0 = factory.create( "(((A,B)1,C)2,D)3", new NHXParser() )[ 0 ];
1377 final DomainParsimonyCalculator dom_pars = DomainParsimonyCalculator.createInstance( phylogeny_0 );
1378 dom_pars.executeOnGivenBinaryStatesMatrix( binary_states_matrix_0, character_labels_0 );
1379 final CharacterStateMatrix<GainLossStates> gl_matrix_0 = dom_pars.getGainLossMatrix();
1380 // final StringWriter sw = new StringWriter();
1381 // gl_matrix_0.toWriter( sw );
1382 // System.out.println( sw.toString() );
1383 if ( dom_pars.getCost() != 13 ) {
1386 if ( dom_pars.getTotalGains() != 5 ) {
1389 if ( dom_pars.getTotalLosses() != 8 ) {
1392 if ( dom_pars.getTotalUnchanged() != 29 ) {
1395 if ( gl_matrix_0.getState( "A", 1 ) != GainLossStates.GAIN ) {
1398 if ( gl_matrix_0.getState( "A", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1401 if ( gl_matrix_0.getState( "B", 4 ) != GainLossStates.LOSS ) {
1404 if ( gl_matrix_0.getState( "C", 4 ) != GainLossStates.GAIN ) {
1407 if ( gl_matrix_0.getState( "D", 4 ) != GainLossStates.LOSS ) {
1410 if ( gl_matrix_0.getState( "1", 4 ) != GainLossStates.GAIN ) {
1413 if ( gl_matrix_0.getState( "2", 4 ) != GainLossStates.LOSS ) {
1416 if ( gl_matrix_0.getState( "3", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1420 catch ( final Exception e ) {
1421 e.printStackTrace( System.out );
1427 private static boolean testCombinableDomains() {
1429 final Domain key0 = new BasicDomain( "key0", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1430 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1431 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1432 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1433 final CombinableDomains cd0 = new BasicCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1434 cd0.addCombinableDomain( a.getDomainId() );
1435 cd0.addCombinableDomain( b.getDomainId() );
1436 cd0.addCombinableDomain( b.getDomainId() );
1437 cd0.addCombinableDomain( c.getDomainId() );
1438 cd0.addCombinableDomain( c.getDomainId() );
1439 cd0.addCombinableDomain( c.getDomainId() );
1440 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1443 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1446 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1449 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1452 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1455 if ( cd0.getAllDomains().size() != 4 ) {
1458 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1461 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1464 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1467 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1470 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1473 final BasicBinaryDomainCombination s0 = BasicBinaryDomainCombination.obtainInstance( "key0", "a" );
1474 final BasicBinaryDomainCombination s1 = BasicBinaryDomainCombination.obtainInstance( "b", "key0" );
1475 final BasicBinaryDomainCombination s2 = BasicBinaryDomainCombination.obtainInstance( "key0", "c" );
1476 final BasicBinaryDomainCombination s3 = BasicBinaryDomainCombination.obtainInstance( "key0", "cc" );
1477 final BasicBinaryDomainCombination s4 = BasicBinaryDomainCombination.obtainInstance( "c", "key0" );
1478 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1481 if ( !cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1484 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1487 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1490 if ( !cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1493 final Domain key1 = new BasicDomain( "key1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1494 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1495 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1496 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1497 final CombinableDomains cd1 = new BasicCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1498 cd1.addCombinableDomain( a1.getDomainId() );
1499 cd1.addCombinableDomain( b1.getDomainId() );
1500 cd1.addCombinableDomain( c1.getDomainId() );
1501 cd1.addCombinableDomain( key1.getDomainId() );
1502 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1505 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1508 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1511 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1514 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1517 if ( cd1.getAllDomains().size() != 4 ) {
1520 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1523 final BasicBinaryDomainCombination kk = BasicBinaryDomainCombination.obtainInstance( "key1", "key1" );
1524 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1528 catch ( final Exception e ) {
1529 e.printStackTrace( System.out );
1535 private static boolean testCombinationsBasedPairwiseSimilarityCalculator() {
1537 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1538 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1539 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1540 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1541 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1542 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1543 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1544 new BasicSpecies( "rabbit" ) );
1545 one.addCombinableDomain( a.getDomainId() );
1546 one.addCombinableDomain( a.getDomainId() );
1547 two.addCombinableDomain( new BasicDomain( "A", 1, 5, ( short ) 1, ( short ) 4, 0.1, -12 ).getDomainId() );
1548 two.addCombinableDomain( b.getDomainId() );
1549 two.addCombinableDomain( c.getDomainId() );
1550 final PairwiseDomainSimilarityCalculator calc = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1551 final PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1552 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 / ( 1 + 2 ) ) ) {
1555 if ( s1.getDifferenceInCounts() != ( 1 - 3 ) ) {
1558 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s1 ).getNumberOfDifferentDomains() != 2 ) {
1561 one.addCombinableDomain( b.getDomainId() );
1562 one.addCombinableDomain( c.getDomainId() );
1563 final PairwiseDomainSimilarity s2 = calc.calculateSimilarity( one, two );
1564 if ( !TestSurfacing.isEqual( s2.getSimilarityScore(), 3.0 / ( 0 + 3 ) ) ) {
1567 if ( s2.getDifferenceInCounts() != 0 ) {
1570 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s2 ).getNumberOfDifferentDomains() != 0 ) {
1573 final Domain d = new BasicDomain( "D", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1574 final Domain e = new BasicDomain( "E", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1575 final Domain f = new BasicDomain( "F", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1576 one.addCombinableDomain( d.getDomainId() );
1577 one.addCombinableDomain( d.getDomainId() );
1578 one.addCombinableDomain( e.getDomainId() );
1579 one.addCombinableDomain( f.getDomainId() );
1580 final PairwiseDomainSimilarity s3 = calc.calculateSimilarity( one, two );
1581 if ( !TestSurfacing.isEqual( s3.getSimilarityScore(), 3.0 / ( 3 + 3 ) ) ) {
1584 if ( s3.getDifferenceInCounts() != ( 6 - 3 ) ) {
1587 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s3 ).getNumberOfDifferentDomains() != 3 ) {
1590 final Domain aaa = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1591 final Domain bbb = new BasicDomain( "bbb", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1592 final Domain three_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1593 final Domain four_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1594 final CombinableDomains three = new BasicCombinableDomains( three_key.getDomainId(),
1595 new BasicSpecies( "mouse" ) );
1596 final CombinableDomains four = new BasicCombinableDomains( four_key.getDomainId(),
1597 new BasicSpecies( "rabbit" ) );
1598 three.addCombinableDomain( aaa.getDomainId() );
1599 four.addCombinableDomain( bbb.getDomainId() );
1600 final PairwiseDomainSimilarityCalculator calc2 = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1601 final PairwiseDomainSimilarity s4 = calc2.calculateSimilarity( three, four );
1602 if ( !TestSurfacing.isEqual( s4.getSimilarityScore(), 0.0 / ( 0 + 2 ) ) ) {
1605 final Domain aaa2 = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1606 four.addCombinableDomain( aaa2.getDomainId() );
1607 final PairwiseDomainSimilarity s5 = calc.calculateSimilarity( three, four );
1608 if ( !TestSurfacing.isEqual( s5.getSimilarityScore(), 1.0 / ( 1 + 1 ) ) ) {
1612 catch ( final Exception e ) {
1613 e.printStackTrace( System.out );
1619 private static boolean testCopyNumberBasedPairwiseSimilarityCalculator() {
1621 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1622 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1623 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1624 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1625 new BasicSpecies( "rabbit" ) );
1626 one.setKeyDomainCount( 2 );
1627 two.setKeyDomainCount( 3 );
1628 final PairwiseDomainSimilarityCalculator calc = new DomainCountsBasedPairwiseSimilarityCalculator();
1629 PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1630 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( ( 3 - 2.0 ) / ( 2 + 3 ) ) ) ) {
1633 if ( s1.getDifferenceInCounts() != ( 2 - 3 ) ) {
1636 one.setKeyDomainCount( 1 );
1637 two.setKeyDomainCount( 1 );
1638 s1 = calc.calculateSimilarity( one, two );
1639 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 ) ) {
1642 if ( s1.getDifferenceInCounts() != ( 1 - 1 ) ) {
1645 one.setKeyDomainCount( 1 );
1646 two.setKeyDomainCount( 1000 );
1647 s1 = calc.calculateSimilarity( one, two );
1648 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( 999.0 / 1001 ) ) ) {
1651 if ( s1.getDifferenceInCounts() != ( 1 - 1000 ) ) {
1655 catch ( final Exception e ) {
1656 e.printStackTrace( System.out );
1662 private static boolean testDirectedCombinableDomains() {
1664 final Domain key0 = new BasicDomain( "key0", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 );
1665 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1666 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1667 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1668 final CombinableDomains cd0 = new DirectedCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1669 cd0.addCombinableDomain( a.getDomainId() );
1670 cd0.addCombinableDomain( b.getDomainId() );
1671 cd0.addCombinableDomain( b.getDomainId() );
1672 cd0.addCombinableDomain( c.getDomainId() );
1673 cd0.addCombinableDomain( c.getDomainId() );
1674 cd0.addCombinableDomain( c.getDomainId() );
1675 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1678 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1681 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1684 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1687 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1690 if ( cd0.getAllDomains().size() != 4 ) {
1693 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1696 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1699 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1702 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1705 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1708 final BinaryDomainCombination s0 = DirectedBinaryDomainCombination.obtainInstance( "key0", "a" );
1709 final BinaryDomainCombination s1 = DirectedBinaryDomainCombination.obtainInstance( "b", "key0" );
1710 final BinaryDomainCombination s2 = DirectedBinaryDomainCombination.obtainInstance( "key0", "c" );
1711 final BinaryDomainCombination s3 = DirectedBinaryDomainCombination.obtainInstance( "key0", "cc" );
1712 final BinaryDomainCombination s4 = DirectedBinaryDomainCombination.obtainInstance( "a", "b" );
1713 final BinaryDomainCombination s5 = DirectedBinaryDomainCombination.obtainInstance( "b", "a" );
1714 final BinaryDomainCombination s6 = DirectedBinaryDomainCombination.obtainInstance( "key0", "b" );
1715 final BinaryDomainCombination s7 = DirectedBinaryDomainCombination.obtainInstance( "a", "key0" );
1716 final BinaryDomainCombination s8 = DirectedBinaryDomainCombination.obtainInstance( "c", "key0" );
1717 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1720 if ( cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1723 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1726 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1729 if ( cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1732 if ( cd0.toBinaryDomainCombinations().contains( s5 ) ) {
1735 if ( !cd0.toBinaryDomainCombinations().contains( s6 ) ) {
1738 if ( cd0.toBinaryDomainCombinations().contains( s7 ) ) {
1741 if ( cd0.toBinaryDomainCombinations().contains( s8 ) ) {
1744 final Domain key1 = new BasicDomain( "key1", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 );
1745 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1746 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1747 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1748 final CombinableDomains cd1 = new DirectedCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1749 cd1.addCombinableDomain( a1.getDomainId() );
1750 cd1.addCombinableDomain( b1.getDomainId() );
1751 cd1.addCombinableDomain( c1.getDomainId() );
1752 cd1.addCombinableDomain( key1.getDomainId() );
1753 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1756 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1759 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1762 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1765 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1768 if ( cd1.getAllDomains().size() != 4 ) {
1771 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1774 final BinaryDomainCombination kk = DirectedBinaryDomainCombination.obtainInstance( "key1", "key1" );
1775 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1779 catch ( final Exception e ) {
1780 e.printStackTrace( System.out );
1786 private static boolean testDirectedness() {
1788 final BinaryStates X = BinaryStates.PRESENT;
1789 final BinaryStates O = BinaryStates.ABSENT;
1790 final GainLossStates G = GainLossStates.GAIN;
1791 final GainLossStates L = GainLossStates.LOSS;
1792 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
1793 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
1794 final Protein one_1 = new BasicProtein( "one", "1", 0 );
1795 final Protein two_1 = new BasicProtein( "two", "1", 0 );
1796 final Protein three_1 = new BasicProtein( "three", "1", 0 );
1797 final Protein four_1 = new BasicProtein( "four", "1", 0 );
1798 final Protein five_1 = new BasicProtein( "five", "1", 0 );
1799 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1800 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1801 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1802 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1803 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1804 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1805 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1806 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1807 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1808 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1809 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1810 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1811 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1812 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1813 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1814 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1815 final List<Protein> list_1 = new ArrayList<Protein>();
1816 list_1.add( one_1 );
1817 list_1.add( two_1 );
1818 list_1.add( three_1 );
1819 list_1.add( four_1 );
1820 list_1.add( five_1 );
1821 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
1822 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED );
1823 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1827 if ( gwcd_1.toBinaryDomainCombinations()
1828 .contains( DirectedBinaryDomainCombination.obtainInstance( "B", "A" ) ) ) {
1831 if ( gwcd_1.toBinaryDomainCombinations()
1832 .contains( DirectedBinaryDomainCombination.obtainInstance( "A", "A" ) ) ) {
1835 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1839 if ( gwcd_1.toBinaryDomainCombinations()
1840 .contains( DirectedBinaryDomainCombination.obtainInstance( "C", "A" ) ) ) {
1843 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "B",
1847 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "C",
1851 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "C",
1855 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1859 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1863 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "Y",
1867 if ( gwcd_1.toBinaryDomainCombinations()
1868 .contains( DirectedBinaryDomainCombination.obtainInstance( "X", "A" ) ) ) {
1871 if ( gwcd_1.toBinaryDomainCombinations()
1872 .contains( DirectedBinaryDomainCombination.obtainInstance( "C", "B" ) ) ) {
1875 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "X",
1879 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "Y",
1883 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1887 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "A",
1891 if ( gwcd_1.toBinaryDomainCombinations()
1892 .contains( DirectedBinaryDomainCombination.obtainInstance( "Y", "C" ) ) ) {
1895 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "M",
1899 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "N",
1903 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "N",
1907 if ( !gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "M",
1911 if ( gwcd_1.toBinaryDomainCombinations()
1912 .contains( DirectedBinaryDomainCombination.obtainInstance( "P", "N" ) ) ) {
1915 if ( gwcd_1.toBinaryDomainCombinations()
1916 .contains( DirectedBinaryDomainCombination.obtainInstance( "P", "M" ) ) ) {
1919 if ( gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "XX",
1923 if ( gwcd_1.toBinaryDomainCombinations().contains( DirectedBinaryDomainCombination.obtainInstance( "YY",
1927 if ( gwcd_1.toBinaryDomainCombinations()
1928 .contains( DirectedBinaryDomainCombination.obtainInstance( "B", "B" ) ) ) {
1931 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1932 // gwcd_list.add( gwcd_1 );
1933 // gwcd_list.add( gwcd_2 );
1934 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
1935 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1936 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
1937 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1938 // if ( matrix_d.getState( 0, 0 ) != X ) {
1941 // if ( matrix_bc.getState( 0, 0 ) != X ) {
1946 // final BasicCharacterStateMatrix<BinaryStates> dm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1947 // { X, X, X, X, X, X }, { X, X, X, X, X, X } } );
1948 // if ( !matrix_d.equals( dm ) ) {
1951 // final BasicCharacterStateMatrix<BinaryStates> bcm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1952 // { X, O, X, X, X, X, O, X, X, O, X, X }, { X, X, X, O, O, O, O, X, O, O, X, X } } );
1953 // if ( !matrix_d.equals( dm ) ) {
1956 //``````````````````````````
1957 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1958 // gwcd_list.add( one );
1959 // gwcd_list.add( two );
1960 // gwcd_list.add( three );
1961 // gwcd_list.add( four );
1962 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimony
1963 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1964 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimony
1965 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1966 // // System.out.println( "d:" );
1967 // // System.out.println(matrix_d.toStringBuffer().toString() );
1968 // // System.out.println( "bc:" );
1969 // // System.out.println(matrix_bc.toStringBuffer().toString() );
1970 // // 1 a b c e f g h l m
1971 // // 2 a b c e f g i n o
1972 // // 3 a b d e f g j p q
1974 // if ( matrix_d.getState( 0, 0 ) != X ) {
1977 // if ( matrix_d.getState( 0, 1 ) != X ) {
1980 // if ( matrix_d.getState( 0, 2 ) != X ) {
1983 // if ( matrix_d.getState( 0, 3 ) != O ) {
1986 // if ( matrix_d.getState( 0, 4 ) != X ) {
1989 // if ( matrix_d.getState( 0, 5 ) != X ) {
1992 // if ( matrix_d.getState( 0, 6 ) != X ) {
1995 // if ( matrix_d.getState( 0, 7 ) != X ) {
1998 // if ( matrix_d.getState( 0, 8 ) != O ) {
2001 // // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
2002 // // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
2003 // // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
2005 // if ( matrix_bc.getState( 0, 0 ) != X ) {
2008 // if ( matrix_bc.getState( 0, 1 ) != X ) {
2011 // if ( matrix_bc.getState( 0, 2 ) != X ) {
2014 // if ( matrix_bc.getState( 0, 3 ) != O ) {
2017 // if ( matrix_bc.getState( 0, 4 ) != X ) {
2020 // if ( matrix_bc.getState( 1, 0 ) != O ) {
2023 // if ( matrix_bc.getState( 1, 1 ) != X ) {
2026 // if ( matrix_bc.getState( 1, 2 ) != X ) {
2029 // if ( matrix_bc.getState( 1, 3 ) != O ) {
2032 // if ( matrix_bc.getState( 1, 4 ) != X ) {
2035 // if ( matrix_bc.getState( 2, 0 ) != O ) {
2038 // if ( matrix_bc.getState( 2, 1 ) != X ) {
2041 // if ( matrix_bc.getState( 2, 2 ) != O ) {
2044 // if ( matrix_bc.getState( 2, 3 ) != X ) {
2047 // if ( matrix_bc.getState( 2, 4 ) != X ) {
2050 // final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
2051 // final String p0_str = "((one,two)1-2,(three,four)3-4)root";
2052 // final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
2053 // final DomainParsimony dp0 = DomainParsimony.createInstance( p0, gwcd_list );
2054 // dp0.executeDolloParsimonyOnDomainPresence();
2055 // final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
2056 // final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
2057 // dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2058 // final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
2059 // final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
2060 // if ( is_matrix_d.getState( "root", "A" ) != X ) {
2063 // if ( is_matrix_d.getState( "root", "B" ) != X ) {
2066 // if ( is_matrix_d.getState( "root", "C" ) != O ) {
2069 // if ( is_matrix_d.getState( "root", "D" ) != O ) {
2072 // if ( is_matrix_d.getState( "root", "E" ) != X ) {
2075 // if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
2078 // if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
2081 // if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
2084 // if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
2087 // if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
2090 // if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
2093 // if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
2096 // if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
2099 // if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
2102 // if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
2105 // if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
2108 // if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
2111 // if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
2114 // if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
2117 // final Protein ab_1 = new BasicProtein( "ab", "one" );
2118 // ab_1.addProteinDomain( a );
2119 // ab_1.addProteinDomain( b );
2120 // final Protein ac_1 = new BasicProtein( "ac", "one" );
2121 // ac_1.addProteinDomain( a );
2122 // ac_1.addProteinDomain( c );
2123 // final Protein de_1 = new BasicProtein( "de", "one" );
2124 // de_1.addProteinDomain( d );
2125 // de_1.addProteinDomain( e );
2126 // final Protein ac_2 = new BasicProtein( "ac", "two" );
2127 // ac_2.addProteinDomain( a );
2128 // ac_2.addProteinDomain( c );
2129 // final Protein ab_3 = new BasicProtein( "ab", "three" );
2130 // ab_3.addProteinDomain( a );
2131 // ab_3.addProteinDomain( b );
2132 // final Protein de_4 = new BasicProtein( "de", "four" );
2133 // de_4.addProteinDomain( d );
2134 // de_4.addProteinDomain( e );
2135 // final Protein ab_6 = new BasicProtein( "ab", "six" );
2136 // ab_6.addProteinDomain( a );
2137 // ab_6.addProteinDomain( b );
2138 // final List<Protein> spec_one = new ArrayList<Protein>();
2139 // final List<Protein> spec_two = new ArrayList<Protein>();
2140 // final List<Protein> spec_three = new ArrayList<Protein>();
2141 // final List<Protein> spec_four = new ArrayList<Protein>();
2142 // final List<Protein> spec_five = new ArrayList<Protein>();
2143 // final List<Protein> spec_six = new ArrayList<Protein>();
2144 // final List<Protein> spec_seven = new ArrayList<Protein>();
2145 // spec_one.add( ab_1 );
2146 // spec_one.add( ac_1 );
2147 // spec_one.add( de_1 );
2148 // spec_two.add( ac_2 );
2149 // spec_three.add( ab_3 );
2150 // spec_four.add( de_4 );
2151 // spec_six.add( ab_6 );
2152 // final GenomeWideCombinableDomains one_gwcd = BasicGenomeWideCombinableDomains
2153 // .createInstance( spec_one, false, new BasicSpecies( "one" ), false );
2154 // final GenomeWideCombinableDomains two_gwcd = BasicGenomeWideCombinableDomains
2155 // .createInstance( spec_two, false, new BasicSpecies( "two" ), false );
2156 // final GenomeWideCombinableDomains three_gwcd = BasicGenomeWideCombinableDomains
2157 // .createInstance( spec_three, false, new BasicSpecies( "three" ), false );
2158 // final GenomeWideCombinableDomains four_gwcd = BasicGenomeWideCombinableDomains
2159 // .createInstance( spec_four, false, new BasicSpecies( "four" ), false );
2160 // final GenomeWideCombinableDomains five_gwcd = BasicGenomeWideCombinableDomains
2161 // .createInstance( spec_five, false, new BasicSpecies( "five" ), false );
2162 // final GenomeWideCombinableDomains six_gwcd = BasicGenomeWideCombinableDomains
2163 // .createInstance( spec_six, false, new BasicSpecies( "six" ), false );
2164 // final GenomeWideCombinableDomains seven_gwcd = BasicGenomeWideCombinableDomains
2165 // .createInstance( spec_seven, false, new BasicSpecies( "seven" ), false
2167 // final List<GenomeWideCombinableDomains> gwcd_list1 = new ArrayList<GenomeWideCombinableDomains>();
2168 // gwcd_list1.add( one_gwcd );
2169 // gwcd_list1.add( two_gwcd );
2170 // gwcd_list1.add( three_gwcd );
2171 // gwcd_list1.add( four_gwcd );
2172 // gwcd_list1.add( five_gwcd );
2173 // gwcd_list1.add( six_gwcd );
2174 // gwcd_list1.add( seven_gwcd );
2175 // final PhylogenyFactory factory1 = ParserBasedPhylogenyFactory.getInstance();
2176 // final String p1_str = "(((((one,two)12,three)123,(four,five)45)12345,six)123456,seven)root";
2177 // final Phylogeny p1 = factory1.create( p1_str, new NHXParser() )[ 0 ];
2178 // final DomainParsimony dp1 = DomainParsimony.createInstance( p1, gwcd_list1 );
2179 // dp1.executeDolloParsimonyOnDomainPresence();
2180 // final CharacterStateMatrix<GainLossStates> gl_dollo_d = dp1.getGainLossMatrix();
2181 // final CharacterStateMatrix<BinaryStates> i_dollo_d = dp1.getInternalStatesMatrix();
2182 // if ( dp1.getCost() != 14 ) {
2185 // if ( dp1.getTotalGains() != 5 ) {
2188 // if ( dp1.getTotalLosses() != 9 ) {
2191 // if ( dp1.getTotalUnchanged() != 51 ) {
2194 // if ( dp1.getNetGainsOnNode( "45" ) != -2 ) {
2197 // if ( dp1.getSumOfGainsOnNode( "45" ) != 0 ) {
2200 // if ( dp1.getSumOfLossesOnNode( "45" ) != 2 ) {
2203 // if ( dp1.getSumOfUnchangedOnNode( "45" ) != 3 ) {
2206 // if ( dp1.getSumOfUnchangedPresentOnNode( "45" ) != 2 ) {
2209 // if ( dp1.getSumOfUnchangedAbsentOnNode( "45" ) != 1 ) {
2212 // if ( dp1.getUnitsGainedOnNode( "45" ).contains( "A" ) ) {
2215 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A" ) ) {
2218 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "B" ) ) {
2221 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D" ) ) {
2224 // if ( !dp1.getUnitsOnNode( "12" ).contains( "A" ) ) {
2227 // if ( !dp1.getUnitsOnNode( "12" ).contains( "B" ) ) {
2230 // if ( !dp1.getUnitsOnNode( "12" ).contains( "C" ) ) {
2233 // if ( !dp1.getUnitsOnNode( "12" ).contains( "D" ) ) {
2236 // if ( !dp1.getUnitsOnNode( "12" ).contains( "E" ) ) {
2239 // if ( dp1.getNetGainsOnNode( "123456" ) != 2 ) {
2242 // if ( dp1.getSumOfGainsOnNode( "123456" ) != 2 ) {
2245 // dp1.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2246 // final CharacterStateMatrix<GainLossStates> gl_dollo_bc = dp1.getGainLossMatrix();
2247 // final CharacterStateMatrix<BinaryStates> i_dollo_bc = dp1.getInternalStatesMatrix();
2248 // if ( dp1.getCost() != 8 ) {
2251 // if ( dp1.getTotalGains() != 3 ) {
2254 // if ( dp1.getTotalLosses() != 5 ) {
2257 // if ( dp1.getTotalUnchanged() != 31 ) {
2260 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2263 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D=E" ) ) {
2266 // dp1.executeFitchParsimonyOnDomainPresence();
2267 // final CharacterStateMatrix<GainLossStates> gl_fitch_d = dp1.getGainLossMatrix();
2268 // final CharacterStateMatrix<BinaryStates> i_fitch_d = dp1.getInternalStatesMatrix();
2269 // if ( dp1.getCost() != 10 ) {
2272 // if ( dp1.getTotalGains() != 7 ) {
2275 // if ( dp1.getTotalLosses() != 3 ) {
2278 // if ( dp1.getTotalUnchanged() != 55 ) {
2281 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "E" ) ) {
2284 // dp1.executeFitchParsimonyOnBinaryDomainCombintion();
2285 // final CharacterStateMatrix<GainLossStates> gl_fitch_bc = dp1.getGainLossMatrix();
2286 // final CharacterStateMatrix<BinaryStates> i_fitch_bc = dp1.getInternalStatesMatrix();
2287 // if ( dp1.getCost() != 6 ) {
2290 // if ( dp1.getTotalGains() != 4 ) {
2293 // if ( dp1.getTotalLosses() != 2 ) {
2296 // if ( dp1.getTotalUnchanged() != 33 ) {
2299 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2302 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "D=E" ) ) {
2305 // if ( dp1.getNetGainsOnNode( "two" ) != -1 ) {
2308 // if ( dp1.getNetGainsOnNode( "123" ) != 0 ) {
2311 // if ( dp1.getSumOfUnchangedPresentOnNode( "123" ) != 1 ) {
2314 // if ( dp1.getSumOfUnchangedAbsentOnNode( "123" ) != 2 ) {
2317 // if ( dp1.getSumOfUnchangedOnNode( "123" ) != 3 ) {
2320 // if ( dp1.getSumOfUnchangedOnNode( "two" ) != 2 ) {
2323 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "two" ).contains( "D=E" ) ) {
2326 // if ( !dp1.getUnitsUnchangedPresentOnNode( "two" ).contains( "A=C" ) ) {
2329 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "A=C" ) ) {
2332 // if ( !dp1.getUnitsUnchangedPresentOnNode( "123" ).contains( "A=B" ) ) {
2335 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "D=E" ) ) {
2338 // CharacterStateMatrix<BinaryStates> bsm = null;
2339 // CharacterStateMatrix<GainLossStates> glm = null;
2340 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, X, X },
2341 // { 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 } } );
2342 // if ( !bsm.equals( i_dollo_d ) ) {
2345 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, O, O },
2346 // { 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 } } );
2347 // if ( !bsm.equals( i_fitch_d ) ) {
2350 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, P, P },
2351 // { 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 },
2352 // { 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 },
2353 // { A, A, A, A, A }, { A, A, A, A, A } } );
2354 // if ( !glm.equals( gl_dollo_d ) ) {
2357 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, G, G },
2358 // { 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 },
2359 // { 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 },
2360 // { A, A, A, A, A }, { A, A, A, A, A } } );
2361 // if ( !glm.equals( gl_fitch_d ) ) {
2364 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X }, { X, O, X },
2365 // { O, O, X }, { X, O, X }, { X, O, O }, { O, O, O } } );
2366 // if ( !bsm.equals( i_dollo_bc ) ) {
2369 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, O }, { X, O, O },
2370 // { O, O, O }, { X, O, O }, { X, O, O }, { O, O, O } } );
2371 // if ( !bsm.equals( i_fitch_bc ) ) {
2374 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P }, { L, P, L },
2375 // { P, G, P }, { P, A, L }, { P, A, P }, { A, A, P }, { A, A, L }, { L, A, P }, { P, A, G },
2376 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2377 // if ( !glm.equals( gl_dollo_bc ) ) {
2380 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, G }, { L, P, A },
2381 // { P, G, A }, { P, A, A }, { P, A, A }, { A, A, G }, { A, A, A }, { L, A, A }, { P, A, A },
2382 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2383 // if ( !glm.equals( gl_fitch_bc ) ) {
2387 catch ( final Exception e ) {
2388 e.printStackTrace( System.out );
2394 private static boolean testDirectednessAndAdjacency() {
2396 final Protein one_1 = new BasicProtein( "one", "1", 0 );
2397 final Protein two_1 = new BasicProtein( "two", "1", 0 );
2398 final Protein three_1 = new BasicProtein( "three", "1", 0 );
2399 final Protein four_1 = new BasicProtein( "four", "1", 0 );
2400 final Protein five_1 = new BasicProtein( "five", "1", 0 );
2401 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2402 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2403 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2404 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2405 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2406 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2407 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2408 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2409 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2410 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2411 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2412 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2413 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2414 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2415 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2416 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2417 final List<Protein> list_1 = new ArrayList<Protein>();
2418 list_1.add( one_1 );
2419 list_1.add( two_1 );
2420 list_1.add( three_1 );
2421 list_1.add( four_1 );
2422 list_1.add( five_1 );
2423 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
2424 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED_ADJACTANT );
2425 if ( !gwcd_1.toBinaryDomainCombinations()
2426 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "B" ) ) ) {
2429 if ( gwcd_1.toBinaryDomainCombinations()
2430 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "A" ) ) ) {
2433 if ( gwcd_1.toBinaryDomainCombinations()
2434 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "A" ) ) ) {
2437 if ( gwcd_1.toBinaryDomainCombinations()
2438 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "C" ) ) ) {
2441 if ( gwcd_1.toBinaryDomainCombinations()
2442 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "A" ) ) ) {
2445 if ( !gwcd_1.toBinaryDomainCombinations()
2446 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "C" ) ) ) {
2449 if ( !gwcd_1.toBinaryDomainCombinations()
2450 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "X" ) ) ) {
2453 if ( gwcd_1.toBinaryDomainCombinations()
2454 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "Y" ) ) ) {
2457 if ( !gwcd_1.toBinaryDomainCombinations()
2458 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "Y" ) ) ) {
2461 if ( gwcd_1.toBinaryDomainCombinations()
2462 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "X" ) ) ) {
2465 if ( gwcd_1.toBinaryDomainCombinations()
2466 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "Y" ) ) ) {
2469 if ( !gwcd_1.toBinaryDomainCombinations()
2470 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "A" ) ) ) {
2473 if ( gwcd_1.toBinaryDomainCombinations()
2474 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "A" ) ) ) {
2477 if ( gwcd_1.toBinaryDomainCombinations()
2478 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "C", "B" ) ) ) {
2481 if ( !gwcd_1.toBinaryDomainCombinations()
2482 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "X", "Y" ) ) ) {
2485 if ( gwcd_1.toBinaryDomainCombinations()
2486 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "X" ) ) ) {
2489 if ( gwcd_1.toBinaryDomainCombinations()
2490 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "Y" ) ) ) {
2493 if ( gwcd_1.toBinaryDomainCombinations()
2494 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "A", "X" ) ) ) {
2497 if ( gwcd_1.toBinaryDomainCombinations()
2498 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "Y", "C" ) ) ) {
2501 if ( !gwcd_1.toBinaryDomainCombinations()
2502 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "M", "N" ) ) ) {
2505 if ( !gwcd_1.toBinaryDomainCombinations()
2506 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "N", "M" ) ) ) {
2509 if ( !gwcd_1.toBinaryDomainCombinations()
2510 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "N", "P" ) ) ) {
2513 if ( gwcd_1.toBinaryDomainCombinations()
2514 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "M", "P" ) ) ) {
2517 if ( gwcd_1.toBinaryDomainCombinations()
2518 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "P", "N" ) ) ) {
2521 if ( gwcd_1.toBinaryDomainCombinations()
2522 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "P", "M" ) ) ) {
2525 if ( gwcd_1.toBinaryDomainCombinations()
2526 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "XX", "YY" ) ) ) {
2529 if ( gwcd_1.toBinaryDomainCombinations()
2530 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "YY", "XX" ) ) ) {
2533 if ( gwcd_1.toBinaryDomainCombinations()
2534 .contains( AdjactantDirectedBinaryDomainCombination.obtainInstance( "B", "B" ) ) ) {
2538 catch ( final Exception e ) {
2539 e.printStackTrace( System.out );
2545 private static boolean testDomainArchitectureBasedGenomeSimilarityCalculator() {
2547 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2548 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2549 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2550 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2551 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2552 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2553 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2554 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2555 final Domain i = new BasicDomain( "i", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2556 final Domain j = new BasicDomain( "j", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2557 final Domain k = new BasicDomain( "k", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2558 final Domain l = new BasicDomain( "l", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2559 final Domain m = new BasicDomain( "m", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2560 final Domain n = new BasicDomain( "n", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2561 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
2562 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
2563 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
2564 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
2565 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
2566 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
2567 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
2568 final Protein rat_0 = new BasicProtein( "0", "rat", 0 );
2569 final Protein rat_1 = new BasicProtein( "1", "rat", 0 );
2570 final Protein rat_2 = new BasicProtein( "2", "rat", 0 );
2571 final Protein rat_3 = new BasicProtein( "3", "rat", 0 );
2572 final Protein rat_4 = new BasicProtein( "4", "rat", 0 );
2573 final Protein rat_5 = new BasicProtein( "5", "rat", 0 );
2574 final Protein rat_6 = new BasicProtein( "6", "rat", 0 );
2575 final Protein rat_7 = new BasicProtein( "7", "rat", 0 );
2576 eel_1.addProteinDomain( a );
2577 eel_2.addProteinDomain( a );
2578 eel_2.addProteinDomain( b );
2579 eel_3.addProteinDomain( a );
2580 eel_3.addProteinDomain( a );
2581 eel_3.addProteinDomain( b );
2582 eel_4.addProteinDomain( a );
2583 eel_4.addProteinDomain( b );
2584 eel_4.addProteinDomain( c );
2585 eel_4.addProteinDomain( d );
2586 eel_4.addProteinDomain( e );
2587 eel_5.addProteinDomain( e );
2588 eel_5.addProteinDomain( e );
2589 eel_5.addProteinDomain( f );
2590 eel_5.addProteinDomain( f );
2591 eel_5.addProteinDomain( f );
2592 eel_5.addProteinDomain( f );
2593 eel_6.addProteinDomain( g );
2594 eel_6.addProteinDomain( h );
2595 rat_1.addProteinDomain( a );
2596 rat_2.addProteinDomain( a );
2597 rat_2.addProteinDomain( b );
2598 rat_3.addProteinDomain( a );
2599 rat_3.addProteinDomain( a );
2600 rat_3.addProteinDomain( b );
2601 rat_4.addProteinDomain( a );
2602 rat_4.addProteinDomain( b );
2603 rat_4.addProteinDomain( c );
2604 rat_4.addProteinDomain( i );
2605 rat_4.addProteinDomain( l );
2606 rat_5.addProteinDomain( i );
2607 rat_5.addProteinDomain( f );
2608 rat_5.addProteinDomain( f );
2609 rat_6.addProteinDomain( j );
2610 rat_6.addProteinDomain( k );
2611 rat_7.addProteinDomain( m );
2612 rat_7.addProteinDomain( n );
2613 final List<Protein> protein_list_eel = new ArrayList<Protein>();
2614 protein_list_eel.add( eel_0 );
2615 protein_list_eel.add( eel_1 );
2616 protein_list_eel.add( eel_2 );
2617 protein_list_eel.add( eel_3 );
2618 protein_list_eel.add( eel_4 );
2619 protein_list_eel.add( eel_5 );
2620 protein_list_eel.add( eel_6 );
2621 final List<Protein> protein_list_rat = new ArrayList<Protein>();
2622 protein_list_rat.add( rat_0 );
2623 protein_list_rat.add( rat_1 );
2624 protein_list_rat.add( rat_2 );
2625 protein_list_rat.add( rat_3 );
2626 protein_list_rat.add( rat_4 );
2627 protein_list_rat.add( rat_5 );
2628 protein_list_rat.add( rat_6 );
2629 protein_list_rat.add( rat_7 );
2630 final GenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
2631 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
2632 final GenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
2633 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
2634 final GenomeWideCombinableDomains rat_not_ignore = BasicGenomeWideCombinableDomains
2635 .createInstance( protein_list_rat, false, new BasicSpecies( "rat" ) );
2636 final GenomeWideCombinableDomains rat_ignore = BasicGenomeWideCombinableDomains
2637 .createInstance( protein_list_rat, true, new BasicSpecies( "rat" ) );
2638 final DomainArchitectureBasedGenomeSimilarityCalculator calc_ni = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_not_ignore,
2640 final DomainArchitectureBasedGenomeSimilarityCalculator calc_i = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_ignore,
2642 if ( calc_ni.getAllDomains().size() != 14 ) {
2645 if ( calc_i.getAllDomains().size() != 14 ) {
2648 if ( calc_ni.getDomainsSpecificToGenome0().size() != 4 ) {
2651 if ( calc_i.getDomainsSpecificToGenome0().size() != 4 ) {
2654 if ( calc_ni.getDomainsSpecificToGenome1().size() != 6 ) {
2657 if ( calc_i.getDomainsSpecificToGenome1().size() != 6 ) {
2660 if ( calc_i.getSharedDomains().size() != 4 ) {
2663 if ( calc_ni.getSharedDomains().size() != 4 ) {
2666 if ( !calc_ni.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2669 if ( !calc_ni.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2672 if ( !calc_ni.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2675 if ( !calc_ni.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2678 if ( calc_ni.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2681 if ( calc_ni.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2684 if ( !calc_i.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2687 if ( !calc_i.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2690 if ( !calc_i.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2693 if ( !calc_i.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2696 if ( calc_i.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2699 if ( calc_i.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2702 if ( !calc_ni.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2705 if ( !calc_ni.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2708 if ( !calc_ni.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2711 if ( !calc_ni.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2714 if ( !calc_ni.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2717 if ( !calc_ni.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2720 if ( calc_ni.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2723 if ( calc_ni.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2726 if ( calc_ni.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2729 if ( !calc_i.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2732 if ( !calc_i.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2735 if ( !calc_i.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2738 if ( !calc_i.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2741 if ( !calc_i.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2744 if ( !calc_i.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2747 if ( calc_i.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2750 if ( calc_i.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2753 if ( calc_i.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2756 if ( !calc_i.getSharedDomains().contains( a.getDomainId() ) ) {
2759 if ( !calc_i.getSharedDomains().contains( b.getDomainId() ) ) {
2762 if ( !calc_i.getSharedDomains().contains( c.getDomainId() ) ) {
2765 if ( !calc_i.getSharedDomains().contains( f.getDomainId() ) ) {
2768 final Set<String> all = calc_ni.getAllDomains();
2769 if ( !all.contains( a.getDomainId() ) ) {
2772 if ( !all.contains( b.getDomainId() ) ) {
2775 if ( !all.contains( c.getDomainId() ) ) {
2778 if ( !all.contains( d.getDomainId() ) ) {
2781 if ( !all.contains( e.getDomainId() ) ) {
2784 if ( !all.contains( f.getDomainId() ) ) {
2787 if ( !all.contains( g.getDomainId() ) ) {
2790 if ( !all.contains( h.getDomainId() ) ) {
2793 if ( !all.contains( i.getDomainId() ) ) {
2796 if ( !all.contains( l.getDomainId() ) ) {
2799 if ( !all.contains( j.getDomainId() ) ) {
2802 if ( !all.contains( k.getDomainId() ) ) {
2805 if ( !all.contains( m.getDomainId() ) ) {
2808 if ( !all.contains( n.getDomainId() ) ) {
2811 final Set<BinaryDomainCombination> s_0_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome0();
2812 final Set<BinaryDomainCombination> s_0_i = calc_i.getBinaryDomainCombinationsSpecificToGenome0();
2813 final Set<BinaryDomainCombination> s_1_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome1();
2814 final Set<BinaryDomainCombination> s_1_i = calc_i.getBinaryDomainCombinationsSpecificToGenome1();
2815 final Set<BinaryDomainCombination> a_ni = calc_ni.getAllBinaryDomainCombinations();
2816 final Set<BinaryDomainCombination> a_i = calc_i.getAllBinaryDomainCombinations();
2817 final Set<BinaryDomainCombination> shared_ni = calc_ni.getSharedBinaryDomainCombinations();
2818 final Set<BinaryDomainCombination> shared_i = calc_i.getSharedBinaryDomainCombinations();
2819 if ( a_ni.size() != 25 ) {
2822 if ( a_i.size() != 22 ) {
2825 if ( s_0_ni.size() != 10 ) {
2828 if ( s_0_i.size() != 9 ) {
2831 if ( s_1_ni.size() != 10 ) {
2834 if ( s_1_i.size() != 10 ) {
2837 if ( shared_ni.size() != 5 ) {
2840 if ( shared_i.size() != 3 ) {
2843 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2846 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
2849 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2852 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
2855 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
2858 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2861 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
2864 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
2867 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
2870 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
2873 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
2876 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
2879 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
2882 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2885 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2888 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
2891 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
2894 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
2897 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
2900 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
2903 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
2906 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "l" ) ) ) {
2909 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
2912 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2915 if ( !a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
2918 if ( a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
2921 if ( a_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "m" ) ) ) {
2924 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2927 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2930 if ( a_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2933 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2936 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
2939 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2942 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2945 if ( !shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2948 if ( shared_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2951 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
2954 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
2957 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
2960 if ( !shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
2963 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
2966 if ( shared_i.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
2969 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
2972 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
2975 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
2978 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
2981 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
2984 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
2987 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
2990 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
2993 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
2996 if ( !s_0_ni.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
2999 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
3002 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
3005 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
3008 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
3011 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
3014 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
3017 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
3020 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
3023 if ( !s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
3026 if ( s_0_i.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
3029 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
3032 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
3035 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
3038 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
3041 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
3044 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
3047 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "l", "i" ) ) ) {
3050 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
3053 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
3056 if ( !s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
3059 if ( s_1_ni.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
3062 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "i" ) ) ) {
3065 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "l" ) ) ) {
3068 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "i" ) ) ) {
3071 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "b", "l" ) ) ) {
3074 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "i" ) ) ) {
3077 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "c", "l" ) ) ) {
3080 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "l", "i" ) ) ) {
3083 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "i", "f" ) ) ) {
3086 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "m", "n" ) ) ) {
3089 if ( !s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "j", "k" ) ) ) {
3092 if ( s_1_i.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
3095 if ( !isEqual( calc_ni.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3096 1.0 - ( ( 25.0 - 5.0 ) / 25.0 ) ) ) {
3099 if ( !isEqual( calc_i.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3100 1.0 - ( ( 22.0 - 3.0 ) / 22.0 ) ) ) {
3103 if ( !isEqual( calc_ni.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3106 if ( !isEqual( calc_i.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3109 final Domain u = new BasicDomain( "u", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3110 final Domain v = new BasicDomain( "v", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3111 final Domain w = new BasicDomain( "w", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3112 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3113 final Domain y = new BasicDomain( "y", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3114 final Domain z = new BasicDomain( "z", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3115 final Protein a_0 = new BasicProtein( "0", "a", 0 );
3116 final Protein a_1 = new BasicProtein( "1", "a", 0 );
3117 final Protein a_2 = new BasicProtein( "2", "a", 0 );
3118 final Protein b_0 = new BasicProtein( "0", "b", 0 );
3119 final Protein b_1 = new BasicProtein( "1", "b", 0 );
3120 a_0.addProteinDomain( u );
3121 a_0.addProteinDomain( v );
3122 a_0.addProteinDomain( w );
3123 a_1.addProteinDomain( w );
3124 a_1.addProteinDomain( x );
3125 a_2.addProteinDomain( y );
3126 a_2.addProteinDomain( z );
3127 b_0.addProteinDomain( u );
3128 b_0.addProteinDomain( w );
3129 b_1.addProteinDomain( y );
3130 b_1.addProteinDomain( z );
3131 final List<Protein> protein_list_a = new ArrayList<Protein>();
3132 protein_list_a.add( a_0 );
3133 protein_list_a.add( a_1 );
3134 protein_list_a.add( a_2 );
3135 final List<Protein> protein_list_b = new ArrayList<Protein>();
3136 protein_list_b.add( b_0 );
3137 protein_list_b.add( b_1 );
3138 final GenomeWideCombinableDomains ca = BasicGenomeWideCombinableDomains
3139 .createInstance( protein_list_a, false, new BasicSpecies( "a" ) );
3140 final GenomeWideCombinableDomains cb = BasicGenomeWideCombinableDomains
3141 .createInstance( protein_list_b, true, new BasicSpecies( "b" ) );
3142 final DomainArchitectureBasedGenomeSimilarityCalculator calc_u = new DomainArchitectureBasedGenomeSimilarityCalculator( ca,
3144 calc_u.setAllowDomainsToBeIgnored( true );
3145 if ( calc_u.getAllDomains().size() != 6 ) {
3148 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3151 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3154 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3157 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3160 if ( calc_u.getSharedDomains().size() != 4 ) {
3163 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3166 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3169 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3172 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3175 if ( calc_u.getAllDomains().size() != 6 ) {
3178 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3181 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3184 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3187 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3190 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3193 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3196 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 3 ) {
3199 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3202 if ( calc_u.getSharedBinaryDomainCombinations().size() != 2 ) {
3205 if ( calc_u.getAllBinaryDomainCombinations().size() != 5 ) {
3208 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3209 .contains( BasicBinaryDomainCombination.obtainInstance( "v", "u" ) ) ) {
3212 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3213 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "v" ) ) ) {
3216 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3217 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "x" ) ) ) {
3220 if ( !calc_u.getSharedBinaryDomainCombinations()
3221 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "u" ) ) ) {
3224 if ( !calc_u.getSharedBinaryDomainCombinations()
3225 .contains( BasicBinaryDomainCombination.obtainInstance( "z", "y" ) ) ) {
3228 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "v",
3232 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3236 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3240 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3244 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3248 calc_u.setAllowDomainsToBeIgnored( true );
3249 calc_u.addDomainIdToIgnore( u.getDomainId() );
3250 calc_u.addDomainIdToIgnore( "other" );
3251 calc_u.addDomainIdToIgnore( "other_too" );
3252 if ( calc_u.getAllDomains().size() != 5 ) {
3255 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3258 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3261 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3264 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3267 if ( calc_u.getSharedDomains().size() != 3 ) {
3270 if ( calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3273 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3276 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3279 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3282 if ( calc_u.getAllDomains().size() != 5 ) {
3285 if ( calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3288 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3291 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3294 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3297 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3300 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3303 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 2 ) {
3306 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3309 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3312 if ( calc_u.getAllBinaryDomainCombinations().size() != 3 ) {
3315 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3316 .contains( BasicBinaryDomainCombination.obtainInstance( "v", "u" ) ) ) {
3319 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3320 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "v" ) ) ) {
3323 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3324 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "x" ) ) ) {
3327 if ( calc_u.getSharedBinaryDomainCombinations()
3328 .contains( BasicBinaryDomainCombination.obtainInstance( "w", "u" ) ) ) {
3331 if ( !calc_u.getSharedBinaryDomainCombinations()
3332 .contains( BasicBinaryDomainCombination.obtainInstance( "z", "y" ) ) ) {
3335 if ( calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "v",
3339 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3343 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3347 if ( calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "w",
3351 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3355 calc_u.setAllowDomainsToBeIgnored( false );
3356 if ( calc_u.getAllDomains().size() != 6 ) {
3360 calc_u.setAllowDomainsToBeIgnored( true );
3361 calc_u.deleteAllDomainIdsToIgnore();
3362 calc_u.addDomainIdToIgnore( "v" );
3363 calc_u.addDomainIdToIgnore( "w" );
3364 calc_u.addDomainIdToIgnore( "other" );
3365 calc_u.addDomainIdToIgnore( "other_too" );
3366 if ( calc_u.getAllDomains().size() != 4 ) {
3369 if ( calc_u.getDomainsSpecificToGenome0().size() != 1 ) {
3372 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3375 if ( calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3378 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3381 if ( calc_u.getSharedDomains().size() != 3 ) {
3384 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3387 if ( calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3390 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3393 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3396 if ( calc_u.getAllDomains().size() != 4 ) {
3399 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3402 if ( calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3405 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3408 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3411 if ( calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3414 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3417 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 0 ) {
3420 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3423 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3426 if ( calc_u.getAllBinaryDomainCombinations().size() != 1 ) {
3429 if ( !calc_u.getSharedBinaryDomainCombinations()
3430 .contains( BasicBinaryDomainCombination.obtainInstance( "y", "z" ) ) ) {
3433 if ( !calc_u.getAllBinaryDomainCombinations().contains( BasicBinaryDomainCombination.obtainInstance( "z",
3437 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3438 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3441 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3444 calc_u.setAllowDomainsToBeIgnored( false );
3445 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3446 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3449 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3452 calc_u.setAllowDomainsToBeIgnored( true );
3453 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3454 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3457 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3460 calc_u.deleteAllDomainIdsToIgnore();
3461 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3462 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3465 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3469 catch ( final Exception e ) {
3470 e.printStackTrace( System.out );
3476 private static boolean testDomainCombinationCounting( final File test_dir ) {
3478 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
3479 + ForesterUtil.getFileSeparator() + "hmmpfam_output2" ), "human", "ls" );
3480 parser.setEValueMaximum( 0.2 );
3481 parser.setIgnoreDufs( true );
3482 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
3483 final List<Protein> domain_collections = parser.parse();
3484 final BasicGenomeWideCombinableDomains cdcc = BasicGenomeWideCombinableDomains
3485 .createInstance( domain_collections, false, new BasicSpecies( "human" ) );
3486 CombinableDomains cd = cdcc.get( "A" );
3487 if ( cd.getKeyDomainCount() != 9 ) {
3490 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3493 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3496 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 2 ) {
3499 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3502 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3505 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3508 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3511 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3514 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3517 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3520 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3523 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3526 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3529 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3532 if ( cd.getKeyDomainCount() != 9 ) {
3535 cd = cdcc.get( "B" );
3536 if ( cd.getKeyDomainCount() != 12 ) {
3539 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3542 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3545 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 6 ) {
3548 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3551 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3554 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3557 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3560 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3563 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3566 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3569 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3572 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3575 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3578 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3581 if ( cd.getKeyDomainCount() != 12 ) {
3584 cd = cdcc.get( "C" );
3585 if ( cd.getKeyDomainCount() != 10 ) {
3588 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3591 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3594 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 4 ) {
3597 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3600 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 2 ) {
3603 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3606 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3609 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3612 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3615 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3618 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 2 ) {
3621 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 2 ) {
3624 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 2 ) {
3627 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3630 cd = cdcc.get( "D" );
3631 if ( cd.getKeyDomainCount() != 15 ) {
3634 if ( cd.getKeyDomainProteinsCount() != 6 ) {
3637 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3640 cd = cdcc.get( "E" );
3641 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3644 if ( cd.getKeyDomainCount() != 1 ) {
3647 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3650 cd = cdcc.get( "U" );
3651 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3654 if ( cd.getKeyDomainCount() != 6 ) {
3657 if ( cd.getKeyDomainProteinsCount() != 3 ) {
3660 cd = cdcc.get( "V" );
3661 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3664 if ( cd.getKeyDomainCount() != 3 ) {
3667 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3670 cd = cdcc.get( "W" );
3671 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3674 if ( cd.getKeyDomainCount() != 2 ) {
3677 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3680 cd = cdcc.get( "X" );
3681 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3684 if ( cd.getKeyDomainCount() != 2 ) {
3687 cd = cdcc.get( "Y" );
3688 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3691 cd = cdcc.get( "Z" );
3692 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3695 cd = cdcc.get( "NN" );
3696 if ( cd.getKeyDomainCount() != 1 ) {
3699 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3702 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3705 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3708 cd = cdcc.get( "MM" );
3709 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3712 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 0 ) {
3715 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3718 cd = cdcc.get( "OO" );
3719 if ( cd.getNumberOfCombinableDomains() != 2 ) {
3722 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3725 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 1 ) {
3728 cd = cdcc.get( "QQ" );
3729 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3732 if ( cd.getKeyDomainCount() != 17 ) {
3735 if ( cd.getKeyDomainProteinsCount() != 4 ) {
3738 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "QQ" ).getDomainId() ) != 3 ) {
3741 cd = cdcc.get( "PP" );
3742 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3745 if ( cd.getKeyDomainCount() != 2 ) {
3748 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3751 cd = cdcc.get( "singlet" );
3752 if ( cd.getKeyDomainCount() != 1 ) {
3755 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3758 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3761 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "singlet" ).getDomainId() ) != 0 ) {
3764 cd = cdcc.get( "three" );
3765 if ( cd.getKeyDomainCount() != 3 ) {
3768 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3771 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3774 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 1 ) {
3777 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
3780 // Ignore combinations with same:
3781 final BasicGenomeWideCombinableDomains cdcc2 = BasicGenomeWideCombinableDomains
3782 .createInstance( domain_collections,
3784 new BasicSpecies( "human" ),
3786 DomainCombinationType.BASIC,
3789 cd = cdcc2.get( "A" );
3790 if ( cd.getKeyDomainCount() != 9 ) {
3793 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3796 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3799 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 0 ) {
3802 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3805 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3808 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3811 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3814 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3817 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3820 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3823 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3826 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3829 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3832 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3835 cd = cdcc2.get( "B" );
3836 if ( cd.getKeyDomainCount() != 12 ) {
3839 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3842 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3845 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 6 ) {
3848 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 0 ) {
3851 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 4 ) {
3854 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3857 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3860 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3863 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3866 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3869 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3872 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3875 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3878 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3881 cd = cdcc2.get( "C" );
3882 if ( cd.getKeyDomainCount() != 10 ) {
3885 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3888 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3891 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 4 ) {
3894 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 4 ) {
3897 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 0 ) {
3900 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3903 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3906 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3909 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3912 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3915 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 2 ) {
3918 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 2 ) {
3921 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 2 ) {
3924 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3927 cd = cdcc2.get( "D" );
3928 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3931 cd = cdcc2.get( "E" );
3932 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3935 if ( cd.getKeyDomainCount() != 1 ) {
3938 cd = cdcc2.get( "U" );
3939 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3942 cd = cdcc2.get( "V" );
3943 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3946 cd = cdcc2.get( "W" );
3947 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3950 cd = cdcc2.get( "X" );
3951 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3954 cd = cdcc2.get( "Y" );
3955 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3958 cd = cdcc2.get( "Z" );
3959 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3962 cd = cdcc2.get( "NN" );
3963 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3966 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3969 cd = cdcc2.get( "MM" );
3970 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3973 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 0 ) {
3976 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 1 ) {
3979 cd = cdcc2.get( "OO" );
3980 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3983 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 0 ) {
3986 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 1 ) {
3989 cd = cdcc2.get( "QQ" );
3990 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3993 if ( cd.getNumberOfProteinsExhibitingCombination( "QQ" ) != 0 ) {
3996 cd = cdcc2.get( "singlet" );
3997 if ( cd.getKeyDomainCount() != 1 ) {
4000 if ( cd.getKeyDomainProteinsCount() != 1 ) {
4003 if ( cd.getNumberOfCombinableDomains() != 0 ) {
4006 if ( cd.getNumberOfProteinsExhibitingCombination( "singlet" ) != 0 ) {
4009 cd = cdcc2.get( "three" );
4010 if ( cd.getKeyDomainCount() != 3 ) {
4013 if ( cd.getKeyDomainProteinsCount() != 1 ) {
4016 if ( cd.getNumberOfCombinableDomains() != 0 ) {
4019 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 0 ) {
4022 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
4026 catch ( final Exception e ) {
4027 e.printStackTrace( System.out );
4033 private static boolean testDomainSorting() {
4035 final Domain A = new BasicDomain( "A", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4036 final Domain B = new BasicDomain( "B", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4037 final Domain C = new BasicDomain( "C", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.2, -12 );
4038 final Domain D = new BasicDomain( "D", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.3, -12 );
4039 final Domain E = new BasicDomain( "E", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.4, -12 );
4040 final Domain F = new BasicDomain( "F", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.5, -12 );
4041 final Domain G = new BasicDomain( "G", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.6, -12 );
4042 final Domain H1 = new BasicDomain( "H", ( short ) 100, ( short ) 200, ( short ) 1, ( short ) 5, 0.7, -12 );
4043 final Domain H2 = new BasicDomain( "H", ( short ) 300, ( short ) 400, ( short ) 2, ( short ) 5, 0.7, -12 );
4044 final Domain H3 = new BasicDomain( "H", ( short ) 500, ( short ) 600, ( short ) 3, ( short ) 5, 0.7, -12 );
4045 final Domain H4 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 4, ( short ) 5, 0.7, -12 );
4046 final Domain H5 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4047 final Domain H6 = new BasicDomain( "H",
4054 final Domain H7 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4055 final Domain H8 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 200, 0.7, -12 );
4056 final Protein protein = new BasicProtein( "00", "bat", 0 );
4057 protein.addProteinDomain( H5 );
4058 protein.addProteinDomain( H2 );
4059 protein.addProteinDomain( H7 );
4060 protein.addProteinDomain( H6 );
4061 protein.addProteinDomain( A );
4062 protein.addProteinDomain( G );
4063 protein.addProteinDomain( H4 );
4064 protein.addProteinDomain( D );
4065 protein.addProteinDomain( H1 );
4066 protein.addProteinDomain( C );
4067 protein.addProteinDomain( E );
4068 protein.addProteinDomain( F );
4069 protein.addProteinDomain( B );
4070 protein.addProteinDomain( H3 );
4071 protein.addProteinDomain( H7 );
4072 protein.addProteinDomain( H7 );
4073 protein.addProteinDomain( H8 );
4074 final List<Domain> sorted = SurfacingUtil.sortDomainsWithAscendingConfidenceValues( protein );
4075 if ( sorted.size() != 17 ) {
4078 if ( !sorted.get( 0 ).getDomainId().equals( "A" ) ) {
4081 if ( sorted.get( 0 ).getNumber() != 1 ) {
4084 if ( !sorted.get( 1 ).getDomainId().equals( "B" ) ) {
4087 if ( sorted.get( 1 ).getNumber() != 1 ) {
4090 if ( !sorted.get( 2 ).getDomainId().equals( "C" ) ) {
4093 if ( sorted.get( 2 ).getNumber() != 1 ) {
4096 if ( !sorted.get( 3 ).getDomainId().equals( "D" ) ) {
4099 if ( sorted.get( 3 ).getNumber() != 1 ) {
4102 if ( !sorted.get( 4 ).getDomainId().equals( "E" ) ) {
4105 if ( sorted.get( 4 ).getNumber() != 1 ) {
4108 if ( !sorted.get( 5 ).getDomainId().equals( "F" ) ) {
4111 if ( sorted.get( 5 ).getNumber() != 1 ) {
4114 if ( !sorted.get( 6 ).getDomainId().equals( "G" ) ) {
4117 if ( sorted.get( 6 ).getNumber() != 1 ) {
4120 if ( !sorted.get( 7 ).getDomainId().equals( "H" ) ) {
4123 if ( sorted.get( 7 ).getNumber() != 5 ) {
4126 if ( !sorted.get( 8 ).getDomainId().equals( "H" ) ) {
4129 if ( sorted.get( 8 ).getNumber() != 2 ) {
4132 if ( !sorted.get( 9 ).getDomainId().equals( "H" ) ) {
4135 if ( sorted.get( 9 ).getNumber() != 6 ) {
4138 if ( !sorted.get( 10 ).getDomainId().equals( "H" ) ) {
4141 if ( sorted.get( 10 ).getNumber() != 4 ) {
4144 if ( !sorted.get( 11 ).getDomainId().equals( "H" ) ) {
4147 if ( sorted.get( 11 ).getNumber() != 1 ) {
4150 if ( sorted.get( 11 ).getTotalCount() != 5 ) {
4153 if ( !sorted.get( 12 ).getDomainId().equals( "H" ) ) {
4156 if ( sorted.get( 12 ).getNumber() != 3 ) {
4159 if ( !sorted.get( 13 ).getDomainId().equals( "H7" ) ) {
4162 if ( sorted.get( 13 ).getNumber() != 5 ) {
4165 if ( !sorted.get( 14 ).getDomainId().equals( "H7" ) ) {
4168 if ( sorted.get( 14 ).getNumber() != 5 ) {
4171 if ( !sorted.get( 15 ).getDomainId().equals( "H7" ) ) {
4174 if ( sorted.get( 15 ).getNumber() != 5 ) {
4177 // To check if sorting is stable [as claimed by Sun for
4178 // Collections.sort( List )]
4179 if ( !sorted.get( 16 ).getDomainId().equals( "H7" ) ) {
4182 if ( sorted.get( 16 ).getNumber() != 5 ) {
4185 if ( sorted.get( 16 ).getTotalCount() != 200 ) {
4189 catch ( final Exception e ) {
4190 e.printStackTrace( System.out );
4196 private static boolean testGenomeWideCombinableDomains() {
4198 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4199 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4200 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4201 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4202 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4203 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4204 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4205 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4206 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4207 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
4208 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
4209 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
4210 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
4211 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
4212 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
4213 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
4214 eel_1.addProteinDomain( a );
4215 eel_2.addProteinDomain( a );
4216 eel_2.addProteinDomain( b );
4217 eel_3.addProteinDomain( a );
4218 eel_3.addProteinDomain( a );
4219 eel_3.addProteinDomain( b );
4220 eel_4.addProteinDomain( a );
4221 eel_4.addProteinDomain( b );
4222 eel_4.addProteinDomain( c );
4223 eel_4.addProteinDomain( d );
4224 eel_4.addProteinDomain( e );
4225 eel_5.addProteinDomain( e );
4226 eel_5.addProteinDomain( e );
4227 eel_5.addProteinDomain( f );
4228 eel_5.addProteinDomain( f );
4229 eel_5.addProteinDomain( f );
4230 eel_5.addProteinDomain( f );
4231 eel_6.addProteinDomain( g );
4232 eel_6.addProteinDomain( h );
4233 final List<Protein> protein_list_eel = new ArrayList<Protein>();
4234 protein_list_eel.add( eel_0 );
4235 protein_list_eel.add( eel_1 );
4236 protein_list_eel.add( eel_2 );
4237 protein_list_eel.add( eel_3 );
4238 protein_list_eel.add( eel_4 );
4239 protein_list_eel.add( eel_5 );
4240 protein_list_eel.add( eel_6 );
4241 final BasicGenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
4242 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
4243 final BasicGenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
4244 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
4245 if ( !eel_not_ignore.contains( "a" ) ) {
4248 if ( !eel_not_ignore.contains( "b" ) ) {
4251 if ( !eel_not_ignore.contains( "c" ) ) {
4254 if ( !eel_not_ignore.contains( "d" ) ) {
4257 if ( !eel_not_ignore.contains( "e" ) ) {
4260 if ( !eel_not_ignore.contains( "f" ) ) {
4263 if ( !eel_not_ignore.contains( "g" ) ) {
4266 if ( !eel_not_ignore.contains( "h" ) ) {
4269 if ( eel_not_ignore.contains( "x" ) ) {
4272 if ( !eel_ignore.contains( "a" ) ) {
4275 if ( !eel_ignore.contains( "b" ) ) {
4278 if ( !eel_ignore.contains( "c" ) ) {
4281 if ( !eel_ignore.contains( "d" ) ) {
4284 if ( !eel_ignore.contains( "e" ) ) {
4287 if ( !eel_ignore.contains( "f" ) ) {
4290 if ( !eel_ignore.contains( "g" ) ) {
4293 if ( !eel_ignore.contains( "h" ) ) {
4296 if ( eel_ignore.contains( "x" ) ) {
4299 if ( eel_not_ignore.getSize() != 8 ) {
4302 if ( eel_ignore.getSize() != 8 ) {
4305 if ( eel_not_ignore.get( "a" ).getCombinableDomainsIds().size() != 5 ) {
4308 if ( eel_not_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4311 if ( eel_not_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4314 if ( eel_not_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4317 if ( eel_not_ignore.get( "e" ).getCombinableDomainsIds().size() != 6 ) {
4320 if ( eel_not_ignore.get( "f" ).getCombinableDomainsIds().size() != 2 ) {
4323 if ( eel_not_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4326 if ( eel_not_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4329 if ( eel_ignore.get( "a" ).getCombinableDomainsIds().size() != 4 ) {
4332 if ( eel_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4335 if ( eel_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4338 if ( eel_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4341 if ( eel_ignore.get( "e" ).getCombinableDomainsIds().size() != 5 ) {
4344 if ( eel_ignore.get( "f" ).getCombinableDomainsIds().size() != 1 ) {
4347 if ( eel_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4350 if ( eel_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4353 if ( eel_not_ignore.getAllDomainIds().size() != 8 ) {
4356 if ( !eel_not_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4359 if ( !eel_not_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4362 if ( !eel_not_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4365 if ( !eel_not_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4368 if ( !eel_not_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4371 if ( !eel_not_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4374 if ( !eel_not_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4377 if ( !eel_not_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4380 if ( eel_not_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4383 if ( eel_ignore.getAllDomainIds().size() != 8 ) {
4386 if ( !eel_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4389 if ( !eel_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4392 if ( !eel_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4395 if ( !eel_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4398 if ( !eel_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4401 if ( !eel_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4404 if ( !eel_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4407 if ( !eel_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4410 if ( eel_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4413 final SortedSet<BinaryDomainCombination> bc0 = eel_not_ignore.toBinaryDomainCombinations();
4414 if ( bc0.size() != 15 ) {
4417 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
4420 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
4423 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
4426 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
4429 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
4432 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
4435 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
4438 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
4441 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
4444 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
4447 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
4450 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
4453 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
4456 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
4459 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
4462 if ( !bc0.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
4465 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "a" ) ) ) {
4468 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "f", "b" ) ) ) {
4471 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "h" ) ) ) {
4474 if ( bc0.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
4477 final SortedSet<BinaryDomainCombination> bc1 = eel_ignore.toBinaryDomainCombinations();
4478 if ( bc1.size() != 12 ) {
4481 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "a" ) ) ) {
4484 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "b" ) ) ) {
4487 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "a" ) ) ) {
4490 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "c" ) ) ) {
4493 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "d" ) ) ) {
4496 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "e" ) ) ) {
4499 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "c" ) ) ) {
4502 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "d" ) ) ) {
4505 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "e" ) ) ) {
4508 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "c", "d" ) ) ) {
4511 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "c", "e" ) ) ) {
4514 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "d", "e" ) ) ) {
4517 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "e", "f" ) ) ) {
4520 if ( !bc1.contains( BasicBinaryDomainCombination.obtainInstance( "g", "h" ) ) ) {
4523 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "e", "e" ) ) ) {
4526 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "f" ) ) ) {
4529 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "a" ) ) ) {
4532 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "f", "b" ) ) ) {
4535 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "a", "g" ) ) ) {
4538 if ( bc1.contains( BasicBinaryDomainCombination.obtainInstance( "b", "g" ) ) ) {
4542 catch ( final Exception e ) {
4543 e.printStackTrace( System.out );
4549 private static boolean testHmmPfamOutputParser( final File test_dir ) {
4551 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
4552 + ForesterUtil.getFileSeparator() + "hmmpfam_output" ), "human", "ls" );
4553 parser.setEValueMaximum( 0.2 );
4554 parser.setIgnoreDufs( true );
4555 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4556 List<?> domain_collections = null;
4557 domain_collections = parser.parse();
4558 if ( parser.getDomainsEncountered() != 4 ) {
4561 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4564 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4567 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4570 if ( parser.getDomainsStored() != 3 ) {
4573 if ( domain_collections.size() != 1 ) {
4576 final Protein pdc = ( Protein ) domain_collections.get( 0 );
4577 if ( !pdc.getProteinId().equals( new ProteinId( "ENSP00000285681" ) ) ) {
4580 if ( !pdc.getSpecies().getSpeciesId().equals( "human" ) ) {
4583 if ( pdc.getNumberOfProteinDomains() != 3 ) {
4586 if ( !pdc.getAccession().equals( "acc_ENSP00000285681" ) ) {
4591 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4594 final List<Domain> uba = pdc.getProteinDomains( "UBA" );
4595 final List<Domain> uim = pdc.getProteinDomains( "UIM" );
4596 final List<Domain> uch = pdc.getProteinDomains( "UCH" );
4597 if ( uba.size() != 1 ) {
4600 if ( uim.size() != 2 ) {
4603 if ( uch.size() != 0 ) {
4606 final BasicDomain uim_domain = ( BasicDomain ) uim.get( 1 );
4607 if ( !uim_domain.getDomainId().equals( "UIM" ) ) {
4610 if ( uim_domain.getTotalCount() != 2 ) {
4613 final BasicDomain uba_domain = ( BasicDomain ) uba.get( 0 );
4614 if ( !uba_domain.getDomainId().equals( "UBA" ) ) {
4617 if ( uba_domain.getNumber() != 1 ) {
4620 if ( uba_domain.getTotalCount() != 1 ) {
4623 if ( uba_domain.getFrom() != 16 ) {
4626 if ( uba_domain.getTo() != 57 ) {
4629 final HmmPfamOutputParser parser2 = new HmmPfamOutputParser( new File( test_dir
4630 + ForesterUtil.getFileSeparator() + "hmmpfam_output_short" ), "human", "ls" );
4631 parser2.setEValueMaximum( 0.2 );
4632 parser2.setIgnoreDufs( true );
4633 parser2.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4634 List<Protein> domain_collections2 = null;
4635 domain_collections2 = parser2.parse();
4636 if ( parser2.getDomainsEncountered() != 4 ) {
4639 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4642 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4645 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4648 if ( parser2.getDomainsStored() != 3 ) {
4651 if ( domain_collections2.size() != 1 ) {
4654 final Protein pdc2 = domain_collections2.get( 0 );
4655 if ( !pdc2.getProteinId().getId().equals( "ENSP00000285681" ) ) {
4658 if ( !pdc2.getSpecies().getSpeciesId().equals( "human" ) ) {
4661 if ( !pdc2.getName().equals( "" ) ) {
4664 if ( !pdc2.getAccession().equals( "223" ) ) {
4669 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4672 if ( pdc2.getNumberOfProteinDomains() != 3 ) {
4675 final List<Domain> uba2 = pdc2.getProteinDomains( "UBA" );
4676 final List<Domain> uim2 = pdc2.getProteinDomains( "UIM" );
4677 final List<Domain> uch2 = pdc2.getProteinDomains( "UCH" );
4678 if ( uba2.size() != 1 ) {
4681 if ( uim2.size() != 2 ) {
4684 if ( uch2.size() != 0 ) {
4687 final BasicDomain uim_domain2 = ( BasicDomain ) uim2.get( 1 );
4688 if ( !uim_domain2.getDomainId().equals( "UIM" ) ) {
4691 if ( uim_domain2.getTotalCount() != 2 ) {
4694 final BasicDomain uba_domain2 = ( BasicDomain ) uba2.get( 0 );
4695 if ( !uba_domain2.getDomainId().equals( "UBA" ) ) {
4698 if ( uba_domain2.getNumber() != 1 ) {
4701 if ( uba_domain2.getTotalCount() != 1 ) {
4704 if ( uba_domain2.getFrom() != 16 ) {
4707 if ( uba_domain2.getTo() != 57 ) {
4711 catch ( final Exception e ) {
4712 e.printStackTrace( System.out );
4718 private static boolean testHmmPfamOutputParserWithFilter( final File test_dir ) {
4720 HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator()
4721 + "hmmpfam_output3" ), "human", "ls" );
4722 parser.setEValueMaximum( 0.2 );
4723 parser.setIgnoreDufs( true );
4724 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4725 List<Protein> proteins = null;
4726 proteins = parser.parse();
4727 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4730 if ( proteins.size() != 4 ) {
4734 Set<String> filter = new TreeSet<String>();
4735 filter.add( "beauty" );
4736 filter.add( "strange" );
4737 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4740 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4741 parser.setEValueMaximum( 0.2 );
4742 parser.setIgnoreDufs( true );
4743 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4745 proteins = parser.parse();
4746 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4749 if ( proteins.size() != 4 ) {
4753 filter = new TreeSet<String>();
4754 filter.add( "beauty" );
4755 filter.add( "strange" );
4756 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4759 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4760 parser.setEValueMaximum( 0.2 );
4761 parser.setIgnoreDufs( true );
4762 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4764 proteins = parser.parse();
4765 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4768 if ( proteins.size() != 0 ) {
4772 filter = new TreeSet<String>();
4773 filter.add( "UIM" );
4776 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4779 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4780 parser.setEValueMaximum( 0.2 );
4781 parser.setIgnoreDufs( true );
4782 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4784 proteins = parser.parse();
4785 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4788 if ( proteins.size() != 4 ) {
4792 filter = new TreeSet<String>();
4793 filter.add( "UIM" );
4797 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4800 HmmPfamOutputParser.FilterType.NEGATIVE_DOMAIN );
4801 parser.setEValueMaximum( 0.2 );
4802 parser.setIgnoreDufs( true );
4803 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4805 proteins = parser.parse();
4806 if ( parser.getDomainsIgnoredDueToNegativeDomainFilter() != 7 ) {
4809 if ( proteins.size() != 3 ) {
4813 filter = new TreeSet<String>();
4814 filter.add( "UIM" );
4817 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4820 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4821 parser.setEValueMaximum( 0.2 );
4822 parser.setIgnoreDufs( true );
4823 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4825 proteins = parser.parse();
4826 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4829 if ( proteins.size() != 0 ) {
4833 filter = new TreeSet<String>();
4834 filter.add( "UIM" );
4835 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4838 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4839 parser.setEValueMaximum( 0.2 );
4840 parser.setIgnoreDufs( true );
4841 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4843 proteins = parser.parse();
4844 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4847 if ( parser.getProteinsStored() != 3 ) {
4850 if ( proteins.size() != 3 ) {
4854 filter = new TreeSet<String>();
4855 filter.add( "UIM" );
4856 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4859 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4860 parser.setEValueMaximum( 0.2 );
4861 parser.setIgnoreDufs( true );
4862 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4864 proteins = parser.parse();
4865 if ( parser.getProteinsIgnoredDueToFilter() != 3 ) {
4868 if ( parser.getProteinsStored() != 1 ) {
4871 if ( proteins.size() != 1 ) {
4875 filter = new TreeSet<String>();
4878 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4881 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4882 parser.setEValueMaximum( 0.2 );
4883 parser.setIgnoreDufs( true );
4884 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4886 proteins = parser.parse();
4887 if ( parser.getDomainsEncountered() != 11 ) {
4890 if ( parser.getProteinsEncountered() != 4 ) {
4893 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4896 if ( parser.getProteinsStored() != 3 ) {
4899 if ( proteins.size() != 3 ) {
4903 catch ( final Exception e ) {
4904 e.printStackTrace( System.out );
4910 private static boolean testParsimony() {
4912 final BinaryStates X = BinaryStates.PRESENT;
4913 final BinaryStates O = BinaryStates.ABSENT;
4914 final GainLossStates G = GainLossStates.GAIN;
4915 final GainLossStates L = GainLossStates.LOSS;
4916 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
4917 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
4918 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4919 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4920 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4921 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4922 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4923 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4924 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4925 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4926 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4927 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4928 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4929 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4930 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4931 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4932 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4933 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4934 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4935 // 1 a-a a-b a-c e-f-g-h l-m
4936 // 2 a-b a-c e-f-g-i n-o
4937 // 3 a-b a-d e-f-g-j p-q
4939 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
4940 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
4941 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
4943 // 1 a b c e f g h l m
4944 // 2 a b c e f g i n o
4945 // 3 a b d e f g j p q
4947 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
4948 aa1.addProteinDomain( a );
4949 aa1.addProteinDomain( a );
4950 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
4951 ab1.addProteinDomain( a );
4952 ab1.addProteinDomain( b );
4953 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
4954 ac1.addProteinDomain( a );
4955 ac1.addProteinDomain( c );
4956 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
4957 efgh1.addProteinDomain( e );
4958 efgh1.addProteinDomain( f );
4959 efgh1.addProteinDomain( g );
4960 efgh1.addProteinDomain( h );
4961 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
4962 lm1.addProteinDomain( l );
4963 lm1.addProteinDomain( m );
4964 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
4965 ab2.addProteinDomain( a );
4966 ab2.addProteinDomain( b );
4967 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
4968 ac2.addProteinDomain( a );
4969 ac2.addProteinDomain( c );
4970 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
4971 efgi2.addProteinDomain( e );
4972 efgi2.addProteinDomain( f );
4973 efgi2.addProteinDomain( g );
4974 efgi2.addProteinDomain( i );
4975 final Protein no2 = new BasicProtein( "no2", "two", 0 );
4976 no2.addProteinDomain( n );
4977 no2.addProteinDomain( o );
4978 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
4979 ab3.addProteinDomain( a );
4980 ab3.addProteinDomain( b );
4981 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
4982 ad3.addProteinDomain( a );
4983 ad3.addProteinDomain( d );
4984 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
4985 efgj3.addProteinDomain( e );
4986 efgj3.addProteinDomain( f );
4987 efgj3.addProteinDomain( g );
4988 efgj3.addProteinDomain( j );
4989 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
4990 pq3.addProteinDomain( p );
4991 pq3.addProteinDomain( q );
4992 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
4993 ab4.addProteinDomain( a );
4994 ab4.addProteinDomain( b );
4995 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
4996 ad4.addProteinDomain( a );
4997 ad4.addProteinDomain( d );
4998 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
4999 pr4.addProteinDomain( p );
5000 pr4.addProteinDomain( r );
5001 final List<Protein> one_list = new ArrayList<Protein>();
5002 one_list.add( aa1 );
5003 one_list.add( ab1 );
5004 one_list.add( ac1 );
5005 one_list.add( efgh1 );
5006 one_list.add( lm1 );
5007 final List<Protein> two_list = new ArrayList<Protein>();
5008 two_list.add( ab2 );
5009 two_list.add( ac2 );
5010 two_list.add( efgi2 );
5011 two_list.add( no2 );
5012 final List<Protein> three_list = new ArrayList<Protein>();
5013 three_list.add( ab3 );
5014 three_list.add( ad3 );
5015 three_list.add( efgj3 );
5016 three_list.add( pq3 );
5017 final List<Protein> four_list = new ArrayList<Protein>();
5018 four_list.add( ab4 );
5019 four_list.add( ad4 );
5020 four_list.add( pr4 );
5021 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5022 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5023 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5024 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5025 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5026 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5027 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5028 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5029 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5030 gwcd_list.add( one );
5031 gwcd_list.add( two );
5032 gwcd_list.add( three );
5033 gwcd_list.add( four );
5034 final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
5035 .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
5036 final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
5037 .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
5038 // 1 a b c e f g h l m
5039 // 2 a b c e f g i n o
5040 // 3 a b d e f g j p q
5042 if ( matrix_d.getState( 0, 0 ) != X ) {
5045 if ( matrix_d.getState( 0, 1 ) != X ) {
5048 if ( matrix_d.getState( 0, 2 ) != X ) {
5051 if ( matrix_d.getState( 0, 3 ) != O ) {
5054 if ( matrix_d.getState( 0, 4 ) != X ) {
5057 if ( matrix_d.getState( 0, 5 ) != X ) {
5060 if ( matrix_d.getState( 0, 6 ) != X ) {
5063 if ( matrix_d.getState( 0, 7 ) != X ) {
5066 if ( matrix_d.getState( 0, 8 ) != O ) {
5069 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5070 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5071 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5073 if ( matrix_bc.getState( 0, 0 ) != X ) {
5076 if ( matrix_bc.getState( 0, 1 ) != X ) {
5079 if ( matrix_bc.getState( 0, 2 ) != X ) {
5082 if ( matrix_bc.getState( 0, 3 ) != O ) {
5085 if ( matrix_bc.getState( 0, 4 ) != X ) {
5088 if ( matrix_bc.getState( 1, 0 ) != O ) {
5091 if ( matrix_bc.getState( 1, 1 ) != X ) {
5094 if ( matrix_bc.getState( 1, 2 ) != X ) {
5097 if ( matrix_bc.getState( 1, 3 ) != O ) {
5100 if ( matrix_bc.getState( 1, 4 ) != X ) {
5103 if ( matrix_bc.getState( 2, 0 ) != O ) {
5106 if ( matrix_bc.getState( 2, 1 ) != X ) {
5109 if ( matrix_bc.getState( 2, 2 ) != O ) {
5112 if ( matrix_bc.getState( 2, 3 ) != X ) {
5115 if ( matrix_bc.getState( 2, 4 ) != X ) {
5118 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5119 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5120 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5121 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list );
5122 dp0.executeDolloParsimonyOnDomainPresence();
5123 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5124 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5125 dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
5126 final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
5127 final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
5128 if ( is_matrix_d.getState( "root", "A" ) != X ) {
5131 if ( is_matrix_d.getState( "root", "B" ) != X ) {
5134 if ( is_matrix_d.getState( "root", "C" ) != O ) {
5137 if ( is_matrix_d.getState( "root", "D" ) != O ) {
5140 if ( is_matrix_d.getState( "root", "E" ) != X ) {
5143 if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
5146 if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
5149 if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
5152 if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
5155 if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
5158 if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
5161 if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
5164 if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
5167 if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
5170 if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
5173 if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
5176 if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
5179 if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
5182 if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
5186 catch ( final Exception e ) {
5187 e.printStackTrace( System.out );
5193 private static boolean testParsimonyOnSecondaryFeatures() {
5195 final BinaryStates X = BinaryStates.PRESENT;
5196 final BinaryStates O = BinaryStates.ABSENT;
5197 final GainLossStates G = GainLossStates.GAIN;
5198 final GainLossStates L = GainLossStates.LOSS;
5199 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
5200 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
5201 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5202 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5203 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5204 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5205 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5206 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5207 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5208 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5209 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5210 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5211 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5212 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5213 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5214 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5215 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5216 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5217 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5218 // 1 a-a a-b a-c e-f-g-h l-m
5219 // 2 a-b a-c e-f-g-i n-o
5220 // 3 a-b a-d e-f-g-j p-q
5222 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5223 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5224 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5226 // 1 a b c e f g h l m
5227 // 2 a b c e f g i n o
5228 // 3 a b d e f g j p q
5230 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
5231 aa1.addProteinDomain( a );
5232 aa1.addProteinDomain( a );
5233 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
5234 ab1.addProteinDomain( a );
5235 ab1.addProteinDomain( b );
5236 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
5237 ac1.addProteinDomain( a );
5238 ac1.addProteinDomain( c );
5239 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
5240 efgh1.addProteinDomain( e );
5241 efgh1.addProteinDomain( f );
5242 efgh1.addProteinDomain( g );
5243 efgh1.addProteinDomain( h );
5244 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
5245 lm1.addProteinDomain( l );
5246 lm1.addProteinDomain( m );
5247 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
5248 ab2.addProteinDomain( a );
5249 ab2.addProteinDomain( b );
5250 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
5251 ac2.addProteinDomain( a );
5252 ac2.addProteinDomain( c );
5253 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
5254 efgi2.addProteinDomain( e );
5255 efgi2.addProteinDomain( f );
5256 efgi2.addProteinDomain( g );
5257 efgi2.addProteinDomain( i );
5258 final Protein no2 = new BasicProtein( "no2", "two", 0 );
5259 no2.addProteinDomain( n );
5260 no2.addProteinDomain( o );
5261 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
5262 ab3.addProteinDomain( a );
5263 ab3.addProteinDomain( b );
5264 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
5265 ad3.addProteinDomain( a );
5266 ad3.addProteinDomain( d );
5267 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
5268 efgj3.addProteinDomain( e );
5269 efgj3.addProteinDomain( f );
5270 efgj3.addProteinDomain( g );
5271 efgj3.addProteinDomain( j );
5272 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
5273 pq3.addProteinDomain( p );
5274 pq3.addProteinDomain( q );
5275 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
5276 ab4.addProteinDomain( a );
5277 ab4.addProteinDomain( b );
5278 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
5279 ad4.addProteinDomain( a );
5280 ad4.addProteinDomain( d );
5281 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
5282 pr4.addProteinDomain( p );
5283 pr4.addProteinDomain( r );
5284 final List<Protein> one_list = new ArrayList<Protein>();
5285 one_list.add( aa1 );
5286 one_list.add( ab1 );
5287 one_list.add( ac1 );
5288 one_list.add( efgh1 );
5289 one_list.add( lm1 );
5290 final List<Protein> two_list = new ArrayList<Protein>();
5291 two_list.add( ab2 );
5292 two_list.add( ac2 );
5293 two_list.add( efgi2 );
5294 two_list.add( no2 );
5295 final List<Protein> three_list = new ArrayList<Protein>();
5296 three_list.add( ab3 );
5297 three_list.add( ad3 );
5298 three_list.add( efgj3 );
5299 three_list.add( pq3 );
5300 final List<Protein> four_list = new ArrayList<Protein>();
5301 four_list.add( ab4 );
5302 four_list.add( ad4 );
5303 four_list.add( pr4 );
5304 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5305 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5306 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5307 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5308 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5309 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5310 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5311 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5312 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5313 gwcd_list.add( one );
5314 gwcd_list.add( two );
5315 gwcd_list.add( three );
5316 gwcd_list.add( four );
5317 final Map<String, Set<String>> map_same = new HashMap<String, Set<String>>();
5318 final HashSet<String> a_s = new HashSet<String>();
5320 final HashSet<String> b_s = new HashSet<String>();
5322 final HashSet<String> c_s = new HashSet<String>();
5324 final HashSet<String> d_s = new HashSet<String>();
5326 final HashSet<String> e_s = new HashSet<String>();
5328 final HashSet<String> f_s = new HashSet<String>();
5330 final HashSet<String> g_s = new HashSet<String>();
5332 final HashSet<String> h_s = new HashSet<String>();
5334 final HashSet<String> i_s = new HashSet<String>();
5336 final HashSet<String> j_s = new HashSet<String>();
5338 final HashSet<String> l_s = new HashSet<String>();
5340 final HashSet<String> m_s = new HashSet<String>();
5342 final HashSet<String> n_s = new HashSet<String>();
5344 final HashSet<String> o_s = new HashSet<String>();
5346 final HashSet<String> p_s = new HashSet<String>();
5348 final HashSet<String> q_s = new HashSet<String>();
5350 final HashSet<String> r_s = new HashSet<String>();
5352 map_same.put( a.getDomainId(), a_s );
5353 map_same.put( b.getDomainId(), b_s );
5354 map_same.put( c.getDomainId(), c_s );
5355 map_same.put( d.getDomainId(), d_s );
5356 map_same.put( e.getDomainId(), e_s );
5357 map_same.put( f.getDomainId(), f_s );
5358 map_same.put( g.getDomainId(), g_s );
5359 map_same.put( h.getDomainId(), h_s );
5360 map_same.put( i.getDomainId(), i_s );
5361 map_same.put( j.getDomainId(), j_s );
5362 map_same.put( l.getDomainId(), l_s );
5363 map_same.put( m.getDomainId(), m_s );
5364 map_same.put( n.getDomainId(), n_s );
5365 map_same.put( o.getDomainId(), o_s );
5366 map_same.put( p.getDomainId(), p_s );
5367 map_same.put( q.getDomainId(), q_s );
5368 map_same.put( r.getDomainId(), r_s );
5369 final CharacterStateMatrix<BinaryStates> matrix_s = DomainParsimonyCalculator
5370 .createMatrixOfSecondaryFeaturePresenceOrAbsence( gwcd_list, map_same, null );
5371 // 1 a b c e f g h l m
5372 // 2 a b c e f g i n o
5373 // 3 a b d e f g j p q
5375 if ( matrix_s.getState( 0, 0 ) != X ) {
5378 if ( matrix_s.getState( 0, 1 ) != X ) {
5381 if ( matrix_s.getState( 0, 2 ) != X ) {
5384 if ( matrix_s.getState( 0, 3 ) != O ) {
5387 if ( matrix_s.getState( 0, 4 ) != X ) {
5390 if ( matrix_s.getState( 0, 5 ) != X ) {
5393 if ( matrix_s.getState( 0, 6 ) != X ) {
5396 if ( matrix_s.getState( 0, 7 ) != X ) {
5399 if ( matrix_s.getState( 0, 8 ) != O ) {
5402 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5403 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5404 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5405 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list, map_same );
5406 dp0.executeDolloParsimonyOnSecondaryFeatures( null );
5407 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5408 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5409 if ( is_matrix_d.getState( "root", "AAA" ) != X ) {
5412 if ( is_matrix_d.getState( "root", "BBB" ) != X ) {
5415 if ( is_matrix_d.getState( "root", "CCC" ) != O ) {
5418 if ( is_matrix_d.getState( "root", "DDD" ) != O ) {
5421 if ( is_matrix_d.getState( "root", "EEE" ) != X ) {
5424 if ( gl_matrix_d.getState( "3-4", "PPP" ) != G ) {
5428 catch ( final Exception e ) {
5429 e.printStackTrace( System.out );
5435 private static boolean testPaupLogParser( final File test_dir ) {
5437 final PaupLogParser parser = new PaupLogParser();
5438 parser.setSource( new File( test_dir + ForesterUtil.getFileSeparator() + "paup_log_test_1" ) );
5439 final CharacterStateMatrix<BinaryStates> matrix = parser.parse();
5440 if ( matrix.getNumberOfIdentifiers() != 8 ) {
5443 if ( !matrix.getIdentifier( 0 ).equals( "MOUSE" ) ) {
5446 if ( !matrix.getIdentifier( 1 ).equals( "NEMVE" ) ) {
5449 if ( !matrix.getIdentifier( 2 ).equals( "MONBE" ) ) {
5452 if ( !matrix.getIdentifier( 3 ).equals( "DICDI" ) ) {
5455 if ( !matrix.getIdentifier( 4 ).equals( "ARATH" ) ) {
5458 if ( !matrix.getIdentifier( 5 ).equals( "6" ) ) {
5461 if ( !matrix.getIdentifier( 6 ).equals( "7" ) ) {
5464 if ( !matrix.getIdentifier( 7 ).equals( "8" ) ) {
5467 if ( matrix.getNumberOfCharacters() != ( 66 + 66 + 28 ) ) {
5470 if ( matrix.getState( 0, 4 ) != BinaryStates.ABSENT ) {
5473 if ( matrix.getState( 0, 5 ) != BinaryStates.PRESENT ) {
5476 if ( matrix.getState( 1, 5 ) != BinaryStates.PRESENT ) {
5479 if ( matrix.getState( 7, 154 ) != BinaryStates.ABSENT ) {
5482 if ( matrix.getState( 7, 155 ) != BinaryStates.PRESENT ) {
5485 if ( matrix.getState( 7, 156 ) != BinaryStates.PRESENT ) {
5488 if ( matrix.getState( 7, 157 ) != BinaryStates.ABSENT ) {
5491 if ( matrix.getState( 7, 158 ) != BinaryStates.PRESENT ) {
5494 if ( matrix.getState( 7, 159 ) != BinaryStates.ABSENT ) {
5498 catch ( final Exception e ) {
5499 e.printStackTrace( System.out );