あなたにもできる!ハーバード留学!!~アラフォーからのボストン留学体験記

アラフォー研究者のボストン留学体験ブログ。
研究・生活・英語・ITを中心に留学ライフハックスをお教えします!

kallisto使ってみた!

2016-12-28 12:53:41 | ネットブックで行うNGS解析
Psudoalignmentというある意味姑息な手法を使って高速にRNA-seq data解析を行うソフトkallisto使ってみた。

インストールその他は、チュートリアルGetting Started及びKallistoInstallが詳しい!

リファレンスゲノムファイル(cDNA)をEnsembleのFTPサイトで落とし、macのterminalで

$ Kallisto index -i myMouseIndex Mus_musculus.GRCm38.cdna.all.fa

としてインデックスファイルをつくる。

その後kallistoのマニュアルを参考に、kallistoの定量のコマンドを打ち込めば良い!

今回pair endedのシーケンスだったため、XXX_SYYY_L001_R1_001.fastq, XXX_SYYY_L001_R2_001.fastqという2種のファイルがあったのだけれど、それぞれR1, R2というディレクトリを作り移動!

$ mkdir R1, R2

$ mv *_R1_* R1
$ mv *_R2_* R2

それから実際のコマンドをうちこむ。ファイル名は共通部分をbasenameコマンドで、変数として切り取り利用すれば良い!

変数の定義の際に=の前後でスペースを入れないこと
変数をテキストとして使う場合に${変数%%.test}を使うところに気づかずちょっと手間取ったが、

以下で、カウンティングファイルとともにBAMファイルも作ってくれる!(前もってsamtoolsのインストールが必要である)。

$ for file in R1/*.fastq

do

echo $file
basef=`basename $file _L001_R1_001.fastq`
R1file=${basef%%.text}_L001_R1_001.fastq
R2file=${basef%%.text}_L001_R2_001.fastq
echo $R1file
echo $R2file
kallisto quant -i myMouseIndex -o ${basef%%.text} --pseudobam R1/$R1file R2/$R2file | samtools view -bS - > ${basef%%.text}.bam

done

で各サンプルごとのフォルダにカウントファイルほか、BAMファイルもつくってくれる!

次に

for folder in *_S*
do
echo $folder
cp ${folder%%.txt}/abundance.tsv ${folder%%.txt}_abundance.tsv
done

で各フォルダーに保存してあるカウントファイルにサンプル名をつけたファイルができる。

kallistoの文献はこちら
kallistoの紹介記事Kallisto, a new ultra fast RNA-seq quantitation method




ネットブックで行うNGS解析008:RNA-seqのデーターから発現する蛍光タンパクを同定してみる

2014-10-18 09:59:58 | ネットブックで行うNGS解析
RNA-seqのデーターを利用して、人工的に入れた遺伝子、たとえば蛍光タンパクなどの遺伝子が何か同定できる。基本的には染色体にマップした後でのこったunmapped sequenceを再度、トランスジーンの遺伝子にマップしてみる手法である。

そんなに重要な解析ではないが、QCの一環として、それぞれ別々の蛍光タンパク(Tdimer2とCerulean)を発現する細胞から、とってきたRNA-seqデーター(74.bam, 75.bam)から本当に前情報と同じ蛍光タンパクを発現しているかどうか(同じはずであるが)チェックしてみたところ、そこそこうまくいったので、紹介しておく。

多分蛍光タンパク以外にも、CAGプロモーターのようにもともとない配列であれば同様の方法が可能である。

こうした方法のポイントは、このケースのように、ネガコンとポジコンが確保できていることである(お互いどちらかしか発現していない複数サンプルなど
)。

また蛍光タンパクによっては、CFPやYFP,GFPのようにほとんどシーケンスが変わらないものもあるので、そのような場合には難しいかと思われる。

具体的には、CAGの配列に対して前に試みた解析手法と同じ手法をつかう。

Tdimer2とCeruleanのfastaqファイル及びindexファイル作成は前回と同様、あadgeneのサイトなどからとってくる(今回は導入したプラスミド情報をもともともっていたので、それからfastaqファイルをOPEN OFFICEのエディターでつくった。WORDでも可能と思われる)。

1)BAM fileからunmapped sq抽出
$ samtools viwe -f4 -b 74.bam | samtools sort -74-unmp
$ samtools viwe -f4 -b 74.bam | samtools sort -74-unmp

$ samtools index 74-unmp.bam
$ samtools index 75-unmp.bam

2)Tdimer アラインメント

$ bwa aln -b Td.fa 74-unmp.bam -> 74_T.sai
$ bwa aln -b Td.fa 75-unmp.bam -> 75_T.sai

3)SAI -> SAM変換

$ bwa samse Td.fa 74_T.sai 74-unmp.bam > 74_T.sam
$ bwa samse Td.fa 75_T.sai 74-unmp.bam > 75_T.sam

4)SAM->BAM変換

$ samtools view -bS 74_T.sam > 74_T.bam
$ samtools view -bS 75_T.sam > 75_T.bam

5)ソート
$ samtools sort 74_T.bam 74_T_sort
$ samtools sort 75_T.bam 75_T_sort

6)インデックス作成

$ samtools index 74_T_sort.bam
$ samtools index 75_T_sort.bam

7)結果表示

$ samtools idxstats 74_T_sort.bam
$ samtools idxstats 75_T_sort.bam

てな具合である。
主力結果は

74が
Tdimer 1395 1117 17
* 0 0 15976919

75が
Tdimer 1395 0 0
* 0 0 17205327

のようにでてくる。
このうち2つ目のカラムの上が、マップされたリード数だから(詳しくはsamtools使い方参照)、74のunmapped sequence のうち、1117リードがTdimerの配列にマップされた、一方で75のunmapped sequence のうちTdimerの配列にマップされたものはなかったということになる。

Ceruleanへのアラインメント及び結果表示も同様。

74が
Ceru 825 7 0
* 0 0 17205454

75が
Ceru 825 4451 114
* 0 0 15972354
となっている。74のほうは4リードが、75のほうは4451リードがunmapped sequenceからCeruleanの配列にマップされたことになる。

定性的ではあるが、これで74がTdimer, 75がCeruleanを発現していることがわかり、前情報とサンプルの中に発現している蛍光タンパクは同じであると考えられる。うまく蛍光タンパクの発現が同定できたということである。





ネットブックで行うNGS解析007:ちょいしょぼ解析覚書。。

2014-10-18 02:25:11 | ネットブックで行うNGS解析
共同研究でRNA-seqデーター解析をしており、性懲りもなくデーターをもらってきて勉強がてら解析してみることにした(*)。

Pair-endのデーターなので

> bowtie -S -p 2 mm9 -1 X_1.fastq -2 X_2.fastq X.sam (**)

でいいはず。
しかし、ほとんどがunmappedになってしまう。

ん?とりあえず、トラブルシュートを検討します。

とりあえず片側だけでやった方が、unmappedがすくなそうなので(***)、

ためしてみる。

> bowtie -S -p2 mm9 X_1.fastq X_1.sam

としunmapped sequenceを抽出してみることとする。

★Sam->Bam変換

> samtools view -bS X_1.sam > X_1.bam

★unmappedシーケンスの抽出

> samtools viwe -f4 -b X_1.bam | samtools sort -X_1-unmp (****)
> samtools index X_1-unmp.bam

と遅くなってきたので、今日はここまで。。
PCが遅い。。(涙)

(2014年9月3日追記)

★多色蛍光マウスなので、CAG-GFPの配列にあててみることとする。

詳しくは、STAP細胞関係のゲノムデータを解析してみた7619にある通りなのだが、

1)CAG-GFPの配列をとってき、fast形式のの配列をつくる(CAG.fa)(ここはSTAP細胞関係のゲノムデータを解析してみた7619を参照のこと)

2)インデックスをつくる。

>bwa index -a bwtsw cag.fa

3)次にアラインメントするが、ここはSTAP細胞関係のゲノムデータを解析してみた7619の通りだとなぜかうまくいかなかった。

そこでお手本のように引数を渡す手法でなく、分割しておこなった。
本当はbowtieが使えるとよいのだけれど、bamファイルでの入力ができない。

まずアラインメント
>bwa aln -b CAG.fa X_1_unmp.bam -> X_1-cag.sai

次にsai -> sam変換
>bwa samse CAG.fa X_1-cag.sai X_1_unmp.bam > X_1-cag.sam

sam -> bam変換

>samtools view -bS X_1-cag.sam > X_1-cag.bam

ソート
>samtools sort X_1-cag.bam X_1-cag_sort

インデックス作成

>samtools index X_1-cag_sort.bam

で無事作業は終わっていると思う。

最後にアラインメントされたところのみをみると、

>samtools view -F4 X_1-cag_sort.bam

のように出力できる。
ということで今日はここまで。

(2014年9月18日&10月18日)

出力は見にくいので、

>samtools view -F4 X_1-cag_sort.bam > X_1-cag.txt

みたいにファイル出力して、あとでエクセルで見た方がよいかも。

また単にあたっているかどうか、見るだけなら、

>samtools idxstats X_1-cag_sort.bam > X_1-cag.txt

でもよいかもしれない。

列番号     説明      例
1 リファレンスの配列名 CAG
2 リファレンスの配列長 6118
3 マップリード数     311
4 非マップリード数 0  

のように何本あたっているかが表示される。詳細はsamtoolsの使い方参照。


(*)いつぞやのSTAPデータでは、メモリ不足でこりました。今回は多少Ubuntuを高速化したりしてリトライです。何とかネットブックでも遊べそうな勢いです。何でSTAPデータはあんなに巨大だったのか。。
(**)Xはサンプル名です。
(***)何かやり方を間違っているのだろう。それでも30%くらいある。
(****)詳しくは以下のサイトが参考になる。

1)STAP細胞関係のゲノムデータを解析してみた7619

2)sam形式ファイルsam format

ちなみにsamtoolsのオプションの説明はsam形式ファイルsam formatを参考に。

-S はinput fileがsam形式であることを指定している。
-f は許可する数字,この場合4なのでマップされていないリードを許可します。
-Fは許可しない数字,この場合194(128+64+2)なのでpaied endでマップされているリードは許可しない

その他のオプションの説明はsamtoolsの使い方
より

Options: -b output BAM
-h print header for the SAM output
-H print header only (no alignments)
-S input is SAM
-u uncompressed BAM output (force -b)
-x output FLAG in HEX (samtools-C specific)
-X output FLAG in string (samtools-C specific)
-c print only the count of matching records
-t FILE list of reference names and lengths (force -S) [null]
-T FILE reference sequence file (force -S) [null]
-o FILE output file name [stdout]
-R FILE list of read groups to be outputted [null]
-f INT required flag, 0 for unset [0]
-F INT filtering flag, 0 for unset [0]
-q INT minimum mapping quality [0]
-l STR only output reads in library STR [null]
-r STR only output reads in read group STR [null]
-? longer help

ネットブックで行うNGS解析006:ネットブックで行うRNA-seq(4)

2014-05-11 11:09:48 | ネットブックで行うNGS解析
 同様の内容をIT編で書いた。ブラッシュアップしたいのだが、現時点でまだできていないので、現状を載せておく(スペース確保のため)。

 ネットブックで行うRNA-seqデーター解析(3)でLT-HSCとST-HSCのデータがcuffdiffで処理されて、LT_HSC_VS_ST_HSC_cuffdiff_resultというフォルダにはいっているはずである。
 
 またネットブックで行うRNA-seqデーター解析(3.5)でその可視化ソフトであるcummeRbundがRにインストールされたはずである。

 今回はこのcummeRbundを用いて可視化を試みることとする(*)
なお準備としてRおよびcummeRbundのコマンドの概要を少し知っておいた方がよい。

Rに関しては二階堂愛さんのRの基礎が少し難しいがよいだろう(なお練習問題は必ずしも解けなくても大丈夫。オブジェクト指向の概要とコマンドの概要がわかればよい)。

cummeRbundに関してはinsilicodb.orgが英語だが割と実用的でよい。日本語のものはcummeRbund manualをそのまま訳したものが多く今一つ使いにくいが、
牧場の朝さんのと
二階堂愛さんのRNA-seqデーター解析
がわりかし使いよい。

まずLT_HSC_VS_ST_HSC_cuffdiff_resultフォルダから、diffという拡張子がついたデーターファイルをcuffというオブジェクトによみこむ(**)。

> cuff <- readCufflinks("LT_HSC_VS_ST_HSC_cuffdiff_result")

うまく読み込めていれば
>cuff
とやるとその概要を次のように表示してくれるはずである。
CuffSet instance with:
4 samples
23306 genes
30563 isoforms
25977 TSS
22856 CDS
139494 promoters
155862 splicing
113886 relCDS

遺伝子(genes)、アイソフォーム(isoforms)、転写開始点(TSS)などなどの情報。
ここでちょっとした分析を行うなら、

>csBoxplot(genes(cuff))
とやると各群のboxplotを表示してくれる(***)


>csDensity(genes(cuff))
とやると、densityplotを表示してくれる


さらに
> csDendro(genes(cuff))
とやると、樹形図を表示してくれる


そして
>csVolcanoMatrix(genes(cuff))
とやると、ボルケーノプロットを表示してくれる


 次にgenediffというオブジェクトに差のある遺伝子データ(genes)を読み込む。

> genediff <- diffData(genes(cuff))

全部を出すとちょっとめんどうなので、その最初の部分だけを表示させると

>head(genediff)

gene_id sample_1 sample_2 status value_1 value_2 log2_fold_change
1 0610005C13Rik q1 q2 NOTEST 0.0000 0.00000 0.00000e+00
2 0610007N19Rik q1 q2 OK 0.0000 3.78706 1.79769e+308
3 0610007P14Rik q1 q2 OK 197.9410 83.90660 -1.23821e+00
4 0610008F07Rik q1 q2 NOTEST 0.0000 0.00000 0.00000e+00
5 0610009B14Rik q1 q2 NOTEST 0.0000 0.00000 0.00000e+00
6 0610009B22Rik q1 q2 OK 94.5476 105.75900 1.61668e-01
test_stat p_value q_value significant
1 0.00000e+00 1.0000000 1.000000 no
2 1.79769e+308 0.1660150 0.533321 no
3 1.79123e+00 0.0732564 0.492534 no
4 0.00000e+00 1.0000000 1.000000 no
5 0.00000e+00 1.0000000 1.000000 no
6 -1.81075e-01 0.8563090 0.968486 no

このようなデーター構成になっていることがわかる。一番前にgene_idがあることに注目してこの差のある遺伝子のIDを取ってくると、

>genediffdataID <- genediff_data[,1]
として、

>genediffdataID
(前略)
[2293] "Tmem180" "Tmem194" "Tmem38a" "Traf3ip2"
[2297] "Trdmt1" "Trim23" "Tstd3" "Ttll1"
[2301] "Ubald1" "Ube2e2" "Ubxn11" "Vpreb3"
[2305] "Wdr12" "Wnk1" "Xist" "Zbtb34"
[2309] "Zfp354a" "Zfp446" "Zfp523" "Zfp551"
[2313] "Zfp605" "Zfp810" "Zfp846" "Zfp90"
[2317] "Zfp92" "Zfyve19" "Zscan2"

とちゃんとIDがとれていることがわかる。

このgenediffdataIDは列ベクトル(Columun Vector)であるが、このIDをもとにデーターを取ってくる作業をするためには行ベクトル(Row Vector)である必要があり、転置変換を行う(****)。

> genediffdataID <- t(genediffdataID)

そしてmyGenesというオブジェクトにcuffというオブジェクトからこのgenediffdataIDを持つ遺伝子の情報だけとってくると、

>myGenes <-getGenes(cuff, genediffdataID)

Getting gene information:
FPKM
Differential Expression Data
Annotation Data
Replicate FPKMs
Counts
Getting isoforms information:
FPKM
Differential Expression Data
Annotation Data
Replicate FPKMs
Counts
Getting CDS information:
FPKM
Differential Expression Data
Annotation Data
Replicate FPKMs
Counts
Getting TSS information:
FPKM
Differential Expression Data
Annotation Data
Replicate FPKMs
Counts
Getting promoter information:
distData
Getting splicing information:
distData
Getting relCDS information:
distData

とデーターがとってこられる。

例えばmyGenesをもとにヒートマップを書かせてみると、

> csHeatmap(myGenes)
遺伝子が多すぎてわかりませんが、次のようになる。


myGenesをもとに4群でクラスター分析すると、

>k.means <-csCluster(myGenes, k=4)

その状況をグラフに書かせてみると、
> k.means.plot <- csClusterPlot(k.means)
> k.means.plot



q1,q2:LT-HSC
q3,q4:ST-HSC

であったので、もしあなたが血液学者なら、もっとも未分化な血液幹細胞LT-HSCで多く出ている遺伝子が何かしりたいところだろう。このクラスターのうち、q1,q2での発現が,q3,q4より多い、クラスター2のデーターがほしくなるはずである。

>k.means
とやると、クラスター分析のデーターをだしてくれ
(前略)
Mpst 2 3 0.4569913751
Ino80b 2 3 0.4508379672
Zfp697 2 3 0.4463841894
5730577I03Rik 2 3 0.4462468051
Ttc23 2 1 0.4423819910
Bai3 2 1 0.4386712043
Sh3pxd2a 2 3 0.4293128230
Nab2 2 3 0.4288460352
Jag1 2 4 0.4265375878
(中略)
C77080 2 4 -0.2102395161
D5Ertd605e 2 4 -0.2228394545
Srr 2 4 -0.2498411870
(後略)

とどんな遺伝子かわかる。
この遺伝子群のヒートマップをたとえば書かせてみるには、この遺伝子群のIDをエクセルにコピペして(*****)、タブ区切りのtxtファイルをつくる。

それをRに読み込んで、転置し

> CL2ID <- read.table("CL2.txt" , header=F, sep="t")
> CL2ID <- t(CL2ID)

データーをcuffから、Genes_CL2にとってきて、
>Genes_CL2 <-getGenes(cuff, CL2ID)
>csHeatmap(Genes_CL2)



これだと数が多いのでちょっとヒートマップで何かを言うことが難しい。

そこで発現量が高く(status列がOK)、統計的に優位なものだけ(significant列がyes)のものだけgenediffオブジェクトからとってくることとする(******)。

> genediff_data <- genediff[((genediff$status == 'OK')& (genediff$significant == 'yes')),]

なおこの操作をおこなうとgenediffオブジェクトのデーターは一部失われる。(*******)
IDをとって、データーをmyGenes2にいれ
> genediffdataID2 <- genediff_data[,1]
> genediffdataID2 <- t(genediffdataID2)
> myGenes2 <-getGenes(cuff, genediffdataID2)

4群のクラスター分析を行い
> k.means <-csCluster(myGenes2, k=4)
> k.means.plot <- csClusterPlot(k.means)
> k.means.plot
図をかかせてみると、

やはり遺伝子数はまだ多そうである。

統計的にいいのかどうかはわからないが6群でクラスター分析を行い
プロットすると、
> k.means <-csCluster(myGenes2, k=6)
> k.means.plot <- csClusterPlot(k.means)
> k.means.plot


クラスター6が面白そうである。
>k.means
でこの遺伝子がなにかしらべ、やや多いので上から50個をエクセルでCL6-50.txtファイルにいれ

> CL6ID <- read.table("CL6-50.txt" , header=F, sep="t")
> CL6ID <- t(CL6ID)
> Genes_CL6 <-getGenes(cuff, CL6ID)
> csHeatmap(Genes_CL6)
とやると

わりとみられる感じになる(********)。
また
>csHeatmap(Genes_CL6, cluster ='both')
とやると遺伝子の側でもクラスタリングしてくれる。


もう少しブラッシュアップしないといけないであろうが何とか、LT-HSCに高そうな遺伝子が取れてきているようである。ただ本当にValidなものなのかは、ほかのアレーやRNA-seqデーターを参照して分析しないといけないであろう。。




(*)ネットブックで行うRNA-seqデーター解析(4)としたかったのだが、ちょっとまだまとめきれていないので、IT編とした。
(**)この操作がRの基本である。
(***)cuffdiffでラベルがうまくつけられなかったつけがここにでている。q1,q2,q3,q4...
あと一部の群で0の値があり、それが少しデーターをおかしくしている気がする。
(****)そのままやると変なエラーメッセージがでます。
(*****)このあたりがド素人的な所以。。
(******)insilicodb.orgにあるスクリプトのようにp値(α値)で区切ってもよいのかもしれない。
 ちなみにα=0.05をカットオフにして、ヒートマップを書かせると
 > mySigGeneIds<-getSig(cuff,alpha=0.05,level='genes')
 > myGenes3<-getGenes(cuff,mySigGeneIds)
 > csHeatmap(myGenes3,cluster='both')
 
 のようになる。まだまだやのうー!
(*******)条件にあったものが消えている。
(********)gene_idが2重に表示される理由がまだ分からない。

ネットブックで行うNGS解析005:ネットブックで行うRNA-seq(3.5)

2014-05-11 11:08:17 | ネットブックで行うNGS解析
 アラフォーからのハーバード留学研究編017:ネットブックで行うRNA-seqデーター解析(3)で得られたように、今やcuffdiffやcufflinksの結果といったRNA-seqの初期解析データがあるはずだ。

次のステップはこれらのデーターをどう料理するかであるが、二階堂愛さんのRNA-seq Analysis With R/Bioconductorなどのページによると、統計処理に適したRという言語をいれて、そのうえでcummeRbund(カマーバンドというらしい)というRNA-seqデーター解析用のソフト(パッケージという)を走らせて、その可視化を行うことになる。

 これにはR+cummeRbundのインストールが必要であるが、初心者がはまりがちな落とし穴があるのでネットブックで行うRNA-seqデーター解析(3.5)として述べておく。

落とし穴とは

1)Rのパッケージインストールは管理者権限が必要である(やり方は下記参照)
2)cummeRbundを使うには、あらかじめRのグラフィック作成パッケージであるggplot2のインストールが必要である(デフォルトで入っていない)

の2点である。

 Rは最新版(3.0.2)をこちらからダウンロード(さらに最新版があればそれを)。

これをwindowsに指示通りにインストールする(デフォルト設定でよい)。


次に管理者権限でRを立ち上げる。これには(デフォルト設定で)ディスクトップ上にあるRのアイコンをRのアイコンを右クリックし、出てくるメニューで管理者として実行の部分をクリックする。詳しくはこちらのサイト(画像つきで詳しく説明)(これはパッケージのインストールの時のみで通常起動はアイコンをクリックするだけでよい)
 
するとRコンソールがでてくるので、

次にggplot2のインストールを行う₍*₎。

>install.packages("ggplot2", dependencies=TRUE)

とタイプすればよい。

次にcummeRbundのインストールを行う₍**₎。

>source("http://bioconductor.org/biocLite.R")
>biocLite("cummeRbund")

とタイプするだけでよい。
なおなにかきかれたらaと答えればよい

最後にインストールがうまくいっているか確認のためにcummeRbundの読み込み。
> library(cummeRbund)

とタイプすると

要求されたパッケージ ggplot2 をロード中です
Find out what's changed in ggplot2 with
news(Version == "0.9.3.1", package = "ggplot2")
要求されたパッケージ reshape2 をロード中です
要求されたパッケージ fastcluster をロード中です

次のパッケージを付け加えます: ‘fastcluster’
以下のオブジェクトはマスクされています (from ‘package:stats’) :

hclust

要求されたパッケージ rtracklayer をロード中です
要求されたパッケージ GenomicRanges をロード中です
要求されたパッケージ IRanges をロード中です
要求されたパッケージ Gviz をロード中です
要求されたパッケージ grid をロード中です

次のパッケージを付け加えます: ‘cummeRbund’

以下のオブジェクトはマスクされています (from ‘package:GenomicRanges’) :

promoters

以下のオブジェクトはマスクされています (from ‘package:IRanges’) :

promoters

となって、うまくcummeRbundが読み込まれるはずである。

最後にここで

> readCufflinks()

といれると

Creating database C:/Users/USERID/Documents/cuffData.db
Reading C:/Users/USERID/Documents/genes.fpkm_tracking
以下にエラー file(file, "rt") : コネクションを開くことができません
追加情報: 警告メッセージ:
In file(file, "rt") :
ファイル 'C:/Users/USERID/Documents/genes.fpkm_tracking' を開くこと

とうまくcummeRbundが動いていることがわかる。
もしエラーメッセージがでると何らかの原因でインストールがうまくいっていないことが考えられる。たとえばRとcummeRbundのバージョンがうまく合っていないこともある。この場合Rを最新版に変えてみるとうまくいくことがある。

なおここまでくれば次のデーターの可視化がすぐにでもできる状態である。

。(ネットブックで行うRNA-seqデーター解析(4)に続く)

₍*)Rのグラフィック作成パッケージ“ggplot2”についてより

₍**₎おまじない。東京大学の門田先生のサイト、Rで塩基配列解析より。ちなみにすごい情報量です。