++ed by:
4 non-PAUSE users
Author image Rutger Vos
and 1 contributors


Bio::Phylo::Unparsers::Nhx - Serializer used by Bio::Phylo::IO, no serviceable parts inside


This module turns a tree object into a New Hampshire eXtended-formatted (parenthetical) tree description. It is called by the Bio::Phylo::IO facade, don't call it directly. You can pass the following additional arguments to the unparse call:

        # by default, names for tips are derived from $node->get_name, if 
        # 'internal' is specified, uses $node->get_internal_name, if 'taxon'
        # uses $node->get_taxon->get_name, if 'taxon_internal' uses 
        # $node->get_taxon->get_internal_name, if $key, uses $node->get_generic($key)
        -tipnames => one of (internal|taxon|taxon_internal|$key)
        # for things like a translate table in nexus, or to specify truncated
        # 10-character names, you can pass a translate mapping as a hashref.
        # to generate the translated names, the strings obtained following the
        # -tipnames rules are used.
        -translate => { Homo_sapiens => 1, Pan_paniscus => 2 }  
        # if set, appends labels to internal nodes (names obtained from the same
        # source as specified by '-tipnames')
        -nodelabels => 1
        # specifies a branch length sprintf number formatting template, default is %f
        -blformat => '%e'

In addition, you can influence what key/value pairs are inserted into the NHX "hot comments" in two ways. The first way (and the way that is least likely to cause unintentional mishaps) is by attaching a Meta annotation to a node. This annotation has to be associated with the NHX namespace. Here is an example:

        use Bio::Phylo::Util::CONSTANT ':classnames';
        # ...other things happening...
        $node->set_namespaces( 'nhx' => _NS_NHX_ );
        $node->set_meta_object( 'nhx:foo' => 'bar' );
        # which results in: [&&NHX:foo=bar]

The other way is by using the set/get generic methods, e.g.:

        $node->set_generic( 'foo' => 'bar');

However, this is riskier because everything you attach to an object using these methods will be inserted into the NHX, including references (which won't serialize well).


There is a mailing list at https://groups.google.com/forum/#!forum/bio-phylo for any user or developer questions and discussions.


The NHX unparser is called by the Bio::Phylo::IO object. Look there to learn how to unparse newick strings.


Also see the manual: Bio::Phylo::Manual and http://rutgervos.blogspot.com.


If you use Bio::Phylo in published research, please cite it:

Rutger A Vos, Jason Caravas, Klaas Hartmann, Mark A Jensen and Chase Miller, 2011. Bio::Phylo - phyloinformatic analysis using Perl. BMC Bioinformatics 12:63. http://dx.doi.org/10.1186/1471-2105-12-63