解析ABSOLUTE軟件

簡介ABSOLUTE

ABSOLUTE是Broad研究所開發(fā)的一款癌癥CNV分析軟件翘悉,實(shí)質(zhì)是一個(gè)R包,可以定量細(xì)胞的絕對拷貝數(shù)累贤、腫瘤純度與倍性奔垦,如果提供突變數(shù)據(jù)屹耐,還能探究克隆與亞克隆等。關(guān)于這個(gè)軟件的文獻(xiàn)發(fā)表在NBT計(jì)算生物學(xué)上椿猎,該文獻(xiàn)是我目前所知CNV絕對定量最經(jīng)典的一篇惶岭,里面包含繁多的數(shù)學(xué)模型(反正我是沒太看懂)。不過核心思考我等還是可以理解的:ABSOLUTE主要通過3個(gè)子模型——SCNA(CNV數(shù)據(jù))鸵贬,已預(yù)先設(shè)計(jì)好的癌癥核型以及體細(xì)胞突變頻率(MAF文件)進(jìn)行計(jì)分俗他,然后進(jìn)行整合,最高分者為最優(yōu)模型阔逼。但作者也指出最優(yōu)模型并不是最好的兆衅,所以人工評審結(jié)果是有必要的

ABSOLUTE的簡單框架

  • 樣本混合物中Cancer細(xì)胞比例:\alpha (假設(shè)單染色體組monogenomic,即有同源SCNAs)

  • 樣本混合物中Normal細(xì)胞比例:1-\alpha (染色體倍性為2)

  • 基因組某位點(diǎn):x

  • Cancer細(xì)胞中該位點(diǎn)(整型)拷貝數(shù)表示為:q(x)

  • Cancer細(xì)胞平均倍性為:\tau羡亩,定義為整個(gè)基因組上q(x)的平均值

樣本混合物中位點(diǎn)x的平均絕對拷貝數(shù)為:

\alpha q(x) + 2(1-\alpha) \rightarrow Cancer細(xì)胞比例*位點(diǎn)拷貝數(shù)+正常細(xì)胞比例*位點(diǎn)拷貝數(shù)2

樣本混合物中平均倍性D為:

\alpha \tau + 2(1-\alpha) \rightarrow Cancer細(xì)胞比例 * Cancer倍性 + 正常細(xì)胞比例 * 正常細(xì)胞倍性2

上述兩個(gè)值以單倍體基因組為單位

因此摩疑,位點(diǎn)x的相對拷貝數(shù)R為:

R(x) = (\alpha q(x) + 2(1-\alpha)) / D = (\alpha / D) q(x) + (2(1-\alpha) / D)

\rightarrow 平均絕對拷貝數(shù) / 平均倍性

因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=q(x)" alt="q(x)" mathimg="1">取整數(shù)值,因此R(x)必然是離散值畏铆。最小值為(2(1-\alpha)/D)雷袋,發(fā)生在純合性缺失位點(diǎn),對應(yīng)正常細(xì)胞的DNA比例辞居。

Notably, if a cancer sample is not strictly clonal, copy-number alteration occurring in substantial subclonal fraction will appear as outliers from this pattern.

ABSOLUTE的詳細(xì)文檔

我大概是從1年前開始了解ABSOLUTE這個(gè)軟件楷怒,但是一直沒搞懂怎么用,或者是說為什么作者要設(shè)計(jì)3個(gè)主函數(shù)瓦灶。一開始我看下下面的示例代碼鸠删,我處于懵逼狀態(tài)

DoAbsolute <- function(scan, sif) {
  registerDoSEQ()
  library(ABSOLUTE)
  plate.name <- "DRAWS"
  genome <- "hg18"
  platform <- "SNP_250K_STY"
  primary.disease <- sif[scan, "PRIMARY_DISEASE"]
  sample.name <- sif[scan, "SAMPLE_NAME"]
  sigma.p <- 0
  max.sigma.h <- 0.02
  min.ploidy <- 0.95
  max.ploidy <- 10
  max.as.seg.count <- 1500
  max.non.clonal <- 0
  max.neg.genome <- 0
  copy_num_type <- "allelic"
  seg.dat.fn <- file.path("output", scan, "hapseg",
                          paste(plate.name, "_", scan, "_segdat.RData", sep=""))
  results.dir <- file.path(".", "output", scan, "absolute")
  print(paste("Starting scan", scan, "at", results.dir))
  log.dir <- file.path(".", "output", "abs_logs")
  if (!file.exists(log.dir)) {
     dir.create(log.dir, recursive=TRUE)
  }
  if (!file.exists(results.dir)) {
     dir.create(results.dir, recursive=TRUE)
  }
  sink(file=file.path(log.dir, paste(scan, ".abs.out.txt", sep="")))
  RunAbsolute(seg.dat.fn, sigma.p, max.sigma.h, min.ploidy, max.ploidy, primary.disease, 
              platform, sample.name, results.dir, max.as.seg.count, max.non.clonal, 
              max.neg.genome, copy_num_type, verbose=TRUE)
  sink()
}
arrays.txt <- "./paper_example/mix250K_arrays.txt"
sif.txt <- "./paper_example/mix_250K_SIF.txt"
## read in array names
scans <- readLines(arrays.txt)[-1]
sif <- read.delim(sif.txt, as.is=TRUE)
library(foreach)
## library(doMC)
## registerDoMC(20)
foreach (scan=scans, .combine=c) %dopar% {
  DoAbsolute(scan, sif)
}
obj.name <- "DRAWS_summary"
results.dir <- file.path(".", "output", "abs_summary")
absolute.files <- file.path(".", "output",
                            scans, "absolute",
                            paste(scans, ".ABSOLUTE.RData", sep=""))
library(ABSOLUTE)
CreateReviewObject(obj.name, absolute.files, results.dir, "allelic", verbose=TRUE)
## At this point you'd perform your manual review and mark up the file 
## output/abs_summary/DRAWS_summary.PP-calls_tab.txt by prepending a column with
## your desired solution calls. After that (or w/o doing that if you choose to accept
## the defaults, which is what running this code will do) run the following command:
calls.path = file.path("output", "abs_summary", "DRAWS_summary.PP-calls_tab.txt")
modes.path = file.path("output", "abs_summary", "DRAWS_summary.PP-modes.data.RData")
output.path = file.path("output", "abs_extract")
ExtractReviewedResults(calls.path, "test", modes.path, output.path, "absolute", "allelic")

盡管我尋找到一些示例數(shù)據(jù)并可以初步運(yùn)行ABSOLUTE,但我長時(shí)間排斥使用它贼陶,因?yàn)槲依斫獠涣怂?strong>學(xué)會用并不代表學(xué)會了理解刃泡,理解了才能真正用起來。

直到我在Gene Pattern上搜索到了新的文檔說明碉怔,再加上我自己能力相比過去有所提升烘贴,很多事情便豁然開朗了。

本文最重要的文檔http://software.broadinstitute.org/cancer/software/genepattern/modules/docs/ABSOLUTE/2

該文檔從背景撮胧、方法桨踪、示例以及結(jié)果都做了詳細(xì)地說明,雖然它講解的是ABSOLUTE在GenePattern上的運(yùn)行芹啥,但如果我們想本地運(yùn)行該包馒闷,流程和方式是完全一致的。

有幾個(gè)參數(shù)的設(shè)置需要額外注意叁征,其他參數(shù)都建議采用默認(rèn)的,作者說過默認(rèn)參數(shù)的設(shè)置是為了平衡過擬合以及解的復(fù)雜性逛薇。

  • max sigma h捺疼,這個(gè)可以根據(jù)情況設(shè)大點(diǎn),因?yàn)闃颖鹃g誤差設(shè)小了永罚,結(jié)果反而不好啤呼。
  • max as seg count,這個(gè)最好事先看一些每個(gè)樣本segmentation數(shù)目的分布呢袱,默認(rèn)設(shè)置為1500官扣,也就是超過這個(gè)數(shù)目,樣本會直接打上“Fail”標(biāo)簽羞福,不會出現(xiàn)在最后的結(jié)果中惕蹄。
  • max non clonal,這個(gè)參數(shù)我看到作者處理示例數(shù)據(jù)使用的是1,也就是運(yùn)行基因組存在non-clonal的最大比例
  • copy number type卖陵,一般我們處理的都是total copy number遭顶,ABSOLUTE僅支持由HAPSEG或AllelicCapseg輸入的allelic數(shù)據(jù)。

ABSOLUTE的批量運(yùn)行

理解3個(gè)主函數(shù)泪蔫,依次運(yùn)行棒旗,使用示例數(shù)據(jù)測試結(jié)果即可。

如果想要批量運(yùn)行的話撩荣,可以自己寫代碼構(gòu)建函數(shù)進(jìn)行處理铣揉。我自己已經(jīng)成功構(gòu)建了,但暫時(shí)不公開了餐曹,寫文字說明也很麻煩逛拱,以后再說。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凸主,一起剝皮案震驚了整個(gè)濱河市橘券,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卿吐,老刑警劉巖旁舰,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗡官,居然都是意外死亡箭窜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門衍腥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磺樱,“玉大人,你說我怎么就攤上這事婆咸≈褡剑” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵尚骄,是天一觀的道長块差。 經(jīng)常有香客問我,道長倔丈,這世上最難降的妖魔是什么憨闰? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮需五,結(jié)果婚禮上鹉动,老公的妹妹穿的比我還像新娘。我一直安慰自己宏邮,他們只是感情好泽示,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布缸血。 她就那樣靜靜地躺著,像睡著了一般边琉。 火紅的嫁衣襯著肌膚如雪属百。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天变姨,我揣著相機(jī)與錄音族扰,去河邊找鬼。 笑死定欧,一個(gè)胖子當(dāng)著我的面吹牛渔呵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砍鸠,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼扩氢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爷辱?” 一聲冷哼從身側(cè)響起录豺,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饭弓,沒想到半個(gè)月后双饥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弟断,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年咏花,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阀趴。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昏翰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刘急,到底是詐尸還是另有隱情棚菊,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布叔汁,位于F島的核電站窍株,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攻柠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一后裸、第九天 我趴在偏房一處隱蔽的房頂上張望瑰钮。 院中可真熱鬧,春花似錦微驶、人聲如沸浪谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苟耻。三九已至篇恒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凶杖,已是汗流浹背胁艰。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留智蝠,地道東北人腾么。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像杈湾,于是被迫代替她去往敵國和親解虱。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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