OrthoFinderを用いたOrthologous解析



####---------------------------------追記 (2022/01/07)---------------------------------

とても今更ですが、2年ぶりくらいに使ったら出力ファイルが便利になっていたのと、python3に対応していたので追記します。

#### インストール、環境設定、動かし方
だいぶ前からですが、biocondaでインストールできます。もうRoot権限がなくてもanacondaさえ入れられれば色々と安心ですね。
**また、現在のバージョンではpython3で動きます**。

```
conda install -c bioconda orthofinder
```

現バージョンでは、-Sでdiamond, blast, mmseqsなどsequence searchの方法を選択できます。**デフォルトはdiamondです**。最新バージョンはとても早く結果が出ます。
加えて、前はProteinでしか解析できなかった気がするのですが -d optionでProteinではなくDNA配列で解析がかけられるようです。とても便利。

```
orthofinder -f dir_of_your_fasta -t 20 -a 10 -S blast

# -t <int>        Number of parallel sequence search threads [Default = 64]
# -a <int>        Number of parallel analysis threads
# -S <txt>        Sequence search program [Default = diamond] \
                  Options: blast, blast_gz, diamond_ultra_sens, diamond, mmseqs, blast_nucl
# -d              Input is DNA sequences
```

#### 出力
出力ファイルもかなり親切になり、以下のようなディレクトリが作成されて結果が格納されています。

- Species_Tree
- Resolved_Gene_Trees
- Phylogenetic_Hierarchical_Orthogroups
- WorkingDirectory
- Single_Copy_Orthologue_Sequences
- Putative_Xenologs
- Phylogenetically_Misplaced_Genes
- Log.txt
- Orthogroup_Sequences
- Comparative_Genomics_Statistics
- Citation.txt
- Orthogroups
- Orthologues
- Gene_Trees
- Gene_Duplication_Events

特に、Orthogroup_Sequencesには各orthogroupに含まれる遺伝子の配列がまとまったファイルが入っており、とても便利です。
Resolved_Gene_Treesは (説明がどこにあるかわからないので正確かわかりませんが...) おそらく前のバージョンのRecon_Gene_Treesに相当するんじゃないかと思います。Recon_Gene_Treesは一度推定されたgene treeを解析後に Specie treeをもとに再構築されたものだそうです。

Orthogroups、Orthologuesは前からありますがOrthogroupsにはOrthogroupのファイルが、Orthologuesには1対1のOrthologueのファイル (例えばマウスとショウジョウバエの1対1のOrthologue関係など) が入っています。



####---------------------------------追記おわり---------------------------------
(2017/2/22, CentOS x86_64)
#はじめに
複数種のゲノム情報を元にして、Orthologous解析を行うために [OrthoFinder](http://www.stevekellylab.com/software/orthofinder) を用いました。
OrthoFinderでは、MCL (markov cluster algorithm)を用いてオーソログを推定します。
論文によると、OrthoFinderは、OrthoBenchを用いたベンチマーク試験では別の手法(OrthoMCLなど)よりも高速で、オーソログの分類に関しても独自の標準化で精密さを高めた優れた手法である、と記載されています。

#参考
http://www.stevekellylab.com/software/orthofinder
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4531804/


#OrthoFinderの考え方
オーソログは現代では人によって様々な定義で捉えられていますが、OrthoFinderでは、
*"共通祖先 (Last Common Ancestor, LCA) に由来する、遺伝子重複が起こったものも含んだ、多数対多数の遺伝子"*
というように定義しており、
更にそれを 複数種に拡張した**"OrthoGroup"** という独自の考え方のOrthologousなグループを定義しています。
筆者らは、このOrthoGroupにはオーソログだけでなく、パラログも含まれてしまうため、不完全な定義ではあると言及しつつも、一般的なOrthologous解析の用途では、大きな支障はないだろうと結論づけています。なんにせよ、パラログを区別して解析したい場合には注意が必要です。

#OrthoFinderでできること
1. OrthoGroup (OG) の推定
2. 1生物種×1生物種のオーソロガスな遺伝子の組の推定
3. 系統樹の作成
4. シングルコピー遺伝子の選出

以上の4つを自動で行ってくれます。3に関しては、生物種の系統樹と、各OGに対しての系統樹をそれぞれ作成してくれます。シングルコピー遺伝子のみを用いて生物種の系統樹を作成したい場合は、自分で別の方法で行う必要があります。


#インストール
OrthoFinderは、Python2.7に依存しているため、Python3.xを使っている方は、pyenvやanacondaなどで仮想環境を構築してください ([参考](http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c)) 。インストールには、OrthoFinder本体に加えて、*BLAST+*、*MCL*、*FastMe*、*DLCpar*をインストールする必要があります。
###1. OrthoFinder

1) git cloneしてパッケージをダウンロードし、解凍します。

```
$git clone https://github.com/davidemms/OrthoFinder.git
$tar xzj OrthoFinder-1.1.2.tar.gz
```

2) orthofinderディレクトリにPATHを通します。

###2. MCL, FastMe
特に注意する点はありません。Root権限がある人は`sudo`などで、Root権限がない人はそれぞれのWebサイトにいってダウンロードすれば簡単にビルドできます。[OrthoFinderマニュアル](https://github.com/davidemms/OrthoFinder/blob/master/OrthoFinder-manual.pdf)を参考にインストールしてください。

###3. DLCper
すこし注意が必要です。
2.と同じようにインストールできるのですが、`setup.py`でビルドする際にはpythonが入っている*bin*があるディレクトリで行う必要があります(which pythonで確認できます)。素直に該当のディレクトリに`cp`して`setup.py`を走らせるか、 `--prefix`オプションを使ってビルドするディレクトを指定してください。
こうしないと、PythonのmoduleであるdlcparがPythonにはいらず、OrthoFinderが動きません。

#使い方
##準備
1. 解析したい複数のFastaファイル (.fa, .faa)を準備する
2. すべてのFastaファイルを1つのディレクトリにまとめる

##
解析したいFastaファイルのはいったディレクトリを指定します。
なお、OrthoFinderパッケージを解凍すると、直下にFastaファイルが入った`ExampleData`ディレクトリが入っているのでそれでテストランをしてみるとベターです。

```
$python orthofinder.py -f your_fasta_dir -t 5 # -f オプションでファイルの指定, -t オプションで使用可能なスレッド数の指定。
```

このとき、`-a`オプションで　OrthoFinderアルゴリズムでの並列ジョブも指定できます。以下のようにメモリを考えてクラッシュしないように設定する必要があります。

>+ 0.02 GB per species for small genomes (e.g. bacteria)
+ 0.04 GB per species for larger genomes (e.g. vertebrates)
+ 0.2 GB per species for even larger genomes (e.g. plants)

解析が終わると`your_fasta_dir`直下に`Results_Date`ディレクトリが作られます。

##結果の確認
このディレクトリ内には、以下のファイルが生成されます。
>1. Orthogroups.csv
2. Orthogroups.txt
3. Orthogroups_SpeciesOverlaps.csv
4. Orthogroups_UnassignedGenes.csv
5. Orthologues_Date (ディレクトリ) → 直下には`Treeディレクトリ`、`Orthologueディレクトリ`
6. Statistics_Overall.csv
7. Statistics_PerSpecies.csv

###Orthogroups.csvファイル
1.には推定されたOrthogroupが以下のように入っています。SpecieはTabで区切られており、遺伝子はカンマ区切りです。2.はOrthoMCLのフォーマットのバージョンです。

| OG | Specie1 | Specie2 | Specie3 |
| :--: | :--: | :--: | :--: |
| OG000001 | gene_s1_1, gene_s1_3 | gene_s2_1, gene_s2_2 | gene_s3_2 |
| OG000002 | gene_s1_2, gene_s1_4 | gene_s2_3 | gene_s3_1, gene_s3_3 |


###Statisticsファイル
6.Statistics_Overall.csvには、1) 使った合計遺伝子数 2) 推定されたOGでの合計数 3) OGに分類された遺伝子の割合
などの情報が含まれています。
7.Statistics_PerSpecies.csvにはそれぞれの生物種ごとに、上のようなデータが振られています。

###Treeディレクトリ、Orthologueディレクトリ
Treeディレクトリには各OGごとの系統樹のツリーファイルが作られており、直上のディレクトリには生物種の系統樹が入っています。
Orthologueディレクトリには、使用したすべての生物種に対して、それぞれ1生物種×1生物種のオーソログ遺伝子の表が作られています。

#便利な機能
###1. 分析終了後に新たに生物種を追加して再解析する
OrthoFinderではありがたいことに、追加機能が備わっています。
使い方としては、
1)  新しいディレクトリを作成し、追加したいFastaファイルを入れる
2)  追加したい元データの`Result_Date`ディレクトリ直下にある`WorkingDirectory`を以下のように指定して解析。なお、この`WorkingDirectory`は`SpecieID.txt`が入っているものを指定する。

```
$python orthofinder -b previous_working_dir -f new_fasta_dir
```

###2. 分析終了後に生物種を除外して再解析する
親切なことに除外もできます。
1)  元データの`Result`直下にある`WorkingDirectory`に入っている`SpecieID.txt`をエディタで開く
2)  除外したい種に`#`を付加してコメントアウトする
3)  以下のように解析

```
$python orthofinder -b previous_working_dir
```

###3. 追加、除外を同時に行う
当然ながら追加と除外を同時にも行うことができます。追加したいFastaを準備し、`SpecieID.txt`を編集して、前述のFastaを新たに追加するときと同じコマンドで動かしてください。

###4. その他
BLASTなどのステップのみを単独に動かすこともできます。また、`MAFFT`と`FastTree`を使った系統樹の作成も可能です。詳しくは[OrthoFinderマニュアル](https://github.com/davidemms/OrthoFinder/blob/master/OrthoFinder-manual.pdf)を参照ください。