ゲノム中の一部の遺伝子の有無は、他の遺伝子の存在の可能性に影響を与える可能性がある。こうした遺伝子の共起と回避のパターンを理解することで、ゲノム構成の基本原理が明らかになり、進化的再構成から合成ゲノムの合理的設計に至るまで、幅広い応用が期待される。ここで紹介するPanForestは、ランダムフォレスト分類器を用いて、ゲノムに存在する他の遺伝子群から、ある遺伝子の存在と不在を予測する。PanForestが出力するパフォーマンス統計は、ゲノム中の他の遺伝子の存在と不在に基づいて、各遺伝子の存在と不在がどの程度予測可能であるかを示す。さらに、PanForestは、各遺伝子が他の遺伝子の存在と不在を予測する上でどれほど重要かを示す統計も生成する。PanForestソフトウェアは逐次実行または並列実行が可能であり、生命ネットワーク規模でのパンゲノム解析を容易にする。
1,000個の大腸菌ゲノムに含まれる12,741個のアクセサリ遺伝子からなるパンゲノムを、8プロセッサを用いて約5時間で解析した。PanForestの有用性を示すために、ケーススタディを提示し、抗菌薬耐性に関連する特定の遺伝子が、同じ薬剤耐性に関連する他の遺伝子の存在または非存在を確実に予測できることを示す。さらに、これらの遺伝子と、抗菌薬耐性(AMR)や他の薬剤耐性との関連が知られていない他の遺伝子との間のいくつかの関連性を明らかにした。PanForestは、生物医学、合成生物学、分子生態学など、パンゲノムにおける遺伝子分布のダイナミクスに関する多分野にわたる研究で活用されることが期待される。このソフトウェアは完全なマニュアルとともに無料でwww.github.com/alanbeavan/PanForestから入手できる。
Pangenome_rf.py instructions
https://github.com/alanbeavan/PanForest/blob/master/pangenome_rf_manual.pdf
インストール
依存
- Python 3.9 or Above
git clone https://github.com/alanbeavan/PanForest
cd PanForest/
mamba create -n PanForest python=3.10 -y
conda activate PanForest
mamba install pandas scikit-learn
> python3 PanForest.py -h
usage: PanForest.py [-h] [-n NTREES] [-d DEPTH] [-p PURITY] [-m FILENAME] [-pres MIN_PRESENT] [-abs MIN_ABSENT] [-o OUTPUT] [-r] [-t NTHREADS] [-c CHECKPOINT]
options:
-h, --help show this help message and exit
-n NTREES, --n-trees NTREES
number of trees (default = 100)
-d DEPTH, --depth DEPTH
max depth of trees in the forest
-p PURITY, --purity PURITY
minimum increase in purity at a decision. If speciefied, must be lower than min_present and min_absent
-m FILENAME, --matrix FILENAME
matrix file
-pres MIN_PRESENT, --min-present MIN_PRESENT
minimum percentage of genomes featuring a gene for it to be analysed (5 = 5 percent, not 0.05. Default = 1)
-abs MIN_ABSENT, --min-absent MIN_ABSENT
minimum percentage of genomes missing a gene for it to be analysed (5 = 5 percent, not 0.05. Default = 1)
-o OUTPUT, --output-directory OUTPUT
destiny directory for results
-r, --randomise randomise the gene presence and absence (null hypothesis)
-t NTHREADS, --n-threads NTHREADS
number of threads (default = 1)
-c CHECKPOINT, --checkpoint CHECKPOINT
continue from checkpoint? provide the number of genes that have been completed
> python3 process_matrix.py -h
usage: process_matrix.py [-h] [-i INFILE] [-r] [-o OUTFILE]
options:
-h, --help show this help message and exit
-i INFILE, --infile INFILE
input file
-r, --roary toggle for roary input
-o OUTFILE, --output OUTFILE
Output matrix file
実行方法
1、Panarooの遺伝子存在/不在マトリクスのクリーニング(PanForest形式マトリクスへの変換)
Panaroo(紹介)などのパンゲノムツールで作成された gene_presence_absence.csvが必要。
gene_presence_absence.csv

レポジトリにはテスト用の小さなgene_presence_absence.csvが用意されている。ここではこれを使う。
python3 process_matrix.py -i example_gene_presence_absence.csv -o collapsed_matrix.csv
出力例

各ファイルの詳細(PDFマニュアルより転載)
2、ランダムフォレストの実行。まずはテストラン。
#テストラン
python3 PanForest.py -n 1 -d 1 -m collapsed_matrix.csv -pres 1 -abs 1 -t 8 -o test 2> errorlog
- -n number of trees (default = 100)
- -d max depth of trees in the forest
- -pres minimum percentage of genomes featuring a gene for it to be analysed (5 = 5 percent, not 0.05. Default = 1)
- -abs minimum percentage of genomes missing a gene for it to be analysed (5 = 5 percent, not 0.05. Default = 1)
- -o destiny directory for results
- -t number of threads (default = 1)
テスト用の設定では精度が出ないため、統計的に信頼できる回数実行する。レポジトリに書いてある例だと、-n 1000で決定木数を1000に増やし(かなり重くなる)、-d 8でツリーデプスを8に制限して過学習を防ぐことを提案している。
#テストラン
python3 PanForest.py -n 1000 -d 8 -m collapsed_matrix.csv -pres 1 -abs 1 -t 8 -o output 2> errorlog

遺伝子ごとに進捗が表示される(テストデータは12000以上の遺伝子があるが -pres 1(1%以上の株に存在)および -abs 1(1%以下の株で欠損)を指定しているので、9227遺伝子まで減っていると思われる。
出力例
test/

performance.csvがメインの結果ファイルとなる。各遺伝子について正確に表現型(形質)を予測できたかどうかの予測精度が記録されている。

A列が遺伝子、Bのcount:が遺伝子を持っているゲノム数、C列以降は遺伝子存在不在の2値分類のTrue positive、True Negative、False Positive、False Negative、それ以降はAte:エラー率と正答率、形質ありと判断した内の正答率(P1te)、形質なしと判断した内の正答率(P0te)など、順番に並んでいる。F1teが予測の正確さを表す重要な指標となる。1に近いほど、その遺伝子の有無が他の遺伝子の存在パターンから正確に予測できることを意味している。
3、閾値以下をカットする。0.01以下の重要度が低いデータを0に置換。
cd output/
python3 simplify_imp.py 0.01 imp.csv simplified_imp.csv
4、CytoscapeやGephiで読み込める形式に変換
cd output/
python3 ../convert_to_cytoscape.py simplified_imp.csv output_network.csv
出力例

5、4をさらに有向グラフに変換
cd output/
python3 ../direct_network.py output_network.csv ../collapsed_matrix.csv directed_network.csv
つながりが促進か抑制かを判断させるために重要。遺伝子が存在・不在だけでなく、A<=>B間で転写誘導か抑制か行っている関係の場合、それを調査する。
コメント
他にも、D統計量を遺伝子ごとに出したり、SQLite3データベースを作り操作するためのコマンドが用意されています。レポジトリとPDFマニュアルを確認してください。
論文より
- PanForestはある遺伝子がゲノム内に存在するかどうかを、他の遺伝子の存在パターンに基づいて予測する
- 1,000個のE. coliゲノムの解析を8プロセッサで約5時間で完了できる(図2)
- ケーススタディとして、メトロニダゾール耐性に関連する遺伝子と他の遺伝子とのつながりを示している(図3)。耐性に関与する遺伝子が、耐性とは無関係と考えられる100以上の遺伝子(白色)と安定したネットワークを形成している (F1 > 0.9, D > 0のみ) 。
その他
- Roaryなどの従来のツールは十分強力で、遺伝子間の共起性を評価することができる。しかしRoaryで共起が見つかっても、それが機能的に必要だから一緒なのか、単に同じ先祖から受け継いだだけなのか区別は難しい。PanForestには遺伝子の分布が系統樹に沿っているか調べるためのD統計量の計算が含まれており、系統関係では説明できないのに強く共起している関係を調査することができる。
引用
PanForest: predicting genes in genomes using random forests
Alan J S Beavan , Maria Rosa Domingo-Sananes , James O McInerney
Bioinformatics, Published: 09 January 2026
関連
