3 // FORESTER -- software libraries and applications
4 // for evolutionary biology research and applications.
6 // Copyright (C) 2008-2009 Christian M. Zmasek
7 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU Lesser General Public
12 // License as published by the Free Software Foundation; either
13 // version 2.1 of the License, or (at your option) any later version.
15 // This library is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 // Contact: phylosoft @ gmail . com
25 // WWW: https://sites.google.com/site/cmzmasek/home/software/forester
27 package org.forester.surfacing;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.HashSet;
33 import java.util.Iterator;
34 import java.util.List;
37 import java.util.SortedSet;
38 import java.util.TreeSet;
40 import org.forester.evoinference.matrix.character.BasicCharacterStateMatrix;
41 import org.forester.evoinference.matrix.character.CharacterStateMatrix;
42 import org.forester.evoinference.matrix.character.CharacterStateMatrix.BinaryStates;
43 import org.forester.evoinference.matrix.character.CharacterStateMatrix.GainLossStates;
44 import org.forester.io.parsers.HmmPfamOutputParser;
45 import org.forester.io.parsers.nexus.PaupLogParser;
46 import org.forester.io.parsers.nhx.NHXParser;
47 import org.forester.phylogeny.Phylogeny;
48 import org.forester.phylogeny.PhylogenyNode;
49 import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
50 import org.forester.phylogeny.factories.PhylogenyFactory;
51 import org.forester.protein.BasicDomain;
52 import org.forester.protein.BasicProtein;
53 import org.forester.protein.BinaryDomainCombination;
54 import org.forester.protein.BinaryDomainCombination.DomainCombinationType;
55 import org.forester.protein.Domain;
56 import org.forester.protein.Protein;
57 import org.forester.protein.ProteinId;
58 import org.forester.species.BasicSpecies;
59 import org.forester.species.Species;
60 import org.forester.test.Test;
61 import org.forester.util.ForesterUtil;
63 @SuppressWarnings( "unused")
64 public class TestSurfacing {
66 private final static double ZERO_DIFF = 1.0E-9;
68 public static boolean isEqual( final double a, final double b ) {
69 return ( ( Math.abs( a - b ) ) < TestSurfacing.ZERO_DIFF );
72 public static boolean test( final File test_dir ) {
73 System.out.print( " Combinable domains: " );
74 if ( !TestSurfacing.testCombinableDomains() ) {
75 System.out.println( "failed." );
78 System.out.println( "OK." );
79 System.out.print( " Directed combinable domains: " );
80 if ( !TestSurfacing.testDirectedCombinableDomains() ) {
81 System.out.println( "failed." );
84 System.out.println( "OK." );
85 System.out.print( " Genome wide specific combinable domains: " );
86 if ( !TestSurfacing.testGenomeWideCombinableDomains() ) {
87 System.out.println( "failed." );
90 System.out.println( "OK." );
91 System.out.print( " Domain architecture based genome similarity calculator: " );
92 if ( !TestSurfacing.testDomainArchitectureBasedGenomeSimilarityCalculator() ) {
93 System.out.println( "failed." );
96 System.out.println( "OK." );
97 System.out.print( " Hmmpfam output parser: " );
98 if ( !TestSurfacing.testHmmPfamOutputParser( test_dir ) ) {
99 System.out.println( "failed." );
102 System.out.println( "OK." );
103 System.out.print( " Hmmpfam output parser with filter: " );
104 if ( !TestSurfacing.testHmmPfamOutputParserWithFilter( test_dir ) ) {
105 System.out.println( "failed." );
108 System.out.println( "OK." );
109 System.out.print( " Combinations based pairwise similarity calculator: " );
110 if ( !TestSurfacing.testCombinationsBasedPairwiseSimilarityCalculator() ) {
111 System.out.println( "failed." );
114 System.out.println( "OK." );
115 System.out.print( " Copy number based pairwise similarity calculator: " );
116 if ( !TestSurfacing.testCopyNumberBasedPairwiseSimilarityCalculator() ) {
119 System.out.println( "OK." );
120 System.out.print( " Domain combination counting: " );
121 if ( !TestSurfacing.testDomainCombinationCounting( test_dir ) ) {
122 System.out.println( "failed." );
125 System.out.println( "OK." );
126 System.out.print( " Basic domain similarity calculator: " );
127 if ( !TestSurfacing.testBasicDomainSimilarityCalculator() ) {
128 System.out.println( "failed." );
131 System.out.println( "OK." );
132 System.out.print( " Basic domain similarity calculator not ignoring species specific domains: " );
133 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() ) {
134 System.out.println( "failed." );
137 System.out.println( "OK." );
138 System.out.print( " Basic domain similarity calculator removal of singles: " );
139 if ( !TestSurfacing.testBasicDomainSimilarityCalculatorRemovalOfSingles() ) {
140 System.out.println( "failed." );
143 System.out.println( "OK." );
144 System.out.print( " Domain sorting: " );
145 if ( !TestSurfacing.testDomainSorting() ) {
146 System.out.println( "failed." );
149 System.out.println( "OK." );
150 System.out.print( " Overlap removal: " );
151 if ( !TestSurfacing.testOverlapRemoval() ) {
152 System.out.println( "failed." );
155 System.out.println( "OK." );
156 System.out.print( " Engulfing overlap removal: " );
157 if ( !TestSurfacing.testEngulfingOverlapRemoval() ) {
158 System.out.println( "failed." );
161 System.out.println( "OK." );
162 System.out.print( " Binary domain combination: " );
163 if ( !TestSurfacing.testBinaryDomainCombination() ) {
164 System.out.println( "failed." );
167 System.out.println( "OK." );
168 System.out.print( " Parsimony: " );
169 if ( !TestSurfacing.testParsimony() ) {
170 System.out.println( "failed." );
173 System.out.println( "OK." );
174 System.out.print( " Directedness: " );
175 if ( !TestSurfacing.testDirectedness() ) {
176 System.out.println( "failed." );
179 System.out.println( "OK." );
180 System.out.print( " Directedness and adjacency: " );
181 if ( !TestSurfacing.testDirectednessAndAdjacency() ) {
182 System.out.println( "failed." );
185 System.out.println( "OK." );
186 System.out.print( " Dollo parsimony on secodary features: " );
187 if ( !TestSurfacing.testParsimonyOnSecondaryFeatures() ) {
188 System.out.println( "failed." );
191 System.out.println( "OK." );
192 System.out.print( " Paup log parser: " );
193 if ( !TestSurfacing.testPaupLogParser( test_dir ) ) {
194 System.out.println( "failed." );
197 System.out.println( "OK." );
198 System.out.print( " Binary state matrix to gain loss matrix: " );
199 if ( !TestSurfacing.testBinaryStateMatrixToGainLossMatrix( test_dir ) ) {
200 System.out.println( "failed." );
203 System.out.println( "OK." );
207 private static StringBuffer mapToStringBuffer( final Map<PhylogenyNode, CharacterStateMatrix.BinaryStates> map ) {
208 final StringBuffer sb = new StringBuffer();
209 for( final PhylogenyNode key : map.keySet() ) {
210 if ( !key.isExternal() ) {
211 sb.append( key.getName() );
213 sb.append( map.get( key ).toString() );
214 sb.append( ForesterUtil.getLineSeparator() );
220 private static boolean testBasicDomainSimilarityCalculator() {
228 // m 2/(2+3) 0 4/(4+2)
233 // mean = ( 2/5 + 0 + 2/3 + 1/5 + 1/2 + 2/7 ) / 6
253 // m - 2/(2+3) 4/(4+2)
257 // mean = (2/5 + 2/3 + 1/2)/3 =
263 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
264 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
265 final Domain C = new BasicDomain( "C", 1, 2, ( short ) 1, ( short ) 1, 0.3, -12 );
266 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
267 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
268 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
269 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
270 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
271 if ( !TestSurfacing.isEqual( X.getPerSequenceScore(), -12 ) ) {
274 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
275 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
276 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
277 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
278 mouse_1.addProteinDomain( A );
279 mouse_1.addProteinDomain( B );
280 mouse_1.addProteinDomain( C );
281 mouse_1.addProteinDomain( D );
282 mouse_1.addProteinDomain( E );
283 rabbit_1.addProteinDomain( A );
284 rabbit_1.addProteinDomain( C );
285 rabbit_1.addProteinDomain( E );
286 rabbit_1.addProteinDomain( F );
287 rabbit_1.addProteinDomain( F );
288 rabbit_1.addProteinDomain( F );
289 rabbit_1.addProteinDomain( F );
290 rabbit_1.addProteinDomain( F );
291 rabbit_1.addProteinDomain( F );
292 ciona_1.addProteinDomain( A );
293 ciona_1.addProteinDomain( A );
294 ciona_1.addProteinDomain( A );
295 ciona_1.addProteinDomain( A );
296 ciona_1.addProteinDomain( A );
297 ciona_1.addProteinDomain( F );
298 ciona_1.addProteinDomain( G );
299 ciona_1.addProteinDomain( X );
300 nemve_1.addProteinDomain( A );
301 nemve_1.addProteinDomain( B );
302 nemve_1.addProteinDomain( C );
303 nemve_1.addProteinDomain( D );
304 nemve_1.addProteinDomain( E );
305 nemve_1.addProteinDomain( F );
306 nemve_1.addProteinDomain( G );
307 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
308 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
309 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
310 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
311 protein_list_mouse.add( mouse_1 );
312 protein_list_rabbit.add( rabbit_1 );
313 protein_list_ciona.add( ciona_1 );
314 protein_list_nemve.add( nemve_1 );
315 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
316 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
318 new BasicSpecies( "mouse" ) ) );
319 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
321 new BasicSpecies( "rabbit" ) ) );
322 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
324 new BasicSpecies( "ciona" ) ) );
325 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
327 new BasicSpecies( "nemve" ) ) );
328 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
332 final SortedSet<DomainSimilarity> sims = calc
333 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
337 final Iterator<DomainSimilarity> sims_it = sims.iterator();
338 final DomainSimilarity sa = sims_it.next();
339 if ( !sa.getDomainId().equals( "A" ) ) {
342 if ( sa.getSpeciesData().size() != 4 ) {
345 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
348 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
351 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
354 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
357 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 5 )
358 + ( 1.0 / 2 ) + ( 2.0 / 7 ) ) / 6 ) ) {
361 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), ( 0.23410788192183737 ) ) ) {
364 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
367 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
370 if ( sa.getN() != 6 ) {
373 if ( sa.getMaximalDifference() != 7 ) {
376 if ( sa.getMaximalDifferenceInCounts() != 3 ) {
379 final DomainSimilarity sb = sims_it.next();
380 if ( !sb.getDomainId().equals( "B" ) ) {
383 if ( sb.getSpeciesData().size() != 2 ) {
386 if ( !sb.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
389 if ( !sb.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
392 if ( !TestSurfacing.isEqual( sb.getMeanSimilarityScore(), 2.0 / 3 ) ) {
395 if ( !TestSurfacing.isEqual( sb.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
398 if ( !TestSurfacing.isEqual( sb.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
401 if ( !TestSurfacing.isEqual( sb.getMinimalSimilarityScore(), ( 2.0 / 3 ) ) ) {
404 if ( sb.getN() != 1 ) {
407 if ( sb.getMaximalDifference() != 2 ) {
410 if ( sb.getMaximalDifferenceInCounts() != 2 ) {
413 final DomainSimilarity sc = sims_it.next();
414 if ( !sc.getDomainId().equals( "C" ) ) {
417 if ( sc.getSpeciesData().size() != 3 ) {
420 if ( !sc.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
423 if ( !sc.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
426 if ( !sc.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
429 if ( !TestSurfacing.isEqual( sc.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + ( 2.0 / 3 ) + ( 1.0 / 2 ) ) / 3 ) ) {
432 if ( !TestSurfacing.isEqual( sc.getStandardDeviationOfSimilarityScore(), 0.13471506281091264 ) ) {
435 if ( !TestSurfacing.isEqual( sc.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
438 if ( !TestSurfacing.isEqual( sc.getMinimalSimilarityScore(), ( 2.0 / 5 ) ) ) {
441 if ( sc.getN() != 3 ) {
444 if ( sc.getMaximalDifference() != 3 ) {
447 if ( sc.getMaximalDifferenceInCounts() != 3 ) {
450 // mouse : ....ABCDE.....
451 // rabbit: ....A.C.EFFF..
452 // ciona : AAAAA......FGX
453 // nemve : ....ABCDEFG...
457 // m 2/(2+3) 0 4/(4+2)
458 // r - 1/(1+5) 3/(3+3)
462 // mean = ( 2/5 + 0 + 2/3 + 1/6 + 1/2 + 2/8 ) / 6
466 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
467 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
469 new BasicSpecies( "mouse" ) ) );
470 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
472 new BasicSpecies( "rabbit" ) ) );
473 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
475 new BasicSpecies( "ciona" ) ) );
476 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
478 new BasicSpecies( "nemve" ) ) );
479 final DomainSimilarityCalculator calc2 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
483 final SortedSet<DomainSimilarity> sims2 = calc2
484 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
488 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
489 final DomainSimilarity sa2 = sims_it2.next();
490 if ( !sa2.getDomainId().equals( "A" ) ) {
493 if ( sa2.getSpeciesData().size() != 4 ) {
496 if ( !sa2.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
499 if ( !sa2.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
502 if ( !sa2.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
505 if ( !sa2.getSpeciesData().keySet().contains( new BasicSpecies( "rabbit" ) ) ) {
508 if ( !TestSurfacing.isEqual( sa2.getMeanSimilarityScore(), ( ( 2.0 / 5 ) + 0 + ( 2.0 / 3 ) + ( 1.0 / 6 )
509 + ( 1.0 / 2 ) + ( 2.0 / 8 ) ) / 6 ) ) {
512 if ( !TestSurfacing.isEqual( sa2.getStandardDeviationOfSimilarityScore(), ( 0.2404663678647683 ) ) ) {
515 if ( !TestSurfacing.isEqual( sa2.getMaximalSimilarityScore(), ( 2.0 / 3 ) ) ) {
518 if ( !TestSurfacing.isEqual( sa2.getMinimalSimilarityScore(), ( 0.0 ) ) ) {
521 if ( sa2.getN() != 6 ) {
524 if ( sa2.getMaximalDifference() != 8 ) {
527 if ( sa2.getMaximalDifferenceInCounts() != 3 ) {
530 final Protein ciona_2 = new BasicProtein( "2", "ciona", 0 );
531 ciona_2.addProteinDomain( A );
532 ciona_2.addProteinDomain( A );
533 ciona_2.addProteinDomain( A );
534 ciona_2.addProteinDomain( B );
535 ciona_2.addProteinDomain( B );
536 ciona_2.addProteinDomain( B );
537 ciona_2.addProteinDomain( F );
538 ciona_2.addProteinDomain( F );
539 ciona_2.addProteinDomain( F );
540 ciona_2.addProteinDomain( F );
541 ciona_2.addProteinDomain( G );
542 ciona_2.addProteinDomain( X );
543 final Protein ciona_3 = new BasicProtein( "3", "ciona", 0 );
544 ciona_3.addProteinDomain( A );
545 ciona_3.addProteinDomain( A );
546 ciona_3.addProteinDomain( A );
547 ciona_3.addProteinDomain( A );
548 ciona_3.addProteinDomain( B );
549 ciona_3.addProteinDomain( B );
550 ciona_3.addProteinDomain( X );
551 ciona_3.addProteinDomain( X );
552 protein_list_ciona.add( ciona_2 );
553 protein_list_ciona.add( ciona_3 );
554 final List<GenomeWideCombinableDomains> cdc_list3 = new ArrayList<GenomeWideCombinableDomains>();
555 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
557 new BasicSpecies( "mouse" ) ) );
558 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
560 new BasicSpecies( "rabbit" ) ) );
561 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
563 new BasicSpecies( "ciona" ) ) );
564 cdc_list3.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
566 new BasicSpecies( "nemve" ) ) );
567 final DomainSimilarityCalculator calc3 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
571 final SortedSet<DomainSimilarity> sims3 = calc3
572 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
576 final Iterator<DomainSimilarity> sims_it3 = sims3.iterator();
577 final DomainSimilarity sa3 = sims_it3.next();
578 if ( !sa3.getDomainId().equals( "A" ) ) {
581 final SpeciesSpecificDcData ssdsd = sa3.getSpeciesData().get( new BasicSpecies( "ciona" ) );
582 if ( ssdsd.getCombinableDomainIdToCountsMap().size() != 4 ) {
585 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
588 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
591 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
594 if ( ssdsd.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
597 final List<GenomeWideCombinableDomains> cdc_list4 = new ArrayList<GenomeWideCombinableDomains>();
598 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
600 new BasicSpecies( "mouse" ) ) );
601 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
603 new BasicSpecies( "rabbit" ) ) );
604 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
606 new BasicSpecies( "ciona" ) ) );
608 cdc_list4.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
610 new BasicSpecies( "nemve" ) ) );
611 final DomainSimilarityCalculator calc4 = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
615 final SortedSet<DomainSimilarity> sims4 = calc4
616 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
620 final Iterator<DomainSimilarity> sims_it4 = sims4.iterator();
621 final DomainSimilarity sa4 = sims_it4.next();
622 if ( !sa4.getDomainId().equals( "A" ) ) {
625 final SpeciesSpecificDcData ssdsd4 = sa4.getSpeciesData().get( new BasicSpecies( "ciona" ) );
626 if ( ssdsd4.getCombinableDomainIdToCountsMap().size() != 5 ) {
629 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "A" ) != 3 ) {
632 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
635 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
638 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
641 if ( ssdsd4.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
644 final SortedSet<DomainSimilarity> sims4_d = calc4
645 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list4, false, true );
646 final Iterator<DomainSimilarity> sims_it4_d = sims4_d.iterator();
647 final DomainSimilarity sa4_d = sims_it4_d.next();
648 if ( !sa4_d.getDomainId().equals( "A" ) ) {
651 if ( sa4_d.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
655 .isEqual( sa4_d.getMeanSimilarityScore(),
656 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
659 if ( !TestSurfacing.isEqual( sa4_d.getMaximalSimilarityScore(), 1.0 ) ) {
662 if ( !TestSurfacing.isEqual( sa4_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
665 if ( sa4_d.getN() != 6 ) {
668 final SortedSet<DomainSimilarity> sims4_p = calc4
669 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
673 final Iterator<DomainSimilarity> sims_it4_p = sims4_p.iterator();
674 final DomainSimilarity sa4_p = sims_it4_p.next();
675 if ( !sa4_p.getDomainId().equals( "A" ) ) {
678 if ( sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).size() != 5 ) {
681 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "A" ) ) {
684 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "B" ) ) {
687 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "F" ) ) {
690 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "G" ) ) {
693 if ( !sa4_p.getCombinableDomainIds( new BasicSpecies( "ciona" ) ).contains( "X" ) ) {
697 .isEqual( sa4_p.getMeanSimilarityScore(),
698 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
701 if ( !TestSurfacing.isEqual( sa4_p.getMaximalSimilarityScore(), 1 ) ) {
704 if ( !TestSurfacing.isEqual( sa4_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
707 if ( sa4_p.getN() != 6 ) {
710 final List<GenomeWideCombinableDomains> cdc_list5 = new ArrayList<GenomeWideCombinableDomains>();
711 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
713 new BasicSpecies( "mouse" ) ) );
714 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
716 new BasicSpecies( "rabbit" ) ) );
717 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
719 new BasicSpecies( "ciona" ) ) );
720 cdc_list5.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
722 new BasicSpecies( "nemve" ) ) );
723 final SortedSet<DomainSimilarity> sims5_d = calc4
724 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list5, false, true );
725 final Iterator<DomainSimilarity> sims_it5_d = sims5_d.iterator();
726 final DomainSimilarity sa5_d = sims_it5_d.next();
727 if ( sa5_d.getSpecies().size() != 4 ) {
730 if ( !sa5_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
733 final SpeciesSpecificDcData ssdsd5 = sa5_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
734 if ( ssdsd5.getCombinableDomainIdToCountsMap().size() != 4 ) {
737 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
740 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
743 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
746 if ( ssdsd5.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
749 if ( !sa5_d.getDomainId().equals( "A" ) ) {
752 final Species ciona = new BasicSpecies( "ciona" );
753 if ( sa5_d.getCombinableDomainIds( ciona ).size() != 4 ) {
756 if ( sa5_d.getCombinableDomainIds( ciona ).contains( "A" ) ) {
759 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "B" ) ) {
762 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "F" ) ) {
765 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "G" ) ) {
768 if ( !sa5_d.getCombinableDomainIds( ciona ).contains( "X" ) ) {
772 .isEqual( sa5_d.getMeanSimilarityScore(),
773 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
776 if ( !TestSurfacing.isEqual( sa5_d.getMaximalSimilarityScore(), 1.0 ) ) {
779 if ( !TestSurfacing.isEqual( sa5_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
782 if ( sa5_d.getN() != 6 ) {
785 if ( sa5_d.getMaximalDifference() != sa5_d.getMaximalDifferenceInCounts() ) {
788 if ( sa5_d.getMaximalDifference() != 11 ) {
791 if ( sa5_d.getMaximalDifferenceInCounts() != 11 ) {
794 final SortedSet<DomainSimilarity> sims5_p = calc4
795 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
799 final Iterator<DomainSimilarity> sims_it5_p = sims5_p.iterator();
800 final DomainSimilarity sa5_p = sims_it5_p.next();
801 if ( !sa5_p.getDomainId().equals( "A" ) ) {
804 if ( sa5_p.getCombinableDomainIds( ciona ).size() != 4 ) {
807 if ( sa5_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
810 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
813 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
816 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
819 if ( !sa5_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
823 .isEqual( sa5_p.getMeanSimilarityScore(),
824 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
827 if ( !TestSurfacing.isEqual( sa5_p.getMaximalSimilarityScore(), 1 ) ) {
830 if ( !TestSurfacing.isEqual( sa5_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
833 if ( sa5_p.getN() != 6 ) {
836 if ( sa5_p.getMaximalDifference() != sa5_p.getMaximalDifferenceInCounts() ) {
839 if ( sa5_p.getMaximalDifference() != 2 ) {
842 if ( sa5_p.getMaximalDifferenceInCounts() != 2 ) {
845 final List<GenomeWideCombinableDomains> cdc_list6 = new ArrayList<GenomeWideCombinableDomains>();
846 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
848 new BasicSpecies( "mouse" ) ) );
849 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
851 new BasicSpecies( "rabbit" ) ) );
852 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
854 new BasicSpecies( "ciona" ) ) );
855 cdc_list6.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
857 new BasicSpecies( "nemve" ) ) );
858 final SortedSet<DomainSimilarity> sims6_d = calc4
859 .calculateSimilarities( new DomainCountsBasedPairwiseSimilarityCalculator(), cdc_list6, false, true );
860 final Iterator<DomainSimilarity> sims_it6_d = sims6_d.iterator();
861 final DomainSimilarity sa6_d = sims_it6_d.next();
862 if ( sa6_d.getSpecies().size() != 4 ) {
865 if ( !sa6_d.getSpecies().last().equals( new BasicSpecies( "rabbit" ) ) ) {
868 final SpeciesSpecificDcData ssdsd6 = sa6_d.getSpeciesData().get( new BasicSpecies( "ciona" ) );
869 if ( ssdsd6.getCombinableDomainIdToCountsMap().size() != 5 ) {
872 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "B" ) != 2 ) {
875 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "F" ) != 2 ) {
878 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "G" ) != 2 ) {
881 if ( ssdsd6.getNumberOfProteinsExhibitingCombinationWith( "X" ) != 3 ) {
884 if ( !sa5_d.getDomainId().equals( "A" ) ) {
887 final Species ciona6 = new BasicSpecies( "ciona" );
888 if ( sa6_d.getCombinableDomainIds( ciona6 ).size() != 5 ) {
891 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "A" ) ) {
894 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "B" ) ) {
897 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "F" ) ) {
900 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "G" ) ) {
903 if ( !sa6_d.getCombinableDomainIds( ciona6 ).contains( "X" ) ) {
907 .isEqual( sa6_d.getMeanSimilarityScore(),
908 ( ( ( ( ( ( 1 + 1 ) - ( 11.0 / 13 ) ) + 1 ) - ( 11.0 / 13 ) ) + 1 + 1 + 1 ) - ( 11.0 / 13 ) ) / 6.0 ) ) {
911 if ( !TestSurfacing.isEqual( sa6_d.getMaximalSimilarityScore(), 1.0 ) ) {
914 if ( !TestSurfacing.isEqual( sa6_d.getMinimalSimilarityScore(), ( 1 - ( 11.0 / 13 ) ) ) ) {
917 if ( sa6_d.getN() != 6 ) {
920 if ( sa6_d.getMaximalDifference() != sa6_d.getMaximalDifferenceInCounts() ) {
923 if ( sa6_d.getMaximalDifference() != 11 ) {
926 if ( sa6_d.getMaximalDifferenceInCounts() != 11 ) {
929 final SortedSet<DomainSimilarity> sims6_p = calc4
930 .calculateSimilarities( new ProteinCountsBasedPairwiseDomainSimilarityCalculator(),
934 final Iterator<DomainSimilarity> sims_it6_p = sims6_p.iterator();
935 final DomainSimilarity sa6_p = sims_it6_p.next();
936 if ( !sa6_p.getDomainId().equals( "A" ) ) {
939 if ( sa6_p.getCombinableDomainIds( ciona ).size() != 5 ) {
942 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "A" ) ) {
945 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "B" ) ) {
948 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "F" ) ) {
951 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "G" ) ) {
954 if ( !sa6_p.getCombinableDomainIds( ciona ).contains( "X" ) ) {
958 .isEqual( sa6_p.getMeanSimilarityScore(),
959 ( ( ( ( ( ( 1 + 1 ) - ( 2.0 / 4 ) ) + 1 ) - ( 2.0 / 4 ) ) + 1 + 1 + 1 ) - ( 2.0 / 4 ) ) / 6.0 ) ) {
962 if ( !TestSurfacing.isEqual( sa6_p.getMaximalSimilarityScore(), 1 ) ) {
965 if ( !TestSurfacing.isEqual( sa6_p.getMinimalSimilarityScore(), ( 1 - ( 2.0 / 4 ) ) ) ) {
968 if ( sa6_p.getN() != 6 ) {
971 if ( sa6_p.getMaximalDifference() != sa6_p.getMaximalDifferenceInCounts() ) {
974 if ( sa6_p.getMaximalDifference() != 2 ) {
977 if ( sa6_p.getMaximalDifferenceInCounts() != 2 ) {
981 catch ( final Exception e ) {
982 e.printStackTrace( System.out );
988 private static boolean testBasicDomainSimilarityCalculatorNotIgnoringSpeciesSpeficDomains() {
990 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
991 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
992 final Domain D = new BasicDomain( "D", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
993 final Domain E = new BasicDomain( "E", 1, 2, ( short ) 1, ( short ) 1, 0.5, -12 );
994 final Domain F = new BasicDomain( "F", 1, 2, ( short ) 1, ( short ) 1, 0.01, -12 );
995 final Domain G = new BasicDomain( "G", 1, 2, ( short ) 1, ( short ) 1, 0.001, -12 );
996 final Domain X = new BasicDomain( "X", 1, 2, ( short ) 1, ( short ) 1, 0.0001, -12 );
997 if ( !TestSurfacing.isEqual( X.getPerSequenceScore(), -12 ) ) {
1000 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
1001 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
1002 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
1003 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
1004 mouse_1.addProteinDomain( A );
1005 mouse_1.addProteinDomain( D );
1006 mouse_1.addProteinDomain( E );
1007 rabbit_1.addProteinDomain( B );
1008 rabbit_1.addProteinDomain( E );
1009 rabbit_1.addProteinDomain( F );
1010 rabbit_1.addProteinDomain( F );
1011 rabbit_1.addProteinDomain( F );
1012 rabbit_1.addProteinDomain( F );
1013 rabbit_1.addProteinDomain( F );
1014 rabbit_1.addProteinDomain( F );
1015 ciona_1.addProteinDomain( F );
1016 ciona_1.addProteinDomain( G );
1017 ciona_1.addProteinDomain( X );
1018 nemve_1.addProteinDomain( D );
1019 nemve_1.addProteinDomain( E );
1020 nemve_1.addProteinDomain( F );
1021 nemve_1.addProteinDomain( G );
1022 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1023 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1024 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1025 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1026 protein_list_mouse.add( mouse_1 );
1027 protein_list_rabbit.add( rabbit_1 );
1028 protein_list_ciona.add( ciona_1 );
1029 protein_list_nemve.add( nemve_1 );
1030 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1031 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1033 new BasicSpecies( "mouse" ) ) );
1034 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1036 new BasicSpecies( "rabbit" ) ) );
1037 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1039 new BasicSpecies( "ciona" ) ) );
1040 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1042 new BasicSpecies( "nemve" ) ) );
1043 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1047 final SortedSet<DomainSimilarity> sims = calc
1048 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1052 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1053 final DomainSimilarity sa = sims_it.next();
1054 if ( !sa.getDomainId().equals( "A" ) ) {
1057 if ( sa.getSpeciesData().size() != 1 ) {
1060 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1063 if ( !TestSurfacing.isEqual( sa.getMeanSimilarityScore(), 1.0 ) ) {
1066 if ( !TestSurfacing.isEqual( sa.getStandardDeviationOfSimilarityScore(), 0.0 ) ) {
1069 if ( !TestSurfacing.isEqual( sa.getMaximalSimilarityScore(), 1.0 ) ) {
1072 if ( !TestSurfacing.isEqual( sa.getMinimalSimilarityScore(), 1.0 ) ) {
1075 if ( sa.getN() != 0 ) {
1078 if ( sa.getMaximalDifference() != 0 ) {
1081 if ( sa.getMaximalDifferenceInCounts() != 0 ) {
1084 final DomainSimilarity sb = sims_it.next();
1085 if ( !sb.getDomainId().equals( "B" ) ) {
1088 if ( sb.getSpeciesData().size() != 1 ) {
1091 if ( !sb.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1094 final SortedSet<DomainSimilarity> sims2 = calc
1095 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1099 final Iterator<DomainSimilarity> sims_it2 = sims2.iterator();
1100 final DomainSimilarity sa2 = sims_it2.next();
1101 if ( !sa2.getDomainId().equals( "D" ) ) {
1104 if ( sa2.getSpeciesData().size() != 2 ) {
1108 catch ( final Exception e ) {
1109 e.printStackTrace( System.out );
1115 private static boolean testBasicDomainSimilarityCalculatorRemovalOfSingles() {
1117 final Domain A = new BasicDomain( "A", 1, 2, ( short ) 1, ( short ) 1, 0.15, -12 );
1118 final Domain B = new BasicDomain( "B", 1, 2, ( short ) 1, ( short ) 1, 0.2, -12 );
1119 final Protein mouse_1 = new BasicProtein( "1", "mouse", 0 );
1120 final Protein rabbit_1 = new BasicProtein( "1", "rabbit", 0 );
1121 final Protein ciona_1 = new BasicProtein( "1", "ciona", 0 );
1122 final Protein nemve_1 = new BasicProtein( "1", "nemve", 0 );
1123 mouse_1.addProteinDomain( A );
1124 rabbit_1.addProteinDomain( A );
1125 ciona_1.addProteinDomain( A );
1126 ciona_1.addProteinDomain( A );
1127 ciona_1.addProteinDomain( A );
1128 ciona_1.addProteinDomain( A );
1129 ciona_1.addProteinDomain( A );
1130 nemve_1.addProteinDomain( A );
1131 final List<Protein> protein_list_mouse = new ArrayList<Protein>();
1132 final List<Protein> protein_list_rabbit = new ArrayList<Protein>();
1133 final List<Protein> protein_list_ciona = new ArrayList<Protein>();
1134 final List<Protein> protein_list_nemve = new ArrayList<Protein>();
1135 protein_list_mouse.add( mouse_1 );
1136 protein_list_rabbit.add( rabbit_1 );
1137 protein_list_ciona.add( ciona_1 );
1138 protein_list_nemve.add( nemve_1 );
1139 final List<GenomeWideCombinableDomains> cdc_list = new ArrayList<GenomeWideCombinableDomains>();
1140 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse,
1142 new BasicSpecies( "mouse" ) ) );
1143 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit,
1145 new BasicSpecies( "rabbit" ) ) );
1146 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona,
1148 new BasicSpecies( "ciona" ) ) );
1149 cdc_list.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve,
1151 new BasicSpecies( "nemve" ) ) );
1152 final DomainSimilarityCalculator calc = new BasicDomainSimilarityCalculator( DomainSimilarity.DomainSimilaritySortField.DOMAIN_ID,
1156 final SortedSet<DomainSimilarity> sims = calc
1157 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1161 if ( sims.size() != 1 ) {
1164 final Iterator<DomainSimilarity> sims_it = sims.iterator();
1165 final DomainSimilarity sa = sims_it.next();
1166 if ( !sa.getDomainId().equals( "A" ) ) {
1169 if ( sa.getSpeciesData().size() != 4 ) {
1172 if ( !sa.getSpecies().contains( new BasicSpecies( "ciona" ) ) ) {
1175 if ( !sa.getSpecies().contains( new BasicSpecies( "mouse" ) ) ) {
1178 if ( !sa.getSpecies().contains( new BasicSpecies( "nemve" ) ) ) {
1181 if ( !sa.getSpecies().contains( new BasicSpecies( "rabbit" ) ) ) {
1184 final SortedSet<DomainSimilarity> sims_ns = calc
1185 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1189 if ( sims_ns.size() != 0 ) {
1192 final Protein mouse_2 = new BasicProtein( "1", "mouse", 0 );
1193 final Protein rabbit_2 = new BasicProtein( "1", "rabbit", 0 );
1194 final Protein ciona_2 = new BasicProtein( "1", "ciona", 0 );
1195 final Protein nemve_2 = new BasicProtein( "1", "nemve", 0 );
1196 mouse_2.addProteinDomain( A );
1197 rabbit_2.addProteinDomain( A );
1198 ciona_2.addProteinDomain( A );
1199 ciona_2.addProteinDomain( A );
1200 ciona_2.addProteinDomain( B );
1201 ciona_2.addProteinDomain( A );
1202 ciona_2.addProteinDomain( A );
1203 ciona_2.addProteinDomain( A );
1204 nemve_2.addProteinDomain( A );
1205 final List<Protein> protein_list_mouse2 = new ArrayList<Protein>();
1206 final List<Protein> protein_list_rabbit2 = new ArrayList<Protein>();
1207 final List<Protein> protein_list_ciona2 = new ArrayList<Protein>();
1208 final List<Protein> protein_list_nemve2 = new ArrayList<Protein>();
1209 protein_list_mouse2.add( mouse_2 );
1210 protein_list_rabbit2.add( rabbit_2 );
1211 protein_list_ciona2.add( ciona_2 );
1212 protein_list_nemve2.add( nemve_2 );
1213 final List<GenomeWideCombinableDomains> cdc_list2 = new ArrayList<GenomeWideCombinableDomains>();
1214 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_mouse2,
1216 new BasicSpecies( "mouse" ) ) );
1217 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_rabbit2,
1219 new BasicSpecies( "rabbit" ) ) );
1220 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_ciona2,
1222 new BasicSpecies( "ciona" ) ) );
1223 cdc_list2.add( BasicGenomeWideCombinableDomains.createInstance( protein_list_nemve2,
1225 new BasicSpecies( "nemve" ) ) );
1226 final SortedSet<DomainSimilarity> sims2 = calc
1227 .calculateSimilarities( new CombinationsBasedPairwiseDomainSimilarityCalculator(),
1231 if ( sims2.size() != 1 ) {
1235 catch ( final Exception e ) {
1236 e.printStackTrace( System.out );
1242 private static boolean testBinaryDomainCombination() {
1244 final BasicBinaryDomainCombination s0 = new BasicBinaryDomainCombination( "a", "a" );
1245 final BasicBinaryDomainCombination s1 = new BasicBinaryDomainCombination( "b", "a" );
1246 final BasicBinaryDomainCombination s2 = new BasicBinaryDomainCombination( "a", "b" );
1247 final BasicBinaryDomainCombination s3 = new BasicBinaryDomainCombination( "B", "A" );
1248 final BasicBinaryDomainCombination s4 = new BasicBinaryDomainCombination( "A", "B" );
1249 final BasicBinaryDomainCombination s5 = new BasicBinaryDomainCombination( "c", "a" );
1250 final BasicBinaryDomainCombination s6 = new BasicBinaryDomainCombination( "b", "c" );
1251 final BasicBinaryDomainCombination s7 = new BasicBinaryDomainCombination( "d", "a" );
1252 final BasicBinaryDomainCombination s8 = new BasicBinaryDomainCombination( "b", "d" );
1253 final BinaryDomainCombination s9 = BasicBinaryDomainCombination.createInstance( "z-z=a-aa" );
1254 if ( !s9.toString().equals( "a-aa=z-z" ) ) {
1255 System.out.println( s9.toString() );
1258 if ( !s0.equals( s0 ) ) {
1261 if ( s0.equals( s1 ) ) {
1264 if ( s1.equals( s0 ) ) {
1267 if ( !s1.equals( s2 ) ) {
1270 if ( !s2.equals( s1 ) ) {
1273 if ( s2.equals( s3 ) ) {
1276 if ( s2.equals( s3 ) ) {
1279 if ( s2.equals( s4 ) ) {
1282 final SortedSet<BasicBinaryDomainCombination> sorted = new TreeSet<BasicBinaryDomainCombination>();
1295 if ( sorted.size() != 7 ) {
1296 System.out.println( sorted.size() );
1299 final DirectedBinaryDomainCombination aa = new DirectedBinaryDomainCombination( "a", "a" );
1300 final DirectedBinaryDomainCombination ba = new DirectedBinaryDomainCombination( "b", "a" );
1301 final DirectedBinaryDomainCombination ab = new DirectedBinaryDomainCombination( "a", "b" );
1302 final DirectedBinaryDomainCombination bb = new DirectedBinaryDomainCombination( "b", "b" );
1303 if ( !aa.equals( aa ) ) {
1306 if ( aa.equals( bb ) ) {
1309 if ( ab.equals( ba ) ) {
1312 if ( ba.equals( ab ) ) {
1315 if ( !ab.equals( ab ) ) {
1318 if ( ab.equals( aa ) ) {
1321 if ( ab.equals( bb ) ) {
1325 catch ( final Exception e ) {
1326 e.printStackTrace( System.out );
1332 private static boolean testBinaryStateMatrixToGainLossMatrix( final File test_dir ) {
1333 final BinaryStates I = BinaryStates.PRESENT;
1334 final BinaryStates O = BinaryStates.ABSENT;
1336 final CharacterStateMatrix<BinaryStates> binary_states_matrix_0 = new BasicCharacterStateMatrix<BinaryStates>( 7,
1338 binary_states_matrix_0.setIdentifier( 0, "A" );
1339 binary_states_matrix_0.setIdentifier( 1, "B" );
1340 binary_states_matrix_0.setIdentifier( 2, "C" );
1341 binary_states_matrix_0.setIdentifier( 3, "D" );
1342 binary_states_matrix_0.setIdentifier( 4, "1" );
1343 binary_states_matrix_0.setIdentifier( 5, "2" );
1344 binary_states_matrix_0.setIdentifier( 6, "3" );
1345 binary_states_matrix_0.setState( 0, 0, O );
1346 binary_states_matrix_0.setState( 1, 0, O );
1347 binary_states_matrix_0.setState( 2, 0, O );
1348 binary_states_matrix_0.setState( 3, 0, O );
1349 binary_states_matrix_0.setState( 4, 0, O );
1350 binary_states_matrix_0.setState( 5, 0, O );
1351 binary_states_matrix_0.setState( 6, 0, O );
1352 binary_states_matrix_0.setState( 0, 1, I );
1353 binary_states_matrix_0.setState( 1, 1, O );
1354 binary_states_matrix_0.setState( 2, 1, O );
1355 binary_states_matrix_0.setState( 3, 1, O );
1356 binary_states_matrix_0.setState( 4, 1, O );
1357 binary_states_matrix_0.setState( 5, 1, O );
1358 binary_states_matrix_0.setState( 6, 1, O );
1359 binary_states_matrix_0.setState( 0, 2, O );
1360 binary_states_matrix_0.setState( 1, 2, O );
1361 binary_states_matrix_0.setState( 2, 2, O );
1362 binary_states_matrix_0.setState( 3, 2, O );
1363 binary_states_matrix_0.setState( 4, 2, I );
1364 binary_states_matrix_0.setState( 5, 2, O );
1365 binary_states_matrix_0.setState( 6, 2, O );
1366 binary_states_matrix_0.setState( 0, 3, I );
1367 binary_states_matrix_0.setState( 1, 3, O );
1368 binary_states_matrix_0.setState( 2, 3, O );
1369 binary_states_matrix_0.setState( 3, 3, O );
1370 binary_states_matrix_0.setState( 4, 3, I );
1371 binary_states_matrix_0.setState( 5, 3, O );
1372 binary_states_matrix_0.setState( 6, 3, I );
1373 binary_states_matrix_0.setState( 0, 4, I );
1374 binary_states_matrix_0.setState( 1, 4, O );
1375 binary_states_matrix_0.setState( 2, 4, I );
1376 binary_states_matrix_0.setState( 3, 4, O );
1377 binary_states_matrix_0.setState( 4, 4, I );
1378 binary_states_matrix_0.setState( 5, 4, O );
1379 binary_states_matrix_0.setState( 6, 4, I );
1380 binary_states_matrix_0.setState( 0, 5, I );
1381 binary_states_matrix_0.setState( 1, 5, I );
1382 binary_states_matrix_0.setState( 2, 5, I );
1383 binary_states_matrix_0.setState( 3, 5, I );
1384 binary_states_matrix_0.setState( 4, 5, I );
1385 binary_states_matrix_0.setState( 5, 5, I );
1386 binary_states_matrix_0.setState( 6, 5, I );
1387 final String[] character_labels_0 = new String[ 6 ];
1388 character_labels_0[ 0 ] = "first";
1389 character_labels_0[ 1 ] = "second";
1390 character_labels_0[ 2 ] = "third";
1391 character_labels_0[ 3 ] = "forth";
1392 character_labels_0[ 4 ] = "fifth";
1393 character_labels_0[ 5 ] = "sixth";
1394 final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
1395 final Phylogeny phylogeny_0 = factory.create( "(((A,B)1,C)2,D)3", new NHXParser() )[ 0 ];
1396 final DomainParsimonyCalculator dom_pars = DomainParsimonyCalculator.createInstance( phylogeny_0 );
1397 dom_pars.executeOnGivenBinaryStatesMatrix( binary_states_matrix_0, character_labels_0 );
1398 final CharacterStateMatrix<GainLossStates> gl_matrix_0 = dom_pars.getGainLossMatrix();
1399 // final StringWriter sw = new StringWriter();
1400 // gl_matrix_0.toWriter( sw );
1401 // System.out.println( sw.toString() );
1402 if ( dom_pars.getCost() != 13 ) {
1405 if ( dom_pars.getTotalGains() != 5 ) {
1408 if ( dom_pars.getTotalLosses() != 8 ) {
1411 if ( dom_pars.getTotalUnchanged() != 29 ) {
1414 if ( gl_matrix_0.getState( "A", 1 ) != GainLossStates.GAIN ) {
1417 if ( gl_matrix_0.getState( "A", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1420 if ( gl_matrix_0.getState( "B", 4 ) != GainLossStates.LOSS ) {
1423 if ( gl_matrix_0.getState( "C", 4 ) != GainLossStates.GAIN ) {
1426 if ( gl_matrix_0.getState( "D", 4 ) != GainLossStates.LOSS ) {
1429 if ( gl_matrix_0.getState( "1", 4 ) != GainLossStates.GAIN ) {
1432 if ( gl_matrix_0.getState( "2", 4 ) != GainLossStates.LOSS ) {
1435 if ( gl_matrix_0.getState( "3", 4 ) != GainLossStates.UNCHANGED_PRESENT ) {
1439 catch ( final Exception e ) {
1440 e.printStackTrace( System.out );
1446 private static boolean testCombinableDomains() {
1448 final Domain key0 = new BasicDomain( "key0", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1449 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1450 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1451 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1452 final CombinableDomains cd0 = new BasicCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1453 cd0.addCombinableDomain( a.getDomainId() );
1454 cd0.addCombinableDomain( b.getDomainId() );
1455 cd0.addCombinableDomain( b.getDomainId() );
1456 cd0.addCombinableDomain( c.getDomainId() );
1457 cd0.addCombinableDomain( c.getDomainId() );
1458 cd0.addCombinableDomain( c.getDomainId() );
1459 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1462 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1465 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1468 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1471 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1474 if ( cd0.getAllDomains().size() != 4 ) {
1477 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1480 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1483 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1486 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1489 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1492 final BasicBinaryDomainCombination s0 = new BasicBinaryDomainCombination( "key0", "a" );
1493 final BasicBinaryDomainCombination s1 = new BasicBinaryDomainCombination( "b", "key0" );
1494 final BasicBinaryDomainCombination s2 = new BasicBinaryDomainCombination( "key0", "c" );
1495 final BasicBinaryDomainCombination s3 = new BasicBinaryDomainCombination( "key0", "cc" );
1496 final BasicBinaryDomainCombination s4 = new BasicBinaryDomainCombination( "c", "key0" );
1497 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1500 if ( !cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1503 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1506 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1509 if ( !cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1512 final Domain key1 = new BasicDomain( "key1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1513 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1514 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1515 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1516 final CombinableDomains cd1 = new BasicCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1517 cd1.addCombinableDomain( a1.getDomainId() );
1518 cd1.addCombinableDomain( b1.getDomainId() );
1519 cd1.addCombinableDomain( c1.getDomainId() );
1520 cd1.addCombinableDomain( key1.getDomainId() );
1521 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1524 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1527 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1530 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1533 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1536 if ( cd1.getAllDomains().size() != 4 ) {
1539 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1542 final BasicBinaryDomainCombination kk = new BasicBinaryDomainCombination( "key1", "key1" );
1543 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1547 catch ( final Exception e ) {
1548 e.printStackTrace( System.out );
1554 private static boolean testCombinationsBasedPairwiseSimilarityCalculator() {
1556 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1557 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1558 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1559 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1560 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1561 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1562 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1563 new BasicSpecies( "rabbit" ) );
1564 one.addCombinableDomain( a.getDomainId() );
1565 one.addCombinableDomain( a.getDomainId() );
1566 two.addCombinableDomain( new BasicDomain( "A", 1, 5, ( short ) 1, ( short ) 4, 0.1, -12 ).getDomainId() );
1567 two.addCombinableDomain( b.getDomainId() );
1568 two.addCombinableDomain( c.getDomainId() );
1569 final PairwiseDomainSimilarityCalculator calc = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1570 final PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1571 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 / ( 1 + 2 ) ) ) {
1574 if ( s1.getDifferenceInCounts() != ( 1 - 3 ) ) {
1577 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s1 ).getNumberOfDifferentDomains() != 2 ) {
1580 one.addCombinableDomain( b.getDomainId() );
1581 one.addCombinableDomain( c.getDomainId() );
1582 final PairwiseDomainSimilarity s2 = calc.calculateSimilarity( one, two );
1583 if ( !TestSurfacing.isEqual( s2.getSimilarityScore(), 3.0 / ( 0 + 3 ) ) ) {
1586 if ( s2.getDifferenceInCounts() != 0 ) {
1589 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s2 ).getNumberOfDifferentDomains() != 0 ) {
1592 final Domain d = new BasicDomain( "D", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1593 final Domain e = new BasicDomain( "E", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1594 final Domain f = new BasicDomain( "F", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1595 one.addCombinableDomain( d.getDomainId() );
1596 one.addCombinableDomain( d.getDomainId() );
1597 one.addCombinableDomain( e.getDomainId() );
1598 one.addCombinableDomain( f.getDomainId() );
1599 final PairwiseDomainSimilarity s3 = calc.calculateSimilarity( one, two );
1600 if ( !TestSurfacing.isEqual( s3.getSimilarityScore(), 3.0 / ( 3 + 3 ) ) ) {
1603 if ( s3.getDifferenceInCounts() != ( 6 - 3 ) ) {
1606 if ( ( ( CombinationsBasedPairwiseDomainSimilarity ) s3 ).getNumberOfDifferentDomains() != 3 ) {
1609 final Domain aaa = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1610 final Domain bbb = new BasicDomain( "bbb", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1611 final Domain three_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1612 final Domain four_key = new BasicDomain( "bcl2", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1613 final CombinableDomains three = new BasicCombinableDomains( three_key.getDomainId(),
1614 new BasicSpecies( "mouse" ) );
1615 final CombinableDomains four = new BasicCombinableDomains( four_key.getDomainId(),
1616 new BasicSpecies( "rabbit" ) );
1617 three.addCombinableDomain( aaa.getDomainId() );
1618 four.addCombinableDomain( bbb.getDomainId() );
1619 final PairwiseDomainSimilarityCalculator calc2 = new CombinationsBasedPairwiseDomainSimilarityCalculator();
1620 final PairwiseDomainSimilarity s4 = calc2.calculateSimilarity( three, four );
1621 if ( !TestSurfacing.isEqual( s4.getSimilarityScore(), 0.0 / ( 0 + 2 ) ) ) {
1624 final Domain aaa2 = new BasicDomain( "aaa", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1625 four.addCombinableDomain( aaa2.getDomainId() );
1626 final PairwiseDomainSimilarity s5 = calc.calculateSimilarity( three, four );
1627 if ( !TestSurfacing.isEqual( s5.getSimilarityScore(), 1.0 / ( 1 + 1 ) ) ) {
1631 catch ( final Exception e ) {
1632 e.printStackTrace( System.out );
1638 private static boolean testCopyNumberBasedPairwiseSimilarityCalculator() {
1640 final Domain one_key = new BasicDomain( "bcl2", 4, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1641 final Domain two_key = new BasicDomain( "bcl2", 5, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1642 final CombinableDomains one = new BasicCombinableDomains( one_key.getDomainId(), new BasicSpecies( "mouse" ) );
1643 final CombinableDomains two = new BasicCombinableDomains( two_key.getDomainId(),
1644 new BasicSpecies( "rabbit" ) );
1645 one.setKeyDomainCount( 2 );
1646 two.setKeyDomainCount( 3 );
1647 final PairwiseDomainSimilarityCalculator calc = new DomainCountsBasedPairwiseSimilarityCalculator();
1648 PairwiseDomainSimilarity s1 = calc.calculateSimilarity( one, two );
1649 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( ( 3 - 2.0 ) / ( 2 + 3 ) ) ) ) {
1652 if ( s1.getDifferenceInCounts() != ( 2 - 3 ) ) {
1655 one.setKeyDomainCount( 1 );
1656 two.setKeyDomainCount( 1 );
1657 s1 = calc.calculateSimilarity( one, two );
1658 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 ) ) {
1661 if ( s1.getDifferenceInCounts() != ( 1 - 1 ) ) {
1664 one.setKeyDomainCount( 1 );
1665 two.setKeyDomainCount( 1000 );
1666 s1 = calc.calculateSimilarity( one, two );
1667 if ( !TestSurfacing.isEqual( s1.getSimilarityScore(), 1.0 - ( 999.0 / 1001 ) ) ) {
1670 if ( s1.getDifferenceInCounts() != ( 1 - 1000 ) ) {
1674 catch ( final Exception e ) {
1675 e.printStackTrace( System.out );
1681 private static boolean testDirectedCombinableDomains() {
1683 final Domain key0 = new BasicDomain( "key0", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 );
1684 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1685 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1686 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1687 final CombinableDomains cd0 = new DirectedCombinableDomains( key0.getDomainId(), new BasicSpecies( "eel" ) );
1688 cd0.addCombinableDomain( a.getDomainId() );
1689 cd0.addCombinableDomain( b.getDomainId() );
1690 cd0.addCombinableDomain( b.getDomainId() );
1691 cd0.addCombinableDomain( c.getDomainId() );
1692 cd0.addCombinableDomain( c.getDomainId() );
1693 cd0.addCombinableDomain( c.getDomainId() );
1694 if ( cd0.getNumberOfCombinableDomains() != 3 ) {
1697 if ( cd0.getNumberOfProteinsExhibitingCombination( a.getDomainId() ) != 1 ) {
1700 if ( cd0.getNumberOfProteinsExhibitingCombination( b.getDomainId() ) != 2 ) {
1703 if ( cd0.getNumberOfProteinsExhibitingCombination( c.getDomainId() ) != 3 ) {
1706 if ( cd0.getNumberOfProteinsExhibitingCombination( key0.getDomainId() ) != 0 ) {
1709 if ( cd0.getAllDomains().size() != 4 ) {
1712 if ( !cd0.getAllDomains().contains( a.getDomainId() ) ) {
1715 if ( !cd0.getAllDomains().contains( b.getDomainId() ) ) {
1718 if ( !cd0.getAllDomains().contains( c.getDomainId() ) ) {
1721 if ( !cd0.getAllDomains().contains( key0.getDomainId() ) ) {
1724 if ( cd0.toBinaryDomainCombinations().size() != 3 ) {
1727 final BinaryDomainCombination s0 = new DirectedBinaryDomainCombination( "key0", "a" );
1728 final BinaryDomainCombination s1 = new DirectedBinaryDomainCombination( "b", "key0" );
1729 final BinaryDomainCombination s2 = new DirectedBinaryDomainCombination( "key0", "c" );
1730 final BinaryDomainCombination s3 = new DirectedBinaryDomainCombination( "key0", "cc" );
1731 final BinaryDomainCombination s4 = new DirectedBinaryDomainCombination( "a", "b" );
1732 final BinaryDomainCombination s5 = new DirectedBinaryDomainCombination( "b", "a" );
1733 final BinaryDomainCombination s6 = new DirectedBinaryDomainCombination( "key0", "b" );
1734 final BinaryDomainCombination s7 = new DirectedBinaryDomainCombination( "a", "key0" );
1735 final BinaryDomainCombination s8 = new DirectedBinaryDomainCombination( "c", "key0" );
1736 if ( !cd0.toBinaryDomainCombinations().contains( s0 ) ) {
1739 if ( cd0.toBinaryDomainCombinations().contains( s1 ) ) {
1742 if ( !cd0.toBinaryDomainCombinations().contains( s2 ) ) {
1745 if ( cd0.toBinaryDomainCombinations().contains( s3 ) ) {
1748 if ( cd0.toBinaryDomainCombinations().contains( s4 ) ) {
1751 if ( cd0.toBinaryDomainCombinations().contains( s5 ) ) {
1754 if ( !cd0.toBinaryDomainCombinations().contains( s6 ) ) {
1757 if ( cd0.toBinaryDomainCombinations().contains( s7 ) ) {
1760 if ( cd0.toBinaryDomainCombinations().contains( s8 ) ) {
1763 final Domain key1 = new BasicDomain( "key1", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 );
1764 final Domain a1 = new BasicDomain( "a1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1765 final Domain b1 = new BasicDomain( "b1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1766 final Domain c1 = new BasicDomain( "c1", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
1767 final CombinableDomains cd1 = new DirectedCombinableDomains( key1.getDomainId(), new BasicSpecies( "eel" ) );
1768 cd1.addCombinableDomain( a1.getDomainId() );
1769 cd1.addCombinableDomain( b1.getDomainId() );
1770 cd1.addCombinableDomain( c1.getDomainId() );
1771 cd1.addCombinableDomain( key1.getDomainId() );
1772 if ( cd1.getNumberOfCombinableDomains() != 4 ) {
1775 if ( cd1.getNumberOfProteinsExhibitingCombination( a1.getDomainId() ) != 1 ) {
1778 if ( cd1.getNumberOfProteinsExhibitingCombination( b1.getDomainId() ) != 1 ) {
1781 if ( cd1.getNumberOfProteinsExhibitingCombination( c1.getDomainId() ) != 1 ) {
1784 if ( cd1.getNumberOfProteinsExhibitingCombination( key1.getDomainId() ) != 1 ) {
1787 if ( cd1.getAllDomains().size() != 4 ) {
1790 if ( cd1.toBinaryDomainCombinations().size() != 4 ) {
1793 final BinaryDomainCombination kk = new DirectedBinaryDomainCombination( "key1", "key1" );
1794 if ( !cd1.toBinaryDomainCombinations().contains( kk ) ) {
1798 catch ( final Exception e ) {
1799 e.printStackTrace( System.out );
1805 private static boolean testDirectedness() {
1807 final BinaryStates X = BinaryStates.PRESENT;
1808 final BinaryStates O = BinaryStates.ABSENT;
1809 final GainLossStates G = GainLossStates.GAIN;
1810 final GainLossStates L = GainLossStates.LOSS;
1811 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
1812 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
1813 final Protein one_1 = new BasicProtein( "one", "1", 0 );
1814 final Protein two_1 = new BasicProtein( "two", "1", 0 );
1815 final Protein three_1 = new BasicProtein( "three", "1", 0 );
1816 final Protein four_1 = new BasicProtein( "four", "1", 0 );
1817 final Protein five_1 = new BasicProtein( "five", "1", 0 );
1818 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1819 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1820 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1821 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1822 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1823 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1824 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1825 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1826 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1827 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1828 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1829 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1830 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1831 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1832 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1833 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
1834 final List<Protein> list_1 = new ArrayList<Protein>();
1835 list_1.add( one_1 );
1836 list_1.add( two_1 );
1837 list_1.add( three_1 );
1838 list_1.add( four_1 );
1839 list_1.add( five_1 );
1840 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
1841 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED );
1842 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "B" ) ) ) {
1845 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "A" ) ) ) {
1848 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "A" ) ) ) {
1851 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "C" ) ) ) {
1854 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "A" ) ) ) {
1857 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "C" ) ) ) {
1860 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "X" ) ) ) {
1863 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "Y" ) ) ) {
1866 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "X" ) ) ) {
1869 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "Y" ) ) ) {
1872 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "A" ) ) ) {
1875 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "X", "A" ) ) ) {
1878 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "C", "B" ) ) ) {
1881 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "X", "Y" ) ) ) {
1884 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "X" ) ) ) {
1887 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "Y" ) ) ) {
1890 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "A", "X" ) ) ) {
1893 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "Y", "C" ) ) ) {
1896 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "M", "N" ) ) ) {
1899 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "N", "M" ) ) ) {
1902 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "N", "P" ) ) ) {
1905 if ( !gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "M", "P" ) ) ) {
1908 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "P", "N" ) ) ) {
1911 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "P", "M" ) ) ) {
1914 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "XX", "YY" ) ) ) {
1917 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "YY", "XX" ) ) ) {
1920 if ( gwcd_1.toBinaryDomainCombinations().contains( new DirectedBinaryDomainCombination( "B", "B" ) ) ) {
1923 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1924 // gwcd_list.add( gwcd_1 );
1925 // gwcd_list.add( gwcd_2 );
1926 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
1927 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1928 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
1929 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1930 // if ( matrix_d.getState( 0, 0 ) != X ) {
1933 // if ( matrix_bc.getState( 0, 0 ) != X ) {
1938 // final BasicCharacterStateMatrix<BinaryStates> dm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1939 // { X, X, X, X, X, X }, { X, X, X, X, X, X } } );
1940 // if ( !matrix_d.equals( dm ) ) {
1943 // final BasicCharacterStateMatrix<BinaryStates> bcm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] {
1944 // { X, O, X, X, X, X, O, X, X, O, X, X }, { X, X, X, O, O, O, O, X, O, O, X, X } } );
1945 // if ( !matrix_d.equals( dm ) ) {
1948 //``````````````````````````
1949 // final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
1950 // gwcd_list.add( one );
1951 // gwcd_list.add( two );
1952 // gwcd_list.add( three );
1953 // gwcd_list.add( four );
1954 // final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimony
1955 // .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
1956 // final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimony
1957 // .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
1958 // // System.out.println( "d:" );
1959 // // System.out.println(matrix_d.toStringBuffer().toString() );
1960 // // System.out.println( "bc:" );
1961 // // System.out.println(matrix_bc.toStringBuffer().toString() );
1962 // // 1 a b c e f g h l m
1963 // // 2 a b c e f g i n o
1964 // // 3 a b d e f g j p q
1966 // if ( matrix_d.getState( 0, 0 ) != X ) {
1969 // if ( matrix_d.getState( 0, 1 ) != X ) {
1972 // if ( matrix_d.getState( 0, 2 ) != X ) {
1975 // if ( matrix_d.getState( 0, 3 ) != O ) {
1978 // if ( matrix_d.getState( 0, 4 ) != X ) {
1981 // if ( matrix_d.getState( 0, 5 ) != X ) {
1984 // if ( matrix_d.getState( 0, 6 ) != X ) {
1987 // if ( matrix_d.getState( 0, 7 ) != X ) {
1990 // if ( matrix_d.getState( 0, 8 ) != O ) {
1993 // // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
1994 // // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
1995 // // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
1997 // if ( matrix_bc.getState( 0, 0 ) != X ) {
2000 // if ( matrix_bc.getState( 0, 1 ) != X ) {
2003 // if ( matrix_bc.getState( 0, 2 ) != X ) {
2006 // if ( matrix_bc.getState( 0, 3 ) != O ) {
2009 // if ( matrix_bc.getState( 0, 4 ) != X ) {
2012 // if ( matrix_bc.getState( 1, 0 ) != O ) {
2015 // if ( matrix_bc.getState( 1, 1 ) != X ) {
2018 // if ( matrix_bc.getState( 1, 2 ) != X ) {
2021 // if ( matrix_bc.getState( 1, 3 ) != O ) {
2024 // if ( matrix_bc.getState( 1, 4 ) != X ) {
2027 // if ( matrix_bc.getState( 2, 0 ) != O ) {
2030 // if ( matrix_bc.getState( 2, 1 ) != X ) {
2033 // if ( matrix_bc.getState( 2, 2 ) != O ) {
2036 // if ( matrix_bc.getState( 2, 3 ) != X ) {
2039 // if ( matrix_bc.getState( 2, 4 ) != X ) {
2042 // final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
2043 // final String p0_str = "((one,two)1-2,(three,four)3-4)root";
2044 // final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
2045 // final DomainParsimony dp0 = DomainParsimony.createInstance( p0, gwcd_list );
2046 // dp0.executeDolloParsimonyOnDomainPresence();
2047 // final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
2048 // final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
2049 // dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2050 // final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
2051 // final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
2052 // if ( is_matrix_d.getState( "root", "A" ) != X ) {
2055 // if ( is_matrix_d.getState( "root", "B" ) != X ) {
2058 // if ( is_matrix_d.getState( "root", "C" ) != O ) {
2061 // if ( is_matrix_d.getState( "root", "D" ) != O ) {
2064 // if ( is_matrix_d.getState( "root", "E" ) != X ) {
2067 // if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
2070 // if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
2073 // if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
2076 // if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
2079 // if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
2082 // if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
2085 // if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
2088 // if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
2091 // if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
2094 // if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
2097 // if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
2100 // if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
2103 // if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
2106 // if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
2109 // final Protein ab_1 = new BasicProtein( "ab", "one" );
2110 // ab_1.addProteinDomain( a );
2111 // ab_1.addProteinDomain( b );
2112 // final Protein ac_1 = new BasicProtein( "ac", "one" );
2113 // ac_1.addProteinDomain( a );
2114 // ac_1.addProteinDomain( c );
2115 // final Protein de_1 = new BasicProtein( "de", "one" );
2116 // de_1.addProteinDomain( d );
2117 // de_1.addProteinDomain( e );
2118 // final Protein ac_2 = new BasicProtein( "ac", "two" );
2119 // ac_2.addProteinDomain( a );
2120 // ac_2.addProteinDomain( c );
2121 // final Protein ab_3 = new BasicProtein( "ab", "three" );
2122 // ab_3.addProteinDomain( a );
2123 // ab_3.addProteinDomain( b );
2124 // final Protein de_4 = new BasicProtein( "de", "four" );
2125 // de_4.addProteinDomain( d );
2126 // de_4.addProteinDomain( e );
2127 // final Protein ab_6 = new BasicProtein( "ab", "six" );
2128 // ab_6.addProteinDomain( a );
2129 // ab_6.addProteinDomain( b );
2130 // final List<Protein> spec_one = new ArrayList<Protein>();
2131 // final List<Protein> spec_two = new ArrayList<Protein>();
2132 // final List<Protein> spec_three = new ArrayList<Protein>();
2133 // final List<Protein> spec_four = new ArrayList<Protein>();
2134 // final List<Protein> spec_five = new ArrayList<Protein>();
2135 // final List<Protein> spec_six = new ArrayList<Protein>();
2136 // final List<Protein> spec_seven = new ArrayList<Protein>();
2137 // spec_one.add( ab_1 );
2138 // spec_one.add( ac_1 );
2139 // spec_one.add( de_1 );
2140 // spec_two.add( ac_2 );
2141 // spec_three.add( ab_3 );
2142 // spec_four.add( de_4 );
2143 // spec_six.add( ab_6 );
2144 // final GenomeWideCombinableDomains one_gwcd = BasicGenomeWideCombinableDomains
2145 // .createInstance( spec_one, false, new BasicSpecies( "one" ), false );
2146 // final GenomeWideCombinableDomains two_gwcd = BasicGenomeWideCombinableDomains
2147 // .createInstance( spec_two, false, new BasicSpecies( "two" ), false );
2148 // final GenomeWideCombinableDomains three_gwcd = BasicGenomeWideCombinableDomains
2149 // .createInstance( spec_three, false, new BasicSpecies( "three" ), false );
2150 // final GenomeWideCombinableDomains four_gwcd = BasicGenomeWideCombinableDomains
2151 // .createInstance( spec_four, false, new BasicSpecies( "four" ), false );
2152 // final GenomeWideCombinableDomains five_gwcd = BasicGenomeWideCombinableDomains
2153 // .createInstance( spec_five, false, new BasicSpecies( "five" ), false );
2154 // final GenomeWideCombinableDomains six_gwcd = BasicGenomeWideCombinableDomains
2155 // .createInstance( spec_six, false, new BasicSpecies( "six" ), false );
2156 // final GenomeWideCombinableDomains seven_gwcd = BasicGenomeWideCombinableDomains
2157 // .createInstance( spec_seven, false, new BasicSpecies( "seven" ), false
2159 // final List<GenomeWideCombinableDomains> gwcd_list1 = new ArrayList<GenomeWideCombinableDomains>();
2160 // gwcd_list1.add( one_gwcd );
2161 // gwcd_list1.add( two_gwcd );
2162 // gwcd_list1.add( three_gwcd );
2163 // gwcd_list1.add( four_gwcd );
2164 // gwcd_list1.add( five_gwcd );
2165 // gwcd_list1.add( six_gwcd );
2166 // gwcd_list1.add( seven_gwcd );
2167 // final PhylogenyFactory factory1 = ParserBasedPhylogenyFactory.getInstance();
2168 // final String p1_str = "(((((one,two)12,three)123,(four,five)45)12345,six)123456,seven)root";
2169 // final Phylogeny p1 = factory1.create( p1_str, new NHXParser() )[ 0 ];
2170 // final DomainParsimony dp1 = DomainParsimony.createInstance( p1, gwcd_list1 );
2171 // dp1.executeDolloParsimonyOnDomainPresence();
2172 // final CharacterStateMatrix<GainLossStates> gl_dollo_d = dp1.getGainLossMatrix();
2173 // final CharacterStateMatrix<BinaryStates> i_dollo_d = dp1.getInternalStatesMatrix();
2174 // if ( dp1.getCost() != 14 ) {
2177 // if ( dp1.getTotalGains() != 5 ) {
2180 // if ( dp1.getTotalLosses() != 9 ) {
2183 // if ( dp1.getTotalUnchanged() != 51 ) {
2186 // if ( dp1.getNetGainsOnNode( "45" ) != -2 ) {
2189 // if ( dp1.getSumOfGainsOnNode( "45" ) != 0 ) {
2192 // if ( dp1.getSumOfLossesOnNode( "45" ) != 2 ) {
2195 // if ( dp1.getSumOfUnchangedOnNode( "45" ) != 3 ) {
2198 // if ( dp1.getSumOfUnchangedPresentOnNode( "45" ) != 2 ) {
2201 // if ( dp1.getSumOfUnchangedAbsentOnNode( "45" ) != 1 ) {
2204 // if ( dp1.getUnitsGainedOnNode( "45" ).contains( "A" ) ) {
2207 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A" ) ) {
2210 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "B" ) ) {
2213 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D" ) ) {
2216 // if ( !dp1.getUnitsOnNode( "12" ).contains( "A" ) ) {
2219 // if ( !dp1.getUnitsOnNode( "12" ).contains( "B" ) ) {
2222 // if ( !dp1.getUnitsOnNode( "12" ).contains( "C" ) ) {
2225 // if ( !dp1.getUnitsOnNode( "12" ).contains( "D" ) ) {
2228 // if ( !dp1.getUnitsOnNode( "12" ).contains( "E" ) ) {
2231 // if ( dp1.getNetGainsOnNode( "123456" ) != 2 ) {
2234 // if ( dp1.getSumOfGainsOnNode( "123456" ) != 2 ) {
2237 // dp1.executeDolloParsimonyOnBinaryDomainCombintionPresence();
2238 // final CharacterStateMatrix<GainLossStates> gl_dollo_bc = dp1.getGainLossMatrix();
2239 // final CharacterStateMatrix<BinaryStates> i_dollo_bc = dp1.getInternalStatesMatrix();
2240 // if ( dp1.getCost() != 8 ) {
2243 // if ( dp1.getTotalGains() != 3 ) {
2246 // if ( dp1.getTotalLosses() != 5 ) {
2249 // if ( dp1.getTotalUnchanged() != 31 ) {
2252 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2255 // if ( !dp1.getUnitsGainedOnNode( "12345" ).contains( "D=E" ) ) {
2258 // dp1.executeFitchParsimonyOnDomainPresence();
2259 // final CharacterStateMatrix<GainLossStates> gl_fitch_d = dp1.getGainLossMatrix();
2260 // final CharacterStateMatrix<BinaryStates> i_fitch_d = dp1.getInternalStatesMatrix();
2261 // if ( dp1.getCost() != 10 ) {
2264 // if ( dp1.getTotalGains() != 7 ) {
2267 // if ( dp1.getTotalLosses() != 3 ) {
2270 // if ( dp1.getTotalUnchanged() != 55 ) {
2273 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "E" ) ) {
2276 // dp1.executeFitchParsimonyOnBinaryDomainCombintion();
2277 // final CharacterStateMatrix<GainLossStates> gl_fitch_bc = dp1.getGainLossMatrix();
2278 // final CharacterStateMatrix<BinaryStates> i_fitch_bc = dp1.getInternalStatesMatrix();
2279 // if ( dp1.getCost() != 6 ) {
2282 // if ( dp1.getTotalGains() != 4 ) {
2285 // if ( dp1.getTotalLosses() != 2 ) {
2288 // if ( dp1.getTotalUnchanged() != 33 ) {
2291 // if ( !dp1.getUnitsLostOnNode( "45" ).contains( "A=B" ) ) {
2294 // if ( !dp1.getUnitsGainedOnNode( "four" ).contains( "D=E" ) ) {
2297 // if ( dp1.getNetGainsOnNode( "two" ) != -1 ) {
2300 // if ( dp1.getNetGainsOnNode( "123" ) != 0 ) {
2303 // if ( dp1.getSumOfUnchangedPresentOnNode( "123" ) != 1 ) {
2306 // if ( dp1.getSumOfUnchangedAbsentOnNode( "123" ) != 2 ) {
2309 // if ( dp1.getSumOfUnchangedOnNode( "123" ) != 3 ) {
2312 // if ( dp1.getSumOfUnchangedOnNode( "two" ) != 2 ) {
2315 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "two" ).contains( "D=E" ) ) {
2318 // if ( !dp1.getUnitsUnchangedPresentOnNode( "two" ).contains( "A=C" ) ) {
2321 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "A=C" ) ) {
2324 // if ( !dp1.getUnitsUnchangedPresentOnNode( "123" ).contains( "A=B" ) ) {
2327 // if ( !dp1.getUnitsUnchangedAbsentOnNode( "123" ).contains( "D=E" ) ) {
2330 // CharacterStateMatrix<BinaryStates> bsm = null;
2331 // CharacterStateMatrix<GainLossStates> glm = null;
2332 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, X, X },
2333 // { 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 } } );
2334 // if ( !bsm.equals( i_dollo_d ) ) {
2337 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X, O, O },
2338 // { 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 } } );
2339 // if ( !bsm.equals( i_fitch_d ) ) {
2342 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, P, P },
2343 // { 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 },
2344 // { 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 },
2345 // { A, A, A, A, A }, { A, A, A, A, A } } );
2346 // if ( !glm.equals( gl_dollo_d ) ) {
2349 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P, G, G },
2350 // { 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 },
2351 // { 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 },
2352 // { A, A, A, A, A }, { A, A, A, A, A } } );
2353 // if ( !glm.equals( gl_fitch_d ) ) {
2356 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, X }, { X, O, X },
2357 // { O, O, X }, { X, O, X }, { X, O, O }, { O, O, O } } );
2358 // if ( !bsm.equals( i_dollo_bc ) ) {
2361 // bsm = new BasicCharacterStateMatrix<BinaryStates>( new BinaryStates[][] { { X, X, O }, { X, O, O },
2362 // { O, O, O }, { X, O, O }, { X, O, O }, { O, O, O } } );
2363 // if ( !bsm.equals( i_fitch_bc ) ) {
2366 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, P }, { L, P, L },
2367 // { P, G, P }, { P, A, L }, { P, A, P }, { A, A, P }, { A, A, L }, { L, A, P }, { P, A, G },
2368 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2369 // if ( !glm.equals( gl_dollo_bc ) ) {
2372 // glm = new BasicCharacterStateMatrix<GainLossStates>( new GainLossStates[][] { { P, P, G }, { L, P, A },
2373 // { P, G, A }, { P, A, A }, { P, A, A }, { A, A, G }, { A, A, A }, { L, A, A }, { P, A, A },
2374 // { P, A, A }, { G, A, A }, { A, A, A }, { A, A, A } } );
2375 // if ( !glm.equals( gl_fitch_bc ) ) {
2379 catch ( final Exception e ) {
2380 e.printStackTrace( System.out );
2386 private static boolean testDirectednessAndAdjacency() {
2388 final Protein one_1 = new BasicProtein( "one", "1", 0 );
2389 final Protein two_1 = new BasicProtein( "two", "1", 0 );
2390 final Protein three_1 = new BasicProtein( "three", "1", 0 );
2391 final Protein four_1 = new BasicProtein( "four", "1", 0 );
2392 final Protein five_1 = new BasicProtein( "five", "1", 0 );
2393 one_1.addProteinDomain( new BasicDomain( "B", 12, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2394 one_1.addProteinDomain( new BasicDomain( "C", 13, 14, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2395 one_1.addProteinDomain( new BasicDomain( "A", 11, 12, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2396 one_1.addProteinDomain( new BasicDomain( "X", 100, 110, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2397 one_1.addProteinDomain( new BasicDomain( "Y", 200, 210, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2398 two_1.addProteinDomain( new BasicDomain( "A", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2399 two_1.addProteinDomain( new BasicDomain( "B", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2400 two_1.addProteinDomain( new BasicDomain( "Y", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2401 two_1.addProteinDomain( new BasicDomain( "X", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2402 three_1.addProteinDomain( new BasicDomain( "P", 10, 11, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2403 three_1.addProteinDomain( new BasicDomain( "M", 1, 2, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2404 three_1.addProteinDomain( new BasicDomain( "M", 5, 6, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2405 three_1.addProteinDomain( new BasicDomain( "N", 7, 8, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2406 three_1.addProteinDomain( new BasicDomain( "N", 3, 4, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2407 four_1.addProteinDomain( new BasicDomain( "XX", 10, 20, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2408 five_1.addProteinDomain( new BasicDomain( "YY", 30, 40, ( short ) 1, ( short ) 4, 0.1, -12 ) );
2409 final List<Protein> list_1 = new ArrayList<Protein>();
2410 list_1.add( one_1 );
2411 list_1.add( two_1 );
2412 list_1.add( three_1 );
2413 list_1.add( four_1 );
2414 list_1.add( five_1 );
2415 final GenomeWideCombinableDomains gwcd_1 = BasicGenomeWideCombinableDomains
2416 .createInstance( list_1, false, new BasicSpecies( "1" ), DomainCombinationType.DIRECTED_ADJACTANT );
2417 if ( !gwcd_1.toBinaryDomainCombinations()
2418 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "B" ) ) ) {
2421 if ( gwcd_1.toBinaryDomainCombinations()
2422 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "A" ) ) ) {
2425 if ( gwcd_1.toBinaryDomainCombinations()
2426 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "A" ) ) ) {
2429 if ( gwcd_1.toBinaryDomainCombinations()
2430 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "C" ) ) ) {
2433 if ( gwcd_1.toBinaryDomainCombinations()
2434 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "A" ) ) ) {
2437 if ( !gwcd_1.toBinaryDomainCombinations()
2438 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "C" ) ) ) {
2441 if ( !gwcd_1.toBinaryDomainCombinations()
2442 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "X" ) ) ) {
2445 if ( gwcd_1.toBinaryDomainCombinations()
2446 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "Y" ) ) ) {
2449 if ( !gwcd_1.toBinaryDomainCombinations()
2450 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "Y" ) ) ) {
2453 if ( gwcd_1.toBinaryDomainCombinations()
2454 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "X" ) ) ) {
2457 if ( gwcd_1.toBinaryDomainCombinations()
2458 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "Y" ) ) ) {
2461 if ( !gwcd_1.toBinaryDomainCombinations()
2462 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "A" ) ) ) {
2465 if ( gwcd_1.toBinaryDomainCombinations()
2466 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "A" ) ) ) {
2469 if ( gwcd_1.toBinaryDomainCombinations()
2470 .contains( new AdjactantDirectedBinaryDomainCombination( "C", "B" ) ) ) {
2473 if ( !gwcd_1.toBinaryDomainCombinations()
2474 .contains( new AdjactantDirectedBinaryDomainCombination( "X", "Y" ) ) ) {
2477 if ( gwcd_1.toBinaryDomainCombinations()
2478 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "X" ) ) ) {
2481 if ( gwcd_1.toBinaryDomainCombinations()
2482 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "Y" ) ) ) {
2485 if ( gwcd_1.toBinaryDomainCombinations()
2486 .contains( new AdjactantDirectedBinaryDomainCombination( "A", "X" ) ) ) {
2489 if ( gwcd_1.toBinaryDomainCombinations()
2490 .contains( new AdjactantDirectedBinaryDomainCombination( "Y", "C" ) ) ) {
2493 if ( !gwcd_1.toBinaryDomainCombinations()
2494 .contains( new AdjactantDirectedBinaryDomainCombination( "M", "N" ) ) ) {
2497 if ( !gwcd_1.toBinaryDomainCombinations()
2498 .contains( new AdjactantDirectedBinaryDomainCombination( "N", "M" ) ) ) {
2501 if ( !gwcd_1.toBinaryDomainCombinations()
2502 .contains( new AdjactantDirectedBinaryDomainCombination( "N", "P" ) ) ) {
2505 if ( gwcd_1.toBinaryDomainCombinations()
2506 .contains( new AdjactantDirectedBinaryDomainCombination( "M", "P" ) ) ) {
2509 if ( gwcd_1.toBinaryDomainCombinations()
2510 .contains( new AdjactantDirectedBinaryDomainCombination( "P", "N" ) ) ) {
2513 if ( gwcd_1.toBinaryDomainCombinations()
2514 .contains( new AdjactantDirectedBinaryDomainCombination( "P", "M" ) ) ) {
2517 if ( gwcd_1.toBinaryDomainCombinations()
2518 .contains( new AdjactantDirectedBinaryDomainCombination( "XX", "YY" ) ) ) {
2521 if ( gwcd_1.toBinaryDomainCombinations()
2522 .contains( new AdjactantDirectedBinaryDomainCombination( "YY", "XX" ) ) ) {
2525 if ( gwcd_1.toBinaryDomainCombinations()
2526 .contains( new AdjactantDirectedBinaryDomainCombination( "B", "B" ) ) ) {
2530 catch ( final Exception e ) {
2531 e.printStackTrace( System.out );
2537 private static boolean testDomainArchitectureBasedGenomeSimilarityCalculator() {
2539 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2540 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2541 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2542 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2543 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2544 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2545 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2546 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2547 final Domain i = new BasicDomain( "i", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2548 final Domain j = new BasicDomain( "j", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2549 final Domain k = new BasicDomain( "k", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2550 final Domain l = new BasicDomain( "l", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2551 final Domain m = new BasicDomain( "m", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2552 final Domain n = new BasicDomain( "n", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
2553 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
2554 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
2555 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
2556 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
2557 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
2558 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
2559 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
2560 final Protein rat_0 = new BasicProtein( "0", "rat", 0 );
2561 final Protein rat_1 = new BasicProtein( "1", "rat", 0 );
2562 final Protein rat_2 = new BasicProtein( "2", "rat", 0 );
2563 final Protein rat_3 = new BasicProtein( "3", "rat", 0 );
2564 final Protein rat_4 = new BasicProtein( "4", "rat", 0 );
2565 final Protein rat_5 = new BasicProtein( "5", "rat", 0 );
2566 final Protein rat_6 = new BasicProtein( "6", "rat", 0 );
2567 final Protein rat_7 = new BasicProtein( "7", "rat", 0 );
2568 eel_1.addProteinDomain( a );
2569 eel_2.addProteinDomain( a );
2570 eel_2.addProteinDomain( b );
2571 eel_3.addProteinDomain( a );
2572 eel_3.addProteinDomain( a );
2573 eel_3.addProteinDomain( b );
2574 eel_4.addProteinDomain( a );
2575 eel_4.addProteinDomain( b );
2576 eel_4.addProteinDomain( c );
2577 eel_4.addProteinDomain( d );
2578 eel_4.addProteinDomain( e );
2579 eel_5.addProteinDomain( e );
2580 eel_5.addProteinDomain( e );
2581 eel_5.addProteinDomain( f );
2582 eel_5.addProteinDomain( f );
2583 eel_5.addProteinDomain( f );
2584 eel_5.addProteinDomain( f );
2585 eel_6.addProteinDomain( g );
2586 eel_6.addProteinDomain( h );
2587 rat_1.addProteinDomain( a );
2588 rat_2.addProteinDomain( a );
2589 rat_2.addProteinDomain( b );
2590 rat_3.addProteinDomain( a );
2591 rat_3.addProteinDomain( a );
2592 rat_3.addProteinDomain( b );
2593 rat_4.addProteinDomain( a );
2594 rat_4.addProteinDomain( b );
2595 rat_4.addProteinDomain( c );
2596 rat_4.addProteinDomain( i );
2597 rat_4.addProteinDomain( l );
2598 rat_5.addProteinDomain( i );
2599 rat_5.addProteinDomain( f );
2600 rat_5.addProteinDomain( f );
2601 rat_6.addProteinDomain( j );
2602 rat_6.addProteinDomain( k );
2603 rat_7.addProteinDomain( m );
2604 rat_7.addProteinDomain( n );
2605 final List<Protein> protein_list_eel = new ArrayList<Protein>();
2606 protein_list_eel.add( eel_0 );
2607 protein_list_eel.add( eel_1 );
2608 protein_list_eel.add( eel_2 );
2609 protein_list_eel.add( eel_3 );
2610 protein_list_eel.add( eel_4 );
2611 protein_list_eel.add( eel_5 );
2612 protein_list_eel.add( eel_6 );
2613 final List<Protein> protein_list_rat = new ArrayList<Protein>();
2614 protein_list_rat.add( rat_0 );
2615 protein_list_rat.add( rat_1 );
2616 protein_list_rat.add( rat_2 );
2617 protein_list_rat.add( rat_3 );
2618 protein_list_rat.add( rat_4 );
2619 protein_list_rat.add( rat_5 );
2620 protein_list_rat.add( rat_6 );
2621 protein_list_rat.add( rat_7 );
2622 final GenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
2623 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
2624 final GenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
2625 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
2626 final GenomeWideCombinableDomains rat_not_ignore = BasicGenomeWideCombinableDomains
2627 .createInstance( protein_list_rat, false, new BasicSpecies( "rat" ) );
2628 final GenomeWideCombinableDomains rat_ignore = BasicGenomeWideCombinableDomains
2629 .createInstance( protein_list_rat, true, new BasicSpecies( "rat" ) );
2630 final DomainArchitectureBasedGenomeSimilarityCalculator calc_ni = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_not_ignore,
2632 final DomainArchitectureBasedGenomeSimilarityCalculator calc_i = new DomainArchitectureBasedGenomeSimilarityCalculator( eel_ignore,
2634 if ( calc_ni.getAllDomains().size() != 14 ) {
2637 if ( calc_i.getAllDomains().size() != 14 ) {
2640 if ( calc_ni.getDomainsSpecificToGenome0().size() != 4 ) {
2643 if ( calc_i.getDomainsSpecificToGenome0().size() != 4 ) {
2646 if ( calc_ni.getDomainsSpecificToGenome1().size() != 6 ) {
2649 if ( calc_i.getDomainsSpecificToGenome1().size() != 6 ) {
2652 if ( calc_i.getSharedDomains().size() != 4 ) {
2655 if ( calc_ni.getSharedDomains().size() != 4 ) {
2658 if ( !calc_ni.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2661 if ( !calc_ni.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2664 if ( !calc_ni.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2667 if ( !calc_ni.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2670 if ( calc_ni.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2673 if ( calc_ni.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2676 if ( !calc_i.getDomainsSpecificToGenome0().contains( d.getDomainId() ) ) {
2679 if ( !calc_i.getDomainsSpecificToGenome0().contains( e.getDomainId() ) ) {
2682 if ( !calc_i.getDomainsSpecificToGenome0().contains( g.getDomainId() ) ) {
2685 if ( !calc_i.getDomainsSpecificToGenome0().contains( h.getDomainId() ) ) {
2688 if ( calc_i.getDomainsSpecificToGenome0().contains( a.getDomainId() ) ) {
2691 if ( calc_i.getDomainsSpecificToGenome0().contains( i.getDomainId() ) ) {
2694 if ( !calc_ni.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2697 if ( !calc_ni.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2700 if ( !calc_ni.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2703 if ( !calc_ni.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2706 if ( !calc_ni.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2709 if ( !calc_ni.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2712 if ( calc_ni.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2715 if ( calc_ni.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2718 if ( calc_ni.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2721 if ( !calc_i.getDomainsSpecificToGenome1().contains( i.getDomainId() ) ) {
2724 if ( !calc_i.getDomainsSpecificToGenome1().contains( l.getDomainId() ) ) {
2727 if ( !calc_i.getDomainsSpecificToGenome1().contains( j.getDomainId() ) ) {
2730 if ( !calc_i.getDomainsSpecificToGenome1().contains( k.getDomainId() ) ) {
2733 if ( !calc_i.getDomainsSpecificToGenome1().contains( m.getDomainId() ) ) {
2736 if ( !calc_i.getDomainsSpecificToGenome1().contains( n.getDomainId() ) ) {
2739 if ( calc_i.getDomainsSpecificToGenome1().contains( a.getDomainId() ) ) {
2742 if ( calc_i.getDomainsSpecificToGenome1().contains( b.getDomainId() ) ) {
2745 if ( calc_i.getDomainsSpecificToGenome1().contains( d.getDomainId() ) ) {
2748 if ( !calc_i.getSharedDomains().contains( a.getDomainId() ) ) {
2751 if ( !calc_i.getSharedDomains().contains( b.getDomainId() ) ) {
2754 if ( !calc_i.getSharedDomains().contains( c.getDomainId() ) ) {
2757 if ( !calc_i.getSharedDomains().contains( f.getDomainId() ) ) {
2760 final Set<String> all = calc_ni.getAllDomains();
2761 if ( !all.contains( a.getDomainId() ) ) {
2764 if ( !all.contains( b.getDomainId() ) ) {
2767 if ( !all.contains( c.getDomainId() ) ) {
2770 if ( !all.contains( d.getDomainId() ) ) {
2773 if ( !all.contains( e.getDomainId() ) ) {
2776 if ( !all.contains( f.getDomainId() ) ) {
2779 if ( !all.contains( g.getDomainId() ) ) {
2782 if ( !all.contains( h.getDomainId() ) ) {
2785 if ( !all.contains( i.getDomainId() ) ) {
2788 if ( !all.contains( l.getDomainId() ) ) {
2791 if ( !all.contains( j.getDomainId() ) ) {
2794 if ( !all.contains( k.getDomainId() ) ) {
2797 if ( !all.contains( m.getDomainId() ) ) {
2800 if ( !all.contains( n.getDomainId() ) ) {
2803 final Set<BinaryDomainCombination> s_0_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome0();
2804 final Set<BinaryDomainCombination> s_0_i = calc_i.getBinaryDomainCombinationsSpecificToGenome0();
2805 final Set<BinaryDomainCombination> s_1_ni = calc_ni.getBinaryDomainCombinationsSpecificToGenome1();
2806 final Set<BinaryDomainCombination> s_1_i = calc_i.getBinaryDomainCombinationsSpecificToGenome1();
2807 final Set<BinaryDomainCombination> a_ni = calc_ni.getAllBinaryDomainCombinations();
2808 final Set<BinaryDomainCombination> a_i = calc_i.getAllBinaryDomainCombinations();
2809 final Set<BinaryDomainCombination> shared_ni = calc_ni.getSharedBinaryDomainCombinations();
2810 final Set<BinaryDomainCombination> shared_i = calc_i.getSharedBinaryDomainCombinations();
2811 if ( a_ni.size() != 25 ) {
2814 if ( a_i.size() != 22 ) {
2817 if ( s_0_ni.size() != 10 ) {
2820 if ( s_0_i.size() != 9 ) {
2823 if ( s_1_ni.size() != 10 ) {
2826 if ( s_1_i.size() != 10 ) {
2829 if ( shared_ni.size() != 5 ) {
2832 if ( shared_i.size() != 3 ) {
2835 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2838 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
2841 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2844 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2847 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2850 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2853 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
2856 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
2859 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
2862 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
2865 if ( !a_ni.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
2868 if ( !a_ni.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
2871 if ( !a_ni.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
2874 if ( !a_ni.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2877 if ( !a_ni.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2880 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
2883 if ( !a_ni.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
2886 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
2889 if ( !a_ni.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
2892 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
2895 if ( !a_ni.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
2898 if ( !a_ni.contains( new BasicBinaryDomainCombination( "i", "l" ) ) ) {
2901 if ( !a_ni.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
2904 if ( !a_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2907 if ( !a_ni.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
2910 if ( a_ni.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
2913 if ( a_ni.contains( new BasicBinaryDomainCombination( "a", "m" ) ) ) {
2916 if ( a_i.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2919 if ( a_i.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2922 if ( a_i.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2925 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2928 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
2931 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2934 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2937 if ( !shared_ni.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2940 if ( shared_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2943 if ( shared_i.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
2946 if ( !shared_i.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
2949 if ( !shared_i.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
2952 if ( !shared_i.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
2955 if ( shared_i.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
2958 if ( shared_i.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
2961 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2964 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2967 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
2970 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
2973 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
2976 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
2979 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
2982 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
2985 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
2988 if ( !s_0_ni.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
2991 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
2994 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
2997 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
3000 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
3003 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
3006 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
3009 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
3012 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
3015 if ( !s_0_i.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
3018 if ( s_0_i.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
3021 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
3024 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
3027 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
3030 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
3033 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
3036 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
3039 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "l", "i" ) ) ) {
3042 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
3045 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
3048 if ( !s_1_ni.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
3051 if ( s_1_ni.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
3054 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "a", "i" ) ) ) {
3057 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "a", "l" ) ) ) {
3060 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "b", "i" ) ) ) {
3063 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "b", "l" ) ) ) {
3066 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "c", "i" ) ) ) {
3069 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "c", "l" ) ) ) {
3072 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "l", "i" ) ) ) {
3075 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "i", "f" ) ) ) {
3078 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "m", "n" ) ) ) {
3081 if ( !s_1_i.contains( new BasicBinaryDomainCombination( "j", "k" ) ) ) {
3084 if ( s_1_i.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
3087 if ( !isEqual( calc_ni.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3088 1.0 - ( ( 25.0 - 5.0 ) / 25.0 ) ) ) {
3091 if ( !isEqual( calc_i.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3092 1.0 - ( ( 22.0 - 3.0 ) / 22.0 ) ) ) {
3095 if ( !isEqual( calc_ni.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3098 if ( !isEqual( calc_i.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 14.0 - 4.0 ) / 14.0 ) ) ) {
3101 final Domain u = new BasicDomain( "u", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3102 final Domain v = new BasicDomain( "v", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3103 final Domain w = new BasicDomain( "w", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3104 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3105 final Domain y = new BasicDomain( "y", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3106 final Domain z = new BasicDomain( "z", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
3107 final Protein a_0 = new BasicProtein( "0", "a", 0 );
3108 final Protein a_1 = new BasicProtein( "1", "a", 0 );
3109 final Protein a_2 = new BasicProtein( "2", "a", 0 );
3110 final Protein b_0 = new BasicProtein( "0", "b", 0 );
3111 final Protein b_1 = new BasicProtein( "1", "b", 0 );
3112 a_0.addProteinDomain( u );
3113 a_0.addProteinDomain( v );
3114 a_0.addProteinDomain( w );
3115 a_1.addProteinDomain( w );
3116 a_1.addProteinDomain( x );
3117 a_2.addProteinDomain( y );
3118 a_2.addProteinDomain( z );
3119 b_0.addProteinDomain( u );
3120 b_0.addProteinDomain( w );
3121 b_1.addProteinDomain( y );
3122 b_1.addProteinDomain( z );
3123 final List<Protein> protein_list_a = new ArrayList<Protein>();
3124 protein_list_a.add( a_0 );
3125 protein_list_a.add( a_1 );
3126 protein_list_a.add( a_2 );
3127 final List<Protein> protein_list_b = new ArrayList<Protein>();
3128 protein_list_b.add( b_0 );
3129 protein_list_b.add( b_1 );
3130 final GenomeWideCombinableDomains ca = BasicGenomeWideCombinableDomains
3131 .createInstance( protein_list_a, false, new BasicSpecies( "a" ) );
3132 final GenomeWideCombinableDomains cb = BasicGenomeWideCombinableDomains
3133 .createInstance( protein_list_b, true, new BasicSpecies( "b" ) );
3134 final DomainArchitectureBasedGenomeSimilarityCalculator calc_u = new DomainArchitectureBasedGenomeSimilarityCalculator( ca,
3136 calc_u.setAllowDomainsToBeIgnored( true );
3137 if ( calc_u.getAllDomains().size() != 6 ) {
3140 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3143 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3146 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3149 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3152 if ( calc_u.getSharedDomains().size() != 4 ) {
3155 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3158 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3161 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3164 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3167 if ( calc_u.getAllDomains().size() != 6 ) {
3170 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3173 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3176 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3179 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3182 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3185 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3188 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 3 ) {
3191 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3194 if ( calc_u.getSharedBinaryDomainCombinations().size() != 2 ) {
3197 if ( calc_u.getAllBinaryDomainCombinations().size() != 5 ) {
3200 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3201 .contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3204 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3205 .contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3208 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3209 .contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3212 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3215 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3218 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3221 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3224 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3227 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3230 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3233 calc_u.setAllowDomainsToBeIgnored( true );
3234 calc_u.addDomainIdToIgnore( u.getDomainId() );
3235 calc_u.addDomainIdToIgnore( "other" );
3236 calc_u.addDomainIdToIgnore( "other_too" );
3237 if ( calc_u.getAllDomains().size() != 5 ) {
3240 if ( calc_u.getDomainsSpecificToGenome0().size() != 2 ) {
3243 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3246 if ( !calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3249 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3252 if ( calc_u.getSharedDomains().size() != 3 ) {
3255 if ( calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3258 if ( !calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3261 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3264 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3267 if ( calc_u.getAllDomains().size() != 5 ) {
3270 if ( calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3273 if ( !calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3276 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3279 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3282 if ( !calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3285 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3288 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 2 ) {
3291 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3294 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3297 if ( calc_u.getAllBinaryDomainCombinations().size() != 3 ) {
3300 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3301 .contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3304 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3305 .contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3308 if ( !calc_u.getBinaryDomainCombinationsSpecificToGenome0()
3309 .contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3312 if ( calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3315 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3318 if ( calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "v", "u" ) ) ) {
3321 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "v" ) ) ) {
3324 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "x" ) ) ) {
3327 if ( calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "w", "u" ) ) ) {
3330 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3333 calc_u.setAllowDomainsToBeIgnored( false );
3334 if ( calc_u.getAllDomains().size() != 6 ) {
3338 calc_u.setAllowDomainsToBeIgnored( true );
3339 calc_u.deleteAllDomainIdsToIgnore();
3340 calc_u.addDomainIdToIgnore( "v" );
3341 calc_u.addDomainIdToIgnore( "w" );
3342 calc_u.addDomainIdToIgnore( "other" );
3343 calc_u.addDomainIdToIgnore( "other_too" );
3344 if ( calc_u.getAllDomains().size() != 4 ) {
3347 if ( calc_u.getDomainsSpecificToGenome0().size() != 1 ) {
3350 if ( calc_u.getDomainsSpecificToGenome1().size() != 0 ) {
3353 if ( calc_u.getDomainsSpecificToGenome0().contains( v.getDomainId() ) ) {
3356 if ( !calc_u.getDomainsSpecificToGenome0().contains( x.getDomainId() ) ) {
3359 if ( calc_u.getSharedDomains().size() != 3 ) {
3362 if ( !calc_u.getSharedDomains().contains( u.getDomainId() ) ) {
3365 if ( calc_u.getSharedDomains().contains( w.getDomainId() ) ) {
3368 if ( !calc_u.getSharedDomains().contains( y.getDomainId() ) ) {
3371 if ( !calc_u.getSharedDomains().contains( z.getDomainId() ) ) {
3374 if ( calc_u.getAllDomains().size() != 4 ) {
3377 if ( !calc_u.getAllDomains().contains( u.getDomainId() ) ) {
3380 if ( calc_u.getAllDomains().contains( w.getDomainId() ) ) {
3383 if ( !calc_u.getAllDomains().contains( y.getDomainId() ) ) {
3386 if ( !calc_u.getAllDomains().contains( z.getDomainId() ) ) {
3389 if ( calc_u.getAllDomains().contains( v.getDomainId() ) ) {
3392 if ( !calc_u.getAllDomains().contains( x.getDomainId() ) ) {
3395 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome0().size() != 0 ) {
3398 if ( calc_u.getBinaryDomainCombinationsSpecificToGenome1().size() != 0 ) {
3401 if ( calc_u.getSharedBinaryDomainCombinations().size() != 1 ) {
3404 if ( calc_u.getAllBinaryDomainCombinations().size() != 1 ) {
3407 if ( !calc_u.getSharedBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "y", "z" ) ) ) {
3410 if ( !calc_u.getAllBinaryDomainCombinations().contains( new BasicBinaryDomainCombination( "z", "y" ) ) ) {
3413 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3414 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3417 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3420 calc_u.setAllowDomainsToBeIgnored( false );
3421 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3422 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3425 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3428 calc_u.setAllowDomainsToBeIgnored( true );
3429 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3430 1.0 - ( ( 1.0 - 1.0 ) / 1.0 ) ) ) {
3433 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 4.0 - 3.0 ) / 4.0 ) ) ) {
3436 calc_u.deleteAllDomainIdsToIgnore();
3437 if ( !isEqual( calc_u.calculateSharedBinaryDomainCombinationBasedGenomeSimilarityScore(),
3438 1.0 - ( ( 5.0 - 2.0 ) / 5.0 ) ) ) {
3441 if ( !isEqual( calc_u.calculateSharedDomainsBasedGenomeSimilarityScore(), 1.0 - ( ( 6.0 - 4.0 ) / 6.0 ) ) ) {
3445 catch ( final Exception e ) {
3446 e.printStackTrace( System.out );
3452 private static boolean testDomainCombinationCounting( final File test_dir ) {
3454 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
3455 + ForesterUtil.getFileSeparator() + "hmmpfam_output2" ), "human", "ls" );
3456 parser.setEValueMaximum( 0.2 );
3457 parser.setIgnoreDufs( true );
3458 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
3459 final List<Protein> domain_collections = parser.parse();
3460 final BasicGenomeWideCombinableDomains cdcc = BasicGenomeWideCombinableDomains
3461 .createInstance( domain_collections, false, new BasicSpecies( "human" ) );
3462 CombinableDomains cd = cdcc.get( "A" );
3463 if ( cd.getKeyDomainCount() != 9 ) {
3466 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3469 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3472 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 2 ) {
3475 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3478 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3481 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3484 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3487 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3490 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3493 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3496 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3499 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3502 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3505 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3508 if ( cd.getKeyDomainCount() != 9 ) {
3511 cd = cdcc.get( "B" );
3512 if ( cd.getKeyDomainCount() != 12 ) {
3515 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3518 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3521 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 6 ) {
3524 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3527 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3530 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3533 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3536 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3539 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3542 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3545 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 1 ) {
3548 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 1 ) {
3551 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 1 ) {
3554 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3557 if ( cd.getKeyDomainCount() != 12 ) {
3560 cd = cdcc.get( "C" );
3561 if ( cd.getKeyDomainCount() != 10 ) {
3564 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3567 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3570 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 4 ) {
3573 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 4 ) {
3576 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 2 ) {
3579 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3582 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3585 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "U" ).getDomainId() ) != 1 ) {
3588 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "V" ).getDomainId() ) != 1 ) {
3591 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "W" ).getDomainId() ) != 1 ) {
3594 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "X" ).getDomainId() ) != 2 ) {
3597 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Y" ).getDomainId() ) != 2 ) {
3600 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "Z" ).getDomainId() ) != 2 ) {
3603 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3606 cd = cdcc.get( "D" );
3607 if ( cd.getKeyDomainCount() != 15 ) {
3610 if ( cd.getKeyDomainProteinsCount() != 6 ) {
3613 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3616 cd = cdcc.get( "E" );
3617 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3620 if ( cd.getKeyDomainCount() != 1 ) {
3623 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3626 cd = cdcc.get( "U" );
3627 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3630 if ( cd.getKeyDomainCount() != 6 ) {
3633 if ( cd.getKeyDomainProteinsCount() != 3 ) {
3636 cd = cdcc.get( "V" );
3637 if ( cd.getNumberOfCombinableDomains() != 11 ) {
3640 if ( cd.getKeyDomainCount() != 3 ) {
3643 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3646 cd = cdcc.get( "W" );
3647 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3650 if ( cd.getKeyDomainCount() != 2 ) {
3653 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3656 cd = cdcc.get( "X" );
3657 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3660 if ( cd.getKeyDomainCount() != 2 ) {
3663 cd = cdcc.get( "Y" );
3664 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3667 cd = cdcc.get( "Z" );
3668 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3671 cd = cdcc.get( "NN" );
3672 if ( cd.getKeyDomainCount() != 1 ) {
3675 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3678 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3681 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "NN" ).getDomainId() ) != 0 ) {
3684 cd = cdcc.get( "MM" );
3685 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3688 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 0 ) {
3691 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3694 cd = cdcc.get( "OO" );
3695 if ( cd.getNumberOfCombinableDomains() != 2 ) {
3698 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "OO" ).getDomainId() ) != 1 ) {
3701 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "MM" ).getDomainId() ) != 1 ) {
3704 cd = cdcc.get( "QQ" );
3705 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3708 if ( cd.getKeyDomainCount() != 17 ) {
3711 if ( cd.getKeyDomainProteinsCount() != 4 ) {
3714 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "QQ" ).getDomainId() ) != 3 ) {
3717 cd = cdcc.get( "PP" );
3718 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3721 if ( cd.getKeyDomainCount() != 2 ) {
3724 if ( cd.getKeyDomainProteinsCount() != 2 ) {
3727 cd = cdcc.get( "singlet" );
3728 if ( cd.getKeyDomainCount() != 1 ) {
3731 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3734 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3737 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "singlet" ).getDomainId() ) != 0 ) {
3740 cd = cdcc.get( "three" );
3741 if ( cd.getKeyDomainCount() != 3 ) {
3744 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3747 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3750 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 1 ) {
3753 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
3756 // Ignore combinations with same:
3757 final BasicGenomeWideCombinableDomains cdcc2 = BasicGenomeWideCombinableDomains
3758 .createInstance( domain_collections,
3760 new BasicSpecies( "human" ),
3762 DomainCombinationType.BASIC,
3765 cd = cdcc2.get( "A" );
3766 if ( cd.getKeyDomainCount() != 9 ) {
3769 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3772 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3775 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "A" ).getDomainId() ) != 0 ) {
3778 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "B" ).getDomainId() ) != 6 ) {
3781 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "C" ).getDomainId() ) != 4 ) {
3784 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "D" ).getDomainId() ) != 3 ) {
3787 if ( cd.getNumberOfProteinsExhibitingCombination( new SimpleDomain( "E" ).getDomainId() ) != 1 ) {
3790 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3793 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3796 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3799 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3802 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3805 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3808 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3811 cd = cdcc2.get( "B" );
3812 if ( cd.getKeyDomainCount() != 12 ) {
3815 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3818 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3821 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 6 ) {
3824 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 0 ) {
3827 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 4 ) {
3830 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3833 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3836 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3839 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3842 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3845 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 1 ) {
3848 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 1 ) {
3851 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 1 ) {
3854 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3857 cd = cdcc2.get( "C" );
3858 if ( cd.getKeyDomainCount() != 10 ) {
3861 if ( cd.getKeyDomainProteinsCount() != 7 ) {
3864 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3867 if ( cd.getNumberOfProteinsExhibitingCombination( "A" ) != 4 ) {
3870 if ( cd.getNumberOfProteinsExhibitingCombination( "B" ) != 4 ) {
3873 if ( cd.getNumberOfProteinsExhibitingCombination( "C" ) != 0 ) {
3876 if ( cd.getNumberOfProteinsExhibitingCombination( "D" ) != 3 ) {
3879 if ( cd.getNumberOfProteinsExhibitingCombination( "E" ) != 1 ) {
3882 if ( cd.getNumberOfProteinsExhibitingCombination( "U" ) != 1 ) {
3885 if ( cd.getNumberOfProteinsExhibitingCombination( "V" ) != 1 ) {
3888 if ( cd.getNumberOfProteinsExhibitingCombination( "W" ) != 1 ) {
3891 if ( cd.getNumberOfProteinsExhibitingCombination( "X" ) != 2 ) {
3894 if ( cd.getNumberOfProteinsExhibitingCombination( "Y" ) != 2 ) {
3897 if ( cd.getNumberOfProteinsExhibitingCombination( "Z" ) != 2 ) {
3900 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3903 cd = cdcc2.get( "D" );
3904 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3907 cd = cdcc2.get( "E" );
3908 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3911 if ( cd.getKeyDomainCount() != 1 ) {
3914 cd = cdcc2.get( "U" );
3915 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3918 cd = cdcc2.get( "V" );
3919 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3922 cd = cdcc2.get( "W" );
3923 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3926 cd = cdcc2.get( "X" );
3927 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3930 cd = cdcc2.get( "Y" );
3931 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3934 cd = cdcc2.get( "Z" );
3935 if ( cd.getNumberOfCombinableDomains() != 10 ) {
3938 cd = cdcc2.get( "NN" );
3939 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3942 if ( cd.getNumberOfProteinsExhibitingCombination( "NN" ) != 0 ) {
3945 cd = cdcc2.get( "MM" );
3946 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3949 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 0 ) {
3952 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 1 ) {
3955 cd = cdcc2.get( "OO" );
3956 if ( cd.getNumberOfCombinableDomains() != 1 ) {
3959 if ( cd.getNumberOfProteinsExhibitingCombination( "OO" ) != 0 ) {
3962 if ( cd.getNumberOfProteinsExhibitingCombination( "MM" ) != 1 ) {
3965 cd = cdcc2.get( "QQ" );
3966 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3969 if ( cd.getNumberOfProteinsExhibitingCombination( "QQ" ) != 0 ) {
3972 cd = cdcc2.get( "singlet" );
3973 if ( cd.getKeyDomainCount() != 1 ) {
3976 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3979 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3982 if ( cd.getNumberOfProteinsExhibitingCombination( "singlet" ) != 0 ) {
3985 cd = cdcc2.get( "three" );
3986 if ( cd.getKeyDomainCount() != 3 ) {
3989 if ( cd.getKeyDomainProteinsCount() != 1 ) {
3992 if ( cd.getNumberOfCombinableDomains() != 0 ) {
3995 if ( cd.getNumberOfProteinsExhibitingCombination( "three" ) != 0 ) {
3998 if ( cd.getNumberOfProteinsExhibitingCombination( "so_far_so_bad" ) != 0 ) {
4002 catch ( final Exception e ) {
4003 e.printStackTrace( System.out );
4009 private static boolean testDomainSorting() {
4011 final Domain A = new BasicDomain( "A", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4012 final Domain B = new BasicDomain( "B", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.1, -12 );
4013 final Domain C = new BasicDomain( "C", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.2, -12 );
4014 final Domain D = new BasicDomain( "D", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.3, -12 );
4015 final Domain E = new BasicDomain( "E", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.4, -12 );
4016 final Domain F = new BasicDomain( "F", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.5, -12 );
4017 final Domain G = new BasicDomain( "G", ( short ) 1, ( short ) 2, ( short ) 1, ( short ) 1, 0.6, -12 );
4018 final Domain H1 = new BasicDomain( "H", ( short ) 100, ( short ) 200, ( short ) 1, ( short ) 5, 0.7, -12 );
4019 final Domain H2 = new BasicDomain( "H", ( short ) 300, ( short ) 400, ( short ) 2, ( short ) 5, 0.7, -12 );
4020 final Domain H3 = new BasicDomain( "H", ( short ) 500, ( short ) 600, ( short ) 3, ( short ) 5, 0.7, -12 );
4021 final Domain H4 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 4, ( short ) 5, 0.7, -12 );
4022 final Domain H5 = new BasicDomain( "H", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4023 final Domain H6 = new BasicDomain( "H",
4030 final Domain H7 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 5, 0.7, -12 );
4031 final Domain H8 = new BasicDomain( "H7", ( short ) 700, ( short ) 800, ( short ) 5, ( short ) 200, 0.7, -12 );
4032 final Protein protein = new BasicProtein( "00", "bat", 0 );
4033 protein.addProteinDomain( H5 );
4034 protein.addProteinDomain( H2 );
4035 protein.addProteinDomain( H7 );
4036 protein.addProteinDomain( H6 );
4037 protein.addProteinDomain( A );
4038 protein.addProteinDomain( G );
4039 protein.addProteinDomain( H4 );
4040 protein.addProteinDomain( D );
4041 protein.addProteinDomain( H1 );
4042 protein.addProteinDomain( C );
4043 protein.addProteinDomain( E );
4044 protein.addProteinDomain( F );
4045 protein.addProteinDomain( B );
4046 protein.addProteinDomain( H3 );
4047 protein.addProteinDomain( H7 );
4048 protein.addProteinDomain( H7 );
4049 protein.addProteinDomain( H8 );
4050 final List<Domain> sorted = SurfacingUtil.sortDomainsWithAscendingConfidenceValues( protein );
4051 if ( sorted.size() != 17 ) {
4054 if ( !sorted.get( 0 ).getDomainId().equals( "A" ) ) {
4057 if ( sorted.get( 0 ).getNumber() != 1 ) {
4060 if ( !sorted.get( 1 ).getDomainId().equals( "B" ) ) {
4063 if ( sorted.get( 1 ).getNumber() != 1 ) {
4066 if ( !sorted.get( 2 ).getDomainId().equals( "C" ) ) {
4069 if ( sorted.get( 2 ).getNumber() != 1 ) {
4072 if ( !sorted.get( 3 ).getDomainId().equals( "D" ) ) {
4075 if ( sorted.get( 3 ).getNumber() != 1 ) {
4078 if ( !sorted.get( 4 ).getDomainId().equals( "E" ) ) {
4081 if ( sorted.get( 4 ).getNumber() != 1 ) {
4084 if ( !sorted.get( 5 ).getDomainId().equals( "F" ) ) {
4087 if ( sorted.get( 5 ).getNumber() != 1 ) {
4090 if ( !sorted.get( 6 ).getDomainId().equals( "G" ) ) {
4093 if ( sorted.get( 6 ).getNumber() != 1 ) {
4096 if ( !sorted.get( 7 ).getDomainId().equals( "H" ) ) {
4099 if ( sorted.get( 7 ).getNumber() != 5 ) {
4102 if ( !sorted.get( 8 ).getDomainId().equals( "H" ) ) {
4105 if ( sorted.get( 8 ).getNumber() != 2 ) {
4108 if ( !sorted.get( 9 ).getDomainId().equals( "H" ) ) {
4111 if ( sorted.get( 9 ).getNumber() != 6 ) {
4114 if ( !sorted.get( 10 ).getDomainId().equals( "H" ) ) {
4117 if ( sorted.get( 10 ).getNumber() != 4 ) {
4120 if ( !sorted.get( 11 ).getDomainId().equals( "H" ) ) {
4123 if ( sorted.get( 11 ).getNumber() != 1 ) {
4126 if ( sorted.get( 11 ).getTotalCount() != 5 ) {
4129 if ( !sorted.get( 12 ).getDomainId().equals( "H" ) ) {
4132 if ( sorted.get( 12 ).getNumber() != 3 ) {
4135 if ( !sorted.get( 13 ).getDomainId().equals( "H7" ) ) {
4138 if ( sorted.get( 13 ).getNumber() != 5 ) {
4141 if ( !sorted.get( 14 ).getDomainId().equals( "H7" ) ) {
4144 if ( sorted.get( 14 ).getNumber() != 5 ) {
4147 if ( !sorted.get( 15 ).getDomainId().equals( "H7" ) ) {
4150 if ( sorted.get( 15 ).getNumber() != 5 ) {
4153 // To check if sorting is stable [as claimed by Sun for
4154 // Collections.sort( List )]
4155 if ( !sorted.get( 16 ).getDomainId().equals( "H7" ) ) {
4158 if ( sorted.get( 16 ).getNumber() != 5 ) {
4161 if ( sorted.get( 16 ).getTotalCount() != 200 ) {
4165 catch ( final Exception e ) {
4166 e.printStackTrace( System.out );
4172 private static boolean testEngulfingOverlapRemoval() {
4174 final Domain d0 = new BasicDomain( "d0", 0, 8, ( short ) 1, ( short ) 1, 0.1, 1 );
4175 final Domain d1 = new BasicDomain( "d1", 0, 1, ( short ) 1, ( short ) 1, 0.1, 1 );
4176 final Domain d2 = new BasicDomain( "d2", 0, 2, ( short ) 1, ( short ) 1, 0.1, 1 );
4177 final Domain d3 = new BasicDomain( "d3", 7, 8, ( short ) 1, ( short ) 1, 0.1, 1 );
4178 final Domain d4 = new BasicDomain( "d4", 7, 9, ( short ) 1, ( short ) 1, 0.1, 1 );
4179 final Domain d5 = new BasicDomain( "d4", 0, 9, ( short ) 1, ( short ) 1, 0.1, 1 );
4180 final Domain d6 = new BasicDomain( "d4", 4, 5, ( short ) 1, ( short ) 1, 0.1, 1 );
4181 final List<Boolean> covered = new ArrayList<Boolean>();
4182 covered.add( true ); // 0
4183 covered.add( false ); // 1
4184 covered.add( true ); // 2
4185 covered.add( false ); // 3
4186 covered.add( true ); // 4
4187 covered.add( true ); // 5
4188 covered.add( false ); // 6
4189 covered.add( true ); // 7
4190 covered.add( true ); // 8
4191 if ( SurfacingUtil.isEngulfed( d0, covered ) ) {
4194 if ( SurfacingUtil.isEngulfed( d1, covered ) ) {
4197 if ( SurfacingUtil.isEngulfed( d2, covered ) ) {
4200 if ( !SurfacingUtil.isEngulfed( d3, covered ) ) {
4203 if ( SurfacingUtil.isEngulfed( d4, covered ) ) {
4206 if ( SurfacingUtil.isEngulfed( d5, covered ) ) {
4209 if ( !SurfacingUtil.isEngulfed( d6, covered ) ) {
4212 final Domain a = new BasicDomain( "a", 0, 10, ( short ) 1, ( short ) 1, 0.1, 1 );
4213 final Domain b = new BasicDomain( "b", 8, 20, ( short ) 1, ( short ) 1, 0.2, 1 );
4214 final Domain c = new BasicDomain( "c", 15, 16, ( short ) 1, ( short ) 1, 0.3, 1 );
4215 final Protein abc = new BasicProtein( "abc", "nemve", 0 );
4216 abc.addProteinDomain( a );
4217 abc.addProteinDomain( b );
4218 abc.addProteinDomain( c );
4219 final Protein abc_r1 = SurfacingUtil.removeOverlappingDomains( 3, false, abc );
4220 final Protein abc_r2 = SurfacingUtil.removeOverlappingDomains( 3, true, abc );
4221 if ( abc.getNumberOfProteinDomains() != 3 ) {
4224 if ( abc_r1.getNumberOfProteinDomains() != 3 ) {
4227 if ( abc_r2.getNumberOfProteinDomains() != 2 ) {
4230 if ( !abc_r2.getProteinDomain( 0 ).getDomainId().equals( "a" ) ) {
4233 if ( !abc_r2.getProteinDomain( 1 ).getDomainId().equals( "b" ) ) {
4236 final Domain d = new BasicDomain( "d", 0, 10, ( short ) 1, ( short ) 1, 0.1, 1 );
4237 final Domain e = new BasicDomain( "e", 8, 20, ( short ) 1, ( short ) 1, 0.3, 1 );
4238 final Domain f = new BasicDomain( "f", 15, 16, ( short ) 1, ( short ) 1, 0.2, 1 );
4239 final Protein def = new BasicProtein( "def", "nemve", 0 );
4240 def.addProteinDomain( d );
4241 def.addProteinDomain( e );
4242 def.addProteinDomain( f );
4243 final Protein def_r1 = SurfacingUtil.removeOverlappingDomains( 5, false, def );
4244 final Protein def_r2 = SurfacingUtil.removeOverlappingDomains( 5, true, def );
4245 if ( def.getNumberOfProteinDomains() != 3 ) {
4248 if ( def_r1.getNumberOfProteinDomains() != 3 ) {
4251 if ( def_r2.getNumberOfProteinDomains() != 3 ) {
4254 if ( !def_r2.getProteinDomain( 0 ).getDomainId().equals( "d" ) ) {
4257 if ( !def_r2.getProteinDomain( 1 ).getDomainId().equals( "f" ) ) {
4260 if ( !def_r2.getProteinDomain( 2 ).getDomainId().equals( "e" ) ) {
4264 catch ( final Exception e ) {
4265 e.printStackTrace( System.out );
4271 private static boolean testGenomeWideCombinableDomains() {
4273 final Domain a = new BasicDomain( "a", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4274 final Domain b = new BasicDomain( "b", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4275 final Domain c = new BasicDomain( "c", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4276 final Domain d = new BasicDomain( "d", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4277 final Domain e = new BasicDomain( "e", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4278 final Domain f = new BasicDomain( "f", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4279 final Domain g = new BasicDomain( "g", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4280 final Domain h = new BasicDomain( "h", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4281 final Domain x = new BasicDomain( "x", 23, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
4282 final Protein eel_0 = new BasicProtein( "0", "eel", 0 );
4283 final Protein eel_1 = new BasicProtein( "1", "eel", 0 );
4284 final Protein eel_2 = new BasicProtein( "2", "eel", 0 );
4285 final Protein eel_3 = new BasicProtein( "3", "eel", 0 );
4286 final Protein eel_4 = new BasicProtein( "4", "eel", 0 );
4287 final Protein eel_5 = new BasicProtein( "5", "eel", 0 );
4288 final Protein eel_6 = new BasicProtein( "6", "eel", 0 );
4289 eel_1.addProteinDomain( a );
4290 eel_2.addProteinDomain( a );
4291 eel_2.addProteinDomain( b );
4292 eel_3.addProteinDomain( a );
4293 eel_3.addProteinDomain( a );
4294 eel_3.addProteinDomain( b );
4295 eel_4.addProteinDomain( a );
4296 eel_4.addProteinDomain( b );
4297 eel_4.addProteinDomain( c );
4298 eel_4.addProteinDomain( d );
4299 eel_4.addProteinDomain( e );
4300 eel_5.addProteinDomain( e );
4301 eel_5.addProteinDomain( e );
4302 eel_5.addProteinDomain( f );
4303 eel_5.addProteinDomain( f );
4304 eel_5.addProteinDomain( f );
4305 eel_5.addProteinDomain( f );
4306 eel_6.addProteinDomain( g );
4307 eel_6.addProteinDomain( h );
4308 final List<Protein> protein_list_eel = new ArrayList<Protein>();
4309 protein_list_eel.add( eel_0 );
4310 protein_list_eel.add( eel_1 );
4311 protein_list_eel.add( eel_2 );
4312 protein_list_eel.add( eel_3 );
4313 protein_list_eel.add( eel_4 );
4314 protein_list_eel.add( eel_5 );
4315 protein_list_eel.add( eel_6 );
4316 final BasicGenomeWideCombinableDomains eel_not_ignore = BasicGenomeWideCombinableDomains
4317 .createInstance( protein_list_eel, false, new BasicSpecies( "eel" ) );
4318 final BasicGenomeWideCombinableDomains eel_ignore = BasicGenomeWideCombinableDomains
4319 .createInstance( protein_list_eel, true, new BasicSpecies( "eel" ) );
4320 if ( !eel_not_ignore.contains( "a" ) ) {
4323 if ( !eel_not_ignore.contains( "b" ) ) {
4326 if ( !eel_not_ignore.contains( "c" ) ) {
4329 if ( !eel_not_ignore.contains( "d" ) ) {
4332 if ( !eel_not_ignore.contains( "e" ) ) {
4335 if ( !eel_not_ignore.contains( "f" ) ) {
4338 if ( !eel_not_ignore.contains( "g" ) ) {
4341 if ( !eel_not_ignore.contains( "h" ) ) {
4344 if ( eel_not_ignore.contains( "x" ) ) {
4347 if ( !eel_ignore.contains( "a" ) ) {
4350 if ( !eel_ignore.contains( "b" ) ) {
4353 if ( !eel_ignore.contains( "c" ) ) {
4356 if ( !eel_ignore.contains( "d" ) ) {
4359 if ( !eel_ignore.contains( "e" ) ) {
4362 if ( !eel_ignore.contains( "f" ) ) {
4365 if ( !eel_ignore.contains( "g" ) ) {
4368 if ( !eel_ignore.contains( "h" ) ) {
4371 if ( eel_ignore.contains( "x" ) ) {
4374 if ( eel_not_ignore.getSize() != 8 ) {
4377 if ( eel_ignore.getSize() != 8 ) {
4380 if ( eel_not_ignore.get( "a" ).getCombinableDomainsIds().size() != 5 ) {
4383 if ( eel_not_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4386 if ( eel_not_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4389 if ( eel_not_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4392 if ( eel_not_ignore.get( "e" ).getCombinableDomainsIds().size() != 6 ) {
4395 if ( eel_not_ignore.get( "f" ).getCombinableDomainsIds().size() != 2 ) {
4398 if ( eel_not_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4401 if ( eel_not_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4404 if ( eel_ignore.get( "a" ).getCombinableDomainsIds().size() != 4 ) {
4407 if ( eel_ignore.get( "b" ).getCombinableDomainsIds().size() != 4 ) {
4410 if ( eel_ignore.get( "c" ).getCombinableDomainsIds().size() != 4 ) {
4413 if ( eel_ignore.get( "d" ).getCombinableDomainsIds().size() != 4 ) {
4416 if ( eel_ignore.get( "e" ).getCombinableDomainsIds().size() != 5 ) {
4419 if ( eel_ignore.get( "f" ).getCombinableDomainsIds().size() != 1 ) {
4422 if ( eel_ignore.get( "g" ).getCombinableDomainsIds().size() != 1 ) {
4425 if ( eel_ignore.get( "h" ).getCombinableDomainsIds().size() != 1 ) {
4428 if ( eel_not_ignore.getAllDomainIds().size() != 8 ) {
4431 if ( !eel_not_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4434 if ( !eel_not_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4437 if ( !eel_not_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4440 if ( !eel_not_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4443 if ( !eel_not_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4446 if ( !eel_not_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4449 if ( !eel_not_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4452 if ( !eel_not_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4455 if ( eel_not_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4458 if ( eel_ignore.getAllDomainIds().size() != 8 ) {
4461 if ( !eel_ignore.getAllDomainIds().contains( a.getDomainId() ) ) {
4464 if ( !eel_ignore.getAllDomainIds().contains( b.getDomainId() ) ) {
4467 if ( !eel_ignore.getAllDomainIds().contains( c.getDomainId() ) ) {
4470 if ( !eel_ignore.getAllDomainIds().contains( d.getDomainId() ) ) {
4473 if ( !eel_ignore.getAllDomainIds().contains( e.getDomainId() ) ) {
4476 if ( !eel_ignore.getAllDomainIds().contains( f.getDomainId() ) ) {
4479 if ( !eel_ignore.getAllDomainIds().contains( g.getDomainId() ) ) {
4482 if ( !eel_ignore.getAllDomainIds().contains( h.getDomainId() ) ) {
4485 if ( eel_ignore.getAllDomainIds().contains( x.getDomainId() ) ) {
4488 final SortedSet<BinaryDomainCombination> bc0 = eel_not_ignore.toBinaryDomainCombinations();
4489 if ( bc0.size() != 15 ) {
4492 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
4495 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
4498 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
4501 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
4504 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
4507 if ( !bc0.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
4510 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
4513 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
4516 if ( !bc0.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
4519 if ( !bc0.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
4522 if ( !bc0.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
4525 if ( !bc0.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
4528 if ( !bc0.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
4531 if ( !bc0.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
4534 if ( !bc0.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
4537 if ( !bc0.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
4540 if ( bc0.contains( new BasicBinaryDomainCombination( "f", "a" ) ) ) {
4543 if ( bc0.contains( new BasicBinaryDomainCombination( "f", "b" ) ) ) {
4546 if ( bc0.contains( new BasicBinaryDomainCombination( "a", "h" ) ) ) {
4549 if ( bc0.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
4552 final SortedSet<BinaryDomainCombination> bc1 = eel_ignore.toBinaryDomainCombinations();
4553 if ( bc1.size() != 12 ) {
4556 if ( bc1.contains( new BasicBinaryDomainCombination( "a", "a" ) ) ) {
4559 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "b" ) ) ) {
4562 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "a" ) ) ) {
4565 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "c" ) ) ) {
4568 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "d" ) ) ) {
4571 if ( !bc1.contains( new BasicBinaryDomainCombination( "a", "e" ) ) ) {
4574 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "c" ) ) ) {
4577 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "d" ) ) ) {
4580 if ( !bc1.contains( new BasicBinaryDomainCombination( "b", "e" ) ) ) {
4583 if ( !bc1.contains( new BasicBinaryDomainCombination( "c", "d" ) ) ) {
4586 if ( !bc1.contains( new BasicBinaryDomainCombination( "c", "e" ) ) ) {
4589 if ( !bc1.contains( new BasicBinaryDomainCombination( "d", "e" ) ) ) {
4592 if ( !bc1.contains( new BasicBinaryDomainCombination( "e", "f" ) ) ) {
4595 if ( !bc1.contains( new BasicBinaryDomainCombination( "g", "h" ) ) ) {
4598 if ( bc1.contains( new BasicBinaryDomainCombination( "e", "e" ) ) ) {
4601 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "f" ) ) ) {
4604 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "a" ) ) ) {
4607 if ( bc1.contains( new BasicBinaryDomainCombination( "f", "b" ) ) ) {
4610 if ( bc1.contains( new BasicBinaryDomainCombination( "a", "g" ) ) ) {
4613 if ( bc1.contains( new BasicBinaryDomainCombination( "b", "g" ) ) ) {
4617 catch ( final Exception e ) {
4618 e.printStackTrace( System.out );
4624 private static boolean testHmmPfamOutputParser( final File test_dir ) {
4626 final HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir
4627 + ForesterUtil.getFileSeparator() + "hmmpfam_output" ), "human", "ls" );
4628 parser.setEValueMaximum( 0.2 );
4629 parser.setIgnoreDufs( true );
4630 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4631 List<?> domain_collections = null;
4632 domain_collections = parser.parse();
4633 if ( parser.getDomainsEncountered() != 4 ) {
4636 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4639 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4642 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4645 if ( parser.getDomainsStored() != 3 ) {
4648 if ( domain_collections.size() != 1 ) {
4651 final Protein pdc = ( Protein ) domain_collections.get( 0 );
4652 if ( !pdc.getProteinId().equals( new ProteinId( "ENSP00000285681" ) ) ) {
4655 if ( !pdc.getSpecies().getSpeciesId().equals( "human" ) ) {
4658 if ( pdc.getNumberOfProteinDomains() != 3 ) {
4661 if ( !pdc.getAccession().equals( "acc_ENSP00000285681" ) ) {
4666 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4669 final List<Domain> uba = pdc.getProteinDomains( "UBA" );
4670 final List<Domain> uim = pdc.getProteinDomains( "UIM" );
4671 final List<Domain> uch = pdc.getProteinDomains( "UCH" );
4672 if ( uba.size() != 1 ) {
4675 if ( uim.size() != 2 ) {
4678 if ( uch.size() != 0 ) {
4681 final BasicDomain uim_domain = ( BasicDomain ) uim.get( 1 );
4682 if ( !uim_domain.getDomainId().equals( "UIM" ) ) {
4685 if ( uim_domain.getTotalCount() != 2 ) {
4688 final BasicDomain uba_domain = ( BasicDomain ) uba.get( 0 );
4689 if ( !uba_domain.getDomainId().equals( "UBA" ) ) {
4692 if ( uba_domain.getNumber() != 1 ) {
4695 if ( uba_domain.getTotalCount() != 1 ) {
4698 if ( uba_domain.getFrom() != 16 ) {
4701 if ( uba_domain.getTo() != 57 ) {
4704 if ( !Test.isEqual( uba_domain.getPerSequenceEvalue(), 0.00084 ) ) {
4707 if ( !Test.isEqual( uba_domain.getPerSequenceScore(), 23.2 ) ) {
4710 final HmmPfamOutputParser parser2 = new HmmPfamOutputParser( new File( test_dir
4711 + ForesterUtil.getFileSeparator() + "hmmpfam_output_short" ), "human", "ls" );
4712 parser2.setEValueMaximum( 0.2 );
4713 parser2.setIgnoreDufs( true );
4714 parser2.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4715 List<Protein> domain_collections2 = null;
4716 domain_collections2 = parser2.parse();
4717 if ( parser2.getDomainsEncountered() != 4 ) {
4720 if ( parser.getDomainsIgnoredDueToDuf() != 0 ) {
4723 if ( parser.getDomainsIgnoredDueToEval() != 1 ) {
4726 if ( parser.getDomainsIgnoredDueToOverlap() != 0 ) {
4729 if ( parser2.getDomainsStored() != 3 ) {
4732 if ( domain_collections2.size() != 1 ) {
4735 final Protein pdc2 = domain_collections2.get( 0 );
4736 if ( !pdc2.getProteinId().getId().equals( "ENSP00000285681" ) ) {
4739 if ( !pdc2.getSpecies().getSpeciesId().equals( "human" ) ) {
4742 if ( !pdc2.getName().equals( "" ) ) {
4745 if ( !pdc2.getAccession().equals( "223" ) ) {
4750 .equals( "pep:known chromosome:NCBI36:21:16024215:16174248:1 gene:ENSG00000155313 transcript:ENST00000285681" ) ) {
4753 if ( pdc2.getNumberOfProteinDomains() != 3 ) {
4756 final List<Domain> uba2 = pdc2.getProteinDomains( "UBA" );
4757 final List<Domain> uim2 = pdc2.getProteinDomains( "UIM" );
4758 final List<Domain> uch2 = pdc2.getProteinDomains( "UCH" );
4759 if ( uba2.size() != 1 ) {
4762 if ( uim2.size() != 2 ) {
4765 if ( uch2.size() != 0 ) {
4768 final BasicDomain uim_domain2 = ( BasicDomain ) uim2.get( 1 );
4769 if ( !uim_domain2.getDomainId().equals( "UIM" ) ) {
4772 if ( uim_domain2.getTotalCount() != 2 ) {
4775 final BasicDomain uba_domain2 = ( BasicDomain ) uba2.get( 0 );
4776 if ( !uba_domain2.getDomainId().equals( "UBA" ) ) {
4779 if ( uba_domain2.getNumber() != 1 ) {
4782 if ( uba_domain2.getTotalCount() != 1 ) {
4785 if ( uba_domain2.getFrom() != 16 ) {
4788 if ( uba_domain2.getTo() != 57 ) {
4791 if ( !Test.isEqual( uba_domain2.getPerSequenceEvalue(), 0.00084 ) ) {
4795 catch ( final Exception e ) {
4796 e.printStackTrace( System.out );
4802 private static boolean testHmmPfamOutputParserWithFilter( final File test_dir ) {
4804 HmmPfamOutputParser parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator()
4805 + "hmmpfam_output3" ), "human", "ls" );
4806 parser.setEValueMaximum( 0.2 );
4807 parser.setIgnoreDufs( true );
4808 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4809 List<Protein> proteins = null;
4810 proteins = parser.parse();
4811 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4814 if ( proteins.size() != 4 ) {
4818 Set<String> filter = new TreeSet<String>();
4819 filter.add( "beauty" );
4820 filter.add( "strange" );
4821 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4825 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4826 parser.setEValueMaximum( 0.2 );
4827 parser.setIgnoreDufs( true );
4828 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4830 proteins = parser.parse();
4831 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4834 if ( proteins.size() != 4 ) {
4838 filter = new TreeSet<String>();
4839 filter.add( "beauty" );
4840 filter.add( "strange" );
4841 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4845 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4846 parser.setEValueMaximum( 0.2 );
4847 parser.setIgnoreDufs( true );
4848 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4850 proteins = parser.parse();
4851 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4854 if ( proteins.size() != 0 ) {
4858 filter = new TreeSet<String>();
4859 filter.add( "UIM" );
4862 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4866 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4867 parser.setEValueMaximum( 0.2 );
4868 parser.setIgnoreDufs( true );
4869 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4871 proteins = parser.parse();
4872 if ( parser.getProteinsIgnoredDueToFilter() != 0 ) {
4875 if ( proteins.size() != 4 ) {
4879 filter = new TreeSet<String>();
4880 filter.add( "UIM" );
4884 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4888 HmmPfamOutputParser.FilterType.NEGATIVE_DOMAIN );
4889 parser.setEValueMaximum( 0.2 );
4890 parser.setIgnoreDufs( true );
4891 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4893 proteins = parser.parse();
4894 if ( parser.getDomainsIgnoredDueToNegativeDomainFilter() != 7 ) {
4897 if ( proteins.size() != 3 ) {
4901 filter = new TreeSet<String>();
4902 filter.add( "UIM" );
4905 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4909 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4910 parser.setEValueMaximum( 0.2 );
4911 parser.setIgnoreDufs( true );
4912 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4914 proteins = parser.parse();
4915 if ( parser.getProteinsIgnoredDueToFilter() != 4 ) {
4918 if ( proteins.size() != 0 ) {
4922 filter = new TreeSet<String>();
4923 filter.add( "UIM" );
4924 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4928 HmmPfamOutputParser.FilterType.NEGATIVE_PROTEIN );
4929 parser.setEValueMaximum( 0.2 );
4930 parser.setIgnoreDufs( true );
4931 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4933 proteins = parser.parse();
4934 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4937 if ( parser.getProteinsStored() != 3 ) {
4940 if ( proteins.size() != 3 ) {
4944 filter = new TreeSet<String>();
4945 filter.add( "UIM" );
4946 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4950 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4951 parser.setEValueMaximum( 0.2 );
4952 parser.setIgnoreDufs( true );
4953 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4955 proteins = parser.parse();
4956 if ( parser.getProteinsIgnoredDueToFilter() != 3 ) {
4959 if ( parser.getProteinsStored() != 1 ) {
4962 if ( proteins.size() != 1 ) {
4966 filter = new TreeSet<String>();
4969 parser = new HmmPfamOutputParser( new File( test_dir + ForesterUtil.getFileSeparator() + "hmmpfam_output3" ),
4973 HmmPfamOutputParser.FilterType.POSITIVE_PROTEIN );
4974 parser.setEValueMaximum( 0.2 );
4975 parser.setIgnoreDufs( true );
4976 parser.setReturnType( HmmPfamOutputParser.ReturnType.UNORDERED_PROTEIN_DOMAIN_COLLECTION_PER_PROTEIN );
4978 proteins = parser.parse();
4979 if ( parser.getDomainsEncountered() != 11 ) {
4982 if ( parser.getProteinsEncountered() != 4 ) {
4985 if ( parser.getProteinsIgnoredDueToFilter() != 1 ) {
4988 if ( parser.getProteinsStored() != 3 ) {
4991 if ( proteins.size() != 3 ) {
4995 catch ( final Exception e ) {
4996 e.printStackTrace( System.out );
5002 private static boolean testOverlapRemoval() {
5004 final Domain d0 = new BasicDomain( "d0", ( short ) 2, ( short ) 5, ( short ) 1, ( short ) 1, 0.1, 1 );
5005 final Domain d1 = new BasicDomain( "d1", ( short ) 7, ( short ) 10, ( short ) 1, ( short ) 1, 0.1, 1 );
5006 final Domain d2 = new BasicDomain( "d2", ( short ) 0, ( short ) 20, ( short ) 1, ( short ) 1, 0.1, 1 );
5007 final Domain d3 = new BasicDomain( "d3", ( short ) 9, ( short ) 10, ( short ) 1, ( short ) 1, 0.1, 1 );
5008 final Domain d4 = new BasicDomain( "d4", ( short ) 7, ( short ) 8, ( short ) 1, ( short ) 1, 0.1, 1 );
5009 final List<Boolean> covered = new ArrayList<Boolean>();
5010 covered.add( true ); // 0
5011 covered.add( false ); // 1
5012 covered.add( true ); // 2
5013 covered.add( false ); // 3
5014 covered.add( true ); // 4
5015 covered.add( true ); // 5
5016 covered.add( false ); // 6
5017 covered.add( true ); // 7
5018 covered.add( true ); // 8
5019 if ( SurfacingUtil.calculateOverlap( d0, covered ) != 3 ) {
5022 if ( SurfacingUtil.calculateOverlap( d1, covered ) != 2 ) {
5025 if ( SurfacingUtil.calculateOverlap( d2, covered ) != 6 ) {
5028 if ( SurfacingUtil.calculateOverlap( d3, covered ) != 0 ) {
5031 if ( SurfacingUtil.calculateOverlap( d4, covered ) != 2 ) {
5034 final Domain a = new BasicDomain( "a", ( short ) 2, ( short ) 5, ( short ) 1, ( short ) 1, 0.01, 1 );
5035 final Domain b = new BasicDomain( "b", ( short ) 2, ( short ) 10, ( short ) 1, ( short ) 1, 0.1, 1 );
5036 final Protein ab = new BasicProtein( "ab", "varanus", 0 );
5037 ab.addProteinDomain( a );
5038 ab.addProteinDomain( b );
5039 final Protein ab_s0 = SurfacingUtil.removeOverlappingDomains( 3, false, ab );
5040 if ( ab.getNumberOfProteinDomains() != 2 ) {
5043 if ( ab_s0.getNumberOfProteinDomains() != 1 ) {
5046 if ( !ab_s0.getProteinDomain( 0 ).getDomainId().equals( "a" ) ) {
5049 final Protein ab_s1 = SurfacingUtil.removeOverlappingDomains( 4, false, ab );
5050 if ( ab.getNumberOfProteinDomains() != 2 ) {
5053 if ( ab_s1.getNumberOfProteinDomains() != 2 ) {
5056 final Domain c = new BasicDomain( "c", ( short ) 20000, ( short ) 20500, ( short ) 1, ( short ) 1, 10, 1 );
5057 final Domain d = new BasicDomain( "d",
5064 final Domain e = new BasicDomain( "e", ( short ) 5000, ( short ) 5500, ( short ) 1, ( short ) 1, 0.0001, 1 );
5065 final Protein cde = new BasicProtein( "cde", "varanus", 0 );
5066 cde.addProteinDomain( c );
5067 cde.addProteinDomain( d );
5068 cde.addProteinDomain( e );
5069 final Protein cde_s0 = SurfacingUtil.removeOverlappingDomains( 0, false, cde );
5070 if ( cde.getNumberOfProteinDomains() != 3 ) {
5073 if ( cde_s0.getNumberOfProteinDomains() != 3 ) {
5076 final Domain f = new BasicDomain( "f", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 10, 1 );
5077 final Domain g = new BasicDomain( "g", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 0.01, 1 );
5078 final Domain h = new BasicDomain( "h", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 0.0001, 1 );
5079 final Domain i = new BasicDomain( "i", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 0.5, 1 );
5080 final Domain i2 = new BasicDomain( "i", ( short ) 5, ( short ) 30, ( short ) 1, ( short ) 1, 0.5, 10 );
5081 final Protein fghi = new BasicProtein( "fghi", "varanus", 0 );
5082 fghi.addProteinDomain( f );
5083 fghi.addProteinDomain( g );
5084 fghi.addProteinDomain( h );
5085 fghi.addProteinDomain( i );
5086 fghi.addProteinDomain( i );
5087 fghi.addProteinDomain( i );
5088 fghi.addProteinDomain( i2 );
5089 final Protein fghi_s0 = SurfacingUtil.removeOverlappingDomains( 10, false, fghi );
5090 if ( fghi.getNumberOfProteinDomains() != 7 ) {
5093 if ( fghi_s0.getNumberOfProteinDomains() != 1 ) {
5096 if ( !fghi_s0.getProteinDomain( 0 ).getDomainId().equals( "h" ) ) {
5099 final Protein fghi_s1 = SurfacingUtil.removeOverlappingDomains( 11, false, fghi );
5100 if ( fghi.getNumberOfProteinDomains() != 7 ) {
5103 if ( fghi_s1.getNumberOfProteinDomains() != 7 ) {
5106 final Domain j = new BasicDomain( "j", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 10, 1 );
5107 final Domain k = new BasicDomain( "k", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 0.01, 1 );
5108 final Domain l = new BasicDomain( "l", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 1, 0.0001, 1 );
5109 final Domain m = new BasicDomain( "m", ( short ) 10, ( short ) 20, ( short ) 1, ( short ) 4, 0.5, 1 );
5110 final Domain m0 = new BasicDomain( "m", ( short ) 10, ( short ) 20, ( short ) 2, ( short ) 4, 0.5, 1 );
5111 final Domain m1 = new BasicDomain( "m", ( short ) 10, ( short ) 20, ( short ) 3, ( short ) 4, 0.5, 1 );
5112 final Domain m2 = new BasicDomain( "m", ( short ) 5, ( short ) 30, ( short ) 4, ( short ) 4, 0.5, 10 );
5113 final Protein jklm = new BasicProtein( "jklm", "varanus", 0 );
5114 jklm.addProteinDomain( j );
5115 jklm.addProteinDomain( k );
5116 jklm.addProteinDomain( l );
5117 jklm.addProteinDomain( m );
5118 jklm.addProteinDomain( m0 );
5119 jklm.addProteinDomain( m1 );
5120 jklm.addProteinDomain( m2 );
5121 final Protein jklm_s0 = SurfacingUtil.removeOverlappingDomains( 10, false, jklm );
5122 if ( jklm.getNumberOfProteinDomains() != 7 ) {
5125 if ( jklm_s0.getNumberOfProteinDomains() != 1 ) {
5128 if ( !jklm_s0.getProteinDomain( 0 ).getDomainId().equals( "l" ) ) {
5131 final Protein jklm_s1 = SurfacingUtil.removeOverlappingDomains( 11, false, jklm );
5132 if ( jklm.getNumberOfProteinDomains() != 7 ) {
5135 if ( jklm_s1.getNumberOfProteinDomains() != 7 ) {
5138 final Domain only = new BasicDomain( "only", ( short ) 5, ( short ) 30, ( short ) 4, ( short ) 4, 0.5, 10 );
5139 final Protein od = new BasicProtein( "od", "varanus", 0 );
5140 od.addProteinDomain( only );
5141 final Protein od_s0 = SurfacingUtil.removeOverlappingDomains( 0, false, od );
5142 if ( od.getNumberOfProteinDomains() != 1 ) {
5145 if ( od_s0.getNumberOfProteinDomains() != 1 ) {
5149 catch ( final Exception e ) {
5150 e.printStackTrace( System.out );
5156 private static boolean testParsimony() {
5158 final BinaryStates X = BinaryStates.PRESENT;
5159 final BinaryStates O = BinaryStates.ABSENT;
5160 final GainLossStates G = GainLossStates.GAIN;
5161 final GainLossStates L = GainLossStates.LOSS;
5162 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
5163 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
5164 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5165 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5166 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5167 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5168 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5169 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5170 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5171 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5172 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5173 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5174 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5175 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5176 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5177 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5178 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5179 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5180 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5181 // 1 a-a a-b a-c e-f-g-h l-m
5182 // 2 a-b a-c e-f-g-i n-o
5183 // 3 a-b a-d e-f-g-j p-q
5185 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5186 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5187 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5189 // 1 a b c e f g h l m
5190 // 2 a b c e f g i n o
5191 // 3 a b d e f g j p q
5193 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
5194 aa1.addProteinDomain( a );
5195 aa1.addProteinDomain( a );
5196 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
5197 ab1.addProteinDomain( a );
5198 ab1.addProteinDomain( b );
5199 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
5200 ac1.addProteinDomain( a );
5201 ac1.addProteinDomain( c );
5202 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
5203 efgh1.addProteinDomain( e );
5204 efgh1.addProteinDomain( f );
5205 efgh1.addProteinDomain( g );
5206 efgh1.addProteinDomain( h );
5207 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
5208 lm1.addProteinDomain( l );
5209 lm1.addProteinDomain( m );
5210 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
5211 ab2.addProteinDomain( a );
5212 ab2.addProteinDomain( b );
5213 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
5214 ac2.addProteinDomain( a );
5215 ac2.addProteinDomain( c );
5216 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
5217 efgi2.addProteinDomain( e );
5218 efgi2.addProteinDomain( f );
5219 efgi2.addProteinDomain( g );
5220 efgi2.addProteinDomain( i );
5221 final Protein no2 = new BasicProtein( "no2", "two", 0 );
5222 no2.addProteinDomain( n );
5223 no2.addProteinDomain( o );
5224 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
5225 ab3.addProteinDomain( a );
5226 ab3.addProteinDomain( b );
5227 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
5228 ad3.addProteinDomain( a );
5229 ad3.addProteinDomain( d );
5230 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
5231 efgj3.addProteinDomain( e );
5232 efgj3.addProteinDomain( f );
5233 efgj3.addProteinDomain( g );
5234 efgj3.addProteinDomain( j );
5235 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
5236 pq3.addProteinDomain( p );
5237 pq3.addProteinDomain( q );
5238 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
5239 ab4.addProteinDomain( a );
5240 ab4.addProteinDomain( b );
5241 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
5242 ad4.addProteinDomain( a );
5243 ad4.addProteinDomain( d );
5244 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
5245 pr4.addProteinDomain( p );
5246 pr4.addProteinDomain( r );
5247 final List<Protein> one_list = new ArrayList<Protein>();
5248 one_list.add( aa1 );
5249 one_list.add( ab1 );
5250 one_list.add( ac1 );
5251 one_list.add( efgh1 );
5252 one_list.add( lm1 );
5253 final List<Protein> two_list = new ArrayList<Protein>();
5254 two_list.add( ab2 );
5255 two_list.add( ac2 );
5256 two_list.add( efgi2 );
5257 two_list.add( no2 );
5258 final List<Protein> three_list = new ArrayList<Protein>();
5259 three_list.add( ab3 );
5260 three_list.add( ad3 );
5261 three_list.add( efgj3 );
5262 three_list.add( pq3 );
5263 final List<Protein> four_list = new ArrayList<Protein>();
5264 four_list.add( ab4 );
5265 four_list.add( ad4 );
5266 four_list.add( pr4 );
5267 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5268 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5269 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5270 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5271 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5272 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5273 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5274 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5275 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5276 gwcd_list.add( one );
5277 gwcd_list.add( two );
5278 gwcd_list.add( three );
5279 gwcd_list.add( four );
5280 final CharacterStateMatrix<BinaryStates> matrix_d = DomainParsimonyCalculator
5281 .createMatrixOfDomainPresenceOrAbsence( gwcd_list );
5282 final CharacterStateMatrix<BinaryStates> matrix_bc = DomainParsimonyCalculator
5283 .createMatrixOfBinaryDomainCombinationPresenceOrAbsence( gwcd_list );
5284 // 1 a b c e f g h l m
5285 // 2 a b c e f g i n o
5286 // 3 a b d e f g j p q
5288 if ( matrix_d.getState( 0, 0 ) != X ) {
5291 if ( matrix_d.getState( 0, 1 ) != X ) {
5294 if ( matrix_d.getState( 0, 2 ) != X ) {
5297 if ( matrix_d.getState( 0, 3 ) != O ) {
5300 if ( matrix_d.getState( 0, 4 ) != X ) {
5303 if ( matrix_d.getState( 0, 5 ) != X ) {
5306 if ( matrix_d.getState( 0, 6 ) != X ) {
5309 if ( matrix_d.getState( 0, 7 ) != X ) {
5312 if ( matrix_d.getState( 0, 8 ) != O ) {
5315 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5316 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5317 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5319 if ( matrix_bc.getState( 0, 0 ) != X ) {
5322 if ( matrix_bc.getState( 0, 1 ) != X ) {
5325 if ( matrix_bc.getState( 0, 2 ) != X ) {
5328 if ( matrix_bc.getState( 0, 3 ) != O ) {
5331 if ( matrix_bc.getState( 0, 4 ) != X ) {
5334 if ( matrix_bc.getState( 1, 0 ) != O ) {
5337 if ( matrix_bc.getState( 1, 1 ) != X ) {
5340 if ( matrix_bc.getState( 1, 2 ) != X ) {
5343 if ( matrix_bc.getState( 1, 3 ) != O ) {
5346 if ( matrix_bc.getState( 1, 4 ) != X ) {
5349 if ( matrix_bc.getState( 2, 0 ) != O ) {
5352 if ( matrix_bc.getState( 2, 1 ) != X ) {
5355 if ( matrix_bc.getState( 2, 2 ) != O ) {
5358 if ( matrix_bc.getState( 2, 3 ) != X ) {
5361 if ( matrix_bc.getState( 2, 4 ) != X ) {
5364 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5365 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5366 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5367 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list );
5368 dp0.executeDolloParsimonyOnDomainPresence();
5369 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5370 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5371 dp0.executeDolloParsimonyOnBinaryDomainCombintionPresence();
5372 final CharacterStateMatrix<GainLossStates> gl_matrix_bc = dp0.getGainLossMatrix();
5373 final CharacterStateMatrix<BinaryStates> is_matrix_bc = dp0.getInternalStatesMatrix();
5374 if ( is_matrix_d.getState( "root", "A" ) != X ) {
5377 if ( is_matrix_d.getState( "root", "B" ) != X ) {
5380 if ( is_matrix_d.getState( "root", "C" ) != O ) {
5383 if ( is_matrix_d.getState( "root", "D" ) != O ) {
5386 if ( is_matrix_d.getState( "root", "E" ) != X ) {
5389 if ( is_matrix_bc.getState( "root", "A=A" ) != O ) {
5392 if ( is_matrix_bc.getState( "root", "A=B" ) != X ) {
5395 if ( is_matrix_bc.getState( "root", "A=C" ) != O ) {
5398 if ( is_matrix_bc.getState( "root", "A=D" ) != O ) {
5401 if ( is_matrix_bc.getState( "root", "G=H" ) != O ) {
5404 if ( is_matrix_bc.getState( "1-2", "G=H" ) != O ) {
5407 if ( is_matrix_bc.getState( "root", "E=F" ) != X ) {
5410 if ( gl_matrix_bc.getState( "root", "E=F" ) != P ) {
5413 if ( gl_matrix_bc.getState( "root", "A=A" ) != A ) {
5416 if ( gl_matrix_bc.getState( "one", "A=A" ) != G ) {
5419 if ( gl_matrix_bc.getState( "root", "A=B" ) != P ) {
5422 if ( gl_matrix_bc.getState( "3-4", "A=D" ) != G ) {
5425 if ( gl_matrix_bc.getState( "four", "E=F" ) != L ) {
5428 if ( gl_matrix_d.getState( "3-4", "P" ) != G ) {
5432 catch ( final Exception e ) {
5433 e.printStackTrace( System.out );
5439 private static boolean testParsimonyOnSecondaryFeatures() {
5441 final BinaryStates X = BinaryStates.PRESENT;
5442 final BinaryStates O = BinaryStates.ABSENT;
5443 final GainLossStates G = GainLossStates.GAIN;
5444 final GainLossStates L = GainLossStates.LOSS;
5445 final GainLossStates A = GainLossStates.UNCHANGED_ABSENT;
5446 final GainLossStates P = GainLossStates.UNCHANGED_PRESENT;
5447 final Domain a = new BasicDomain( "A", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5448 final Domain b = new BasicDomain( "B", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5449 final Domain c = new BasicDomain( "C", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5450 final Domain d = new BasicDomain( "D", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5451 final Domain e = new BasicDomain( "E", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5452 final Domain f = new BasicDomain( "F", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5453 final Domain g = new BasicDomain( "G", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5454 final Domain h = new BasicDomain( "H", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5455 final Domain i = new BasicDomain( "I", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5456 final Domain j = new BasicDomain( "J", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5457 final Domain l = new BasicDomain( "L", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5458 final Domain m = new BasicDomain( "M", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5459 final Domain n = new BasicDomain( "N", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5460 final Domain o = new BasicDomain( "O", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5461 final Domain p = new BasicDomain( "P", 1, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5462 final Domain q = new BasicDomain( "Q", 2, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5463 final Domain r = new BasicDomain( "R", 3, 25, ( short ) 1, ( short ) 4, 0.1, -12 );
5464 // 1 a-a a-b a-c e-f-g-h l-m
5465 // 2 a-b a-c e-f-g-i n-o
5466 // 3 a-b a-d e-f-g-j p-q
5468 // 1 a-a a-b a-c e-f e-g e-h f-g f-h g-h l-m
5469 // 2 a-b a-c e-f e-g e-i f-g f-i g-i n-o
5470 // 3 a-b a-d e-f e-g e-j f-g f-j g-j p-q
5472 // 1 a b c e f g h l m
5473 // 2 a b c e f g i n o
5474 // 3 a b d e f g j p q
5476 final Protein aa1 = new BasicProtein( "aa1", "one", 0 );
5477 aa1.addProteinDomain( a );
5478 aa1.addProteinDomain( a );
5479 final Protein ab1 = new BasicProtein( "ab1", "one", 0 );
5480 ab1.addProteinDomain( a );
5481 ab1.addProteinDomain( b );
5482 final Protein ac1 = new BasicProtein( "ac1", "one", 0 );
5483 ac1.addProteinDomain( a );
5484 ac1.addProteinDomain( c );
5485 final Protein efgh1 = new BasicProtein( "efgh1", "one", 0 );
5486 efgh1.addProteinDomain( e );
5487 efgh1.addProteinDomain( f );
5488 efgh1.addProteinDomain( g );
5489 efgh1.addProteinDomain( h );
5490 final Protein lm1 = new BasicProtein( "lm1", "one", 0 );
5491 lm1.addProteinDomain( l );
5492 lm1.addProteinDomain( m );
5493 final Protein ab2 = new BasicProtein( "ab2", "two", 0 );
5494 ab2.addProteinDomain( a );
5495 ab2.addProteinDomain( b );
5496 final Protein ac2 = new BasicProtein( "ac2", "two", 0 );
5497 ac2.addProteinDomain( a );
5498 ac2.addProteinDomain( c );
5499 final Protein efgi2 = new BasicProtein( "efgi2", "two", 0 );
5500 efgi2.addProteinDomain( e );
5501 efgi2.addProteinDomain( f );
5502 efgi2.addProteinDomain( g );
5503 efgi2.addProteinDomain( i );
5504 final Protein no2 = new BasicProtein( "no2", "two", 0 );
5505 no2.addProteinDomain( n );
5506 no2.addProteinDomain( o );
5507 final Protein ab3 = new BasicProtein( "ab3", "three", 0 );
5508 ab3.addProteinDomain( a );
5509 ab3.addProteinDomain( b );
5510 final Protein ad3 = new BasicProtein( "ad3", "three", 0 );
5511 ad3.addProteinDomain( a );
5512 ad3.addProteinDomain( d );
5513 final Protein efgj3 = new BasicProtein( "efgj3", "three", 0 );
5514 efgj3.addProteinDomain( e );
5515 efgj3.addProteinDomain( f );
5516 efgj3.addProteinDomain( g );
5517 efgj3.addProteinDomain( j );
5518 final Protein pq3 = new BasicProtein( "pq3", "three", 0 );
5519 pq3.addProteinDomain( p );
5520 pq3.addProteinDomain( q );
5521 final Protein ab4 = new BasicProtein( "ab4", "four", 0 );
5522 ab4.addProteinDomain( a );
5523 ab4.addProteinDomain( b );
5524 final Protein ad4 = new BasicProtein( "ad4", "four", 0 );
5525 ad4.addProteinDomain( a );
5526 ad4.addProteinDomain( d );
5527 final Protein pr4 = new BasicProtein( "pr4", "four", 0 );
5528 pr4.addProteinDomain( p );
5529 pr4.addProteinDomain( r );
5530 final List<Protein> one_list = new ArrayList<Protein>();
5531 one_list.add( aa1 );
5532 one_list.add( ab1 );
5533 one_list.add( ac1 );
5534 one_list.add( efgh1 );
5535 one_list.add( lm1 );
5536 final List<Protein> two_list = new ArrayList<Protein>();
5537 two_list.add( ab2 );
5538 two_list.add( ac2 );
5539 two_list.add( efgi2 );
5540 two_list.add( no2 );
5541 final List<Protein> three_list = new ArrayList<Protein>();
5542 three_list.add( ab3 );
5543 three_list.add( ad3 );
5544 three_list.add( efgj3 );
5545 three_list.add( pq3 );
5546 final List<Protein> four_list = new ArrayList<Protein>();
5547 four_list.add( ab4 );
5548 four_list.add( ad4 );
5549 four_list.add( pr4 );
5550 final GenomeWideCombinableDomains one = BasicGenomeWideCombinableDomains
5551 .createInstance( one_list, false, new BasicSpecies( "one" ) );
5552 final GenomeWideCombinableDomains two = BasicGenomeWideCombinableDomains
5553 .createInstance( two_list, false, new BasicSpecies( "two" ) );
5554 final GenomeWideCombinableDomains three = BasicGenomeWideCombinableDomains
5555 .createInstance( three_list, false, new BasicSpecies( "three" ) );
5556 final GenomeWideCombinableDomains four = BasicGenomeWideCombinableDomains
5557 .createInstance( four_list, false, new BasicSpecies( "four" ) );
5558 final List<GenomeWideCombinableDomains> gwcd_list = new ArrayList<GenomeWideCombinableDomains>();
5559 gwcd_list.add( one );
5560 gwcd_list.add( two );
5561 gwcd_list.add( three );
5562 gwcd_list.add( four );
5563 final Map<String, Set<String>> map_same = new HashMap<String, Set<String>>();
5564 final HashSet<String> a_s = new HashSet<String>();
5566 final HashSet<String> b_s = new HashSet<String>();
5568 final HashSet<String> c_s = new HashSet<String>();
5570 final HashSet<String> d_s = new HashSet<String>();
5572 final HashSet<String> e_s = new HashSet<String>();
5574 final HashSet<String> f_s = new HashSet<String>();
5576 final HashSet<String> g_s = new HashSet<String>();
5578 final HashSet<String> h_s = new HashSet<String>();
5580 final HashSet<String> i_s = new HashSet<String>();
5582 final HashSet<String> j_s = new HashSet<String>();
5584 final HashSet<String> l_s = new HashSet<String>();
5586 final HashSet<String> m_s = new HashSet<String>();
5588 final HashSet<String> n_s = new HashSet<String>();
5590 final HashSet<String> o_s = new HashSet<String>();
5592 final HashSet<String> p_s = new HashSet<String>();
5594 final HashSet<String> q_s = new HashSet<String>();
5596 final HashSet<String> r_s = new HashSet<String>();
5598 map_same.put( a.getDomainId(), a_s );
5599 map_same.put( b.getDomainId(), b_s );
5600 map_same.put( c.getDomainId(), c_s );
5601 map_same.put( d.getDomainId(), d_s );
5602 map_same.put( e.getDomainId(), e_s );
5603 map_same.put( f.getDomainId(), f_s );
5604 map_same.put( g.getDomainId(), g_s );
5605 map_same.put( h.getDomainId(), h_s );
5606 map_same.put( i.getDomainId(), i_s );
5607 map_same.put( j.getDomainId(), j_s );
5608 map_same.put( l.getDomainId(), l_s );
5609 map_same.put( m.getDomainId(), m_s );
5610 map_same.put( n.getDomainId(), n_s );
5611 map_same.put( o.getDomainId(), o_s );
5612 map_same.put( p.getDomainId(), p_s );
5613 map_same.put( q.getDomainId(), q_s );
5614 map_same.put( r.getDomainId(), r_s );
5615 final CharacterStateMatrix<BinaryStates> matrix_s = DomainParsimonyCalculator
5616 .createMatrixOfSecondaryFeaturePresenceOrAbsence( gwcd_list, map_same, null );
5617 // 1 a b c e f g h l m
5618 // 2 a b c e f g i n o
5619 // 3 a b d e f g j p q
5621 if ( matrix_s.getState( 0, 0 ) != X ) {
5624 if ( matrix_s.getState( 0, 1 ) != X ) {
5627 if ( matrix_s.getState( 0, 2 ) != X ) {
5630 if ( matrix_s.getState( 0, 3 ) != O ) {
5633 if ( matrix_s.getState( 0, 4 ) != X ) {
5636 if ( matrix_s.getState( 0, 5 ) != X ) {
5639 if ( matrix_s.getState( 0, 6 ) != X ) {
5642 if ( matrix_s.getState( 0, 7 ) != X ) {
5645 if ( matrix_s.getState( 0, 8 ) != O ) {
5648 final PhylogenyFactory factory0 = ParserBasedPhylogenyFactory.getInstance();
5649 final String p0_str = "((one,two)1-2,(three,four)3-4)root";
5650 final Phylogeny p0 = factory0.create( p0_str, new NHXParser() )[ 0 ];
5651 final DomainParsimonyCalculator dp0 = DomainParsimonyCalculator.createInstance( p0, gwcd_list, map_same );
5652 dp0.executeDolloParsimonyOnSecondaryFeatures( null );
5653 final CharacterStateMatrix<GainLossStates> gl_matrix_d = dp0.getGainLossMatrix();
5654 final CharacterStateMatrix<BinaryStates> is_matrix_d = dp0.getInternalStatesMatrix();
5655 if ( is_matrix_d.getState( "root", "AAA" ) != X ) {
5658 if ( is_matrix_d.getState( "root", "BBB" ) != X ) {
5661 if ( is_matrix_d.getState( "root", "CCC" ) != O ) {
5664 if ( is_matrix_d.getState( "root", "DDD" ) != O ) {
5667 if ( is_matrix_d.getState( "root", "EEE" ) != X ) {
5670 if ( gl_matrix_d.getState( "3-4", "PPP" ) != G ) {
5674 catch ( final Exception e ) {
5675 e.printStackTrace( System.out );
5681 private static boolean testPaupLogParser( final File test_dir ) {
5683 final PaupLogParser parser = new PaupLogParser();
5684 parser.setSource( new File( test_dir + ForesterUtil.getFileSeparator() + "paup_log_test_1" ) );
5685 final CharacterStateMatrix<BinaryStates> matrix = parser.parse();
5686 if ( matrix.getNumberOfIdentifiers() != 8 ) {
5689 if ( !matrix.getIdentifier( 0 ).equals( "MOUSE" ) ) {
5692 if ( !matrix.getIdentifier( 1 ).equals( "NEMVE" ) ) {
5695 if ( !matrix.getIdentifier( 2 ).equals( "MONBE" ) ) {
5698 if ( !matrix.getIdentifier( 3 ).equals( "DICDI" ) ) {
5701 if ( !matrix.getIdentifier( 4 ).equals( "ARATH" ) ) {
5704 if ( !matrix.getIdentifier( 5 ).equals( "6" ) ) {
5707 if ( !matrix.getIdentifier( 6 ).equals( "7" ) ) {
5710 if ( !matrix.getIdentifier( 7 ).equals( "8" ) ) {
5713 if ( matrix.getNumberOfCharacters() != ( 66 + 66 + 28 ) ) {
5716 if ( matrix.getState( 0, 4 ) != BinaryStates.ABSENT ) {
5719 if ( matrix.getState( 0, 5 ) != BinaryStates.PRESENT ) {
5722 if ( matrix.getState( 1, 5 ) != BinaryStates.PRESENT ) {
5725 if ( matrix.getState( 7, 154 ) != BinaryStates.ABSENT ) {
5728 if ( matrix.getState( 7, 155 ) != BinaryStates.PRESENT ) {
5731 if ( matrix.getState( 7, 156 ) != BinaryStates.PRESENT ) {
5734 if ( matrix.getState( 7, 157 ) != BinaryStates.ABSENT ) {
5737 if ( matrix.getState( 7, 158 ) != BinaryStates.PRESENT ) {
5740 if ( matrix.getState( 7, 159 ) != BinaryStates.ABSENT ) {
5744 catch ( final Exception e ) {
5745 e.printStackTrace( System.out );