Comments (4)
from dendropy.
Great!! Thank you. I'll /try/ and tweak this script this morning and post what I get working. Thank you!!
from dendropy.
Thanks again for the script. It differs a little from sumlabels in that it threw an error if it didn't find the bipartition (whereas sumlabels would just not write anything, not even a delimiter). To combat that I have added 2 try/except clauses and command line argument functionality with arguments. One day I'll make it prettier, but for now this works:
python sumlabel_DP4.py [tree to map to] [tree] [tree]
it will write 'nf' on the branch if it didn't find the bipartition.
#! /usr/bin/env python
import sys
import dendropy
# usage: python sumlabel_DP4.py [tree to map to] [tree] [tree]
# our common namespace
tns = dendropy.TaxonNamespace()
# load the trees
t1 = dendropy.Tree.get(
path=sys.argv[3],
schema="newick",
taxon_namespace=tns,
rooting="force-unrooted")
t2 = dendropy.Tree.get(
path=sys.argv[2],
schema="newick",
taxon_namespace=tns,
rooting="force-unrooted")
t3 = dendropy.Tree.get(
path=sys.argv[1],
schema="newick",
taxon_namespace=tns,rooting="force-unrooted")
# calculate the split hashes so that we can correlate splits
# across trees
t1.encode_bipartitions()
t2.encode_bipartitions()
t3.encode_bipartitions()
# for each internal node in tree 3
for nd in t3.preorder_internal_node_iter():
# check/skip root node
if nd is t3.seed_node:
continue
# set up label parts
label_parts = []
# look up edge corresponding to this node
# on tree1 if not found, write 'nf'
try:
edge = t1.bipartition_edge_map[nd.edge.bipartition]
label_parts.append(edge.head_node.label)
except KeyError:
label_parts.append('nf')
# (if support on tree1 is represented by branch length)
# label_parts.append(str(edge.length))
# look up edge corresponding to this node
# on tree2 if not found, write 'nf'
try:
edge = t2.bipartition_edge_map[nd.edge.bipartition]
label_parts.append(edge.head_node.label)
# support on tree2 is represented by internal node label
except KeyError:
label_parts.append('nf')
# if support on tree3 is given by metadata
# label_parts.append(nd.annotations["prob"].value)
label_parts.append(nd.label)
# print(label_parts)
# assign label
nd.label = "/".join(label_parts)
# output the tree
print(t3.as_string("newick"))
from dendropy.
The original application has been ported in DendroPy 4 here: 86e77ec .
May tweak the UI before formal release, but it is workable as it stands now.
from dendropy.
Related Issues (20)
- `Tree.mrca` has side effect of changing rooting state HOT 6
- `shuffle_taxa` raises `DeprecationWarning`
- Keep supporting Python2.7? HOT 3
- Some examples in `/docs/source/examples` are broken
- Add developer documentation
- Track PyPi URL change for project homepage
- Chore: Fix `ResourceWarning`s from tests
- Chore: fix `distutils` deprecation warning HOT 1
- `paup_estimate_tree_nj` example experiences intermittent failure HOT 1
- Provide public interface for `_convert_node_to_root_polytomy` HOT 1
- quote_underscores argument unrecognized HOT 1
- Documentation Deployment
- Create smoke tests
- Multithreaded option fails with no error message - leaf labels issue? HOT 2
- Error runnig picrust due to cannot import name '_convert_node_to_root_polytomy' HOT 2
- Website dendropy.org is down HOT 5
- treesim.birth_death_tree() raises division by zero error when used to extend an existing tree HOT 4
- Final Steps for Version 5 Release
- JOSS Paper?
- Support values written as quoted node labels since >4.6.1 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dendropy.