Kashiwa.R#9 Rでゲノム解析
-
Upload
haruka-ozaki -
Category
Education
-
view
2.035 -
download
3
Transcript of Kashiwa.R#9 Rでゲノム解析
1
13.10.11 Kashiwa.R#9 @ 駒場キャンパスゲノム解析で R を使う
@yuifuおざきはるか概要 : ゲノム解析,配列解析, NGS 解析などで R を実際にどう使っているかを紹介します.
2
ゲノム
• 生物の遺伝情報の全て
http://en.wikipedia.org/wiki/File:NHGRI_human_male_karyotype.png
3
ゲノム(データとしての)
• 文字列• 4種類の文字(塩基)• とても長い
http://www.sciencedaily.com/releases/2009/10/091014130702.htm
4
ゲノム上のデータ
• どこに何があるか• 遺伝子• 転写イベント• 化学修飾
http://dpb.carnegiescience.edu/labs/huala-lab/projects/genome-annotation
5
ゲノム解析
• ゲノムの部分文字列に対する解析• ゲノム上の区間に対する解析
http://www.pharmainfo.net/articles/homology-modeling-family-39-glycoside-hydrolase-clostridium-thermocellumhttp://bedtools.readthedocs.org/en/latest/content/tools/complement.html
6
今日の内容
• 「 R でこんなこともできるんだ」という紹介• コードの説明はあまりしません(あとで自分で試してみてください)
7
Bioconductor
http://bioconductor.org
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
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)
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")
11
RNA-seq から発現変動遺伝子を抽出する
• RNASeqDataSubset ( RNA-seq のテストデータ)• 組織 : マウスの心臓• 実験条件 : TBX20 KO マウス と 野生型マウス• 予備知識 : TBX20 は心臓の発生と機能に不可欠な転写因子• 軽くするために, chr19 のみ• mm9 にマップ(最新は mm10 なので注意)
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"
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
14
RNA-seq から発現変動遺伝子を抽出する
• カウントテーブルの作成• 各サンプルで各遺伝子にマップされたリード数の表 • 行数=遺伝子数,列数=サンプル数• 今回は Bioconductor の easyRNAseq で作成する
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
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),]
17http://www.illuminakk.co.jp/document/pdf/datasheet_chip_sequence-J.pdf より引用
ChIP-seq でタンパク質のゲノム上の結合位置を検出できる
18Cho et al. Nature (2012)
異なる転写因子の ChIP-seq を比較すると協調関係がみえてくる
19
この転写因子の機能を知りたい• この転写因子のターゲットを知りたい• この転写因子の結合する配列(モチーフ)を知りたい• この転写因子が協調する転写因子を知りたい
X Z
Y W
20
テストケース : 体内時計の分子機構• 3 つの結合モチーフ
• E-box
• D-box
• RRE
• 転写因子• 正• 負
Ukai & Ueda, Annual Review of Physiology (2010)
21Cho et al, Nature (2012)
22
ステップ1 : ChIP-seq のピークを検出する( R の外)• リード( NGS データ)をゲノム配列にマッピング(アラインメント)
• Bowtie
• BWA
• ピークを検出する• MACS
• GPS
http://www.illuminakk.co.jp/document/pdf/datasheet_chip_sequence-J.pdf より引用
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)
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) ) )))
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)])
26
今後の展開• 遺伝子発現との関連
• WT ,変異体• モチーフ解析
• 共通部分と独自部分でそれぞれ• → 新たな協調因子
• 別の ChIP-seq データとの比較• → 新たな協調因子
http://molbio.mgh.harvard.edu/sheenweb/PromoterATAK&MZ06.html より引用
Rev-Erbα
Rev-Erbβ
??? ???
Cho et al. Nature (2012)
28
課題(誰か教えてください)• makeTranscriptDbFromBiomart で古い Ensembl のアーカイブにアクセスする方法
• ゲノム配列に基づいてアノテーションはつくられるため,ゲノム配列のバージョンが新しくなると,デフォルトでは新しいゲノム配列に基づく• 例) Dec. 2011 からマウスゲノム mm10 がリリースしたため, Ensembl のアノテーションは Jul.
2012 からは mm10 ベースになっている• 以下ではエラーが出る
> pwf <- nullp(genes, "mm9", "ensGene")Loading mm9 length data... 以下にエラー qr.R(qrx) : ジエネリック関数の 環境中に "..." というシンボルが見つかりませんでした