X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fphylogeny%2FPhylogeny.java;h=0416f41472ecfe90c55a4097c1ec6e55fc242304;hb=7ae646b73c00d1458582858319ec62f05e40c71a;hp=379a9338d23cf21eb5e833a6004319f29befaf0e;hpb=975cabe8898d1fa574380f5800c2d69d8f632b0d;p=jalview.git diff --git a/forester/java/src/org/forester/phylogeny/Phylogeny.java b/forester/java/src/org/forester/phylogeny/Phylogeny.java index 379a933..0416f41 100644 --- a/forester/java/src/org/forester/phylogeny/Phylogeny.java +++ b/forester/java/src/org/forester/phylogeny/Phylogeny.java @@ -37,6 +37,8 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.forester.io.parsers.nhx.NHXParser; import org.forester.io.writers.PhylogenyWriter; @@ -56,6 +58,7 @@ import org.forester.phylogeny.iterators.PhylogenyNodeIterator; import org.forester.phylogeny.iterators.PostorderTreeIterator; import org.forester.phylogeny.iterators.PreorderTreeIterator; import org.forester.util.FailedConditionCheckException; +import org.forester.util.ForesterUtil; public class Phylogeny { @@ -448,6 +451,23 @@ public class Phylogeny { return nodes; } + public List getNodes( final Pattern p ) { + if ( isEmpty() ) { + return null; + } + final List nodes = new ArrayList<>(); + for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { + final PhylogenyNode n = iter.next(); + if ( n.getName() != null ) { + final Matcher m = p.matcher( n.getName() ); + if ( m.find() ) { + nodes.add( n ); + } + } + } + return nodes; + } + public List getNodesViaSequenceName( final String seq_name ) { if ( isEmpty() ) { return null;