2024/02/26 追記
GraPPLEは、Graphia (Pubmed) によるパンゲノムグラフの可視化支援スクリプトです。細菌のパンゲノムグラフの活用法について学ぶためには、最近出たこちらの論文(link)がとても参考になりました。
Githubより
GraPPLEのスクリプトは、バクテリアのパンゲノムデータセットをネットワーク解析スイートGraphiaで可視化するために提供されています。現時点では、ベータ版として扱いますので、出力が意味をなしているかどうかを確認し、問題やバグがあれば提起してください。
GraPPLEは当初PIRATEの出力で動作するように開発されましたが、他の適切なツール(Roary, Panaroo, PPanGGOLiNなど)からの遺伝子の存在/不在行列をペアワイズ類似性スクリプトの入力として使用することが可能です。現在、PIRATEとPanarooのsyntenyグラフがサポートされています(PIRATEでは変換が必要、下記参照)。
Graphia for linux
https://graphia.app/download.html
インストール
以前作ったPIRATESの環境(link)でテストした。
依存
- Python 3.6
- sklearn.metrics
- numpy
- pandas
conda activate pirate
pip install pandas sklearn
git clone https://github.com/JDHarlingLee/GraPPLE
cd /GraPPLE/grapple/
> python pw_similarity.py -h
usage: pw_similarity.py [-h] -i INPUT [-o OUT] [-m ISOL_META] [-g GENE_META]
[-r RUN_TYPE] [-s SIM_METRIC] [-f ISOL_FILT]
[-e GENE_FILT] [-t THREADS] [-x]
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
binary tab delimited (.tsv, .Rtab) file of gene
presc/absc across pangenome
-o OUT, --out OUT optional prefix for output files
-m ISOL_META, --isol_meta ISOL_META
.csv isolate metadata
-g GENE_META, --gene_meta GENE_META
.tsv gene metadata, e.g. PIRATE all_alleles.tsv file
-r RUN_TYPE, --run_type RUN_TYPE
calculate similarity of isolates ("isolates"), genes
("genes" or both ("both"). Defaults to both
-s SIM_METRIC, --sim_metric SIM_METRIC
set metric for similarity calculation. Default:
jaccard
-f ISOL_FILT, --isol_filt ISOL_FILT
optional filter for isolate pairwise similarity
-e GENE_FILT, --gene_filt GENE_FILT
optional filter for gene pairwise similarity
-t THREADS, --threads THREADS
number of threads to be used
-x, --output_matrix output .tsv similarity matrix as well as list. Will
not be filtered
> python edges_to_layout.py -h
usage: edges_to_layout.py [-h] -e EDGE_FILE [-o FILE_OUT] [-f EDGE_FILTER]
[-g] [-v]
optional arguments:
-h, --help show this help message and exit
-e EDGE_FILE, --edge_file EDGE_FILE
pangenome.edges file from PIRATE
-o FILE_OUT, --file_out FILE_OUT
output prefix
-f EDGE_FILTER, --edge_filter EDGE_FILTER
filter edges below this value. Must be integer value.
Default: 0
-g, --group_genes Default: On. Removes directionality of genes to group
together in Graphia. See docs for more information on
this behaviour
-v, --verbose Default: On
> python grapple/metadata_to_layout.py -h
usage: metadata_to_layout.py [-h] -l LAYOUT -m METADATA [-s SELECTION]
[-r RUN_TYPE] [-v]
optional arguments:
-h, --help show this help message and exit
-l LAYOUT, --layout LAYOUT
.layout file to copy and/or append metadata to
-m METADATA, --metadata METADATA
.tsv file of metadata to add. First column must match
node names
-s SELECTION, --selection SELECTION
.txt file of list of metadata columns to add. If not
provided, all metadata columns will be added
-r RUN_TYPE, --run_type RUN_TYPE
copy or append layout file. Default: "copy"
-v, --verbose default: on
> bash scripts/post_pirate_processing.sh -h
------------------------------------------------
This is a script to adapt the standard output from PIRATE for use in GraPPLE/Graphia
You may prefer to run some of these actions individually, but this is a wrapper script for convenience
Ensure you are executing this script within the output directory of your PIRATE pangenome analysis
-t | threshold list (those used in PIRATE run, or a subset thereof)
-d | output directory name - a directory where new files can be created to avoid overwriting originals. Default: GraPPLE
-q | path to PIRATE directory - necessary for using PIRATE adapter scripts
-n | number of threads to use. Default: 2
--paralogs | flag to generate files with paralogs split. Default: off
------------------------------------------------
テストラン
PIRATESの出力の1つであるedgeファイルをグラフに変換。
git clone https://github.com/JDHarlingLee/GraPPLE
cd /GraPPLE/grapple/
python edges_to_layout.py -e ../example_data/saureus/saureus.edges -o example_graph
- -e pangenome.edges file from PIRATE
- -o output prefix
- -f filter edges below this value. Must be integer value. Default: 0
- -g Default: On. Removes directionality of genes to group together in Graphia. See docs for more information on this behaviour
.layout形式のファイル;example_graph.layoutが出力される。example_graph.layoutはGraphia(HP)に読み込める。
Graphiaにそのままロードした。
.layout形式のグラフにメタデータを追加する。おそらく引用した論文でもこの方法でメタデータがグラフに組み込まれている。
cd /GraPPLE/
python metadata_to_layout.py -l example1_gene_pw_sim.layout -m gene_info.tsv -s pirate_gene_headers.txt -r "copy"
example1_genes_pw_sim-wMeta.layoutが出力される。
ゲノムおよび/または遺伝子間のペアワイズ類似度をバイナリ行列出力する。それから、ペアワイズの類似性行列を出力する。
#1 presence /absence tableからbinary matrixに変換(roaryかpirates出力)
cd /GraPPLE/scripts/
#piratesの出力の23行目から各ゲノムの有り無し情報が始まるなら23
python gene_matrix_to_binary.py -i PIRATE.gene_families.ordered.tsv -o out.tsv --start_col 23
=> presence/absenceのバイナリ行列"out.tsv"が得られる
#2 pw_similarityのラン、20スレッド。1の出力を指定する。
cd ../grapple/
python pw_similarity.py -i out.tsv -o out -t 20
引用
A graph-based approach for the visualisation and analysis of bacterial pangenomes
Joshua D. Harling-Lee, Jamie Gorzynski, Gonzalo Yebra, Tim Angus, J. Ross Fitzgerald & Tom C. Freeman
BMC Bioinformatics volume 23, Article number: 416 (2022)
関連