Converting Between Data FormatsΒΆ

Any data in a schema that can be read by DendroPy, can be saved to files in any schema that can be written by DendroPy. Converting data between formats is simply a matter of calling readers and writers of the appropriate type.

Converting from FASTA schema to NEXUS:

>>> import dendropy
>>> cytb = dendropy.DnaCharacterMatrix.get(path="pythonidae_cytb.fasta", schema="fasta")
>>> cytb.write(path="pythonidae_cytb.nexus", schema="nexus")

Converting a collection of trees from NEXUS schema to Newick:

>>> import dendropy
>>> post_trees = dendropy.TreeList()
>>> post_trees.read(
...         file=open("pythonidae.nex.run1.t", "r")
...         schema="nexus",
...         tree_offset=200)
>>> post_trees.read(
...         path="pythonidae.nex.run2.t",
...         schema="nexus",
...         tree_offset=200)
>>> post_trees.write(
...     path="pythonidae.mcmc.newick",
...     schema="newick")

Converting a single tree from Newick schema to NEXUS:

>>> import dendropy
>>> mle = dendropy.Tree.get(path="pythonidae.mle.newick", schema="newick")
>>> mle.write(path="pythonidae.mle.nex", schema="nexus")

Collecting data from multiple sources and writing to a NEXUS-formatted file:

>>> import dendropy
>>> ds = dendropy.DataSet()
>>> tns = ds.new_taxon_namespace()
>>> ds.attach_taxon_namespace(tns)
>>> ds.read(
...     path="pythonidae_cytb.fasta",
...     schema="fasta",
...     data_type="dna")
>>> ds.read(
...     path="pythonidae_aa.nex",
...     schema="nexus")
>>> ds.read(
...     path="pythonidae_morph.nex",
...     schema="nexus")
>>> ds.read(
...     path="pythonidae_trees.tre",
...     schema="newick")
>>> ds.write(
...     path="pythonidae_combined.nex",
...     schema="nexus")

Note how we create a new TaxonNamespace instance using the new_taxon_namespace method, and then “bind” or attach it to the DataSet instance using the attach_taxon_namespace method. This ensures that all new data parsed by the DataSet instance will reference the same TaxonNamespace instance, i.e., all taxon labels will be mapped to the same set of Taxon objects. Alternatively, we could also have explicitly passed in the TaxonNamespace instance to use for each reading operation:

>>> import dendropy
>>> ds = dendropy.DataSet()
>>> tns = ds.new_taxon_namespace()
>>> ds.read(
...     path="pythonidae_cytb.fasta",
...     schema="fasta",
...     data_type="dna",
...     taxon_namespace=tns)
>>> ds.read(
...     path="pythonidae_aa.nex",
...     schema="nexus",
...     taxon_namespace=tns)
>>> ds.read(
...     path="pythonidae_morph.nex",
...     schema="nexus",
...     taxon_namespace=tns)
>>> ds.read(
...     path="pythonidae_trees.tre",
...     schema="newick",
...     taxon_namespace=tns)
>>> ds.write(
...     path="pythonidae_combined.nex",
...     schema="nexus",
...     taxon_namespace=tns)

Previous topic

Reading and Writing Phylogenetic Data

Next topic

Taxon Namespaces and Taxon Management

Documentation

Obtaining

DiscussionGoogle Groups

Join the " DendroPy Users" group to follow and participate in discussion, troubleshooting, help, information, suggestions, etc. on the usage and development of the DendroPy phylogenetic computing library.

Enter your e-mail address in the box above and click the "subscribe" button to subscribe to the "dendropy-users" group, or click here to visit this group page directly.

AnnouncementsGoogle Groups

Join the " DendroPy Announcements" group to receive announcements of new releases, updates, changes and other news of interest to DendroPy users and developers.

Enter your e-mail address in the box above and click the "subscribe" button to subscribe to the " dendropy-announce" group, or click here to visit this group page directly.

DevelopmentGitHub

  • Issues - Report bugs or request features
  •  Watch - Follow development activity
  •   Fork - Contribute and collaborate
  •   Star - Throw some glitter, add some glamour