// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
//
// Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.surfacing;
import java.util.HashSet;
import java.util.Set;
+import org.forester.protein.BinaryDomainCombination;
+
public class DomainArchitectureBasedGenomeSimilarityCalculator {
public static final double MAX_SIMILARITY_SCORE = 1.0;
public static final double MIN_SIMILARITY_SCORE = 0.0;
- final private GenomeWideCombinableDomains _combinable_domains_genome_0;
- final private GenomeWideCombinableDomains _combinable_domains_genome_1;
- private Set<DomainId> _domain_ids_to_ignore;
- private boolean _allow_domains_to_be_ignored;
- private Set<DomainId> _all_domains;
- private Set<DomainId> _shared_domains;
- private Set<DomainId> _domains_specific_to_0;
- private Set<DomainId> _domains_specific_to_1;
private Set<BinaryDomainCombination> _all_binary_domain_combinations;
- private Set<BinaryDomainCombination> _shared_binary_domain_combinations;
+ private Set<String> _all_domains;
+ private boolean _allow_domains_to_be_ignored;
private Set<BinaryDomainCombination> _binary_domain_combinations_specific_to_0;
private Set<BinaryDomainCombination> _binary_domain_combinations_specific_to_1;
+ final private GenomeWideCombinableDomains _combinable_domains_genome_0;
+ final private GenomeWideCombinableDomains _combinable_domains_genome_1;
+ private Set<String> _domain_ids_to_ignore;
+ private Set<String> _domains_specific_to_0;
+ private Set<String> _domains_specific_to_1;
+ private Set<BinaryDomainCombination> _shared_binary_domain_combinations;
+ private Set<String> _shared_domains;
public DomainArchitectureBasedGenomeSimilarityCalculator( final GenomeWideCombinableDomains combinable_domains_genome_0,
final GenomeWideCombinableDomains combinable_domains_genome_1 ) {
forceRecalculation();
}
- public void addDomainIdToIgnore( final DomainId domain_id_to_ignore ) {
+ public void addDomainIdToIgnore( final String domain_id_to_ignore ) {
forceRecalculation();
getDomainIdsToIgnore().add( domain_id_to_ignore );
}
public void deleteAllDomainIdsToIgnore() {
forceRecalculation();
- setDomainIdsToIgnore( new HashSet<DomainId>() );
- }
-
- private void forceRecalculation() {
- _all_domains = null;
- _shared_domains = null;
- _domains_specific_to_0 = null;
- _domains_specific_to_1 = null;
- _all_binary_domain_combinations = null;
- _shared_binary_domain_combinations = null;
- _binary_domain_combinations_specific_to_0 = null;
- _binary_domain_combinations_specific_to_1 = null;
+ setDomainIdsToIgnore( new HashSet<String>() );
}
/**
*
* @return
*/
- public Set<DomainId> getAllDomains() {
+ public Set<String> getAllDomains() {
if ( _all_domains == null ) {
- final Set<DomainId> all = new HashSet<DomainId>();
+ final Set<String> all = new HashSet<String>();
all.addAll( getCombinableDomainsGenome0().getAllDomainIds() );
all.addAll( getCombinableDomainsGenome1().getAllDomainIds() );
if ( isAllowDomainsToBeIgnored() && !getDomainIdsToIgnore().isEmpty() ) {
return _all_domains;
}
- private Set<BinaryDomainCombination> getBinaryDomainCombinationsSpecificToGenome( final boolean specific_to_genome_0 ) {
- final Set<BinaryDomainCombination> specific = new HashSet<BinaryDomainCombination>();
- final Set<BinaryDomainCombination> bc0 = getCombinableDomainsGenome0().toBinaryDomainCombinations();
- final Set<BinaryDomainCombination> bc1 = getCombinableDomainsGenome1().toBinaryDomainCombinations();
- if ( specific_to_genome_0 ) {
- for( final BinaryDomainCombination binary_domain_combination0 : bc0 ) {
- if ( !bc1.contains( binary_domain_combination0 ) ) {
- specific.add( binary_domain_combination0 );
- }
- }
- }
- else {
- for( final BinaryDomainCombination binary_domain_combination1 : bc1 ) {
- if ( !bc0.contains( binary_domain_combination1 ) ) {
- specific.add( binary_domain_combination1 );
- }
- }
- }
- if ( isAllowDomainsToBeIgnored() && !getDomainIdsToIgnore().isEmpty() ) {
- return pruneBinaryCombinations( specific );
- }
- return specific;
- }
-
public Set<BinaryDomainCombination> getBinaryDomainCombinationsSpecificToGenome0() {
if ( _binary_domain_combinations_specific_to_0 == null ) {
_binary_domain_combinations_specific_to_0 = getBinaryDomainCombinationsSpecificToGenome( true );
return _binary_domain_combinations_specific_to_1;
}
- private GenomeWideCombinableDomains getCombinableDomainsGenome0() {
- return _combinable_domains_genome_0;
- }
-
- private GenomeWideCombinableDomains getCombinableDomainsGenome1() {
- return _combinable_domains_genome_1;
- }
-
- private Set<DomainId> getDomainIdsToIgnore() {
- return _domain_ids_to_ignore;
- }
-
- private Set<DomainId> getDomainsSpecificToGenome( final boolean specific_to_genome_0 ) {
- final Set<DomainId> specific = new HashSet<DomainId>();
- final Set<DomainId> d0 = getCombinableDomainsGenome0().getAllDomainIds();
- final Set<DomainId> d1 = getCombinableDomainsGenome1().getAllDomainIds();
- if ( specific_to_genome_0 ) {
- for( final DomainId domain0 : d0 ) {
- if ( !d1.contains( domain0 ) ) {
- specific.add( domain0 );
- }
- }
- }
- else {
- for( final DomainId domain1 : d1 ) {
- if ( !d0.contains( domain1 ) ) {
- specific.add( domain1 );
- }
- }
- }
- if ( isAllowDomainsToBeIgnored() && !getDomainIdsToIgnore().isEmpty() ) {
- return pruneDomains( specific );
- }
- return specific;
- }
-
- public Set<DomainId> getDomainsSpecificToGenome0() {
+ public Set<String> getDomainsSpecificToGenome0() {
if ( _domains_specific_to_0 == null ) {
_domains_specific_to_0 = getDomainsSpecificToGenome( true );
}
return _domains_specific_to_0;
}
- public Set<DomainId> getDomainsSpecificToGenome1() {
+ public Set<String> getDomainsSpecificToGenome1() {
if ( _domains_specific_to_1 == null ) {
_domains_specific_to_1 = getDomainsSpecificToGenome( false );
}
return _shared_binary_domain_combinations;
}
- public Set<DomainId> getSharedDomains() {
+ public Set<String> getSharedDomains() {
if ( _shared_domains == null ) {
- final Set<DomainId> shared = new HashSet<DomainId>();
- final Set<DomainId> d0 = getCombinableDomainsGenome0().getAllDomainIds();
- final Set<DomainId> d1 = getCombinableDomainsGenome1().getAllDomainIds();
- for( final DomainId domain0 : d0 ) {
+ final Set<String> shared = new HashSet<String>();
+ final Set<String> d0 = getCombinableDomainsGenome0().getAllDomainIds();
+ final Set<String> d1 = getCombinableDomainsGenome1().getAllDomainIds();
+ for( final String domain0 : d0 ) {
if ( d1.contains( domain0 ) ) {
shared.add( domain0 );
}
return _shared_domains;
}
+ public void setAllowDomainsToBeIgnored( final boolean allow_domains_to_be_ignored ) {
+ forceRecalculation();
+ _allow_domains_to_be_ignored = allow_domains_to_be_ignored;
+ }
+
+ void setDomainIdsToIgnore( final Set<String> domain_ids_to_ignore ) {
+ forceRecalculation();
+ _domain_ids_to_ignore = domain_ids_to_ignore;
+ }
+
+ private void forceRecalculation() {
+ _all_domains = null;
+ _shared_domains = null;
+ _domains_specific_to_0 = null;
+ _domains_specific_to_1 = null;
+ _all_binary_domain_combinations = null;
+ _shared_binary_domain_combinations = null;
+ _binary_domain_combinations_specific_to_0 = null;
+ _binary_domain_combinations_specific_to_1 = null;
+ }
+
+ private Set<BinaryDomainCombination> getBinaryDomainCombinationsSpecificToGenome( final boolean specific_to_genome_0 ) {
+ final Set<BinaryDomainCombination> specific = new HashSet<BinaryDomainCombination>();
+ final Set<BinaryDomainCombination> bc0 = getCombinableDomainsGenome0().toBinaryDomainCombinations();
+ final Set<BinaryDomainCombination> bc1 = getCombinableDomainsGenome1().toBinaryDomainCombinations();
+ if ( specific_to_genome_0 ) {
+ for( final BinaryDomainCombination binary_domain_combination0 : bc0 ) {
+ if ( !bc1.contains( binary_domain_combination0 ) ) {
+ specific.add( binary_domain_combination0 );
+ }
+ }
+ }
+ else {
+ for( final BinaryDomainCombination binary_domain_combination1 : bc1 ) {
+ if ( !bc0.contains( binary_domain_combination1 ) ) {
+ specific.add( binary_domain_combination1 );
+ }
+ }
+ }
+ if ( isAllowDomainsToBeIgnored() && !getDomainIdsToIgnore().isEmpty() ) {
+ return pruneBinaryCombinations( specific );
+ }
+ return specific;
+ }
+
+ private GenomeWideCombinableDomains getCombinableDomainsGenome0() {
+ return _combinable_domains_genome_0;
+ }
+
+ private GenomeWideCombinableDomains getCombinableDomainsGenome1() {
+ return _combinable_domains_genome_1;
+ }
+
+ private Set<String> getDomainIdsToIgnore() {
+ return _domain_ids_to_ignore;
+ }
+
+ private Set<String> getDomainsSpecificToGenome( final boolean specific_to_genome_0 ) {
+ final Set<String> specific = new HashSet<String>();
+ final Set<String> d0 = getCombinableDomainsGenome0().getAllDomainIds();
+ final Set<String> d1 = getCombinableDomainsGenome1().getAllDomainIds();
+ if ( specific_to_genome_0 ) {
+ for( final String domain0 : d0 ) {
+ if ( !d1.contains( domain0 ) ) {
+ specific.add( domain0 );
+ }
+ }
+ }
+ else {
+ for( final String domain1 : d1 ) {
+ if ( !d0.contains( domain1 ) ) {
+ specific.add( domain1 );
+ }
+ }
+ }
+ if ( isAllowDomainsToBeIgnored() && !getDomainIdsToIgnore().isEmpty() ) {
+ return pruneDomains( specific );
+ }
+ return specific;
+ }
+
private void init() {
deleteAllDomainIdsToIgnore();
setAllowDomainsToBeIgnored( false );
return pruned;
}
- private Set<DomainId> pruneDomains( final Set<DomainId> all ) {
- final Set<DomainId> pruned = new HashSet<DomainId>();
- for( final DomainId d : all ) {
+ private Set<String> pruneDomains( final Set<String> all ) {
+ final Set<String> pruned = new HashSet<String>();
+ for( final String d : all ) {
if ( !getDomainIdsToIgnore().contains( d ) ) {
pruned.add( d );
}
}
return pruned;
}
-
- public void setAllowDomainsToBeIgnored( final boolean allow_domains_to_be_ignored ) {
- forceRecalculation();
- _allow_domains_to_be_ignored = allow_domains_to_be_ignored;
- }
-
- void setDomainIdsToIgnore( final Set<DomainId> domain_ids_to_ignore ) {
- forceRecalculation();
- _domain_ids_to_ignore = domain_ids_to_ignore;
- }
}
\ No newline at end of file