X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fphylogeny%2FPhylogeny.java;h=86aae064d89cc3201d8275d7fb98706112d88c5f;hb=d605114bdf420c6cb680b02bb10ea25f09db769c;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..86aae06 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 { @@ -324,7 +327,7 @@ public class Phylogeny { */ public List getExternalNodes() { if ( _external_nodes_set == null ) { - _external_nodes_set = new ArrayList<>(); + _external_nodes_set = new ArrayList(); for( final PhylogenyNodeIterator it = iteratorPostorder(); it.hasNext(); ) { final PhylogenyNode n = it.next(); if ( n.isExternal() ) { @@ -438,7 +441,7 @@ public class Phylogeny { if ( isEmpty() ) { return null; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getName().equals( name ) ) { @@ -448,11 +451,28 @@ 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; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getName().equals( seq_name ) ) { @@ -466,7 +486,7 @@ public class Phylogeny { if ( isEmpty() ) { return null; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getSymbol().equals( seq_name ) ) { @@ -480,7 +500,7 @@ public class Phylogeny { if ( isEmpty() ) { return null; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getGeneName().equals( seq_name ) ) { @@ -494,7 +514,7 @@ public class Phylogeny { if ( isEmpty() ) { return null; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasTaxonomy() @@ -519,7 +539,7 @@ public class Phylogeny { if ( isEmpty() ) { return null; } - final List nodes = new ArrayList<>(); + final List nodes = new ArrayList(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( PhylogenyMethods.getSpecies( n ).equals( specname ) ) { @@ -618,8 +638,8 @@ public class Phylogeny { public List getParalogousNodes( final PhylogenyNode n, final String[] taxonomyCodeRange ) { PhylogenyNode node = n; PhylogenyNode prev = null; - final List v = new ArrayList<>(); - final Map> map = new HashMap<>(); + final List v = new ArrayList(); + final Map> map = new HashMap>(); getTaxonomyMap( getRoot(), map ); if ( !node.isExternal() || isEmpty() ) { return null; @@ -650,7 +670,7 @@ public class Phylogeny { public Collection getRelevantSequenceRelationTypes() { if ( _relevant_sequence_relation_types == null ) { - _relevant_sequence_relation_types = new Vector<>(); + _relevant_sequence_relation_types = new Vector(); } return _relevant_sequence_relation_types; } @@ -1188,7 +1208,7 @@ public class Phylogeny { * @return List node with the same taxonomy identifier */ private List getNodeByTaxonomyID( final String taxonomyID, final List nodes ) { - final List retour = new ArrayList<>(); + final List retour = new ArrayList(); for( final PhylogenyNode node : nodes ) { if ( taxonomyID.equals( PhylogenyMethods.getTaxonomyIdentifier( node ) ) ) { retour.add( node ); @@ -1206,7 +1226,7 @@ public class Phylogeny { * @return species contains in all leaf under the param node */ private List getSubNodeTaxonomy( final PhylogenyNode node ) { - final List taxonomyList = new ArrayList<>(); + final List taxonomyList = new ArrayList(); final List childs = node.getAllExternalDescendants(); String speciesId = null; for( final PhylogenyNode phylogenyNode : childs ) {