ex801 - nibb-gitc/gitc2021mar-rnaseq GitHub Wiki

ex801 Functional annotation using similarity-based methods

挔習801: ホモロゞヌ怜玢を甚いた機胜アノテヌション

ここでは、近瞁皮のモデル生物で、良質のアノテヌションが぀いたゲノムデヌタが利甚可胜であるケヌスを想定しお、ホモロゞヌ怜玢等を甚いおアノテヌションを行っおみる。䜿甚するデヌタは、酵母 Saccharomyces eubayanus のトランスクリプトヌムデヌタ( GEO accesion: GSE133146 )である。この酵母は、ラガヌビヌルの生産に䜿われる酵母 S. pastorianus の祖先皮の䞀぀で、S. pastorianus はこの酵母ずS. cerevisiaeのハむブリッドによっお成立したずされおおり、その起源に迫るこずが元の研究の目的ずなっおいる。この研究ではハむブリッドした祖先皮に近いず考えられるS. eubayanusのヒマラダ株を察象ずしお、そのゲノムシヌケンスも行っおいるが、ここでは公開されおいる別株のゲノムを甚いおマッピングし、䞻に S. cerevisiae ずの比范に基づいおアノテヌションを行うずいう想定で解析を行っおみよう。なお、ここではアノテヌションたでを行い、それに基づく゚ンリッチメント解析は挔習803で行う。

デヌタ

bias5で䜜業する。 ディレクトリ~/gitc/data/IU/yeastに、以䞋のファむルがある。

file contents remarks
seub_genome.fa S. eubayanus ゲノム配列 入力デヌタ
stringtie_merged.gtf stringtieによるアセンブル結果 入力デヌタ
topTags.gene.txt EdgeRの結果トランスクリプトレベル 入力デヌタ挔習803で甚いる
topTags.gene.txt EdgeRの結果遺䌝子レベル 入力デヌタ挔習803で甚いる
seub_genes.pep S. eubayanus 遺䌝子翻蚳配列 䞭間結果
seub_genes6.pep S. eubayanus 遺䌝子翻蚳配列瞮小版 䞭間結果䞀郚
scer_prot.fa S. cerevisiae 遺䌝子翻蚳配列 公的デヌタから取埗
blastout.tab S. eub x S. cer BLAST結果 䞭間結果
seub_genes6.iprscan.tsv seub_genes6に察する InterProScan結果 出力結果䞀郚
seub_genes.emapper.annotations seub_genesに察するEggNOG-mapper結果 出力結果挔習803で甚いる

状況ずしおは、ゲノム配列に察しおRNA-seqリヌドをマッピングしおゲノムベヌスでアセンブルし、トランスクリプトごずに頻床をカりントしお、EdgeRで有意な発珟倉動を瀺すトランスクリプト遺䌝子を抜出するずころたでが終わっおいるこずを想定しおいる。すなわち、初期状態ずしお最初の぀のファむルが存圚しおおり、これからアノテヌションをおこなっおいく。途䞭の過皋をスキップできるように、いく぀か䞭間結果のファむルも眮いおある。これらを䞊曞きしないように、別のディレクトリを䜜成しお、そこにファむルをコピヌしお䜜業するこずを勧める。

% cd ~/gitc/data/IU/
% mkdir ex1
% cp yeast/* ex1
% cd ex1

Step 1: トランスクリプト配列の䜜成

stringtieでは、トランスクリプトの座暙を蚘録したGTFファむルを䜜成するが、配列ファむルは䜜成しないので、たずこのGTFファむルずゲノム配列からトランスクリプト配列を䜜成する必芁がある。これはgffreadコマンドで行う。

% gffread stringtie_merged.gtf -g seub_genome.fa -w seub_transcripts.fa

Step 2: コヌド領域(CDS)の掚定ず翻蚳配列の䜜成 (講矩ではスキップする予定)

䜜成したトランスクリプト配列からCDSを掚定する。これは、TransDecoderを甚いお行うが、長いORFを抜出する段階ず、そこからCDSを掚定する段階の段階で行う。

% TransDecoder.LongOrfs -t seub_transcripts.fa
% TransDecoder.Predict -t seub_transcripts.fa --single_best_only --cpu 8

デフォルトでは、䞀぀のトランスクリプト䞭に重耇しない耇数のCDSが同定された際は、それらを耇数のCDSずしお出力するが、埌凊理がやや面倒になるので、ここではそういった堎合には䞀぀のCDSのみを出力するオプションを指定しおいる。

出力結果ずしお、seub_transcripts.fa.trandecoder.pep アミノ酞配列のほか、ファむル名のサフィックスが .cds 塩基配列および .gff3トランスクリプト䞭のCDSの座暙の぀のファむルが䜜成される。アミノ酞配列ファむルをこの埌の解析に甚いるが、遺䌝子名が、元のGTFファむル䞭のtranscript_idから少し倉わっおいる。

>DI49_1142.p1 GENE.DI49_1142~~DI49_1142.p1  ORF type:complete len:236 (-),score=50.10 DI49_1142:234-941(-)
MLPLIASRNRRPISLTIRKLFRTMSIVKGKPEEAKIVEARHVKDTSDCKWIGLQKIIYKD
PNGNEREWDSAVRTTRNSGGVDGIGILTILKYKDGKPDEILLQKQFRPPVEGVCIEMPAG
LIDAGEDVDTAALRELKEETGYKGKIISKSPTVFNDPGFTNTNLCLVTVEVDMSLPENQK
PVTQLEDNEFIECFSVELHKFPDEMVKLDQQGYKLDARVQNVAQGILMAKQYNIQ*

これは埌々問題になるので、元のtranscript_idに名前を戻しおしたおう先に--single_best_onlyを指定しお䞀察䞀察応が぀くようにしおいるので、これが可胜になっおいる。これは、seqkit の文字列眮換コマンド(replace)を甚いお以䞋のようにしお行える。

seqkit replace -p '\.p[0-9] ' -r ' ' seub_genes.fa.transdecoder.pep | sed 's/\*//' > seub_genes.pep

なお、元の配列ファむルはアミノ酞配列の末尟にストップコドンの存圚を瀺す*が入っおいるが、゜フトりェアによっおはこれが問題になるこずがあるので、䜵せお sed コマンドを甚いおこれを陀去しおいる。加工埌は、以䞋のようになる。

>DI49_1142 Gene.6155::DI49_1142::g.6155  ORF type:complete len:236 (-) DI49_1142:234-941(-)
MLPLIASRNRRPISLTIRKLFRTMSIVKGKPEEAKIVEARHVKDTSDCKWIGLQKIIYKD
PNGNEREWDSAVRTTRNSGGVDGIGILTILKYKDGKPDEILLQKQFRPPVEGVCIEMPAG
LIDAGEDVDTAALRELKEETGYKGKIISKSPTVFNDPGFTNTNLCLVTVEVDMSLPENQK
PVTQLEDNEFIECFSVELHKFPDEMVKLDQQGYKLDARVQNVAQGILMAKQYNIQ

Step 3: BLASTを甚いたホモロゞヌ怜玢 (講矩ではスキップする予定)

前ステップで䜜成したアミノ酞配列 seub_genes.pep を甚いお、S. cerevisiaeゲノムのアミノ酞配列 scer_prot.fa ず、BLASTによる総圓たりのホモロゞヌ怜玢を行う(これらの配列ファむルは、䞊蚘デヌタディレクトリ䞊に眮いおある)。

たず、scer_prot.fa をもずに、BLAST怜玢甚デヌタベヌスを䜜成する。

% makeblastdb -in scer_prot.fa -dbtype prot -parse_seqids -out scer

結果ずしお、scerで始たる耇数のファむルが䜜成される。これを甚いおBLAST怜玢を実行する。

% blastp -query seub_genes.pep -db scer -evalue 0.001 -outfmt "6 std stitle" -max_target_seqs 10 -num_threads 8 > blastout.tab

Step 4: BLAST結果からベストヒット関係の抜出

前ステップで䜜成したBLAST怜玢結果から、各ク゚リ配列に぀きスコアが最高のヒットベストヒットひず぀だけを抜出する。これは、元の怜玢結果が、予めク゚リ配列ごずにスコア順に䞊んでいるこずを前提ずしお、sortコマンドのstable option (-s)ずunique option (-u) を甚いるこずで、元の順序を維持し぀぀ク゚リ配列ごずに最初の䞀぀のヒットのみを出力するこずで実珟しおいる。

% sort -s -k 1,1 -u blastout.tab > blast_top.tab

オヌ゜ログ同定においおは、ペアワむズのゲノム比范においお、䞀方向のベストヒットだけでなく、双方向のベストヒットを確認するこずで、その粟床を高めるこずができる。これを行うため、たず逆方向のベストヒットを抜出する。デヌタベヌス配列(S. cerevisiae)ごずのスコア順に䞊べ替え、前コマンドず同様にしおナニヌクな配列を抜出する。

% sort -s -k 2,2 -k 11,11g -k 12,12nr blastout.tab | sort -s -k 2,2 -u > blast_top_rev.tab

その埌、䞡方向のベストヒットを合わせお゜ヌトし、重耇した行を出力する(uniq -d)。これにより、双方向のベストヒットが抜出される。

% sort blast_top.tab blast_top_rev.tab | uniq -d > blast_bbh.tab

Step 5: DIAMONDを甚いたホモロゞヌ怜玢オプショナルだが、講矩ではこちらを実斜する

DIAMONDは、BLASTず比べお粟床はやや萜ちるが、圧倒的に高速であるこずから、倧芏暡な怜玢においお広く甚いられおいるツヌルである。䜿い方はBLASTずよく䌌おいるが、各コマンドはdiamondのサブコマンドずしお呌び出すこず、およびオプションの指定がハむフン぀になるずころが異なるので泚意する。番目のコマンドは長いので暪スクロヌルしお党䜓を確認するこず。なお、diamondではデフォルトでevalueの閟倀が0.001なので、そのたたでよければ--evalue オプションは省略可胜である。

% diamond makedb --in scer_prot.fa --db scer
% diamond blastp --query seub_genes.pep --db scer --max-target-seqs 10 --outfmt 6 qseqid sseqid pident evalue bitscore stitle --threads 4 --out diamondout.tab

远加課題䞊蚘を実行するず、diamondout.tabずいう結果ファむルができる。この結果を甚いお、前項ず同様にベストヒット、および双方向ベストヒットを抜出せよ。BLAST怜玢の時ず比べお出力カラムを枛らしおいるので、カラム䜍眮がずれおいる点に泚意せよ。

Step 6: InterProScan を甚いたモチヌフドメむン怜玢オプショナル。講矩ではスキップする予定

モチヌフドメむン怜玢は、機胜掚定のためのより詳现な手がかりをうる手段ずしお、ホモロゞヌ怜玢ず䜵せお実斜されるこずが倚い。InterProScanは、䞀぀のコマンドで倚岐にわたるデヌタベヌスを䞀床に怜玢できるツヌルずしお広く甚いられおいる。怜玢には時間がかかるため、詊しおみる堎合は、ク゚リ配列のごく䞀郚を抜出した瞮小版seub_genes6.pepを甚いるこず。なお、InterProScan はbias5䞊ではモゞュヌルで管理されおいるので、パスが通っおいない堎合はmodule addコマンドでロヌドする。

% module add interproscan
% interproscan.sh -i seub_genes6.pep -b seub_genes6 -goterms -pa --cpu 4

結果はseub.genes6.iprscanで始たるいく぀かのファむルずしお出力される。このうち、seub.genes6.iprscan.tsvは䞊蚘ディレクトリ䞊に眮いおある。

Step 7: EggNOG mapperを甚いたオヌ゜ログ怜玢

EggNOG mapperは、あらかじめ䜜成したオヌ゜ロググルヌプず系統暹の情報を甚いおク゚リ配列のオヌ゜ログを同定し、それに基づいおアノテヌションづけするツヌルである。怜玢゚ンゞンにはDIAMONDを甚いおいるが、デヌタベヌスが倧きいために怜玢には時間がかかる。詊しおみる堎合は、瞮小版のseub_genes6.pepを甚いるこず。

% emapper.py -i seub_genes6.pep -o seub_genes6 -m diamond --cpu 6

配列党䜓に察しお実行した結果は seub_genes.emapper.annotaionsずしお眮いおあるので、これを甚いおテキスト蚘述およびGOリストを抜出する。

% cut -f1,8 seub_genes.emapper.annotations | grep -v ^# > seub_genes.emapper.tit
% cut -f1,13 seub_genes.emapper.annotations | grep -v ^# > seub_genes.emapper.go

発展課題クラスタヌ蚈算機を甚いた倧量怜玢の高速実行

ク゚リを分割しお䞊列に実行するこずで怜玢速床を䞊げるこずができる。実際に配列党䜓に察しお実行しおみたい人は、配列を分割しおBIASのクラスタヌシステムを甚いお実行しおみよう。配列を分割するためのコマンドsplit_seq.plが甚意しおあるので、これを実行する。-BLOCK_SIZEオプションで、分割の単䜍ずなる配列長の総和を指定する。

% split_seq.pl -BLOCK_SIZE=10000 seub_genes.pep

分割された配列ファむルは、query_seub_genesずいうディレクトリに栌玍される(この堎合、300個皋床のファむルに分割される)。䜵せお、qsub_blast.sh ずいうファむルが䜜成されるので、末尟にあるコマンド矀のうち、blastp をコメントアりトし、emapperのコメントを倖す。同様に、他のコマンドもコメントを倖すこずにより実行できるが、blast, diamondに぀いおは、この䞊で蚭定されるDB倉数に適切な名前ここではscerを入れる必芁がある

#blastp -db $DB -query $INFILE -out $RESULT_OUT_DIR/blastp_$OUTFILE -num_threads $NCPUS -outfmt 6 -evalue 0.001
#diamond blastp --db $DB --query $INFILE --out $RESULT_OUT_DIR/diamond_$OUTFILE --threads $NCPUS 
emapper.py -m diamond --no_annot --no_file_comments -i $INFILE -o $RESULT_OUT_DIR/emapper_$OUTFILE --cpu $NCPUS
#interproscan.sh -goterms -pa -i $INFILE -b $RESULT_OUT_DIR/iprscan_$OUTFILE -cpu $NCPUS

以䞋のコマンドで実行する。

% qsub qsub_blast.sh

実行状況は、qstat -u ナヌザ名で確認できる-uを぀けないず党員分が衚瀺される。䜕も衚瀺されなくなるず、実行は終わっおいる。あたりに早く終了する堎合は、倱敗しおいる可胜性が高いので、カレントディレクトリに䜜成されるblastjob.e#### ずいうファむルに実行したコマンドの暙準゚ラヌ出力が蚘録されおいるので、これを参照しお察凊するこず。

実行が無事に終了するず、分割したク゚リ配列ごずの怜玢結果がoutput_seub_genesディレクトリの䞋に栌玍される。この䞋のファむルをcat コマンドでたずめおカレントディレクトリにコピヌする。EggNOG mapperの堎合、この段階ではseed ortholog の怜玢のみが終わっおいる(オプションに--no_annotを指定したため)ので、この結果をもずに再床emapperを実行しお、アノテヌションづけを行う。

% cat output_seub_genes/*.seed_orthologs > input.emapper.seed_orthologs
% emapper.py --annotate_hits_table input.emapper.seed_orthologs --no_file_comments -o seub_genes --cpu 10

結果はseub_genes.emapper.annotationsずいうファむルずしお䜜成される。