+ private final static SortedMap<String, List<Protein>> makeProteinListsPerQuasiSpecies( final Phylogeny tre,
+ final int level,
+ final SortedMap<Species, List<Protein>> protein_lists_per_species ) {
+ final SortedMap<String, List<Protein>> protein_lists_per_quasi_species = new TreeMap<String, List<Protein>>();
+ System.out.println( "---------------------------------" );
+ System.out.println( "level=" + level );
+ for( final PhylogenyNodeIterator iter = tre.iteratorPostorder(); iter.hasNext(); ) {
+ final PhylogenyNode node = iter.next();
+ final int node_level = PhylogenyMethods.calculateLevel( node );
+ if ( node_level == level ) {
+ System.out.println( "level=" + level );
+ final List<PhylogenyNode> external_descs = node.getAllExternalDescendants();
+ final List<Protein> protein_list_per_quasi_species = new ArrayList<Protein>();
+ for( final PhylogenyNode external_desc : external_descs ) {
+ final String code = external_desc.getNodeData().getTaxonomy().getTaxonomyCode();
+ final List<Protein> proteins_per_species = protein_lists_per_species
+ .get( new BasicSpecies( code ) );
+ //System.out.println( code );
+ for( Protein protein : proteins_per_species ) {
+ protein_list_per_quasi_species.add( protein );
+ }
+ }
+ final String species_name = node.getNodeData().isHasTaxonomy()
+ ? node.getNodeData().getTaxonomy().getScientificName() : node.getName();
+ System.out.println( "species_name=" + species_name );
+ protein_lists_per_quasi_species.put( species_name, protein_list_per_quasi_species );
+ System.out.println( ">>>>" + protein_list_per_quasi_species.size() );
+ }
+ }
+
+ return protein_lists_per_quasi_species;
+ }
+