2014年度 京都工芸繊維大学 遺伝子資源学実習および演習 バイオ

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