Skip to content

Commit

Permalink
new interface at www.iqtree.org
Browse files Browse the repository at this point in the history
  • Loading branch information
bqminh committed Sep 3, 2016
1 parent d60ee6b commit 012d0d7
Show file tree
Hide file tree
Showing 37 changed files with 1,042 additions and 227 deletions.
11 changes: 9 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
title: IQ-TREE
description: "IQ-TREE: Efficient phylogenetic software by maximum likelihood"
analytics: UA-38693379-1
baseurl: "/software/iqtree" #important: start with /
url: "http://www.cibiv.at"
baseurl: "" #important: start with /
url: "http://www.iqtree.org"

# Build settings
markdown: kramdown
Expand Down Expand Up @@ -89,6 +89,13 @@ members:
url: http://www.cibiv.at/~minh
- title: university
url: https://scholar.google.com/citations?user=UI0xN_QAAAAJ
- name: Dominik Schrempf
position: Developer
text: Implements polymorphism-aware models (PoMo).
img: jule.jpg
social:
- title: home #use for email address
url: http://i122server.vu-wien.ac.at/pop/lab_members/Dominik_Schrempf.html
- name: Arndt von Haeseler
position: Advisor
text: Provides advice, inspiring ideas and financial support.
Expand Down
4 changes: 2 additions & 2 deletions _includes/nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
<div class="navbar-collapse collapse navbar-right">
<ul class="nav navbar-nav">
<li {% if page.title == "XXX" %}class="active"{% endif %}><a data-toggle="collapse" data-target=".navbar-collapse" href="{{"/#download" | prepend: site.baseurl }}">DOWNLOAD</a></li>
<li {% if page.title == "Release Notes" %}class="active"{% endif %}><a href="{{"/release/" | prepend: site.baseurl }}">NEWS</a></li>
<li {% if page.title == "News" %}class="active"{% endif %}><a href="{{"/news/" | prepend: site.baseurl }}">NEWS</a></li>
<li {% if page.title == "XXX" %}class="active"{% endif %}><a href="http://iqtree.cibiv.univie.ac.at" target="_blank">WEB SERVICE</a></li>
<li {% if page.title == "Documentation" or page.categories.first == "doc" %}class="active"{% endif %}><a href="{{"/doc/" | prepend: site.baseurl }}">DOCUMENTATION</a></li>
<li {% if page.title == "Blog" or page.categories.first == "blog" %}class="active"{% endif %}><a href="{{"/blog/" | prepend: site.baseurl }}">BLOG</a></li>
<li {% if page.title == "FAQ" %}class="active"{% endif %}><a href="{{"/doc/Frequently-Asked-Questions/" | prepend: site.baseurl }}">FAQ</a></li>
<li {% if page.title == "About IQ-TREE" %}class="active"{% endif %}><a href="{{"/about/" | prepend: site.baseurl }}">ABOUT</a></li>
</ul>
</div><!--/.nav-collapse -->
Expand Down
13 changes: 13 additions & 0 deletions _includes/sidebarnews.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<div class="well">
<h4>Recent news</h4>
<div class="row">
<div class="popular-posts">
{% for post in site.categories['news'] limit:10 %}
<div class="col-md-12 col-sm-6 col-xs-6">
<p><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a><br><csmall>{{ post.date | date: "%b %-d, %Y" }}</csmall></p>
</div>
{% endfor %}
</div>
</div>
<p><strong><a href="{{site.url}}/news">&#8594; See all news</a></strong></p>
</div>
13 changes: 13 additions & 0 deletions _includes/sidebarrelease.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<div class="well">
<h4>Recent IQ-TREE releases</h4>
<div class="row">
<div class="popular-posts">
{% for post in site.categories['release'] limit:5 %}
<div class="col-md-12 col-sm-6 col-xs-6">
<p><a href="{{ post.url | prepend: site.baseurl }}">Version {{ post.version }}</a><br><csmall>{{ post.date | date: "%b %-d, %Y" }}</csmall></p>
</div>
{% endfor %}
</div>
</div>
<p><strong><a href="{{site.url}}/release">&#8594; All release history</a></strong></p>
</div>
4 changes: 2 additions & 2 deletions _layouts/post.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ <h3>{{ page.title }}</h3>
<p><img class="img-responsive" src="{{ "/assets/img/blog/" | prepend: site.baseurl }}{{ page.img }}"></p>
{% endif %}
{{ content }}

<button type="button" class="btn btn-warning" onclick="window.history.back();">&#8592; Back to all news</button>
<div class="spacing"></div>
<!-- <h6>SHARE:</h6>
<p class="share">
Expand All @@ -27,7 +27,7 @@ <h3>{{ page.title }}</h3>
</div><! --/col-md-8 -->

<div class="col-md-4">
{% include sidebar.html %}
{% include sidebarnews.html %}
</div>

</div><! --/row -->
Expand Down
6 changes: 3 additions & 3 deletions _layouts/userdoc.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<div class="col-md-9">
<! -- User Doc -->
<h3>{{ page.title }}</h3>
<p><csmall>{{ page.date | date: "%b %-d, %Y" }}. | Updated by: {{ page.author }}</csmall></p>
<p><em>Last update: {{ page.date | date: "%b %-d, %Y" }} by {{ page.author }}</em></p>

{{ content }}

Expand All @@ -25,9 +25,9 @@ <h3>{{ page.title }}</h3>
</div><! --/col-md-9 -->

<div class="col-md-3">
<div data-spy="affix" data-offset-top="60" data-offset-bottom="200">
<!--<div data-spy="affix" data-offset-top="60" data-offset-bottom="200">-->
{% include sidebardoc.html %}
</div>
<!--</div>-->
</div>

</div><! --/row -->
Expand Down
24 changes: 0 additions & 24 deletions _posts/blog/2015-10-20-congratulations-olga.md

This file was deleted.

21 changes: 0 additions & 21 deletions _posts/blog/2016-02-12-iqtree-vs-raxml.md

This file was deleted.

6 changes: 3 additions & 3 deletions _posts/doc/2015-11-08-Advanced-Tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: userdoc
title: "Advanced Tutorial"
author: minh
date: 2016-03-04
date: 2016-06-21
categories:
- doc
docid: 03
Expand Down Expand Up @@ -130,13 +130,13 @@ by MrBayes):
To build a majority-rule consensus tree, simply set the minimum support threshold to 0.5:


iqtree -con mytrees -t 0.5
iqtree -con mytrees -minsup 0.5


If you want to specify a burn-in (the number of beginning trees to ignore from the trees file), use `-bi` option:


iqtree -con mytrees -t 0.5 -bi 100
iqtree -con mytrees -minsup 0.5 -bi 100


to skip the first 100 trees in the file.
Expand Down
106 changes: 103 additions & 3 deletions _posts/doc/2015-11-08-Frequently-Asked-Questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
layout: userdoc
title: "Frequently Asked Questions"
author: minh
date: 2015-12-01
date: 2016-08-12
categories:
- doc
docid: 04
docid: 07
icon: question-circle
doctype: tutorial
tags:
Expand All @@ -17,6 +17,14 @@ sections:
url: how-does-iq-tree-treat-gapmissingambiguous-characters
- name: Can I mix DNA and protein data in a partitioned analysis?
url: can-i-mix-dna-and-protein-data-in-a-partitioned-analysis
- name: What is the interpretation of branch lengths when mixing codon and DNA data?
url: what-is-the-interpretation-of-branch-lengths-when-mixing-codon-and-dna-data
- name: What is the purpose of composition test?
url: what-is-the-purpose-of-composition-test
- name: What is the good number of CPU cores to use
url: what-is-the-good-number-of-cpu-cores-to-use
- name: How do I save time for standard bootstrap?
url: how-do-i-save-time-for-standard-bootstrap
---
For common questions and answers.
<!--more-->
Expand All @@ -28,6 +36,10 @@ For common questions and answers.
- [How do I interpret ultrafast bootstrap (UFBoot) support values?](#how-do-i-interpret-ultrafast-bootstrap-ufboot-support-values)
- [How does IQ-TREE treat gap/missing/ambiguous characters?](#how-does-iq-tree-treat-gapmissingambiguous-characters)
- [Can I mix DNA and protein data in a partitioned analysis?](#can-i-mix-dna-and-protein-data-in-a-partitioned-analysis)
- [What is the interpretation of branch lengths when mixing codon and DNA data?](#what-is-the-interpretation-of-branch-lengths-when-mixing-codon-and-dna-data)
- [What is the purpose of composition test?](#what-is-the-purpose-of-composition-test)
- [What is the good number of CPU cores to use?](#what-is-the-good-number-of-cpu-cores-to-use)
- [How do I save time for standard bootstrap?](#how-do-i-save-time-for-standard-bootstrap)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down Expand Up @@ -77,7 +89,95 @@ For protein the following ambiguous amino-acids are supported:
Can I mix DNA and protein data in a partitioned analysis?
---------------------------------------------------------

Yes! You can specify this via a NEXUS partition file. In fact, you can mix any data types supported in IQ-TREE, including also codon, binary and morphological data. To do so, each data type should be stored in a separate alignment file. For further information please read [partition file format](../Complex-Models/#partition-file-format).
Yes! You can specify this via a NEXUS partition file. In fact, you can mix any data types supported in IQ-TREE, including also codon, binary and morphological data. To do so, each data type should be stored in a separate alignment file (see also [Partitioned analysis with mixed data](../Tutorial/#partitioned-analysis-with-mixed-data)). As an example, assuming `dna.phy` is a DNA alignment and and `prot.phy` is a protein alignment. Then a partition file mixing two types of data can be specified as follows:

#nexus
begin sets;
charset part1 = dna.phy: 1-100 201-300;
charset part2 = dna.phy: 101-200;
charset part3 = prot.phy: 1-150;
charset part4 = prot.phy: 151-400;
charpartition mine = HKY:part1, GTR+G:part2, WAG+I+G:part3, LG+G:part4;
end;

>**NOTE**: The site count for each alignment should start from 1, and **not** continue from the last position of a previous alignment (e.g., see `part3` and `part4` declared above).
What is the interpretation of branch lengths when mixing codon and DNA data?
----------------------------------------------------------------------------

When mixing codon and DNA data in a partitioned analysis, the branch lengths are interpreted as the number of nucleotide substitutions per nucleotide site! This is different from having only codon data, where branch lengths are the number of nucleotide substitutions per codon site (thus typically 3 times longer than under DNA models).

Note that if you mix codon, DNA and protein data, the branch lengths are then the number of character substitutions per site, where character is either nucleotide or amino-acid.


What is the purpose of composition test?
--------------------------------------------

At the beginning of each run, IQ-TREE performs a composition chi-square test for every sequence in the alignment. The purpose is to test for homogeneity of character composition (e.g., nucleotide for DNA, amino-acid for protein sequences). A sequence is denoted `failed` if its character composition significantly deviates from the average composition of the alignment.

More specifically, for each sequence, compute:

chi2 = \sum_{i=1}^k (O_i - E_i)^2 / E_i

where k is the size of the alphabet (e.g. 4 for DNA, 20 for amino acids) and the values 1 to k correspond uniquely to one of the characters.
O_i is the character frequency in the sequence tested.
E_i is the overall character frequency from the entire alignment.

Whether the character composition deviates significantly from the overall composition is done by testing the chi2 value using the chi2-distribution with k-1 degrees of freedom (df=3 for DNA or df=19 for amino acids). By and large it is a normal Chi^2 test.

This test should be regarded as an *explorative tool* which might help to nail down problems in a dataset. One would typically not remove failing sequences by default. But if the tree shows unexpected topology the test might point in direction of the origin of the problem.

Furthermore, please keep in mind, this test is performed at the very beginning, where IQ-TREE does not know anything about partitions yet. That means, it might be more reasonable to test this separately for each partition in a partition analysis. Here, one might want to be able to decide whether some partitions should better be discarded if it is hard to find a composition representing the sequences in the partition. Or on the other hand if a sequence fails for many partitions and show very unexpected phylogenetic topologies, try without it.

In any case if one has sequences that fail, it is recommended to always check the alignment (something one should always do anyway), especially if they have been collected and produced automatically.


What is the good number of CPU cores to use?
--------------------------------------------

IQ-TREE can utilize multicore machines to speed up the analysis via `-nt` option. However, it does not mean that using more cores will always result in less running time: if your alignment is short, using too many cores may even slow down the analysis. This is because IQ-TREE parallelizes the likelihood computation along the alignment. Thus, the parallel efficiency is only increased with longer alignments. As a rule of thumb:

* For DNA data: 1 core for every 500 alignment sites. For example, if your alignment length is 1300 bp, use at most 3 cores.
* For protein data: 1 core for every 100 sites.
* For codon data: 1 core for every 50 sites.
* For binary data: 1 core for every 1000 sites.

Please note that the more proper way is to actually run some quick analysis with increasing number of cores for your data and choose the one that best balances the trade-off between number of cores and waiting time. [See this tutorial for more details.](../Tutorial/#utilizing-multi-core-cpus)

How do I save time for standard bootstrap?
--------------------------------------------

The standard bootstrap is rather slow and may take weeks/months for large data sets. One way to speed up is to use the multicore version. However, this only works well for long alignments (see [What is the good number of CPU cores to use?](#what-is-the-good-number-of-cpu-cores-to-use)). Another way is to use many machines or a computing cluster and split the computation among the machines. To illustrate, you want to perform 100 bootstrap replicates and have 5 PCs, each has 4 CPU cores. Then you can:

1. Perform 5 independent bootstrap runs (each with 20 replicates) on the 5 machines with 5 prefix outputs (such that output files are not overwritten). For example:

iqtree-omp -nt 4 -s input_alignment -bo 20 ... -pre boot1
iqtree-omp -nt 4 -s input_alignment -bo 20 ... -pre boot2
iqtree-omp -nt 4 -s input_alignment -bo 20 ... -pre boot3
iqtree-omp -nt 4 -s input_alignment -bo 20 ... -pre boot4
iqtree-omp -nt 4 -s input_alignment -bo 20 ... -pre boot5

Note that if you have access to a computing cluster, you may want to submit these jobs onto the cluster queue in parallel and with even more fined grained parallelization (e.g. one replicate per job).

2. Once all 5 runs finished, combine the 5 `.boottrees` file into one file (e.g. by `cat` command under Linux):

cat boot*.boottrees > alltrees
3. Construct a consensus tree from the combined bootstrap trees:

iqtree -con -t alltrees
The consensus tree is then written to `.contree` file.

4. You can also perform the analysis on the original alignment:

iqtree-omp -nt 4 -s input_alignment ...

and map the support values onto the obtained ML tree:

iqtree -sup input_alignment.treefile -t alltrees

The ML tree with assigned bootstrap supports is written to `.suptree` file.

[Guindon et al., 2010]: http://dx.doi.org/10.1093/sysbio/syq010
[Minh et al., 2013]: http://dx.doi.org/10.1093/molbev/mst024
Loading

0 comments on commit 012d0d7

Please sign in to comment.