============== -*- outline -*- ============== bioinfo_tools 2021/03/22 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> ============================================= * 何これ? 某研究者から bioinformatics 関連のツールを作って欲しいと 依頼を受けて作っているやつ * ライセンス GNU General Public License v2 * MAC ユーザー MAC の sed (BSD sed) の改行の扱いが相当ややこしいので MAC ユーザーは GNU sed を使ってください > brew install gnu-sed * mo_dfast_to_cdspickup.sh https://dfast.ddbj.nig.ac.jp/ http://kazumaxneo.hatenablog.com/entry/2019/10/10/073000 https://github.com/nigyta/dfast_core 上記の Dfast は A) RARx-METABAT__x/protein.faa B) RARx-METABAT__x/genome.gbk A) に説明を添えた B) を作成する mo_dfast_to_cdspickup は B) の CDS の /note の中に特定のキーワードを含んでいるものを A) からピックアップするために、中間ファイルである mo_cdspickup_xxx.xls を作る (xxx は指定したキーワード)。 以下は "AmoA" と言うキーワードを全フォルダ (= RAR*) からピックアップする例 > ls RAR1-METABAT__1 RAR2-METABAT__2 RAR3-METABAT__3 ... > mo_dfast_to_cdspickup.sh AmoA RAR* 上記例の場合、実行後に mo_cdspickup_AmoA.xls と言うファイルができる。 確認のためこのファイルを MS Office 等で開き余計なものが含まれていないか等を確認する。 余計なものが含まれている場合は、その行を削除する。 確認・編集後、「CSV 形式」または「テキスト(タブ)形式」で保存する。 保存したファイルを使い、次の mo_cdspickup_to_faa.sh を使用する事で、 特定のキーワード含んだ新しい protein.faa を作成する * mo_cdspickup_to_faa mo_dfast_to_cdspickup により作成された mo_cdspickup_xx ファイルを元に 新しい protein.faa を作成する 以下は "AmoA" と言うキーワードを全フォルダ (= RAR*) からピックアップした mo_cdspickup_AmoA.xls (テキスト(タブ)形式)を元に全フォルダ内にある protein.faa からキーワードを含む情報だけをピックアップする。 > ls RAR1-METABAT__1 RAR2-METABAT__2 RAR3-METABAT__3 ... > mo_cdspickup_to_faa.sh mo_cdspickup_AmoA.xls RAR* 上記の例の実行後、mo_protein.faa が作成される * mo_analysis.sh ------------------- MGA_2|NED1_00010 MGA_3|NED1_00020 K06925 MGA_4|NED1_00030 K00259 ... MGA_11|NED2_00110 MGA_12|NED2_00120 K04065 MGA_13|NED2_00130 K01480 ... MGA_12|NED3_00110 K01284 MGA_13|NED3_00120 MGA_14|NED3_00130 ... ------------------- 上記のようなファイルから、Core, Singleton 等の情報を解析する > mo_analysis.sh sample.txt summary Total genes (a)全遺伝子数(入力ファイルの行数) Genes with K No (b)全遺伝子に付与された K No の数 rate (genes) (b) * 100 / (a) Uniq K No 全 K No をユニークにした数 Total Core (x)全コアの数 rate (genes) (x) * 100 / (a) rate (K No) (x) * 100 / (b) Total Singleton (y)全シングルトンの数 rate (genes) (y) * 100 / (a) rate (K No) (y) * 100 / (b) 各ゲノムフォルダ all_genes.tsv 各ゲノムの全遺伝し数 all_k_no.tsv 各ゲノムに付与された K No の数 uniq_k.tsv all_k_no の内容をユニークにしたもの 出現個数付き singleton.tsv Singleton の Kxxx summary.tsv Total genes (1)全ゲノム数 (all_genes.tsv の行数) Genes with K No (2)Kxxxx の数 (all_k_no.tsv の行数) rate (genes) (2) * 100 / (1) Uniq K No Kxxx をユニークにした数 Singleton (3)シングルトンの数 rate (genes) (3) * 100 / (1) rate (K No) (3) * 100 / (2) core フォルダ uniq_core.tsv 全コア 出現個数付き summary.tsv Total core (x)全コア数(uniq_core.tsv の行数) SCG (9/9) (y)9 ゲノム中 9 個がシングルの数 rate (9/9) (y) * 100 / (x) SCG (8/9) (z)9 ゲノム中 8 個がシングルの数 rate (8/9) (z) * 100 / (x) ... * mo_kno_cnt ------------------- MGA_2|NED1_00010 MGA_3|NED1_00020 K06925 MGA_4|NED1_00030 K00259 ... MGA_11|NED2_00110 MGA_12|NED2_00120 K04065 MGA_13|NED2_00130 K01480 ... MGA_12|NED3_00110 K01284 MGA_13|NED3_00120 MGA_14|NED3_00130 ... ------------------- 上記のようなファイルで、指定された K No が各ゲノムに何回 登場するか数える > ./mo_kno_cnt.sh K21572 user_ko.txt NED1 5 NED2 5 NED3 4 NED4 4 NED5 7 NED6 7 NED7 7 NED8 10 NED9 1 * mo_kno_name 指定された K no の名前を取得する カテゴリ、シンボル、名前をタブ区切りで表示 複数のカテゴリがある場合は複数行で表記 カテゴリ名などは KEGG ファイルから取得する KEGG ファイルは1日1回更新する (以下はわかりやすくするためにタブを揃えているが、本当はタブは1つ) > mo_kno_name.sh K00001 09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeogenesis [PATH:ko00010] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09101 Carbohydrate metabolism 00620 Pyruvate metabolism [PATH:ko00620] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09103 Lipid metabolism 00071 Fatty acid degradation [PATH:ko00071] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09105 Amino acid metabolism 00350 Tyrosine metabolism [PATH:ko00350] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09108 Metabolism of cofactors and vitamins 00830 Retinol metabolism [PATH:ko00830] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09111 Xenobiotics biodegradation and metabolism 00625 Chloroalkane and chloroalkene degradation [PATH:ko00625] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09111 Xenobiotics biodegradation and metabolism 00626 Naphthalene degradation [PATH:ko00626] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09111 Xenobiotics biodegradation and metabolism 00980 Metabolism of xenobiotics by cytochrome P450 [PATH:ko00980] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] 09100 Metabolism 09111 Xenobiotics biodegradation and metabolism 00982 Drug metabolism - cytochrome P450 [PATH:ko00982] E1.1.1.1, adh alcohol dehydrogenase [EC:1.1.1.1] * mo_genome_function.sh File style ---------- MGA_3|NED1_00020 K06925 ... ---------- or ---------- YTPLAS18_00010 K02313 ... ---------- 指定されたファイルを元に K ナンバーのカテゴリや名前、 EC 経路を表記し、各ゲノムがその K ナンバーを持っているかどうかの一覧を作る ${FILE}_genome_function.tsv と言うファイルに出力する 表計算ソフトで開ける > mo_genome_function.sh ./user_ko.txt user_ko_genome_function.tsv ${FILE}_genome_function.xls と言うファイルも出力するが 中身は実は HTML。開く時何か言われるけど無視して開ける。 EC や K ナンバーがリンクになっててクリックすると KEGG の Web ページが開ける 重複する K ナンバーがある場合、-1 オプションをつけると最初のものだけを表示する 重複する K ナンバーすべて表示 > mo_genome_function.sh ./user_ko.txt 重複する K ナンバーの最初の1つだけを表示 > mo_genome_function.sh -1 ./user_ko.txt [FIXME] KEGG の Web ページは EC 番号をふって無い K ナンバーも EC として認識するけど、KEGG ファイル自体はふって無い このスクリプトはそれを考慮できない 時間が経てば解決する問題かも? * mo_ec_to_kno.sh EC 番号を入れると、必要な K ナンバーの一覧を返す > mo_ec_to_kno 2.2.1.2 K00616 K13810 * mo_ec_pass.sh 指定された EC を通れるかどうかを示す. OK/NG で表記した後、根拠も示す オプションで指定する場合 > mo_ec_passh.sh user_ko.txt 2.2.1.2 OK : 2.2.1.2 ... 複数の EC を経由する場合は "-" でつなげる > mo_ec_passh.sh user_ko.txt 4.4.1.22-1.1.1.284-3.1.2.12 NG : 4.4.1.22-1.1.1.284-3.1.2.12 ... スペースで区切る事で、複数の経路を同時に指定もできる > mo_ec_passh.sh user_ko.txt 2.2.1.2 4.4.1.22-1.1.1.284-3.1.2.12 分かりやすくファイルに落としておいて、-f で指定もできる --- Formaldehyde_to_Formate --- 1.2.1.46 4.4.1.22-1.1.1.284-3.1.2.12 ------------------------------- > mo_ec_passh.sh user_ko.txt -f Formaldehyde_to_Formate NG : 1.2.1.46 NG : 4.4.1.22-1.1.1.284-3.1.2.12 .... KEGG ファイルには EC が付いてないものの、KEGG の Web ページでは (なぜか)EC に含まれる K ナンバーも対象に入れたい場合、 mo_ec_pass.conf ファイルを作成すると追加できる ---- mo_ec_pass.conf ---- 1.14.13.25:K16160,K16162 ... ------------------------- この場合、結果には(custom) と表示される > mo_ec_passh.sh user_ko.txt -f GenomeX_to_GenomeY NG : w.x.y.z OK : a.b.c.d-1.14.13.25 (custom) .... * mo_add_prefix_to_file.sh mo_add_prefix_to_file PREFIX FILES PREFIX: 頭につけるプレフィックス FILES: プレフィックスをつけるファイル群 > ls Bin_Bin_0.faa Bin_MAXBIN__017_sub_1.faa Bin_METABAT__100.faa ... Bin_Bin_24_sub_1.faa Bin_MAXBIN__017_sub_2.faa Bin_METABAT__101.faa ... Bin_Bin_41_sub.faa Bin_MAXBIN__018_2.faa Bin_METABAT__102.faa ... ... 指定されたファイルにプレフィックスと連番をつける 上記のファイル群の頭に「LAS_xxx-」と言うプレフィックスをつける場合 > mo_add_prefix_to_file.sh LAS ./*.faa > ls LAS_000-Bin_Bin_0.faa LAS_000-Bin_MAXBIN__017_sub_1.faa ... LAS_0xx-Bin_Bin_24_sub_1.faa LAS_0xx-Bin_MAXBIN__017_sub_2.faa ... LAS_0xx-Bin_Bin_41_sub.faa LAS_0xx-Bin_MAXBIN__018_2.faa ... ... * mo_stream_dfast.sh 指定されたファイルを順番に dfast にかける この時、ファイルのプレフィックスを --locus_tag_prefix に使用する mo_add_prefix_to_file.sh を使用している事を想定 > ls LAS_000-Bin_Bin_0.faa LAS_000-Bin_MAXBIN__017_sub_1.faa ... LAS_0xx-Bin_Bin_24_sub_1.faa LAS_0xx-Bin_MAXBIN__017_sub_2.faa ... LAS_0xx-Bin_Bin_41_sub.faa LAS_0xx-Bin_MAXBIN__018_2.faa ... > mo_stream_dfast.sh ./*.faa LAS_000-Bin_Bin_0.faa ^^^^^^^ これが使用される * mo_dfast_statistics_rna_table.sh DFAST の出力 *.fa の「statistics.txt」「rna.fna」を表にする *.fa のある場所で実行すると dfast_statistics_rna_table.xls に出力する > cd DFAST_OUT > ls aaa.fa bbb.fa ccc.fa ... > mo_dfast_statistics_rna_table.sh > ls dfast_statistics_rna_table.xls