X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fphylogeny%2FPhylogenyMethods.java;h=2b7fd29cec240e418fe463a7d441d0fb6d73d25f;hb=83a8b55648437acc36f0e82ec065db173304f97c;hp=f53e41a2d16ca7c430f5789f1411ced1815944de;hpb=eee996a6476a1e3d84c07f8f690dcde3ff4b2ef5;p=jalview.git diff --git a/forester/java/src/org/forester/phylogeny/PhylogenyMethods.java b/forester/java/src/org/forester/phylogeny/PhylogenyMethods.java index f53e41a..2b7fd29 100644 --- a/forester/java/src/org/forester/phylogeny/PhylogenyMethods.java +++ b/forester/java/src/org/forester/phylogeny/PhylogenyMethods.java @@ -41,6 +41,8 @@ import org.forester.phylogeny.data.Confidence; import org.forester.phylogeny.data.DomainArchitecture; import org.forester.phylogeny.data.Taxonomy; import org.forester.phylogeny.iterators.PhylogenyNodeIterator; +import org.forester.util.BasicDescriptiveStatistics; +import org.forester.util.DescriptiveStatistics; import org.forester.util.FailedConditionCheckException; import org.forester.util.ForesterUtil; @@ -271,15 +273,28 @@ public class PhylogenyMethods { return max; } - public static int calculateMaximumNumberOfDescendantsPerNode( final Phylogeny phy ) { - int max = 0; + public static DescriptiveStatistics calculatNumberOfDescendantsPerNodeStatistics( final Phylogeny phy ) { + final DescriptiveStatistics stats = new BasicDescriptiveStatistics(); for( final PhylogenyNodeIterator iter = phy.iteratorPreorder(); iter.hasNext(); ) { - final PhylogenyNode node = iter.next(); - if ( node.getNumberOfDescendants() > max ) { - max = node.getNumberOfDescendants(); + final PhylogenyNode n = iter.next(); + if ( !n.isExternal() ) { + stats.addValue( n.getNumberOfDescendants() ); } } - return max; + return stats; + } + + public static DescriptiveStatistics calculatConfidenceStatistics( final Phylogeny phy ) { + final DescriptiveStatistics stats = new BasicDescriptiveStatistics(); + for( final PhylogenyNodeIterator iter = phy.iteratorPreorder(); iter.hasNext(); ) { + final PhylogenyNode n = iter.next(); + if ( !n.isExternal() ) { + if ( n.getBranchData().isHasConfidences() ) { + stats.addValue( n.getBranchData().getConfidence( 0 ).getValue() ); + } + } + } + return stats; } /** @@ -970,15 +985,16 @@ public class PhylogenyMethods { } } } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && match( node.getNodeData().getSequence().getName(), query, case_sensitive, partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && match( node.getNodeData().getSequence().getSymbol(), query, case_sensitive, partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match + && node.getNodeData().isHasSequence() && ( node.getNodeData().getSequence().getAccession() != null ) && match( node.getNodeData().getSequence().getAccession().getValue(), query, @@ -986,7 +1002,7 @@ public class PhylogenyMethods { partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) { final DomainArchitecture da = node.getNodeData().getSequence().getDomainArchitecture(); I: for( int i = 0; i < da.getNumberOfDomains(); ++i ) { @@ -996,6 +1012,22 @@ public class PhylogenyMethods { } } } + if ( !match && ( node.getNodeData().getBinaryCharacters() != null ) ) { + Iterator it = node.getNodeData().getBinaryCharacters().getPresentCharacters().iterator(); + I: while ( it.hasNext() ) { + if ( match( it.next(), query, case_sensitive, partial ) ) { + match = true; + break I; + } + } + it = node.getNodeData().getBinaryCharacters().getGainedCharacters().iterator(); + I: while ( it.hasNext() ) { + if ( match( it.next(), query, case_sensitive, partial ) ) { + match = true; + break I; + } + } + } if ( match ) { nodes.add( node ); } @@ -1052,15 +1084,16 @@ public class PhylogenyMethods { } } } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && match( node.getNodeData().getSequence().getName(), query, case_sensitive, partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && match( node.getNodeData().getSequence().getSymbol(), query, case_sensitive, partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match + && node.getNodeData().isHasSequence() && ( node.getNodeData().getSequence().getAccession() != null ) && match( node.getNodeData().getSequence().getAccession().getValue(), query, @@ -1068,7 +1101,7 @@ public class PhylogenyMethods { partial ) ) { match = true; } - else if ( node.getNodeData().isHasSequence() + if ( !match && node.getNodeData().isHasSequence() && ( node.getNodeData().getSequence().getDomainArchitecture() != null ) ) { final DomainArchitecture da = node.getNodeData().getSequence().getDomainArchitecture(); I: for( int i = 0; i < da.getNumberOfDomains(); ++i ) { @@ -1078,6 +1111,38 @@ public class PhylogenyMethods { } } } + if ( !match && ( node.getNodeData().getBinaryCharacters() != null ) ) { + Iterator it = node.getNodeData().getBinaryCharacters().getPresentCharacters().iterator(); + I: while ( it.hasNext() ) { + if ( match( it.next(), query, case_sensitive, partial ) ) { + match = true; + break I; + } + } + it = node.getNodeData().getBinaryCharacters().getGainedCharacters().iterator(); + I: while ( it.hasNext() ) { + if ( match( it.next(), query, case_sensitive, partial ) ) { + match = true; + break I; + } + } + // final String[] bcp_ary = node.getNodeData().getBinaryCharacters() + // .getPresentCharactersAsStringArray(); + // I: for( final String bc : bcp_ary ) { + // if ( match( bc, query, case_sensitive, partial ) ) { + // match = true; + // break I; + // } + // } + // final String[] bcg_ary = node.getNodeData().getBinaryCharacters() + // .getGainedCharactersAsStringArray(); + // I: for( final String bc : bcg_ary ) { + // if ( match( bc, query, case_sensitive, partial ) ) { + // match = true; + // break I; + // } + // } + } if ( !match ) { all_matched = false; break;