jjzjj

Circle-Map 保姆级教程

生信店小二 2023-10-17 原文

前言

  染色体外环状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编写,安装和使用都很方便,并且生成的结果也很简洁明了。

  1. 软件安装
      可以直接使用pip命令直接安装,完成后即可在命令行使用Circle-Map命令,该软件包含以下五个子命令ReadExtractorRealignbam2bamRepeatsSimulate,鉴定eccDNA主要使用前两个命令即可。
pip install Circle-Map
  1. index准备
      Circle-Map的输入文件是bwa生成的bam,在使用bwa比对前需要构建index,以及后续步骤会使用到参考基因组的fasta,需要用samtools对fasta建index:
bwa index hg38.fa
samtools faidx hg38.fa
  1. mapping
    使用bwa将数据比对到参考基因组上:
bwa mem -q hg38 sample.R1.fastq.gz sample.R2.fastq.gz | samtools view -bS -o sample.raw.bam
  1. 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
  1. 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,所以还是直接选择忽略这个提示吧!

  1. 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的软件还有其他的选择,比如前面提到的另外两款软件ECCsplorerCircle_finder,对于Circle_finder本人并没有接触过,这里就不再赘述。不过,ECCsplorer是本人一开始打算使用的软件,因为这款软件比较新,而且从文章的结果来看比Circle-Map有优势,并且这个软件的分析内容也较丰富一些,还有就是能生成可视化的网页报告。看完文章的介绍就心动了,确定要用这款软件。让人没有想到的是该软件安装起来就挺费劲,虽然介绍说支持conda安装,但是用conda安装一晚上没有啥动静。那只能放弃自动安装,选择手动安装,从安装到能正常使用,过程着实有些不易!最终还是成功安装了,并且用软件自带的数据也成功运行了。本以为可以顺利地分析的数据了,但程序运行过程中还是错误了,有因为内存不足中断的,有卡死的,现场可谓凄凄惨惨戚戚!咱用的服务器集群不算差啊,单个节点24cpu200G内存。可见这款软件对资源要求确实很高,这一点作者倒没有遮掩,在文章末尾也提到了这个局限性。所以,ECCsplorer没有优化版本前,最好还是不要尝试了,反正本人选择放弃使用了!毕竟,做分析选一款好用的工具可以提高不少的效率啊!

参考资料


  1. 《Circular ecDNA promotes accessible chromatin and high oncogene expression》

  2. 《Functional Enhancers Shape Extrachromosomal Oncogene Amplifications》

  3. Discoveries of Extrachromosomal Circles of DNA in Normal and Tumor Cells

  4. https://github.com/iprada/Circle-Map/wiki/Tutorial:-Identification-of-circular-DNA-using-Circle-Map-Realign

  5. ECCsplorer: a pipeline to detect extrachromosomal circular DNA (eccDNA) from next‑generation sequencing data

有关Circle-Map 保姆级教程的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  3. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  4. ruby - 在 ruby​​ 中使用 .try 函数和 .map 函数 - 2

    我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法

  5. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  6. ruby - 不能将 `each` 的所有或大多数情况替换为 `map` 吗? - 2

    Enumerable#each和Enumerable#map的区别在于返回的是接收者还是映射后的结果。回到接收者是微不足道的,你通常不需要在each之后继续一个方法链,比如each{...}.another_method(我可能没见过这样的案例。即使你想回到接收者那里,你也可以通过tap来实现)。所以我认为所有或者大部分使用Enumerable#each的情况都可以用Enumerable#map代替。我错了吗?如果我是对的,each的目的是什么?map是否比each慢?编辑:我知道当您对返回值不感兴趣时​​使用each是一种常见的做法。我对这种做法是否存在不感兴趣,但感兴趣的是,除了从

  7. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  8. ruby - `map` 比 `each` 快吗? - 2

    map遍历数组是否比each更快?两者有速度差异吗?mapresult=arr.map{|a|a+2}每个result=[]arr.eachdo|a|result.push(a+2)end 最佳答案 我认为是的。我试过这个测试require"benchmark"n=10000arr=Array.new(10000,1)Benchmark.bmdo|x|#Mapx.reportdon.timesdoresult=arr.map{|a|a+2}endend#Eachx.reportdon.timesdoresult=[]arr.each

  9. ruby - 用于 Ruby 哈希的 map_values()? - 2

    我想念Ruby中的Hash方法来仅转换/映射散列值。h={1=>[9,2,3,4],2=>[6],3=>[5,7,1]}h.map_values{|v|v.size}#=>{1=>4,2=>1,3=>3}你如何在Ruby中归档它?更新:我正在寻找map_values()的实现。#moreexamplesh.map_values{|v|v.reduce(0,:+)}#=>{1=>18,2=>6,3=>13}h.map_values(&:min)#=>{1=>2,2=>6,3=>1} 最佳答案 Ruby2.4引入了方法Hash#tran

  10. ruby - 了解 Ruby Enumerable#map(具有更复杂的 block ) - 2

    假设我有一个函数defodd_or_evennifn%2==0return:evenelsereturn:oddendend我有一个简单的可枚举数组simple=[1,2,3,4,5]然后我用我的函数在map中运行它,使用一个do-endblock:simple.mapdo|n|odd_or_even(n)end#=>[:odd,:even,:odd,:even,:odd]如果不首先定义函数,我怎么能做到这一点?例如,#doesnotworksimple.mapdo|n|ifn%2==0return:evenelsereturn:oddendend#Desiredresult:#=>[

随机推荐