前言
染色体外环状DNA(extrachromosomal circular DNA,eccDNA),一个科研界的新起之秀,随着国际学术期刊《Nature》[1] 和《Cell》[2] 相继发文后,迅速引起研究人员的重视。eccDNA从正常基因组中分离或脱落下来,游离于染色体基因组之外,以特殊的方式参与生理或病理过程。随着对eccDNA分子的研究,目前对eccDNA的功能有一定的认识,未来还会有新的发现。2018年,发表于《Trends in Genetics》[3] 一篇综述根据近些年的研究总结了eccDNA的主要功能,如下图所示:
Circle-Map
通过前人的研究可以看出eccDNA在生理或者病理过程中还是很重要的,既然这么重要,那么该如何鉴定呢?下面我们就回到今天的主题,来看看如何鉴定eccDNA。目前,市面上有一些鉴定软件,例如:Circle-Map
[4]、ECCsplorer
[5]、Circle_finder
等,而我们今天要说的主角就是Circle-Map
,该软件由python3编写,安装和使用都很方便,并且生成的结果也很简洁明了。
- 软件安装
可以直接使用pip命令直接安装,完成后即可在命令行使用Circle-Map
命令,该软件包含以下五个子命令ReadExtractor
、Realign
、bam2bam
、Repeats
、Simulate
,鉴定eccDNA主要使用前两个命令即可。
pip install Circle-Map
- index准备
Circle-Map的输入文件是bwa
生成的bam,在使用bwa
比对前需要构建index,以及后续步骤会使用到参考基因组的fasta,需要用samtools对fasta建index:
bwa index hg38.fa
samtools faidx hg38.fa
- mapping
使用bwa
将数据比对到参考基因组上:
bwa mem -q hg38 sample.R1.fastq.gz sample.R2.fastq.gz | samtools view -bS -o sample.raw.bam
- sort
分别准备 reads name 和 chromosome coordinate排序的bam,并对bam建index:
samtools sort -n -o sample.qname.bam sample.raw.sam
#samtools index sample.qname.bam
samtools sort -o sample.sort.bam sample.raw.sam
samtools index sample.sort.bam
- ReadExtractor
接着,使用上一步生成的按reads name排序的bam作为输入,生成包含候选reads的bam,并对生成的bam按chromosome coordinate排序和建立index:
Circle-Map ReadExtractor -i sample.qname.bam -o sample.candidates.bam
samtools sort -o sample.candidates.sort.bam sample.candidates.bam
samtools index sample.candidates.sort.bam
这一步应该会出现类似下面的提示:
[E::idx_find_and_load] Could not retrieve index file for 'sample.qname.bam'
Processed 25000000 reads in 2.764 mins
finished extracting reads. Elapsed time: 2.842184130350749 mins
Thanks for using Circle-Map
可以看到程序还是运行成功了,这个提示可以选择忽略,至于出现Could not retrieve index
提示的原因也很明确,就是没有对bam建索引。那么,既然知道了原因为啥不解决呢?这是因为samtools只能对chromosome coordinate排序的bam建索引,而这里用的是reads name排序的bam,所以还是直接选择忽略这个提示吧!
- Realign
最后,使用前面生成的sample.candidates.sort.bam、sample.qname.bam、sample.sort.bam三个bam文件以及参考基因组的fasta文件作为输入,使用Realign
来鉴定eccDNA:
Circle-Map Realign -i sample.candidates.sort.bam -qbam sample.qname.bam -sbam sample.sort.bam -fasta hg38.fa -o sample.circle.bed
当程序正常运行结束后,会生成bed格式的文件sample.circle.bed,内容如下:
chr7 143911105 143917553 12 7 251.0 29.97115384615385 5.408852146902424 1.0 0.9988734509951184 0.0
注意事项
Circle-Map使用过程还是很简单的,但是使用的时候还是有一些需要注意的点。重点来了!重点来了!重点来了!这个软件(version=1.1.4)有些小bug,如ReadExtractor
命令的输入和输出文件不能带有路径,否则程序会运行出错。这个问题的原因是该软件会自动获取当前的工作路径,然后会将这个路径和输入拼接起来,这样的话,如果你的输入文件不在当前目录就会出现找不到输入文件的错误。那么,想要正常运行:一是在输入文件的目录下运行,二是修改一下源码,可以到模块目录下找到extract_circle_SV_reads.py
文件,将raw_bam = ps.AlignmentFile(self.working_dir + "/" + self.sorted_bam, "rb")
替换为ps.AlignmentFile(self.sorted_bam, "rb")
即可。还有一个需要注意的参数-dir
,这个参数的意义是切换工作路径,如果想要指定输出目录可以用这个参数,不要在输出文件名里面加路径!因为软件也会自动把工作路径和输出文件名拼接起来。不知道出于什么原因,作者要这么设计程序,使用起来感觉怪怪的!
Realign
使用起来也有同样的注意事项,输出跟ReadExtractor
完全一样,而输入只有-sbam
参数的输入bam不能带路径,简单点的解决方法跟上面第一点,在bam文件所在目录运行,二是修改模块文件Coverage.py
里面的代码,将self.bam = ps.AlignmentFile(directory + "/" + sorted_bam, "rb")
替换为self.bam = ps.AlignmentFile(sorted_bam, "rb")
。
结束语
鉴定eccDNA的软件还有其他的选择,比如前面提到的另外两款软件ECCsplorer
、Circle_finder
,对于Circle_finder
本人并没有接触过,这里就不再赘述。不过,ECCsplorer
是本人一开始打算使用的软件,因为这款软件比较新,而且从文章的结果来看比Circle-Map
有优势,并且这个软件的分析内容也较丰富一些,还有就是能生成可视化的网页报告。看完文章的介绍就心动了,确定要用这款软件。让人没有想到的是该软件安装起来就挺费劲,虽然介绍说支持conda
安装,但是用conda
安装一晚上没有啥动静。那只能放弃自动安装,选择手动安装,从安装到能正常使用,过程着实有些不易!最终还是成功安装了,并且用软件自带的数据也成功运行了。本以为可以顺利地分析的数据了,但程序运行过程中还是错误了,有因为内存不足中断的,有卡死的,现场可谓凄凄惨惨戚戚!咱用的服务器集群不算差啊,单个节点24cpu200G内存。可见这款软件对资源要求确实很高,这一点作者倒没有遮掩,在文章末尾也提到了这个局限性。所以,ECCsplorer
没有优化版本前,最好还是不要尝试了,反正本人选择放弃使用了!毕竟,做分析选一款好用的工具可以提高不少的效率啊!
参考资料
-
《Circular ecDNA promotes accessible chromatin and high oncogene expression》 ↩
-
《Functional Enhancers Shape Extrachromosomal Oncogene Amplifications》 ↩
-
Discoveries of Extrachromosomal Circles of DNA in Normal and Tumor Cells ↩
-
https://github.com/iprada/Circle-Map/wiki/Tutorial:-Identification-of-circular-DNA-using-Circle-Map-Realign ↩
-
ECCsplorer: a pipeline to detect extrachromosomal circular DNA (eccDNA) from next‑generation sequencing data ↩
网友评论