python基础----动态生成类
type()函数用于动态生成类type()总传递三个参数时为生成类type(name, bases, dict) name -- 类的名称。bases -- 基类的元组。dict -- 字典,类内定义的命名空间变量。
在从头组装过程中,确定基因组的scaffolds/contig的顺序和朝向是重建染色体非常关键的一步。这一步可以由多种辅助组装策略完成:例如遗传图谱, Hi-C, BioNano光学图谱,10X Chicago 。
一个物种可能会有多个遗传图谱,可以是不同项目中的不同定位群体结果,可以是不同软件如R/QTL, MSTMAP和JOINMAP的分析结果。遗传图谱会因重组率,偏分离(segregation distortion) , PAV(presence-absence variation)和染色体比对多态位点不同而发生变化。每一种图谱都能够提供不同的证据,举个例子,一个scaffold可能在一个图谱中无法被锚定,但是在另一个图谱中可以进行锚定,将这些图谱进行整合就能提最后染色体组装的精确度。
如果只用一个图谱,对scaffold进行排序只是计算量大一点而已,你需要根据图谱中分子标记在每个scaffold的平均距离进行排序就行。ALLMAPS, 正如名字说的那样,就是能够使用所有的图谱证据的工具,它能够计算scaffold的朝向,使其和已有的图谱的共线性关系最大化。他有如下亮点:
通常,解决scaffold顺序和朝向(OO)是一种NP问题。因为基因组组装和遗传图谱中都可能存在一些错误,我们的目标只能是找到一个近似解。ALLMAPS将该问题转换成旅行商问题,然后用遗传算法优化scaffold OO. 使用遗传算法优化是为了避免在局部最优上出现瓶颈。遗传图谱最常见的错误是倒置和异位(inversion and translocation)
安装可以用CONDA。
conda install jcvi
先现在一个测试数据集,用于练习了解软件的总体流程。比较尴尬的是,这个数据集放在了Dropbox上,我们都知道这是一个国内不存在的网站,所以我把他转存到了我的腾讯微云上,链接:https://share.weiyun.com/5nwjljN .
第一步:准备输入文件。 首先你得要提供物理图谱和遗传图谱的对应关系,格式为
Scaffold ID, scaffold position, LG, genetic position
你可以在excel表格中进行操作,然后另存为csv为文件,如下所示。你可以发现有一些scaffold里就只有一个遗传标记进行对应,你可以思考下该scaffold最后会如何处理
当然,我们解压缩后的zip文件里就有这些内容,你可以用一些命令工具(less, head, tail)看下数据是如何存放的。
第二步: 将两个图谱进行合并,最后会得到一个权重文件(weights.txt)和输入的bed文件
python -m jcvi.assembly.allmaps merge JMMale.csv JMFemale.csv -o JM-2-test.bed
第三步:对权重文件"weights.txt" 进行调整。weights.txt默认每个输入的图谱的权重都是1。 作者有一个建议就是,你通过检查最后的报告和诊断图,有监督地来重新对每个遗传图谱进行权重赋值。
$ cat weights.txt
JMFemale 1
JMMale 1
第四步: 对scaffold进行排序,搭建成准染色体水平
python -m jcvi.assembly.allmaps path -w weights.txt JM-2-test.bed scaffolds.fasta
上面第四步会在当前文件夹下生成许多结果文件,
JM-2-test.agp
JM-2-test.bed
JM-2-test.chain
JM-2-test.chr.agp
JM-2-test.chr.fasta
JM-2-test.fasta
JM-2-test.fasta.sizes
JM-2-test.lifted.bed
JM-2-test.summary.txt
JM-2-test.tour
JM-2-test.unplaced.agp
JM-2-test.unplaced.fasta
可以分为如下几类
首先是组装后的基因组序列
lifOver转换到新坐标系下然后可视化报告。每个染色体都会得到一个对应的pdf文件,可视化展示如下:左图主要关注交叉的线,表示某些marker存在矛盾。右图关注是否有单上升/下降趋势,图中的斜率反应的是物理距离(x轴)相对遗传距离(y轴)的变化,可以认为是重组率。低重组率不容易确定在同一个重组区间内的scaffold的位置和朝向
白色部分为可信区间,灰色部分是存疑区间。
除了默认的输出外,你还可以通过movie得到软件运行过程每次迭代后组装情况,不过要额外安装ffmpeg和parallel
python -m jcvi.assembly.allmaps movie -w weights.txt JM-2-test.bed scaffolds.fasta chr23
最后是总结性报告。尽管可视化会给你比较直观的结果,但是具体的参数还是要看JM-2-test.summary.txt. 例如遗传标记的密度,以及有多少序列被锚定到基因组上。
当然ALLMAPS还有一些比较高级的操作:
split进行拆分。estimategaps。光学图谱在着丝粒区间表型不好,主要是里面的串联重复过多,使得限制性内切酶数目减少,遗传图谱中在这个区域依旧有比较多的标记
局限性:
参考资料:
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。