RNA velocity基于细胞中spliced和unspliced的mRNA比例,来计算基因表达变化的速率,以此来预测细胞的发育轨迹。由于基于mRNA的剪切信息,所以分析前的第一步是统计基因的spliced和unspliced情况。为此,velocyto已经给市面上应用较广的几种单细胞测序方法,如10X、SmartSeq2、DropSeq和InDrops,准备好了流程,直接使用即可。对于其他的方法,可以用更通用的流程来解决。
但是,需要注意的是所有的方法都要求bam满足以下几个条件:

通常单细胞分析流程比对生成的bam已经满足上述的条件,但总有一些特殊情况,比如这里分析的单细胞bam文件就不满足后面两个条件,这个时候就得动动手添加这些信息让bam满足条件了。
samtools view sample_SortedByCoordinate.bam | cut -f1-5 | head -n
GCCAGTGGCTGCTCTCT_GGGTCCGATGTG_M_E250067759L1C038R00103391476 16 chr1 11525 3
TCTACATATGGCTCTCA_AGAAATGCGTCT_M_E250067759L1C010R00804308263 16 chr1 11541 255
TGATCAGATGGGCTGTG_TAGCGGGGTAGA_M_E250067759L1C040R03405004208 16 chr1 11576 255
这个流程生成的bam将CB、UB信息添加到read name里面,如上面所示,以下划线为分割,前两个分别是CB、UB。那么,只需将这两个信息作为TAG添加到bam里面即可。搞清楚了需求和数据来源,接下来就是行动的问题了。这个小需求,但凡会使用awk命令,再结合samtools就可以解决。
但是,为了方便以后复用,这里写了一个python脚本来做这个事情:
python addtag2bam.py --help
usage: python addtag2bam.py -i input [options]
This script is used to add CB and UB tag for bam accordding to read header.
optional arguments:
-h, --help show this help message and exit
-i INPUT [INPUT ...], --input INPUT [INPUT ...]
bam file multiple separated by space.
-b BC_PATTERN, --bc-pattern BC_PATTERN
barcode pattern, C: cell barcode, X: other, U: umi, [default: "CCCCCCCCCCCCCCCCCXUUUUUUUUUUUU"].
-p [OUTPUT [OUTPUT ...]], --output [OUTPUT [OUTPUT ...]]
the output name, [default: None].
-t THREAD, --thread THREAD
thread number, [default: "sample number"].
-o OUTDIR, --outdir OUTDIR
the output directory, [default: "input directory"].
写成这样的脚本,只要是CB、UB信息包含在read name里面的情况,都可以轻松搞定,因为这里提取TAG信息时用了位置匹配。
python addtag2bam.py -i sample1_SortedByCoordinate.bam sample2_SortedByCoordinate.bam
如果CB、UB模式跟这里不同,只需根据自己的实际情况修改--bc-pattern参数即可。