Samtools中文说明书

samtools-1.2中文使用手册,英文原文发布于2015年12月15日。 本翻译为2016年4月20日第一稿,如有建议或疑问请联系 roden.luo [AT] gmail.com。

samtools-1.3中文使用手册正在筹备翻译中,欢迎参与。

NAME – 名字

samtools – 序列比对/图谱(SAM)格式的工具箱

SYNOPSIS – 概要

samtools view -bt ref_list.txt -o aln.bam aln.sam.gz

samtools sort -T /tmp/aln.sorted -o aln.sorted.bam aln.bam

samtools index aln.sorted.bam

samtools idxstats aln.sorted.bam

samtools view aln.sorted.bam chr2:20,100,000-20,200,000

samtools merge out.bam in1.bam in2.bam in3.bam

samtools faidx ref.fasta

samtools fixmate in.namesorted.sam out.bam

samtools mpileup -C50 -gf ref.fasta -r chr3:1,000-2,000 in1.bam in2.bam

samtools tview aln.sorted.bam ref.fasta

samtools flags PAIRED,UNMAP,MUNMAP

samtools bam2fq input.bam > output.fastq

DESCRIPTION – 描述

Samtools是一个用来处理BAM格式(SAM的二进制格式,译者注)的比对文件的工具箱。它能够输入和输出SAM(序列比对/图谱)格式的文件,对其进行排序、合并、建立索引等处理,还可以快速获取任意区域的reads。

Samtools被设计成以数据流的形式工作。它把标准输入作为输入(stdin)文件 `-‘ ,把标准输出作为输出(stdout)文件 `-‘ 。因此多个命令可以通过Unix的管道技术结合起来。Samtools总是把警告和错误消息输出到标准错误输出(stderr)。

Samtools也能够打开一个远程FTP或HTTP服务器上的BAM(SAM不行)文件,但是这个BAM文件名要以 `ftp://’ 或 `http://’ 开头。Samtools会在当前工作目录下检查相应的索引文件,如果不存在的话,它会把它下载下来。Samtools不会获取整个比对文件,除非你要求它这么做。

COMMANDS AND OPTIONS – 命令和参数

view
samtools view [options] in.bam|in.sam|in.cram [region…]

如果没有指定参数或者区域,这条命令会以SAM格式(不含头文件)打印输入文件(SAM,BAM或CRAM格式)里的所有比对到标准输出。

你可以在输入文件的文件名后面指定一个或多个以空格分隔的区域来限制输出,这样只会输出落在指定区域内的比对。要指定区域,需要一个对坐标排过序的并且建立了索引的输入文件(BAM或CRAM格式)。

-b, -C, -1, -u, -h, -H, 和 -c 参数会改变默认的没有头文件的SAM输出格式。 -o -U 参数可以设置输出文件的名字。

-t-T 参数用来提供额外的参考数据,当输入的SAM没有@SQ头文件的时候,必须需要提供这两个中的一个参数。无论何时,只要是输出CRAM格式,就必须提供 -T 参数。

-L, -r, -R, -q, -l, -m, -f, 和 -F 参数用来过滤比对,只有那些满足特定标准的比对会被输出。

-x, -B, 和 -s 参数用来修饰每个比对中的数据。

最后 -@ 参数可用来为压缩分配额外的线程,而 -? 参数可以得到一个很长的帮助信息。

REGIONS – 区域:
区域可以用如下方法制定:RNAME[:STARTPOS[-ENDPOS]] ,即:染色体名[:起始位点[-终止位点]],([ ] 中的内容表示为可选内容,可以指定,也可以不指定。译者注),并且,所有的坐标系统都是以1标记第一个碱基的(1-based)。

要非常注意的是:如果给定了多个区域,有些比对可能会被输出多次,因为它们和多个区域都匹配。

指定区域的例子:

`chr1′
把所有比对到参考序列中名为`chr1’(也就是头文件里标明的 @SQ SN:chr1)的比对全部输出。(chr一般为染色体的缩写,译者注)
`chr2:1000000′
chr2上从第1,000,000碱基开始的序列到这条染色体的结尾的区域。
`chr3:1000-2000′
chr3上从第1,000个碱基到第2,000个碱基之间的共1001bp的区域(包含两个端点)。

OPTIONS – 参数:

-b
以BAM格式输出。
-C
以CRAM格式输出(要求有 -T 参数)。
-1
启用快速BAM压缩(隐含 -b)。
-u
输出未压缩的BAM。这个参数省下了压缩/解压缩的时间,因此更适合在运用管道技术把另一个samtools命令结合在一起时使用。
-h
在输出中包含头文件。
-H
只输出头文件。
-c
与输出比对不同,只对它们计数,并且输出总数。所有的过滤参数,比如 -f, -F, 和 -q, 都可以被考虑进来。
-?
输出长篇帮助文档并且立即退出。
-o FILE
输出到 FILE [stdout] ([ ]中表示默认值,这里表示如果使用了-o参数,但没有提供文件名,输出到标准输出。译者注)。
-U FILE
把那些没有被各种过滤参数所选中的比对,输出到 FILE里面。 当这个参数被使用是,所有的比对(如果指定了区域,则是所有和指定区域相交的比对)要么被写进输出文件,要么被写进这个文件,但绝不会同时被写进两个文件。
-t FILE
一个以制表符(tab)分隔的文件 FILE。 每一行必须含有参考序列的名字,放在第一列,和这个参考序列的长度,放在第二列,每一行代表一个不同的参考序列。第二列后面的任何字段都会被忽略。这个文件同时也定义了在排序时的参考序列的顺序。如果你运行`samtools faidx <ref.fa>’,那么它输出的索引文件 <ref.fa>.fai 可以被用作这里的 FILE
-T FILE
一个FASTA格式的参考序列文件 FILE,可以是被 bgzip 压缩过的,并且最好是被 samtools faidx建立过索引的。 如果索引文件不存在,我们会为你生成一个。
-L FILE
只输出那些和输入的BEDFILE重合的比对 [null](默认为空)。
-r STR
只输出 STR 这个read group里面的比对 [null]。
-R FILE
输出文件 FILE 里面列出来的read groups里的比对 [null]。
-q INT
当比对的MAPQ小于 INT 时,忽略这个比对 [0]。
-l STR
只输出 STR 这个文库(library)里面的比对 [null]。
-m INT
Only output alignments with number of CIGAR bases consuming query sequence ≥ INT [0]
-f INT
Only output alignments with all bits set in INT present in the FLAG field. INT can be specified in hex by beginning with `0x’ (i.e. /^0x[0-9A-F]+/) or in octal by beginning with `0′ (i.e. /^0[0-7]+/) [0].
-F INT
Do not output alignments with any bits set in INT present in the FLAG field. INT can be specified in hex by beginning with `0x’ (i.e. /^0x[0-9A-F]+/) or in octal by beginning with `0′ (i.e. /^0[0-7]+/) [0].
-x STR
Read tag to exclude from output (repeatable) [null]
-B
Collapse the backward CIGAR operation.
-s FLOAT
Integer part is used to seed the random number generator [0]. Part after the decimal point sets the fraction of templates/pairs to subsample [no subsampling].
-@ INT
进行BAM压缩操作时,除了主线程之外,额外分配的线程数 [0]。
-S
这个参数会被忽略,它只是为了和旧版本的samtools相兼容。之前,如果输入文件是SAM格式的话,必须添加这个参数,但是现在,软件会侦测输入的前几个字符,自动确定正确的格式。
tview
samtools tview [-p chr:pos] [-s STR] [-d display] <in.sorted.bam> [ref.fasta]

文字版的reads和参考序列的比对情况的查看器(基于 ncurses library )。在这个查看器中,按下 `?’ 来寻求帮助,按下 `g’ 可以从某个区域开始查看比对,这个区域用如下格式来表示:`chr10:10,000,000’,或者,当继续查看相同的参考序列时,可以使用 `=10,000,000’。

Options:

-d display
以Html格式(H)、Curses格式(C)或文本格式(T)输出。
-p chr:pos
直接到达这个位置。
-s STR
只显示 STR 这个样本或read group的比对。
mpileup
samtools mpileup [-EBugp] [-C capQcoef] [-r reg] [-f in.fa] [-l list] [-Q minBaseQ] [-q minMapQ] in.bam [in2.bam []]

对一个或多个BAM文件,生成VCF、BCF或者pileup(堆积文件)。比对记录会按照头文件中@RG行里面样本标识符(SM)来分组。如果样本标识符不存在,那么每一个输入文件都被视作一个独立的样本。

在(没有使用 -u -g 参数的)pileup格式中,每一行代表基因组上的一个位置,它由染色体名字,1-based坐标(该染色体的第一个碱基标为1),参考序列上的碱基,覆盖这个位点的reads数目,read上的碱基,碱基的质量和比对的质量构成。下列信息:匹配、不匹配、插入删除、正反向链、比对质量、是否是某read的起始或终止碱基,全部都编码在read上的碱基这里面了。在这一列中,一个点代表和参考序列正向链相同的一个匹配,一个逗号代表和反向链相同的一个匹配。一个 ‘>’ 或 ‘<‘ 代表a reference skip(抱歉,译者还不确定含义,不知该如何翻译),`ACGTN’代表正向链上的一个mismatch(不匹配),`acgtn’代表反向链上的一个mismatch。这样的一个样式,`\\+[0-9]+[ACGTNacgtn]+’,代表了在参考序列上这个位置和下个位置之间的一个insertion(插入)。Insertion的长度由样式中的数字给出,它后面是插入的序列。同样的,这个样式,`-[0-9]+[ACGTNacgtn]+’,代表一个deletion(删除)。在之后的行中,被删除的碱基会用 `*’ 来代表。同样在这一列中,一个 `^’ 符号表示是某read的起始点。 `^’的ASCII码减去33给出了比对质量。一个 `$’ 表示是某read的终止点。

Input Options – 输入参数:

-6, –illumina1.3+
假设质量是用Illumina 1.3+编码的话。
-A, –count-orphans
在识别变异时,不要跳过反常的read。
-b, –bam-list FILE
输入的BAM文件的地址的列表,一个文件一行。 [null]
-B, –no-BAQ
Disable probabilistic realignment for the computation of base alignment quality (BAQ). BAQ is the Phred-scaled probability of a read base being misaligned. Applying this option greatly helps to reduce false SNPs caused by misalignments.
-C, –adjust-MQ INT
Coefficient for downgrading mapping quality for reads containing excessive mismatches. Given a read with a phred-scaled probability q of being generated from the mapped position, the new mapping quality is about sqrt((INT-q)/INT)*INT. A zero value disables this functionality; if enabled, the recommended value for BWA is 50. [0]
-d, –max-depth INT
在一个位置上,对每个BAM输入文件,最多读取 INT 个reads。 [250]
-E, –redo-BAQ
在运行时重新计算BAQ,忽略存在的BQ标签。
-f, –fasta-ref FILE
faidx建立了索引的FASTA格式的参考序列文件,这个文件也可以是被bgzip压缩过的。 [null]
-G, –exclude-RG FILE
排除列在文件FILE里面的readgroups里面的reads。(每一个@RG-ID占一行)
-l, –positions FILE
BED或者是列了位置坐标的文件,这个文件含有一列区间或位点,这些地方是生产pileup或BCF的位置。如果是BED文件,坐标系统是0-based half-open(第一个碱基是0,区间是半开的)的。[null]
-q, -min-MQ INT
最小的比对质量,某个比对的质量超过该值时才会被使用。[0]
-Q, –min-BQ INT
最小的碱基质量,某个碱基的质量超过该值时才会被使用。[13]
-r, –region STR
只产生这个区域的pileup。需要建立了索引的BAM文件。如果和 -l 同时使用的话,会考虑两个要求的交集。STR[all sites]
-R, –ignore-RG
忽略RG标签,把一个BAM文件中所有的reads都视为一个样本。
–rf, –incl-flags STR|INT
需要的flag的标签:不在这里的mask bits(flag的值)的reads会被忽略 [null]
–ff, –excl-flags STR|INT
过滤flags:忽略有这些mask bits标记的reads [UNMAP,SECONDARY,QCFAIL,DUP]
-x, –ignore-overlaps
取消read-pair(双端测序的两个reads)的重叠的检查。

Output Options – 输出参数:

-o, –output FILE
把pileup或者VCF/BCF输出到FILE,而不是默认的标准输出里面。

(这个短参数同时被 –open-prob–output 使用。如果-o的参数含有任何非数字的字符,而不是由 + 或 – 符号开头,它会被视作是–output。通常文件的扩展名会考虑到这一点,但是如果要写入到一个完全由数字组成的文件名,使用 -o ./123–output 123 。)

-g, –BCF
计算基因型的概率,并输出到binary call format(BCF,二进制识别格式)。在v1.0版本的samtools中,它是BCF2,和BCF1格式是不兼容的,而以前的版本(0.1.x)输出的是BCF1。
-v, –VCF
计算基因型的概率,并输出到variant call format(VCF,变异识别格式)。输出是bgzip压缩后的VCF,除非设定了-u参数。

Output Options for mpileup format (without -g or -v) – mpileup格式的输出参数(没有 -g 或 -v):

-O, –output-BP
输出reads里面碱基的位置。
-s, –output-MQ
输出mapping的质量。

Output Options for VCF/BCF format (with -g or -v) – VCF/BCF格式的输出参数(有 -g 或 -v):

-D
输出每个样本的read depth(深度)[DEPRECATED – use -t DP instead](不再宜用,使用-t DP来替代它)
-S
输出每个样本的Phred标准的的链的bias(偏差)的P-value(不再宜用,使用-t SP来替代它)
-t, –output-tags LIST
输出逗号分隔的 FORMAT 和 INFO 标签的列表(大小写不敏感): DP (高质量碱基的数目,FORMAT), DV (高质量的非参考序列的碱基数,FORMAT), DPR (支持每个观察到的allele(等位基因)的高质量的碱基数,FORMAT), INFO/DPR (支持每个观察到的allele(等位基因)的高质量的碱基数,INFO), DP4 (高质量的 ref-forward, ref-reverse, alt-forward and alt-reverse (正向-参考序列,反向-参考序列,正向-突变序列,反向-突变序列)的碱基数目,FORMAT), SP (Phred标准的的链的bias(偏差)的P-value,FORMAT) [null]
-u, –uncompressed
输出未被压缩的VCF/BCF,在使用unix管道(pipe)时推荐这个参数。
-V
输出每个样本的非参考序列的reads数 (不再宜用,使用-t DV来替代它)

Options for SNP/INDEL Genotype Likelihood Computation (for -g or -v): 对SNP/INDEL基因型的概率计算的参数 (for -g or -v):

-e, –ext-prob INT
Phred标准的gap延伸的测序错误概率。降低INT值会产生更长的indels。 [20]
-F, –gap-frac FLOAT
最小的有gap的reads的比例。 [0.002]
-h, –tandem-qual INT
对同聚物错误建模的系数。考虑一个长度为 l 的同聚物而言,大小为 s 的indel的测序错误是如下建模的: INT * s / l. [100]
-I, –skip-indels
不进行INDEL的识别。
-L, –max-idepth INT
当每个样本的平均深度大于 INT 时,略过INDEL的识别。 [250]
-m, –min-ireads INT
识别候选indel时,最小的存在gap的reads数目 INT。 [1]
-o, –open-prob INT
由测序错误引入的gap的Phred-标准的概率。减少 INT 值会识别更多的indel。 [40]

(这个短参数同时被 –open-prob–output 使用。当 -o 的参数是可选的 + 或 – 号,跟随着数字0-9的话,它会被视作 –open-prob。)

-p, –per-sample-mF
Apply -m and -F thresholds per sample to increase sensitivity of calling. By default both options are applied to reads pooled from all samples.
-P, –platforms STR
逗号分隔的一列仪器平台(由@RG-PL决定的),候选indel会从这些reads中获取。我们建议从低indel错误率的测序平台,比如ILLUMINA,中去收集候选indel。 [all]
reheader
samtools reheader <in.header.sam> <in.bam>

in.header.sam 里面的头文件替换 in.bam 里的。这个命令比通过BAM→SAM→BAM转换来替换头文件要快很多。

cat
samtools cat [-h header.sam] [-o out.bam] <in1.bam> <in2.bam> [ … ]

串连 BAM 文件。每一个输入的BAM里面的 sequence dictionary 必须相同,虽然这个命令并不检查这一点。这个命令使用了和 reheader 类似的小技巧来实现了快速的BAM串连。

sort
samtools sort [-l level] [-m maxMem] [-o out.bam] [-O format] [-n] -T out.prefix [-@ threads] [in.bam]

对序列进行排序。默认通过最左边的坐标排序;当使用 -n 时,通过read的名字排序。 一个相应的 @HD-SO 排序顺序标签会被添加在头文件里面,或者如果必要的话会更新已经存在的标签。

排好序后默认输出到标准输出,如果使用了 -o 的话,就输出到指定的文件里面 (out.bam) 。当整个的序列数据不能放入内存(可以通过 -m 参数来控制)的时候,这个命令也会产生一些临时文件 out.prefix.%d.bam

Options:

-l INT
为最终的输出文件设置想要的压缩程度,从0(不压缩)或1(最快但是压缩得最少)到9(最大程度压缩但是写得最慢),和 gzip(1) 的压缩程度设置相似。

如果 -l 没有被使用,会使用默认的压缩程度。

-m INT
每个线程的最大内存,以 bytes 为单位设定或者添加一个 K, M, 或 G 后缀。 [768 MiB]
-n
根据read的名字(也就是 QNAME 那一列)来排序,而不是染色体坐标。
-o FILE
最后排好序后输出到 FILE 中,而不是标准输出。
-O FORMAT
最终输出 sam, bam, 或 cram

默认地,samtools 会基于 -o 文件的扩展名尝试选择一个格式;如果是到标准输出或者格式不能被推测出, -O 必须要被指定。

-T PREFIX
把临时文件写到 PREFIX.nnnn.bam. 里面。这个参数是必须的。
-@ INT
设置排序和压缩的线程数,该操作默认是单线程的。

为了和之前的脚本兼容,samtools sort 也支持以前的不太灵活的方式去指定临时的和最终的输出文件名:

samtools sort [-nof] [-m maxMem] in.bam out.prefix

排好序的BAM会被输出到 out.prefix.bam中,(或者由下面提到的 -o-f 决定),而且,任何临时文件都会被写进out.prefix.%d.bam

-o
把最后比对的结果输出到标准输出。
-f
使用 out.prefix 作为输出的全路径,并且不要添加 .bam 后缀。
-l, -m, -n, -@
以上面提到的相同的含义被接收。

最终这个会被删除的,您应该改去使用新的更灵活的调用方法。

merge
samtools merge [-nur1f] [-h inh.sam] [-R reg] [-b <list>] <out.bam> <in1.bam> <in2.bam> [<in3.bam> … <inN.bam>]

合并多个排好序的比对文件,产生一个排好序的输出文件,这个文件含有所有的输入记录,并且保留了他们原来的顺序。

如果 -h 被指定了的话,输入文件里的@SQ头文件将会被合并到指定的头中,否则的话,他们会被合并成由输入的头文件组成的复合的头中。如果在合并@SQ行的过程中,这些行体现了输入文件排好序的坐标,而在序列当中又出现了一个矛盾(比如说,input1.bam 有一个@SQ是 a,b,c 而input2.bam是 b,a,c),那么输出的结果文件需要被重新按照坐标序列排序。

除非指定了 -c-p 标志,在合并 @RG 和 @PG 记录到输出的头文件的时候,任何和现有 IDs 重复的 IDs 将会连接一个后缀把它们和其他头文件中相似的记录区分开来,并且read记录也会被更新来反映这一点。

OPTIONS:

-1
使用 zlib 压缩等级1来压缩输出文件。
-b FILE
输入 BAM 文件的列表,每行一个文件。
-f
如果输出文件存在的话,强制覆盖它。
-h FILE
FILE 的`@’头复制到 out.bam 中,如果不指定该参数的话,会复制 out.bam 的头。( FILE 实际是 SAM 格式的,但是它里面可能存在的任何比对记录都会被忽略。)
-n
使输入的比对序列按照read的名字来排序,而不是染色体坐标。
-R STR
在由 STR 指定的特定区域中合并文件。 [null]
-r
给每个比对添加一个 RG 标签,标签的值是通过文件名来推测的。
-u
输出未被压缩的 BAM 。
-c
把 RG 标签和 colliding IDs 结合,而不是添加一个后缀去区分它们。
-p
把 PG 标签和 colliding IDs 结合,而不是添加一个后缀去区分它们。
index
samtools index [-bc] [-m INT] aln.bam|aln.cram

为按坐标排好序的 BAM 或 CRAM 文件,用以快速随机访问。下列情况是需要这个索引的:用 region 参数限制了 samtools view , 和类似的针对特定感兴趣区域的命令。

对于一个 CRAM 文件, aln.cram ,名为 aln.cram.crai 的索引文件将会被创建。 对于一个 BAM 文件, aln.bam , 名为 aln.bam.baialn.bam.csi 的索引文件中的一个将会被创建,这由选择的索引格式决定。

Options:

-b
创建一个 BAI 索引,这是目前没用指定格式参数时的默认值。
-c
创建一个 CSI 索引。默认情况下,索引的最小间隔大小是 2^14 ,这和 BAI 使用的的固定值是一样的。
-m INT
创建一个 CSI 索引,使用 2^INT 作为最小间隔大小。
idxstats
samtools idxstats <aln.bam>

获取并且打印索引文件的统计信息。输出文件是制表符分隔的,每一行含有参考序列名,序列长度,比对上去的read数和没有比对上去的read数。

faidx
samtools faidx <ref.fasta> [region1 […]]

对FASTA格式的参考序列建立索引,或者从已建立索引的参考序列中获取子序列。 如果没有指定区间, faidx 会为这个文件在硬盘上创建索引文件 <ref.fasta>.fai 。如果指定了区间,相应的子序列会被获取并以FASTA格式打印到标准输出。输入文件可以是以 BGZF 格式的压缩文件。

fixmate
samtools fixmate [-rpc] [-O format] in.nameSrt.bam out.bam

从一个按照名字排序后的比对文件中,添加mate的坐标, ISIZE ,和mate相关的flag。

OPTIONS:

-r
删除次要的和没有比对上的reads。
-p
不使用 FR 匹配检查。
-c
添加模板 cigar ct 标签。
-O FORMAT
Write the final output as sam, bam, or cram.

默认地, samtools 会尝试基于输出文件的扩展名选择一个格式;如果是输出到标准输出或者格式不能被推出,就必须要指定 -O 参数。

rmdup
samtools rmdup [-sS] <input.srt.bam> <out.bam>

去除可能的由PCR造成的重复序列:如果多个 read pair 有相同的坐标,只保留比对质量最高的那一对。在双端模式下,这个命令用于FR方向并且要求正确设置 ISIZE 。它不处理不配对的 reads (比如两端比对到不同的染色体上了或者孤reads(pair中只有一个read比对到基因组了))。

OPTIONS:

-s
去除重复的单端测序reads。默认地,这个命令只对双端测序reads工作。
-S
处理双端测序reads和单端测序reads。
calmd
samtools calmd [-EeubSr] [-C capQcoef] <aln.bam> <ref.fasta>

产生 MD 标签。如果 MD 标签已经存在,并且新产生的MD标签和已有的不一样的话,这个命令会发出一个警告。默认输出成 SAM 。

OPTIONS:

-A
当和 -r 一起使用时,这个选项会重写原始的碱基质量。
-e
如果某个碱基和它比对上的参考序列是一致的,就把它转换成 = 。现在的插入删除的识别软件并不支持 = 的碱基。
-u
输出没有压缩的 BAM 文件。
-b
输出压缩的 BAM 文件。
-S
输入文件是带头文件的 SAM 。
-C INT
用来对低比对质量的reads加帽的系数。更多细节请查看 pileup 命令。 [0]
-r
计算 BQ 标签(没有 -A) 或者对碱基质量加帽(有 -A)。
-E
扩展版的 BAQ 计算,这个参数削弱了特异性而增加了敏感性,虽然只有小的影响。
targetcut
samtools targetcut [-Q minBaseQ] [-i inPenalty] [-0 em0] [-1 em1] [-2 em2] [-f ref] <in.bam>

这个命令鉴别目标区域,它通过检查 read 深度的连续性,来计算目标区域的单倍体的一致序列,并为每个相应目标区域输出一个序列到 SAM 文件中。当指定了参数 -f 时,会使用 BAQ 。这个命令的设计,只是为了 cutting fosmid clones from fosmid pool sequencing [Ref. Kitzman et al. (2010)].

phase
samtools phase [-AF] [-k len] [-b prefix] [-q minLOD] [-Q minBaseQ] <in.bam>

识别并且 phase (分相位)杂合SNPs。

OPTIONS:

-A
不处理那些 phase (相位)不清晰的 reads 。 Drop reads with ambiguous phase.
-b STR
Prefix of BAM output. When this option is in use, phase-0 reads will be saved in file STR.0.bam and phase-1 reads in STR.1.bam. Phase unknown reads will be randomly allocated to one of the two files. Chimeric reads with switch errors will be saved in STR.chimeric.bam. [null]
-F
不要尝试修复嵌合型的 reads 。
-k INT
局部 phasing 的最大长度。 [13]
-q INT
用以识别杂合子的最小的 Phred 标准的 LOD 值。 [40]
-Q INT
用于识别杂合的最小的碱基质量。 [13]
flags
samtools flags INT|STR[,…]

文本式和数字式的标志法之间的转换。

FLAGS:

0x1 PAIRED .. 双端(多段)测序技术
0x2 PROPER_PAIR .. 每短序列都被 aligner 合适的比对上了
0x4 UNMAP .. 片段未比对成功
0x8 MUNMAP .. 模板中的下一个片段没有被比对上
0x10 REVERSE .. SEQ序列是反向互补的
0x20 MREVERSE .. SEQ序列的下一段是反向互补的
0x40 READ1 .. 模板中的第一个片段
0x80 READ2 .. 模板中的最后一个片段
0x100 SECONDARY .. 次要比对
0x200 QCFAIL .. 没有通过质量控制
0x400 DUP .. PCR或者光学的重复
0x800 SUPPLEMENTARY .. 增补的比对
bam2fq
samtools bam2fq [-nO] [-s <outSE.fq>] <in.bam>

把 bam 转换成 FASTQ 格式。

OPTIONS:

-n
默认情况下,根据 BAM_READ1 或 BAM_READ2 的标志,‘/1’ 或者 ‘/2’ 会被相应的添加在read名字的末尾。 使用 -n 会保留原有的read的名字。
-O
如果可行的话,同标准质量字符串相比,优先选择使用 OQ 标签里的质量值.
-s FILE
把单个的 reads 以 FASTQ 格式写入 FILE 中,而不是输出他们。
help, –help
列出samtools可用的命令,并显示他们的简要用法。 如果同时指定了某个命令,如 samtools help view ,那么这个命令的详细用法将会被展示出来。
–version
显示 samtools 的版本号和版权信息,同时也列出 samtools 所使用的重要的库。
–version-only
以机器可读的格式显示 samtools 的完整版本号。

REFERENCE SEQUENCES – 参考序列

对于读和写,CRAM格式都需要使用参考序列。

当读取一个 CRAM 文件的时候,会去查询 @SQ 头文件,以寻找参考序列的MD5sum (M5: 标签)和本地参考序列文件(UR: 标签)。注意,基于http://ftp:// 的网址是不可以在 UR: 字段使用的,但是本地的 fasta 文件名(不管有没有添加 file:// )是可以的。

当创建一个 CRAM 文件的时候,@SQ 头文件也会被读取然后识别参考序列,但是 M5: 和 UR: 标签可能不存在。 在这种情况下,可以使用 samtools view 的 -T-t 参数去分别指定 fasta 或 fasta.fai 文件名(提供的 .fasta.fai 文件同样需要有 .fasta 文件做支撑)。

获取参考序列的搜索顺序是:

使用由命令行参数(比如 -T)指定的任何文件。

通过 REF_CACHE 环境变量查找 MD5。

查询 REF_PATH 环境变量中每个元素的 MD5 。

查找列在 UR 头标签里的本地文件。

ENVIRONMENT VARIABLES – 环境变量

REF_PATH
由冒号分隔(在windows上是分号)的一列位置,用于去搜索由MD5sum指定的序列。它可以是 一列目录或者网址。注意,如果是网址的话,http:// 和 ftp:// 以及可能出现的端口号中的冒 号将不会被视为网址的一部分,而不会被当做 PATH 字段的分隔符。对于网址而言, %s 会被读入的 MD5 替换。

如果没有指定REF_PATH,那么将会使用默认值:http://www.ebi.ac.uk/ena/cram/md5/%s; 如果 REF_CACHE 也没有指定的话,那么将会被设置成 $XDG_CACHE_HOME/hts-ref/%2s/%2s/%s 。 如果 $XDG_CACHE_HOME 没有设置的话, 会使用$HOME/.cache (如果没有找到 home 文件夹的话, 会使用本地系统的临时文件夹)。

REF_CACHE
这可被定义为一个单一的文件夹,用作本地的序列缓存区。一旦下载了一个参考序列,它将会被储存在 由REF_CACHE指定的位置。当读取一个参考序列时,会先在这个文件夹下搜索,然后再去 REF_PATH 搜索。 为了避免同一个文件夹下存入了大量的文件,可能会使用 %nums and %s 标记去创建一个由 MD5sum 中 num 字符构成的路径。例如:/local/ref_cache/%2s/%2s/%s 这串字符 将会创建一个嵌套两层的文件夹,最内层的文件夹里面将会存入 md5sum 最后的28个字符。

REF_CACHE 会被先搜索,然后才会尝试通过 REF_PATH 搜索列表加载。 如果 REF_PATH 没有被设定,那么 REF_PATH 和 REF_CACHE 会被自动设置(参见上文)。 但是如果 REF_PATH 被设定了而 REF_CACHE 没有被设定,那么就不会使用本地缓存。

为了方便生成更多的 REF_CACHE 文件夹下的内容,我们在Samtools软件中提供了一个 脚本,misc/seq_ref_populate.pl。它会为一个 fasta 文件或一个文件夹下所有的 fasta 文件生成 MD5sum 命名的文件。

EXAMPLES – 示例

@SQ 行存在于头文件中时,把 SAM 转化为 BAM 格式:

samtools view -bS aln.sam > aln.bam

如果 @SQ 行不存在:

samtools faidx ref.fa
samtools view -bt ref.fa.fai aln.sam > aln.bam

ref.fa.fai 是由 faidx 命令自动生成的。

使用本地的参考序列,把 BAM 文件转换成 CRAM 文件。

samtools view -C -T ref.fa aln.bam > aln.cram

在合并排序后的比对序列的时候,添加 RG 标签:

perl -e 'print "@RG\\tID:ga\\tSM:hs\\tLB:ga\\tPL:Illumina\\n@RG\\tID:454\\tSM:hs\\tLB:454\\tPL:454\\n"' > rg.txt
samtools merge -rh rg.txt merged.bam ga.bam 454.bam

RG 标签的值是由包含这个read的文件名决定的。在这个例子中,在 merged.bam 里面, 来源于 ga.bam 的reads会被标记成 RG:Z:ga ,而来源于 454.bam 的reads则会被 标记成 RG:Z:454

识别 SNP 和短 INDEL (插入删除):

samtools mpileup -uf ref.fa aln.bam | bcftools call -mv > var.raw.vcf
bcftools filter -s LowQual -e '%QUAL<20 || DP>100' var.raw.vcf  > var.flt.vcf

bcftools filter 命令会标记低质量的位点,和read深度超过一个限度的位点, 这个限度应该被调整为大约两倍平均测序深度(更大的read深度通常意味着富含虚假信息的问题区域)。 对于含有过量mismatch的reads而言,它们mapping的质量如果被高估了的话,分析员可以考虑 给 mpileup 添加 -C50 。应用这个参数通常对 BWA-short 有所 帮助,对别的比对软件可能没有帮助。

个体是由 @RG header行的 SM 标签来确定的。不同个体可以放到一个比对文件中; 一个个体也可以被分到多个文件中。参数 -P 指明候选indel应该只从 @RG-PL 标签为 ILLUMINA 的read groups中收集。从容易出现indel的测序技术测出来的reads中收集候选 indel可能会影响indel识别的性能。

为一个二倍体个体产生保守序列

samtools mpileup -uf ref.fa aln.bam | bcftools call -c | vcfutils.pl vcf2fq > cns.fq

为一个个体解单倍体型(Phase one individual):

samtools calmd -AEur aln.bam ref.fa | samtools phase -b prefix - > phase.out

命令 calmd 用来减少INDELs附近的假杂合。

Dump BAQ applied alignment for other SNP callers:

samtools calmd -bAr aln.bam > aln.baq.bam

该命令同时添加并矫正 NMMD 标签。calmd 命令也有 -C 参数, 同 pileupmpileup 里面的是一样的。如果有帮助,可以使用它。

LIMITATIONS – 限制

在 bam_import.c, bam_endian.h, bam.c 和 bam_aux.c 中,单词没有对齐。

Samtools 对双端测序的 rmdup 命令对非配对的reads不适用。(例如:孤reads或者两条map到不同染 色体上的双端测序的reads).如果要考虑这个的话,请使用 Picard 的 MarkDuplicates ,虽然有一点慢, 但它能够正确地处理这些情况。

AUTHOR – 作者

桑格研究所的 Heng Li 写了 C 版本的 samtools 。Broad研究院的 Bob Handsaker 实现了 BGZF 库。 John Marshall 和 Petr Danecek 为源码做出了贡献,并且,千人基因组计划中的许多人为 SAM 格式标准 做出了贡献。

SEE ALSO – 另请参阅

bcftools(1), sam(5)

Samtools 网站: <http://samtools.sourceforge.net>
Samtools 最新源码: <https://github.com/samtools/samtools>
SAM/BAM,CRAM,VCF/BCF 的文件格式标准: <http://samtools.github.io/hts-specs>
HTSlib 网站: <https://github.com/samtools/htslib>
Bcftools 网站: <http://samtools.github.io/bcftools>

samtools常用命令详解

samtools常用命令详解

samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml
samtools是一个用于操作sam和bam文件的工具合集。包含有许多命令。以下是常用命令的介绍

1. view

view命令的主要功能是:将sam文件转换成bam文件;然后对bam文件进行各种操作,比如数据的排序(不属于本命令的功能)和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作);最后将排序或提取得到的数据输出为bam或sam(默认的)格式。

bam文件优点:bam文件为二进制文件,占用的磁盘空间比sam文本文件小;利用bam二进制文件的运算速度快。

view命令中,对sam文件头部的输入(-t或-T)和输出(-h)是单独的一些参数来控制的。

Usage: samtools view [options] <in.bam>|<in.sam> [region1 [...]]
默认情况下不加 region,则是输出所有的 region.

Options: -b       output BAM
                  默认下输出是 SAM 格式文件,该参数设置输出 BAM 格式
         -h       print header for the SAM output
                  默认下输出的 sam 格式文件不带 header,该参数设定输出sam文件时带 header 信息
         -H       print header only (no alignments)
         -S       input is SAM
                  默认下输入是 BAM 文件,若是输入是 SAM 文件,则最好加该参数,否则有时候会报错。
         -u       uncompressed BAM output (force -b)
                  该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。
         -c       Instead of printing the alignments, only count them and print the 
                  total number. All filter options, such as ‘-f’, ‘-F’ and ‘-q’ , 
                  are taken into account.
         -1       fast compression (force -b)
         -x       output FLAG in HEX (samtools-C specific)
         -X       output FLAG in string (samtools-C specific)
         -c       print only the count of matching records
         -L FILE  output alignments overlapping the input BED FILE [null]
         -t FILE  list of reference names and lengths (force -S) [null]
                  使用一个list文件来作为header的输入
         -T FILE  reference sequence file (force -S) [null]
                  使用序列fasta文件作为header的输入
         -o FILE  output file name [stdout]
         -R FILE  list of read groups to be outputted [null]
         -f INT   required flag, 0 for unset [0]
         -F INT   filtering flag, 0 for unset [0] 
                  Skip alignments with bits present in INT [0]
                  数字4代表该序列没有比对到参考序列上
                  数字8代表该序列的mate序列没有比对到参考序列上
         -q INT   minimum mapping quality [0]
         -l STR   only output reads in library STR [null]
         -r STR   only output reads in read group STR [null]
         -s FLOAT fraction of templates to subsample; integer part as seed [-1]
         -?       longer help

例子:

将sam文件转换成bam文件
$ samtools view -bS abc.sam > abc.bam
$ samtools view -b -S abc.sam -o abc.bam

提取比对到参考序列上的比对结果
$ samtools view -bF 4 abc.bam > abc.F.bam

提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可
$ samtools view -bF 12 abc.bam > abc.F12.bam

提取没有比对到参考序列上的比对结果
$ samtools view -bf 4 abc.bam > abc.f.bam

提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式
$ samtools view abc.bam scaffold1 > scaffold1.sam

提取scaffold1上能比对到30k到100k区域的比对结果
$ samtools view abc.bam scaffold1:30000-100000 $gt; scaffold1_30k-100k.sam

根据fasta文件,将 header 加入到 sam 或 bam 文件中
$ samtools view -T genome.fasta -h scaffold1.sam > scaffold1.h.sam

2. sort

sort对bam文件进行排序。

Usage: samtools sort [-n] [-m <maxMem>] <in.bam> <out.prefix>  
-m 参数默认下是 500,000,000 即500M(不支持K,M,G等缩写)。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。
-n 设定排序方式按short reads的ID排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。

例子:

$ samtools sort abc.bam abc.sort
$ samtools view abc.sort.bam | less -S

3.merge

将2个或2个以上的已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。

Usage:   samtools merge [-nr] [-h inh.sam] <out.bam> <in1.bam> <in2.bam>[...]

Options: -n       sort by read names
         -r       attach RG tag (inferred from file names)
         -u       uncompressed BAM output
         -f       overwrite the output BAM if exist
         -1       compress level 1
         -R STR   merge file in the specified region STR [all]
         -h FILE  copy the header in FILE to <out.bam> [in1.bam]

Note: Samtools' merge does not reconstruct the @RG dictionary in the header. Users
      must provide the correct header with -h, or uses Picard which properly maintains
      the header dictionary in merging.

4.index

必须对bam文件进行默认情况下的排序后,才能进行index。否则会报错。

建立索引后将产生后缀为.bai的文件,用于快速的随机处理。很多情况下需要有bai文件的存在,特别是显示序列比对情况下。比如samtool的tview命令就需要;gbrowse2显示reads的比对图形的时候也需要。

Usage: samtools index <in.bam> [out.index]

例子:

以下两种命令结果一样
$ samtools index abc.sort.bam
$ samtools index abc.sort.bam abc.sort.bam.bai

5. faidx

对fasta文件建立索引,生成的索引文件以.fai后缀结尾。该命令也能依据索引文件快速提取fasta文件中的某一条(子)序列

Usage: samtools faidx <in.bam> [ [...]]

对基因组文件建立索引
$ samtools faidx genome.fasta
生成了索引文件genome.fasta.fai,是一个文本文件,分成了5列。第一列是子序列的名称;
第二列是子序列的长度;个人认为“第三列是序列所在的位置”,因为该数字从上往下逐渐变大,
最后的数字是genome.fasta文件的大小;第4和5列不知是啥意思。于是通过此文件,可以定
位子序列在fasta文件在磁盘上的存放位置,直接快速调出子序列。

由于有索引文件,可以使用以下命令很快从基因组中提取到fasta格式的子序列
$ samtools faidx genome.fasta scffold_10 > scaffold_10.fasta

6. tview

tview能直观的显示出reads比对基因组的情况,和基因组浏览器有点类似。

Usage: samtools tview <aln.bam> [ref.fasta]

当给出参考基因组的时候,会在第一排显示参考基因组的序列,否则,第一排全用N表示。
按下 g ,则提示输入要到达基因组的某一个位点。例子“scaffold_10:1000"表示到达第
10号scaffold的第1000个碱基位点处。
使用H(左)J(上)K(下)L(右)移动显示界面。大写字母移动快,小写字母移动慢。
使用空格建向左快速移动(和 L 类似),使用Backspace键向左快速移动(和 H 类似)。
Ctrl+H 向左移动1kb碱基距离; Ctrl+L 向右移动1kb碱基距离
可以用颜色标注比对质量,碱基质量,核苷酸等。30~40的碱基质量或比对质量使用白色表示;
20~30黄色;10~20绿色;0~10蓝色。
使用点号'.'切换显示碱基和点号;使用r切换显示read name等
还有很多其它的使用说明,具体按 ? 键来查看。

7. flagstat

给出BAM文件的比对结果

Usage: samtools flagstat <in.bam>

$ samtools flagstat example.bam
11945742 + 0 in total (QC-passed reads + QC-failed reads)
#总共的reads数
0 + 0 duplicates
7536364 + 0 mapped (63.09%:-nan%)
#总体上reads的匹配率
11945742 + 0 paired in sequencing
#有多少reads是属于paired reads
5972871 + 0 read1
#reads1中的reads数
5972871 + 0 read2
#reads2中的reads数
6412042 + 0 properly paired (53.68%:-nan%)
#完美匹配的reads数:比对到同一条参考序列,并且两条reads之间的距离符合设置的阈值
6899708 + 0 with itself and mate mapped
#paired reads中两条都比对到参考序列上的reads数
636656 + 0 singletons (5.33%:-nan%)
#单独一条匹配到参考序列上的reads数,和上一个相加,则是总的匹配上的reads数。
469868 + 0 with mate mapped to a different chr
#paired reads中两条分别比对到两条不同的参考序列的reads数
243047 + 0 with mate mapped to a different chr (mapQ>=5)

#同上一个,只是其中比对质量>=5的reads的数量

7. depth

得到每个碱基位点的测序深度,并输出到标准输出。

Usage: bam2depth [-r reg] [-q baseQthres] [-Q mapQthres] [-b in.bed] <in1.bam> [...]

8. 其它有用的命令

reheader 替换bam文件的头

$ samtools reheader <in.header.sam> <in.bam>

cat 连接多个bam文件,适用于非sorted的bam文件

$ samtools cat [-h header.sam] [-o out.bam] <in1.bam> <in2.bam> [ ... ]

idxstats 统计一个表格,4列,分别为”序列名,序列长度,比对上的reads数,unmapped reads number”。第4列应该是paired reads中有一端能匹配到该scaffold上,而另外一端不匹配到任何scaffolds上的reads数。

$ samtools idxstats <aln.bam>

9. 将bam文件转换为fastq文件

有时候,我们需要提取出比对到一段参考序列的reads,进行小范围的分析,以利于debug等。这时需要将bam或sam文件转换为fastq格式。
该网站提供了一个bam转换为fastq的程序:http://www.hudsonalpha.org/gsl/information/software/bam2fastq

$ wget http://www.hudsonalpha.org/gsl/static/software/bam2fastq-1.1.0.tgz
$ tar zxf bam2fastq-1.1.0.tgz
$ cd bam2fastq-1.1.0
$ make
$ ./bam2fastq <in.bam>

10. mpileup

samtools还有个非常重要的命令mpileup,以前为pileup。该命令用于生成bcf文件,再使用bcftools进行SNP和Indel的分析。bcftools是samtool中附带的软件,在samtools的安装文件夹中可以找到。

最常用的参数有2: -f 来输入有索引文件的fasta参考序列; -g 输出到bcf格式。用法和最简单的例子如下

Usage: samtools mpileup [-EBug] [-C capQcoef] [-r reg] [-f in.fa] [-l list] [-M capMapQ] [-Q minBaseQ] [-q minMapQ] in.bam [in2.bam [...]]

$ samtools mpileup -f genome.fasta abc.bam > abc.txt
$ samtools mpileup -gSDf genome.fasta abc.bam > abc.bcf
$ samtools mpileup -guSDf genome.fasta abc.bam | \
           bcftools view -cvNg - > abc.vcf

mpileup不使用-u或-g参数时,则不生成二进制的bcf文件,而生成一个文本文件(输出到标准输出)。该文本文件统计了参考序列中每个碱基位点的比对情况;该文件每一行代表了参考序列中某一个碱基位点的比对结果。比如:

scaffold_1      2841    A       11      ,,,...,....     BHIGDGIJ?FF
scaffold_1      2842    C       12      ,$,,...,....^I. CFGEGEGGCFF+
scaffold_1      2843    G       11      ,,...,.....     FDDDDCD?DD+
scaffold_1      2844    G       11      ,,...,.....     FA?AAAA<AA+
scaffold_1      2845    G       11      ,,...,.....     F656666166*
scaffold_1      2846    A       11      ,,...,.....     (1.1111)11*
scaffold_1      2847    A       11      ,,+9acggtgaag.+9ACGGTGAAT.+9ACGGTGAAG.+9ACGGTGAAG,+9acggtgaag.+9ACGGTGAAG.+9ACGGTGAAG.+9ACGGTGAAG.+9ACGGTGAAG.+9ACGGTGAAG       %.+....-..)
scaffold_1      2848    N       11      agGGGgGGGGG     !!$!!!!!!!!
scaffold_1      2849    A       11      c$,...,.....    !0000000000
scaffold_1      2850    A       10      ,...,.....      353333333

mpileup生成的结果包含6行:参考序列名;位置;参考碱基;比对上的reads数;比对情况;比对上的碱基的质量。其中第5列比较复杂,解释如下:

1 ‘.’代表与参考序列正链匹配。
2 ‘,’代表与参考序列负链匹配。
3 ‘ATCGN’代表在正链上的不匹配。
4 ‘atcgn’代表在负链上的不匹配。
5 ‘*’代表模糊碱基
6 ‘^’代表匹配的碱基是一个read的开始;’^’后面紧跟的ascii码减去33代表比对质量;这两个符号修饰的是后面的碱基,其后紧跟的碱基(.,ATCGatcgNn)代表该read的第一个碱基。
7 ‘$’代表一个read的结束,该符号修饰的是其前面的碱基。
8 正则式’\+[0-9]+[ACGTNacgtn]+’代表在该位点后插入的碱基;比如上例中在scaffold_1的2847后插入了9个长度的碱基acggtgaag。表明此处极可能是indel。
9 正则式’-[0-9]+[ACGTNacgtn]+’代表在该位点后缺失的碱基;

pileup具体的参数如下:

输入参数
-6       Assume the quality is in the Illumina 1.3+ encoding. -A Do not skip anomalous read pairs in variant calling. 
-B       Disable probabilistic realignment for the computation of base alignment quality (BAQ). BAQ is the Phred-scaled probability of a read base being misaligned. Applying this option greatly helps to reduce false SNPs caused by misalignments. 
-b FILE  List of input BAM files, one file per line [null]
-C INT   Coefficient for downgrading mapping quality for reads containing excessive mismatches. Given a read with a phred-scaled probability q of being generated from the mapped position, the new mapping quality is about sqrt((INT-q)/INT)*INT. A zero value disables this functionality; if enabled, the recommended value for BWA is 50. [0] 
-d INT   At a position, read maximally INT reads per input BAM. [250] 
-E       Extended BAQ computation. This option helps sensitivity especially for MNPs, but may hurt specificity a little bit. 
-f FILE  The faidx-indexed reference file in the FASTA format. The file can be optionally compressed by razip. [null] 
-l FILE  BED or position list file containing a list of regions or sites where pileup or BCF should be generated [null] 
-M INT       cap mapping quality at INT [60]
-q INT 	Minimum mapping quality for an alignment to be used [0] 
-Q INT 	Minimum base quality for a base to be considered [13]
-r STR 	Only generate pileup in region STR [all sites] 

输出参数
-D 	Output per-sample read depth (require -g/-u)
-g 	Compute genotype likelihoods and output them in the binary call format (BCF). 
-S 	Output per-sample Phred-scaled strand bias P-value (require -g/-u) 
-u 	Similar to -g except that the output is uncompressed BCF, which is preferred for piping. 

Options for Genotype Likelihood Computation (for -g or -u):
-e INT 	Phred-scaled gap extension sequencing error probability. Reducing INT leads to longer indels. [20] 
-h INT 	Coefficient for modeling homopolymer errors. Given an l-long homopolymer run, the sequencing error of an indel of size s is modeled as INT*s/l. [100] 
-I 	Do not perform INDEL calling 
-L INT 	Skip INDEL calling if the average per-sample depth is above INT. [250] 
-o INT 	Phred-scaled gap open sequencing error probability. Reducing INT leads to more indel calls. [40] 
-P STR 	Comma dilimited list of platforms (determined by @RG-PL) from which indel candidates are obtained. It is recommended to collect indel candidates from sequencing technologies that have low indel error rate such as ILLUMINA. [all]

11. 使用bcftools

bcftools和samtools类似,用于处理vcf(variant call format)文件和bcf(binary call format)文件。前者为文本文件,后者为其二进制文件。

bcftools使用简单,最主要的命令是view命令,其次还有index和cat等命令。index和cat命令和samtools中类似。此处主讲使用view命令来进行SNP和Indel calling。该命令的使用方法和例子为:

$ bcftools view [-AbFGNQSucgv] [-D seqDict] [-l listLoci] [-s listSample] 
          [-i gapSNPratio] [-t mutRate] [-p varThres] [-P prior] 
          [-1 nGroup1] [-d minFrac] [-U nPerm] [-X permThres] 
          [-T trioType] in.bcf [region]

$ bcftools view -cvNg abc.bcf > snp_indel.vcf

生成的结果文件为vcf格式,有10列,分别是:1 参考序列名;2 varianti所在的left-most位置;3 variant的ID(默认未设置,用’.’表示);4 参考序列的allele;5 variant的allele(有多个alleles,则用’,’分隔);6 variant/reference QUALity;7 FILTers applied;8 variant的信息,使用分号隔开;9 FORMAT of the genotype fields, separated by colon (optional); 10 SAMPLE genotypes and per-sample information (optional)。
例如:

scaffold_1      2847    .       A       AACGGTGAAG      194     .       INDEL;DP=11;VDB=0.0401;AF1=1;AC1=2;DP4=0,0,8,3;MQ=35;FQ=-67.5   GT:PL:GQ        1/1:235,33,0:63
scaffold_1      3908    .       G       A       111     .       DP=13;VDB=0.0085;AF1=1;AC1=2;DP4=0,0,5,7;MQ=42;FQ=-63   GT:PL:GQ        1/1:144,36,0:69
scaffold_1      4500    .       A       G       31.5    .       DP=8;VDB=0.0034;AF1=1;AC1=2;DP4=0,0,1,3;MQ=42;FQ=-39    GT:PL:GQ        1/1:64,12,0:21
scaffold_1      4581    .       TGGNGG  TGG     145     .       INDEL;DP=8;VDB=0.0308;AF1=1;AC1=2;DP4=0,0,0,8;MQ=42;FQ=-58.5    GT:PL:GQ        1/1:186,24,0:45
scaffold_1      4644    .       G       A       195     .       DP=21;VDB=0.0198;AF1=1;AC1=2;DP4=0,0,10,10;MQ=42;FQ=-87 GT:PL:GQ        1/1:228,60,0:99
scaffold_1      4827    .       NACAAAGA        NA      4.42    .       INDEL;DP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=40;FQ=-37.5       GT:PL:GQ        0/1:40,3,0:3
scaffold_1      4854    .       A       G       48      .       DP=6;VDB=0.0085;AF1=1;AC1=2;DP4=0,0,2,1;MQ=41;FQ=-36    GT:PL:GQ        1/1:80,9,0:16
scaffold_1      5120    .       A       G       85      .       DP=8;VDB=0.0355;AF1=1;AC1=2;DP4=0,0,5,3;MQ=42;FQ=-51    GT:PL:GQ        1/1:118,24,0:45

第8列中显示了对variants的信息描述,比较重要,其中的 Tag 的描述如下:

Tag	Format	Description
AF1	double	Max-likelihood estimate of the site allele frequency (AF) of the first ALT allele
DP	int	Raw read depth (without quality filtering)
DP4	int[4]	# high-quality reference forward bases, ref reverse, alternate for and alt rev bases
FQ	int	Consensus quality. Positive: sample genotypes different; negative: otherwise
MQ	int	Root-Mean-Square mapping quality of covering reads
PC2	int[2]	Phred probability of AF in group1 samples being larger (,smaller) than in group2
PCHI2	double	Posterior weighted chi^2 P-value between group1 and group2 samples
PV4	double[4]	P-value for strand bias, baseQ bias, mapQ bias and tail distance bias
QCHI2	int	Phred-scaled PCHI2
RP	int	# permutations yielding a smaller PCHI2
CLR	int	Phred log ratio of genotype likelihoods with and without the trio/pair constraint
UGT	string	Most probable genotype configuration without the trio constraint
CGT	string	Most probable configuration with the trio constraint

bcftools view 的具体参数如下:

Input/Output Options:
-A 	Retain all possible alternate alleles at variant sites. By default, the view command discards unlikely alleles.
-b 	Output in the BCF format. The default is VCF.
-D FILE Sequence dictionary (list of chromosome names) for VCF->BCF conversion [null]
-F 	Indicate PL is generated by r921 or before (ordering is different).
-G 	Suppress all individual genotype information.
-l FILE List of sites at which information are outputted [all sites]
-N 	Skip sites where the REF field is not A/C/G/T
-Q 	Output the QCALL likelihood format
-s FILE List of samples to use. The first column in the input gives the sample names and the second gives the ploidy, which can only be 1 or 2. When the 2nd column is absent, the sample ploidy is assumed to be 2. In the output, the ordering of samples will be identical to the one in FILE. [null]
-S 	The input is VCF instead of BCF.
-u 	Uncompressed BCF output (force -b). 

Consensus/Variant Calling Options:
-c 	Call variants using Bayesian inference. This option automatically invokes option -e.
-d FLOAT When -v is in use, skip loci where the fraction of samples covered by reads is below FLOAT. [0]
        当有多个sample用于variants calling时,比如多个转录组数据或多个重测序
        数据需要比对到参考基因组上,设置该值,表明至少有该<float 0~1>比例的
        samples在该位点都有覆盖才计算入variant.所以对于只有一个sample的情况
        下,该值设置在0~1之间没有意义,大于1则得不到任何结果。
-e 	Perform max-likelihood inference only, including estimating the site allele frequency, testing Hardy-Weinberg equlibrium and testing associations with LRT.
-g 	Call per-sample genotypes at variant sites (force -c)
-i FLOAT Ratio of INDEL-to-SNP mutation rate [0.15]
-p FLOAT A site is considered to be a variant if P(ref|D)
-t FLOAT Scaled muttion rate for variant calling [0.001]
-T STR 	Enable pair/trio calling. For trio calling, option -s is usually needed to be applied to configure the trio members and their ordering. In the file supplied to the option -s, the first sample must be the child, the second the father and the third the mother. The valid values of STR are ‘pair’, ‘trioauto’, ‘trioxd’ and ‘trioxs’, where ‘pair’ calls differences between two input samples, and ‘trioxd’ (‘trioxs’) specifies that the input is from the X chromosome non-PAR regions and the child is a female (male). [null]
-v 	Output variant sites only (force -c) 

Contrast Calling and Association Test Options:
-1 INT 	Number of group-1 samples. This option is used for dividing the samples into two groups for contrast SNP calling or association test. When this option is in use, the following VCF INFO will be outputted: PC2, PCHI2 and QCHI2. [0]
-U INT 	Number of permutations for association test (effective only with -1) [0]
-X FLOAT Only perform permutations for P(chi^2)

使用bcftools得到variant calling结果后。需要对结果再次进行过滤。主要依据比对结果中第8列信息。其中的 DP4 一行尤为重要,提供了4个数据:1 比对结果和正链一致的reads数、2 比对结果和负链一致的reads数、3 比对结果在正链的variant上的reads数、4 比对结果在负链的variant上的reads数。可以设定 (value3 + value4)大于某一阈值,才算是variant。比如:

$ perl -ne 'print $_ if /DP4=(\d+),(\d+),(\d+),(\d+)/ && ($3+$4)>=10 && ($3+$4)/($1+$2+$3+$4)>=0.8' snp_indel.vcf > snp_indel.final.vcf

12. samtools rmdup

NGS上机测序前需要进行PCR一步,使一个模板扩增出一簇,从而在上机测序的时候表现出为1个点,即一个reads。若一个模板扩增出了多簇,结果得到了多个reads,这些reads的坐标(coordinates)是相近的。在进行了reads比对后需要将这些由PCR duplicates获得的reads去掉,并只保留最高比对质量的read。使用rmdup命令即可完成.

Usage:  samtools rmdup [-sS]  
-s 对single-end reads。默认情况下,只对paired-end reads
-S 将Paired-end reads作为single-end reads处理。

$ samtools input.sorted.bam output.bam

重量级报告!2015中国癌症统计数据

原文:《Cancer statistics in China 2015》,发表于CA-Cancer J Clin,影响因子144.8

  翻译:银河医药团队王明瑞主译13260428811(实习生),张金洋18001315838

随着发病率和死亡率越来越高,癌症正成为中国首要的死亡原因和一个重要的公共卫生问题。因为中国人口多(13.7亿人),先前的国家发病率和死 亡率评估都限制在上世纪90年代的小样本或基于特定的年份。现在通过国家中央癌症登记处的高质量数据,作者分析了72个地区基于人群的癌症登记 (2009-2011),代表了6.5%的人口,用以估计2015年新病例和癌症死亡的人数。趋势分析(2000-2011)使用了22个登记处的数据。 结果表明,2015年预计有4292000个新癌症病例和 2814000个癌症死亡,肺癌的发病率和死亡率都是最高的。胃癌、食道癌和肝癌的发病率和死亡率也很高。将所有癌症的发病率和死亡率结合起来看,农村居 民的年龄标准化数据要高于城镇居民(发病率213.6人/10万人vs191.5人/10万人;死亡率149人/10万人vs109.5人/10万人)。 将所有的癌症结合起来,在2000年到2011年之间,男性的发病率保持稳定(每年+0.2%;P=.1),女性发病率明显上升(每 年+2.2%;P<.05)。

与此相对,死亡率自从 2006 年之后一直在下降,无论男性(每年-1.4%;P<.05)还是女性(每年-1.1%;P<.05)。

很多评估范围内的癌症可以通过减少癌症风险因素、提高临床护理服务的效率,尤其是农村人口和弱势群体,来减少发病率和死亡率。

  1 、介绍

中国的癌症发病率和死亡率一直在上升,从2010年开始已经成为主要的致死原因,成为了中国的一个主要公共卫生问题。这个逐渐增加的压力有相当 大的一部分可以归于人口的增长和老龄化以及社会人口统计的变化。尽管之前有全国发病率的评估,但那些评估或者只能代表很小的人口(小于2%),或者只有特 定的年份。这对评估的不确定性和代表性有影响,并且会潜在的影响癌症控制政策的制定。因为之前的中国癌症预防与控制项目(2004-2010)是10年之 前发布的,所以一个关于中国全国与各地方癌症规模与概况的更加复杂的描绘将会提供更加清晰的优先顺序,为制定基于癌症谱的政策和规划制定提供参考,减轻国 家的癌症负担。

这篇研究评估了全国范围内的癌症发病率、死亡率和存活率;几个主要癌症分区域的发病率和死亡率;几个主要癌症的时间趋势以及这个信息对中国癌症防控提供的指导。

  2 、数据源和方法

2.1 中国癌症登记

全国肿瘤登记中心(NCCR)建立于2002年,负责收集、评估、发布中国的癌症数据。癌症诊断会被上报给地方癌症登记,这些数据有多个来源, 包括地方医院和社区卫生中心,以及城镇居民基本医疗保险和新农合。自2002年起,标准登记条例的实施已经大大提升了癌症数据的质量。2008年,卫生部 通过中央财政体系实施了国家癌症登记项目。自此之后,各地基于人群的登记数量从2008年的54(人口覆盖1.1亿人)上升到了2014年的308(人口 覆盖3亿人)。

目前并非所有的登记都有足够的可供上报的高质量数据。每个地方登记处提交的数据都会受到 NCCR 和国际癌症研究机构/国际癌症注册协会(IARC/IACR)的检查。质量评估包括但不限于,形态学鉴定所占比例(MV%),有死亡证明的癌症病例所占比 例(DCO%),死亡率/发病率比率(M/I),未认证癌症的比例(UB%),不明确或位置原发癌部位的百分比(CPU%)。只有满足以上这些要求的数据 才会在分析中使用。登记数据的具体质量分类可以在之前的出版物中找到(表 1)。数据分类为A或B在这篇研究中被认为是可以接受的。提交的登记数据可供使用的比例随着年份有变动,从2009年的69.2%(104 个中 72 个可用),到2010年的66.2%(219 个中145个可用),和 2011年的75.6%(234个中177个可用)。我们使用了在三年中始终可用的72个登记处的数据。

2.2 癌症发病率数据

为了估计2015年中国新增癌症数量,我们使用72个基于人群的癌症登记点的最近的数据(2009-2011登记的癌症病例)(表1),人口覆 盖8850万人,大概为全国人口的6.5%。表1的更少数量的登记点(22个)提供了4440万人口的覆盖率,有着2000-2011这12年的高质量数 据,用于发病率的时间趋势分析。这两套数据的癌症登记点可以在表1中查找到。

我们这篇研究中不仅包括了侵袭性肿瘤,也包括了参照国际规则定义的多原发癌。发病率数据来自NCCR数据库。我们使用国际疾病分类第10版的标 准,因为只有这版的死亡率数据是可用的。提取的变量有性别、年龄、出生日期、诊断年份、癌症位点、形态学、居住地(乡村和城镇)、地区(中国北部、东北、 东部、中部、南部、西南、西北)。对于分年龄的发病率分析,我们使用了5个大的年龄组(<30,30-44,45-59,60-74,≥75)。

2.3 癌症死亡率数据

我们采用72个登记点编制的数据来估计2015年中国的癌症死亡人数。为了估计2000-2011之间癌症致死的趋势,我们使用了22个登记点 的数据来分析。这些登记点的癌症死亡数据来自地方医院、社区卫生中心、人口统计(包括来自国家疾病监测系统DSP的数据)和民政局。DSP系统由卫生部于 上世纪80年代建立,例行收集由医院提供的死亡认证信息,或者在死亡认证不可用的情况下采用按家走访的方式收集。尽管DSP使用具有全国代表性的位点样 本,但这仍然只覆盖了很小的一部分人口(不到1%)。

2.4 癌症存活率

由于72个登记点没有精确的后续信息,这篇研究中的5年相对存活率使用M/I比率来进行估计,这是一个以前就被使用过的方法。我们只估计整体的 癌症存活率,因为使用这种方法有可能高估或者低估某一种癌症类型的存活率。我们计算M/I比率的前提是,假设2009到2011到2015的发病率和致死 率的关系没有改变,所以我们通过年龄标准化的发病率(2009-2011)来划分年龄标准化的死亡率(2009-2011)。

2.5 人口数据

以5岁年龄组和性别分组的人口数据来源于统计数据或公安人口普查。个人登记提供的数据通过各地区提供给NCCR。这些数据来源于各地局部统计或公安局或基于人口普查数据的计算。

2.6 统计学分析

我们估计了2015年中国的所有癌症的新增病例人数,并根据72个癌症登记点的特定年龄组发病率数据(2009-2011)分性别估计了26个 特定的癌症类型的新增病例数。我们用相同的方法估计了2015的癌症死亡数量。对于10种最普遍的癌症,这些新增患病和死亡的数字还按照城镇/乡村登记点 以及覆盖中国的7个行政区域进行了细分。所有癌症的汇总数据和6个最普遍癌症的数据也按照5个大的年龄组进行了分层 (<30,30-44,45-59,60-74,≥75)。

从2000年到2011年发病率和死亡率的时间趋势分析是通过将连接点模型与对数转化的、年龄标准化的比率来进行计算的。为了减少这段时间内报 道错误改变的可能性,我们将所有的模型限制在最大2个连接点之内。趋势表达为年度变化百分比(APC),我们用Z测试来评估APC是否在统计学上偏离了 0。在描述趋势时,术语“增加”或“减少”用于趋势的斜率(APC)统计学显着时(P<。05)。对于非统计学分析,我们使用术语“稳定”。对于所有的分 析,我们都分性别陈述所有癌症与10种最常见癌症的结果。

  3 、结果

3.1 数据质量

3个主要的指标(MV%, DCO%, M/I比率)对于基于人群的癌症登记、按照癌症类型的分类,表明两种癌症登记数据的质量都很高(图2)。由于22个登记点的半数都通过了IARC的认证, 它们的数据质量被认为高于72个癌症登记点数据,有着更高的MV%和更低的DCO%。这些数据质量参数加上UB%和CPU%都呈现于表1(见在线信息)。

图 2:两套癌症登记数据质量的三个主要测量指标。最左边的一列数字是ICD10 的分类标准。DCO%只表征具有死亡认证的癌症病例百分比。M/I 为死亡率/发病率;MV%为形态学验证的比率。

3.2 2015 预期癌症发病率

预计2015年将会有大约4292000个新增侵袭性癌症病例,与每天12000个新病例相符合。男性中最普遍的5种癌症依次为:肺和支气管癌 症,胃癌,食道癌,肝癌,结直肠癌,这些占到所有癌症病例的三分之二。女性中最普遍的5种癌症依次为:乳腺癌,肺和支气管癌,胃癌,结直肠癌,食道癌,这 些占到了所有癌症病例的60%。单是乳腺癌就占到了所有女性癌症的15%(表2)。

10种最普遍癌症的新增病例数和发病率按照城乡和居住地分组呈现于表3。对于所有的癌症,年龄标准化发病率男性要高于女性 (234.9/168.7每100000人),农村高于城镇(213.6/191.5每100000人)。西南部有最高的癌症发病率,其次为北部和东北; 中部的发病率最低。

3.3 2015 预期癌症死亡率

据估计2015年将会有2814000名中国人死于癌症,与每天7500例癌症死亡相符合。男性和女性死亡率最高的癌症均为:肺和支气管癌、胃 癌、肝癌、食道癌、结直肠癌,占到了所有癌症死亡的四分之三(表2)。与发病率类似,年龄标准化死亡率男性高于女性(165.9/88.8每100000 人),农村高于城市(149.0/109.5每100000人)(表4)。最高的死亡率仍是西南、北部和东北,中部最低。

3.4 2015年分年龄段分性别的发病率和死亡率

在60岁之前,肝癌是被诊断出的最普遍的癌症,并且在男性的癌症死亡中占比最高,其次是肺癌和胃癌,这也是60-74的发病和死亡的主要类型 (表5)。对于75岁以上的男性,肺癌是最广泛被诊断出的癌症,也是最主要的死亡原因。男性的大多数癌症新增病例和死亡都位于60-74岁之间。

在女性中,30岁以前被诊断出的最普遍的癌症是甲状腺癌,30-59岁之间是乳腺癌,60岁以后是肺癌(表5)。45岁以下,乳腺癌是导致死亡的最主要原因,其次是肺癌。60-74岁的新增和死亡病例是最多的。

3.5 2015 年预期癌症存活率

根据预测,所有的癌症结合来看,2015年大概36.9%的癌症患者能够存活5年以上,女性的存活率比男性要好(47.3%/29.3%)(表 6)。根据诊断时的居住地得出的5年存活率估计有一定的潜在变化:农村病人的存活率比城市更低(30.3%/42.8%)。与前面相似,存活率最低的是西 南地区(24.9%),最高的是中部地区(41.0%)。

3.6 癌症发病与死亡的趋势

对于所有的癌症,在研究的时间段内(2000-2011),男性的发病率较为稳定,女性有显著上升(P<.05)(图3,表7)。与此相反,两 性的死亡率都有显著下降(图3,表8)。尽管这个趋势令人高兴,但实际上在此期间癌症的死亡人数增加了(增加了73.8%,从2000年的51090到 2011年的88800),这主要是由于人口增加和老龄化(图4)。

对于男性,在10种最普遍的癌症中,以时间趋势分析,从2000年到2011年发病率增加的有6种,(胰腺癌,结直肠癌,脑和中枢神经系统癌症,前列腺癌,膀胱癌,白血病),而胃癌、食道癌、肝癌则有下降(P<.05)。肺癌的趋势则比较稳定(图5,表7)。

对于女性,10种最普遍的癌症中有6种年龄标准化发病率显著上升(结直肠癌,肺癌,乳腺癌,宫颈癌,子宫体癌,甲状腺癌,P<.05)。与男性相同,胃癌、食道癌、肝癌可见下降趋势(图6,表7)。

对于男性,10种最普遍的癌症中,4种的年龄标准化死亡率可见上升(结直肠癌,胰腺癌,前列腺癌,白血病,P<.05),其他趋势较为稳定(肺癌、膀胱癌和脑癌)(图7,表8)

对于女性,最普遍的10种癌症中3种的死亡率上升(乳腺癌,宫颈癌和卵巢癌),结直肠癌、肺癌、子宫体癌和甲状腺癌趋势较为稳定。(图8,表8)。

与癌症发病率相似,胃癌、食道癌、肝癌的死亡率在两性中都有下降(图7,8)。肺癌的趋势男女都较为稳定,这是两性最主要的癌症死亡原因。

  4.、讨论

4.1 对中国癌症预防的提示

尽管之前已经有过对于全国癌症估计的报道,但这些都只限于特定的年份或癌症种类,很难进行不同癌症间的横向比较。本研究提供了更加全面的全国范围内的癌症统计,使用了最新、最具权威性的数据,包含了信息与时间趋势。

癌症防控需要依赖于基于人群的发病率和死亡率数据,以此来执行政策和评估政策的有效性。因此,最新的全国范围内对于癌症负担和时间趋势的分析, 对理解癌症的病因学,和有效的预防、早期诊断和管理措施有着至关重要的作用。这些结果也会成为未来评估中国癌症控制有效性的基线,也将有助于区分地区间需 求的优先级。

中国人口占到了世界人口的五分之一,因此这些数据将会对世界癌症负担有着重要的作用:大约22%的新增癌

症病例和27%的癌症死亡发生在中国。更重要的是,中国的癌症谱与发达国家明显不同。中国最普遍的4个癌症是肺癌、胃癌、肝癌、食道癌。这几种 癌症占到了中国癌症诊断的57%,而在美国只有18%。同样,中国的这几种癌症占到了全世界发病负担的1/3到1/2。与此相对,美国最普遍的癌症是肺 癌、乳腺癌、前列腺癌和结直肠癌。中国最普遍的癌症生存率很低;而美国的几种除了肺癌之外,预后都非常良好,对于前列腺癌和乳腺癌,有相当的比例是在早期 诊断扫描的时候发现的,因而抬高了发病率。癌症发病类型的差异对于死亡率的差异有着重要的影响。

我们对2015年的预计是基于72个登记点2009-2011年的数据。这些登记点只覆盖了中国人口的6.5%,但它们是目前可用的最好的全国 范围的数据,代表了8550万人口。除此之外,与之前的研究(只覆盖了人口的2%)相比,本研究采用数据的人口覆盖面明显扩大,包含了更多的西部地区,因 而对于中国整体情况就更具有代表性。另外,大陆的全部12个基于人群的癌症登记点都有着高质量的数据,完全满足CI5的标准。全国发病率的估计可以广泛的 与之前发表的进行比较。两个中国之前发表的年度报告估计10年和11年的新增癌症病例分别为309万人和337万人。更早的一个估计是05年的296万 人,尽管使用的方法不同。

我们对于2015年中国发病率(429万人)的估计要明显高于GLOBOCAN在2012年作出的340万人的估计。这些差距主要来源于数据时 间线的不同(09-11/03-07)、代表性的不同、地理覆盖程度的不同(72个登记点覆盖6.5%的人口/23个登记点覆盖3%的人口)。尤其是有着 更高发病率的农村居民(213.6每10万人/191.5每10万人)占到了32.7%,GLOBOCAN2012年的估计只占到了21.5%。用来获取 全国发病率的数据也是不同的,因为GLOBOCAN2012通过把23个登记点的特定年龄、特定性别、特定位置癌症死亡率模型化转化为发病率。需要承认, 这些数据并不都满足IARC的质量标准,已发表报告中的这些差异低估了中国对于提升癌症登记点覆盖率和质量的需求。

与发病率相比,我们的死亡率与GLOBOCAN有着更高的相似性。我们估计2015年中国癌症死亡为281万人,GLOBOCAN2012为 246万人。这反映了两个研究使用的死亡率数据源是相似的:GLOBOCAN用了DSP(04-10),我们使用了72个癌症登记点的数据 (09-11),DSP数据就是这些数据的一部分。DSP数据基于县,按照地理区域划分,被特殊设计为具有全国代表性。对于港澳的发病率和死亡 率,GLOBOCAN2012计入而我们没有计入。

我们发现整体癌症的发病率地区间有显着的差异(农村/城市,地区间)。农村居民比城市居民有更高的发病率,并且发病率在中国的7个行政区域都是 不同的。这些地理差异可能由多种因素造成,但农村更高的吸烟率明显是重要原因。12种由吸烟引起的癌症占到了中国所有癌症的75%。与我们的假设一致,癌 症发病率最高的西南地区在2002年的报道中有着最高的吸烟普遍性。

我们发现癌症的死亡率和存活率的地理差异更大。这些差异或许可以部分解释为,更为有限的医疗资源、更低水平的癌症护理、农村和欠发达地区被诊断出时就已经是晚期的概率更大。这就为政府向农村和欠发达地区投入更多资源和服务提供了理由。

2000-2011之间中国的癌症诊断数量有着显着的上升。很大一部分原因是中国的人口增加和老龄化。其他因素可能也有贡献,比如不健康生活方 式的流行、疾病意识的提升、诊断服务和数据完整性的提升等等。发病率增加幅度最大的是前列腺癌、宫颈癌和女性的甲状腺癌。前列腺癌增加的因素目前还不清 楚;这可能与逐渐应用前列腺特异性抗原扫描和活检水平的提升有关,也有可能是由于逐渐西化的生活方式。西方的生活方式增加了中国的肥胖率,减少了活动量, 可能会对结直肠癌和乳腺癌发病率有影响。乳腺癌发病率的上升也可能与计划生育政策有关。

与发达国家发病率减少的趋势相反,中国的宫颈癌发病率在增加。这可能也反映出了帕帕尼科拉乌试验的不足,中国据报道只有1/5的女性做过帕…… 实验来进行宫颈癌的检查。HPV感染率的增加,和大陆HPV疫苗的不足,表明在可预见的未来,中国的宫颈癌趋势将继续和国际保持差距。

女性甲状腺癌的增加与其他国家相类似;尽管这可能与各种新技术的使用导致的过度诊断有关,但由于缺少疾病阶段的信息,也不能排除发病率确实在增加的可能性。

胃癌、食道癌、肝癌的发病率和死亡率都有明显减少。尽管发病率减少了,但人口基数的增加和老龄化仍然使得新增病例的数量非常大。对感染的控制可能也对这个趋势有影响,比如对导致肝癌的HBV、HCV的控制,对导致

胃癌的幽门螺杆菌的控制。通过对婴儿注射疫苗来进行HBV早期预防已经取得了明显的成效:0-19岁的肝癌死亡率15年内下降了95%。尽管 HBV疫苗的成功对于预防儿童肝癌取得了明显的成效,但也许不能解释对于全年龄段的影响。还有其他很多的重要因素,比如受到黄曲霉毒素污染的玉米的减少和 饮用水的净化。计划生育政策减少了家庭内部的儿童间HBV的传染,更加规范的注射操作减少了医院内HBV和HCV的传染,这些因素可能也会对整体肝癌发病 率有影响。

4.2 对于中国早期诊断和管理的提示

尽管预防措施对于减少长期癌症负担有着重要的作用,但这些措施无法在近期内见效。因此,加强早期诊断和提升医疗服务将是快速缓解中国癌症负担的重要措施。尤其是,地区间的重大差异证明了确保公平的诊断时间、癌症护理可用性和医疗服务质量的重要性。

解决这个问题的一个巨大困难就是中国巨大的人口基数和地理的多样性。即便是按照目前的乳腺癌监测扩张速率,仍需要40年来为目标年龄组的每一个 女性进行一次检测。另外,相比高收入国家更加年轻的诊断患病年龄中位数也为我国提出一些建议,中国的资源应当集中于提高意识和检测乳房肿块时的早期诊断。 尽管有这些地理和人口的障碍,对于食道癌的内窥镜扫描项目正在扩张。另外,新一代基于高风险HPV的扫描测试正逐步应用于中低收入的农村地区。

由于Ⅰ期肺癌的手术治疗已经正式可以显着提升存活率,因此使用低剂量的CT更早地探测肺癌不仅可以降低现有的死亡率,也可以间接提升公共健康预 防和控烟运动的有效性。由于中国很多医院继续使用X光来诊断肺癌,增加医学检测容量,尤其是在农村地区,仍然有着很高的优先级。

为了解决地理多样性和医疗资源分配不均(城市有30%的人口和70%的医疗资源),中国已经实施了癌症护理超级中心策略,集中了很多癌症专家, 处理癌症病例的密度非常大。然而,拿掉得到最优治疗的地理和财政屏障仍然有着最高的优先级,因为农村人口和弱势群体不仅短缺医生,得到医疗服务的距离也更 远。另外,尽管基本医疗保险几乎实现了全覆盖,但它几乎不为癌症治疗负担哪怕部分费用,这就意味着病人要么自费治疗,要么放弃治疗。

任何试图提升早期诊断和治疗的动机都需要考虑中国的独特传统和文化信仰。很多人得了癌症就听天由命,不远谈论治疗和预后,因为无论怎样,得了癌 症就会死。更好的理解这些思想对于实施正确的项目和提升医患间的信任非常重要。与此同时,传统中医已经在中国的卫生体系里面存在了几千年,与中国的文化、 政策、历史都相关。因此,或许可以将癌症的护理和治疗与中医研究中心整合起来。

为了更好地量化早期诊断与治疗对于发病率和死亡率的影响,我们还需要疾病所处阶段和接受治疗的数据。既然这种数据在目前的中国癌症登记体系中是没有的,这就需要具有足够大、有代表性、基于人群的特殊的调查研究。

4.3 限制

尽管这篇研究中的数据覆盖人口是之前研究的两倍,但这仍少于中国人口的十分之一。仍然有许多未知水平的不确定因素。尽管我们在控制数据质量方面 已经付出了很大的努力,但数据质量中仍然有许多变数。M/I比率被用作近五年相对存活率的近似值,这种解释可能是有问题的,因为死亡率和发病率可能是涉及 到完全不同的人群。这使得它更容易受发病率的影响,因此为更容易死亡的癌症提供了更加精确的估计。然而,17个登记点的未发布数据表明,所有癌症的M/I 比率只比计算得到的5年相对存活率高了1.4%。最终,对于一个14亿人的国家来说,要保证分子面临的风险和分母相同实在是一个不小的挑战,尤其是考虑到 在大城市医疗机构里面治疗的病例和来自农村的移民病例。患病案例的地理信息是基于永久居住地而不是治疗地。另外,通过城居和新农合得到的外出务工者(占人 口的9%)的癌症诊断,都是基于他们的户口登记得到的。

  5 、结论

为了制定一个恰当的癌症控制计划,拥有一套细节的、有代表性的、精确的、基于人群的数据是非常关键的。这些评估和癌症登记的努力都是为了达成这 一目标所进行的重要步骤。尽管这些全国估算中仍然有不精确的地方,但这都是基于可用的最优数据来进行的发病率和死亡率的估计。这可能为中国未来的癌症防控 提供可供比较的基线和评价标准,并帮助发现最需要援助的地区。根据国际经验,当需求更加明确、有更详实的证据支持时,政府和其他卫生服务提供者将会更有动 力提供帮助。根据这篇研究的数据,中国正面临,并且未来将继续面临极大的癌症压力,因此需要政府和各非政府组织的共同努力。

关键区域可能是总体水平上临床癌症护理水平的提升,通过有目标的政策改革和投资来提升农村地区的医疗服务水平,为弱势群体提供医疗服务。癌症的 初级预防项目,比如控烟和缓和西式生活方式的不良影响,提高早期诊断的有效性和覆盖率,这些对于逆转中国癌症的流行趋势至关重要。保证现有的空气和水污染 控制法律得到有效实行仍是当务之急。考虑到中国对世界癌症负担的重要性,特别是4 种主要癌症(肺癌、肝癌、胃癌、食道癌),我们必须采取适当的策略和政策来减少这些可预防的癌症(通过减少烟草的流行和与癌症相关的感染),这将对中国和 世界的癌症负担有着重要的影响。

Deep Learning System Improves Breast Cancer Detection

Researchers from Beth Israel Deaconess Medical Center (BIDMC) and Harvard Medical School have developed a deep learning approach to read and interpret pathology images.

Trained on Tesla K80 GPUs with the cuDNN-accelerated Caffe deep learning framework, their system achieved 92 percent accuracy at identifying breast cancer in images of lymph nodes which earned them the top prize in two separate categories at the annual International Symposium of Biomedical Imaging (ISBI) challenge. The team also published a paper detailing more of their work.

For the slide-based classification task, human pathologists were accurate 96 percent of the time.

DL Breast Cancer Detection Image
The framework used for breast cancer detection.

Andrew Beck from BIDMC said what’s truly exciting is that 99.5 percent accuracy can be achieved when the pathologists’ analysis and results from the deep learning system are used together. He added, “Our results in the ISBI competition show that what the computer is doing is genuinely intelligent and that the combination of human and computer interpretations will result in more precise and more clinically valuable diagnoses to guide treatment decisions.”

Awesome Machine Learning

Table of Contents

APL

General-Purpose Machine Learning

  • naive-apl – Naive Bayesian Classifier implementation in APL

C

General-Purpose Machine Learning

  • Recommender – A C library for product recommendations/suggestions using collaborative filtering (CF).
  • Darknet – Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.

Computer Vision

  • CCV – C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library
  • VLFeat – VLFeat is an open and portable library of computer vision algorithms, which has Matlab toolbox

Speech Recognition

  • HTK -The Hidden Markov Model Toolkit (HTK) is a portable toolkit for building and manipulating hidden Markov models.

C++

Computer Vision

  • OpenCV – OpenCV has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
  • DLib – DLib has C++ and Python interfaces for face detection and training general object detectors.
  • EBLearn – Eblearn is an object-oriented C++ library that implements various machine learning models
  • VIGRA – VIGRA is a generic cross-platform C++ computer vision and machine learning library for volumes of arbitrary dimensionality with Python bindings.

General-Purpose Machine Learning

  • mlpack – A scalable C++ machine learning library
  • DLib – A suite of ML tools designed to be easy to imbed in other applications
  • encog-cpp
  • shark
  • Vowpal Wabbit (VW) – A fast out-of-core learning system.
  • sofia-ml – Suite of fast incremental algorithms.
  • Shogun – The Shogun Machine Learning Toolbox
  • Caffe – A deep learning framework developed with cleanliness, readability, and speed in mind. [DEEP LEARNING]
  • CXXNET – Yet another deep learning framework with less than 1000 lines core code [DEEP LEARNING]
  • XGBoost – A parallelized optimized general purpose gradient boosting library.
  • CUDA – This is a fast C++/CUDA implementation of convolutional [DEEP LEARNING]
  • Stan – A probabilistic programming language implementing full Bayesian statistical inference with Hamiltonian Monte Carlo sampling
  • BanditLib – A simple Multi-armed Bandit library.
  • Timbl – A software package/C++ library implementing several memory-based learning algorithms, among which IB1-IG, an implementation of k-nearest neighbor classification, and IGTree, a decision-tree approximation of IB1-IG. Commonly used for NLP.
  • Disrtibuted Machine learning Tool Kit (DMTK) – A distributed machine learning (parameter server) framework by Microsoft. Enables training models on large data sets across multiple machines. Current tools bundled with it include: LightLDA and Distributed (Multisense) Word Embedding.
  • igraph – General purpose graph library
  • Warp-CTC – A fast parallel implementation of Connectionist Temporal Classification (CTC), on both CPU and GPU.
  • CNTK – The Computational Network Toolkit (CNTK) by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph.
  • DeepDetect – A machine learning API and server written in C++11. It makes state of the art machine learning easy to work with and integrate into existing applications.
  • Fido – A highly-modular C++ machine learning library for embedded electronics and robotics.
  • DSSTNE – A software library created by Amazon for training and deploying deep neural networks using GPUs which emphasizes speed and scale over experimental flexibility.
  • Intel(R) DAAL – A high performance software library developed by Intel and optimized for Intel’s architectures. Library provides algorithmic building blocks for all stages of data analytics and allows to process data in batch, online and distributed modes.

Natural Language Processing

  • MIT Information Extraction Toolkit – C, C++, and Python tools for named entity recognition and relation extraction
  • CRF++ – Open source implementation of Conditional Random Fields (CRFs) for segmenting/labeling sequential data & other Natural Language Processing tasks.
  • CRFsuite – CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data.
  • BLLIP Parser – BLLIP Natural Language Parser (also known as the Charniak-Johnson parser)
  • colibri-core – C++ library, command line tools, and Python binding for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • ucto – Unicode-aware regular-expression based tokenizer for various languages. Tool and C++ library. Supports FoLiA format.
  • libfolia – C++ library for the FoLiA format
  • frog – Memory-based NLP suite developed for Dutch: PoS tagger, lemmatiser, dependency parser, NER, shallow parser, morphological analyzer.
  • MeTAMeTA : ModErn Text Analysis is a C++ Data Sciences Toolkit that facilitates mining big text data.

Speech Recognition

  • Kaldi – Kaldi is a toolkit for speech recognition written in C++ and licensed under the Apache License v2.0. Kaldi is intended for use by speech recognition researchers.

Sequence Analysis

  • ToPS – This is an objected-oriented framework that facilitates the integration of probabilistic models for sequences over a user defined alphabet.

Gesture Detection

  • grt – The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.

Common Lisp

General-Purpose Machine Learning

  • mgl – Neural networks (boltzmann machines, feed-forward and recurrent nets), Gaussian Processes
  • mgl-gpr – Evolutionary algorithms
  • cl-libsvm – Wrapper for the libsvm support vector machine library

Clojure

Natural Language Processing

  • Clojure-openNLP – Natural Language Processing in Clojure (opennlp)
  • Infections-clj – Rails-like inflection library for Clojure and ClojureScript

General-Purpose Machine Learning

  • Touchstone – Clojure A/B testing library
  • Clojush – The Push programming language and the PushGP genetic programming system implemented in Clojure
  • Infer – Inference and machine learning in clojure
  • Clj-ML – A machine learning library for Clojure built on top of Weka and friends
  • Encog – Clojure wrapper for Encog (v3) (Machine-Learning framework that specializes in neural-nets)
  • Fungp – A genetic programming library for Clojure
  • Statistiker – Basic Machine Learning algorithms in Clojure.
  • clortex – General Machine Learning library using Numenta’s Cortical Learning Algorithm
  • comportex – Functionally composable Machine Learning library using Numenta’s Cortical Learning Algorithm

Data Analysis / Data Visualization

  • Incanter – Incanter is a Clojure-based, R-like platform for statistical computing and graphics.
  • PigPen – Map-Reduce for Clojure.
  • Envision – Clojure Data Visualisation library, based on Statistiker and D3

Elixir

General-Purpose Machine Learning

  • Simple Bayes – A Simple Bayes / Naive Bayes implementation in Elixir.

Natural Language Processing

  • Stemmer – An English (Porter2) stemming implementation in Elixir.

Erlang

General-Purpose Machine Learning

  • Disco – Map Reduce in Erlang

Go

Natural Language Processing

  • go-porterstemmer – A native Go clean room implementation of the Porter Stemming algorithm.
  • paicehusk – Golang implementation of the Paice/Husk Stemming Algorithm.
  • snowball – Snowball Stemmer for Go.
  • go-ngram – In-memory n-gram index with compression.

General-Purpose Machine Learning

  • gago – Multi-population, flexible, parallel genetic algorithm.
  • Go Learn – Machine Learning for Go
  • go-pr – Pattern recognition package in Go lang.
  • go-ml – Linear / Logistic regression, Neural Networks, Collaborative Filtering and Gaussian Multivariate Distribution
  • bayesian – Naive Bayesian Classification for Golang.
  • go-galib – Genetic Algorithms library written in Go / golang
  • Cloudforest – Ensembles of decision trees in go/golang.
  • gobrain – Neural Networks written in go
  • GoNN – GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN
  • MXNet – Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.

Data Analysis / Data Visualization

  • go-graph – Graph library for Go/golang language.
  • SVGo – The Go Language library for SVG generation
  • RF – Random forests implementation in Go

Haskell

General-Purpose Machine Learning

  • haskell-ml – Haskell implementations of various ML algorithms.
  • HLearn – a suite of libraries for interpreting machine learning models according to their algebraic structure.
  • hnn – Haskell Neural Network library.
  • hopfield-networks – Hopfield Networks for unsupervised learning in Haskell.
  • caffegraph – A DSL for deep neural networks
  • LambdaNet – Configurable Neural Networks in Haskell

Java

Natural Language Processing

  • Cortical.io – Retina: an API performing complex NLP operations (disambiguation, classification, streaming text filtering, etc…) as quickly and intuitively as the brain.
  • CoreNLP – Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words
  • Stanford Parser – A natural language parser is a program that works out the grammatical structure of sentences
  • Stanford POS Tagger – A Part-Of-Speech Tagger (POS Tagger
  • Stanford Name Entity Recognizer – Stanford NER is a Java implementation of a Named Entity Recognizer.
  • Stanford Word Segmenter – Tokenization of raw text is a standard pre-processing step for many NLP tasks.
  • Tregex, Tsurgeon and Semgrex – Tregex is a utility for matching patterns in trees, based on tree relationships and regular expression matches on nodes (the name is short for “tree regular expressions”).
  • Stanford Phrasal: A Phrase-Based Translation System
  • Stanford English Tokenizer – Stanford Phrasal is a state-of-the-art statistical phrase-based machine translation system, written in Java.
  • Stanford Tokens Regex – A tokenizer divides text into a sequence of tokens, which roughly correspond to “words”
  • Stanford Temporal Tagger – SUTime is a library for recognizing and normalizing time expressions.
  • Stanford SPIED – Learning entities from unlabeled text starting with seed sets using patterns in an iterative fashion
  • Stanford Topic Modeling Toolbox – Topic modeling tools to social scientists and others who wish to perform analysis on datasets
  • Twitter Text Java – A Java implementation of Twitter’s text processing library
  • MALLET – A Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.
  • OpenNLP – a machine learning based toolkit for the processing of natural language text.
  • LingPipe – A tool kit for processing text using computational linguistics.
  • ClearTK – ClearTK provides a framework for developing statistical natural language processing (NLP) components in Java and is built on top of Apache UIMA.
  • Apache cTAKES – Apache clinical Text Analysis and Knowledge Extraction System (cTAKES) is an open-source natural language processing system for information extraction from electronic medical record clinical free-text.
  • ClearNLP – The ClearNLP project provides software and resources for natural language processing. The project started at the Center for Computational Language and EducAtion Research, and is currently developed by the Center for Language and Information Research at Emory University. This project is under the Apache 2 license.
  • CogcompNLP – This project collects a number of core libraries for Natural Language Processing (NLP) developed in the University of Illinois’ Cognitive Computation Group, for example illinois-core-utilities which provides a set of NLP-friendly data structures and a number of NLP-related utilities that support writing NLP applications, running experiments, etc, illinois-edison a library for feature extraction from illinois-core-utilities data structures and many other packages.

General-Purpose Machine Learning

  • aerosolve – A machine learning library by Airbnb designed from the ground up to be human friendly.
  • Datumbox – Machine Learning framework for rapid development of Machine Learning and Statistical applications
  • ELKI – Java toolkit for data mining. (unsupervised: clustering, outlier detection etc.)
  • Encog – An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • FlinkML in Apache Flink – Distributed machine learning library in Flink
  • H2O – ML engine that supports distributed learning on Hadoop, Spark or your laptop via APIs in R, Python, Scala, REST/JSON.
  • htm.java – General Machine Learning library using Numenta’s Cortical Learning Algorithm
  • java-deeplearning – Distributed Deep Learning Platform for Java, Clojure,Scala
  • Mahout – Distributed machine learning
  • Meka – An open source implementation of methods for multi-label classification and evaluation (extension to Weka).
  • MLlib in Apache Spark – Distributed machine learning library in Spark
  • Neuroph – Neuroph is lightweight Java neural network framework
  • ORYX – Lambda Architecture Framework using Apache Spark and Apache Kafka with a specialization for real-time large-scale machine learning.
  • Samoa SAMOA is a framework that includes distributed machine learning for data streams with an interface to plug-in different stream processing platforms.
  • RankLib – RankLib is a library of learning to rank algorithms
  • rapaio – statistics, data mining and machine learning toolbox in Java
  • RapidMiner – RapidMiner integration into Java code
  • Stanford Classifier – A classifier is a machine learning tool that will take data items and place them into one of k classes.
  • SmileMiner – Statistical Machine Intelligence & Learning Engine
  • SystemML – flexible, scalable machine learning (ML) language.
  • WalnutiQ – object oriented model of the human brain
  • Weka – Weka is a collection of machine learning algorithms for data mining tasks
  • LBJava – Learning Based Java is a modeling language for the rapid development of software systems, offers a convenient, declarative syntax for classifier and constraint definition directly in terms of the objects in the programmer’s application.

Speech Recognition

  • CMU Sphinx – Open Source Toolkit For Speech Recognition purely based on Java speech recognition library.

Data Analysis / Data Visualization

  • Flink – Open source platform for distributed stream and batch data processing.
  • Hadoop – Hadoop/HDFS
  • Spark – Spark is a fast and general engine for large-scale data processing.
  • Storm – Storm is a distributed realtime computation system.
  • Impala – Real-time Query for Hadoop
  • DataMelt – Mathematics software for numeric computation, statistics, symbolic calculations, data analysis and data visualization.
  • Dr. Michael Thomas Flanagan’s Java Scientific Library

Deep Learning

  • Deeplearning4j – Scalable deep learning for industry with parallel GPUs

Javascript

Natural Language Processing

  • Twitter-text – A JavaScript implementation of Twitter’s text processing library
  • NLP.js – NLP utilities in javascript and coffeescript
  • natural – General natural language facilities for node
  • Knwl.js – A Natural Language Processor in JS
  • Retext – Extensible system for analyzing and manipulating natural language
  • TextProcessing – Sentiment analysis, stemming and lemmatization, part-of-speech tagging and chunking, phrase extraction and named entity recognition.
  • NLP Compromise – Natural Language processing in the browser

Data Analysis / Data Visualization

  • D3.js
  • High Charts
  • NVD3.js
  • dc.js
  • chartjs
  • dimple
  • amCharts
  • D3xter – Straight forward plotting built on D3
  • statkit – Statistics kit for JavaScript
  • datakit – A lightweight framework for data analysis in JavaScript
  • science.js – Scientific and statistical computing in JavaScript.
  • Z3d – Easily make interactive 3d plots built on Three.js
  • Sigma.js – JavaScript library dedicated to graph drawing.
  • C3.js– customizable library based on D3.js for easy chart drawing.
  • Datamaps– Customizable SVG map/geo visualizations using D3.js.
  • ZingChart– library written on Vanilla JS for big data visualization.
  • cheminfo – Platform for data visualization and analysis, using the visualizer project.

General-Purpose Machine Learning

  • Convnet.js – ConvNetJS is a Javascript library for training Deep Learning models[DEEP LEARNING]
  • Clusterfck – Agglomerative hierarchical clustering implemented in Javascript for Node.js and the browser
  • Clustering.js – Clustering algorithms implemented in Javascript for Node.js and the browser
  • Decision Trees – NodeJS Implementation of Decision Tree using ID3 Algorithm
  • DN2A – Digital Neural Networks Architecture
  • figue – K-means, fuzzy c-means and agglomerative clustering
  • Node-fann – FANN (Fast Artificial Neural Network Library) bindings for Node.js
  • Kmeans.js – Simple Javascript implementation of the k-means algorithm, for node.js and the browser
  • LDA.js – LDA topic modeling for node.js
  • Learning.js – Javascript implementation of logistic regression/c4.5 decision tree
  • Machine Learning – Machine learning library for Node.js
  • mil-tokyo – List of several machine learning libraries
  • Node-SVM – Support Vector Machine for nodejs
  • Brain – Neural networks in JavaScript [Deprecated]
  • Bayesian-Bandit – Bayesian bandit implementation for Node and the browser.
  • Synaptic – Architecture-free neural network library for node.js and the browser
  • kNear – JavaScript implementation of the k nearest neighbors algorithm for supervised learning
  • NeuralN – C++ Neural Network library for Node.js. It has advantage on large dataset and multi-threaded training.
  • kalman – Kalman filter for Javascript.
  • shaman – node.js library with support for both simple and multiple linear regression.
  • ml.js – Machine learning and numerical analysis tools for Node.js and the Browser!
  • Pavlov.js – Reinforcement learning using Markov Decision Processes
  • MXNet – Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.

Misc

  • sylvester – Vector and Matrix math for JavaScript.
  • simple-statistics – A JavaScript implementation of descriptive, regression, and inference statistics. Implemented in literate JavaScript with no dependencies, designed to work in all modern browsers (including IE) as well as in node.js.
  • regression-js – A javascript library containing a collection of least squares fitting methods for finding a trend in a set of data.
  • Lyric – Linear Regression library.
  • GreatCircle – Library for calculating great circle distance.

Julia

General-Purpose Machine Learning

  • MachineLearning – Julia Machine Learning library
  • MLBase – A set of functions to support the development of machine learning algorithms
  • PGM – A Julia framework for probabilistic graphical models.
  • DA – Julia package for Regularized Discriminant Analysis
  • Regression – Algorithms for regression analysis (e.g. linear regression and logistic regression)
  • Local Regression – Local regression, so smooooth!
  • Naive Bayes – Simple Naive Bayes implementation in Julia
  • Mixed Models – A Julia package for fitting (statistical) mixed-effects models
  • Simple MCMC – basic mcmc sampler implemented in Julia
  • Distance – Julia module for Distance evaluation
  • Decision Tree – Decision Tree Classifier and Regressor
  • Neural – A neural network in Julia
  • MCMC – MCMC tools for Julia
  • Mamba – Markov chain Monte Carlo (MCMC) for Bayesian analysis in Julia
  • GLM – Generalized linear models in Julia
  • Online Learning
  • GLMNet – Julia wrapper for fitting Lasso/ElasticNet GLM models using glmnet
  • Clustering – Basic functions for clustering data: k-means, dp-means, etc.
  • SVM – SVM’s for Julia
  • Kernal Density – Kernel density estimators for julia
  • Dimensionality Reduction – Methods for dimensionality reduction
  • NMF – A Julia package for non-negative matrix factorization
  • ANN – Julia artificial neural networks
  • Mocha – Deep Learning framework for Julia inspired by Caffe
  • XGBoost – eXtreme Gradient Boosting Package in Julia
  • ManifoldLearning – A Julia package for manifold learning and nonlinear dimensionality reduction
  • MXNet – Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • Merlin – Flexible Deep Learning Framework in Julia
  • ROCAnalysis – Receiver Operating Characteristics and functions for evaluation probabilistic binary classifiers
  • GaussianMixtures – Large scale Gaussian Mixture Models
  • ScikitLearn – Julia implementation of the scikit-learn API

Natural Language Processing

Data Analysis / Data Visualization

  • Graph Layout – Graph layout algorithms in pure Julia
  • Data Frames Meta – Metaprogramming tools for DataFrames
  • Julia Data – library for working with tabular data in Julia
  • Data Read – Read files from Stata, SAS, and SPSS
  • Hypothesis Tests – Hypothesis tests for Julia
  • Gadfly – Crafty statistical graphics for Julia.
  • Stats – Statistical tests for Julia
  • RDataSets – Julia package for loading many of the data sets available in R
  • DataFrames – library for working with tabular data in Julia
  • Distributions – A Julia package for probability distributions and associated functions.
  • Data Arrays – Data structures that allow missing values
  • Time Series – Time series toolkit for Julia
  • Sampling – Basic sampling algorithms for Julia

Misc Stuff / Presentations

  • DSP – Digital Signal Processing (filtering, periodograms, spectrograms, window functions).
  • JuliaCon Presentations – Presentations for JuliaCon
  • SignalProcessing – Signal Processing tools for Julia
  • Images – An image library for Julia

Lua

General-Purpose Machine Learning

  • Torch7
    • cephes – Cephes mathematical functions library, wrapped for Torch. Provides and wraps the 180+ special mathematical functions from the Cephes mathematical library, developed by Stephen L. Moshier. It is used, among many other places, at the heart of SciPy.
    • autograd – Autograd automatically differentiates native Torch code. Inspired by the original Python version.
    • graph – Graph package for Torch
    • randomkit – Numpy’s randomkit, wrapped for Torch
    • signal – A signal processing toolbox for Torch-7. FFT, DCT, Hilbert, cepstrums, stft
    • nn – Neural Network package for Torch
    • torchnet – framework for torch which provides a set of abstractions aiming at encouraging code re-use as well as encouraging modular programming
    • nngraph – This package provides graphical computation for nn library in Torch7.
    • nnx – A completely unstable and experimental package that extends Torch’s builtin nn library
    • rnn – A Recurrent Neural Network library that extends Torch’s nn. RNNs, LSTMs, GRUs, BRNNs, BLSTMs, etc.
    • dpnn – Many useful features that aren’t part of the main nn package.
    • dp – A deep learning library designed for streamlining research and development using the Torch7 distribution. It emphasizes flexibility through the elegant use of object-oriented design patterns.
    • optim – An optimization library for Torch. SGD, Adagrad, Conjugate-Gradient, LBFGS, RProp and more.
    • unsup – A package for unsupervised learning in Torch. Provides modules that are compatible with nn (LinearPsd, ConvPsd, AutoEncoder, …), and self-contained algorithms (k-means, PCA).
    • manifold – A package to manipulate manifolds
    • svm – Torch-SVM library
    • lbfgs – FFI Wrapper for liblbfgs
    • vowpalwabbit – An old vowpalwabbit interface to torch.
    • OpenGM – OpenGM is a C++ library for graphical modeling, and inference. The Lua bindings provide a simple way of describing graphs, from Lua, and then optimizing them with OpenGM.
    • sphagetti – Spaghetti (sparse linear) module for torch7 by @MichaelMathieu
    • LuaSHKit – A lua wrapper around the Locality sensitive hashing library SHKit
    • kernel smoothing – KNN, kernel-weighted average, local linear regression smoothers
    • cutorch – Torch CUDA Implementation
    • cunn – Torch CUDA Neural Network Implementation
    • imgraph – An image/graph library for Torch. This package provides routines to construct graphs on images, segment them, build trees out of them, and convert them back to images.
    • videograph – A video/graph library for Torch. This package provides routines to construct graphs on videos, segment them, build trees out of them, and convert them back to videos.
    • saliency – code and tools around integral images. A library for finding interest points based on fast integral histograms.
    • stitch – allows us to use hugin to stitch images and apply same stitching to a video sequence
    • sfm – A bundle adjustment/structure from motion package
    • fex – A package for feature extraction in Torch. Provides SIFT and dSIFT modules.
    • OverFeat – A state-of-the-art generic dense feature extractor
  • Numeric Lua
  • Lunatic Python
  • SciLua
  • Lua – Numerical Algorithms
  • Lunum

Demos and Scripts

  • Core torch7 demos repository.
    • linear-regression, logistic-regression
    • face detector (training and detection as separate demos)
    • mst-based-segmenter
    • train-a-digit-classifier
    • train-autoencoder
    • optical flow demo
    • train-on-housenumbers
    • train-on-cifar
    • tracking with deep nets
    • kinect demo
    • filter-bank visualization
    • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo)
  • Music Tagging – Music Tagging scripts for torch7
  • torch-datasets – Scripts to load several popular datasets including:
    • BSR 500
    • CIFAR-10
    • COIL
    • Street View House Numbers
    • MNIST
    • NORB
  • Atari2600 – Scripts to generate a dataset with static frames from the Arcade Learning Environment

Matlab

Computer Vision

  • Contourlets – MATLAB source code that implements the contourlet transform and its utility functions.
  • Shearlets – MATLAB code for shearlet transform
  • Curvelets – The Curvelet transform is a higher dimensional generalization of the Wavelet transform designed to represent images at different scales and different angles.
  • Bandlets – MATLAB code for bandlet transform
  • mexopencv – Collection and a development kit of MATLAB mex functions for OpenCV library

Natural Language Processing

  • NLP – An NLP library for Matlab

General-Purpose Machine Learning

Data Analysis / Data Visualization

  • matlab_gbl – MatlabBGL is a Matlab package for working with graphs.
  • gamic – Efficient pure-Matlab implementations of graph algorithms to complement MatlabBGL’s mex functions.

.NET

Computer Vision

  • OpenCVDotNet – A wrapper for the OpenCV project to be used with .NET applications.
  • Emgu CV – Cross platform wrapper of OpenCV which can be compiled in Mono to e run on Windows, Linus, Mac OS X, iOS, and Android.
  • AForge.NET – Open source C# framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence. Development has now shifted to GitHub.
  • Accord.NET – Together with AForge.NET, this library can provide image processing and computer vision algorithms to Windows, Windows RT and Windows Phone. Some components are also available for Java and Android.

Natural Language Processing

  • Stanford.NLP for .NET – A full port of Stanford NLP packages to .NET and also available precompiled as a NuGet package.

General-Purpose Machine Learning

  • Accord-Framework -The Accord.NET Framework is a complete framework for building machine learning, computer vision, computer audition, signal processing and statistical applications.
  • Accord.MachineLearning – Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as Ransac, Cross-validation and Grid-Search for machine-learning applications. This package is part of the Accord.NET Framework.
  • DiffSharp – An automatic differentiation (AD) library providing exact and efficient derivatives (gradients, Hessians, Jacobians, directional derivatives, and matrix-free Hessian- and Jacobian-vector products) for machine learning and optimization applications. Operations can be nested to any level, meaning that you can compute exact higher-order derivatives and differentiate functions that are internally making use of differentiation, for applications such as hyperparameter optimization.
  • Vulpes – Deep belief and deep learning implementation written in F# and leverages CUDA GPU execution with Alea.cuBase.
  • Encog – An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks.
  • Neural Network Designer – DBMS management system and designer for neural networks. The designer application is developed using WPF, and is a user interface which allows you to design your neural network, query the network, create and configure chat bots that are capable of asking questions and learning from your feed back. The chat bots can even scrape the internet for information to return in their output as well as to use for learning.

Data Analysis / Data Visualization

  • numl – numl is a machine learning library intended to ease the use of using standard modeling techniques for both prediction and clustering.
  • Math.NET Numerics – Numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Supports .Net 4.0, .Net 3.5 and Mono on Windows, Linux and Mac; Silverlight 5, WindowsPhone/SL 8, WindowsPhone 8.1 and Windows 8 with PCL Portable Profiles 47 and 344; Android/iOS with Xamarin.
  • Sho – Sho is an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping. The environment includes powerful and efficient libraries for linear algebra as well as data visualization that can be used from any .NET language, as well as a feature-rich interactive shell for rapid development.

Objective C

General-Purpose Machine Learning

  • YCML – A Machine Learning framework for Objective-C and Swift (OS X / iOS).
  • MLPNeuralNet – Fast multilayer perceptron neural network library for iOS and Mac OS X. MLPNeuralNet predicts new examples by trained neural network. It is built on top of the Apple’s Accelerate Framework, using vectorized operations and hardware acceleration if available.
  • MAChineLearning – An Objective-C multilayer perceptron library, with full support for training through backpropagation. Implemented using vDSP and vecLib, it’s 20 times faster than its Java equivalent. Includes sample code for use from Swift.
  • BPN-NeuralNetwork – It implemented 3 layers neural network ( Input Layer, Hidden Layer and Output Layer ) and it named Back Propagation Neural Network (BPN). This network can be used in products recommendation, user behavior analysis, data mining and data analysis.
  • Multi-Perceptron-NeuralNetwork – it implemented multi-perceptrons neural network (ニューラルネットワーク) based on Back Propagation Neural Network (BPN) and designed unlimited-hidden-layers.
  • KRHebbian-Algorithm – It is a non-supervisor and self-learning algorithm (adjust the weights) in neural network of Machine Learning.
  • KRKmeans-Algorithm – It implemented K-Means the clustering and classification algorithm. It could be used in data mining and image compression.
  • KRFuzzyCMeans-Algorithm – It implemented Fuzzy C-Means (FCM) the fuzzy clustering / classification algorithm on Machine Learning. It could be used in data mining and image compression.

OCaml

General-Purpose Machine Learning

  • Oml – A general statistics and machine learning library.
  • GPR – Efficient Gaussian Process Regression in OCaml.
  • Libra-Tk – Algorithms for learning and inference with discrete probabilistic models.

PHP

Natural Language Processing

  • jieba-php – Chinese Words Segmentation Utilities.

General-Purpose Machine Learning

  • PredictionBuilder – A library for machine learning that builds predictions using a linear regression.

Python

Computer Vision

  • Scikit-Image – A collection of algorithms for image processing in Python.
  • SimpleCV – An open source computer vision framework that gives access to several high-powered computer vision libraries, such as OpenCV. Written on Python and runs on Mac, Windows, and Ubuntu Linux.
  • Vigranumpy – Python bindings for the VIGRA C++ computer vision library.
  • OpenFace – Free and open source face recognition with deep neural networks.
  • PCV – Open source Python module for computer vision

Natural Language Processing

  • NLTK – A leading platform for building Python programs to work with human language data.
  • Pattern – A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
  • Quepy – A python framework to transform natural language questions to queries in a database query language
  • TextBlob – Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
  • YAlign – A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora.
  • jieba – Chinese Words Segmentation Utilities.
  • SnowNLP – A library for processing Chinese text.
  • spammy – A library for email Spam filtering built on top of nltk
  • loso – Another Chinese segmentation library.
  • genius – A Chinese segment base on Conditional Random Field.
  • KoNLPy – A Python package for Korean natural language processing.
  • nut – Natural language Understanding Toolkit
  • Rosetta – Text processing tools and wrappers (e.g. Vowpal Wabbit)
  • BLLIP Parser – Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser)
  • PyNLPl – Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
  • python-ucto – Python binding to ucto (a unicode-aware rule-based tokenizer for various languages)
  • python-frog – Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
  • python-zpar – Python bindings for ZPar, a statistical part-of-speech-tagger, constiuency parser, and dependency parser for English.
  • colibri-core – Python binding to C++ library for extracting and working with with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • spaCy – Industrial strength NLP with Python and Cython.
  • PyStanfordDependencies – Python interface for converting Penn Treebank trees to Stanford Dependencies.
  • Distance – Levenshtein and Hamming distance computation
  • Fuzzy Wuzzy – Fuzzy String Matching in Python
  • jellyfish – a python library for doing approximate and phonetic matching of strings.
  • editdistance – fast implementation of edit distance
  • textacy – higher-level NLP built on Spacy

General-Purpose Machine Learning

  • machine learning – automated build consisting of a web-interface, and set of programmatic-interface API, for support vector machines. Corresponding dataset(s) are stored into a SQL database, then generated model(s) used for prediction(s), are stored into a NoSQL datastore.
  • XGBoost – Python bindings for eXtreme Gradient Boosting (Tree) Library
  • Bayesian Methods for Hackers – Book/iPython notebooks on Probabilistic Programming in Python
  • Featureforge A set of tools for creating and testing machine learning features, with a scikit-learn compatible API
  • MLlib in Apache Spark – Distributed machine learning library in Spark
  • scikit-learn – A Python module for machine learning built on top of SciPy.
  • metric-learn – A Python module for metric learning.
  • SimpleAI Python implementation of many of the artificial intelligence algorithms described on the book “Artificial Intelligence, a Modern Approach”. It focuses on providing an easy to use, well documented and tested library.
  • astroML – Machine Learning and Data Mining for Astronomy.
  • graphlab-create – A library with various machine learning models (regression, clustering, recommender systems, graph analytics, etc.) implemented on top of a disk-backed DataFrame.
  • BigML – A library that contacts external servers.
  • pattern – Web mining module for Python.
  • NuPIC – Numenta Platform for Intelligent Computing.
  • Pylearn2 – A Machine Learning library based on Theano.
  • keras – Modular neural network library based on Theano.
  • Lasagne – Lightweight library to build and train neural networks in Theano.
  • hebel – GPU-Accelerated Deep Learning Library in Python.
  • Chainer – Flexible neural network framework
  • gensim – Topic Modelling for Humans.
  • topik – Topic modelling toolkit
  • PyBrain – Another Python Machine Learning Library.
  • Brainstorm – Fast, flexible and fun neural networks. This is the successor of PyBrain.
  • Crab – A flexible, fast recommender engine.
  • python-recsys – A Python library for implementing a Recommender System.
  • thinking bayes – Book on Bayesian Analysis
  • Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
  • Bolt – Bolt Online Learning Toolbox
  • CoverTree – Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree
  • nilearn – Machine learning for NeuroImaging in Python
  • imbalanced-learn – Python module to perform under sampling and over sampling with various techniques.
  • Shogun – The Shogun Machine Learning Toolbox
  • Pyevolve – Genetic algorithm framework.
  • Caffe – A deep learning framework developed with cleanliness, readability, and speed in mind.
  • breze – Theano based library for deep and recurrent neural networks
  • pyhsmm – library for approximate unsupervised inference in Bayesian Hidden Markov Models (HMMs) and explicit-duration Hidden semi-Markov Models (HSMMs), focusing on the Bayesian Nonparametric extensions, the HDP-HMM and HDP-HSMM, mostly with weak-limit approximations.
  • mrjob – A library to let Python program run on Hadoop.
  • SKLL – A wrapper around scikit-learn that makes it simpler to conduct experiments.
  • neurolabhttps://github.com/zueve/neurolab
  • Spearmint – Spearmint is a package to perform Bayesian optimization according to the algorithms outlined in the paper: Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle and Ryan P. Adams. Advances in Neural Information Processing Systems, 2012.
  • Pebl – Python Environment for Bayesian Learning
  • Theano – Optimizing GPU-meta-programming code generating array oriented optimizing math compiler in Python
  • TensorFlow – Open source software library for numerical computation using data flow graphs
  • yahmm – Hidden Markov Models for Python, implemented in Cython for speed and efficiency.
  • python-timbl – A Python extension module wrapping the full TiMBL C++ programming interface. Timbl is an elaborate k-Nearest Neighbours machine learning toolkit.
  • deap – Evolutionary algorithm framework.
  • pydeep – Deep Learning In Python
  • mlxtend – A library consisting of useful tools for data science and machine learning tasks.
  • neon – Nervana’s high-performance Python-based Deep Learning framework [DEEP LEARNING]
  • Optunity – A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search.
  • Neural Networks and Deep Learning – Code samples for my book “Neural Networks and Deep Learning” [DEEP LEARNING]
  • Annoy – Approximate nearest neighbours implementation
  • skflow – Simplified interface for TensorFlow, mimicking Scikit Learn.
  • TPOT – Tool that automatically creates and optimizes machine learning pipelines using genetic programming. Consider it your personal data science assistant, automating a tedious part of machine learning.
  • pgmpy A python library for working with Probabilistic Graphical Models.
  • DIGITS – The Deep Learning GPU Training System (DIGITS) is a web application for training deep learning models.
  • Orange – Open source data visualization and data analysis for novices and experts.
  • MXNet – Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • milk – Machine learning toolkit focused on supervised classification.
  • TFLearn – Deep learning library featuring a higher-level API for TensorFlow.
  • REP – an IPython-based environment for conducting data-driven research in a consistent and reproducible way. REP is not trying to substitute scikit-learn, but extends it and provides better user experience.

Data Analysis / Data Visualization

  • SciPy – A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • NumPy – A fundamental package for scientific computing with Python.
  • Numba – Python JIT (just in time) complier to LLVM aimed at scientific Python by the developers of Cython and NumPy.
  • NetworkX – A high-productivity software for complex networks.
  • igraph – binding to igraph library – General purpose graph library
  • Pandas – A library providing high-performance, easy-to-use data structures and data analysis tools.
  • Open Mining – Business Intelligence (BI) in Python (Pandas web interface)
  • PyMC – Markov Chain Monte Carlo sampling toolkit.
  • zipline – A Pythonic algorithmic trading library.
  • PyDy – Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
  • SymPy – A Python library for symbolic mathematics.
  • statsmodels – Statistical modeling and econometrics in Python.
  • astropy – A community Python library for Astronomy.
  • matplotlib – A Python 2D plotting library.
  • bokeh – Interactive Web Plotting for Python.
  • plotly – Collaborative web plotting for Python and matplotlib.
  • vincent – A Python to Vega translator.
  • d3py – A plotting library for Python, based on D3.js.
  • ggplot – Same API as ggplot2 for R.
  • ggfortify – Unified interface to ggplot2 popular R packages.
  • Kartograph.py – Rendering beautiful SVG maps in Python.
  • pygal – A Python SVG Charts Creator.
  • PyQtGraph – A pure-python graphics and GUI library built on PyQt4 / PySide and NumPy.
  • pycascading
  • Petrel – Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python.
  • Blaze – NumPy and Pandas interface to Big Data.
  • emcee – The Python ensemble sampling toolkit for affine-invariant MCMC.
  • windML – A Python Framework for Wind Energy Analysis and Prediction
  • vispy – GPU-based high-performance interactive OpenGL 2D/3D data visualization library
  • cerebro2 A web-based visualization and debugging platform for NuPIC.
  • NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool!
  • SparklingPandas Pandas on PySpark (POPS)
  • Seaborn – A python visualization library based on matplotlib
  • bqplot – An API for plotting in Jupyter (IPython)
  • pastalog – Simple, realtime visualization of neural network training performance.
  • caravel – A data exploration platform designed to be visual, intuitive, and interactive.
  • Dora – Tools for exploratory data analysis in Python.
  • Ruffus – Computation Pipeline library for python.
  • SOMPY – Self Organizing Map written in Python (Uses neural networks for data analysis).
  • HDBScan – implementation of the hdbscan algorithm in Python – used for clustering

Misc Scripts / iPython Notebooks / Codebases

Neural networks

  • Neural networks – NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.

Kaggle Competition Source Code

Ruby

Natural Language Processing

  • Treat – Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby
  • Ruby Linguistics – Linguistics is a framework for building linguistic utilities for Ruby objects in any language. It includes a generic language-independent front end, a module for mapping language codes into language names, and a module which contains various English-language utilities.
  • Stemmer – Expose libstemmer_c to Ruby
  • Ruby Wordnet – This library is a Ruby interface to WordNet
  • Raspel – raspell is an interface binding for ruby
  • UEA Stemmer – Ruby port of UEALite Stemmer – a conservative stemmer for search and indexing
  • Twitter-text-rb – A library that does auto linking and extraction of usernames, lists and hashtags in tweets

General-Purpose Machine Learning

Data Analysis / Data Visualization

  • rsruby – Ruby – R bridge
  • data-visualization-ruby – Source code and supporting content for my Ruby Manor presentation on Data Visualisation with Ruby
  • ruby-plot – gnuplot wrapper for ruby, especially for plotting roc curves into svg files
  • plot-rb – A plotting library in Ruby built on top of Vega and D3.
  • scruffy – A beautiful graphing toolkit for Ruby
  • SciRuby
  • Glean – A data management tool for humans
  • Bioruby
  • Arel

Misc

Rust

General-Purpose Machine Learning

  • deeplearn-rs – deeplearn-rs provides simple networks that use matrix multiplication, addition, and ReLU under the MIT license.
  • rustlearn – a machine learning framework featuring logistic regression, support vector machines, decision trees and random forests.
  • rusty-machine – a pure-rust machine learning library.
  • leaf – open source framework for machine intelligence, sharing concepts from TensorFlow and Caffe. Available under the MIT license. [Deprecated]
  • RustNN – RustNN is a feedforward neural network library.

R

General-Purpose Machine Learning

  • ahaz – ahaz: Regularization for semiparametric additive hazards regression
  • arules – arules: Mining Association Rules and Frequent Itemsets
  • bigrf – bigrf: Big Random Forests: Classification and Regression Forests for Large Data Sets
  • bigRR – bigRR: Generalized Ridge Regression (with special advantage for p >> n cases)
  • bmrm – bmrm: Bundle Methods for Regularized Risk Minimization Package
  • Boruta – Boruta: A wrapper algorithm for all-relevant feature selection
  • bst – bst: Gradient Boosting
  • C50 – C50: C5.0 Decision Trees and Rule-Based Models
  • caret – Classification and Regression Training: Unified interface to ~150 ML algorithms in R.
  • caretEnsemble – caretEnsemble: Framework for fitting multiple caret models as well as creating ensembles of such models.
  • Clever Algorithms For Machine Learning
  • CORElearn – CORElearn: Classification, regression, feature evaluation and ordinal evaluation
  • CoxBoost – CoxBoost: Cox models by likelihood based boosting for a single survival endpoint or competing risks
  • Cubist – Cubist: Rule- and Instance-Based Regression Modeling
  • e1071 – e1071: Misc Functions of the Department of Statistics (e1071), TU Wien
  • earth – earth: Multivariate Adaptive Regression Spline Models
  • elasticnet – elasticnet: Elastic-Net for Sparse Estimation and Sparse PCA
  • ElemStatLearn – ElemStatLearn: Data sets, functions and examples from the book: “The Elements of Statistical Learning, Data Mining, Inference, and Prediction” by Trevor Hastie, Robert Tibshirani and Jerome Friedman Prediction” by Trevor Hastie, Robert Tibshirani and Jerome Friedman
  • evtree – evtree: Evolutionary Learning of Globally Optimal Trees
  • forecast – forecast: Timeseries forecasting using ARIMA, ETS, STLM, TBATS, and neural network models
  • forecastHybrid – forecastHybrid: Automatic ensemble and cross validation of ARIMA, ETS, STLM, TBATS, and neural network models from the “forecast” package
  • fpc – fpc: Flexible procedures for clustering
  • frbs – frbs: Fuzzy Rule-based Systems for Classification and Regression Tasks
  • GAMBoost – GAMBoost: Generalized linear and additive models by likelihood based boosting
  • gamboostLSS – gamboostLSS: Boosting Methods for GAMLSS
  • gbm – gbm: Generalized Boosted Regression Models
  • glmnet – glmnet: Lasso and elastic-net regularized generalized linear models
  • glmpath – glmpath: L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model
  • GMMBoost – GMMBoost: Likelihood-based Boosting for Generalized mixed models
  • grplasso – grplasso: Fitting user specified models with Group Lasso penalty
  • grpreg – grpreg: Regularization paths for regression models with grouped covariates
  • h2o – A framework for fast, parallel, and distributed machine learning algorithms at scale — Deeplearning, Random forests, GBM, KMeans, PCA, GLM
  • hda – hda: Heteroscedastic Discriminant Analysis
  • Introduction to Statistical Learning
  • ipred – ipred: Improved Predictors
  • kernlab – kernlab: Kernel-based Machine Learning Lab
  • klaR – klaR: Classification and visualization
  • lars – lars: Least Angle Regression, Lasso and Forward Stagewise
  • lasso2 – lasso2: L1 constrained estimation aka ‘lasso’
  • LiblineaR – LiblineaR: Linear Predictive Models Based On The Liblinear C/C++ Library
  • LogicReg – LogicReg: Logic Regression
  • Machine Learning For Hackers
  • maptree – maptree: Mapping, pruning, and graphing tree models
  • mboost – mboost: Model-Based Boosting
  • medley – medley: Blending regression models, using a greedy stepwise approach
  • mlr – mlr: Machine Learning in R
  • mvpart – mvpart: Multivariate partitioning
  • ncvreg – ncvreg: Regularization paths for SCAD- and MCP-penalized regression models
  • nnet – nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models
  • oblique.tree – oblique.tree: Oblique Trees for Classification Data
  • pamr – pamr: Pam: prediction analysis for microarrays
  • party – party: A Laboratory for Recursive Partytioning
  • partykit – partykit: A Toolkit for Recursive Partytioning
  • penalized – penalized: L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model
  • penalizedLDA – penalizedLDA: Penalized classification using Fisher’s linear discriminant
  • penalizedSVM – penalizedSVM: Feature Selection SVM using penalty functions
  • quantregForest – quantregForest: Quantile Regression Forests
  • randomForest – randomForest: Breiman and Cutler’s random forests for classification and regression
  • randomForestSRC – randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC)
  • rattle – rattle: Graphical user interface for data mining in R
  • rda – rda: Shrunken Centroids Regularized Discriminant Analysis
  • rdetools – rdetools: Relevant Dimension Estimation (RDE) in Feature Spaces
  • REEMtree – REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data
  • relaxo – relaxo: Relaxed Lasso
  • rgenoud – rgenoud: R version of GENetic Optimization Using Derivatives
  • rgp – rgp: R genetic programming framework
  • Rmalschains – Rmalschains: Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R
  • rminer – rminer: Simpler use of data mining methods (e.g. NN and SVM) in classification and regression
  • ROCR – ROCR: Visualizing the performance of scoring classifiers
  • RoughSets – RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories
  • rpart – rpart: Recursive Partitioning and Regression Trees
  • RPMM – RPMM: Recursively Partitioned Mixture Model
  • RSNNS – RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS)
  • RWeka – RWeka: R/Weka interface
  • RXshrink – RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression
  • sda – sda: Shrinkage Discriminant Analysis and CAT Score Variable Selection
  • SDDA – SDDA: Stepwise Diagonal Discriminant Analysis
  • SuperLearner and subsemble – Multi-algorithm ensemble learning packages.
  • svmpath – svmpath: svmpath: the SVM Path algorithm
  • tgp – tgp: Bayesian treed Gaussian process models
  • tree – tree: Classification and regression trees
  • varSelRF – varSelRF: Variable selection using random forests
  • XGBoost.R – R binding for eXtreme Gradient Boosting (Tree) Library
  • Optunity – A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly to R.
  • igraph – binding to igraph library – General purpose graph library
  • MXNet – Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.

Data Analysis / Data Visualization

  • ggplot2 – A data visualization package based on the grammar of graphics.

SAS

General-Purpose Machine Learning

  • Enterprise Miner – Data mining and machine learning that creates deployable models using a GUI or code.
  • Factory Miner – Automatically creates deployable machine learning models across numerous market or customer segments using a GUI.

Data Analysis / Data Visualization

  • SAS/STAT – For conducting advanced statistical analysis.
  • University Edition – FREE! Includes all SAS packages necessary for data analysis and visualization, and includes online SAS courses.

High Performance Machine Learning

Natural Language Processing

Demos and Scripts

  • ML_Tables – Concise cheat sheets containing machine learning best practices.
  • enlighten-apply – Example code and materials that illustrate applications of SAS machine learning techniques.
  • enlighten-integration – Example code and materials that illustrate techniques for integrating SAS with other analytics technologies in Java, PMML, Python and R.
  • enlighten-deep – Example code and materials that illustrate using neural networks with several hidden layers in SAS.
  • dm-flow – Library of SAS Enterprise Miner process flow diagrams to help you learn by example about specific data mining topics.

Scala

Natural Language Processing

  • ScalaNLP – ScalaNLP is a suite of machine learning and numerical computing libraries.
  • Breeze – Breeze is a numerical processing library for Scala.
  • Chalk – Chalk is a natural language processing library.
  • FACTORIE – FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.

Data Analysis / Data Visualization

  • MLlib in Apache Spark – Distributed machine learning library in Spark
  • Scalding – A Scala API for Cascading
  • Summing Bird – Streaming MapReduce with Scalding and Storm
  • Algebird – Abstract Algebra for Scala
  • xerial – Data management utilities for Scala
  • simmer – Reduce your data. A unix filter for algebird-powered aggregation.
  • PredictionIO – PredictionIO, a machine learning server for software developers and data engineers.
  • BIDMat – CPU and GPU-accelerated matrix library intended to support large-scale exploratory data analysis.
  • Wolfe Declarative Machine Learning
  • Flink – Open source platform for distributed stream and batch data processing.
  • Spark Notebook – Interactive and Reactive Data Science using Scala and Spark.

General-Purpose Machine Learning

  • Conjecture – Scalable Machine Learning in Scalding
  • brushfire – Distributed decision tree ensemble learning in Scala
  • ganitha – scalding powered machine learning
  • adam – A genomics processing engine and specialized file format built using Apache Avro, Apache Spark and Parquet. Apache 2 licensed.
  • bioscala – Bioinformatics for the Scala programming language
  • BIDMach – CPU and GPU-accelerated Machine Learning Library.
  • Figaro – a Scala library for constructing probabilistic models.
  • H2O Sparkling Water – H2O and Spark interoperability.
  • FlinkML in Apache Flink – Distributed machine learning library in Flink
  • DynaML – Scala Library/REPL for Machine Learning Research
  • Saul – Flexible Declarative Learning-Based Programming.

Swift

General-Purpose Machine Learning

  • Swift AI – Highly optimized artificial intelligence and machine learning library written in Swift.
  • BrainCore – The iOS and OS X neural network framework
  • swix – A bare bones library that includes a general matrix language and wraps some OpenCV for iOS development.
  • DeepLearningKit an Open Source Deep Learning Framework for Apple’s iOS, OS X and tvOS. It currently allows using deep convolutional neural network models trained in Caffe on Apple operating systems.
  • AIToolbox – A toolbox framework of AI modules written in Swift: Graphs/Trees, Linear Regression, Support Vector Machines, Neural Networks, PCA, KMeans, Genetic Algorithms, MDP, Mixture of Gaussians.
  • MLKit – A simple Machine Learning Framework written in Swift. Currently features Simple Linear Regression, Polynomial Regression, and Ridge Regression.

TensorFlow

General-Purpose Machine Learning

Credits

表观遗传学药物和免疫治疗方案联合应用,前景值得期待

在2010年,六位晚期肺癌的患者收到了坏消息。临床前小鼠实验中观察到的阿扎胞苷与实验阶段药物恩替诺特联合使用(二者均为表观遗传学修饰药物)对非小细胞肺癌的治疗作用在六位患者体内没有发挥,肿瘤没有任何减小的迹象。为了尽可能延长这些患者的生存期,约翰霍普金斯Sidney Kimmel癌症研究中心的肿瘤学家Julie Brahmer在这六位患者的治疗方案中加入了一种免疫治疗药物——纳武单抗。在其他研究中,以纳武单抗治疗的非小细胞肺癌患者中有接近半数的生存期超过六个月,并且无肿瘤进展。Brahmer及其同事希望她们的六位患者接受nivolumab治疗后,能有三位至少生存六个月,或可能能够生存一年以上。而最终的结果是,五位患者生存期超过了最初的六个月;四年过去了,仍有两位患者生存。其中第三位死亡的患者死于之前治疗的并发症,死亡时并没有明显的肿瘤复发。由于该试验的样本量小,结果的成功不能排除偶然因素。但是能够改变表观基因组的药物阿扎胞苷和恩替诺特,确实可能会促使患者的免疫系统对免疫检查点抑制剂产生应答。这项试验第一次表明了这些药物的配伍能够显著改善患者的临床结果。联合使用不同的治疗药物对抗肿瘤的思路并不新颖。目前科研人员也正尝试将免疫治疗药物,如免疫检查点抑制剂与化疗或放疗等其他治疗手段联合使用。在2015年10月,美国FDA第一次批准了免疫治疗药物的联合治疗方案,即纳武单抗和伊匹单抗联合治疗黑色素瘤。这种联合方案相比单用要更为有效。而表观遗传学药物阿扎胞苷和恩替诺特与免疫治疗药物合用可能会更为有效,在未来几年中会有多项试验来验证这一想法——美国至少有七项,而在加拿大和欧洲有更多项试验正在监测免疫检查点抑制剂和表观遗传学药物联合治疗对抗实体瘤的效果。2015年10月,意大利锡耶纳开展了一项黑色素瘤患者试验。而在约翰霍普金斯,Stephen Baylin团队开始在卵巢癌患者中开展这方面的研究。而前述霍普金斯胸科肿瘤主任Brahmer的研究已进入2期阶段,目前正在Baltimore和加州大学洛杉矶分校招募NSCLC患者。在玛格丽特公主医院安大略肿瘤研究所,Daniel de Carvalho等人准备在多种肿瘤中试验免疫检查点抑制剂和表观遗传学药物合用的效果。表观遗传学药物简述对表观遗传学治疗和免疫治疗联合应用感兴趣的研究人员目前主要研究两大类表观遗传学药物。第一类是组蛋白去乙酰化酶(HDAC)抑制剂,这类药物作用于包裹DNA的组蛋白上,通过控制DNA缠绕于组蛋白的松紧程度来发挥作用。组蛋白去乙酰化酶通过组蛋白的去乙酰化(去除乙酰基),使DNA更紧地缠绕在组蛋白上,从而导致这些DNA不易被基因转录因子接触。结果导致与细胞分化、细胞周期阻滞、肿瘤免疫、受损细胞凋亡等有关的蛋白的表达受到抑制。这些因素都会促使癌症的发展。组蛋白去乙酰化酶抑制剂能有选择性地恢复这些癌症抑制因子和其它抑癌基因的表达。目前FDA已经批准了三个HDAC抑制剂,均用于治疗罕见T细胞淋巴瘤。在约翰霍普金斯试验中加入的恩替诺特就属于这类药物。第二类表观遗传学药物是DNA甲基化抑制剂(DNMTi)。这类药物能够防止肿瘤细胞基因上被加入甲基。DNA甲基化能够沉默延缓细胞分裂的基因,因此可促使细胞增殖不受控制。阿扎胞苷和地西他滨是FDA已经批准的用于骨髓异常增生综合征的两种DNA甲基化抑制剂。虽然表观遗传学药物已经被用于血液肿瘤治疗,但是人们直到最近才开始关注这些药物对免疫系统的影响。一个早期的线索来自2014年的一项研究,荷有乳腺肿瘤或结肠癌细胞的小鼠对免疫检查点抑制剂没有明显应答,但是向免疫治疗方案中加入两种表观遗传学药物之后,80%以上的被治疗小鼠的生存期超过60天,期间没有明显的肿瘤发生,而未治疗小鼠体内则发生明显转移。联合应用的灵感2015年8月份发表的两项研究发现,低剂量阿扎胞苷能够激活细胞警告免疫系统防御病毒入侵的程序。一篇论文结果显示,去甲基化药物如阿扎胞苷能够刺激包括肿瘤细胞在内的人体所有细胞中良性逆转录病毒的表达,这使得肿瘤细胞更加具有免疫原性,吸引免疫细胞的能力更强。在另一项研究中,De Carvalho等人发现了相同的病毒反应。表观遗传学药物仅能较弱地刺激免疫系统,在没有免疫检查点抑制剂时,肿瘤依然能够抑制免疫应答。也就是说,虽然表观遗传学治疗已经使肿瘤细胞更具免疫原性,但是加入免疫检查点抑制剂去除免疫系统的“刹车”后,T细胞才能够攻击肿瘤细胞。一些研究人员认为DNA甲基化抑制剂(DNMTis)比组蛋白去乙酰化酶(HDAC)抑制剂更适合与免疫治疗配伍。一些动物研究结果显示,HDAC抑制剂脱靶效应明显,因此副作用往往较重,包括疲劳和恶心等。甲基化抑制剂在血液肿瘤治疗的临床数据也更优于HDAC抑制剂,在一项2期骨髓异常增生综合征和急性髓系白血病试验中,对HDAC抑制剂产生治疗应答的患者百分率很低,但是对DNMT抑制剂产生应答的患者却达到40%。Baylin团队认为两种表观遗传学药物合用效果会由于一种药物单用,2011年研究以及其未发表的小鼠数据都支持这一观点。因此,他的团队计划开展NSCLC临床试验来比较不同药物合用的疗效:一种免疫抑制剂与一种DNMT抑制剂,或一种HDAC抑制剂,或与后两者合用。而Brahmer坚持采用“阿扎胞苷-恩替诺特-纳武单抗”这一在之前的研究中已显示良好效果的合用策略。联合用药方案的实施如果以上描述的合用策略被证实有效,那么临床医生可能不得不要重新定义治疗成功的含义。传统的治疗起效的标准——快速的肿瘤缩减,可能不再适合评价免疫治疗联合方案的效果。2011年,Baylin在约翰霍普金斯主持开展的临床研究显示,仅接受表观遗传学药物治疗的患者基本没有获益,仅有少部分患者的肿瘤可见明显缩减。另外,免疫治疗使肿瘤发生缩减之前,有时还能够观察到肿瘤的增大现象。其中六位患者——即本文开篇所述的Brahmer的六位患者开始接受免疫检查点抑制剂进行治疗,治疗效果如本文开篇所述令人振奋。这时研究人员开始提出表观遗传学药物能够使肿瘤细胞对免疫治疗更为敏感的设想。因此,相比肿瘤缩减,六位患者试验得出的“六个月无进展生存”可能更适合作为治疗成功的标准。当前,与免疫治疗联合应用的治疗方案还包括化疗、放疗及靶向治疗,这些药物作用方式与表观遗传学药物不同,但是也可引发免疫应答。当肿瘤细胞被放化疗杀死后,免疫细胞也被募集而来,引发类似自身免疫疾病中的炎症反应。表观遗传学药物相比放化疗更具有选择性,因为这些药物识别的表观遗传学标志物大多出现在肿瘤细胞中。这种选择性可能会减少自身免疫疾病样的副作用。按照Baylin的说法,具体的给药方案为,给予表观遗传学药物后间隔较短时间便给予免疫检查点抑制剂,表观遗传学治疗先使肿瘤细胞更具免疫原性,然后免疫检查点抑制剂去除免疫系统的“刹车”,最后免疫系统攻击肿瘤细胞。以上所述的所有联合治疗成功与否还需等待患者的临床结果,在未来一年中结果会逐渐明朗。Baylin说,他感到乐观的同时也感觉害怕,“在你没有看见真正的结果之前,一切都只是猜想。”希望在更多的患者中重复出在最初六位肺癌患者中取得的成功结果。

参考文献:Karen Weintraub. Take two: Combining immunotherapy with epigenetic drugs to tackle cancer. Nature Med, Jan 2016, Volume 22, Number 1.

癌症免疫疗法“最新综述”TOP8

近几年,癌症免疫疗法进入飞速发展阶段,然而尽管这一突破性的技术给科学界带来了很大惊喜,也吸引了一大批制药企业加入这一领域。

近几年,癌症免疫疗法进入飞速发展阶段,然而尽管这一突破性的技术给科学界带来了很大的惊喜,也吸引了一大批制药企业加入这一领域,但包括检查点抑制剂、 过继细胞疗法、癌症疫苗在内的各项技术仍存在很多需要克服的障碍。近期,Cell、Nature等杂志发表了多篇癌症免疫综述,共同探讨了推动免疫治疗发 展的方法。

Safety profiles of anti-CTLA-4 and anti-PD-1 antibodies alone and in combination

5月4日,在线发表在Nature Reviews Clinical Oncology上的这篇综述指出,PD-1和CTLA-4抗体为晚期黑色素瘤患者带来了前所未有的希望,并且在其它癌症类型中也显示出了巨大的潜力。然 而,这些新型免疫疗法也带来了一些独特的不良反应,PD-1和CTLA-4抑制剂的副作用通常出现在皮肤、胃肠道、肝脏和内分泌系统,包括瘙痒、皮疹、恶 心、腹泻和甲状腺疾病。这一综述中,作者们概括了靶向PD-1和CTLA-4的检查点抑制剂的不良事件,旨在提供一些通用准则。[文献]

Adapting Cancer Immunotherapy Models for the Real World

4月19日,在线发表于Cell旗下Trends in Immunology上的这篇综述文章中,作者们讨论了患者差异如何影响癌症免疫疗法的疗效和毒性,以及如何根据不同的宿主环境在动物研究中更好的建模。

文章指出近期的小鼠研究表明,年龄、肥胖以及微生物群对癌症的天然免疫力以及响应免疫疗法的能力有深远的影响。尽管这一研究领域正处于起步阶段,但这些结 果足以支撑该研究方向,即人类癌症免疫疗法如何利用小鼠更好的建模。作者们认为,只有系统测试了各种不同类型的小鼠(年轻/年老、胖/瘦、携带不同微生物 群)才能真正揭开人类癌症免疫疗法的复杂性。[详细]

Mechanism-driven biomarkers to guide immune checkpoint blockade in cancer therapy

4月15日,在线发表于Nature Reviews Cancer上的这篇综述指出,尽管近几年多个抑制CTLA-4和PD-1的抗体获批,且一些其它的免疫检查点正在临床验证中,但通过阻断检查点通路的抗癌药的优化使用依然存在问题。

文章强调,目前,除CTLA4和PD1抗体已经获得批准外,一些其它检查点受体和配体靶向的临床试验也在不断增加,包括LAG3、TIM3、 B7H3(CD276)、CD39、CD73以及腺苷A2a受体。大多数这些免疫检查点的开发结合了PD-1通路抑制抗体。这其中的一些检查点与PD- L1共表达,为这类双重阻断疗法提供了依据。然而,由于相关的临床试验还处于早期阶段,还没有已经经验证的生物标志物可以用于预测哪些病人可以更加受益于 这种双重抑制疗法。[详细]

The future of cancer treatment: immunomodulation, CARs and combination immunotherapy

3月15日,在线发表于Nature Reviews Clinical Oncology上的这篇综述回顾了癌症免疫治疗的最新进展,讨论了这一疗法在未来癌症治疗中的角色,概述了组合方案潜在的治疗相关性。该综述主要介绍了 三方面的内容:单抗的免疫调节、CAR-T疗法以及联合治疗。文章详细总结了检查点阻断疗法以及CAR-T疗法涉及的多种新靶点。[详细]

Inducing stable reversion to achieve cancer control Vaccines for established cancer: overcoming the challenges posed by immune evasion

3月11日,在线发表于Nature Reviews Cancer上这篇综述中,作者们讨论了克服由肿瘤细胞内在因子和肿瘤微环境控制的免疫逃逸相关的过程,总结了如何通过改善疫苗设计、联合疫苗与标准化疗 等方式使免疫治疗效益最大化。这一综述分析了一些成功免疫疗法的共性,主要可分为以下三个因素:

1. 肿瘤相关抗原的选择,这取决于癌症的类型。在病毒诱导的癌症类型中,抗原也应该来自病毒;在其它起源的癌症类型中,应选择neo-antigens(源于肿瘤细胞的突变)。

2. 创建一个能够诱导产生正确免疫细胞的平台,包括产生比例平衡的效应细胞(CD4/CD8+)以及记忆T细胞。

3. 成功的免疫治疗是靶向肿瘤细胞的免疫抑制策略,这可以通过特定的联合治疗实现,比如联合化疗、检查点抑制剂等。[详细]

Development of immuno-oncology drugs—from CTLA4 to PD1 to the next generations

3月11日,在线发表于Nature Reviews Drug Discovery上的这篇综述回顾了癌症免疫疗法近年来的发展历史,包括成功的因素;概述了新药研发的注意事项,总结了自2011年发展起来的三代免疫 疗法,说明了这些新一代免疫疗法将带来的新机会。[详细]

The Basis of Oncoimmunology

3月10日,发表于Cell上的这一综述中,作者讨论了癌症免疫响应的组成、基于TH2的抗癌疗法、T细胞免疫靶向治疗、微生物在调节系统癌症风险和响应治疗中的作用以及肿瘤免疫治疗模式等内容。[详细]

Anti-CD73 in Cancer Immunotherapy: Awakening New Opportunities

2月4日,在线发表于Cell旗下Trends in Cancer上的这一综述讨论了CD73与肿瘤发生、发展以及扩散之间的关系,强调了这一分子作为药物靶标的潜在价值,并表示CD73有望成为个性化癌症治疗中的新生物标志物。[详细]

四项最新进展

近期,除了不断有科学家在这些顶级学术期刊上发表综述文章外,癌症免疫疗法领域也取得了多项新进展,其中“借助他人免疫细胞对抗癌症”的研究引起了广泛的 关注。5月19日,发表在Science上的一项研究中,科学家们发现即使患者自身的免疫细胞不能识别和对抗他们的肿瘤,但其他人的免疫细胞也许可行。

研究人员测试了是否相同的neoantigens能够被来源健康捐赠者的T细胞识别。让人惊讶的是,这些捐赠者来源的T细胞能够检测出非常多患者T细胞不 能识别的neoantigens。领导该研究的Ton Schumachervia表示,依据这些捐赠T细胞使用的受体可以工程改造患者自身的T细胞,使它们能够检测到癌细胞。[详细]

5月23日,发表在Nature上的一项研究中,科学家们发现了一些癌细胞中的遗传变异能够导致PD-L1蛋白表达增强。研究小组描述了他们对成人T细胞白血病/淋巴瘤病例的测序结果,发现这些变异有望被用作癌症患者的生物标志物。[详细]

3月24日,发表在Cell杂志上的一项研究中,研究人员分析了治疗前黑色素瘤活组织样本的mutanomes和转录组,以期鉴定出影响患者对PD-1疗 法敏感性或抵抗性的因素。结果发现,整体高突变负荷与改善生存相关,响应PD-1疗法的患者拥有丰富的BRCA2突变。[详细]

3月3日,发表在Science杂志上的一项中,由英国伦敦大学学院领导的科学家小组找到了能够保证免疫疗法实现精准治疗的新依据。他们鉴定出的neoantigens携带了癌症发展最早期的突变,且在所有肿瘤细胞中都有表达,而不是某个子集。

Cell综述:为何“癌症免疫疗法”只对部分人有效?

Mutations Associated with Acquired Resistance to PD-1 Blockade in Melanoma

上周,笔者分享了Nature Reviews Clinical Oncology上发表的一篇CAR-T疗法相关综述,文章总结了该疗法在研的血液学肿瘤和实体肿瘤相关靶点,讨论了改善这一疗法的6大途径,并强调了在实现最大抗肿瘤效力的情况下平衡安全性需考虑的3方面因素。今天,为大家介绍一篇Cell子刊上发表的免疫检查点阻断疗法相关的最新综述。

近 几年,免疫检查点抑制剂在多种癌症类型中取得了惊人的治疗效果,现已成为最前沿的癌症免疫疗法之一。6月21日,Cell旗下Immunity杂志(最新 影响因子24.082)发表了题为“Resistance Mechanisms to Immune-Checkpoint Blockade in Cancer: Tumor-Intrinsic and -Extrinsic Factors”的综述文章。

作者们总结了癌细胞自主因 素、肿瘤微环境因素以及宿主相关因素如何在癌症治疗时影响免疫检查点阻断疗法,使其呈现出多样化的响应。此外,文章还讨论了免疫系统与宿主微生物群之间的 互相关系能够决定癌症治疗响应的新证据。作者们提出了一个概念,即在使用免疫检查点阻断疗法之前或治疗期间调节肠道微生物可优化治疗效果。

免疫检查点疗法进展回顾

过 去十年中,癌症免疫疗法前所未有的崛起和成功彻底改变了多种恶性肿瘤的临床管理。其中,免疫检查点阻断剂(Immune-Checkpoint Blockers,ICBs)是免疫疗法中最前沿的技术之一。这类疗法在多种组织学肿瘤类型中具有广泛的生物活性,且反应持久。根据目前的临床结果,免疫 检查点阻断疗法中最成功的要属靶向CTLA-4和PD-1/PD-L1的药物。

引言中,作者们回顾了CTLA-4、 PD-1/PD-L1抗体的作用机理和发展历程。截止到目前(作者统计时),FDA批准的ICBs共4个,分别为,1)ipilimumab:CTLA- 4单抗,用于治疗不可切除或转移性黑色素瘤;2)pembrolizumab:PD-1单抗,用于治疗不可切除的转移性黑色素瘤以及PD-L1阳性晚期转 移性非小细胞肺癌;3)nivolumab:PD-1单抗,用于治疗不可切除或转移性黑色素瘤、接受含铂化疗治疗期间或治疗后病情进展的晚期转移性非小细 胞肺癌以及晚期(转移性)肾细胞癌;4)atezolizumab:PD-L1抗体,用于治疗对含铂化疗不响应的局部晚期或转移性尿路上皮癌。

然 而,尽管这类抗体对癌症治疗起到了很强的改善作用,但不可忽视的是,大多数患者未能响应ICBs,甚至因为免疫相关不良事件(immune- related adverse events,irAEs)的发生必须停止治疗。对于ICBs来说,虽然一些数据证实了它前所未有的实力,但截止目前的临床数据显 示,ipilimumab治疗的患者响应率约为15%;而靶向PD-1/PD-L1的药物治疗的患者响应率很少超过40%,且其中有大量的部分应答。因 此,有2个重要的问题需要解决:1)为什么患者响应ICBs会产生一定程度的异质性;2)ICBs如何才能将覆盖范围扩展到多数癌症患者群体中?

为何产生耐药性?

Major Factors Contributing to Primary Resistance to ICB Therapy(图1)

作 者们认为,从某种程度上来说,通过进一步深入理解和研究肿瘤微环境(tumor microenvironment,TME)中的免疫调节机制,这些问题的答案最终会浮出水面。TME中有很多因素能够抑制ICBs的治疗活性,如 Treg细胞、髓系来源抑制细胞(MDSCs)以及IDO(indole 2,3-dioxygenase)的活性;同时,一些肿瘤细胞自身因素也会影响ICBs的疗效,包括突变负荷、致瘤信号通路、PD-L1的表达以及 MHC-I类分子表达下调等。

事实上,肿瘤内在的因素并不是影响免疫疗法结果的唯一因素(图1)。一些新证据表明,癌症免疫疗法还受到影响 免疫系统功能的宿主相关和环境因素的影响。在这一综述中,作者们汇总了这些较少被考虑到的、有可能决定免疫检查点阻断疗法成败的肿瘤外在(tumor- extrinsic)因素。同时,鉴于一些新的发现,他们特别注意到了肠道微生物群的免疫调节潜能。

正文中,作者们 以大量的文献分别从TME(第一部分)、癌细胞自发机制(第二部分)两方面解释了免疫检测阻断疗法的耐药性。具体来说,TME部分相关的内容包括免疫调节 通路、Th1和 Tc1趋化因子分泌的表观遗传沉默以及I型干扰素信号的重要性;癌细胞自发机制部分介绍了致癌信号、突变状态、炎症和代谢线索等内容。

Immune-Checkpoint Blockade Mobilizes the Gut Microbiota to Promote Anti-tumor Immune Responses(图2)

第 三部分内容介绍了导致不良免疫疗法响应的宿主相关因素,如年龄、HLA分型、遗传多态性、饮食和新陈代谢以及慢性感染背景。第四部分内容中,作者们强调了 肠道微生物组对成功的癌症免疫疗法的重要性,分析了肠道微生物组对ICB免疫疗法的影响,并称它们可能与免疫疗法引发的胃肠道毒性相关,未来有希望能够通 过进一步研究解决这一问题(图2)。

Mobilizing the Gut Microbiota to Circumvent Primary Resistance to ICB in Patients(图3)

第 四部分内容(图3)汇总了改善免疫检查点阻断疗法覆盖范围的新途径。一方面,作者们介绍称,可以利用现有的治疗手段帮助扫除免疫疗法的障碍;另一方面,他 们再次强调可以通过操纵微生物组扩大ICB的治疗范围;此外,文章还提出了一种称作“Oncomicrobiotics”概念。

结论

大 量肿瘤或宿主相关的因素通过不同的方式组合决定了ICB抗癌疗法临床响应的异质性。近几年,科学家们通过将ICBs结合各种辅助疗法,改善其持久性、疗效 等属性,以期降低这种异质性。其中,有很多途径成功了,尽管通常毒性也会随之增加。值得注意的是,操纵肠道微生物相关的成果极为引人注目。作者们还认为, 饮食、益生菌或选择性抗生素的管理以及特殊菌株(oncomicrobiotics)或其产物的补充应该被考虑为一种组合策略,用以支持肠道免疫力,刺激 有效的抗癌免疫监视。

 

Mutation per Mb DNA was calculated by dividing the total number of somatic SNVs and indels overlapping with the coding regions and essential splice sites by the total number of coding bases suf ciently covered (≥3× in tumor and ≥10× in matched normal samples) by sequencing data.