"rio" work
[jalview.git] / forester / java / src / org / forester / surfacing / BasicGenomeWideCombinableDomains.java
index ca8bff0..ef98751 100644 (file)
@@ -17,7 +17,12 @@ import java.util.TreeMap;
 import java.util.TreeSet;
 
 import org.forester.go.GoId;
-import org.forester.surfacing.BinaryDomainCombination.DomainCombinationType;
+import org.forester.protein.BinaryDomainCombination;
+import org.forester.protein.BinaryDomainCombination.DomainCombinationType;
+import org.forester.protein.Domain;
+import org.forester.protein.DomainId;
+import org.forester.protein.Protein;
+import org.forester.species.Species;
 import org.forester.util.BasicDescriptiveStatistics;
 import org.forester.util.DescriptiveStatistics;
 import org.forester.util.ForesterUtil;
@@ -27,10 +32,10 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
     private final static NumberFormat                    FORMATTER                                  = new DecimalFormat( "0.0E0" );
     private static final Comparator<CombinableDomains>   DESCENDING_KEY_DOMAIN_COUNT_ORDER          = new Comparator<CombinableDomains>() {
 
+                                                                                                        @Override
                                                                                                         public int compare( final CombinableDomains d1,
                                                                                                                             final CombinableDomains d2 ) {
-                                                                                                            if ( d1
-                                                                                                                    .getKeyDomainCount() < d2
+                                                                                                            if ( d1.getKeyDomainCount() < d2
                                                                                                                     .getKeyDomainCount() ) {
                                                                                                                 return 1;
                                                                                                             }
@@ -51,10 +56,10 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
                                                                                                     };
     private static final Comparator<CombinableDomains>   DESCENDING_KEY_DOMAIN_PROTEINS_COUNT_ORDER = new Comparator<CombinableDomains>() {
 
+                                                                                                        @Override
                                                                                                         public int compare( final CombinableDomains d1,
                                                                                                                             final CombinableDomains d2 ) {
-                                                                                                            if ( d1
-                                                                                                                    .getKeyDomainProteinsCount() < d2
+                                                                                                            if ( d1.getKeyDomainProteinsCount() < d2
                                                                                                                     .getKeyDomainProteinsCount() ) {
                                                                                                                 return 1;
                                                                                                             }
@@ -75,10 +80,10 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
                                                                                                     };
     private static final Comparator<CombinableDomains>   DESCENDING_COMBINATIONS_COUNT_ORDER        = new Comparator<CombinableDomains>() {
 
+                                                                                                        @Override
                                                                                                         public int compare( final CombinableDomains d1,
                                                                                                                             final CombinableDomains d2 ) {
-                                                                                                            if ( d1
-                                                                                                                    .getNumberOfCombinableDomains() < d2
+                                                                                                            if ( d1.getNumberOfCombinableDomains() < d2
                                                                                                                     .getNumberOfCombinableDomains() ) {
                                                                                                                 return 1;
                                                                                                             }
@@ -111,14 +116,17 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
         _combinable_domains_map.put( key, cdc );
     }
 
+    @Override
     public boolean contains( final DomainId key_id ) {
         return _combinable_domains_map.containsKey( key_id );
     }
 
+    @Override
     public CombinableDomains get( final DomainId key_id ) {
         return _combinable_domains_map.get( key_id );
     }
 
+    @Override
     public SortedMap<DomainId, CombinableDomains> getAllCombinableDomainsIds() {
         return _combinable_domains_map;
     }
@@ -164,10 +172,12 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
         return stats;
     }
 
+    @Override
     public int getSize() {
         return _combinable_domains_map.size();
     }
 
+    @Override
     public Species getSpecies() {
         return _species;
     }
@@ -191,6 +201,7 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
 
     // Produces something like: 
     // 2-oxoacid_dh      5       5       2       4.8E-67   Biotin_lipoyl [4], E3_binding [3]
+    @Override
     public StringBuilder toStringBuilder( final GenomeWideCombinableDomainsSortOrder sort_order ) {
         final StringBuilder sb = new StringBuilder();
         final List<CombinableDomains> combinable_domains = new ArrayList<CombinableDomains>();
@@ -213,14 +224,12 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
             sb.append( ForesterUtil.pad( new StringBuffer( "" + cb.getKeyDomainCount() ), 8, ' ', false ) );
             sb.append( ForesterUtil.pad( new StringBuffer( "" + cb.getKeyDomainProteinsCount() ), 8, ' ', false ) );
             sb.append( ForesterUtil.pad( new StringBuffer( "" + cb.getNumberOfCombinableDomains() ), 8, ' ', false ) );
-            sb
-                    .append( ForesterUtil
-                            .pad( new StringBuffer( ""
-                                          + FORMATTER
-                                                  .format( cb.getKeyDomainConfidenceDescriptiveStatistics().median() ) ),
-                                  10,
-                                  ' ',
-                                  false ) );
+            sb.append( ForesterUtil.pad( new StringBuffer( ""
+                                                 + FORMATTER.format( cb.getKeyDomainConfidenceDescriptiveStatistics()
+                                                         .median() ) ),
+                                         10,
+                                         ' ',
+                                         false ) );
             sb.append( cb.getCombiningDomainIdsAsStringBuilder() );
             sb.append( ForesterUtil.getLineSeparator() );
         }
@@ -255,21 +264,25 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
                                ignore_combination_with_same_domain,
                                species,
                                null,
-                               DomainCombinationType.BASIC );
+                               DomainCombinationType.BASIC,
+                               null,
+                               null );
     }
 
     public static BasicGenomeWideCombinableDomains createInstance( final List<Protein> protein_list,
                                                                    final boolean ignore_combination_with_same_domain,
                                                                    final Species species,
                                                                    final DomainCombinationType dc_type ) {
-        return createInstance( protein_list, ignore_combination_with_same_domain, species, null, dc_type );
+        return createInstance( protein_list, ignore_combination_with_same_domain, species, null, dc_type, null, null );
     }
 
     public static BasicGenomeWideCombinableDomains createInstance( final List<Protein> protein_list,
                                                                    final boolean ignore_combination_with_same_domain,
                                                                    final Species species,
                                                                    final Map<DomainId, List<GoId>> domain_id_to_go_ids_map,
-                                                                   final DomainCombinationType dc_type ) {
+                                                                   final DomainCombinationType dc_type,
+                                                                   final Map<String, DescriptiveStatistics> protein_length_stats_by_dc,
+                                                                   final Map<String, DescriptiveStatistics> domain_number_stats_by_dc ) {
         final BasicGenomeWideCombinableDomains instance = new BasicGenomeWideCombinableDomains( species, dc_type );
         final Map<DomainId, Integer> domain_counts = new HashMap<DomainId, Integer>();
         final Map<DomainId, Integer> domain_protein_counts = new HashMap<DomainId, Integer>();
@@ -352,6 +365,27 @@ public class BasicGenomeWideCombinableDomains implements GenomeWideCombinableDom
                     if ( ( dc_type == DomainCombinationType.DIRECTED_ADJACTANT ) && ( closest != null ) ) {
                         domain_combination.addCombinableDomain( closest.getDomainId() );
                     }
+                    if ( protein_length_stats_by_dc != null ) {
+                        final List<BinaryDomainCombination> dcs = domain_combination.toBinaryDomainCombinations();
+                        for( final BinaryDomainCombination dc : dcs ) {
+                            final String dc_str = dc.toString();
+                            if ( !protein_length_stats_by_dc.containsKey( dc_str ) ) {
+                                protein_length_stats_by_dc.put( dc_str, new BasicDescriptiveStatistics() );
+                            }
+                            protein_length_stats_by_dc.get( dc_str ).addValue( protein.getLength() );
+                        }
+                    }
+                    if ( domain_number_stats_by_dc != null ) {
+                        final List<BinaryDomainCombination> dcs = domain_combination.toBinaryDomainCombinations();
+                        for( final BinaryDomainCombination dc : dcs ) {
+                            final String dc_str = dc.toString();
+                            if ( !domain_number_stats_by_dc.containsKey( dc_str ) ) {
+                                domain_number_stats_by_dc.put( dc_str, new BasicDescriptiveStatistics() );
+                            }
+                            domain_number_stats_by_dc.get( dc_str ).addValue( protein.getNumberOfProteinDomains() );
+                        }
+                    }
+                    //
                 }
             }
         }