Celseq2数据处理
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 | git clone https://github.com/yanailab/celseq2.git |
2. 需要的文件
对于一项Celseq2数据,首先去ncbi下载相应的sra文件,转成fastq.gz文件。这一步准备完毕后,需要再根据sra对应的GSE等等去ncbi找,找到barcode文件下载。
下载barcode文件后,需要处理成如下格式:
1 | #barcode_id seq |
不要按照文档中的来,容易有问题。按照我这个文件设置,然后在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 | 53470118 reads; of these: |
静静等待跑完就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天的时间,从不理解数据的各种意义,到现在可以慢慢去理解分析这些流水线的工作流,还是挺有意思的一件事情。道阻且长,行则将至。