in progress
[jalview.git] / forester / java / src / org / forester / surfacing / CombinableDomains.java
1 // $Id:
2 //
3 // FORESTER -- software libraries and applications
4 // for evolutionary biology research and applications.
5 //
6 // Copyright (C) 2008-2009 Christian M. Zmasek
7 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
8 // All rights reserved
9 //
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.
14 //
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.
19 //
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
23 //
24 // Contact: phylosoft @ gmail . com
25 // WWW: https://sites.google.com/site/cmzmasek/home/software/forester
26
27 package org.forester.surfacing;
28
29 import java.util.List;
30 import java.util.Set;
31 import java.util.SortedMap;
32
33 import org.forester.protein.BinaryDomainCombination;
34 import org.forester.species.Species;
35
36 public interface CombinableDomains {
37
38     /**
39      * To add a new combinable domain.
40      * 
41      * @param protein_domain
42      */
43     public void addCombinableDomain( final String protein_domain );
44
45     /**
46      * Returns the combinable domain identifiers sorted in alphabetical manner: -
47      * keys are the combinable domain identifiers - values are the counts of
48      * proteins exhibiting a particular combination
49      * 
50      * @return combining domain identifiers sorted in alphabetical manner
51      */
52     public SortedMap<String, Integer> getCombinableDomainsIds();
53
54     public StringBuilder getCombiningDomainIdsAsStringBuilder();
55
56     /**
57      * Returns the domain whose combinable domains are in stored in this
58      * combinable domains.
59      * 
60      * @return the domain identifier
61      */
62     public String getKeyDomain();
63
64     /**
65      * Returns how many times the key domain is present in a given species
66      * genome.
67      * 
68      * @return key domain count in species
69      */
70     public int getKeyDomainCount();
71
72     public Set<String> getKeyDomainProteins();
73
74     /**
75      * Returns how many proteins with the key domain are present in a given
76      * species genome.
77      * 
78      * @return key domain proteins count in species
79      */
80     public int getKeyDomainProteinsCount();
81
82     public int getNumberOfCombinableDomains();
83
84     public int getNumberOfProteinsExhibitingCombination( final String protein_domain );
85
86     /**
87      * Returns the species of this combinable domains.
88      * 
89      * @return the species
90      */
91     public Species getSpecies();
92
93     public boolean isCombinable( final String protein_domain );
94
95     public List<BinaryDomainCombination> toBinaryDomainCombinations();
96
97     void addKeyDomainProtein( String protein );
98
99     /**
100      * 
101      * This must return all domains in this set of combinable domains (i.e.
102      * the key domain and all domains which can combine with the key domain).
103      * 
104      *  @return all domains
105      */
106     List<String> getAllDomains();
107
108     List<String> getCombinableDomains();
109
110     /**
111      * Sets how many times the key domain is present in a given species genome.
112      * 
113      * @param key_domain_count
114      *            key domain count in species
115      */
116     void setKeyDomainCount( final int key_domain_count );
117 }