简介ABSOLUTE
ABSOLUTE是Broad研究所开发的一款癌症CNV分析软件,实质是一个R包,可以定量细胞的绝对拷贝数、肿瘤纯度与倍性,如果提供突变数据,还能探究克隆与亚克隆等。关于这个软件的文献发表在NBT计算生物学上,该文献是我目前所知CNV绝对定量最经典的一篇,里面包含繁多的数学模型(反正我是没太看懂)。不过核心思考我等还是可以理解的:ABSOLUTE主要通过3个子模型——SCNA(CNV数据),已预先设计好的癌症核型以及体细胞突变频率(MAF文件)进行计分,然后进行整合,最高分者为最优模型。但作者也指出最优模型并不是最好的,所以人工评审结果是有必要的。
ABSOLUTE的简单框架
样本混合物中Cancer细胞比例: (假设单染色体组monogenomic,即有同源SCNAs)
样本混合物中Normal细胞比例: (染色体倍性为2)
基因组某位点:
Cancer细胞中该位点(整型)拷贝数表示为:
Cancer细胞平均倍性为:,定义为整个基因组上的平均值
样本混合物中位点的平均绝对拷贝数为:
样本混合物中平均倍性为:
上述两个值以单倍体基因组为单位
因此,位点的相对拷贝数为:
因为取整数值,因此必然是离散值。最小值为,发生在纯合性缺失位点,对应正常细胞的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的详细文档
ABSOLUTE官方页面
如何获取ABSOLUTE
如何运行ABSOLUTE
我大概是从1年前开始了解ABSOLUTE这个软件,但是一直没搞懂怎么用,或者是说为什么作者要设计3个主函数。一开始我看下下面的示例代码,我处于懵逼状态
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")
尽管我寻找到一些示例数据并可以初步运行ABSOLUTE,但我长时间排斥使用它,因为我理解不了它。学会用并不代表学会了理解,理解了才能真正用起来。
直到我在Gene Pattern上搜索到了新的文档说明,再加上我自己能力相比过去有所提升,很多事情便豁然开朗了。
本文最重要的文档:http://software.broadinstitute.org/cancer/software/genepattern/modules/docs/ABSOLUTE/2
该文档从背景、方法、示例以及结果都做了详细地说明,虽然它讲解的是ABSOLUTE在GenePattern上的运行,但如果我们想本地运行该包,流程和方式是完全一致的。
有几个参数的设置需要额外注意,其他参数都建议采用默认的,作者说过默认参数的设置是为了平衡过拟合以及解的复杂性。
-
max sigma h
,这个可以根据情况设大点,因为样本间误差设小了,结果反而不好。 -
max as seg count
,这个最好事先看一些每个样本segmentation数目的分布,默认设置为1500,也就是超过这个数目,样本会直接打上“Fail”标签,不会出现在最后的结果中。 -
max non clonal
,这个参数我看到作者处理示例数据使用的是1,也就是运行基因组存在non-clonal的最大比例 -
copy number type
,一般我们处理的都是total copy number,ABSOLUTE仅支持由HAPSEG或AllelicCapseg输入的allelic数据。
ABSOLUTE的批量运行
理解3个主函数,依次运行,使用示例数据测试结果即可。
如果想要批量运行的话,可以自己写代码构建函数进行处理。我自己已经成功构建了,但暂时不公开了,写文字说明也很麻烦,以后再说。