<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Miao Sun | Miao Sun | 孙苗</title><link>https://cactusolo.github.io/author/miao-sun/</link><atom:link href="https://cactusolo.github.io/author/miao-sun/index.xml" rel="self" type="application/rss+xml"/><description>Miao Sun</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><copyright>© {2018-2026} Miao Sun</copyright><lastBuildDate>Sun, 06 Sep 2020 00:00:00 +0000</lastBuildDate><image><url>https://cactusolo.github.io/media/icon_huedaf1db70dd9a5ae8fb7d95bfd1a4abe_1318_512x512_fill_lanczos_center_3.png</url><title>Miao Sun</title><link>https://cactusolo.github.io/author/miao-sun/</link></image><item><title>How to built a completely resolved species-level phylogeny using TCAT</title><link>https://cactusolo.github.io/post/tact/</link><pubDate>Sun, 06 Sep 2020 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/tact/</guid><description>&lt;p>Phylogenetic tree is a crucial reference system for biological research. It carries the key information for species diversification through geological time. A phylogeny tree with all members of a lineage presented is necessary for questions in macroecology and macroevolution. Hence, there are many comparative biological methods (e.g., diversification) integreated &amp;ldquo;sampling fractions&amp;rdquo; or other approches to correct sparsely sampled phylogenies of higher taxonomic groups. For example, &amp;ldquo;sampling fractions&amp;rdquo; in RPANDA (Morlon et al. 2016) and &amp;ldquo;global sampling fraction&amp;rdquo; and &amp;ldquo;clade-specific sampling fraction&amp;rdquo; in BAMM (Rabosky, 2014; Sun et al., 2020). However, this approach could lead to low statistical power to infer rate variation, or spurious patterns of diversification, which may further impact the evolutionary implication (Chang et al., 2019).&lt;br>
A new stochastic polytomy resolution method &amp;mdash; Taxonomic Addition for Complete Trees (TACT) is able to avoid the biases arised above, and also can greatly improve the power of estimation in diversification analyses (Chang et al., 2019). It uses birth–death-sampling model and taxonomic information to place unsampled taxa onto the ultrametric target backbone phylogeny. It produces a pseduposterior distribution of phylogenies, integrating diversification rates with phylogenetic uncertainty and speciation times, while this approach also can be labor and computation time intense as well as require topology constraint. Besides TACT, other stochastic polytomy resolvers, including PASTIS (Thomas et al., 2013) and CorSiM (Cusimano et al., 2012), but TACT performes better (See Chang et al., 2019).&lt;/p>
&lt;p>&lt;em>The caveats which researchers should pay attention is that complete phylogenies generared by stochastic polytomy resolvers should NOT be used for estimating the trait evolution. Because the way of how complete tree is generated, the true rate of trait evolution can be overestimated, and the phylogenetic signal is lost.&lt;/em>&lt;/p>
&lt;p>The Author &lt;a href="https://jonathanchang.org/" target="_blank" rel="noopener">Jonathan Chang&lt;/a> already has a detailed &lt;a href="https://github.com/jonchang/tact" target="_blank" rel="noopener">tutorial&lt;/a> of how to install and run TACT. Here I only focus on how to prepare a taxonomy list and built up pipeline for my own project.&lt;/p>
&lt;h2 id="general-steps">General steps&lt;/h2>
&lt;p>First thing first, you need two files to run TACT (assuming that you have successfully installed TACT and its dependencies):&lt;/p>
&lt;ol>
&lt;li>An ultrametric backbone phylogeny (e.g., &lt;em>Vitales_dated.tre&lt;/em>)&lt;/li>
&lt;li>A taxonomy of target clade&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>this can be taxonomy tree (see Chang et al., 2019)&lt;/li>
&lt;li>can also be a taxonomic list in csv format with all taxonomic ranks listed (e.g., genus, family, order; here as &lt;em>Vitales.csv&lt;/em>)&lt;/li>
&lt;/ul>
&lt;p>For the case in my post, I use &lt;a href="https://en.wikipedia.org/wiki/Vitaceae" target="_blank" rel="noopener">Vitales&lt;/a> as an example. The Vitales taxonomic list is generated from &lt;a href="http://www.plantsoftheworldonline.org" target="_blank" rel="noopener">WCSP website&lt;/a>, and the higher taxonomic ranks are queried from &lt;a href="http://www.mobot.org/MOBOT/research/APweb/" target="_blank" rel="noopener">APWeb&lt;/a>. The backbone tree was built using RAxML with molecular data mined from GenBank via &lt;a href="https://github.com/FePhyFoFum/PyPHLAWD" target="_blank" rel="noopener">PyPHLAWD&lt;/a>, and then dated using &lt;a href="https://github.com/blackrim/treePL" target="_blank" rel="noopener">treePL&lt;/a>.&lt;/p>
&lt;h3 id="1-prepare-a-taxonomic-list">1. Prepare a taxonomic list&lt;/h3>
&lt;ul>
&lt;li>A csv format&lt;/li>
&lt;li>All taxonomic ranks referenced from &lt;a href="http://www.mobot.org/MOBOT/research/APweb/" target="_blank" rel="noopener">APWeb&lt;/a>&lt;/li>
&lt;li>Columns layout as &lt;code>order,family,genus,genus.species&lt;/code>&lt;/li>
&lt;/ul>
&lt;pre>&lt;code class="language-{r"># devtools::install_github(&amp;quot;wcornwell/taxonlookup&amp;quot;)
rm(list=ls())
library(&amp;quot;taxonlookup&amp;quot;)
library(&amp;quot;ape&amp;quot;)
library(&amp;quot;dplyr&amp;quot;, warn.conflicts = FALSE, quietly = TRUE)
#read in the complete taxonomic list
Vitales &amp;lt;- read.csv(&amp;quot;Vitales_rawlist.csv&amp;quot;, header = T, stringsAsFactors = F)
# &amp;gt; head(Vitales)
# [1] &amp;quot;Acareosperma spireanum&amp;quot;
# [2] &amp;quot;Ampelocissus abyssinica&amp;quot;
# [3] &amp;quot;Ampelocissus acapulcensis&amp;quot;
# [4] &amp;quot;Ampelocissus acetosa&amp;quot;
# [5] &amp;quot;Ampelocissus aculeata&amp;quot;
# [6] &amp;quot;Ampelocissus africana var. migeodii&amp;quot;
# lookup APGWeb based on species names
Vitales.apg &amp;lt;- lookup_table(unique(Vitales), missing_action = &amp;quot;NA&amp;quot;, by_species=TRUE)
#just manual check if there are some genera are failed to have query
if(sum(is.na(Vitales.apg$family)) &amp;gt;0){
tt &amp;lt;- Vitales.apg[is.na(Vitales.apg$family),]
print(tt)
}
# rearrange columns as taxonomic ranks
APG_table &amp;lt;- Vitales.apg %&amp;gt;% mutate(genus.species=row.names(Vitales.apg)) %&amp;gt;% select(order, family, genus, genus.species)
#
#&amp;gt; head(APG_table)
#order family genus genus.species
#1 Vitales Vitaceae Acareosperma Acareosperma spireanum
#2 Vitales Vitaceae Ampelocissus Ampelocissus abyssinica
#3 Vitales Vitaceae Ampelocissus Ampelocissus acapulcensis
#4 Vitales Vitaceae Ampelocissus Ampelocissus acetosa
#5 Vitales Vitaceae Ampelocissus Ampelocissus aculeata
#6 Vitales Vitaceae Ampelocissus Ampelocissus africana var. migeodii
#replace space as underscore
APG_table$genus.species &amp;lt;- gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;,APG_table$genus.species)
#save the apg lookup table, and prepare for next step TACT
write.csv(APG_table, &amp;quot;Vitales.csv&amp;quot;, row.names=FALSE, quote=FALSE)
&lt;/code>&lt;/pre>
&lt;h3 id="2-run-tact">2. Run TACT&lt;/h3>
&lt;pre>&lt;code class="language-{bash}">#Build a taxonomic tree
tact_build_taxonomic_tree Vitales.csv --output Vitales.taxonomy.tre
# this step adove can be skipped, if you already have a taxonomy tree
#Run the TACT stochastic polytomy resolver algorithm in conjunction with the backbone phylogeny
tact_add_taxa --backbone Vitales_dated.tre --taxonomy Vitales.taxonomy.tre --output Vitales.tacted --verbose
#check the TACT results
tact_check_results Vitales.tacted.newick.tre --backbone Vitales_dated.tre --taxonomy Vitales.taxonomy.tre &amp;gt; Vitales_checkresults.csv
&lt;/code>&lt;/pre>
&lt;h3 id="3-visualize-and-compare-trees">3. Visualize and compare trees&lt;/h3>
&lt;pre>&lt;code class="language-{r">library(&amp;quot;ape&amp;quot;)
tree1 &amp;lt;- ladderize(read.tree(&amp;quot;./Vitales_dated.tre&amp;quot;))
plot.phylo(tree1, cex=0.1, type = &amp;quot;fan&amp;quot;, main=&amp;quot;Backbone tree with NCBI data&amp;quot;)
&lt;/code>&lt;/pre>
&lt;p>This is the original backbone tree before TACT treatment&lt;br>
&lt;figure id="figure-vitales-backbone">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Vitales backbone" srcset="
/post/tact/Comparison_tree_before_after_TACT1.1_hufad7c4dbe500cf14c7ef7b7bde29f98d_336280_1f1ca3cd4eb8ccac536ec3f7fd11a118.jpg 400w,
/post/tact/Comparison_tree_before_after_TACT1.1_hufad7c4dbe500cf14c7ef7b7bde29f98d_336280_f17f0003925a3a0a8267a413026a2b25.jpg 760w,
/post/tact/Comparison_tree_before_after_TACT1.1_hufad7c4dbe500cf14c7ef7b7bde29f98d_336280_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/tact/Comparison_tree_before_after_TACT1.1_hufad7c4dbe500cf14c7ef7b7bde29f98d_336280_1f1ca3cd4eb8ccac536ec3f7fd11a118.jpg"
width="648"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Vitales backbone
&lt;/figcaption>&lt;/figure>&lt;/p>
&lt;p>Now we show which tips on the complete species-level tree are added by TACT:&lt;/p>
&lt;pre>&lt;code class="language-{r">tree2 &amp;lt;- ladderize(read.tree(&amp;quot;./Vitales.tacted.newick.tre&amp;quot;))
tip.cl &amp;lt;- ifelse(tree2$tip.label %in% tree1$tip.label, &amp;quot;black&amp;quot;, &amp;quot;red&amp;quot;)
plot.phylo(tree2, tip.color=tip.cl, cex=0.1, type = &amp;quot;fan&amp;quot;, main=&amp;quot;complete tree with NCBI + Taxonomic data&amp;quot;)
mtext(&amp;quot;Red tips are species added by TACT&amp;quot;, col = &amp;quot;red&amp;quot;, side=1, line=-5, outer=TRUE)
&lt;/code>&lt;/pre>
&lt;figure id="figure-vitales-tacted-tree1">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Vitales Tacted Tree1" srcset="
/post/tact/Comparison_tree_before_after_TACT1.2_hu2a02c5d5579fb2e0919de0db391b2868_392639_3b28b3f4b640f70831aa3d266c1cd5b1.jpg 400w,
/post/tact/Comparison_tree_before_after_TACT1.2_hu2a02c5d5579fb2e0919de0db391b2868_392639_15c528ba3f69957b904282dc56120b09.jpg 760w,
/post/tact/Comparison_tree_before_after_TACT1.2_hu2a02c5d5579fb2e0919de0db391b2868_392639_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/tact/Comparison_tree_before_after_TACT1.2_hu2a02c5d5579fb2e0919de0db391b2868_392639_3b28b3f4b640f70831aa3d266c1cd5b1.jpg"
width="760"
height="737"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Vitales Tacted Tree1
&lt;/figcaption>&lt;/figure>
&lt;p>Last, We highlight which tree edges on the complete species-level tree are added by TACT:&lt;/p>
&lt;pre>&lt;code class="language-{r">library(&amp;quot;phytools&amp;quot;)
x &amp;lt;- setNames(ifelse(tree2$tip.label %in% tree1$tip.label, &amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;), tree2$tip.label)
a &amp;lt;- names(x)[x==&amp;quot;0&amp;quot;]
b &amp;lt;- names(x)[x==&amp;quot;1&amp;quot;]
tt&amp;lt;-paintBranches(tree2,edge=sapply(b,match,tree2$tip.label),
state=&amp;quot;b&amp;quot;,anc.state=&amp;quot;a&amp;quot;)
cols&amp;lt;-setNames(c(&amp;quot;black&amp;quot;,&amp;quot;red&amp;quot;),c(&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;))
plot(tt, colors=cols, fsize=0.1, type=&amp;quot;fan&amp;quot;, lwd=0.5)
mtext(&amp;quot;Red branches are imputated by TACT&amp;quot;, col = &amp;quot;red&amp;quot;, side=3, line=-1.5, outer=TRUE)
&lt;/code>&lt;/pre>
&lt;figure id="figure-vitales-tacted-tree2">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Vitales Tacted Tree2" srcset="
/post/tact/Comparison_tree_before_after_TACT2_hu84bbb56e77a9c0f5ec0d104572cf2055_577761_09c49b40610210cd6069a8b2146025f3.jpg 400w,
/post/tact/Comparison_tree_before_after_TACT2_hu84bbb56e77a9c0f5ec0d104572cf2055_577761_72a825ba76529e373eff48f0f836739d.jpg 760w,
/post/tact/Comparison_tree_before_after_TACT2_hu84bbb56e77a9c0f5ec0d104572cf2055_577761_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/tact/Comparison_tree_before_after_TACT2_hu84bbb56e77a9c0f5ec0d104572cf2055_577761_09c49b40610210cd6069a8b2146025f3.jpg"
width="745"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Vitales Tacted Tree2
&lt;/figcaption>&lt;/figure>
&lt;p>That&amp;rsquo;s it.&lt;/p>
&lt;h3 id="reference">Reference&lt;/h3>
&lt;ol>
&lt;li>Thomas G.H. et al. PASTIS: an R package to facilitate phylogenetic assembly with soft taxonomic inferences. Methods Ecol. Evol. 4:1011–1017 (2013).&lt;/li>
&lt;li>Chang et al. Estimating Diversification Rates on Incompletely Sampled Phylogenies: Theoretical Concerns and Practical Solutions. Syst. Biol. 69(3):602–611, 2020&lt;/li>
&lt;li>Cusimano N.et al. A new method for handling missing species in diversification analysis applicable to randomly or nonrandomly sampled phylogenies. Syst. Biol. 61:785–792 (2012).&lt;/li>
&lt;li>Morlon, H. et al. RPANDA: an R package for macroevolutionary analyses on phylogenetic trees. Methods Ecol. Evol. 7, 589–597 (2016).&lt;/li>
&lt;li>Rabosky, D. L. Automatic detection of key innovations, rate shifts, and
diversity-dependence on phylogenetic trees. PLoS ONE 9, e89543 (2014).&lt;/li>
&lt;li>Revell, J. L. Phytools: an R package for phylogenetic comparative biology (and other things). Methods Ecol. Evol. 3, 217–223 (2012).&lt;/li>
&lt;li>Sun, M. et al. Estimating rates and patterns of diversification with incomplete sampling: A case study in the rosids. Am. J. Bot. 107, 1–15 (2020).&lt;/li>
&lt;/ol></description></item><item><title>AJB: Estimating rates and patterns of diversification with incomplete sampling: a case study in the rosids</title><link>https://cactusolo.github.io/publication/sun_rosid3_2020/</link><pubDate>Tue, 09 Jun 2020 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/sun_rosid3_2020/</guid><description/></item><item><title>Demonstrating gene tree conflict with Phyparts Piecharts</title><link>https://cactusolo.github.io/post/phypartspiecharts/</link><pubDate>Sun, 27 Oct 2019 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/phypartspiecharts/</guid><description>&lt;p>&lt;em>We have marched into genome era already, especially using biparental inherited nuclear genome data to examine the framework of tree of life established by plastid data. However, not all gene trees tell one same story, even the most homogeneous genes from plastid organelle. Not to mention nuclear genes may have more than one copy, and other potential biological processes (e.g., hybridization, incomplete lineage sorting (ILS), or horizontal gene transfer, etc); also see &lt;a href="https://cactusolo.github.io/publication/sun2015com/">Sun et al. (2015)&lt;/a>. Hence, &lt;a href="https://bmcevolbiol.biomedcentral.com/articles/10.1186/s12862-015-0423-0" target="_blank" rel="noopener">Smith et al. (2015)&lt;/a> did a great job in summarizing current situation, and setting examples of visualization of concordance information in animals and plants genomic phylogenies. They also developed an open source java software to do this job &amp;mdash; &lt;a href="https://bitbucket.org/blackrim/phyparts" target="_blank" rel="noopener">phyparts&lt;/a>.&lt;/em>&lt;/p>
&lt;p>In this post I will use &lt;em>Sassafras&lt;/em> 322 gene trees as an example to show you how to use &lt;a href="https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2129-y" target="_blank" rel="noopener">ASTRAL-III&lt;/a> to estimate a species tree, and &lt;a href="https://bitbucket.org/blackrim/phyparts" target="_blank" rel="noopener">phyparts&lt;/a> to summarize the conflict and concordance information of those individual homologous gene regions, and finally using &lt;a href="https://github.com/mossmatters/MJPythonNotebooks/blob/master/PhyParts_PieCharts.ipynb" target="_blank" rel="noopener">PhyParts PieCharts&lt;/a> to visualize the Phyparts Output. These data was generated by Target Enrichment method using &lt;a href="https://academic.oup.com/sysbio/article/68/4/594/5237557" target="_blank" rel="noopener">Universal Probe Set for Targeted Sequencing of 353 Nuclear Genes&lt;/a> under &lt;a href="https://cactusolo.github.io/project/dimensions/">Dimension project&lt;/a>. My other relevant workingflow and scripts are available &lt;a href="https://github.com/Cactusolo/IESHTSTE" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>&lt;em>Note: &lt;a href="https://github.com/mossmatters/MJPythonNotebooks/blob/master/PhyParts_PieCharts.ipynb" target="_blank" rel="noopener">Matt Johnson&lt;/a> has a great tutorial of how to run his script using Jupyter Notebook. The interpretation of PieCharts is well explained as well.&lt;/em>&lt;/p>
&lt;p>My instructions here focus on the overall procedures from gene trees all the way down to the Pie chart. Hopefully, I&amp;rsquo;m able to integrate all the steps together into one pipeline.&lt;/p>
&lt;h2 id="general-steps">General steps&lt;/h2>
&lt;p>&lt;em>Here we need to assess how a number of gene trees how they agree with ours pecies tree, and displaying this discordance and agreeent information with satisfying visualization.&lt;/em>&lt;/p>
&lt;h3 id="1-building-phylogeny-so-that-we-have-all-gene-trees">1. Building phylogeny, so that we have all gene trees&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>My data was generated from 353 target enrichment method&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I used 322 gene trees from &lt;em>Sassafras&lt;/em> samples as example&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Note:&lt;/p>
&lt;ul>
&lt;li>All trees were rooted by either &lt;a href="https://github.com/FePhyFoFum/phyx" target="_blank" rel="noopener">phyx&lt;/a> or &lt;a href="https://github.com/tjunier/newick_utils/wiki" target="_blank" rel="noopener">The Newick Utilities&lt;/a>, or &lt;a href="https://pypi.org/project/DendroPy/" target="_blank" rel="noopener">DendroPy&lt;/a>&lt;/li>
&lt;li>Though &lt;a href="https://github.com/smirarab/ASTRAL/blob/master/astral-tutorial.md#running-with-unresolved-gene-trees" target="_blank" rel="noopener">ASTRAL&lt;/a> is able to take any gene trees rooted or unrooted, however, for downstream Phyparts performance, rooted trees are preferred. Such so all gene trees and species trees are towards to the same root direction (See &lt;a href="https://github.com/mossmatters/MJPythonNotebooks/blob/master/PhyParts_PieCharts.ipynb" target="_blank" rel="noopener">Matt Johnson&amp;rsquo;s post&lt;/a>).&lt;/li>
&lt;li>As quote in &lt;a href="https://github.com/smirarab/ASTRAL/blob/master/astral-tutorial.md#running-with-unresolved-gene-trees" target="_blank" rel="noopener">ASTRAL tutorial&lt;/a>:&lt;br>
&lt;em>&amp;ldquo;Importantly, we will reroot the tree at the correct node, which is always necessary, since the rooting of the ASTRAL trees is arbitrary and meaningless.&amp;quot;&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Therefore, rooting all the trees (species tree and gene trees) is preferred for Phyparts Piecharts. Sometimes, when you have hundreds of gene trees, however, not all outgroups presented in your gene tree; in these case, I recommend either use &lt;code>pxrr&lt;/code> function from &lt;a href="https://github.com/FePhyFoFum/phyx" target="_blank" rel="noopener">phyx&lt;/a>, or &lt;a href="https://www.nature.com/articles/s41559-017-0193" target="_blank" rel="noopener">MAD (root the tree by Minimal Ancestor Deviation)&lt;/a>; the latter works well with those trees without outgroups at all; for details see my other post &lt;a href="https://cactusolo.github.io/post/mad/check-the-performance-of-a-rooting-method-using-minimal-ancestor-deviation-mad/">here&lt;/a>&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="2-species-tree-estimation">2. Species tree estimation&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Species tree was estimated by &lt;a href="https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2129-y" target="_blank" rel="noopener">ASTRAL-III&lt;/a>, and see tutorials &lt;a href="https://github.com/smirarab/ASTRAL/blob/master/astral-tutorial.md#running-on-the-sample-mammalian-dataset" target="_blank" rel="noopener">here&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Note:&lt;/strong> Collapse gene tree nodes with BS support less than certain value (saying 10%; see cmd below), will help to improve accuracy; sometime increasing the threshold for collapse may yield better results.&lt;br>
There are many ways to do this: &lt;a href="https://github.com/FePhyFoFum/phyx" target="_blank" rel="noopener">phyx&lt;/a> or &lt;a href="https://github.com/tjunier/newick_utils/wiki" target="_blank" rel="noopener">The Newick Utilities&lt;/a>&lt;/p>
&lt;ul>
&lt;li>using The Newick Utilities as example from &lt;a href="https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2129-y" target="_blank" rel="noopener">ASTRAL-III tutorial&lt;/a>
e.g., &lt;code>nw_ed 1KP-genetrees.tre 'i &amp;amp; b&amp;lt;=10' o &amp;gt; 1KP-genetrees-BS10.tre&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>ASTRAL &lt;strong>CMD&lt;/strong>:&lt;br>
&lt;code>java -jar astral.5.6.3.jar -i collapse_genetrees.tre -o output_species_tree.tre 2&amp;gt; running.log&lt;/code>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="3-statistic-information-about-conflict-concordance-or-even-gene-duplications">3. Statistic information about conflict, concordance, or even gene duplications&lt;/h3>
&lt;ul>
&lt;li>You need to run &lt;a href="https://bitbucket.org/blackrim/phyparts/src/master/" target="_blank" rel="noopener">phyparts&lt;/a> with instruction on the repo webpage.&lt;/li>
&lt;li>Phyparts &amp;ldquo;conflict&amp;rdquo; option &lt;strong>CMD&lt;/strong>:&lt;br>
&lt;code>java -jar target/phyparts-0.0.1-SNAPSHOT-jar-with-dependencies.jar -a 1 -v -d gene_trees -m ASTRAL_species_tree -o output_name&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Note:&lt;/em> run cmd below, you&amp;rsquo;ll able to see all the Phyparts options (see snapshot below):&lt;br>
&lt;code>java -jar target/phyparts-0.0.1-SNAPSHOT-jar-with-dependencies.jar&lt;/code>&lt;/p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/phypartspiecharts/phyparts_option_hubaae0ff782c8b75f8b806f4834290463_185587_3da90889fd6d88a9ba7c81d286051f4b.jpg 400w,
/post/phypartspiecharts/phyparts_option_hubaae0ff782c8b75f8b806f4834290463_185587_75712de886d9bb4c3c345117e6bb0c91.jpg 760w,
/post/phypartspiecharts/phyparts_option_hubaae0ff782c8b75f8b806f4834290463_185587_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/phypartspiecharts/phyparts_option_hubaae0ff782c8b75f8b806f4834290463_185587_3da90889fd6d88a9ba7c81d286051f4b.jpg"
width="760"
height="227"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;h3 id="4-mapping-these-information-on-species-tree">4. Mapping these information on species tree&lt;/h3>
&lt;ul>
&lt;li>You need &lt;strong>PhyParts PieCharts&lt;/strong> &lt;a href="https://github.com/mossmatters/phyloscripts/tree/master/phypartspiecharts" target="_blank" rel="noopener">python script&lt;/a> and tutorial from &lt;a href="https://github.com/mossmatters/MJPythonNotebooks/blob/master/PhyParts_PieCharts.ipynb" target="_blank" rel="noopener">Matt Johnson&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Note: Please read the tutorial, &lt;strong>Python &amp;gt;2.7 and ETE3&lt;/strong> with the graphical options need to be installed before run the python script&lt;/em>&lt;/p>
&lt;ul>
&lt;li>how to run script:&lt;br>
&lt;code>python3 phypartspiecharts.py species_tree output_name gene_number&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Note: &lt;code>output_name&lt;/code> must be the same as you names at the &lt;code>phyparts (# 3)&lt;/code> step&lt;/em>&lt;/p>
&lt;h3 id="5-visualize-the-gene-tree-support-and-conflic-statics-with-piecharts">5. Visualize the gene tree support and conflic statics with Piecharts&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>the output format of PhyParts PieCharts is in &lt;code>svg&lt;/code>, then you need to Inkscape or AI to convert it as &lt;code>pdf&lt;/code>. You also can refine the overall layout of that plot.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Note: make sure Python3, ETE3, and &lt;a href="https://kovyrin.net/2007/10/01/how-to-run-gui-programs-on-a-server-without-any-monitor/" target="_blank" rel="noopener">X server&lt;/a> installed.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>As my plot below:&lt;/p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/phypartspiecharts/featured_hud8fe575bf066501c365d16a7a2def1ba_187002_788fed679003fb238a1f418cdf584b3d.jpg 400w,
/post/phypartspiecharts/featured_hud8fe575bf066501c365d16a7a2def1ba_187002_a6a6630e701b8c712d8c30633b883f27.jpg 760w,
/post/phypartspiecharts/featured_hud8fe575bf066501c365d16a7a2def1ba_187002_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/phypartspiecharts/featured_hud8fe575bf066501c365d16a7a2def1ba_187002_788fed679003fb238a1f418cdf584b3d.jpg"
width="760"
height="269"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;p>Last updated: Mon Dec 7 2020&lt;/p></description></item><item><title>MPE: Accelerated diversification correlated with functional traits shapes extant diversity of the early divergent angiosperm family Annonaceae</title><link>https://cactusolo.github.io/publication/xueetal2019/</link><pubDate>Sat, 26 Oct 2019 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/xueetal2019/</guid><description/></item><item><title>Research Talk at IBCAS Youth Forum</title><link>https://cactusolo.github.io/post/youth_forum_talk/</link><pubDate>Wed, 25 Sep 2019 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/youth_forum_talk/</guid><description>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/youth_forum_talk/intro_hu549f5c0e3e5618f8d3813a0966666316_1359272_8c111643d7523f9c0a3fb531e34e0d23.png 400w,
/post/youth_forum_talk/intro_hu549f5c0e3e5618f8d3813a0966666316_1359272_8ad0ba444e773808246f2a601891649b.png 760w,
/post/youth_forum_talk/intro_hu549f5c0e3e5618f8d3813a0966666316_1359272_1200x1200_fit_lanczos_3.png 1200w"
src="https://cactusolo.github.io/post/youth_forum_talk/intro_hu549f5c0e3e5618f8d3813a0966666316_1359272_8c111643d7523f9c0a3fb531e34e0d23.png"
width="760"
height="571"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;p>I had the great honor and was invited by Dr. &lt;a href="http://sourcedb.ib.cas.cn/cn/expert/200904/t20090403_45016.html" target="_blank" rel="noopener">Zhiduan Chen&lt;/a> to visit his lab. We had great conversations and we also discussed to collaborate a few great project in comming futher.&lt;/p>
&lt;p>Later on I was invited by Dr. &lt;a href="http://www.lseb.cn/lulimin" target="_blank" rel="noopener">Limin Lu&lt;/a>, who hosted a Youth Forum organized by &lt;a href="http://www.lseb.cn/Enindex.aspx" target="_blank" rel="noopener">the State Key Laboratory of Systematic and Evolutionary Botany (LSEB)&lt;/a> at IBCAS.&lt;/p>
&lt;p>I briedly introduced my research works conducted in these 5-year post-doc life in &lt;a href="https://www.floridamuseum.ufl.edu/museum-voices/soltis-lab/people/principal-investigators/" target="_blank" rel="noopener">Soltis Lab&lt;/a>. I used &lt;a href="https://cactusolo.github.io/project/rosids/">rosids&lt;/a> as an example to illustrate how to build and use large-scale phylogentic trees. Key points are:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Data mining public database (e.g, GenBank and &lt;a href="https://www.gbif.org/" target="_blank" rel="noopener">GBIF&lt;/a>), and data cleaning for downstream analyses. E.g, recent manuscript in &lt;a href="https://doi.org/10.1101/694950" target="_blank" rel="noopener">bioRxiv&lt;/a> and paper in &lt;a href="https://cactusolo.github.io/publication/folk2018challenges/">AJB&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Knowing the potential issues when applying large-scale data for macro-ecology and -evolution. E.g., papers in &lt;a href="https://cactusolo.github.io/publication/folk2018challenges/">AJB&lt;/a>, &lt;a href="https://cactusolo.github.io/publication/lietal2019/">Ecology&lt;/a>, and another recent manuscript in &lt;a href="https://doi.org/10.1101/749325V1" target="_blank" rel="noopener">bioRxiv&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Large-scale trees can be used for [Diversification]. E.g., recent manuscript in &lt;a href="https://doi.org/10.1101/749325V1" target="_blank" rel="noopener">bioRxiv&lt;/a> and an accepted paper collaborated with &lt;a href="https://www.biorxiv.org/content/10.1101/652065v1" target="_blank" rel="noopener">Dr. Xue&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Large-scale trees can be used for &lt;a href="https://cactusolo.github.io/publication/lu2018evolutionary/">Phylogentic Diversity (PD)&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Relationships matter!!&lt;/strong>&lt;/p>
&lt;p>Please let me know if you have any questions and want to know more details.&lt;/p>
&lt;p>Overall, it turned out full house!! More than expected!! ✌️ ✌️&lt;/p>
&lt;p>Especially I have met Prof. Jianfeng Mao from Beijing Forestry University. I had great cinversation with him and his students.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/youth_forum_talk/Wechat1_hu477f06d6e34b355beb93ef3a8d36ea4c_117032_e6b5bd5d6cef8b72012a55bcd6384ecf.jpg 400w,
/post/youth_forum_talk/Wechat1_hu477f06d6e34b355beb93ef3a8d36ea4c_117032_14535ad77ea20c47ada0e3d58a901377.jpg 760w,
/post/youth_forum_talk/Wechat1_hu477f06d6e34b355beb93ef3a8d36ea4c_117032_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/youth_forum_talk/Wechat1_hu477f06d6e34b355beb93ef3a8d36ea4c_117032_e6b5bd5d6cef8b72012a55bcd6384ecf.jpg"
width="760"
height="570"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>&lt;/p></description></item><item><title>Research Lightning Talks at Florida Museum of Natural History</title><link>https://cactusolo.github.io/post/lightning_talk/</link><pubDate>Fri, 01 Feb 2019 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/lightning_talk/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/lightning_talk/wc_hu63d9a31a1e1b8b1c244f1f4e472ebb27_260649_1c0b31c91c72da0ccd80a69f7409a733.png 400w,
/post/lightning_talk/wc_hu63d9a31a1e1b8b1c244f1f4e472ebb27_260649_e89b1045a1bef14241443d8e9f8acd44.png 760w,
/post/lightning_talk/wc_hu63d9a31a1e1b8b1c244f1f4e472ebb27_260649_1200x1200_fit_lanczos_3.png 1200w"
src="https://cactusolo.github.io/post/lightning_talk/wc_hu63d9a31a1e1b8b1c244f1f4e472ebb27_260649_1c0b31c91c72da0ccd80a69f7409a733.png"
width="714"
height="358"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
All my research is &lt;strong>phylogeny&lt;/strong> based. Phylogeny trees are illustrating relationships among organisms. Relationships matter! In my understanding, &lt;mark>phylogeny serves as a beautiful platform, which links all the biology data together with an evolutionary background&lt;/mark>. I&amp;rsquo;m insterested in phylogeny of angiosperms, particularly &lt;a href="https://cactusolo.github.io/project/rosids/">rosids&lt;/a>.&lt;/p>
&lt;p>I briedly introduced three main research interests:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://cactusolo.github.io/publication/sun2015com/">Phylogney&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://cactusolo.github.io/project/rosids/">Diversification&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://cactusolo.github.io/publication/lu2018evolutionary/">Phylogentic Diversity (PD)&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>It turned out that people like my talk! ✌️ ✌️
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/lightning_talk/Tweet1_hu47441d887d4ac29fb6892ad63a6e09ef_83999_b4be6f45b4ecab91bdb928762b0590a8.jpg 400w,
/post/lightning_talk/Tweet1_hu47441d887d4ac29fb6892ad63a6e09ef_83999_19f9c82cd7cf672d37b5e0d42781859b.jpg 760w,
/post/lightning_talk/Tweet1_hu47441d887d4ac29fb6892ad63a6e09ef_83999_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/lightning_talk/Tweet1_hu47441d887d4ac29fb6892ad63a6e09ef_83999_b4be6f45b4ecab91bdb928762b0590a8.jpg"
width="573"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/post/lightning_talk/Tweet2_hu5cf2c980c728c8ba35a0e33def3d3545_106382_73d0a865e2b93398b3d8299ad4dc0c2d.jpg 400w,
/post/lightning_talk/Tweet2_hu5cf2c980c728c8ba35a0e33def3d3545_106382_7f1b453c6f24fbf23ced6d7d0965cde7.jpg 760w,
/post/lightning_talk/Tweet2_hu5cf2c980c728c8ba35a0e33def3d3545_106382_1200x1200_fit_q75_lanczos.jpg 1200w"
src="https://cactusolo.github.io/post/lightning_talk/Tweet2_hu5cf2c980c728c8ba35a0e33def3d3545_106382_73d0a865e2b93398b3d8299ad4dc0c2d.jpg"
width="581"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>&lt;/p>
&lt;p>&lt;a href="https://cactusolo.github.io/uploads/Miao_lightning_talk.pdf" target="_blank">You can download my talk slides here&lt;/a> 👈&lt;/p></description></item><item><title>Field work activities from 2006-2012 in China</title><link>https://cactusolo.github.io/post/field_work/</link><pubDate>Sun, 13 Jan 2019 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/field_work/</guid><description>&lt;p>I have visited a lot places in south part of China. These places are genreally hostspots of biodiversity of China. &lt;em>Especially I love Xizang!&lt;/em> I hope I have chance to introduce more details of this facinating landscape, spelendid vegation, and each plant I came across during my trip.&lt;/p>
&lt;p>🍀 🌸 🌿 🌵 🍄 🌴 🌳 🌼&lt;/p>
&lt;p>Here some bullets of my trips I have make since 2006 - 2012:&lt;/p>
&lt;ul>
&lt;li>2012&lt;br>
Trip to southern Yunnan along Myanmar border with Pam S. Soltis and Doug E. Soltis, collecting materials for Tree of life — China Project.
Trip to Hainan tropical rain forest with Doug E. Soltis, collecting materials of Tree for life — China Project.&lt;/li>
&lt;li>2006 ~ 2011&lt;br>
Joined in the expedition team of national herbarium (PE) for collection many times, successively visited a series of biodiversity hotspots, such as Jilin, Hubei, Chongqing, Guangxi, Sichuan, Xizang, etc.&lt;/li>
&lt;/ul>
&lt;p>I use R code and Baidumap API to show my trips:&lt;/p>
&lt;p>Warning: This script may not work well in R markdown enviroment, but I tried by copying out the code as a single script in R studio. It works.&lt;/p>
&lt;pre>&lt;code class="language-{r">rm(list=ls())
# you need to install these packages if have not done so.
#install.packages(&amp;quot;devtools&amp;quot;)
# devtools::install_github(&amp;quot;lchiffon/REmap&amp;quot;)
# devtools::install_github(&amp;quot;badbye/baidumap&amp;quot;&amp;quot;)
install.packages(&amp;quot;png&amp;quot;)
library(&amp;quot;png&amp;quot;)
library(&amp;quot;REmap&amp;quot;)
library(&amp;quot;baidumap&amp;quot;)
# I realized chinese string have more success match with their coordinates
city&amp;lt;- c(&amp;quot;北京&amp;quot;,&amp;quot;吉林省&amp;quot;, &amp;quot;广东&amp;quot;,&amp;quot;湖北&amp;quot;,&amp;quot;重庆&amp;quot;,&amp;quot;广西&amp;quot;,&amp;quot;西藏&amp;quot;,&amp;quot;四川&amp;quot;, &amp;quot;云南&amp;quot;, &amp;quot;海南&amp;quot;)
begin&amp;lt;-rep(&amp;quot;beijing&amp;quot;,length(city)) #(起点)
mapdata&amp;lt;-data.frame(begin,city)
getBaiduMap2(city, width = 400, height = 400, zoom = 10, scale = 2,
color = &amp;quot;color&amp;quot;, messaging = TRUE)
map_pic &amp;lt;- remap(mapdata = mapdata, #数据框
title = &amp;quot;Footsteps covered most hotspots of China&amp;quot;, #标题
subtitle = &amp;quot;Field work activities from 2006-2012&amp;quot;, #副标题
theme = get_theme(theme = &amp;quot;Dark&amp;quot;)) #主题
plot(map_pic)
&lt;/code>&lt;/pre>
&lt;figure id="figure-field-trip-trail">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Field trip trail"
src="https://cactusolo.github.io/post/field_work/Feildwork.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Field trip trail
&lt;/figcaption>&lt;/figure></description></item><item><title>Plotting Christmas Tree</title><link>https://cactusolo.github.io/post/christmas_tree/</link><pubDate>Mon, 17 Dec 2018 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/post/christmas_tree/</guid><description>&lt;p>I saw a figure of all potential Christmas tree 🎄 at 🐦 &lt;a href="https://twitter.com/Polypompholyx/status/1074351911581728770?s=05" target="_blank" rel="noopener">Polypompholyx’s Tweet&lt;/a>.&lt;/p>
&lt;p>It looks strange for my first impression. So I did a quick check from &lt;a href="https://tree.opentreeoflife.org/opentree/argus/opentree10.4@ott93302" target="_blank" rel="noopener">Open Tree&lt;/a>. This looks much better!&lt;/p>
&lt;p>See code below:&lt;/p>
&lt;pre>&lt;code class="language-{r">rm(list=ls())
# install.packages(&amp;quot;rotl&amp;quot;)
# install.packages(&amp;quot;ape&amp;quot;)
#loading libraries
library(&amp;quot;rotl&amp;quot;) #for querying open tree database
library(&amp;quot;ape&amp;quot;) #for tree manipulation
#First I preapred a table for those potential **Christmas Trees** with first column is common names,a nd second column is the scientific names
# then we read in the table as a query list to the Open Tree
query &amp;lt;- read.csv(&amp;quot;XsmasTree.csv&amp;quot;, header=TRUE, sep=&amp;quot;,&amp;quot;, stringsAsFactors=FALSE, quote=&amp;quot;&amp;quot;)
# check what our table look like this
head(query)
# query names and get ottid
species &amp;lt;- tnrs_match_names(names = query$Scientific_name_rept.)
# check results
head(species)
# fix fuzzy match on row 16, then updated it
new_species&amp;lt;- update(species, row_number=16, new_ott_id = 248313)
# checking object
head(new_species)
species &amp;lt;- new_species
species.ottid &amp;lt;- ott_id(species)
# extracting the phylogeny summarized in the Open tree
tree &amp;lt;- tol_induced_subtree(ott_ids=species$ott_id, label_format = &amp;quot;name&amp;quot;)
# make it looks good
tree &amp;lt;- ladderize(tree)
plot.phylo(tree, cex=0.8)
# rename the tree tip labels
query[[2]][16] &amp;lt;- &amp;quot;Picea pungens&amp;quot; #remove one extra space
query[[2]] &amp;lt;- gsub(pattern=&amp;quot;\\s&amp;quot;, &amp;quot;_&amp;quot;, query[[2]])
new_label &amp;lt;- paste0(tree$tip.label,&amp;quot;(&amp;quot;, query[[1]][match(tree$tip.label, query[[2]])], &amp;quot;)&amp;quot;)
new_tree &amp;lt;- tree
new_tree$tip.label &amp;lt;- new_label
#png(&amp;quot;The Tree of Christams Tree.png&amp;quot;)
#plot(new_tree, cex=0.7)
#dev.off()
#write.tree(new_tree, &amp;quot;renamed_Xsmas_tree.tre&amp;quot;)
#plot a prettier tree
plot.phylo(new_tree, edge.color = &amp;quot;dark green&amp;quot;, edge.width = 2, tip.color = &amp;quot;red&amp;quot;,
label.offset = 0.5, main=&amp;quot;The Tree of Christmas Tree&amp;quot;, col.main=&amp;quot;red&amp;quot;)
mtext(&amp;quot;---source from Open Tree&amp;quot;, col=&amp;quot;dark green&amp;quot;, 3)
&lt;/code>&lt;/pre>
&lt;p>
&lt;figure id="figure-tree-of-xsmas-trees">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Tree of Xsmas Trees" srcset="
/post/christmas_tree/Rplot02_hu02779b9926964c9250097458591aa486_83480_93923b561ccfa9c0f48976415955c100.png 400w,
/post/christmas_tree/Rplot02_hu02779b9926964c9250097458591aa486_83480_74f59a8b12e6cebfe68cadddb82a7773.png 760w,
/post/christmas_tree/Rplot02_hu02779b9926964c9250097458591aa486_83480_1200x1200_fit_lanczos_3.png 1200w"
src="https://cactusolo.github.io/post/christmas_tree/Rplot02_hu02779b9926964c9250097458591aa486_83480_93923b561ccfa9c0f48976415955c100.png"
width="414"
height="456"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Tree of Xsmas Trees
&lt;/figcaption>&lt;/figure>
❄️ 🎅 🌵 🔔 ☃️ 🌲&lt;/p></description></item><item><title>Nature---ISME: Phylogenetic imprint of woody plants on the soil mycobiome in natural mountain forests of eastern China</title><link>https://cactusolo.github.io/publication/yang2018phylogenetic/</link><pubDate>Mon, 01 Jan 2018 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/yang2018phylogenetic/</guid><description/></item><item><title>JSE: Phylogeny of the Rosidae: A dense taxon sampling analysis</title><link>https://cactusolo.github.io/publication/sun2016rosidphylogeny/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/sun2016rosidphylogeny/</guid><description/></item><item><title>Exploring deep phylogenetic incongruence of the COM clade in Rosidae: Phylogenomics approach [PhD dissertation]</title><link>https://cactusolo.github.io/publication/sun2014dissertation/</link><pubDate>Wed, 28 May 2014 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/sun2014dissertation/</guid><description/></item><item><title>Genome: Identification of nuclear low-copy genes and their phylogenetic utility in rosids</title><link>https://cactusolo.github.io/publication/wang2014identification/</link><pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/wang2014identification/</guid><description/></item><item><title>JSE: A revision of Elaeagnus L. (Elaeagnaceae) in mainland China</title><link>https://cactusolo.github.io/publication/miao2010revision/</link><pubDate>Sat, 01 May 2010 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/miao2010revision/</guid><description/></item><item><title>Primary Taxonomic Study of Elaeagnus ( Elaeagnaceae) in Mainland China</title><link>https://cactusolo.github.io/publication/sun2010elaeagnus/</link><pubDate>Mon, 01 Jun 2009 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/sun2010elaeagnus/</guid><description/></item><item><title>Lectotypification of five scientific names in Rosaceae [In Chinese]</title><link>https://cactusolo.github.io/publication/sun2008lectotypification/</link><pubDate>Tue, 01 Jan 2008 00:00:00 +0000</pubDate><guid>https://cactusolo.github.io/publication/sun2008lectotypification/</guid><description/></item></channel></rss>