簡介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ì)胞比例:
(假設(shè)單染色體組monogenomic,即有同源SCNAs)
樣本混合物中Normal細(xì)胞比例:
(染色體倍性為2)
基因組某位點(diǎn):
Cancer細(xì)胞中該位點(diǎn)(整型)拷貝數(shù)表示為:
Cancer細(xì)胞平均倍性為:
羡亩,定義為整個(gè)基因組上
的平均值
樣本混合物中位點(diǎn)的平均絕對拷貝數(shù)為:
樣本混合物中平均倍性為:
上述兩個(gè)值以單倍體基因組為單位
因此摩疑,位點(diǎn)的相對拷貝數(shù)
為:
因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=q(x)" alt="q(x)" mathimg="1">取整數(shù)值,因此必然是離散值畏铆。最小值為
雷袋,發(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í)不公開了餐曹,寫文字說明也很麻煩逛拱,以后再說。