@Override final public int hashCode() { final NodeData data = getNodeData(); if ( ( getName().length() < 1 ) && !data.isHasSequence() && !data.isHasTaxonomy() ) { return super.hashCode(); } int result = getName().hashCode(); if ( data.isHasSequence() ) { result ^= data.getSequence().hashCode(); } if ( data.isHasTaxonomy() ) { result ^= data.getTaxonomy().hashCode(); } return result; }
@Override public StringBuffer toNHX() { final StringBuffer sb = new StringBuffer(); if ( isHasTaxonomy() ) { sb.append( getTaxonomy().toNHX() ); } if ( isHasSequence() ) { sb.append( getSequence().toNHX() ); } if ( isHasEvent() ) { sb.append( getEvent().toNHX() ); } return sb; }
public static void ensurePresenceOfSequence( final PhylogenyNode node ) { if ( !node.getNodeData().isHasSequence() ) { node.getNodeData().setSequence( new Sequence() ); } }
final private boolean isCanBlast( final PhylogenyNode node ) { if ( !node.getNodeData().isHasSequence() && ForesterUtil.isEmpty( node.getName() ) ) { return false; } return Blast.isContainsQueryForBlast( node ); }
public List<PhylogenyNode> getNodesViaSequenceName( final String seq_name ) { if ( isEmpty() ) { return null; } final List<PhylogenyNode> nodes = new ArrayList<PhylogenyNode>(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getName().equals( seq_name ) ) { nodes.add( n ); } } return nodes; }
public List<PhylogenyNode> getNodesViaGeneName( final String seq_name ) { if ( isEmpty() ) { return null; } final List<PhylogenyNode> nodes = new ArrayList<PhylogenyNode>(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getGeneName().equals( seq_name ) ) { nodes.add( n ); } } return nodes; }
final private List<Accession> getPdbAccs( final PhylogenyNode node ) { final List<Accession> pdb_ids = new ArrayList<Accession>(); if ( node.getNodeData().isHasSequence() ) { final Sequence seq = node.getNodeData().getSequence(); if ( !ForesterUtil.isEmpty( seq.getCrossReferences() ) ) { final SortedSet<Accession> cross_refs = seq.getCrossReferences(); for( final Accession acc : cross_refs ) { if ( acc.getSource().equalsIgnoreCase( "pdb" ) ) { pdb_ids.add( acc ); } } } } return pdb_ids; }
public List<PhylogenyNode> getNodesViaSequenceSymbol( final String seq_name ) { if ( isEmpty() ) { return null; } final List<PhylogenyNode> nodes = new ArrayList<PhylogenyNode>(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasSequence() && n.getNodeData().getSequence().getSymbol().equals( seq_name ) ) { nodes.add( n ); } } return nodes; }
public boolean isEmpty() { return ( ForesterUtil.isEmpty( _node_name ) && !isHasSequence() && !isHasTaxonomy() && !isHasBinaryCharacters() && !isHasDate() && !isHasDistribution() && !isHasEvent() && !isHasProperties() && !isHasReference() && ( ( _vector == null ) || _vector .isEmpty() ) ); }
final Color getSequenceBasedColor( final PhylogenyNode node ) { if ( node.getNodeData().isHasSequence() ) { return calculateSequenceBasedColor( node.getNodeData().getSequence() ); } // return non-colorized color return getTreeColorSet().getSequenceColor(); }
final static public boolean isHasAtLeastOneNodeWithSequenceAnnotation( final Phylogeny phy ) { final PhylogenyNodeIterator it = phy.iteratorPostorder(); while ( it.hasNext() ) { final PhylogenyNode n = it.next(); if ( n.getNodeData().isHasSequence() && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getAnnotations() ) ) { return true; } } return false; }
private final static String obtainLabel( final Set<String> labels_set, final PhylogenyNode n ) throws RIOException { String label; if ( n.getNodeData().isHasSequence() && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getName() ) ) { label = n.getNodeData().getSequence().getName(); } else if ( n.getNodeData().isHasSequence() && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) { label = n.getNodeData().getSequence().getSymbol(); } else if ( n.getNodeData().isHasSequence() && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getGeneName() ) ) { label = n.getNodeData().getSequence().getGeneName(); } else if ( !ForesterUtil.isEmpty( n.getName() ) ) { label = n.getName(); } else { throw new RIOException( "node " + n + " has no appropriate label" ); } if ( labels_set.contains( label ) ) { throw new RIOException( "label " + label + " is not unique" ); } return label; }
private final static void addSeqs2Tree( final Msa msa, final Phylogeny phy ) { for( int i = 0; i < msa.getNumberOfSequences(); ++i ) { final MolecularSequence seq = msa.getSequence( i ); final String seq_name = seq.getIdentifier(); final PhylogenyNode n = phy.getNode( seq_name ); if ( !n.getNodeData().isHasSequence() ) { n.getNodeData().addSequence( new org.forester.phylogeny.data.Sequence() ); } else { throw new IllegalArgumentException( "this should not have happened" ); } n.getNodeData().getSequence().setMolecularSequence( seq.getMolecularSequenceAsString() ); n.getNodeData().getSequence().setMolecularSequenceAligned( true ); n.getNodeData().getSequence().setName( seq_name ); } }
static void processTreeBaseTrees( final Phylogeny phy ) { phy.setDescription( TREE_BASE_DESC ); final PhylogenyNodeIterator it = phy.iteratorExternalForward(); while ( it.hasNext() ) { final PhylogenyNode n = it.next(); if ( !ForesterUtil.isEmpty( n.getName() ) ) { final Accession acc = SequenceAccessionTools.parseAccessorFromString( n.getName() ); if ( acc != null ) { if ( !n.getNodeData().isHasSequence() ) { n.getNodeData().addSequence( new Sequence() ); } final Sequence s = n.getNodeData().getSequence(); if ( s.getAccession() == null ) { s.setAccession( acc ); } } } } }
private void preProcessTreesUponReading( final Phylogeny[] phys ) { for( final Phylogeny phy : phys ) { if ( ( phy != null ) && !phy.isEmpty() ) { for( final PhylogenyNodeIterator it = phy.iteratorPreorder(); it.hasNext(); ) { final PhylogenyNode n = it.next(); if ( n.isExternal() ) { if ( n.getNodeData().isHasSequence() ) { final Sequence s = n.getNodeData().getSequence(); if ( ForesterUtil.isEmpty( s.getGeneName() ) || s.getGeneName().startsWith( "LOC" ) ) { if ( ( s.getAccession() != null ) && !ForesterUtil.isEmpty( s.getAccession().getValue() ) ) { s.setGeneName( s.getAccession().getValue() ); } else if ( !ForesterUtil.isEmpty( n.getName() ) ) { s.setGeneName( n.getName() ); } } } } } } } }
public final static String obtainGiNumberFromDataFields( final PhylogenyNode n ) { String a = null; if ( n.getNodeData().isHasSequence() ) { final Sequence seq = n.getNodeData().getSequence(); if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getName() ) ) { a = parseGInumberFromString( seq.getName() ); } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getGeneName() ) ) { a = parseGInumberFromString( seq.getGeneName() ); } if ( ForesterUtil.isEmpty( a ) && ( n.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil.isEmpty( seq.getAccession().getValue() ) ) { a = parseGInumberFromString( seq.getAccession().getValue() ); } } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( n.getName() ) ) { a = parseGInumberFromString( n.getName() ); } return a; }
public final static String obtainGenbankAccessorFromDataFields( final PhylogenyNode n ) { String a = null; if ( n.getNodeData().isHasSequence() ) { final Sequence seq = n.getNodeData().getSequence(); if ( !ForesterUtil.isEmpty( seq.getSymbol() ) ) { a = parseGenbankAccessorFromString( seq.getSymbol() ); } if ( !ForesterUtil.isEmpty( seq.getGeneName() ) ) { a = parseGenbankAccessorFromString( seq.getGeneName() ); } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getName() ) ) { a = parseGenbankAccessorFromString( seq.getName() ); } if ( ForesterUtil.isEmpty( a ) && ( n.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil.isEmpty( seq.getAccession().getValue() ) ) { a = parseGenbankAccessorFromString( seq.getAccession().getValue() ); } } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( n.getName() ) ) { a = parseGenbankAccessorFromString( n.getName() ); } return a; }
public final static String obtainRefSeqAccessorFromDataFields( final PhylogenyNode n ) { String a = null; if ( n.getNodeData().isHasSequence() ) { final Sequence seq = n.getNodeData().getSequence(); if ( !ForesterUtil.isEmpty( seq.getSymbol() ) ) { a = parseRefSeqAccessorFromString( seq.getSymbol() ); } if ( !ForesterUtil.isEmpty( seq.getGeneName() ) ) { a = parseRefSeqAccessorFromString( seq.getGeneName() ); } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getName() ) ) { a = parseRefSeqAccessorFromString( seq.getName() ); } if ( ForesterUtil.isEmpty( a ) && ( n.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil.isEmpty( seq.getAccession().getValue() ) ) { a = parseRefSeqAccessorFromString( seq.getAccession().getValue() ); } } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( n.getName() ) ) { a = parseRefSeqAccessorFromString( n.getName() ); } return a; }
public final static String obtainUniProtAccessorFromDataFields( final PhylogenyNode n ) { String a = null; if ( n.getNodeData().isHasSequence() ) { final Sequence seq = n.getNodeData().getSequence(); if ( !ForesterUtil.isEmpty( seq.getSymbol() ) ) { a = SequenceAccessionTools.parseUniProtAccessorFromString( seq.getSymbol() ); } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getName() ) ) { a = SequenceAccessionTools.parseUniProtAccessorFromString( seq.getName() ); } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( seq.getGeneName() ) ) { a = SequenceAccessionTools.parseUniProtAccessorFromString( seq.getGeneName() ); } if ( ForesterUtil.isEmpty( a ) && ( n.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil.isEmpty( seq.getAccession().getValue() ) ) { a = SequenceAccessionTools.parseUniProtAccessorFromString( seq.getAccession().getValue() ); } } if ( ForesterUtil.isEmpty( a ) && !ForesterUtil.isEmpty( n.getName() ) ) { a = SequenceAccessionTools.parseUniProtAccessorFromString( n.getName() ); } return a; }
private void createNodes( final DefaultMutableTreeNode top, final PhylogenyNode phylogeny_node ) { if ( !phylogeny_node.getNodeData().isHasTaxonomy() ) { phylogeny_node.getNodeData().addTaxonomy( new Taxonomy() ); } if ( !phylogeny_node.getNodeData().isHasSequence() ) { phylogeny_node.getNodeData().addSequence( new Sequence() ); } if ( !phylogeny_node.getNodeData().isHasDistribution() ) { phylogeny_node.getNodeData().addDistribution( new Distribution( "" ) ); } if ( !phylogeny_node.getNodeData().isHasReference() ) { phylogeny_node.getNodeData().addReference( new Reference( "" ) ); } addBasics( top, phylogeny_node, NodePanel.BASIC ); addTaxonomy( top, phylogeny_node.getNodeData().getTaxonomy(), NodePanel.TAXONOMY ); addSequence( top, phylogeny_node.getNodeData().getSequence(), NodePanel.SEQUENCE ); if ( !phylogeny_node.isExternal() ) { addEvents( top, phylogeny_node.getNodeData().getEvent(), NodePanel.EVENTS ); } addDate( top, phylogeny_node.getNodeData().getDate(), NodePanel.DATE ); addDistribution( top, phylogeny_node.getNodeData().getDistribution(), NodePanel.DISTRIBUTION ); addReference( top, phylogeny_node.getNodeData().getReference(), NodePanel.LIT_REFERENCE ); // addProperties( top, phylogeny_node.getNodeData().getProperties(), "Properties" ); }