2014年度 京都工芸繊維大学 遺伝子資源学実習および演習 バイオインフォマティクス基礎編 『高速シーケンサーの大規模データをもちいる遺伝子発現解析実習および演習』 担当者 北島 佐紀人 (京都工芸繊維大学 応用生物学部門) ver. 2014.09.11 初めに この文書は、京都工芸繊維大学で開催される大学院講義”遺伝子資源学実習および演習”(開催日 2014 年 9 月 10 日~12 日)の一部で使用するテキストである。このテキストがカバーする実習では、次世代シーケンサーあるい は高速シーケンサーと呼ばれる装置から出力される膨大な数の塩基配列をとりあつかうためのバイオインフォマティク ス的スキルの取得を目指す。モデルケースとして取り上げたのは mRNA-seq と呼ばれる解析手法で、この方法ではど のような遺伝子が発現しているかを網羅的にしらべる。バイオ解析ツールの使い方だけでなく、Linux のコマンドとシェ ルスクリプトの初歩についても学べると思う。 この実習の担当教員でテキストの筆者である北島は、バイオインフォマティクスあるいはコンピュータプログラミング の専門家ではない。ここに書いたことを筆者自身が学ぶ過程では、各ツールの説明書だけでなく、インターネット上で 見つけた多くの研究者と大学院生の講習テキストあるいはブログが役立った。簡単な内容だが、筆者と同じように勉強 中の人々にとって少しでも参考にもなればと思い、このテキストを当分の間インターネットで閲覧できるようにしておく。 テキスト中の間違いなどに関して、もし情報をご提供いただける方がいらっしゃったら、以下までご連絡ください。 北島佐紀人 Email; sakito あとまーく kit.ac.jp(あとまーくは@) 研究室ブログ;http://ameblo.jp/shokubutsu-bunshi-kit/ 1 1. Bio-Linux 8 と解析ツールの準備 (1-1) Bio-Linux 8 の準備 Bio-Linux 8 は、Linux の一種”Ubuntu 14.04 LTS”をベースにして、これに各種バイオ解析ツール群を組み込んだも のだ。無償で入手できるので、だれでも手元の PC にインストールして自由にバイオ解析をできる。インストールするに は、Bio-Linux 8 のサイト( http://environmentalomics.org/bio-linux/ )から Bio-Linux 8 の ISO ファイルをダウンロー ドして、imgBurn というソフトで DVD に焼いた後、PC をその DVD から起動すれば、後はボタンを押していくだけよい。 使用言語に日本語を選べば、日本語を入力できるようになる。バイオ解析ツール以外の各種アプリの使用方法あるい は OS の設定方法は、ubuntu に関する情報が役に立つ。ウィンドウシステムの操作方法は、Windows とよく似ている ので、すぐ分かると思う。画面左にアイコンが並んでいるが、これは Windows のタスクバーに相当するもので、Ubuntu ではランチャーと呼んでいる。ファイルマネージャと、この実習で使うアプリのいくつかは、すでにここに登録されている。 ここに登録されていないアプリの起動方法は独特なので、ここで説明しておく。ランチャーの一番上に見えているアイ コン(”コンピューターとオンラインリソースを検索”)をクリックすると検索窓が現れるので、ここに、キーワードを入力す る。例えば”エディタ”と入力すると、図のように”テキストエディター”というアイコンが現れる。これをクリックすれば起動 する。ランチャーに登録しておくことも可能だ。 ブラウザで以下のリンク先を見ると、Bio-Linux 8 にはどんなバイオ解析ツールがインストールしてあるのか分かる。 http://environmentalomics.org/bio-linux-software-list/ 本実習では、これらに加えて sratoolkit、Trinity、velvet および oases というツールを使用する。解析に先立って、まず はこれらを自分でインストールしてみよう。 2 (1-2) sratoolkit のインストール ブラウザで http://www.ncbi.nlm.nih.gov/Traces/sra/?view=software にアクセスする。ホームページを見ると NCBI SRA Toolkit の“Ubuntu Linux 64 bit architecture”というリンクがあるので、これをクリックすると”ダウンロード”という名 前のフォルダに圧縮ファイルがダウンロードされる。これを選んで右クリックすると、”ここに展開する”という項目が現れ るので、それを選ぶ。 展開されて出来たディレクトリ"sratoolkit.2.3.5-2-ubuntu64”は、すきな場所に置いて差し支え ないが、今回は、ホームディレクトリに"_Tools”というディレクトリを新規に作成して、その中に置いておく。ついでにディ レクトリ名を”sratoolkit”と変更しておく。方法は、Windows の場合と似ているので、説明は必要ないと思う。 (1-3) Trinity のインストール Trinity のホームページ(http://trinityrnaseq.sourceforge.net/)にアクセスする。ホームページを少し下にスクロールす ると Downloading と書いたリンクがあるので、これをクリックして、最新版(このテキスト執筆時点 で”trinityrnaseq_r20140717.tar.gz”という名前のファイル)をダウンロードする。”ダウンロード”ディレクトリに圧縮ファイ ルがダウンロードされる。上と同様に展開し、出来た"trinityrnaseq_r20140717”ディレクト リを"_Tools”ディレクトリの中に置き、ついでにディレクトリ名を”trinityrnaseq”と変更する。 ここから先は、Linux に不慣れなひとには少々ややこしい。まず、端末という名前のアプリ を起動して、cd コマンドで Trinity のディレクトリに移動する。以下に示す青色の部分が 自分でタイプするところだ。いちいち手打ちしなくても、このテキストからコピペすればよ い。ただし、重大な注意点がある。通常のペーストのショートカットキーは Windows の場合と同じ control + p だが、端 末の中に限っては conrol + shift + p だ。ついでに書いておくと、端末に表示されている文字列をコピーする場合は、 control + shift + c とタイプする。間違って conrol + c とすると、実行中の処理が強制的に終了する。間違えそうで心 配なら、マウスの右クリックメニューを使えばよい。 kitajima@kitajima[kitajima] cd _Tools/trinityrnaseq 入力したらエンターキーをおす。すると、[ ]の中が変わって trinityrnaseq となったはずだ。 kitajima@kitajima[trinityrnaseq] これで、カレントディレクトリが、ホームディレクトリ(最初にいたところ)の下の、_Tools というディレクトリの下の、 trinityrnaseq になった。試しに、”ls” (エルエス)とタイプしてみると、このディレクトリ内のファイル一覧を表示する。 kitajima@kitajima[trinityrnaseq] ls Analysis docs Inchworm notes Release.Notes trinity-plugins Butterfly galaxy-plugin LICENSE.txt PerlLib sample_data util 3 Chrysalis htc_conf Makefile README Trinity ファイルマネージャでも同じディレクトリの中身を観ることができるので、たしかにこのディレクトリを表示させていること が確認できる。次に、”make”とタイプすると、このディレクトリの Makefile という名前のファイルの内容に従ってインスト ールが始まる。待つこと数分。 kitajima@kitajima[trinityrnaseq] make Using gnu compiler for Inchworm and Chrysalis cd Inchworm && (test -e configure || autoreconf) \ && ./configure --prefix=`pwd` && make install (中略) JellyFish: Inchworm: Chrysalis: has been Installed Properly has been Installed Properly has been Installed Properly QuantifyGraph: GraphFromFasta: ReadsToTranscripts: fastool: parafly: slclust: collectl: has been Installed Properly has been Installed Properly has been Installed Properly has been Installed Properly has been Installed Properly has been Installed Properly has been Installed Properly kitajima@kitajima-BioLinux[trinityrnaseq] と表示され、元の入力待ち状態になれば完了。試しに、”perl Trinity”とタイプしてみると、下のように表示されるはず だ。 kitajima@kitajima[trinityrnaseq] perl Trinity ############################################################################### # # ______ ____ ____ ____ ____ ______ __ __ # # # | || \ | || \ | || || | | | || D ) | | | _ | | | | || | | |_| |_|| / | | | | | | | |_| |_|| ~ | # # # | | | \ | | | | | | | | | |___, | | | | . \| || | || | | | | | |__| |__|\_||____||__|__||____| |__| |____/ (以下略) 4 ファイル”Trinity”は、アプリケーションではなく、perl というプログラミング言語のスクリプトなので、このようにタイプした (このファイルをテキストエディタで開いて、1 行めをみると perl スクリプトであることが分かる。)。最後に、次にようにタ イプしてスタックサイズの制限を解除する。これを忘れると計算中にエラーすることがあるそうだ。 kitajima@kitajima[trinityrnaseq] ulimit -s unlimited 余談だが、 ”cd ~”とタイプすると、カレントディレクトリがホームディレクトリに移る。ここで、同じように”perl Trinity”とタ イプするとエラーする。これは、カレントディレクトリであるホームディレクトリに Trinity というファイルがないためだ。 kitajima@kitajima[trinityrnaseq] cd ~ kitajima@kitajima[kitajima] perl Trinity Can't open perl script "Trinity": そのようなファイルやディレクトリはありません kitajima@kitajima[kitajima] しかし、ファイルの置いてあるディレクトリまで含めて指定するとうまく動く。 kitajima@kitajima[kitajima] perl ~/_Tools/trinityrnaseq/Trinity ############################################################################### # # # # ______ ____ ____ ____ ____ ______ __ __ | || \ | || \ | || || | | | || D ) | | | _ | | | | || | | # # # # |_| |_|| / | | | | | | | |_| |_|| ~ | | | | \ | | | | | | | | | |___, | | | | . \| || | || | | | | | |__| |__|\_||____||__|__||____| |__| |____/ (以下省略) “~”とは、ホームディレクトリを意味する記号だ。したがって、”perl ~/_Tools/trinityrnaseq/Trinity”は、perl はホームデ ィレクトリの下の_Tools ディレクトリの下の trinityrnaseq ディレクトリの下の Trinity というファイルを実行せよ、という意味 になる。このように目的のファイルまでの道筋(”パス”と呼ぶ)を毎回指定するのは面倒なので、あらかじめ OS にホー ムディレクトリからのパスを登録しておくことも可能だが、それも面倒なので今回は省略する。方法を知りたいひと は、”Linux, パスを通す方法”というようなキーワードでググってみるとよい。なお、このファイルが perl 等により実行可 能なスクリプトである、と OS 側に認識されている場合は、冒頭の”perl “を省略しても動作する。 (1-4) velvet と Oases のインストール 5 velvet と Oases はすでに Bio-Linux 8 にインストールされているので、これらを使ってもよい。しかし、k-mer というオプ ションの値の上限が 31 に設定されている。k-mer の値は、実際にはもっと大きな値に設定して使うことになるので、上 限値を上げるためにインストールから自分でやることにする。velvet と Oases はそれぞれ以下のホームページからダウ ンロードする。 https://www.ebi.ac.uk/~zerbino/velvet/ http://www.ebi.ac.uk/~zerbino/oases/ Current version : xxxx というようなリンクがあるので、これをクリックすると、ダウンロードディレクトリに圧縮ファイルがダ ウンロードされる。このテキスト執筆時点で、それぞれのバージョンは 1.2.10 および 0.2.08 である。上と同様の方法で 展開したあと、ホームディレクトリの_Tools ディレクトリに移し、ディレクトリ名をそれぞれ”velvet”と”oases”と変更する。 まず、velvet をインストールする。以下のように、カレントディレクトリを velvet のディレクトリに変更して、make する。 make のあとに MAXKMERLENGTH=99 と付け加えるのは、k-mer の上限を 99 に設定するためだ。 kitajima@kitajima[velvet] cd ~/_Tools/velvet kitajima@kitajima[velvet] make MAXKMERLENGTH=99 以下のように表示されれば成功である。試しに”velveth -help”とでも入力すると実行されたのが確認できるはずだ。 kitajima@kitajima[velvet] make MAXKMERLENGTH=99 rm obj/*.o obj/dbg/*.o rm: `obj/*.o' を削除できません: そのようなファイルやディレクトリはありません rm: `obj/dbg/*.o' を削除できません: そのようなファイルやディレクトリはありません (中略) gcc -Wall -m64 -O3 -o velvetg obj/tightString.o obj/graph.o obj/run2.o obj/fibHeap.o obj/fib.o obj/concatenatedGraph.o obj/passageMarker.o obj/graphStats.o obj/correctedGraph.o obj/dfib.o obj/dfibHeap.o obj/recycleBin.o obj/readSet.o obj/binarySequences.o obj/shortReadPairs.o obj/scaffold.o obj/locallyCorrectedGraph.o obj/graphReConstruction.o obj/roadMap.o obj/preGraph.o obj/preGraphConstruction.o obj/concatenatedPreGraph.o obj/readCoherentGraph.o obj/utility.o obj/kmer.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o -lz -lm kitajima@kitajima[velvet] 次に、oases をインストールする。カレントディレクトリを oases に変更し、以下のようにして make する。 kitajima@kitajima[kitajima] cd ~/_Tools/oases kitajima@kitajima[oases] make 'VELVET_DIR=/home/kitajima/_Tools/velvet' 'MAXKMERLENGTH=99' 6 'VELVET_DIR=/home/kitajima/_Tools/velvet'は velvet の置 き場所を示している。/home/kitajima の部分は”~”と同じ意 味なので、~/_Tools/velvet と書いても良さそうに思えるが、 oases のマニュアルに、~はダメ、と書いてある。kitajima の部 分は、ユーザーごとに違うので書き換えないといけない。ファ イルマネジャーで velvet のディレクトリを選び、右クリックで” プロパティ”を選ぶと、ユーザーそれぞれの場合のパスが表 示されるので、それをコピペすればよい。 'MAXKMERLENGTH=99'は、k-mer の上限値を 99 にするよ う指定している。 以下のように表示されれば成功である。 (前略) Output written on OasesManual.pdf (10 pages, 116747 bytes). Transcript written on OasesManual.log. mv *.pdf ../../ make[2]: ディレクトリ `/home/kitajima/_Tools/oases/doc/manual' から出ます make[1]: ディレクトリ `/home/kitajima/_Tools/oases/doc' から出ます kitajima@kitajima[oases] 試しに”~/_Tools/oases/oases --help”とでも入力すると実行されたのが確認できるはずだ。 kitajima@kitajima[oases] ~/_Tools/oases/oases --help Usage: ./oases directory [options] (中略) -degree_cutoff <integer> : Maximum allowed degree on either end of a contigg to consider it 'unique' (default: 3) Output: directory/transcripts.fa directory/contig-ordering.txt kitajima@kitajima[oases] 7 Trinity のところでも述べたように、それぞれのツールのディレクトリがカレントディレクトリである場合をのぞけば、実行 ファイルの置き場所をディレクトリから示してあげないと実行できない。例えば、velveth を実行するな ら、”~/_Tools/velvet/velveth”とタイプする。(しかし、カレントディレクトリが oases の時に単純に oases --help とタイプ すると、そんなコマンド知らないよ、みたいなエラーが出た。理由はしらない。) (1-5) ついでに、OS と各種アプリのアップデートもしておこう。本来、Bio-Linux 8 をインストールしたら最初にやるべき ことだが、順番が逆になった。端末に順に、”sudo apt-get update”、”sudo apt-get upgrade”とタイプすればよい。パス ワードを求められたらログインパスワードを入力する。完了まで少々時間がかかる。 8 2. 非モデル生物の mRNA-seq 解析 (2-1) データの準備 高速シーケンサーを使うと、ある生物サンプルから得た mRNA プールの逆転写物を適当なサイズに断片化して、それ らを同時に網羅的にシーケンシングすることができる。illumina 社のいわゆるショートリードの高速シーケンサーの場合、 得られる1本1本の配列データ(“リード”と呼ぶ)は 50~百数十塩基長と短い(しかし新機種がリリースされるごとにだん だん長くなっている)が、それが数百万あるいは数千万本も得られる。この配列データを用いて発現解析をする原理 は、おおまかには次のようなものだ。それぞれのリードをゲノム配列あるいは mRNA データベースと比較して、各リード がどの遺伝子あるいは mRNA に一致するか = 由来するか、を調べる。多数のリードが一致した遺伝子あるいは mRNA は発現レベルが高く、逆にほとんどリードが見つからない場合は発現レベルが低いと考えられる。このような解 析を mRNA-seq と呼んでいる。 しかし、非モデル生物のような研究事例が少ない生物の場合には、取得したリードを比較すべき配列データベースが ないかもしれない。この場合には、取得したリード自身をもちいて mRNA データベースを作成し、それと各リードを比 較する、という方法を取らざるを得ない。本実習の趣 旨は、”遺伝資源の研究や利用に必要とされる知識と 技術を修得する”ことなので、多様な生物を扱うことを 想定して、まずは非モデル生物のケースを学んでみ る。 例として、テッポウユリ(Lilium longisporum)の mRNAseq を行う。NCBI の SRA データベースに登録されて いるアクセッション No. ERX234895 (http://www.ncbi.nlm.nih.gov/sra/ERX234895 )にア クセスする。説明文によると、テッポウユリの花粉より mRNA を抽出して cDNA とし、それらを約 300bp の 長さに断片化し、Illumina 社の高速シーケンサー HiSeq 2000 を用いて、paired end で配列を読んだ、とのことである。Paired end とは、1 本の DNA 断片の両端から読 む解析手法である。このシーケンサーの場合は、それぞれの端から 100 塩基ずつ読むことができる。 テッポウユリのゲノム配列は登録されていないので、ERX234895 に含まれている 100 塩基長のリードが何の遺伝子に 由来するのかわからない。そこで、まずはこれら 100 塩基長のリード群を互いに比較して、配列の一致する部分を頼り につなぎあわせていくことにする。この作業を”de novo アッセンブリー”と呼び、出来上がったそれぞれの配列を”コン ティグ”と呼ぶ。信頼性の問題は大いにあるものの、作製されたコンティグ = 推定 mRNA 配列と考える。今回は省略す るが、これら推定 mRNA 配列を BLAST 検索すれば、どのようなタンパク質をコードしているか、さらにはその機能も推 9 定できる。次に、こうして出来上がった推定 mRNA 配列のそれぞれに対して、配列の一致するリードを張り付けていく。 この作業を"マッピング”、リードを貼り付けられる配列(この場合は推定 mRNA)を”リファレンス配列”と呼ぶ。張り付い たリードの数が多い推定 mRNA は、発現量が多い、 ということになる。 では、実際にやってみよう。ホームページ左下の表 の Size というカラムにファイルサイズが書いてある。 これをクリックすると、ダウンロードページに移る。ファイル名をクリックすると、ダウンロードディレクトリ に”ERR260307.sra”という名前のファイルが作成されるはずだ。とりあえず、このファイルを好きなディレクトリに移す。 今回は、大学のコンピューターシステムの事情により、~/work/<ユーザー名>に移す。例えば、筆者の場合はアカウン ト名 sakito なので、~/work/sakito だ。このテキストでは、これ以降ディレクトリ名あるいはコマンドの中に sakito という 文字が何度か出てくるが、この部分を各自のアカウント名に置き換えてタイプしなければならない。 (2-2) fastq 形式への変換 sra ファイルのままでは、解析ツールに読み込ませることはできない。そこで、sratoolkit に含まれている fastq-dump と いうツールを使って fastq 形式のファイルに変換する。fastq-dump は、sratoolkit ディレクトリの bin というディレクトリの 中にあるはずなので、確認してほしい。fastq に変換するには次のようにタイプすればよい。-O 以下は、出力先のディ レクトリを指定している。コマンド中の sakito と書いてあるところは、自分のアカウント名に差し替える。 (改行しているように見えるかも知れないが、右端で折り返しただけだ。Linux のひとつづきのコマンドの途中に改行が 入ることはない。) kitajima@kitajima[kitajima] ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/ERR260307.sra --split-files -O ~/work/sakito 末尾に付け加えた”--split-files”は、paired end のデータの場合に、ペア同士を別々のファイルに分けるよう指示して いる。フリーズしたのかと心配になりそうな状態になるが、しばらく待つと次のように表示される。 kitajima@kitajima[kitajima] ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/ERR260307.sra --split-files -O ~/work/sakito Read 29747244 spots for /home/manager/work/sakito/ERR260307.sra Written 29747244 spots for /home/manager/work/sakito/ERR260307.sra kitajima@kitajima[kitajima] ファイルマネージャでホームディレクトリをみると、ERR260307_1.fastq および ERR260307_2.fastq という2つのファイル ができているはずだ。それぞれが Paired end の右から読んだデータと左から読んだデータである(右とか左とか言うの は変だが、、、)。試しに ERR260307_1.fastq の中身を見てみよう。ファイルサイズが 9GB もあるので、ワープロソフトや 10 テキストエディタで開くのは止めた方がよい。代わりに、head コマンドで冒頭の 20 行だけ表示させてみる。”head -20 ファイル名”とタイプする。 kitajima@kitajima[kitajima] head -20 ~/work/sakito/ERR260307_1.fastq @ERR260307.1 FCD1CNUACXX:8:1101:1465:2041 length=90 NCGCACGGCCCTTGTGCCGGCGACGCATCATTCAAATATCTGCCCTATCAACTTTCGATGGTAGGATAG GGGCCTACCATGGTATTGACG +ERR260307.1 FCD1CNUACXX:8:1101:1465:2041 length=90 #1:BDDFFGHHGFJHIHIIIGIGIIAHIGHGHHHFD>CDFFBDCBC;ACDDDDDDDD?B@=@CC@CC:9??39;?3<A CDDC4:>>::@< @ERR260307.2 FCD1CNUACXX:8:1101:1437:2070 length=90 NCATCTCCGGCTATCTCACATTCACCACCAACTCCAGTGAGCTCACCTCCGCCATCAGTAGTTCAATCA TCTCCACCACAAAAGCATCAA +ERR260307.2 FCD1CNUACXX:8:1101:1437:2070 length=90 #1=DDFFFHHHHHJJJJIJJJJGIJJJJIJJJJIJJJGHIJJJJJIJGJGJFGIJJJIJGJHFHGHHCDFFFFFCCEDDDB?AA?CDD DC @ERR260307.3 FCD1CNUACXX:8:1101:1415:2076 length=90 NGGGCAGGGATGGTGAGGGCGCAGAGGAGGCGGCCGGGCTCGACGGTGTCGACGCGGAGGCCTTGGA GGACGAAAGCTTGGTGGAAGTTG +ERR260307.3 FCD1CNUACXX:8:1101:1415:2076 length=90 #1=DDDDFH?DHHCGDGHJ:GHHIBHICHIEHGEEDDD6=??8007&25><(0:8BB&5@<((+4>3?B############### ###### @ERR260307.4 FCD1CNUACXX:8:1101:1279:2158 length=90 NGCGGCGCGAACTTCTTGCCGGAGCACTCCTTGAGCATGGCCTCGAAGGACCGGGTGACGAACCCGCC AGCTGCGCCCGCCATGACCAGA +ERR260307.4 FCD1CNUACXX:8:1101:1279:2158 length=90 #1=DDDFFHHHHHIGIJIGIIIDHEAHIJJJGIGEHCEEDDFFFDACDDDDDDBB57<:<25@BDD5>;@BCA9<00<>B @-8@(43:AA @ERR260307.5 FCD1CNUACXX:8:1101:1318:2180 length=90 AATGCATTGACCAGGAAGAAGAGACGGCCATGGAGTCCGAGACCACCCGCCGCCAGCTCGCCGGAAGT ATCAGGTACATCAGCTACGCCG +ERR260307.5 FCD1CNUACXX:8:1101:1318:2180 length=90 CCCFFFFFHHHHHJJHIIJJIHGJJJJIJJJJJHIJJJJBIIJDIJJJIGFFFDDDDDDDDDBDB@>:@CADDC:>CCDCCC::>: >@B< kitajima@kitajima[kitajima] 少々見にくいが、fastq 形式のファイルでは 4 行で 1 つのリードのデータになっている。空白行はない。 @ERR260307.1 FCD1CNUACXX:8:1101:1465:2041 length=90 NCGCACGGCCCTTGTGCCGGCGACGCATCATTCAAATATCTGCCCTATCAACTTTCGATGGTAGG (以下 略) +ERR260307.1 FCD1CNUACXX:8:1101:1465:2041 length=90 #1:BDDFFGHHGFJHIHIIIGIGIIAHIGHGHHHFD>CDFFBDCBC;ACDDDDDDDD?B@=@CC@ (以下略) 11 1 行めは行頭が“@”、3 行めは行頭が”+”で、どちらもリードの名称が続く。2 行めは塩基配列で、4 行目では各塩基 の確からしさ(クオリティと呼ぶ)を記号で表している。4 行で1つのリードなので、このファイルの行数を数えて 4 で割れ ばリード数が分かる。”wc -l ファイル名”とタイプしてみる。wc はワードカウントのコマンドで、”-l”(エル)は行数を表示 させるオプションである。 kitajima@kitajima[kitajima] wc -l ~/work/sakito/ERR260307_1.fastq 118988976 ERR260307_1.fastq kitajima@kitajima[kitajima] 結果は 118988976 とのことなので、4 で割ると 29747244、つまりこのファイルには、29747244 本のリードがある。paired end なので、もう一方のファイル ERR260307_2.fastq にも同じ数のリードが含まれる。 シーケンサーが出力した生のデータの場合、リード配列にはアダプタ配列が含まれているが、公開データの場合はす でに除去済みだと思う。もし、自分でシーケンスして取得した生データの場合は、アダプタ配列を自分で除去しなけれ ばならない。 このような巨大データを使うと、この実習時間中に計算が終了しないので、今回は、最初の 30 万本のリードだけを取り 出して使うことにする。最初の 30 万本ということは、fastq ファイルなら最初の 120 万行ということになる。上でも使った head コマンドで ERR260307_1.fastq の冒頭の 1200000 行を取り出し、モニタに表示する代わりに、 ERR260307_short_1.fastq というファイルに書き込む。 kitajima@kitajima[kitajima] head -1200000 ~/work/sakito/ERR260307_1.fastq > ~/work/sakito/ERR260307_short_1.fastq kitajima@kitajima[kitajima] wc -l ~/work/sakito/ERR260307_short_1.fastq 1200000 ERR260307_short_1.fastq kitajima@kitajima[kitajima] “>”という記号は、この記号の前のコマンドの出力を次のファイルに書き込め、という意味である。wc -l で調べると ERR260307_short_1.fastq の行数は確かに 1200000 行である。ERR260307_2.fastq についても、同様に冒頭の 1200000 行を取り出して ERR260307_short_2.fastq に出力する。 kitajima@kitajima[kitajima] head -1200000 ~/work/sakito/ERR260307_2.fastq > ~/work/sakito/ERR260307_short_2.fastq kitajima@kitajima[kitajima] (2-3) de novo アセンブリ 12 de novo アセンブリを行うツールは数種類ある。日本語での解説ブログもあるのでググってみるとよい。illumina シーケ ンサーが出力する短いリードのアセンブリに筆者が使うのは velvet と trinity だが、一長一短だと感じている。Velvet は計算速度が速いが、スプライシングバリアントと称してよく似た配列を不自然なほどたくさん出力する。数うてば当た る、みたいな状態なのか、プロテオミクス解析のタンパク質データベースとして役に立っている。Trinity は、velvet に 比べるとスプライシングバリアントらしきものをあまり多く出力しないので出力結果が比較的すっきりしている。しかし、 計算パワーを要求するので、低スペックの PC で Trinity を使うのは実用的でないかもしれない。Velvet、Trinity とも、 DDBJ のサーバーで計算する無料サービスがある( https://p.ddbj.nig.ac.jp/pipeline/Login.do )ので、これを使うのも よい手だ。 参考までに述べると、サンガー法あるいは Roche 社の 454 高速シーケンサーで得られた数 100 塩基の長い塩基配 列を一緒に混ぜてアセンブルしたい場合もあるかもしれない(いわゆる hybrid assembly あるいは mixed assembly)。そ の場合は、Bio-Linux 8 に標準で組み込まれていないが、MIRA4、あるいは Roche 社が無料公開(2014.08.05 時点) している GS de novo assembler (中身は newbler というツール)というアセンブラが利用できる。ただし、長い配列向け の計算アルゴリズムを用いているため、Trinity 以上に計算パワーを要求する。自分の PC で実行すると 1 ヶ月待って も計算が終わらないかもしれない。Velvet も見かけ上は hybrid assembly のようなことをでき、しかも計算スピードも速 いが、計算に使用している de Bruijn graph というアルゴリズムがなんちゃららで厳密には長い配列をアセンブルしてい るとは言えないという話もあるようだ。アルゴリズムについては、以下のブログを見ると良い。 http://shortreadbrothers.blogspot.jp/2011/07/de-novo-transcriptome-454.html (2-3-1) Trinity による de novo アセンブリ Trinity は、実際には Jellyfish、Inchworm、Chrysalis、Butterfly という4つのプログラムを順に実行する。内部で bowtie というプログラムも使用している。各自のデータ形式と PC 環境に応じていくつかのオプションを指定する必要がある。 詳しくは説明書を読むとよいが、とりあえず以下のものがよくいじるオプションだ。 --seqType; 入力ファイル形式。今回は fastq 形式なので、fq と指定する。 --JM; Jellyfish プログラムが k-mer という変数の計算時に確保するメモリ領域。大きくし過ぎるとメモリ上のデー タがハードディスクに頻繁に退避するので計算速度が低下する。自分の PC に搭載されているメモリ量 に応じて変える必要がある。 --SS_lib_type; 今回は Paired end のデータを使用するので、FR と指定する。 --left および--right で、対になる 2 つの fastq ファイルをそれぞれ指定する。 --CPU; 計算に割り当てる CPU のスレッド数。 --group_pairs_distance; Paired end のリードペアの間の距離の最大値を指定する。今回使用するデータは cDNA 断片のサイズが 300bp, 両端から 100 塩基ずつ読んだとのことなので、距離は 100 塩基と言うこと になる。最大値として 300 を指定しておく。 --bflyHeapSpaceMax; butterfly プログラムに割り当てる Java max heap space なる変数で、大きくし過ぎるとメモ リ上のデータがハードディスクに頻繁に退避するので計算速度が低下する。自分の PC に搭載されてい るメモリ量に応じて変える必要がある。 13 その他必須ではないが、--min_glue, min_iso_ratio, --path_reinforcement_distance などを指定するとアッセンブ リの厳しさが変わるようなので試してみるとよい。 --output; 結果を出力するディレクトリ。今回は、ホームディレクトリの下の Trinity_sample ディレクトリに出力する よう指定している。繰り返し実行する場合、前回の実行時と同じディレクトリを指定すると誤作動するので、 毎回ディレクトリ名を変更する必要がある。 今回は、以下のような条件で実行してみる。 kitajima@kitajima[kitajima] ~/_Tools/trinityrnaseq/Trinity -CPU 3 --seqType fq --JM 3G --bflyHeapSpaceMax 3G --left ~/work/sakito/ERR260307_short_1.fastq --right ~/work/sakito/ERR260307_short_2.fastq --output ~/work/sakito/Trinity_sample --SS_lib_type FR --group_pairs_distance 300 すると以下のように表示されて、長い待ち時間となる。 Current settings: time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) 8192 coredump(blocks) 0 memory(kbytes) unlimited locked memory(kbytes) 64 process 514814 nofiles 1024 vmemory(kbytes) unlimited locks unlimited (以下省略) もし計算を強制終了したければ、control キーを押しながら c とタイプする。ちなみに、システムモニターというアプリを 起動して、”リソース”タブをクリックすると CPU とメモリの使用状況がリアルタイムに表示される。これを見ると鋭意計算 中かどうか、CPU とメモリのどちらが過負荷状態なのか判断できる。最後に以下のように表示されれば、無事に完了。 All commands completed successfully. :-) CMD finished (659 seconds) Tuesday, August 5, 2014: 12:27:38 CMD: /home/kitajima/_Tools/trinityrnaseq/util/support_scripts/print_butterfly_assemblies.pl /home/kitajima/Trinity_sample/chrysalis/component_base_listing.txt > Trinity.fasta.tmp CMD finished (0 seconds) 14 ################################################################### Butterfly assemblies are written to /home/kitajima/Trinity_sample/Trinity.fasta ################################################################### kitajima@kitajima[kitajima] ファイルマネージャで見ると、実行時に指定した”Trinity_sample”ディレクトリの中に、”Trinity.fasta”というファイルがで きているのが分かる。head コマンドで、最初の 20 行を表示させてみよう。 kitajima@kitajima[kitajima] head -20 ~/work/sakito/Trinity_sample/Trinity.fasta >c0_g1_i1 len=244 path=[26:0-78 104:79-243] CTGCGAGCCTTTTTGTAATGCCTTTGCAACTTGGTGCCGCACCGAGTGTTGCCTCATTCA CATTGATCGAGCAAGATTGCTGTCCAATGCAAGCCTTCTTAACAACTGAAAGGGCATCGT TAGACTCACAACTACCCTTTTTGAATGATTGGCATGCTCCTTGTGGATCTCCGAAACTAG CGAACTCGATATCAGAAATTGACTGGCCACCTTGGCACGATAAAGTAACTTTATTCCCCT CCAG >c1_g1_i1 len=520 path=[27:0-519] CCAAAGCAGAACGAGAAGATCCCGGCCAGGAGCGCATCCACAGCAAGGTGAATCATCTCG AACTTTCTGACACAGAACTCTTGATTGCCAAAGCATACCCTGGAGAACCAATCAAGCAGA (中略) AGCATGCAGAACTGATCGAAGAGCATGGTAGCAGCAGGAG >c3_g1_i1 len=268 path=[27:0-267] CGCCATCAAGTCCCTCGAAAGCGAAACACCGATCTTCCCATCAACATCCTCCTCCTGAGT AACACACCTAAAGCAGTTATCATCAGCACCCTTATGGGTCCTGACAGTATGCACGAGCTG GTACTTAGACCGCCGGCGATCGGAACGTTTATTCGATAAGAGAATTGCAGCTCCACCCAT kitajima@kitajima[kitajima] 15 “>”の行が配列名。塩基長も書いてある。次の>までが de novo アセンブリにより作られた塩基配列である。この様な ファイル形式を fasta 形式とよぶ。余談だが、fasta 形式の ファイルには1本の塩基配列中に改行がある場合とない 場合があり、今回は改行が含まれている。”fasta formatter”というツールを使うと、配列途中の改行を取り 除くことができる。こうすると、wc -l コマンドで配列数を調 べることが可能だ。では、このファイルにどれぐらいの塩 基長の配列が何個ぐらい含まれているのか統計をとって みる。cd-hit-est というサイトが使いやすい。次のリンク先 にアクセスし、cd-hit-est というタブをクリックする。 http://weizhong-lab.ucsd.edu/cdhit_suite/cgibin/index.cgi ”ファイルを選択”ボタンをクリックして Trinity.fasta を選択し、下の”Submit”ボタンをクリックすればよい。しばらくすると、 いくつかのファイルを選べるようになる。そのうち、xxxx.fas.0.stat というファイルをクリックすると、以下のように表示され る。 Sequence type No. sequences DNA 6866 Longest sequence Shortest sequence Average length 363 Total letters Total N letters Total non N Sequences with 2836 201 2496675 0 2496675 N 0 (中略) length distribution length No. sequences % sequences 200-399 5271 76.76% 400-599 969 14.11% 600-799 305 800-999 139 1000-1199 1200-1399 4.44% 2.02% 65 43 0.94% 0.62% 16 (以下省略) この結果を見ると、配列の数は 6866 本と少なく、そのうち 77%は 399 塩基より短い。平均長は 363 塩基しかない。今 回は、計算時間を短くするために、head コマンドによりリード数を減らした。これが mRNA らしい長い配列が多くできな かい理由の一つだ。ちなみに、head コマンドによる減数処理を行っていない fastq ファイルを使ってここまで同様の操 作を実行してみると、得られる配列数が 82492 と大幅に増えた。平均長は 536 塩基と大きくなったとはいえ、植物の mRNA としてはまだまだ短い。もともとのサンプルの質自体も、もしかしたら良くなかったのかもしれない(例えば抽出し た RNA サンプルが分解していた)。 (2-3-2) Velvet による de novo アセンブリ (今回の実習ではたぶん時間がたりなくなるのでこの項目は省略。最後に余裕があればやります) Velvet も試してみよう。mRNA のアセンブリの場合は、velveth, velvetg、oases という 3 つのツールを順に使用する。ま ず velveth。k-mer という変数を調整しながら解析をするとよいが、以下の条件でまずは実行してみる。簡単にオプショ ンの説明をしておくと、”velveth”に続く、”~/work/sakito/”は結果をこのディレクトリに出力すること、65 は k-mer を 65 にすることを指定している。k-mer の意味は、似ているリード同士を探すときに、k-mer で指定した塩基長でリード 配列を区切って比較する、というものだそうだ。k-mer を大きくするとアセンブルを厳しくし、小さくすると甘くする。今回 はインストールの際に k-mer の上限値を 99 としたので、99 以下の奇数を指定できる。-separate、-shortPaired、fastq はそれぞれ、入力ファイルが、paired end の 2 つの配列ファイルに分かれていること、paiered end の短い配列で あることを、fastq 形式であることを指定している。入力ファイルの置き場所を指定するときは、”~”を使うパスは使えな いようだ。下の入力例には”/manager”という文字が書いてあるが、今回使用する本学のシステムの固有の事情により こうなる。自分の PC に Bio-Linux 8 の場合は、この文字は不要のはずだ。sakito/の部分は、ユーザーアカウントごと に異なるので各自修正しなくてはならない。 kitajima@kitajima[kitajima] ~/_Tools/velvet/velveth ~/work/sakito/ 65 -separate -shortPaired -fastq /home/manager/work/sakito/ERR260307_1.fastq /home/manager/work/sakito/ERR260307_2.fastq 実行すると以下のようになるはずだ。Trinity に比べると一瞬で終わる。 kitajima@kitajima[kitajima] ~/_Tools/velvet/velveth ~/work/sakito/ 65 -separate -shortPaired -fastq /home/manager/work/sakito/ERR260307_1.fastq /home/manager/work/sakito/ERR260307_2.fastq [0.000002] Reading FastQ file /home/manager/work/sakito/ERR260307_1.fastq; [0.002793] Reading FastQ file /home/manager/work/sakito/ERR260307_2.fastq; (中略) [5.752991] Destroying splay table 17 [5.771746] Splay table destroyed kitajima@kitajima[kitajima] 次に velvetg を実行する。~/work/sakito/は結果の出力先をこのディレクトリに指定している。-cov_cutoff は、カバレ ージ(リードがどのくらい張り付いたかを示す)の低い配列を除外するオプションで、とりあえず auto としておく。ins_length はシーケンスに供した cDNA 断片の長さで、今回のサンプルでは 300 である。-ins_length_sd はその標準 偏差で、今回は不明なので適当に 100 としておく。-read_trkg は、リードトラッキングなるものを実行することを指定す る(あまり大事ではないようなので指定しなくても良いのかもしれない)。 kitajima@kitajima[kitajima] ~/_Tools/velvet/velvetg ~/work/sakito/ -read_trkg yes -cov_cutoff auto -ins_length 300 -ins_length_sd 100 -exp_cov auto 実行すると、以下のように表示されるはずだ。画面の表示の読み方はよく分からないが、推定カバレージが 11.851964、 推定カバレージカットオフは 5.925982 とのことなので、”-cov_cutoff”を設定する場合はこれを目安にすることになると 思う。 kitajima@kitajima[kitajima] ~/_Tools/velvet/velvetg ~/work/sakito/ -read_trkg yes -cov_cutoff auto -ins_length 300 -ins_length_sd 100 -exp_cov auto [0.000000] Reading roadmap file /home/kitajima//Roadmaps (中略) [8.069185] Estimated Coverage = 11.851964 [8.069205] Estimated Coverage cutoff = 5.925982 Final graph has 679 nodes and n50 of 296, max 1475, total 190083, using 176587/600000 reads kitajima@kitajima[kitajima] 最後に oases を実行する。オプションの~/は、結果の出力先をホームディレクトリに指定している。-min_trans_lgth は、 出力する配列の長さの下限を指定する。今回は 200 に設定しておくが、通常はもっと大きな値(例えば 400)でもよい とおもう。-ins_length は、velvetg の場合と同じで、今回のサンプルでは 300 である。-cov_cutoff は、6 としておく。カバ レージがそれより低い配列は除去される。 kitajima@kitajima[kitajima] ~/_Tools/oases/oases ~/ -ins_length 300 -min_trans_lgth 200 -cov_cutoff 6 実行すると、以下のように表示されるはずだ。 18 kitajima@kitajima[kitajima] ~/_Tools/oases//oases ~/ -ins_length 300 -min_trans_lgth 200 -cov_cutoff 6 [0.000000] Reading graph file /home/kitajima//Graph2 (中略) [1.037848] Exporting transcripts to /home/kitajima//transcripts.fa [1.047910] Exporting transcript contigs to /home/kitajima//contig-ordering.txt [1.054493] Finished extracting transcripts, used 175596/600000 reads on 646 loci kitajima@kitajima[kitajima] アセンブリの結果は、ホームディレクトリの”transcripts.fa”というファイルに出力された。Trinity のときと同様に cd-hitest で調べると、得られた配列は 628 本、平均長 366 で、200 から 399 塩基長の配列が全体の 77%を占めている。 ちなみに、head コマンドによる減数処理を行っていない fastq ファイルを使ってここまで同様の操作(ただし oases のcov_cutoff を 12 に変更した)を実行してみると、得られる配列数が 15673 と大幅に増えた。平均長は 512 塩基と大きく なったとはいえ、植物の mRNA としてはまだまだ短い。 今回は、k-mer の値を1つに固定して解析した。oases のフォルダの中に、oases_pipeline.py というファイルがある。こ れは、python というプログラミング言語のスクリプトで、これを実行すると、指定する範囲のさまざまな k-mer で順に解 析したあと、結果を 1 つにまとめて重複する配列を除去してくれる。oases の説明書に使い方が書いてあるので、興味 のあるひとは試してみるとよい。ただし、この python スクリプトをテキストエディタで開いて、velveth, velvetg, oases の 置き場所を記述した部分をすべて自分の環境に合わせて書き換える必要がある。例えば、今回のシステムの場合(固 有の事情によりやや変わったパスになっている)、 subprocess.Popen(['velveth → subprocess.Popen([/home/manager/_Tools/velvet/velveth 置き場所は、先述のとおり、ファイルマネージャで当該のファイルを右クリックしてプロパティを選べば表示される。 あらかじめパスを通しておけば、たぶんその必要はない。 (2-4) Bowtie2 によるマッピング 推定 mRNA 配列データベースができあがったので、これをリファレンス配列としてリード(ホームディレクトリの ERR260307_short_1.fastq および ERR260307_short_2.fastq)を張り付けてみる。Trinity と velvet で作成した 2 セットの アセンブリがあるが、以降は Trinity で作成した方を使用することにする。マッピングには bowtie の ver.2 をつかう。こ のツールは、fastq ファイルの各リードが、どのリファレンス配列のどの位置に一致するかを調べる。リファレンス配列と したい fasta ファイルは、まず bowtie2-build というツールを使って専用のインデックスファイルに変換する。書式 は、”bowtie2-build 元の fasta ファイル インデックス名”だ。インデックスには適当な名前をつければよいが、ここでは TrinityFastaLily としておく。 kitajima@kitajima[kitajima] bowtie2-build ~/work/sakito/Trinity_sample/Trinity.fasta ~/work/sakito/TrinityFastaLily 19 Settings: Output files: "TrinityFastaLily.*.bt2" Line rate: 6 (line is 64 bytes) Lines per side: 1 (side is 64 bytes) (中略) ebwtTotSz: 832256 color: 0 reverse: 1 Total time for backward call to driver() for mirror index: 00:00:01 kitajima@kitajima[kitajima] ~/work/sakito ディレクトリには TrinityFastaLily ほにゃらら.bt2 というファイルがいくつかできたのが確認できるだろう。 つづいてマッピングする。次のような書式でタイプする。”bowtie2 オプション -x インデックス FASTQ ファイル 出力フ ァイル”。オプションとしては、とりあえず以下のものをよく使用すると思う。 --un-conc filename ; マップされなかった paired end のリードを指定する fastq ファイルに出力する。 (ちなみに、入力ファイルが paired end でない、つまり一方向のリードの場合は、--un filename ファイル名と 指定する) -p 使用する CPU のスレッド数 -1 query1.fastq -2 query2.fastq ; paired end の2つの入力ファイルを指定する。 -X 数字 pair-end の最大インサート長さ。シーケンスに供した cDNA 断片の最大サイズのことで、デフォルト 値は 500 とのことなので、今回は指定しない。 -L 数字 対象配列と最初に比較するときのリードのタネ長さ(適切な表現が分からない。英語では”length of seed substring”と呼ぶ)で、アラインのパラメータで感度と速さに関わる。今回のリードは長さが 60 塩基 以上なので設定可能な最大値の 32 としておく。 -S ファイル名 マップの結果の出力先。sam 形式ファイルとするよう指定している。 では、やってみる。 kitajima@kitajima[kitajima] bowtie2 -p 2 -L 32 -x ~/work/sakito/TrinityFastaLily -1 ~/work/sakito/ERR260307_short_1.fastq -2 ~/work/sakito/ERR260307_short_2.fastq -S ~/work/sakito/bowtie2result.sam --un-conc ~/work/sakito/out_unmapped.fastq しばらく待つと以下のように表示される。 kitajima@kitajima[kitajima] bowtie2 -p 2 -L 32 -x ~/work/sakito/TrinityFastaLily -1 ~/work/sakito/ERR260307_short_1.fastq -2 ~/work/sakito/ERR260307_short_2.fastq -S ~/work/sakito/bowtie2result.sam --un-conc ~/work/sakito/out_unmapped.fastq 20 300000 reads; of these: 300000 (100.00%) were paired; of these: 97242 (32.41%) aligned concordantly 0 times 51439 (17.15%) aligned concordantly exactly 1 time 151319 (50.44%) aligned concordantly >1 times ---97242 pairs aligned concordantly 0 times; of these: 1196 (1.23%) aligned discordantly 1 time ---96046 pairs aligned 0 times concordantly or discordantly; of these: 192092 mates make up the pairs; of these: 169316 (88.14%) aligned 0 times 12766 (6.65%) aligned exactly 1 time 10010 (5.21%) aligned >1 times 71.78% overall alignment rate kitajima@kitajima[kitajima] 全リードの 71.78%がうまくマッピングできた。良好な成績と言える。マッピングの結果は bowtie2result.sam という名前の ファイルに書き込まれている。マッピングされなかったリードは、ホームディレクトリの out_unmapped.1.fastq および out_unmapped.2.fastq の2つのファイルに出力された。 bowtie2 の結果を、samtools というデータ変換ツールですこしばかりの前処理をすると、Tablet というアプリを使って可 視化することができる。細かい話は抜きにして、次のように順番にタイプすると良い。 kitajima@kitajima[kitajima] samtools view -bS ~/work/sakito/bowtie2result.sam > ~/work/sakito/bowtie2result.bam [samopen] SAM header is present: 6860 sequences. kitajima@kitajima[kitajima] samtools sort ~/work/sakito/bowtie2result.bam ~/work/sakito/bowtie2result_sorted kitajima@kitajima[kitajima] samtools view -h ~/work/sakito/bowtie2result_sorted.bam > ~/work/sakito/bowtie2result_sorted.sam kitajima@kitajima[kitajima] tablet ~/work/sakito/bowtie2result_sorted.sam 21 Tablet の使い方は、実際に使ってみればすぐ分かるとおもう。samtools については、以下のサイトが参考になる。 https://cell-innovation.nig.ac.jp/wiki/tiki-index.php?page=samtools Tablet 画面の左側の表には、リファレンス配列ごとに張り付いたリードの数が表示されている。おおざっぱに言えば、 これが発現ランキングということになるが、リファレンス配列の塩基長がばらばらなので公平とはいえない。例えば、リフ ァレンス配列すなわち mRNA の分子数が同じだったとしても、張り付いたリードの数は、2kb の mRNA では 1kb の mRNA の場合の 2 倍の大きさになってしまう。遺伝子間での発現の強弱を比較したければ、塩基長あたりのリード数 で比較すべきた。 (2-5) RPKM の計算 RPKM は、Reads Per Kilobase of exon per Million mapped reads の略で、リードの出現回数を塩基長とリード総数で 割って、1kb 当たりと 100 万リード当たりに標準化したものだ。このように標準化すると、長さの異なる遺伝子の間で発 現強度を比較可能になり、さらに別の実験サンプルの結果との比較も可能になる。以下のようにして、RPKM に基づく 発現ランキング表を作ることにする。そのためには、各リファレンス配列の塩基長と、各リファレンスに張り付いたリード の数をしらべなくてはならない。いろいろな Linux のコマンドを使うが、細かい解説はしない。コマンドの意味や使い方 に興味のあるひとは、例えば、”linux grep 使い方”というようなキーワードでググってみるとよい。最初に、bowtie2 が出 力した sam ファイル(bowtie2result.sam)に何が書いてあるのか調べてみよう。冒頭 20 行を head コマンドで見てみる。 kitajima@kitajima[kitajima] head -20 ~/work/sakito/bowtie2result.sam @HD VN:1.0 SO:unsorted 22 @SQ @SQ SN:c0_g1_i1 SN:c1_g1_i1 LN:263 LN:807 (中略) @SQ SN:c17_g1_i2 LN:461 @SQ SN:c18_g1_i1 LN:1327 @SQ SN:c20_g1_i1 LN:852 kitajima@kitajima[kitajima] 左から順番に、“@SQ”、タブ区切り、”SN”、”:”、続いてリファレンス配列の名称、タブ区切り、”LN”、”:”、塩基長と続 く。この様に sam ファイルの冒頭には、リファレンス配列の情報が書いてある。マッピングの結果は、もっと下に書いて ある。ファイルの末尾 20 行を見てみよう。head コマンドの代わりに tail というコマンドを使う。 kitajima@kitajima[kitajima] tail -20 ~/work/sakito/bowtie2result.sam ERR260307.299992 77 * 0 0 * * 0 0 AGCAGTACCTCGACGAGAAGACCATCTTCCACCTCAACCCATCGGGTCGCTTTGTCATTGGTGG TCCTCATGGTGATGCTGGGCTTACTG ?@@DDAABFHHHHGGIIFE;F@9BDFGIIIIIIGIID@GGGHICEFGB8BECB>B;;AB@C6=?33>@C>>@C3>> >@>:@@8198:A>: YT:Z:UP ERR260307.299992 141 * 0 0 * * 0 0 GGTCGACCTTGGTGGGGTCCTTACCGGAGAAGGCACCACCACCGTGAGCTCCCCATCCTCCAT AGGTGTCGATGATAATTTTACGACCAG @?=DD@:AF<DAFHHIH@EECH4?CCFGGGF;B(8BBF2;FHI4CEFE=;@??A@>6;@@CDC;;>5>(,8A?CC CCC::AC>48?59@? YT:Z:UP ERR260307.299993 73 c1642_g1_i1 250 26 90M = 250 0 ATCCCCACATCCTCATCTATGTGACTTCAATTCTAATTTCCATGTATTCAACACCCAATTGGGCA AAGAAGAATCGCGATGGCGGGAGAC @@<DDFFFBCFHFIG@E@HAEAEHGIIGIHECHIIIIIFIIGBHGGIGIEEHGHFHFHDFGIGIIGCHIIICGHH EEB############ AS:i:-5 XS:i:-44 XN:i:0 XM:i:1 XO:i:0 XG:i:0 NM:i:1 MD:Z:17C72 YT:Z:UP (以下略) 23 分かりにくいので、tail の実行結果を、画面 の代わりにファイルに出力させて LibrOffice calc で見てみる。ファイルに出力させるに は、tail コマンドの末尾に”> 出力先ファイ ル名”と書き加える。出力先ファイルの名前 はなんでもよい。LibreOffice calc でファイ ルを読み込むときに区切り方法をきかれる ので、”タブ区切り”にチェックをいれ、他は オフにする。 各行の構成がわかりやすくなった。タブ区切りで、各行の 1 番めのフィールド(例;ERR260307.299993)がリードの名 称、3 番めのフィールドが貼り付き先のリファレンス配列名(例;c1642_g1_i1)となっている。また、リードがどのリファレン ス配列にもマップされなかった場合には、第 3 フィールドに*と書いてある。 ではまず、冒頭部分から各リファレンス配列の長さを抽出し、RefLen.csv という名前のファイルに書き出す。その前に、 ファイルの 1 行めに各フィールドの名前を書いておこう。以下のようにタイプする。”reference”タブ区切り”Length”と出 力してホームディレクトリの Reflen.csv というファイルに書き込め、という意味だ。 kitajima@kitajima[kitajima] echo -e "reference""\t""length" > ~/work/sakito/RefLen.csv 次に、以下のようにタイプする。コマンドの概略を述べると、当該の行では第1フィールドが必ず@SQ なので、これを目 印にして grep コマンドで bowtie2result.sam から当該の行を抜きだす。次に sed コマンドで”:”をタブ区切りに置換し、 cut コマンドで第 3(リファレンス配列名)および第 5 フィールド(塩基長)を切り出し、結果をホームディレクトリの RefLen.csv というファイルの末尾に追記する。”|”はパイプと呼ばれるもので、”|”の前のコマンドの実行結果を”|”の後 のコマンドに渡す、という意味である。>>は、この記号の左側の実行結果を右側のファイルの末尾に追記すると言う意 味だ。それぞれのコマンドの実行結果を見てみたければ、パイプで繋がず、代わりにモニタかファイルに出力してみる とよい。最後に、wc -l コマンドで行数を、head コマンドで出来上がったファイルの内容を確認しておく。 kitajima@kitajima[kitajima] grep "@SQ" ~/work/sakito/bowtie2result.sam | sed -e 's/:/\t/g' | cut -f3,5 >> ~/work/sakito/RefLen.csv kitajima@kitajima[kitajima] wc -l ~/work/sakito/RefLen.csv 6861 /home/manager/work/sakito/RefLen.csv kitajima@kitajima[kitajima] head -10 ~/work/sakito/RefLen.csv reference length c0_g1_i1 263 24 c1_g1_i1 c3_g1_i1 807 426 c4_g1_i1 c5_g1_i1 c6_g1_i1 c6_g1_i2 406 238 413 463 c8_g1_i1 383 c9_g1_i1 554 kitajima@kitajima[kitajima] マッピングの集計結果は、ReadNum.csv というファイルに書き込むことにする。上と同様に echo コマンドで 1 行めにフ ィールド名をあらかじめ記入しておく。 kitajima@kitajima[kitajima] echo -e "reference""\t""Number" > ~/work/sakito/ReadNum.csv 次に、以下のようにタイプして、マッピング結果のデータを取り出す。コマンドの概略を述べると、bowtie2result.sam の 内容を cat コマンドで読み出して grep -v コマンドに引き渡し、"@SQ"という文字を含む冒頭の行を削除し、awk の print コマンドによりその結果の第 3 フィールド(つまりマップされたリファレンス配列名)を切り出し、さらに grep -v コマ ンドで”*”を含む行を削除して、その結果をホームディレクトリの ReadTemporary.csv というファイルに書き出す。 kitajima@kitajima[kitajima] cat ~/work/sakito/bowtie2result.sam | grep -v "@SQ" | awk '{print $3}' | grep -v "*" > ~/work/sakito/ReadTemporary.csv ReadTemporary.csv の冒頭部分を一応見ておこう。 kitajima@kitajima[kitajima] head -10 ~/work/sakito/ReadTemporary.csv SO:unsorted PN:bowtie2 c2374_g1_i1 c2374_g1_i1 c2437_g2_i1 c2437_g2_i1 c2399_g1_i1 c2399_g1_i1 c2485_g1_i1 c2485_g1_i1 kitajima@kitajima[kitajima] 25 冒頭の 2 行はリファレンス配列名ではない。邪魔なので、sed -e コマンドを使って、削除しておこう。ひとつ前のステッ プからやり直す。 kitajima@kitajima[kitajima] cat ~/work/sakito/bowtie2result.sam |grep -v "@SQ" | awk '{print $3}' | grep -v "*" | sed -e '1,2d' > ~/work/sakito/ReadTemporary.csv kitajima@kitajima[kitajima] head -10 ~/work/sakito/ReadTemporary.csv c2374_g1_i1 c2374_g1_i1 c2437_g2_i1 c2437_g2_i1 c2399_g1_i1 c2399_g1_i1 c2485_g1_i1 c2485_g1_i1 c3439_g1_i1 c3439_g1_i1 kitajima@kitajima[kitajima] うまくいった。tail -10 コマンドでファイルの末尾も確認するとよい。最後に、このファイルに各リファレンス配列名が何 回出現するかを数えれば良い。以下のようにタイプする。意味は、sort コマンドにより ReadTemporary.csv の行をアル ファベット順に並べ替え、uniq -c コマンドにより同じ行(つまり同じリファレンス配列名)が連続して出現した回数と、そ のリファレンス配列名を出力する。awk の print コマンドで、出現回数とリファレンス配列名の順序を入れ替えて、タブ 区切りとし、その結果をホームディレクトリの先ほど作成した ReadNum.csv というファイルの末尾に追記する。head コマ ンドで中身を確認しておく。 kitajima@kitajima[kitajima] cat ~/work/sakito/ReadTemporary.csv | sort | uniq -c | awk '{print $2"\t"$1}' >> ~/work/sakito/ReadNum.csv kitajima@kitajima[kitajima] head -10 ~/work/sakito/ReadNum.csv reference Number c0_g1_i1 20 c1000_g1_i1 26 c1001_g1_i1 c1003_g1_i1 c1004_g1_i1 90 28 46 c1005_g1_i1 c1008_g1_i1 c1009_g1_i1 c1010_g1_i1 58 22 16 16 kitajima@kitajima[kitajima] wc -l ~/work/sakito/ReadNum.csv 6832 /home/manager/work/sakito/ReadNum.csv kitajima@kitajima[kitajima] 26 wc -l コマンドで行数を調べると 68432、タイトル行を除くと 6831 行で、もとのリファレンス配列の数より少ない。これは、 リードが 1 本も張り付かなかったリファレンス配列がここには含まれていないためだ。 では次に、このようにして作成した RefLen.csv と ReadNum.csv を連結しよう。2つの表の連結は、R というプログラムで やってみる。端末に、R とタイプすると起動する。”>”と表示されれば入力待ち状態だ。 kitajima@kitajima[kitajima] R R version 3.1.1 (2014-07-10) -- "Sock it to Me" (中略) 'help()' とすればオンラインヘルプが出ます。 'help.start()' で HTML ブラウザによるヘルプがみられます。 'q()' と入力すれば R を終了します。 > 以下のように順にタイプしていく。概略を述べると、1 行めと 2 行めでは作成した 2 つのファイルを読み込み、それぞ れ変数 L と N に入力する。”header=T”はファイルの 1 行目がタイトル行であることを、 “sep="\t"”はタブ区切りである ことを R に教えている。3 行めでは 2 つのファイルを、リファレンス配列が一致するように連結して、変数 M に入力す る。”all=T”は、2 つのファイルの一方にしか存在しないリファレンス配列名があった場合には、欠損している方に NA の文字を加えることを指示している。今回は、ReadNum.csv に欠損がある(1 本もマッピングされなかったリファレンス 配列があるため)ので、”Number”のフィールドに NA の文字を入れてくれる。 > L <- read.csv("~/work/sakito/RefLen.csv", header=T, sep="\t") > N <- read.csv("~/work/sakito/ReadNum.csv", header=T, sep="\t") > M <- merge(L, N, all=T) どんな表ができたか確認のため、変数 M の冒頭を見ておこう。head(M)とタイプする。 > head(M) reference length Number 1 c0_g1_i1 263 20 2 c1000_g1_i1 218 26 3 4 5 6 c1001_g1_i1 c1003_g1_i1 c1004_g1_i1 c1005_g1_i1 454 261 461 563 90 28 46 58 > 27 問題がなければ、結果をホームディレクトリの ReadNum_Len.csv というファイルに出力して、R を終了す る。”row.names=FALSE”は、行番号を出力しない、という意味である。 > write.table(M, file="~/work/sakito/ReadNum_Len.csv", row.names=FALSE, sep="\t") > q() Save workspace image? [y/n/c]: n kitajima@kitajima[kitajima] では最後に、ReadNum_Len.csv を LibreOffice calc で 読み込んでみよう。これ以降の操作は、Excel とほぼ 同じだ。計算をする前に、ひとつやらなくてはならない ことがある。表を下にスクロールすると、張り付いたリ ード数すなわち”Number”の列が数字ではなく、”NA” となっているところがある。これは、データ欠損、つまり このリファレンス配列にはリードが 1 本も張り付かなか った、ということだ。NA の文字列を検索してすべて 0 に置換しておこう。今回は行わないが、他の mRNAseq の結果と比較する際にはしばしば log 表記する。 データに 0 があると log をとれないので、すべてのデ ータに 1 を加えておく。前処理はここまでで、いよいよ RPKM を計算する。RPKM の計算式は、自分で考えられるだろ う。リード総数の算出法は、異論があるかもしれないが、ここでは表の[リード数+1]を上から下まですべて足した値とし ておく。RPKM の順にソートすると、右のような結果になった。 ちなみに、LibreOffice calc で行った最後の処理も、R の中ですることが可能だ。もういちど R を起動して、以下のよう にタイプする。R で先ほど行った処理に加えて、(1)では、変数 M(つまり merge 関数で作った表)の中の”NA”を 0 に 置き換える。(2)では、変数 M の Number となづけた列(つまりリード数)に 1 を加えて、結果を変数 M の NumPlus1 と いう列に書き込む。(3)では、RPKM を計算して、変数 M の RPKM という名前の列に書き込む。sum()は合計を計算す る関数だ。最後に、変数 M を ReadNum_Len_RPKM.csv というファイルに出力する。下には書いてないが、(1)~(3)の 各ステップを実行するごとに、確認のため head(M)とタイプしてみるとよい。 > L <- read.csv("~/work/sakito/RefLen.csv", header=T, sep="\t") > N <- read.csv("~/work/sakito/ReadNum.csv", header=T, sep="\t") > M <- merge(L, N, all=T) > M[is.na(M)] <- 0 (1) 28 > M$NumPlus1 <- M$Number + 1 > M$RPKM <- M$NumPlus1/sum(M$NumPlus1)/M$length*1000*1000000 (2) (3) > write.table(M, file="~/work/sakito/ReadNum_Len_RPKM.csv", row.names=FALSE, sep="\t") > q() Save workspace image? [y/n/c]: n kitajima@kitajima[kitajima] 出力したファイル ReadNum_Len_RPKM.csv を LibreOffice calc で開くと、右のようになっている。 だいぶ煩雑な作業だった。しかし、bowtie2 以降に 関して言えば完全な定型処理だ。シェルスクリプトを 書けば、ここまでの一連の操作をコマンド一発で実 行できるようになる。下に演習課題として挙げておく ので、明日シェルスクリプトを学んだら、やってみると よい。 (2-6) データベースに mRNA 配列がいくつか登録 されている場合のアセンブリについて。 今回は、公開されている mRNA 配列がまったく無い という想定の下に、完全な de novo アセンブリを行った。しかし大抵の場合は、その生物の mRNA 配列が少しぐらい はデータベースに公開されているだろう。これらをどう活用すればもっとも有効なのだろうか。筆者は、bowtie2 を使っ て、既知の mRNA に対応するリードをあらかじめ除去してから de novo アセンブリを行えばよいと考えている。bowtie2 には、マップされなかったリードを fastq ファイルに出力するオプションがあることをすでに紹介した。そうして得られた 推定 mRNA 配列のファイルを、既知 mRNA 配列のファイルと連結して1つの fasta ファイルにまとめればよい。リボソ ーム RNA の混入が問題になる場合も同じ方法が可能なはずだ。 演習課題1 bowtie2 が出力したマッピング結果のファイルを使って RPKM を計算する作業を、今回は 1 行ずつ手作業で行っ た。この作業をシェルスクリプトで記述して動作させなさい。 29 3. モデル生物の mRNA-seq 解析 (3-1) データの準備 (3-1-1) ゲノム配列のダウンロード 例えば、酵母、アラビドプシス、ヒト、ショウジョウバエなどの場合は、ゲノム配列が解読されていて、染色体のどの領域 が遺伝子か、どこがエクソンか、というアノテーション情報が公開されている。そのような生物種の mRNA-seq 解析で は、アノテーション付きゲノムデータをリファレンス配列としてマッピングすればよい。マッピングツールとしては TopHat2 を使う。TopHat2 は、内部で bowtie2 を使っているが、リードが 2 つのエクソンをまたいでいてもうまくマッピ ングしてくれる。まずは、リファレンス配列として使うゲノム情報を入手する。以下のリンク先に illumina 社が提供してい る各モデル生物のデータがある。 http://cufflinks.cbcb.umd.edu/igenomes.html 今回はアラビドプシスを使ってみる。アラビドプシスの Ensambl の TAIR10 をクリックすると、ダウンロードディレクトリに、 Arabidopsis_thaliana_Ensembl_TAIR10.tar.gz という圧縮ファイルをダウンロードするはずだ。これを展開すると Arabidopsis_thaliana_Ensembl_TAIR10 という名前のディレクトリができるので、ホームディレクトリに移す。中をみてみる と、いろいろなファイルが入っている。これから使うのは、1 つめが、Ensembl フォルダの TAIR10 ファルダの Annotation フォルダの Genes フォルダにある genes.gtf ファイルだ。これがアノテーション情報である。TopHat2 用のイ ンデックスファイルも用意されていて、TAIR10 フォルダの Sequence フォルダの Bowtie2Index の中に入っている。もし、 TopHat2 の内部で bowtie2 のかわりに bowtie1 を使いたい場合は、bowtieIndex フォルダの中に入っているインデック スファイルを使用する。本来なら、bowtie2 を使うのだが、執筆時点でどういうわけか bowtie2 インデックスを Tophat2 がうまく認識しないので、今回は bowtie1 とそのインデ ックスを使う。後ほど改めて説明する。 (3-1-2) アラビドプシスのリードデータの用意 ユリのときと同じように、NCBI の SRA データベースを検 索すると多数みつかる。テッポウユリのデータと同様に paired-end のデータもあるが、ざっとみると single end のものが多いようだ。single end というのは、高速シーケ ンサーで cDNA 断片を読むとき、両末端のどちらか一 方だけを読む手法である。今回は single end のデータ を使ってみよう。アクセッション No. SRX117107 (http://www.ncbi.nlm.nih.gov/sra/?term=SRX117107) を見てみる。 30 説明文によると、材料はアラビドプシス(Arabidopsis thaliana)、 エコタイプ col-0 の花托(花の基部のふくらんだところ) より抽出した mRNA で、シーケンシングには illumina 社 HiSeq 2000 を使用したとのことだ。3 回の繰り返し実験を行っ たので 3 つの sra データ(SRR401419.sra SRR401420.sra SRR401421.sra)が登録されている。これらをすべてダウン ロードして、ホームディレクトリに移す。以降は、とりあえず SRR401419.sra だけを先に進める。テッポウユリのときと同 様に、まず、sratoolskit の fastq-dump で fastq ファイルに変換する。single end での実験なので、テッポウユリのときに 付け加えたオプションの”--split-files”はなくてもよいが、付け加えておくと、*_1.fastq という名前のファイルを作る。 kitajima@kitajima[kitajima] ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/SRR401419.sra --split-files -O ~/work/sakito 次のように表示されれば成功である。 kitajima@kitajima[kitajima] ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/SRR401419.sra --split-files -O ~/work/sakito Read 16490647 spots for /home/manager/work/sakito/SRR401419.sra Written 16490647 spots for /home/manager/work/sakito/SRR401419.sra kitajima@kitajima[kitajima] ファイルマネージャで~/work/sakito ディレクトリを見ると、SRR401419_1.fastq という名前の 5.4GB のファイルができて いる。前回とおなじく、計算時間を短くするために、head コマンドで最初の 30 万リード、すなわち最初の 120 万行だ けを取り出してサブセットのリードデータをつくろう。 wc -l コマンドで 120 万行であることが確認できれば OK だ。 kitajima@kitajima[kitajima] head -1200000 ~/work/sakito/SRR401419_1.fastq > ~/work/sakito/SRR401419_short_1.fastq kitajima@kitajima[kitajima] wc -l ~/work/sakito/SRR401419_short_1.fastq 1200000 /home/manager/work/sakito/SRR401419_short_1.fastq kitajima@kitajima[kitajima] (3-2) TopHat2 によるマッピング 作成されたファイル(SRR401419_short_1.fastq)を、TopHat2 を用いて、アラビドプシスのゲノム配列にマッピングする。 tophat2 -help とタイプすると書式等の情報が見られる。とりあえずは、次のようにタイプすれば良い。 tophat2 -p CPU スレッド数 -G gtf ファイル名 -o 出力先ディレクトリ bowtie2_index fastq ファイル 31 結果の出力先は、~/work/sakito/tophatresult_SRR401419 とする。すでに述べたとおり、Tophat2 は内部で bowtie2 を使用する。しかし、オプションを指定すれば bowtie1 を使わせることもできる。本来なら bowtie2 を使いたいので、以 下のようにタイプするべきだ。 tophat2 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf -o ~/work/sakito/tophatresult_SRR401419 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/Bowtie2I ndex/genome ~/work/sakito/SRR401419_short_1.fastq しかし、テキスト執筆時点(2014.08.06)で Tophat2 がうまく bowtie2 のインデックスを見つけてくれない。理由はわから ない。今回は、暫定的措置として、bowtie1 を使用させる。bowtie2 を使用する場合に比べて、オプションに、”-bowtie1”を追加し、インデックスファイルの場所 を、”~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/Bowtie Index/genome”と変更する。以下のようにタイプすれば良い。 kitajima@kitajima[kitajima] tophat2 --bowtie1 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes /genes.gtf -o ~/work/sakito/tophatresult_SRR401419 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieI ndex/genome ~/work/sakito/SRR401419_short_1.fastq [2014-09-05 16:27:23] Beginning TopHat run (v2.0.9) ----------------------------------------------[2014-09-05 16:27:23] Checking for Bowtie Bowtie version: 1.0.1.0 [2014-09-05 16:27:23] Checking for Samtools Samtools version: 0.1.19.0 (中略) [2014-09-05 16:56:40] A summary of the alignment counts can be found in /home/manager/work/sakito/tophatresult_SRR401419/align_summary.txt [2014-09-05 16:56:40] Run complete: 00:29:17 elapsed kitajima@kitajima[kitajima] 結果は、指定した tophatresult_SRR401419 ディレクトリの accepted_hits.bam というファイルに書き込まれている。 (3-3) Cufflinks による FPKM の計算 このファイルを cufflinks というツールに読み込ませて張り付いたリード数を集計するのだが、そのまえに”samtools sort” というツールを使って、データの前処理をする。以下のようにタイプする。 32 kitajima@kitajima[kitajima] samtools sort ~/work/sakito/tophatresult_SRR401419/accepted_hits.bam ~/work/sakito/tophatresult_SRR401419/sort_accepted_hits kitajima@kitajima[kitajima] tophatresult_SRR401419 ディレクトリに sort_accepted_hits.bam という名前のファイルができたはずだ。これを cufflinks に読ませる。次のような書式で入力すれば良い。 cufflinks -o 出力先ディレクトリ -p CPU のスレッド数 -G gtf ファイル名 入力ファイル(bam) 今回は次のようにタイプする。出力先は、tophatresult_SRR401419 ディレクトリとしておく。 kitajima@kitajima[kitajima] cufflinks -o ~/work/sakito/tophatresult_SRR401419/ -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes /genes.gtf ~/work/sakito/tophatresult_SRR401419/sort_accepted_hits.bam Warning: Your version of Cufflinks is not up-to-date. It is recommended that you upgrade to Cufflinks v2.2.1 to benefit from the most recent features and bug fixes (http://cufflinks.cbcb.umd.edu). [17:00:37] Loading reference annotation. [17:00:39] Inspecting reads and determining fragment length distribution. > Processed 31356 loci. > Map Properties: > Normalized Map Mass: 137260.00 > Raw Map Mass: 137260.00 > > > [*************************] 100% Fragment Length Distribution: Truncated Gaussian (default) Default Mean: 200 Default Std Dev: 80 [17:00:50] Estimating transcript abundances. > Processed 31356 loci. [*************************] 100% kitajima@kitajima[kitajima] tophatresult_SRR401419 ディレクトリに genes.fpkm_tracking という名前のファイルができているはずだ。LibreOffice calc で開いてみよう。ファイルを読み込むときに区切りのオプションをきかれるはずなので、”タブ区切り”にチェックを いれ、他はオフにする。 33 アラビドプシスの場合、遺伝子には ATxGxxxxx というような ID が割り当てられている。例えば AT1G01030 は、 Arabidopsis thaliana の第 1 染色体の第 01030 遺伝子、という具合だ。このファイルでは、第 1 および第 4 フィールド に遺伝子 ID、第 5 フィールドに遺伝子の名称が並んでいる。第 10 フィールドには FPKM という数値がかかれている。 FPKM は、Fragments Per Kilobase of exon per Million mapped fragments の略で、テッポウユリのところで出てきた RPKM と似ている。RPKM がリファレンス配列にマップされたリードの数を表現する変数だったのに対し、FPKM では、 リードではなく cDNA 断片の数を数えている。張り付いた断片の数を、RPKM の場合と同様、リファレンス配列 1000 塩 基長当たりとリード総数 100 万当たりで標準化している。詳しくは、以下のブログを読むとよい。 http://shortreadbrothers.blogspot.jp/2011/06/fpkmrpkm.html これで、発現ランキングができた。FPKM 値の高い遺伝子は低い遺伝子よりも発現レベルが高い。 (3-4) シェルスクリプトで自動化してみる (3-4-1) まずは書いてみる 同じようにして、のこり2つの sra ファイルから FPKM ランキング表を作ろう。ファイル名が異なるだけで作業内容自体 は定型化しているので、シェルスクリプトにしておくと便利だ。以下の内容で、テキストファイルを作成し、 ~/work/sakito においておく。ファイル名は、”sra2cufflinks_1.sh”としよう。見慣れない記号を解説しておくと、1 行め の”#!/bin/bash”は、このファイルがシェルスクリプトであることを宣言している。2 行め以降の#から始まる行は、コメント 行なので、実行時には無視される。echo “------”と言う行は、”にはさまれた文字をモニタに表示せよ、というコマンド 34 である。他の行は、すでに SRR401419 で実施したコマンドと同じだ。ただし、ファイル名と出力先ディレクトリの名前だ けは変えてある。 #!/bin/bash #本スクリプトの実行には、各 SRR ファイルが~/work/sakito/においてあることが前提。ただし、”sakito”の部分は各 自のユーザー名に置き換える。以下も同様。 #Arabidopsis の gtf ファイルは ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes /genes.gtf にあること。 #Tophat2 で使用する bowtie は、暫定措置として bowtie1 を使う。 #Arabidopsis ゲノム配列の bowtieindex は、 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome にあること #-------------------------------#sratoolkit により sra を fastq に変換する。 echo “converting SRR401420.sra to fastq” ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/SRR401420.sra --split-files -O ~/work/sakito echo “converting SRR401421.sra to fastq” ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/SRR401421.sra --split-files -O ~/work/sakito #最初の120万行を抜き出してサブセットをつくる echo “creating subset of 1.2M lines” head -1200000 ~/work/sakito/SRR401420_1.fastq > ~/work/sakito/SRR401420_short_1.fastq head -1200000 ~/work/sakito/SRR401421_1.fastq > ~/work/sakito/SRR401421_short_1.fastq #Tophat2 with bowtie1 echo “Tophat2 with bowtie1 SRR401420_short_1” tophat2 --bowtie1 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf -o ~/work/sakito/tophatresult_SRR401420 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome ~/work/sakito/SRR401420_short_1.fastq echo “Tophat2 with bowtie1 SRR401421_short_1” tophat2 --bowtie1 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf -o ~/work/sakito/tophatresult_SRR401421 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome ~/work/sakito/SRR401421_short_1.fastq #samtools でソートする echo “samtools for sorting SRR401420_short_1” samtools sort ~/work/sakito/tophatresult_SRR401420/accepted_hits.bam ~/work/sakito/tophatresult_SRR401420/sort_accepted_hits 35 echo “samtools for sorting SRR401421_short_1” samtools sort ~/work/sakito/tophatresult_SRR401421/accepted_hits.bam ~/work/sakito/tophatresult_SRR401421/sort_accepted_hits #cufflinks で FPKM 計算 echo “cufflinks SRR401420_short_1” cufflinks -o ~/work/sakito/tophatresult_SRR401420/ -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf ~/work/sakito/tophatresult_SRR401420/sort_accepted_hitst.bam echo “cufflinks SRR401421_short_1” cufflinks -o ~/work/sakito/tophatresult_SRR401421/ -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf ~/work/sakito/tophatresult_SRR401421/sort_accepted_hits.bam sra2cufflinks_1.sh ファイルが出来上がったら、実行してみよう。以下のようにタイプしたら、終わるまで待っていればよ い。しかし、エラーメッセージが出ていないか、ぐらいは確認したほうがよい。予期しない動作をしている場合は、 control を押しながら c とタイプすると強制終了できる。ともあれ、これで 3 回の繰り返し実験の FPKM 値がそろったの で、いつもの統計学解析に持ち込める。実験条件を変えて同じように測定を 3 回実施すれば統計学的な比較解析も 可能だ。 kitajima@kitajima[kitajima] bash ~/work/sakito/sra2cufflinks_1.sh (3-4-2) もう少し高度なシェルスクリプト - 繰り返し処理 しかし、上のようなシェルスクリプトの書き方だと、同じような命令文を何度も書かなくてはならない。sra ファイルの数が 増えると、書き間違えそうだ。この様な時には、for 文による繰り返し処理が有効だ。sra2cufflinks_1.sh を以下のように 手直ししてみる。sra ファイルがいくつあろうとも、一連の処理は一回だけしか書いていない。その代わり、あらかじめど んな sra ファイルがあるか教えて、それらについて同じ処理を繰り返すよう指示する。具体的には、スクリプト内の(1)で は、SRR_array という配列を設定して SRR401419、SRR401420 と SRR401421 の 3 つの値を入力した。 (2)の行では、 SRR_array に入っている SRR401419、SRR401420 と SRR401421 を、ひとつずつ順番に SRR_data という変数に代入し て、(3)の do から(4)の done までの間の処理を繰り返し実行しなさい、と指示している。 ${SRR_data}という文字列がと ころどころに使われているが、実行時には、ここに SRR401419、SRR401420 と SRR401421 が代入される。 このスクリ プトをテキストファイルに保存して、~/work/sakito ディレクトリにおいておく。ファイル名は、”sra2cufflinks_2.sh”としよう。 #!/bin/bash #本スクリプトの実行には、各 SRR ファイルが~/work/sakito/においてあることが前提。ただし、”sakito”の部分は各 自のユーザー名に置き換える。以下も同様。 #Arabidopsis の gtf ファイルは 36 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes /genes.gtf にあること。 #Tophat2 で使用する bowtie は、暫定措置として bowtie1 を使う。 #Arabidopsis ゲノム配列の bowtieindex は、 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome にあること #-------------------------------# ↓(1) SRR_array=("SRR401419" "SRR401420" "SRR401421") # ↓(2) for SRR_data in "${SRR_array[@]}" # ↓(3) do echo "Analyzing $SRR_data" #sratoolkit により sra を fastq に変換する。 echo “converting sra to fastq” ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/${SRR_data}.sra --split-files -O ~/work/sakito #最初の120万行を抜き出してサブセットをつくる echo “creating subset of 1.2M lines” head -1200000 ~/work/sakito/${SRR_data}_1.fastq > ~/work/sakito/${SRR_data}_short_1.fastq #Tophat2 with bowtie1 echo “Tophat2 with bowtie1” tophat2 --bowtie1 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf -o ~/work/sakito/tophatresult_${SRR_data} ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome ~/work/sakito/${SRR_data}_short_1.fastq #samtools でソートする echo “samtools for sorting” samtools sort ~/work/sakito/tophatresult_${SRR_data}/accepted_hits.bam ~/work/sakito/tophatresult_${SRR_data}/sort_accepted_hits #cufflinks で FPKM 計算 echo “cufflinks” cufflinks -o ~/work/sakito/tophatresult_${SRR_data}/ -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf ~/work/sakito/tophatresult_${SRR_data}/sort_accepted_hits.bam # ↓(4) 37 done 以下のようにタイプして実行する。 kitajima@kitajima[kitajima] bash ~/work/sakito/sra2cufflinks_2.sh (3-4-3) R をつかって表を連結するシェルスクリプト ここまでで、3 つの sra ファイルから各遺伝子の FPKM 値を得た。tophatresult_SRR401419、tophatresult_SRR401420、 tophatresult_SRR401421 の各ディレクトリの中の genes.fpkm_tracking というファイルに FPKM 値が書き込まれている。 これらを R で読み込んで手作業で連結することも可能であるが、sra ファイルの数がもっと増えると大変なので、この作 業もシェルスクリプトで自動化してみよう。次のシェルスクリプトでは、(1)の行で、echo コマンドをファイルへの書き込み に使っている。(1)から(2)までのスクリプトで、genes.fpkm_tracking から遺伝子 ID と FPKM を抜き出して、sra ファイル 名_FPKM_list.csv というファイルに書き込んでいる。 また、(2)の”sed -e”というのは、指定する行を除去するコマンドである。(3)の”R --quiet --vanilla << EOF”の行から (4)の EOF と書いてある行までは、R のスクリプトである。R スクリプトの中では、ホームディレクトリから、ファイル名 に”_FPKM_list.csv”という文字列を含むファイルをすべて読み込んで、遺伝子 ID が揃うようにファイルをひとつずつ 順番に連結している。最後に、結果を Merged_FPKM.csv に書きだす。このスクリプトを merge.sh と名づけて ~/work/sakito ディレクトリに保存する。 #!/bin/bash #このスクリプトは、sra2cufflinks_2.sh を実行した後につかう。 #-------------------------------SRR_array=("SRR401419" "SRR401420" "SRR401421") #まず、遺伝子の ID(第 4 フィールド)と遺伝子名(第 5 フィールド)を新しいファイルに書き出す。抽出元は変数 $SRR_array の 1 番目に収納されている sra ファイルの結果。 cat ~/work/sakito/tophatresult_${SRR_array}/genes.fpkm_tracking | cut -f4,5 > ~/work/sakito/Name_FPKM_list.csv for SRR_data in "${SRR_array[@]}" do #遺伝子 ID と sra ファイル名をタブ区切りで新しいファイルに書き込む。これがタイトル行になる。 # ↓(1) echo -e "gene_id""\t""${SRR_data}" > ~/work/sakito/${SRR_data}_FPKM_list.csv #それぞれの genes.fpkm_tracking から第一行目(タイトル行)を削除した後、遺伝子 ID(第 4 フィールド)と FPKM(第 10 フィールド)を抽出して追記する。 # ↓(2) cat ~/work/sakito/tophatresult_${SRR_data}/genes.fpkm_tracking |sed -e '1,1d'| cut -f4,10 >> ~/work/sakito/${SRR_data}_FPKM_list.csv 38 done #-----------------------------------------#出力されたそれぞれの FPKM リストをマージして1つの csv ファイルにまとめる。 # R にファイルを読み込ませるため作業ディレクトリをファイルのあるディレクトリに移行する。 cd ~/work/sakito # ↓(3) R --quiet --vanilla << EOF #以下、EOF まで R のスクリプト #~/work/sakito ディレクトリ内の_FPKM_list.csv ファイルのファイル名を一括して変数 fnames に入力する。 fnames <- dir(path = "~/work/sakito", pattern="_FPKM_list.csv") fnames csvlist <- lapply(fnames,read.csv,header=T,sep="\t") #fnames に格納したファイルの中身を順次 csvlist に読み込まれる。ヘダーがカラム名であること、タブ区切りである ことを指定。 names(csvlist) <- fnames #fnames に格納したファイル名を names という変数にする。 n <- length(csvlist) n #ファイルの個数を n に入力。 # まず 1 つめのファイルの中身を temp に入力し、そこへ 2 つめ以降のファイルを順次マージする。all=T は行が一 致しない場合、足りないほうに NA を記入する。 temp <- csvlist[[1]] for (i in 2:n) { temp <- merge(temp, csvlist[[i]], all=T) } write.table(temp, file="~/work/sakito/Merged_FPKM.csv", row.names=FALSE, sep="\t") #マージの結果を Merged_FPKM.csv に書きだす。行番号を書かない、タブ区切りを指定。 # ↓(4) EOF #ホームディレクトリに戻る cd ~ 以下のようにタイプして実行する。 kitajima@kitajima[kitajima] bash ~/work/sakito/merge.sh 39 Merged_FPKM.csv を Libre Office calc で開くと右 のようになっているはずだ。 (3-4-4) TopHat2 の実行から結果ファイルの連結ま でを自動化するシェルスクリプト ついでに、ここまで作った sra2cufflinks_2.sh と merge.sh をまとめて1つのシェルスクリプトにしてお く。ファイル名は、sra2cufflinks_3.sh としておく。くり かえしになるが、もう一度書いておくと、このシェル スクリプトは、アラビドプシス用で、Bio-Linux 8 での 使用を前提にしている。TopHat2 を実行するときに 不本意ながら bowtie1 を用いている。また、計算時間を短くするために、マッピングに使う fastq ファイルは、オリジナ ルファイルの冒頭 30 万リードだけを抜き取ったものだ。解析したい sra ファイルを指定するために、スクリプトの途中に ある、”SRR_array=("SRR401419" "SRR401420" "SRR401421")”という行のカッコ内に sra ファイル名を書く必要がある。 実行すると、各 sra ファイルから計算された FPKM 値を Merged_FPKM.csv に書き出す。 #!/bin/bash #本スクリプトの実行には、各 SRR ファイルが~/work/sakito/においてあることが前提。ただし、”sakito”の部分は各 自のユーザー名に置き換える。以下も同様。 #Arabidopsis の gtf ファイルは ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes /genes.gtf にあること。 #Tophat2 で使用する bowtie は、暫定措置として bowtie1 を使う。 #Arabidopsis ゲノム配列の bowtieindex は、 ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome にあること #-------------------------------#↓この行に解析したい sra ファイル名を書く SRR_array=("SRR401419" "SRR401420" "SRR401421") for SRR_data in "${SRR_array[@]}" do echo "Analyzing $SRR_data" #sratoolkit により sra を fastq に変換する。 echo “converting sra to fastq” ~/_Tools/sratoolkit/bin/fastq-dump ~/work/sakito/${SRR_data}.sra --split-files -O ~/work/sakito 40 #最初の120万行を抜き出してサブセットをつくる echo “creating subset of 1.2M lines” head -1200000 ~/work/sakito/${SRR_data}_1.fastq > ~/work/sakito/${SRR_data}_short_1.fastq #Tophat2 with bowtie1 echo “Tophat2 with bowtie1” tophat2 --bowtie1 -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf -o ~/work/sakito/tophatresult_${SRR_data} ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BowtieIn dex/genome ~/work/sakito/${SRR_data}_short_1.fastq #samtools でソートする echo “samtools for sorting” samtools sort ~/work/sakito/tophatresult_${SRR_data}/accepted_hits.bam ~/work/sakito/tophatresult_${SRR_data}/sort_accepted_hits #cufflinks で FPKM 計算 echo “cufflinks” cufflinks -o ~/work/sakito/tophatresult_${SRR_data}/ -p 3 -G ~/work/sakito/Arabidopsis_thaliana_Ensembl_TAIR10/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/ genes.gtf ~/work/sakito/tophatresult_${SRR_data}/sort_accepted_hits.bam #genes.fpkm_tracking から遺伝子 ID と FPKM 値を新しいファイルを作成する。 echo “遺伝子 ID と FPKM 値を抽出” #遺伝子 ID と sra ファイル名をタブ区切りで新しいファイルに書き込む。これがタイトル行になる。 echo -e "gene_id""\t""${SRR_data}" > ~/work/sakito/${SRR_data}_FPKM_list.csv #それぞれの genes.fpkm_tracking から第一行目(タイトル行)を削除した後、遺伝子 ID(第 4 フィールド)と FPKM(第 10 フィールド)を抽出して追記する。 cat ~/work/sakito/tophatresult_${SRR_data}/genes.fpkm_tracking |sed -e '1,1d'| cut -f4,10 >> ~/work/sakito/${SRR_data}_FPKM_list.csv done #genes.fpkm_tracking から遺伝子の ID(第 4 フィールド)と遺伝子名(第 5 フィールド)を新しいファイルに書き出す。 抽出元は変数$SRR_array の 1 番目に収納されている sra ファイルの結果。 cat ~/work/sakito/tophatresult_${SRR_array}/genes.fpkm_tracking | cut -f4,5 > ~/work/sakito/Name_FPKM_list.csv #-----------------------------------------#出力されたそれぞれの FPKM リストをマージして1つの csv ファイルにまとめる。 # R にファイルを読み込ませるため作業ディレクトリをファイルのあるディレクトリに移行する。 cd ~/work/sakito R --quiet --vanilla << EOF #以下、EOF まで R のスクリプト 41 #~/work/sakito ディレクトリ内の_FPKM_list.csv ファイルのファイル名を一括して変数 fnames に入力する。 fnames <- dir(path = "~/work/sakito", pattern="_FPKM_list.csv") fnames csvlist <- lapply(fnames,read.csv,header=T,sep="\t") #fnames に格納したファイルの中身を順次 csvlist に読み込まれる。ヘダーがカラム名であること、タブ区切りである ことを指定。 names(csvlist) <- fnames #fnames に格納したファイル名を names という変数にする。 n <- length(csvlist) n #ファイルの個数を n に入力。 # まず 1 つめのファイルの中身を temp に入力し、そこへ 2 つめ以降のファイルを順次マージする。all=T は行が一 致しない場合、足りないほうに NA を記入する。 temp <- csvlist[[1]] for (i in 2:n) { temp <- merge(temp, csvlist[[i]], all=T) } write.table(temp, file="~/work/sakito/Merged_FPKM.csv", row.names=FALSE, sep="\t") #マージの結果を Merged_FPKM.csv に書きだす。行番号を書かない、タブ区切りを指定。 EOF #ホームディレクトリに戻る cd ~ 最後に、ここまで学んだことをどのようにして研究に活用するかを知ってもらうために、次の演習課題を挙げておく。 演習課題2 NCBI SRA データベースに登録されているアクセッション No.SRX117110 (http://www.ncbi.nlm.nih.gov/sra/SRX117110)に含まれる 3 つの sra データ(SRR401428, SRR401429, SRR401430)は、ある変異体の花托の mRNA-seq データで、上でもちいた SRR401419, SRR401420 および SRR401421 はそれらの野性型コントロールである。これら 6 つの sra データを使って、変異体と野性型の間での発 現を比較し、統計学的有意さを考慮した上で大きな変動のある遺伝子を見付けなさい。もし可能なら、大きく発現 変動した遺伝子がどのような機能をもつか調べて、この遺伝子変異が花の生理にどにのような影響を与えているの かを推察しなさい。 参考サイト; http://www.ncbi.nlm.nih.gov/Traces/sra/?study=SRP010481 http://www.ncbi.nlm.nih.gov/pubmed/23327667 42 43 4. 参考文献その他 高速シーケンサーとそのデータ解析 ; ・ 菅野 純夫, 鈴木 穣, 次世代シークエンサー―目的別アドバンストメソッド 学研メディカル秀潤社 (2012/09) ISBN10: 4780908558 ・ 門田 幸二, トランスクリプトーム解析 (シリーズ Useful R 7), 共立出版 (2014/4) ISBN-10: 4320123700 シェルスクリプトの書き方 ; ・ 麻生二郎、誰でも簡単に書けるシェルスクリプト入門、日経 Linux、第 174 号 (2014 年 3 月号) p97-108 ( http://mikke.g-search.jp/QNBP_LIN/2014/20140301/QNBP384876.html ) Linux のコマンドと設定の全般 ; コマンド自身にヘルプが埋め込まれているので、端末で、”コマンド --help”、”コマンド -help”、”コマンド -h”、あるい はコマンド名だけをタイプしてみるとよい。例えば、more というコマンドをタイプすると、以下のように、どのようなオプシ ョンを指定できるか表示される。 kitajima@kitajima-BioLinux[kitajima] more Usage: more [options] file... Options: -d display help instead of ring bell -f -l -p -c count logical, rather than screen lines suppress pause after form feed suppress scroll, clean screen and disblay text suppress scroll, display text and clean line ends (以下省略) 他にも、インターネット上に解説サイトや実施例が多数存在する。例えば、”Linux, sed の使い方”、”Linux, ファイルか ら特定の文字列を含む行を抽出する方法"、 “Linux, 2 つのファイルを結合する方法"、"linux, 文字列を置換したい”、 というようなキーワードでググってみるとよい。 本実習で使用する Bio-Linux 8 の場合、バイオツール以外は Ubuntu 14.04 LTS という Linux そのものなので、OS レベルの一般的な設定方法を知りたい場合には、”Ubuntu, 日本語設定 "というように検索するとよい。 44 各解析ツールの使用方法 ; Linux の一般的なコマンド同様、上記のような方法でヘルプを表示させることができる。また、そのツールのサイトを見 ると詳細な英語での説明がある。多くの日本のユーザーが紹介ブログやトラブルシューティングを日本語で書いてい るので、それらも参考にするとよい。 補足資料 京都工芸繊維大学 情報科学センター Bio-Linux 8 利用の手引き (2014-09-04) ● 初めに この手引きでは、情報科学センターのシステムに固有な Bio-Linux 8 の使用方法について説明します。以下にある < ユーザ名> は情報科学センターアカウントのユーザ名です。 ● NEBC Bio-Linux 8 標準インストールとの相違点 * ulimit -s unlimited されています 以下の追加ソフトウェアが ~/_Tools/ にインストールされています。端末でディレクトリに入り、ご利用ください。 * Trinity RNA-seq * SRA Toolkit * Velvet (MAXKMERLENGTH=99) * Oases (MAXKMERLENGTH=99) ● NEBC Bio-Linux 8 の起動 1. 演習室の Windows に自身のユーザでログオンします。 2. すべてのプログラム→ Bio-Linux 8 を選択します。 3. VirtualBox のウィンドウが立ち上がり NEBC Bio-Linux が起動します。 ● NEBC Bio-Linux 8 の終了 1. 画面左上端のアイコンをクリックし、メニューからシャットダウンを選びます。 2. ダイアログが出てきたらシャットダウンを選びます。 3. シャットダウン処理後、自動的に VirtualBox のウィンドウが閉じます(~/work/<ユーザー名>/のデータを除きすべ てクリアされます)。 ● 演習フォルダ /home/manager/ (今回のシステムでは~/と同じ) は空き容量が少ないので、~/work/<ユーザー名>/ 配下で演習を 実施してください。今回の実習で使用するシステムでは、まず端末で~/work/<ユーザー名>にカレントディレクトリを移 すと、ユーザー名のディレクトリが自動的に作成されます。例えばアカウント名 sakito の場合、以下の青字部分のよう にタイプします。 manager@bl8vbox[manager] cd work/sakito manager@bl8vbox[sakito] ● 演習データの配布 演習データの配布にファイル共有サービスをご利用いただけます。 ウェブブラウザで https://proself01.cis.kit.ac.jp/にアクセスして、情報科学センターアカウントでログインします。 bioinfo フォルダが配布用の共有領域(注: 学生の情報科学センターアカウントでは読み取り専用です) 45 <ユーザ名>フォルダが個人領域(注: 情報科学センターアカウントの ~/Proself/ に紐付けられています。1GB 制限が ありますのでご注意下さい) になっています。 ファイル共有をディレクトリとして認識させたい場合は、ファイルマネージャー の”サーバーへ接続” を選んで davs://<ユーザ名>@proself01.cis.kit.ac.jp/ に接続します。接続する際パスワードを求められますので、情報科学センターアカウントのパスワードを入力します。 接続に成功すると、 /run/user/1001/gvfs/dav:host=fileshare.cis.kit.ac.jp,ssl=true,user=<ユーザ名>/ にマウントされます。 46
© Copyright 2024 Paperzz