Celseq2数据处理

Celseq2数据是目前single-cell RNA数据中较为少见且古早的一类,基于Celseq改进,由sra获得的fastq文件有两份,第一份存储了barcode与umi信息,第二份是cRNA。

目前搜集到的,适用于处理Celseq2的流水线有以下这些:

这里着重记录以上四种流水线的配置、运行,填补互联网上关于Celseq2数据预处理的一些空白。

Pipeline 1: celseq2

celseq2是celseq2数据原本自带的流水线,但是该流水线的主要作者已经离开华盛顿大学,最近一次commit是五年前。这套流水线最适合处理celseq2数据,但缺点是只能到产出UMI计数矩阵这一步,获得bam文件。

1. 配置

本身是三步走的配置,即clone、cd、pip install,但这里与文档不同,需要注意的是由于流水线版本较老,新的pandas、numpy、python版本三者中间的冲突经常导致流水线无法正常工作,这里祭出含泪测试的绝对无错配置方式:

1
2
3
4
git clone https://github.com/yanailab/celseq2.git
cd celseq2
conda env create -f environment.yaml # 非常重要,用它的文件创建虚拟环境,这一步文档中没有,我debug了很久才发现根据这个文件配置就不会有问题。
pip install ./

2. 需要的文件

对于一项Celseq2数据,首先去ncbi下载相应的sra文件,转成fastq.gz文件。这一步准备完毕后,需要再根据sra对应的GSE等等去ncbi找,找到barcode文件下载。

下载barcode文件后,需要处理成如下格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#barcode_id     seq
CACACAAAGCTAAGAT
TCAACGAGTTACGTCA
GACTACAAGGGCTCTC
GAAATGACACTCGACG
CACATAGTCCGTCATC
GACCTGGGTAGCTTGT
CACACCTTCCGTAGGC
CAGATCAAGTCACGCC
TAGACCATCCTTCAAT
TCAGGTATCCGTCATC
GGAGCAACACAGGTTT
CTCACACCACCAGCAC
CCTACCAAGATCTGAA
GACGCGTTCCAGGGCT
GGAGCAAAGGCAGGTT
CCGTTCACAAGTCTAC
TCATTACAGACACTAA
......

不要按照文档中的来,容易有问题。按照我这个文件设置,然后在config文件里把BC_SEQ_COLUMN设置为0

关于barcode起始位置与长度、UMI起始位置与长度,按照我们计算机数组的方式,从0开始算,长度按正常长度算,不需要考虑-1的问题。(例如,ncbi上写,barcode是R1的1-16,那么起始位置就是0,长度为16)。这里也非常建议自己zcat查看一下fastq.gz文件看看任意一条数据的对应片段是否能在barcode文件中找到匹配。

这些搞定之后,需要配置一下bowtie2,这个教程很多,也不麻烦,配置完毕后,下载你数据对应的参考基因组文件(gtf),然后用bowtie2提前做好索引,把索引文件前缀写入config文件中即可。

关于config文件中,GENE_BIOTYPE这一栏目,可以直接注释掉下面的“- ’protein_coding‘ - ’ lincRNA‘ ”这些,让流水线自己识别,全部汇报。

3. RUN

在正式run之前,需要配置一下table文件,这个很好设置,按文档来。

搞定之后就run,可以先–dryrun试试可行性,可以的话就直接run吧!

正常run完之后的结果和文档中相同,比较推荐在**/usr/bin/bowtie2 -p 15 -x **这里结束的时候,进到small_log里面看一下对比结果怎么样,这里的对比结果就是bowtie2的输出,一般是这样:

1
2
3
4
5
6
53470118 reads; of these:
53470118 (100.00%) were unpaired; of these:
8082479 (15.12%) aligned 0 times
26550259 (49.65%) aligned exactly 1 time
18837380 (35.23%) aligned >1 times
84.88% overall alignment rate

静静等待跑完就ok,然后再根据文档中storage的部分,或者使用samtools view -b -S得到bam文件即可。

Pipeline 2: Scruff

scruff其实理论上我并没有跑完,因为真的很慢。是直接采用R语言的一个处理包,配置起来相对简单。值得一提的是,Scruff最新版本本身对R语言版本的要求应该是4及以上,需要注意虚拟环境的配置。

Pipeline 3: dropEst

dropEst是最近几天才发觉的一个可以用来处理Celseq2数据的流水线,但文档中dropEst表示,对于Celseq2的测试还不足够,可能会有一些问题(…)。但dropEst的一个好处是,如果用来做RNA速率分析,那么dropEst出来的结果可以直接在velocyto中使用,不需要另外准备一大堆文件去适配velocyto。

1. 配置

dropEst的配置是我认为在这几个流水线中最容易出问题的,因为本身是需要cmake编译的项目,而cmake编译众所周知…一旦bug出现那真的是五花八门。

实际上,如果docker使用较多较熟悉的话,建议采用docker配置,省去很多麻烦,具体的文档中写的比较清楚。

如果不采用docker的话,这里记录一些点:

  • 尽量不在虚拟环境中配置。虚拟环境中配置有可能遇到cmake文件链接不到一些服务器本身的c++库,需要手动修改项目的build.make文件以及CMakeList文件,设置一些Cmake变量来规避,麻烦。
  • Cmake版本很重要,尽量采用3.11及以上的版本。
  • 实测一个比较顺利的操作是,通过conda先在base环境中安装dropEst,如果安装完成可以试试dropEst的一些命令是否正常,正常的话不需要再编译原项目了。但一般来说应该是不可以的,这个时候如果conda install之后,base环境已经会下载好需要的各种库,省去一些自己下载的麻烦。这里着重强调是因为,很多时候我们使用的服务器,自己是没有管理员权限,没办法通过sudo apt-get去直接下载库并且解决问题,那么采取上面说的这个方式,我试过是ok的。

2. 需要的文件

相比于celseq2流水线,dropEst需要的文件少一些,第一步droptag需要的仅仅是一个配置文件+序列,很简单。这一步完成后,需要通过第二步进行对齐,这里可以用STAR、Bowtie2啥的都行,按照文档来即可。第三步的文件配置也和第一步类似,但需要一些参考基因组的文件以及barcode相关文件,文档也写的比较清楚。第三步目前我还没执行到,后续补充。

3. RUN

可以直接自己写个脚本按照2中的三步去run,也可以按照文档一步一步来,比较新手友好。值得一提的是,建议结合velocyto的文档中,run_dropest的部分去对照,方便下一步进行RNA速率计算等等。这一步我也会在这几天补充。

Pipeline 4: snakePipes

这个流水线比较奇特,貌似包含了很多细分方向,不止是单细胞RNA分析。它的安装需要先配置好mamba,通过mamba去创建虚拟环境,按照文档走就行,也没有什么特别值得记录的地方。

但这个流水线文档步骤写的很不详细,没有进一步测试数据运行情况。后续有机会补充上来。

总结

这将近20天的时间,从不理解数据的各种意义,到现在可以慢慢去理解分析这些流水线的工作流,还是挺有意思的一件事情。道阻且长,行则将至。