Carlmartin' Blog

In me the tiger sniffs the rose.

背景

今天2月份左右GATK的4.1版本发布, 经过测试目前版本的准确率相对于单机版本也有版本提高, 具体数值见下表

单机版GATK准确率表
单机GATK Precision Sensitivity F-measure
SNP 98.90% 99.84% 99.37%
INDEL 97.20% 96.22% 96.71%
分布式版GATK准确率表
分布式GATK Precision Sensitivity F-measure
SNP 98.91% 99.84% 99.37%
INDEL 97.32% 96.84% 96.84%

从图表上看, 虽然目前分布式GATK还是beta特性, 但是准确率已经和单机版很接近, 并且有部分还超越了.

单机版和分布式性能比较表
对比项 单机版本 分布式版本
耗时 48H 3.5H
阅读全文 »

首先说明转载, 本文转自这里

问题一

1、平均需要抛掷多少次硬币,才会首次出现连续的两个正面?

假设连续两个正面的期望是 E,那么,先看第一次抛硬币:

  1. 如果抛到反面,那么还期望抛 E 次,因为抛到反面完全没用,总数就期望抛 E+1
  2. 如果抛到正面,那么要看下一次,如果下一次也是正面,那抛硬币就结束了,总数是 2;如果下一次是反面,那么相当于重头来过,总数就期望抛 E+2

于是可以得到如下关系式:

E = 0.5(E+1) + 0.25*2 + 0.25(E+2)

得到所求期望 E=6

现在把题目拓展,不是说“连续两个正面”,而是“连续 n 个正面”呢?

阅读全文 »

缘起

本周在向组内培训安全编程规范的原则, 其中遇到了不少加解密算法相关的内容, 之前大致都了解过, 但是经常忘记, 因此今天特地写个博客把其中的内容都记录一下.

本片博客内容, 参考了不少这篇文章的内容, 有兴趣可以看原博客, 写的比我好.

对称加密与非对称加密

对称加密使用同一个密钥进行加密和解密, 因此这个密钥是不能公开的, 那么密钥的分发就成了一个大问题, 如何在不受信任的网络之中分发密钥, 成为限制对称加密算法的痛点.

非对称加密有两个密钥, 一个称之为公钥, 一个称之为私钥. 公钥顾名思义可以在不受信任的网络之中分发, 无论攻击者是否获取了公钥都无法密文.

非对称加密要实现这个能力, 需要有以下特点:

  1. 公钥和私钥成对出现, 换而言之: 一把公钥有且只有一把私钥, 反之亦然
  2. 公钥加密的数据有且只能由对应的私钥解密, 反之亦然

非对称加密的传输过程

阅读全文 »

缘由

前几天的时候, 看了<阿甘正传>的视频节目, 昨天晚上抽空又重温了一遍.

说起来我已经有看过4遍的<阿甘正传>了:

  • 第一遍在高中时候看的, 那个时候觉得这个片子特别的爽, 毕竟是一个逆袭的故事嘛, 和大多数的网络小说的套路实际上类型.
  • 第二遍是在大学的时候看的, 那个时候思绪关心政治历史哲学等内容, 特别关注于电影里面的历史进程, 觉得阿甘真的是历史见证者, 这也是另外一种意淫, 和大多数的穿越小说也类似.
  • 第三遍是在毕业之后看的, 那个时候关注电影的构建, 开始注意电影之中的人物塑造, 渐渐去了解了阿甘/珍妮/丹中尉/母亲等角色的性格
  • 第四遍是昨天的看的, 发现了其中一个之前我一直没关注到的点: 关于命运的思考. 在珍妮死去之后, 阿甘在墓前的那场戏, 实际上看着整部电影的文眼, 他让我思绪万千, 所以我就打算写个影评记录一下.

人物剖析

<阿甘正传>里面实际上描述的人物非常少, 因为整部电影都是以阿甘的视角展开的, 只有珍妮有一部分闪切的镜头来描述她的人生. 下面就依次描述一下对阿甘来说最重要的认.

阿甘母亲

阿甘的口头禅是”妈妈曾经说过”, 说明他大部分的人生思考实际来自他妈妈, 她肯定是阿甘人生最重要的人. 她的形象应该是一个比较完美的乡下母亲, 当阿甘出生之后整个人生都围绕在阿甘身边:

  1. 为让阿甘能上学而被潜规则

  2. 阿甘大学毕业之后, 以他为荣

  3. 尊重阿甘的人生选择, 并没有因为阿甘是低能儿而各种安排阿甘的人生.

  4. 耐心的教育阿甘, 特别是她死亡的时候那个场景, 能够那么平和的面对人生的结局, 并还在教育阿甘如何面对死亡/面对亲人的离去. 我自己有幻想今后如何教育自己的子女如何面对死亡, 因为这是一个无法逃避的问题, 我想阿甘母亲说的, 可能就是最好的注解了.

阅读全文 »

摘要

这篇文章讲记录GATK4.0 Spark流程之中性能点的分析.
目前我们团队已经把整个参数调优已经做到了极致, 目前已经识别的这些性能优化点只能优化GATK代码方式去调优了, 这也是我们团队接下来的一个重要工作.

因此, 这篇文章讲包括:

  1. GATK步骤的主要瓶颈点
  2. 以及造成该瓶颈的原因
  3. 优化建议

这篇文章不包括:

  1. 具体的GATK调优的参数
  2. 具体的Spark调优的参数
  3. GATK算法相关瓶颈点(目前能力不够, 以后有机会再分析)
  4. GATK源码级调优

流程剖析

之前已经有介绍GATK4.0 Spark的测序流程, 这里就按照里面的步骤一个一个分析吧.

分析的样本为NA12878的fastq.gz(98GB)文件, Ref使用HG38(3G), KnownSites使用GATK官网文件, 总大小为8G

阅读全文 »

GATK简介

GATK全称叫做: Genome Analysis Toolkit. 是Broad Institute开发的用于二代重测序数据分析的一款软件.
目前主要用于人类的WGS以及WES基因测试流程, 具体流程介绍可以看官网的最佳实践

GATK3版本之前, 一直都是单机版本, 性能一直是瓶颈点, 做完一个WGS的流程大约需要3天时间. 因此在GATK4以后的版本之中, 引入Spark做分布式性能优化, GATK4.0版本可以讲整个WGS测序流程的时间压缩在半天之内, 性能提高将近10倍有余.

但是, 目前所有标注有Spark加速的工具都是BETA Tool, 虽然就我们测试来看敏感度和准确性都和单机版本没有太大区别, 但是由于整理功能开发阶段, 工具接口可能会调整, 因此如果想应用到生产系统上的话, 也请慎重选择.

WGS: Whole Genome Sequencing 全基因组测序

WES: Whole Exome Sequencing 全外显子测测序

WGS流程简介

在GATK的最佳实践里面, 有流程介绍, 也有样例程序供大家参考

但是如果大家之前没有接触过WGS的话, 看官网的介绍还是有点晕. 推荐看一下碱基矿工GATK4.0和全基因组数据分析实践

好了, 言归正传, 我在这儿简单总结一下WGS的流程:

  1. 获取数据 — 脱机数据转化成FastQ格式
  2. 数据质控 — 使用Fastqc工具过滤掉低质量的数据
  3. 比对排序 — 使用Bwa + samtools工具对FastQ进行比对排序, 并将格式转化为Bam格式
  4. 碱基去重 — 使用GATK的MarkDuplicates工具完成该步骤
  5. 碱基矫正 — 使用GATK的BQSR工具完成该步骤
  6. 变异检测 — 使用GATK的HaplotypeCaller工具完成该步骤
  7. 变异控制 — 使用GATK的VQSR工具完成该步骤

最后我们实现的一个功能是将原始的FastQ个数的数据, 转化为VCF格式的数据, 完成整个WGS的流程.

阅读全文 »

面向人群

  • 精通Java/Scala编程
  • Spark相关使用及编程经验
  • 了解流应用架构

简明介绍

Spark Streaming是一种基于微批量(micro-batch)方式计算和处理实时流数据执行框架。
Streaming依托于于Spark执行框架,将连续输入数据按批次切分,通过DStream(Discretized stream)来表征,然后按批次组装为Spark任务,放入Spark任务池中执行。

图1 Streaming与Spark关系

因此基于micro-batch的Streaming必然会带有以下特征:

  • 高扩展性
  • 高吞吐量
  • 高可靠性
  • 高延时性

目前Streaming已经内置以下多种数据源和输出源的适配器,其中数据源使用比较多的是Kafka和HDFS,输出源一般都为HDFS。
Streming输入输出

阅读全文 »
0%