用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

用法

羊驼的使用包括三个主要步骤。

    示例标引< /LI>
  • 索引合并
  • 呼叫

给定bam格式的样本a和fasta格式的参考基因组的映射读取, 可以使用以下命令创建示例索引:

$ alpaca index reference.fasta A.bam A.hdf5

在这里,可以调整各种参数,如预期的样本倍性。 生成的索引a.hdf5将比bam文件小得多。 合并样本ab的索引的方法是:

$ 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 2014Release 0.3.3 of ALPACA. Fixed mixed up annotations with annotate subcommand. Added column filters to HTML output.
13 Jan 2014Release 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 2014Release 0.2.4 of ALPACA. Further improved HTML output of alpaca show.
1 Dez 2014Release 0.2.3 of ALPACA. Improved HTML output of alpaca show.
30 Nov 2014Release 0.2.2 of ALPACA. This initial release provides all functionality descibed in my thesis “Parallelization, Scalability and Reproducibility in Next-Generation Sequencing Analysis”.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?