用opencl实现代数并行snv调用
alpaca-variant-caller的Python项目详细描述
羊驼是下一代测序的单核苷酸变异调用者 数据,提供对错误发现率的直观控制 示例过滤场景,利用CPU、GPU或任何协处理器上的OpenCL 加速计算并使用基于hdf5的迭代持久存储 在几秒钟内完善分析。
通常,变量调用需要过滤不同的样本 相互对抗,例如疾病样本与健康样本、肿瘤样本与正常样本或 孩子和父母。 滤波可以看作是对变轨迹集代数的运算。 通常,在调用之后应用筛选。 这将导致变量调用方认为无效的假设 正确反映实际的研究问题,这实际上需要过滤。 因此,控制错误发现率变得困难。
与其他最先进的变体调用程序不同, alpaca将过滤集成到调用中 通过引入一种新的代数变量调用模型。 调用时,可以使用代数表达式指定筛选方案 就像a-(b+c),a,b和c是样本。代数调用允许羊驼 报告后验概率变异发生在 未知的真变异位点集 在A中,不在B或C中。因为概率反映了过滤, 它们可以直接用于直观地控制错误发现率。
羊驼将变量调用分为预处理 步骤和实际调用。预处理的样本存储在hdf5索引数据中 结构。在一个轻量级且大规模并行的步骤中,合并示例索引 变成一个优化的索引。在优化的索引上,variant调用只需几秒钟。 添加样本后,必须重复合并和调用。 其他示例的示例索引保持不变,避免了多余的计算。
算法和数学细节将在我的论文中描述:
Parallelization, Scalability and Reproducibility in Next-Generation Sequencing Analysis, Johannes Köster, 2015 (work in progress)
先决条件
羊驼需要
- Linux
- python>;=3.3
- numpy>;=1.7
- pyopencl>;=2013.1
- h5py=1.8.4
- samtools=1.0
- 喵喵
- 一个工作的opencl设备(cpu、gpu、像intel xeon phi这样的协处理器或fpga)
python 3应该安装在大多数系统上。 您可以通过发出:
$ sudo apt-get install python3-setuptools python3-numpy python3-h5py samtools mawk
如果没有管理员权限,我们建议使用用户空间python 3发行版,如 https://store.continuum.io/cshop/anaconda。
如果你想在gpu上使用羊驼,一个像样的nvidia或amd的gpu拥有专有的 安装的驱动程序应该足够了。在ubuntu和debian上,你可以安装它们 通过:
$ sudo apt-get install nvidia-current
或:
$ sudo apt-get install fglrx
要将alpaca与cpu结合使用,需要安装opencl运行时。 例如,您可以从这里安装AMD应用程序sdk(它可以在任何x86 CPU上工作): http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk
安装
先决条件就绪后,可以使用以下命令安装和更新羊驼:
$ easy_install3 --user -U alpaca
用法
羊驼的使用包括三个主要步骤。
- 索引合并
- 呼叫
给定bam格式的样本a和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 variant effect predictor web服务用这些信息注释vcf文件。 由于vcf格式是相当技术性的,alpaca可以编写一个人类可读的html文件来总结调用。 我们可以使用Unix管道组合这两个命令:
$ alpaca annotate < calls.vcf | alpaca show > calls.html
有关所有步骤的各种参数的详细信息(例如,如何选择 计算设备)可通过以下方式获得:
$ alpaca --help
新闻
6 Feb 2014 | Release 0.3.3 of ALPACA. Fixed mixed up annotations with annotate subcommand. Added column filters to HTML output. |
13 Jan 2014 | Release 0.3.2 of ALPACA. Fixed imprecision in strand bias results. Further, this release introduces the k-relaxed intersection operator. A locus is contained in the k-relaxed intersection of a given set of samples if and only if it is variant in at least k samples. |
2 Dez 2014 | Release 0.2.4 of ALPACA. Further improved HTML output of alpaca show. |
1 Dez 2014 | Release 0.2.3 of ALPACA. Improved HTML output of alpaca show. |
30 Nov 2014 | Release 0.2.2 of ALPACA. This initial release provides all functionality descibed in my thesis “Parallelization, Scalability and Reproducibility in Next-Generation Sequencing Analysis”. |