Kashiwa.R#9 Rでゲノム解析

27
1 13.10.11 Kashiwa.R#9 @ 駒駒駒駒駒駒駒 駒駒駒駒駒駒 R 駒駒駒 @yuifu おおおおおお おお : おおおおお おおおおお ,, NGS おおおおお R おおおおおおおおおおおおおおおおおお

Transcript of Kashiwa.R#9 Rでゲノム解析

Page 1: Kashiwa.R#9 Rでゲノム解析

1

13.10.11 Kashiwa.R#9 @ 駒場キャンパスゲノム解析で R を使う

@yuifuおざきはるか概要 : ゲノム解析,配列解析, NGS 解析などで R を実際にどう使っているかを紹介します.

Page 2: Kashiwa.R#9 Rでゲノム解析

2

ゲノム

• 生物の遺伝情報の全て

http://en.wikipedia.org/wiki/File:NHGRI_human_male_karyotype.png

Page 3: Kashiwa.R#9 Rでゲノム解析

3

ゲノム(データとしての)

• 文字列• 4種類の文字(塩基)• とても長い

http://www.sciencedaily.com/releases/2009/10/091014130702.htm

Page 4: Kashiwa.R#9 Rでゲノム解析

4

ゲノム上のデータ

• どこに何があるか• 遺伝子• 転写イベント• 化学修飾

http://dpb.carnegiescience.edu/labs/huala-lab/projects/genome-annotation

Page 5: Kashiwa.R#9 Rでゲノム解析

5

ゲノム解析

• ゲノムの部分文字列に対する解析• ゲノム上の区間に対する解析

http://www.pharmainfo.net/articles/homology-modeling-family-39-glycoside-hydrolase-clostridium-thermocellumhttp://bedtools.readthedocs.org/en/latest/content/tools/complement.html

Page 6: Kashiwa.R#9 Rでゲノム解析

6

今日の内容

• 「 R でこんなこともできるんだ」という紹介• コードの説明はあまりしません(あとで自分で試してみてください)

Page 7: Kashiwa.R#9 Rでゲノム解析

7

Bioconductor

http://bioconductor.org

Page 8: Kashiwa.R#9 Rでゲノム解析

8

ゲノム配列を手元に持ってくるlibrary(BSgenome)

# Bioconductor のアノテーションパッケージとして利用可能なゲノムの一覧 available.genomes()# Fruit fly のゲノムをインストール source("http://bioconductor.org/biocLite.R") # chooseBioCmirror()biocLite("BSgenome.Dmelanogaster.UCSC.dm3")# パッケージを読み込む library(BSgenome.Dmelanogaster.UCSC.dm3)# BSgenome オブジェクトとしてのゲノム配列Dmelanogaster

Page 9: Kashiwa.R#9 Rでゲノム解析

9

あるモチーフの出現回数を数える# IUPAC code でモチーフを定義RRE <- "WAWNTRGGTCA"

# Fruit fly のゲノム配列全体から, RRE にマッチする箇所をカウント count.RRE <- vcountPattern(RRE, Dmelanogaster, fixed=c(pattern=FALSE, subject=TRUE))# ヒストグラムで結果を表示library(ggplot2)p <- ggplot(count.RRE, aes(x=paste(seqname,strand), y=count)) + geom_histogram() + theme(axis.text.x=element_text(angle=90, hjust = 1))plot(p)

Page 10: Kashiwa.R#9 Rでゲノム解析

10

遺伝子配列をたくさんとってくる

http://qiita.com/yuifu/items/a757629506c1cd98156b

# Ensembl データベースを使うlibrary(biomaRt)ensembl <- useMart("ensembl")

ensembl <- useDataset("drerio_gene_ensembl", mart=ensembl)

id <- c("ENSDARG00000044774", "ENSDARG00000070913")

# cDNA 配列の取得seq <- getSequence(id=id, type="ensembl_gene_id", seqType="cdna", mart=ensembl)

# pre-mRNA 配列(エキソン+イントロン)の取得seq <- getSequence(id=id, type="ensembl_gene_id", seqType="gene_exon_intron", mart=ensembl)

# FASTA 形式での保存library(Biostrings)dna <- DNAStringSet(seq[,1])names(dna) <- seq[,2]writeXStringSet(dna, file="hoge.fa", format="fasta")

Page 11: Kashiwa.R#9 Rでゲノム解析

11

RNA-seq から発現変動遺伝子を抽出する

• RNASeqDataSubset ( RNA-seq のテストデータ)• 組織 : マウスの心臓• 実験条件 : TBX20 KO マウス と 野生型マウス• 予備知識 : TBX20 は心臓の発生と機能に不可欠な転写因子• 軽くするために, chr19 のみ• mm9 にマップ(最新は mm10 なので注意)

Page 12: Kashiwa.R#9 Rでゲノム解析

12

RNA-seq から発現変動遺伝子を抽出する• データへのアクセス(テストデータ)# Data ( テストデータ )source("http://bioconductor.org/biocLite.R")biocLite("RNASeqDataSubset")library("RNASeqDataSubset")# BAM ファイルの一覧を取得 fls <- RNASeqDataSubset::getBamFileList()

> fls SRR316184 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316184.bam" SRR316185 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316185.bam" SRR316186 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316186.bam" SRR316187 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316187.bam" SRR316188 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316188.bam" SRR316189 "/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RNASeqDataSubset/extdata/SRR316189.bam"

Page 13: Kashiwa.R#9 Rでゲノム解析

13

RNA-seq から発現変動遺伝子を抽出する• メタデータの取得

どんなバイオロジカルな implication が得られるかまで

# メタデータの取得 fn <- system.file("extdata", "phenoData.txt", package="RNASeqDataSubset")pd <- read.table(fn, header=TRUE, stringsAsFactors=FALSE)

> pd SRX SRR GSM condition replicate1 SRX085099 SRR316184 GSM767225 normal 12 SRX085100 SRR316185 GSM767226 normal 23 SRX085101 SRR316186 GSM767227 normal 34 SRX085102 SRR316187 GSM767228 Tbx20 knockout 15 SRX085103 SRR316188 GSM767229 Tbx20 knockout 26 SRX085104 SRR316189 GSM767230 Tbx20 knockout 3

Page 14: Kashiwa.R#9 Rでゲノム解析

14

RNA-seq から発現変動遺伝子を抽出する

• カウントテーブルの作成• 各サンプルで各遺伝子にマップされたリード数の表 • 行数=遺伝子数,列数=サンプル数• 今回は Bioconductor の easyRNAseq で作成する

Page 15: Kashiwa.R#9 Rでゲノム解析

15

RNA-seq から発現変動遺伝子を抽出する• HTSeq

• GTF ファイルのダウンロード• http://feb2012.archive.ensembl.org/info/data/ftp/index.html

# easyRNASeqsource("http://bioconductor.org/biocLite.R")biocLite("easyRNASeq")library(easyRNASeq)listMarts(host="may2012.archive.ensembl.org")count.table <- easyRNASeq(filesDirectory=dirname(fls)[1], filenames=basename(fls), gapped=TRUE, annotationMethod="biomaRt", organism="Mmusculus", count="genes", summarization="geneModels", host="may2012.archive.ensembl.org", nbCore=2)

> head(count.table) SRR316184.bam SRR316185.bam SRR316186.bam SRR316187.bam SRR316188.bamENSMUSG00000001750 98 107 88 446 386ENSMUSG00000003053 1 0 0 0 0ENSMUSG00000003228 2 0 2 11 8ENSMUSG00000003555 6 8 6 29 17ENSMUSG00000003559 8 2 1 5 6ENSMUSG00000003680 37 51 40 187 232 SRR316189.bamENSMUSG00000001750 381ENSMUSG00000003053 0ENSMUSG00000003228 5ENSMUSG00000003555 13ENSMUSG00000003559 4ENSMUSG00000003680 301

Page 16: Kashiwa.R#9 Rでゲノム解析

16

RNA-seq から発現変動遺伝子を抽出する• 2条件間で発現が変動した遺伝子を抽出する# DESeqcondition <- pd$condition[match(paste0(pd$SRR,".bam"), colnames(count.table))]names(condition) <- colnames(count.table)library(DESeq)cds <- newCountDataSet(countData=count.table, conditions=condition)cds <- estimateSizeFactors( cds )sizeFactors(cds)

cds <- estimateDispersions( cds )

res <- nbinomTest( cds, "normal", "Tbx20 knockout" )res <- res[order(res$padj),]sum(res$padj < 0.01,na.rm=TRUE)

plotMA(res)

deg <- res[res$padj < 0.01 & !is.na(res$padj),]

Page 17: Kashiwa.R#9 Rでゲノム解析

17http://www.illuminakk.co.jp/document/pdf/datasheet_chip_sequence-J.pdf より引用

ChIP-seq でタンパク質のゲノム上の結合位置を検出できる

Page 18: Kashiwa.R#9 Rでゲノム解析

18Cho et al. Nature (2012)

異なる転写因子の ChIP-seq を比較すると協調関係がみえてくる

Page 19: Kashiwa.R#9 Rでゲノム解析

19

この転写因子の機能を知りたい• この転写因子のターゲットを知りたい• この転写因子の結合する配列(モチーフ)を知りたい• この転写因子が協調する転写因子を知りたい

X Z

Y W

Page 20: Kashiwa.R#9 Rでゲノム解析

20

テストケース : 体内時計の分子機構• 3 つの結合モチーフ

• E-box

• D-box

• RRE

• 転写因子• 正• 負

Ukai & Ueda, Annual Review of Physiology (2010)

Page 21: Kashiwa.R#9 Rでゲノム解析

21Cho et al, Nature (2012)

Page 22: Kashiwa.R#9 Rでゲノム解析

22

ステップ1 : ChIP-seq のピークを検出する( R の外)• リード( NGS データ)をゲノム配列にマッピング(アラインメント)

• Bowtie

• BWA

• ピークを検出する• MACS

• GPS

http://www.illuminakk.co.jp/document/pdf/datasheet_chip_sequence-J.pdf より引用

Page 23: Kashiwa.R#9 Rでゲノム解析

23

ステップ 2: ピークがどんな遺伝子の近くにあるかlibrary(Biostrings)bedFile2 <- "~/Desktop/GSM840529_ReverbB_4086_peaks.txt"reverba.gr <- BED2RangedData(read.table(bedFile1, header=T, sep="\t"))# Load TSS annotation library(biomaRt)mart = useMart(biomart = "ENSEMBL_MART_ENSEMBL", dataset = "mmusculus_gene_ensembl", host="www.ensembl.org") tss <- getAnnotation(mart, featureType = "TSS")# Annotate peakslibrary(ChIPpeakAnno)reverba.annot = annotatePeakInBatch(reverba.gr, AnnotationData = tss, output="both") #, maxgap = 0)

Cho et al. Nature (2012)

Page 24: Kashiwa.R#9 Rでゲノム解析

24

ステップ 3: 複数の ChIP-seq と比較するbedFile1 <- "~/Desktop/GSM840528_ReverbA_4086_peaks.txt"bedFile2 <- "~/Desktop/GSM840529_ReverbB_4086_peaks.txt"data1 <- BED2RangedData(read.table(bedFile1, header=T, sep="\t"))data2 <- BED2RangedData(read.table(bedFile2, header=T, sep="\t"))strand(data1) <- "*"strand(data2) <- "*"data1.data2.overlap <- findOverlappingPeaks(data1, data2, annotate=1)# pie(table(data1.data2.overlap$OverlappingPeaks$overlapFeature) )head(data1.data2.overlap$OverlappingPeaks$overlapFeature)data1.data2.overlap.count <- makeVennDiagram( RangedDataList(data1, data2), NameOfPeaks = c("Data1", "Data2"), maxgap=0, minoverlap =1, totalTest = 100, useFeature=FALSE)venn( list( Reverba=c( rep(0, nrow(data1) - nrow(data1.data2.overlap$Peaks1withOverlaps)), rep(1,nrow(data1.data2.overlap$Peaks1withOverlaps) ) ), Reverbb=c( rep(2, nrow(data2) - nrow(data1.data2.overlap$Peaks2withOverlaps)), rep(1,nrow(data1.data2.overlap$Peaks2withOverlaps) ) )))

Page 25: Kashiwa.R#9 Rでゲノム解析

25

ステップ 4: GO 解析をするgo.termgo.term

BH.adjustBH.adjusted.p.valued.p.valuee

cytoskeletal protein binding 2.77E-06GTPase regulator activity 3.79E-06protein binding 1.04E-05phospholipid binding 1.04E-05nucleoside-triphosphatase regulator activity 1.04E-05enzyme binding 2.26E-05protein complex binding 7.09E-05ion binding 1.17E-04cation binding 1.66E-04metal ion binding 1.66E-04

# Load genome-wide annotation for mouselibrary(org.Mm.eg.db)reverba.go <- getEnrichedGO( reverba.annot, orgAnn = "org.Mm.eg.db", maxP = 0.01, multiAdj = TRUE, minGOterm = 10, multiAdjMethod = "BH")# Top results for GO Molecular Functionreverba.go.mf <- unique(reverba.go$mf[order(reverba.go$mf[,10]), c(2,10)])

Page 26: Kashiwa.R#9 Rでゲノム解析

26

今後の展開• 遺伝子発現との関連

• WT ,変異体• モチーフ解析

• 共通部分と独自部分でそれぞれ• → 新たな協調因子

• 別の ChIP-seq データとの比較• → 新たな協調因子

http://molbio.mgh.harvard.edu/sheenweb/PromoterATAK&MZ06.html より引用

Rev-Erbα

Rev-Erbβ

??? ???

Cho et al. Nature (2012)

Page 27: Kashiwa.R#9 Rでゲノム解析

28

課題(誰か教えてください)• makeTranscriptDbFromBiomart で古い Ensembl のアーカイブにアクセスする方法

• ゲノム配列に基づいてアノテーションはつくられるため,ゲノム配列のバージョンが新しくなると,デフォルトでは新しいゲノム配列に基づく• 例) Dec. 2011 からマウスゲノム mm10 がリリースしたため, Ensembl のアノテーションは Jul.

2012 からは mm10 ベースになっている• 以下ではエラーが出る

> pwf <- nullp(genes, "mm9", "ensGene")Loading mm9 length data... 以下にエラー qr.R(qrx) : ジエネリック関数の 環境中に "..." というシンボルが見つかりませんでした