X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fsurfacing%2FSurfacingUtil.java;h=60cf2f4d6bde00cb7f73887b54d589decd557d01;hb=91af2d9f4f8b3e1f0ac624aea14f2625934fbbbd;hp=a8e966d3093215fd1ffafdbe8d47729fce4540dc;hpb=eee996a6476a1e3d84c07f8f690dcde3ff4b2ef5;p=jalview.git diff --git a/forester/java/src/org/forester/surfacing/SurfacingUtil.java b/forester/java/src/org/forester/surfacing/SurfacingUtil.java index a8e966d..60cf2f4 100644 --- a/forester/java/src/org/forester/surfacing/SurfacingUtil.java +++ b/forester/java/src/org/forester/surfacing/SurfacingUtil.java @@ -34,12 +34,14 @@ import java.io.Writer; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.PriorityQueue; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; @@ -48,7 +50,7 @@ import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.forester.application.surfacing_old; +import org.forester.application.surfacing; import org.forester.evoinference.distance.NeighborJoining; import org.forester.evoinference.matrix.character.BasicCharacterStateMatrix; import org.forester.evoinference.matrix.character.CharacterStateMatrix; @@ -59,7 +61,6 @@ import org.forester.evoinference.matrix.distance.DistanceMatrix; import org.forester.go.GoId; import org.forester.go.GoNameSpace; import org.forester.go.GoTerm; -import org.forester.go.GoUtils; import org.forester.go.PfamToGoMapping; import org.forester.io.parsers.nexus.NexusConstants; import org.forester.io.writers.PhylogenyWriter; @@ -161,6 +162,90 @@ public final class SurfacingUtil { return stats; } + private static void calculateIndependentDomainCombinationGains( final Phylogeny local_phylogeny_l, + final String outfilename_for_counts, + final String outfilename_for_dc, + final String outfilename_for_dc_for_go_mapping, + final String outfilename_for_dc_for_go_mapping_unique ) { + try { + final BufferedWriter out_counts = new BufferedWriter( new FileWriter( outfilename_for_counts ) ); + final BufferedWriter out_dc = new BufferedWriter( new FileWriter( outfilename_for_dc ) ); + final BufferedWriter out_dc_for_go_mapping = new BufferedWriter( new FileWriter( outfilename_for_dc_for_go_mapping ) ); + final BufferedWriter out_dc_for_go_mapping_unique = new BufferedWriter( new FileWriter( outfilename_for_dc_for_go_mapping_unique ) ); + final SortedMap dc_gain_counts = new TreeMap(); + for( final PhylogenyNodeIterator it = local_phylogeny_l.iteratorPostorder(); it.hasNext(); ) { + final PhylogenyNode n = it.next(); + final Set gained_dc = n.getNodeData().getBinaryCharacters().getGainedCharacters(); + for( final String dc : gained_dc ) { + if ( dc_gain_counts.containsKey( dc ) ) { + dc_gain_counts.put( dc, dc_gain_counts.get( dc ) + 1 ); + } + else { + dc_gain_counts.put( dc, 1 ); + } + } + } + final SortedMap histogram = new TreeMap(); + final SortedMap domain_lists = new TreeMap(); + final SortedMap> domain_lists_go = new TreeMap>(); + final SortedMap> domain_lists_go_unique = new TreeMap>(); + final Set dcs = dc_gain_counts.keySet(); + for( final String dc : dcs ) { + final int count = dc_gain_counts.get( dc ); + if ( histogram.containsKey( count ) ) { + histogram.put( count, histogram.get( count ) + 1 ); + domain_lists.get( count ).append( ", " + dc ); + domain_lists_go.get( count ).addAll( splitDomainCombination( dc ) ); + domain_lists_go_unique.get( count ).addAll( splitDomainCombination( dc ) ); + } + else { + histogram.put( count, 1 ); + domain_lists.put( count, new StringBuilder( dc ) ); + final PriorityQueue q = new PriorityQueue(); + q.addAll( splitDomainCombination( dc ) ); + domain_lists_go.put( count, q ); + final SortedSet set = new TreeSet(); + set.addAll( splitDomainCombination( dc ) ); + domain_lists_go_unique.put( count, set ); + } + } + final Set histogram_keys = histogram.keySet(); + for( final Integer histogram_key : histogram_keys ) { + final int count = histogram.get( histogram_key ); + final StringBuilder dc = domain_lists.get( histogram_key ); + out_counts.write( histogram_key + "\t" + count + ForesterUtil.LINE_SEPARATOR ); + out_dc.write( histogram_key + "\t" + dc + ForesterUtil.LINE_SEPARATOR ); + out_dc_for_go_mapping.write( "#" + histogram_key + ForesterUtil.LINE_SEPARATOR ); + final Object[] sorted = domain_lists_go.get( histogram_key ).toArray(); + Arrays.sort( sorted ); + for( final Object domain : sorted ) { + out_dc_for_go_mapping.write( domain + ForesterUtil.LINE_SEPARATOR ); + } + out_dc_for_go_mapping_unique.write( "#" + histogram_key + ForesterUtil.LINE_SEPARATOR ); + for( final String domain : domain_lists_go_unique.get( histogram_key ) ) { + out_dc_for_go_mapping_unique.write( domain + ForesterUtil.LINE_SEPARATOR ); + } + } + out_counts.close(); + out_dc.close(); + out_dc_for_go_mapping.close(); + out_dc_for_go_mapping_unique.close(); + } + catch ( final IOException e ) { + ForesterUtil.printWarningMessage( surfacing.PRG_NAME, "Failure to write: " + e ); + } + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote independent domain combination gains fitch counts to [" + + outfilename_for_counts + "]" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote independent domain combination gains fitch lists to [" + + outfilename_for_dc + "]" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, + "Wrote independent domain combination gains fitch lists to (for GO mapping) [" + + outfilename_for_dc_for_go_mapping + "]" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, + "Wrote independent domain combination gains fitch lists to (for GO mapping, unique) [" + + outfilename_for_dc_for_go_mapping_unique + "]" ); + } + public static int calculateOverlap( final Domain domain, final List covered_positions ) { int overlap_count = 0; for( int i = domain.getFrom(); i <= domain.getTo(); ++i ) { @@ -174,7 +259,7 @@ public final class SurfacingUtil { public static void checkForOutputFileWriteability( final File outfile ) { final String error = ForesterUtil.isWritableFile( outfile ); if ( !ForesterUtil.isEmpty( error ) ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, error ); + ForesterUtil.fatalError( surfacing.PRG_NAME, error ); } } @@ -437,24 +522,23 @@ public final class SurfacingUtil { domain_parsimony.executeDolloParsimonyOnDomainPresence(); } SurfacingUtil.writeMatrixToFile( domain_parsimony.getGainLossMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_SUFFIX_DOLLO_DOMAINS, Format.FORESTER ); + + surfacing.PARSIMONY_OUTPUT_GL_SUFFIX_DOLLO_DOMAINS, Format.FORESTER ); SurfacingUtil.writeMatrixToFile( domain_parsimony.getGainLossCountsMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_DOLLO_DOMAINS, Format.FORESTER ); + + surfacing.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_DOLLO_DOMAINS, Format.FORESTER ); SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.GAIN, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_DOLLO_GAINS_D, + outfile_name + surfacing.PARSIMONY_OUTPUT_DOLLO_GAINS_D, + sep, + ForesterUtil.LINE_SEPARATOR, + null ); + SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), + CharacterStateMatrix.GainLossStates.LOSS, + outfile_name + surfacing.PARSIMONY_OUTPUT_DOLLO_LOSSES_D, sep, ForesterUtil.LINE_SEPARATOR, null ); - SurfacingUtil - .writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), - CharacterStateMatrix.GainLossStates.LOSS, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_DOLLO_LOSSES_D, - sep, - ForesterUtil.LINE_SEPARATOR, - null ); SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), null, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_DOLLO_PRESENT_D, sep, ForesterUtil.LINE_SEPARATOR, null ); + + surfacing.PARSIMONY_OUTPUT_DOLLO_PRESENT_D, sep, ForesterUtil.LINE_SEPARATOR, null ); //HTML: writeBinaryStatesMatrixToList( domain_id_to_go_ids_map, go_id_to_term_map, @@ -462,7 +546,7 @@ public final class SurfacingUtil { false, domain_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.GAIN, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_DOLLO_GAINS_HTML_D, + outfile_name + surfacing.PARSIMONY_OUTPUT_DOLLO_GAINS_HTML_D, sep, ForesterUtil.LINE_SEPARATOR, "Dollo Parsimony | Gains | Domains", @@ -477,7 +561,7 @@ public final class SurfacingUtil { false, domain_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.LOSS, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_DOLLO_LOSSES_HTML_D, + outfile_name + surfacing.PARSIMONY_OUTPUT_DOLLO_LOSSES_HTML_D, sep, ForesterUtil.LINE_SEPARATOR, "Dollo Parsimony | Losses | Domains", @@ -492,7 +576,7 @@ public final class SurfacingUtil { false, domain_parsimony.getGainLossMatrix(), null, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_DOLLO_PRESENT_HTML_D, + outfile_name + surfacing.PARSIMONY_OUTPUT_DOLLO_PRESENT_HTML_D, sep, ForesterUtil.LINE_SEPARATOR, "Dollo Parsimony | Present | Domains", @@ -508,14 +592,14 @@ public final class SurfacingUtil { "dollo_on_domains_" + outfile_name, parameters_str ); SurfacingUtil.writePhylogenyToFile( local_phylogeny_l, outfile_name - + surfacing_old.DOMAINS_PARSIMONY_TREE_OUTPUT_SUFFIX_DOLLO ); + + surfacing.DOMAINS_PARSIMONY_TREE_OUTPUT_SUFFIX_DOLLO ); try { writeAllDomainsChangedOnAllSubtrees( local_phylogeny_l, true, outfile_name, "_dollo_all_gains_d" ); writeAllDomainsChangedOnAllSubtrees( local_phylogeny_l, false, outfile_name, "_dollo_all_losses_d" ); } catch ( final IOException e ) { e.printStackTrace(); - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getLocalizedMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getLocalizedMessage() ); } if ( domain_parsimony.calculateNumberOfBinaryDomainCombination() > 0 ) { // FITCH DOMAIN COMBINATIONS @@ -530,25 +614,25 @@ public final class SurfacingUtil { domain_parsimony.executeFitchParsimonyOnBinaryDomainCombintion( false ); } SurfacingUtil.writeMatrixToFile( domain_parsimony.getGainLossMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_SUFFIX_FITCH_BINARY_COMBINATIONS, Format.FORESTER ); + + surfacing.PARSIMONY_OUTPUT_GL_SUFFIX_FITCH_BINARY_COMBINATIONS, Format.FORESTER ); SurfacingUtil.writeMatrixToFile( domain_parsimony.getGainLossCountsMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_FITCH_BINARY_COMBINATIONS, Format.FORESTER ); - SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), - CharacterStateMatrix.GainLossStates.GAIN, - outfile_name - + surfacing_old.PARSIMONY_OUTPUT_FITCH_GAINS_BC, - sep, - ForesterUtil.LINE_SEPARATOR, - null ); + + surfacing.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_FITCH_BINARY_COMBINATIONS, Format.FORESTER ); SurfacingUtil .writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), - CharacterStateMatrix.GainLossStates.LOSS, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_FITCH_LOSSES_BC, + CharacterStateMatrix.GainLossStates.GAIN, + outfile_name + surfacing.PARSIMONY_OUTPUT_FITCH_GAINS_BC, sep, ForesterUtil.LINE_SEPARATOR, null ); + SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), + CharacterStateMatrix.GainLossStates.LOSS, + outfile_name + + surfacing.PARSIMONY_OUTPUT_FITCH_LOSSES_BC, + sep, + ForesterUtil.LINE_SEPARATOR, + null ); SurfacingUtil.writeBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), null, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_FITCH_PRESENT_BC, sep, ForesterUtil.LINE_SEPARATOR, null ); + + surfacing.PARSIMONY_OUTPUT_FITCH_PRESENT_BC, sep, ForesterUtil.LINE_SEPARATOR, null ); if ( all_binary_domains_combination_gained_fitch != null ) { collectChangedDomainCombinationsFromBinaryStatesMatrixAsListToFile( domain_parsimony.getGainLossMatrix(), dc_type, @@ -567,7 +651,7 @@ public final class SurfacingUtil { .getGainLossMatrix(), null, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_FITCH_PRESENT_BC_OUTPUTFILE_SUFFIX_FOR_GRAPH_ANALYSIS, + + surfacing.PARSIMONY_OUTPUT_FITCH_PRESENT_BC_OUTPUTFILE_SUFFIX_FOR_GRAPH_ANALYSIS, sep, ForesterUtil.LINE_SEPARATOR, BinaryDomainCombination.OutputFormat.DOT ); @@ -579,7 +663,7 @@ public final class SurfacingUtil { true, domain_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.GAIN, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_FITCH_GAINS_HTML_BC, + outfile_name + surfacing.PARSIMONY_OUTPUT_FITCH_GAINS_HTML_BC, sep, ForesterUtil.LINE_SEPARATOR, "Fitch Parsimony | Gains | Domain Combinations", @@ -594,7 +678,7 @@ public final class SurfacingUtil { true, domain_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.LOSS, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_FITCH_LOSSES_HTML_BC, + outfile_name + surfacing.PARSIMONY_OUTPUT_FITCH_LOSSES_HTML_BC, sep, ForesterUtil.LINE_SEPARATOR, "Fitch Parsimony | Losses | Domain Combinations", @@ -609,7 +693,7 @@ public final class SurfacingUtil { true, domain_parsimony.getGainLossMatrix(), null, - outfile_name + surfacing_old.PARSIMONY_OUTPUT_FITCH_PRESENT_HTML_BC, + outfile_name + surfacing.PARSIMONY_OUTPUT_FITCH_PRESENT_HTML_BC, sep, ForesterUtil.LINE_SEPARATOR, "Fitch Parsimony | Present | Domain Combinations", @@ -622,13 +706,11 @@ public final class SurfacingUtil { go_id_to_term_map, outfile_name, all_pfams_encountered ); - writePfamsToFile( outfile_name + surfacing_old.ALL_PFAMS_GAINED_AS_DOMAINS_SUFFIX, - all_pfams_gained_as_domains ); - writePfamsToFile( outfile_name + surfacing_old.ALL_PFAMS_LOST_AS_DOMAINS_SUFFIX, all_pfams_lost_as_domains ); - writePfamsToFile( outfile_name + surfacing_old.ALL_PFAMS_GAINED_AS_DC_SUFFIX, + writePfamsToFile( outfile_name + surfacing.ALL_PFAMS_GAINED_AS_DOMAINS_SUFFIX, all_pfams_gained_as_domains ); + writePfamsToFile( outfile_name + surfacing.ALL_PFAMS_LOST_AS_DOMAINS_SUFFIX, all_pfams_lost_as_domains ); + writePfamsToFile( outfile_name + surfacing.ALL_PFAMS_GAINED_AS_DC_SUFFIX, all_pfams_gained_as_dom_combinations ); - writePfamsToFile( outfile_name + surfacing_old.ALL_PFAMS_LOST_AS_DC_SUFFIX, - all_pfams_lost_as_dom_combinations ); + writePfamsToFile( outfile_name + surfacing.ALL_PFAMS_LOST_AS_DC_SUFFIX, all_pfams_lost_as_dom_combinations ); preparePhylogeny( local_phylogeny_l, domain_parsimony, date_time, @@ -637,7 +719,12 @@ public final class SurfacingUtil { "fitch_on_binary_domain_combinations_" + outfile_name, parameters_str ); SurfacingUtil.writePhylogenyToFile( local_phylogeny_l, outfile_name - + surfacing_old.BINARY_DOMAIN_COMBINATIONS_PARSIMONY_TREE_OUTPUT_SUFFIX_FITCH ); + + surfacing.BINARY_DOMAIN_COMBINATIONS_PARSIMONY_TREE_OUTPUT_SUFFIX_FITCH ); + calculateIndependentDomainCombinationGains( local_phylogeny_l, outfile_name + + surfacing.INDEPENDENT_DC_GAINS_FITCH_PARS_COUNTS_OUTPUT_SUFFIX, outfile_name + + surfacing.INDEPENDENT_DC_GAINS_FITCH_PARS_DC_OUTPUT_SUFFIX, outfile_name + + surfacing.INDEPENDENT_DC_GAINS_FITCH_PARS_DC_FOR_GO_MAPPING_OUTPUT_SUFFIX, outfile_name + + surfacing.INDEPENDENT_DC_GAINS_FITCH_PARS_DC_FOR_GO_MAPPING_OUTPUT_UNIQUE_SUFFIX ); } } @@ -649,20 +736,20 @@ public final class SurfacingUtil { final String sep = ForesterUtil.LINE_SEPARATOR + "###################" + ForesterUtil.LINE_SEPARATOR; final String date_time = ForesterUtil.getCurrentDateTime(); System.out.println(); - writeToNexus( outfile_name + surfacing_old.NEXUS_SECONDARY_FEATURES, + writeToNexus( outfile_name + surfacing.NEXUS_SECONDARY_FEATURES, secondary_features_parsimony.createMatrixOfSecondaryFeaturePresenceOrAbsence( null ), phylogeny ); final Phylogeny local_phylogeny_copy = phylogeny.copy(); secondary_features_parsimony.executeDolloParsimonyOnSecondaryFeatures( mapping_results_map ); SurfacingUtil.writeMatrixToFile( secondary_features_parsimony.getGainLossMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_SUFFIX_DOLLO_SECONDARY_FEATURES, Format.FORESTER ); + + surfacing.PARSIMONY_OUTPUT_GL_SUFFIX_DOLLO_SECONDARY_FEATURES, Format.FORESTER ); SurfacingUtil.writeMatrixToFile( secondary_features_parsimony.getGainLossCountsMatrix(), outfile_name - + surfacing_old.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_DOLLO_SECONDARY_FEATURES, Format.FORESTER ); + + surfacing.PARSIMONY_OUTPUT_GL_COUNTS_SUFFIX_DOLLO_SECONDARY_FEATURES, Format.FORESTER ); SurfacingUtil .writeBinaryStatesMatrixAsListToFile( secondary_features_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.GAIN, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_DOLLO_GAINS_SECONDARY_FEATURES, + + surfacing.PARSIMONY_OUTPUT_DOLLO_GAINS_SECONDARY_FEATURES, sep, ForesterUtil.LINE_SEPARATOR, null ); @@ -670,7 +757,7 @@ public final class SurfacingUtil { .writeBinaryStatesMatrixAsListToFile( secondary_features_parsimony.getGainLossMatrix(), CharacterStateMatrix.GainLossStates.LOSS, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_DOLLO_LOSSES_SECONDARY_FEATURES, + + surfacing.PARSIMONY_OUTPUT_DOLLO_LOSSES_SECONDARY_FEATURES, sep, ForesterUtil.LINE_SEPARATOR, null ); @@ -678,7 +765,7 @@ public final class SurfacingUtil { .writeBinaryStatesMatrixAsListToFile( secondary_features_parsimony.getGainLossMatrix(), null, outfile_name - + surfacing_old.PARSIMONY_OUTPUT_DOLLO_PRESENT_SECONDARY_FEATURES, + + surfacing.PARSIMONY_OUTPUT_DOLLO_PRESENT_SECONDARY_FEATURES, sep, ForesterUtil.LINE_SEPARATOR, null ); @@ -689,7 +776,7 @@ public final class SurfacingUtil { "dollo_on_secondary_features_" + outfile_name, parameters_str ); SurfacingUtil.writePhylogenyToFile( local_phylogeny_copy, outfile_name - + surfacing_old.SECONDARY_FEATURES_PARSIMONY_TREE_OUTPUT_SUFFIX_DOLLO ); + + surfacing.SECONDARY_FEATURES_PARSIMONY_TREE_OUTPUT_SUFFIX_DOLLO ); } public static void extractProteinNames( final List proteins, @@ -855,6 +942,95 @@ public final class SurfacingUtil { p.setRooted( true ); } + /* + * species | protein id | n-terminal domain | c-terminal domain | n-terminal domain per domain E-value | c-terminal domain per domain E-value + * + * + */ + static public StringBuffer proteinToDomainCombinations( final Protein protein, + final String protein_id, + final String separator ) { + final StringBuffer sb = new StringBuffer(); + if ( protein.getSpecies() == null ) { + throw new IllegalArgumentException( "species must not be null" ); + } + if ( ForesterUtil.isEmpty( protein.getSpecies().getSpeciesId() ) ) { + throw new IllegalArgumentException( "species id must not be empty" ); + } + final List domains = protein.getProteinDomains(); + if ( domains.size() > 1 ) { + final Map counts = new HashMap(); + for( final Domain domain : domains ) { + final String id = domain.getDomainId().getId(); + if ( counts.containsKey( id ) ) { + counts.put( id, counts.get( id ) + 1 ); + } + else { + counts.put( id, 1 ); + } + } + final Set dcs = new HashSet(); + for( int i = 1; i < domains.size(); ++i ) { + for( int j = 0; j < i; ++j ) { + Domain domain_n = domains.get( i ); + Domain domain_c = domains.get( j ); + if ( domain_n.getFrom() > domain_c.getFrom() ) { + domain_n = domains.get( j ); + domain_c = domains.get( i ); + } + final String dc = domain_n.getDomainId().getId() + domain_c.getDomainId().getId(); + if ( !dcs.contains( dc ) ) { + dcs.add( dc ); + sb.append( protein.getSpecies() ); + sb.append( separator ); + sb.append( protein_id ); + sb.append( separator ); + sb.append( domain_n.getDomainId().getId() ); + sb.append( separator ); + sb.append( domain_c.getDomainId().getId() ); + sb.append( separator ); + sb.append( domain_n.getPerDomainEvalue() ); + sb.append( separator ); + sb.append( domain_c.getPerDomainEvalue() ); + sb.append( separator ); + sb.append( counts.get( domain_n.getDomainId().getId() ) ); + sb.append( separator ); + sb.append( counts.get( domain_c.getDomainId().getId() ) ); + sb.append( ForesterUtil.LINE_SEPARATOR ); + } + } + } + } + else if ( domains.size() == 1 ) { + sb.append( protein.getSpecies() ); + sb.append( separator ); + sb.append( protein_id ); + sb.append( separator ); + sb.append( domains.get( 0 ).getDomainId().getId() ); + sb.append( separator ); + sb.append( separator ); + sb.append( domains.get( 0 ).getPerDomainEvalue() ); + sb.append( separator ); + sb.append( separator ); + sb.append( 1 ); + sb.append( separator ); + sb.append( ForesterUtil.LINE_SEPARATOR ); + } + else { + sb.append( protein.getSpecies() ); + sb.append( separator ); + sb.append( protein_id ); + sb.append( separator ); + sb.append( separator ); + sb.append( separator ); + sb.append( separator ); + sb.append( separator ); + sb.append( separator ); + sb.append( ForesterUtil.LINE_SEPARATOR ); + } + return sb; + } + /** * * Example regarding engulfment: ------------0.1 ----------0.2 --0.3 => @@ -904,7 +1080,7 @@ public final class SurfacingUtil { return pruned_protein; } - static List sortDomainsWithAscendingConfidenceValues( final Protein protein ) { + public static List sortDomainsWithAscendingConfidenceValues( final Protein protein ) { final List domains = new ArrayList(); for( final Domain d : protein.getProteinDomains() ) { domains.add( d ); @@ -913,6 +1089,19 @@ public final class SurfacingUtil { return domains; } + private static List splitDomainCombination( final String dc ) { + final String[] s = dc.split( "=" ); + if ( s.length != 2 ) { + ForesterUtil.printErrorMessage( surfacing.PRG_NAME, "Stringyfied domain combination has illegal format: " + + dc ); + System.exit( -1 ); + } + final List l = new ArrayList( 2 ); + l.add( s[ 0 ] ); + l.add( s[ 1 ] ); + return l; + } + public static void writeAllDomainsChangedOnAllSubtrees( final Phylogeny p, final boolean get_gains, final String outdir, @@ -921,7 +1110,7 @@ public final class SurfacingUtil { if ( !get_gains ) { state = CharacterStateMatrix.GainLossStates.LOSS; } - final File base_dir = createBaseDirForPerNodeDomainFiles( surfacing_old.BASE_DIRECTORY_PER_SUBTREE_DOMAIN_GAIN_LOSS_FILES, + final File base_dir = createBaseDirForPerNodeDomainFiles( surfacing.BASE_DIRECTORY_PER_SUBTREE_DOMAIN_GAIN_LOSS_FILES, false, state, outdir ); @@ -946,11 +1135,10 @@ public final class SurfacingUtil { final Map go_id_to_term_map, final String outfile_name, final SortedSet all_pfams_encountered ) { - final File all_pfams_encountered_file = new File( outfile_name + surfacing_old.ALL_PFAMS_ENCOUNTERED_SUFFIX ); + final File all_pfams_encountered_file = new File( outfile_name + surfacing.ALL_PFAMS_ENCOUNTERED_SUFFIX ); final File all_pfams_encountered_with_go_annotation_file = new File( outfile_name - + surfacing_old.ALL_PFAMS_ENCOUNTERED_WITH_GO_ANNOTATION_SUFFIX ); - final File encountered_pfams_summary_file = new File( outfile_name - + surfacing_old.ENCOUNTERED_PFAMS_SUMMARY_SUFFIX ); + + surfacing.ALL_PFAMS_ENCOUNTERED_WITH_GO_ANNOTATION_SUFFIX ); + final File encountered_pfams_summary_file = new File( outfile_name + surfacing.ENCOUNTERED_PFAMS_SUMMARY_SUFFIX ); int biological_process_counter = 0; int cellular_component_counter = 0; int molecular_function_counter = 0; @@ -1017,41 +1205,41 @@ public final class SurfacingUtil { } all_pfams_encountered_writer.close(); all_pfams_encountered_with_go_annotation_writer.close(); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote all [" + all_pfams_encountered.size() + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote all [" + all_pfams_encountered.size() + "] encountered Pfams to: \"" + all_pfams_encountered_file + "\"" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote all [" + pfams_with_mappings_counter + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote all [" + pfams_with_mappings_counter + "] encountered Pfams with GO mappings to: \"" + all_pfams_encountered_with_go_annotation_file + "\"" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote summary (including all [" + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote summary (including all [" + pfams_without_mappings_counter + "] encountered Pfams without GO mappings) to: \"" + encountered_pfams_summary_file + "\"" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Sum of Pfams encountered : " + ForesterUtil.programMessage( surfacing.PRG_NAME, "Sum of Pfams encountered : " + all_pfams_encountered.size() ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Pfams without a mapping : " + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams without a mapping : " + pfams_without_mappings_counter + " [" + ( 100 * pfams_without_mappings_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Pfams without mapping to proc. or func. : " + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams without mapping to proc. or func. : " + pfams_without_mappings_to_bp_or_mf_counter + " [" + ( 100 * pfams_without_mappings_to_bp_or_mf_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams with a mapping : " + pfams_with_mappings_counter + " [" + ( 100 * pfams_with_mappings_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Pfams with a mapping to proc. or func. : " + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams with a mapping to proc. or func. : " + pfams_with_mappings_to_bp_or_mf_counter + " [" + ( 100 * pfams_with_mappings_to_bp_or_mf_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams with mapping to biological process: " + biological_process_counter + " [" + ( 100 * biological_process_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams with mapping to molecular function: " + molecular_function_counter + " [" + ( 100 * molecular_function_counter / all_pfams_encountered.size() ) + "%]" ); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, + ForesterUtil.programMessage( surfacing.PRG_NAME, "Pfams with mapping to cellular component: " + cellular_component_counter + " [" + ( 100 * cellular_component_counter / all_pfams_encountered.size() ) @@ -1085,7 +1273,7 @@ public final class SurfacingUtil { summary_writer.close(); } catch ( final IOException e ) { - ForesterUtil.printWarningMessage( surfacing_old.PRG_NAME, "Failure to write: " + e ); + ForesterUtil.printWarningMessage( surfacing.PRG_NAME, "Failure to write: " + e ); } } @@ -1095,7 +1283,7 @@ public final class SurfacingUtil { final int i, final GenomeWideCombinableDomainsSortOrder dc_sort_order ) { File dc_outfile_dot = new File( input_file_properties[ i ][ 0 ] - + surfacing_old.DOMAIN_COMBINITONS_OUTPUTFILE_SUFFIX_FOR_GRAPH_ANALYSIS ); + + surfacing.DOMAIN_COMBINITONS_OUTPUTFILE_SUFFIX_FOR_GRAPH_ANALYSIS ); if ( output_dir != null ) { dc_outfile_dot = new File( output_dir + ForesterUtil.FILE_SEPARATOR + dc_outfile_dot ); } @@ -1111,97 +1299,13 @@ public final class SurfacingUtil { out_dot.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote binary domain combination for \"" + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote binary domain combination for \"" + input_file_properties[ i ][ 0 ] + "\" (" + input_file_properties[ i ][ 1 ] + ", " + input_file_properties[ i ][ 2 ] + ") to: \"" + dc_outfile_dot + "\"" ); } - /* - * species | protein id | n-terminal domain | c-terminal domain | n-terminal domain per domain E-value | c-terminal domain per domain E-value - * - * - */ - static public StringBuffer proteinToDomainCombinations( final Protein protein, - final String protein_id, - final String separator ) { - final StringBuffer sb = new StringBuffer(); - if ( protein.getSpecies() == null ) { - throw new IllegalArgumentException( "species must not be null" ); - } - if ( ForesterUtil.isEmpty( protein.getSpecies().getSpeciesId() ) ) { - throw new IllegalArgumentException( "species id must not be empty" ); - } - final List domains = protein.getProteinDomains(); - if ( domains.size() > 1 ) { - final Map counts = new HashMap(); - for( final Domain domain : domains ) { - final String id = domain.getDomainId().getId(); - if ( counts.containsKey( id ) ) { - counts.put( id, counts.get( id ) + 1 ); - } - else { - counts.put( id, 1 ); - } - } - for( int i = 1; i < domains.size(); ++i ) { - for( int j = 0; j < i; ++j ) { - Domain domain_n = domains.get( i ); - Domain domain_c = domains.get( j ); - if ( domain_n.getFrom() > domain_c.getFrom() ) { - domain_n = domains.get( j ); - domain_c = domains.get( i ); - } - sb.append( protein.getSpecies() ); - sb.append( separator ); - sb.append( protein_id ); - sb.append( separator ); - sb.append( domain_n.getDomainId().getId() ); - sb.append( separator ); - sb.append( domain_c.getDomainId().getId() ); - sb.append( separator ); - sb.append( domain_n.getPerDomainEvalue() ); - sb.append( separator ); - sb.append( domain_c.getPerDomainEvalue() ); - sb.append( separator ); - sb.append( counts.get( domain_n.getDomainId().getId() ) ); - sb.append( separator ); - sb.append( counts.get( domain_c.getDomainId().getId() ) ); - sb.append( ForesterUtil.LINE_SEPARATOR ); - } - } - } - else if ( domains.size() == 1 ) { - sb.append( protein.getSpecies() ); - sb.append( separator ); - sb.append( protein_id ); - sb.append( separator ); - sb.append( domains.get( 0 ).getDomainId().getId() ); - sb.append( separator ); - sb.append( separator ); - sb.append( domains.get( 0 ).getPerDomainEvalue() ); - sb.append( separator ); - sb.append( separator ); - sb.append( 1 ); - sb.append( separator ); - sb.append( ForesterUtil.LINE_SEPARATOR ); - } - else { - sb.append( protein.getSpecies() ); - sb.append( separator ); - sb.append( protein_id ); - sb.append( separator ); - sb.append( separator ); - sb.append( separator ); - sb.append( separator ); - sb.append( separator ); - sb.append( separator ); - sb.append( ForesterUtil.LINE_SEPARATOR ); - } - return sb; - } - public static void writeBinaryStatesMatrixAsListToFile( final CharacterStateMatrix matrix, final CharacterStateMatrix.GainLossStates state, final String filename, @@ -1240,9 +1344,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote characters list: \"" + filename + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote characters list: \"" + filename + "\"" ); } public static void writeBinaryStatesMatrixAsListToFileForBinaryCombinationsForGraphAnalysis( final CharacterStateMatrix matrix, @@ -1274,7 +1378,7 @@ public final class SurfacingUtil { bdc = BasicBinaryDomainCombination.createInstance( matrix.getCharacter( c ) ); } catch ( final Exception e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getLocalizedMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getLocalizedMessage() ); } out.write( bdc.toGraphDescribingLanguage( bc_output_format, null, null ).toString() ); out.write( character_separator ); @@ -1285,9 +1389,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote characters list: \"" + filename + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote characters list: \"" + filename + "\"" ); } public static void writeBinaryStatesMatrixToList( final Map> domain_id_to_go_ids_map, @@ -1322,7 +1426,7 @@ public final class SurfacingUtil { } try { final Writer out = new BufferedWriter( new FileWriter( outfile ) ); - final File per_node_go_mapped_domain_gain_loss_files_base_dir = createBaseDirForPerNodeDomainFiles( surfacing_old.BASE_DIRECTORY_PER_NODE_DOMAIN_GAIN_LOSS_FILES, + final File per_node_go_mapped_domain_gain_loss_files_base_dir = createBaseDirForPerNodeDomainFiles( surfacing.BASE_DIRECTORY_PER_NODE_DOMAIN_GAIN_LOSS_FILES, domain_combinations, state, filename ); @@ -1465,10 +1569,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote characters detailed HTML list: \"" + filename - + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote characters detailed HTML list: \"" + filename + "\"" ); } public static void writeBinaryStatesMatrixToListORIGIG( final Map> domain_id_to_go_ids_map, @@ -1503,7 +1606,7 @@ public final class SurfacingUtil { } try { final Writer out = new BufferedWriter( new FileWriter( outfile ) ); - final File per_node_go_mapped_domain_gain_loss_files_base_dir = createBaseDirForPerNodeDomainFiles( surfacing_old.BASE_DIRECTORY_PER_NODE_DOMAIN_GAIN_LOSS_FILES, + final File per_node_go_mapped_domain_gain_loss_files_base_dir = createBaseDirForPerNodeDomainFiles( surfacing.BASE_DIRECTORY_PER_NODE_DOMAIN_GAIN_LOSS_FILES, domain_combinations, state, filename ); @@ -1641,10 +1744,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote characters detailed HTML list: \"" + filename - + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote characters detailed HTML list: \"" + filename + "\"" ); } public static void writeDomainCombinationsCountsFile( final String[][] input_file_properties, @@ -1654,7 +1756,7 @@ public final class SurfacingUtil { final int i, final GenomeWideCombinableDomains.GenomeWideCombinableDomainsSortOrder dc_sort_order ) { File dc_outfile = new File( input_file_properties[ i ][ 0 ] - + surfacing_old.DOMAIN_COMBINITON_COUNTS_OUTPUTFILE_SUFFIX ); + + surfacing.DOMAIN_COMBINITON_COUNTS_OUTPUTFILE_SUFFIX ); if ( output_dir != null ) { dc_outfile = new File( output_dir + ForesterUtil.FILE_SEPARATOR + dc_outfile ); } @@ -1665,7 +1767,7 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } final DescriptiveStatistics stats = gwcd.getPerGenomeDomainPromiscuityStatistics(); try { @@ -1689,15 +1791,15 @@ public final class SurfacingUtil { per_genome_domain_promiscuity_statistics_writer.write( ForesterUtil.LINE_SEPARATOR ); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } if ( input_file_properties[ i ].length == 3 ) { - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote domain combination counts for \"" + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote domain combination counts for \"" + input_file_properties[ i ][ 0 ] + "\" (" + input_file_properties[ i ][ 1 ] + ", " + input_file_properties[ i ][ 2 ] + ") to: \"" + dc_outfile + "\"" ); } else { - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote domain combination counts for \"" + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote domain combination counts for \"" + input_file_properties[ i ][ 0 ] + "\" (" + input_file_properties[ i ][ 1 ] + ") to: \"" + dc_outfile + "\"" ); } @@ -1808,111 +1910,6 @@ public final class SurfacingUtil { } } - private static void writeDomainDataORIG( final Map> domain_id_to_go_ids_map, - final Map go_id_to_term_map, - final GoNameSpace go_namespace_limit, - final Writer out, - final String domain_0, - final String domain_1, - final String prefix_for_html, - final String character_separator_for_non_html_output, - final Map>[] domain_id_to_secondary_features_maps, - final Set all_go_ids ) throws IOException { - boolean any_go_annotation_present = false; - boolean first_has_no_go = false; - int domain_count = 2; // To distinguish between domains and binary domain combinations. - if ( ForesterUtil.isEmpty( domain_1 ) ) { - domain_count = 1; - } - // The following has a difficult to understand logic. - for( int d = 0; d < domain_count; ++d ) { - List go_ids = null; - boolean go_annotation_present = false; - if ( d == 0 ) { - final DomainId domain_id = new DomainId( domain_0 ); - if ( domain_id_to_go_ids_map.containsKey( domain_id ) ) { - go_annotation_present = true; - any_go_annotation_present = true; - go_ids = domain_id_to_go_ids_map.get( domain_id ); - } - else { - first_has_no_go = true; - } - } - else { - final DomainId domain_id = new DomainId( domain_1 ); - if ( domain_id_to_go_ids_map.containsKey( domain_id ) ) { - go_annotation_present = true; - any_go_annotation_present = true; - go_ids = domain_id_to_go_ids_map.get( domain_id ); - } - } - if ( go_annotation_present ) { - boolean first = ( ( d == 0 ) || ( ( d == 1 ) && first_has_no_go ) ); - for( final GoId go_id : go_ids ) { - out.write( "" ); - if ( first ) { - first = false; - writeDomainIdsToHtml( out, - domain_0, - domain_1, - prefix_for_html, - domain_id_to_secondary_features_maps ); - } - else { - out.write( "" ); - } - if ( !go_id_to_term_map.containsKey( go_id ) ) { - throw new IllegalArgumentException( "GO-id [" + go_id + "] not found in GO-id to GO-term map" ); - } - final GoTerm go_term = go_id_to_term_map.get( go_id ); - if ( ( go_namespace_limit == null ) || go_namespace_limit.equals( go_term.getGoNameSpace() ) ) { - final String top = GoUtils.getPenultimateGoTerm( go_term, go_id_to_term_map ).getName(); - final String go_id_str = go_id.getId(); - out.write( "" ); - out.write( "" + go_id_str + "" ); - out.write( "" ); - out.write( go_term.getName() ); - if ( domain_count == 2 ) { - out.write( " (" + d + ")" ); - } - out.write( "" ); - out.write( top ); - out.write( "" ); - out.write( "[" ); - out.write( go_term.getGoNameSpace().toShortString() ); - out.write( "]" ); - out.write( "" ); - if ( all_go_ids != null ) { - all_go_ids.add( go_id ); - } - } - else { - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - } - out.write( "" ); - out.write( SurfacingConstants.NL ); - } - } - } // for( int d = 0; d < domain_count; ++d ) - if ( !any_go_annotation_present ) { - out.write( "" ); - writeDomainIdsToHtml( out, domain_0, domain_1, prefix_for_html, domain_id_to_secondary_features_maps ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( "" ); - out.write( SurfacingConstants.NL ); - } - } - private static void writeDomainIdsToHtml( final Writer out, final String domain_0, final String domain_1, @@ -1925,91 +1922,6 @@ public final class SurfacingUtil { out.write( " " ); } out.write( "" + domain_0 + "" ); - //if ( ForesterUtil.isEmpty( domain_1 ) ) { - // out.write( " [gs]" ); - //} - // if ( !ForesterUtil.isEmpty( domain_1 ) ) { - // out.write( "=" ); - // out.write( "" + domain_1 + "" ); - //} - // else if ( ( domain_id_to_secondary_features_maps != null ) - // && ( domain_id_to_secondary_features_maps.length > 0 ) ) { - // out.write( " [" ); - // boolean first = true; - // for( final Map> domain_id_to_secondary_features_map : domain_id_to_secondary_features_maps ) { - // final Set sec_features = domain_id_to_secondary_features_map.get( new DomainId( domain_0 ) ); - // if ( ( sec_features != null ) && ( sec_features.size() > 0 ) ) { - // for( final String sec_feature : sec_features ) { - // if ( first ) { - // first = false; - // } - // else { - // out.write( ", " ); - // } - // if ( SurfacingConstants.SECONDARY_FEATURES_ARE_SCOP - // && ( SurfacingConstants.SECONDARY_FEATURES_SCOP_LINK != null ) ) { - // out.write( "" + sec_feature + "" ); - // } - // else { - // out.write( sec_feature ); - // } - // } - // } - // } - // out.write( "]" ); - // } - out.write( "" ); - } - - private static void writeDomainIdsToHtmlORIG( final Writer out, - final String domain_0, - final String domain_1, - final String prefix_for_detailed_html, - final Map>[] domain_id_to_secondary_features_maps ) - throws IOException { - out.write( "" ); - if ( !ForesterUtil.isEmpty( prefix_for_detailed_html ) ) { - out.write( prefix_for_detailed_html ); - out.write( " " ); - } - out.write( "" + domain_0 + "" ); - if ( ForesterUtil.isEmpty( domain_1 ) ) { - out.write( " [gs]" ); - } - if ( !ForesterUtil.isEmpty( domain_1 ) ) { - out.write( "=" ); - out.write( "" + domain_1 + "" ); - } - else if ( ( domain_id_to_secondary_features_maps != null ) - && ( domain_id_to_secondary_features_maps.length > 0 ) ) { - out.write( " [" ); - boolean first = true; - for( final Map> domain_id_to_secondary_features_map : domain_id_to_secondary_features_maps ) { - final Set sec_features = domain_id_to_secondary_features_map.get( new DomainId( domain_0 ) ); - if ( ( sec_features != null ) && ( sec_features.size() > 0 ) ) { - for( final String sec_feature : sec_features ) { - if ( first ) { - first = false; - } - else { - out.write( ", " ); - } - if ( SurfacingConstants.SECONDARY_FEATURES_ARE_SCOP - && ( SurfacingConstants.SECONDARY_FEATURES_SCOP_LINK != null ) ) { - out.write( "" + sec_feature + "" ); - } - else { - out.write( sec_feature ); - } - } - } - } - out.write( "]" ); - } out.write( "" ); } @@ -2268,9 +2180,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote matrix: \"" + filename + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote matrix: \"" + filename + "\"" ); } public static void writeMatrixToFile( final File matrix_outfile, final List matrices ) { @@ -2285,9 +2197,9 @@ public final class SurfacingUtil { out.close(); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote distance matrices to \"" + matrix_outfile + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote distance matrices to \"" + matrix_outfile + "\"" ); } private static void writePfamsToFile( final String outfile_name, final SortedSet pfams ) { @@ -2298,11 +2210,11 @@ public final class SurfacingUtil { writer.write( ForesterUtil.LINE_SEPARATOR ); } writer.close(); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote " + pfams.size() + " pfams to [" + outfile_name + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote " + pfams.size() + " pfams to [" + outfile_name + "]" ); } catch ( final IOException e ) { - ForesterUtil.printWarningMessage( surfacing_old.PRG_NAME, "Failure to write: " + e ); + ForesterUtil.printWarningMessage( surfacing.PRG_NAME, "Failure to write: " + e ); } } @@ -2312,10 +2224,10 @@ public final class SurfacingUtil { writer.toPhyloXML( new File( filename ), phylogeny, 1 ); } catch ( final IOException e ) { - ForesterUtil.printWarningMessage( surfacing_old.PRG_NAME, "failed to write phylogeny to \"" + filename - + "\": " + e ); + ForesterUtil.printWarningMessage( surfacing.PRG_NAME, "failed to write phylogeny to \"" + filename + "\": " + + e ); } - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote phylogeny to \"" + filename + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote phylogeny to \"" + filename + "\"" ); } public static void writeTaxonomyLinks( final Writer writer, final String species ) throws IOException { @@ -2337,52 +2249,6 @@ public final class SurfacingUtil { } } - public static void writeTaxonomyLinksORIG( final Writer writer, final String species ) throws IOException { - if ( ( species.length() > 1 ) && ( species.indexOf( '_' ) < 1 ) ) { - final Matcher matcher = PATTERN_SP_STYLE_TAXONOMY.matcher( species ); - writer.write( " [" ); - if ( matcher.matches() ) { - writer.write( "uniprot" ); - } - else { - writer.write( "eol" ); - writer.write( "|" ); - writer.write( "tol" ); - writer.write( "|" ); - writer.write( "wikipedia" ); - writer.write( "|" ); - writer.write( "gs" ); - } - writer.write( "]" ); - } - } - - private static void writeToNexus( final String outfile_name, final CharacterStateMatrix matrix ) { - if ( !( matrix instanceof BasicCharacterStateMatrix ) ) { - throw new IllegalArgumentException( "can only write matrices of type [" + BasicCharacterStateMatrix.class - + "] to nexus" ); - } - final BasicCharacterStateMatrix my_matrix = ( org.forester.evoinference.matrix.character.BasicCharacterStateMatrix ) matrix; - try { - final BufferedWriter w = new BufferedWriter( new FileWriter( outfile_name ) ); - w.write( NexusConstants.NEXUS ); - w.write( ForesterUtil.LINE_SEPARATOR ); - my_matrix.writeNexusTaxaBlock( w ); - my_matrix.writeNexusBinaryChractersBlock( w ); - w.flush(); - w.close(); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote Nexus file: \"" + outfile_name + "\"" ); - } - catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); - } - } - private static void writeToNexus( final String outfile_name, final CharacterStateMatrix matrix, final Phylogeny phylogeny ) { @@ -2402,27 +2268,20 @@ public final class SurfacingUtil { PhylogenyWriter.writeNexusTreesBlock( w, phylogenies ); w.flush(); w.close(); - ForesterUtil.programMessage( surfacing_old.PRG_NAME, "Wrote Nexus file: \"" + outfile_name + "\"" ); + ForesterUtil.programMessage( surfacing.PRG_NAME, "Wrote Nexus file: \"" + outfile_name + "\"" ); } catch ( final IOException e ) { - ForesterUtil.fatalError( surfacing_old.PRG_NAME, e.getMessage() ); + ForesterUtil.fatalError( surfacing.PRG_NAME, e.getMessage() ); } } - private static void writeToNexus( final String outfile_name, final DomainParsimonyCalculator domain_parsimony ) { - writeToNexus( outfile_name + surfacing_old.NEXUS_EXTERNAL_DOMAINS, - domain_parsimony.createMatrixOfDomainPresenceOrAbsence() ); - writeToNexus( outfile_name + surfacing_old.NEXUS_EXTERNAL_DOMAIN_COMBINATIONS, - domain_parsimony.createMatrixOfBinaryDomainCombinationPresenceOrAbsence() ); - } - private static void writeToNexus( final String outfile_name, final DomainParsimonyCalculator domain_parsimony, final Phylogeny phylogeny ) { - writeToNexus( outfile_name + surfacing_old.NEXUS_EXTERNAL_DOMAINS, + writeToNexus( outfile_name + surfacing.NEXUS_EXTERNAL_DOMAINS, domain_parsimony.createMatrixOfDomainPresenceOrAbsence(), phylogeny ); - writeToNexus( outfile_name + surfacing_old.NEXUS_EXTERNAL_DOMAIN_COMBINATIONS, + writeToNexus( outfile_name + surfacing.NEXUS_EXTERNAL_DOMAIN_COMBINATIONS, domain_parsimony.createMatrixOfBinaryDomainCombinationPresenceOrAbsence(), phylogeny ); }