使用DSS做差異甲基化區(qū)域(DMR分析)

DSS是一個(gè)可用于做RNA-seq差異表達(dá)分析或甲基化差異分析的R包绝骚,在做差異甲基化分析時(shí),DSS對每個(gè)CpG進(jìn)行統(tǒng)計(jì)檢驗(yàn)垦沉,然后根據(jù)我們指定的閾值可以篩選出差異甲基化位點(diǎn)(differential methylation loci, DML)或差異甲基化區(qū)域(differential methylation regions, DMR)迫皱。

DSS的輸入文件格式如下:


chr:染色體妄痪;

pos:CpG位點(diǎn);

N:所有reads數(shù)目嘁傀;

X:檢測到甲基化的reads數(shù)目兴蒸;

使用python腳本從bismark輸出的report文件中提取上述信息并構(gòu)建符合上述格式的文件,python代碼如下:

import sys

infile = sys.argv[1]

def writelis(lis, fil):

? ? with open(fil, "w") as out_f:

? ? ? ? firstline = "chr" + "\t" + "pos" + "\t" + "N" + "\t" + "X" + "\n"

? ? ? ? out_f.write(firstline)

? ? ? ? for it in lis:

? ? ? ? ? ? line1 = it

? ? ? ? ? ? out_f.write(line1)

? ? out_f.close()

def report2dss(reportfile):

? ? with open(reportfile, "r") as ref:

? ? ? ? CG = []

? ? ? ? CHG = []

? ? ? ? CHH = []

? ? ? ? file1=reportfile.split("clean")[0] + "CGout.txt"

? ? ? ? file2 = reportfile.split("clean")[0] + "CHGout.txt"

? ? ? ? file3 = reportfile.split("clean")[0] + "CHHout.txt"

? ? ? ? f = ref.readlines()

? ? ? ? for line in f:

? ? ? ? ? ? lin = line.strip().split()

? ? ? ? ? ? chr = lin[0]

? ? ? ? ? ? pos = lin[1]

? ? ? ? ? ? type = lin[-2]

? ? ? ? ? ? numc = int(lin[3])

? ? ? ? ? ? numn = int(lin[4])

? ? ? ? ? ? allc = numn + numc

? ? ? ? ? ? DDSline = chr + "\t" + pos + "\t" + str(allc) + "\t" + str(numc) + "\n"

? ? ? ? ? ? if type == "CG":

? ? ? ? ? ? ? ? CG.append(DDSline)

? ? ? ? ? ? elif type == "CHG":

? ? ? ? ? ? ? ? CHG.append(DDSline)

? ? ? ? ? ? elif type == "CHH":

? ? ? ? ? ? ? ? CHH.append(DDSline)

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? print(line)

? ? ? ? print(len(CG), len(CHG), len(CHH))

? ? writelis(CG, file1)

? ? writelis(CHG, file2)

? ? writelis(CHH, file3)

report2dss(infile)

輸出文件會(huì)將CG细办,CHG橙凳,CHH分開,并符合DSS輸入需求:


隨后參考http://www.reibang.com/p/a81c3176238b做DMR分析笑撞,代碼如下:

if (!requireNamespace("BiocManager", quietly = TRUE))

? install.packages("BiocManager")

BiocManager::install("DSS")

library(DSS)

require(bsseq)


##CG

data1.1 <- read.table("xiao-F-4-1_P_1_CGout.txt", header = T)? ##sex-reverse

data1.2 <- read.table("xiao-F-4-2_P_1_CGout.txt", header = T)? ##sex-reverse

data1.3 <- read.table("xiao-F-4-3_P_1_CGout.txt", header = T)? ##sex-reverse

data2.1 <- read.table("xiao-F-50-1_P_1_CGout.txt", header = T)

data2.2 <- read.table("xiao-F-50-2_P_1_CGout.txt", header = T)

data2.3 <- read.table("xiao-F-50-3_P_1_CGout.txt", header = T)

data3.1 <- read.table("xiao-M-44-1_P_1_CGout.txt", header = T)

data3.2 <- read.table("xiao-M-44-2_P_1_CGout.txt", header = T)

data3.3 <- read.table("xiao-M-44-3_P_1_CGout.txt", header = T)

head(data1.1)

head(data1.2)

head(data2.1)

head(data2.2)

head(data3.1)

head(data3.2)

BSobj <- makeBSseqData(list(data1.1, data1.2, data1.3, data2.1, data2.2, data2.3,

? ? ? ? ? ? ? ? ? ? ? ? ? ? data3.1, data3.2, data3.3),

? ? ? ? ? ? ? ? ? ? ? c("F4-1", "F4-2", "F4-3", "F50-1", "F50-2",

? ? ? ? ? ? ? ? ? ? ? ? "F50-3", "M44-1", "M44-2", "M44-3"))

snow <- SnowParam(workers = 9)

dmlResult <- DMLtest(BSobj, group1 = c("F4-1", "F4-2", "F4-3"),

? ? ? ? ? ? ? ? ? ? group2 = c("F50-1", "F50-2", "F50-3"),smoothing=TRUE,BPPARAM=snow)

dmlResult2 <- DMLtest(BSobj, group1 = c("F4-1", "F4-2", "F4-3"),

? ? ? ? ? ? ? ? ? ? ? group2 = c("M44-1", "M44-2", "M44-3"),smoothing=TRUE,BPPARAM=snow)

dmlResult3 <- DMLtest(BSobj, group1 = c("F50-1", "F50-2", "F50-3"),

? ? ? ? ? ? ? ? ? ? ? group2 = c("M44-1", "M44-2", "M44-3"),smoothing=TRUE,BPPARAM=snow)

##DML1

dmls <- callDML(dmlResult,delta=0.25,p.threshold = 0.01)

write.table(dmls, "Fre4_f50_CG0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

dmrs <- callDMR(dmlResult,delta=0.25,p.threshold = 0.01)

write.table(dmrs, "Fre4_f50_CG_DMR0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

##DML2

dmls <- callDML(dmlResult2,delta=0.25,p.threshold = 0.01)

write.table(dmls, "Fre4_male_CG0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

dmrs <- callDMR(dmlResult2,delta=0.25,p.threshold = 0.01)

write.table(dmrs, "Fre4_male_CG_DMR0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

##DML3

dmls <- callDML(dmlResult3,delta=0.25,p.threshold = 0.01)

write.table(dmls, "female_male_CG0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

dmrs <- callDMR(dmlResult3,delta=0.25,p.threshold = 0.01)

write.table(dmrs, "female_male_CG_DMR0.25.bed", sep="\t",row.names=FALSE, quote=FALSE)

showOneDMR(dmrs[1,], BSobj)?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岛啸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子茴肥,更是在濱河造成了極大的恐慌坚踩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓤狐,死亡現(xiàn)場離奇詭異瞬铸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)础锐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門嗓节,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皆警,你說我怎么就攤上這事赦政。” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵恢着,是天一觀的道長桐愉。 經(jīng)常有香客問我,道長掰派,這世上最難降的妖魔是什么从诲? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮靡羡,結(jié)果婚禮上系洛,老公的妹妹穿的比我還像新娘。我一直安慰自己略步,他們只是感情好描扯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趟薄,像睡著了一般绽诚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杭煎,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天恩够,我揣著相機(jī)與錄音,去河邊找鬼羡铲。 笑死蜂桶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的也切。 我是一名探鬼主播扑媚,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雷恃!你這毒婦竟也來了钦购?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤褂萧,失蹤者是張志新(化名)和其女友劉穎押桃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體导犹,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唱凯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谎痢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕昼。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖节猿,靈堂內(nèi)的尸體忽然破棺而出票从,到底是詐尸還是另有隱情漫雕,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布峰鄙,位于F島的核電站浸间,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吟榴。R本人自食惡果不足惜魁蒜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吩翻。 院中可真熱鬧兜看,春花似錦、人聲如沸狭瞎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熊锭。三九已至弧轧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間球涛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工校镐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亿扁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓鸟廓,卻偏偏與公主長得像从祝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子引谜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容