使用OpenCL的代数并行SNV调用器
项目描述
ALPACA是一个针对下一代测序数据的单核苷酸变异调用器,通过通用样本过滤场景提供直观的控制,利用OpenCL在CPU、GPU或任何协处理器上加速计算,并使用基于HDF5的持久存储在几秒钟内进行分析的迭代改进。
通常,变异调用涉及将不同的样本相互过滤,例如疾病样本与正常样本,肿瘤与正常或儿童与父母。过滤可以看作是对变异位点的集合代数操作。通常,过滤是在调用之后应用的。这导致变异调用器考虑的零假设没有正确反映实际的研究问题,实际上涉及过滤。因此,控制假阳性发现率变得困难。
与其他最先进的变异调用器不同,ALPACA通过引入一个新的代数变异调用模型将过滤集成到调用中。在调用时,可以使用代数表达式如A - (B + C)指定一个过滤场景,其中A、B和C是样本。代数调用允许ALPACA报告A中变异发生的<强>后验概率强>,这些变异在B或C中不存在。由于概率反映了过滤,因此可以直接使用它们来<强>直观地控制假阳性发现率强>。
ALPACA将变异调用分为预处理步骤和实际调用。预处理样本存储在HDF5索引数据结构中。在一个轻量级且高度并行的步骤中,样本索引被合并为一个优化索引。在优化索引上,变异调用只需几秒钟即可完成。添加样本后,需要重复合并和调用。其他样本的样本索引保持不变,避免了重复计算。
算法和数学细节将在我的论文中描述
下一代测序分析的并行化、可扩展性和可重复性,Johannes Köster,2015(工作进行中)
先决条件
ALPACA需要
Linux
Python >= 3.3
Numpy >= 1.7
PyOpenCL >= 2013.1
h5py >= 1.8.4
samtools >= 1.0
mawk
一个可工作的OpenCL设备(CPU、GPU、类似于Intel Xeon Phi或FPGA的协处理器)
Python 3应安装在大多数系统上。您可以通过运行以下命令使Debian和Ubuntu为安装ALPACA做好准备:
$ sudo apt-get install python3-setuptools python3-numpy python3-h5py samtools mawk
如果没有管理员权限,我们建议使用用户空间Python 3发行版,如https://store.continuum.io/cshop/anaconda。
如果您想在GPU上使用ALPACA,一个配置合理的NVIDIA或AMD GPU,已安装了专有驱动程序,应该就足够了。在Ubuntu和Debian上,您可以通过以下方式安装它们:
$ sudo apt-get install nvidia-current
或
$ sudo apt-get install fglrx
要使用CPU与ALPACA一起使用,您需要安装OpenCL运行时。例如,您可以从这里安装AMD APP SDK(它将在任何x86 CPU上工作):http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk
安装
一旦满足先决条件,就可以使用以下命令安装和更新ALPACA:
$ easy_install3 --user -U alpaca
用法
ALPACA的用法包括三个主要步骤。
样本索引
索引合并
调用
给定样本A的映射读取(BAM格式)和FASTA格式的参考基因组,可以使用以下命令创建样本索引:
$ alpaca index reference.fasta A.bam A.hdf5
在这里,可以调整各种参数,如样本预期的多倍性。生成的索引A.hdf5将比BAM文件小得多。通过以下方式合并样本A和B的索引:
$ alpaca merge A.hdf5 B.hdf5 all.hdf5
最后,可以在合并的索引上执行调用。ALPACA允许通过命令行指定查询表达式,用加号表示并操作符,用减号表示差操作符。变异调用以VCF格式流式传输
$ alpaca call --fdr 0.05 all.hdf5 A-B > calls.vcf
在这里,我们限制假发现率低于5%。为了评估变异的生物学重要性,将其注释为附加信息(如可能包含的基因、基因编码的蛋白质的影响或它是否已知并可能与其他疾病相关)是有用的。ALPACA可以使用Ensembl变异效应预测器Web服务对VCF文件进行注释。由于VCF格式相当技术性,ALPACA可以组成一个人类可读的HTML文件来总结调用。我们可以使用Unix管道组合这两个命令
$ alpaca annotate < calls.vcf | alpaca show > calls.html
有关所有步骤的各种参数(例如如何选择计算设备)的更多信息,可以使用以下命令获得:
$ alpaca --help
新闻
2014年2月6日 |
ALPACA 0.3.3版本。修复了annotate子命令中的注释混乱。添加了HTML输出的列过滤器。 |
2014年1月13日 |
ALPACA 0.3.2版本。修复了链偏斜结果中的不精确性。此外,本版本引入了k-松弛交集运算符。一个位点仅当它在至少k个样本中是变异的时才包含在给定样本集的k-松弛交集中。 |
2014年12月2日 |
ALPACA 0.2.4版本。进一步改进了alpaca show的HTML输出。 |
2014年12月1日 |
ALPACA 0.2.3版本。改进了alpaca show的HTML输出。 |
2014年11月30日 |
ALPACA 0.2.2 版本发布。这个初始版本提供了我在论文“下一代测序分析中的并行化、可扩展性和可重复性”中描述的所有功能。 |
项目详情
alpaca-variant-caller-0.3.3.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1f8abac8a1581cf718dec8f76b7566895207e17bde4a8817c900247d3cd6445c |
|
MD5 | 69431e82b14f2908885564cd46a43bb6 |
|
BLAKE2b-256 | 4d269ca7b22fb4ea52dda9a38609c123431114b938f30297d583b0b5640a22ed |