rdmcl递归地将同源序列群聚集成正交群。

rdmcl的Python项目详细描述


递归动态马尔可夫聚类

一种识别同源序列中分层正交群的方法

"正形学"是一个用来描述"通过物种形成的同源性"的术语,现在这个概念被广泛用作物种之间共享基因功能的预测因子。从系统学的角度来看,正畸学也代表了一种自然模式,用于连贯地对基因进行分类/命名。当我们进入可预见的未来,当地球上所有物种的基因组都是序列时,对所有基因的进化历史进行分类并以合理的方式给它们贴上标签将是非常重要的。已经作出了相当大的努力,以编程的方式识别正交记录,从而产生了优秀的软件解决方案和几个大型的公共数据库,用于基因组规模的预测。然而,目前缺少的是对特定基因家族进行精细分析的便捷方法。

从本质上讲,rd-mcl是传统的基于马尔可夫聚类的正交组预测算法的扩展,这种算法有三个关键的区别:

  1. 用于描述序列相关性的相似性度量是基于多序列比对的,而不是基于成对序列比对或blast。这显著提高了聚类算法可用信息的质量。
  2. 由"膨胀因子"和"边缘相似阈值"控制的马尔可夫聚类算法的适当粒度是动态确定的。这与几乎所有其他方法形成了对比,在这些方法中,默认参数从一开始就被选择,并且不加区别地强加给所有数据集。
  3. 序列直系群之间进化速率的差异是通过递归聚类轮来解释的。
  4. < > >

入门

单击此处可获得完整的用例教程

rd-mcl托管在python包索引上,因此获得软件和大多数依赖项的最简单方法是通过 pip

$: pip install rdmcl
$: rdmcl -setup

如果您在第一次使用它之前不运行'-setup',程序会有问题,请确保您这样做。

rd-mcl的输入是一个序列文件,它位于许多受支持的格式中的任何一种格式中e的前缀是有机体标识符。例如:

>ath-At4g02970
MNVYIDTETGSSFSITIDFGETVLEIKEKIEKSQGIPVSKQILYLDGKALEDDLHKIDYM
ILFESRLLLRISPDADPNQSNEQTEQSKQIDDKKQEFCGIQDSSESKKITRVMARRVHNI
YSSLPAYSLDELLGPKYSATVAVGGRTNQVVQPTEQASTSGTAKEVLRDSDSPVEKKIKT
NPMKFTVHVKPYQEDTRMIHVEVNADDNVEELRKELVKMQERGELNLPHEAFHLLGLGSS
ETCPHQNRSEEPNQCPTILMSPHGLQAIVT
>cel-CE08215_2
QIFVKVLGVSYAFKIHREDTVFDIKNDIEHRHDIPQHSYWLSFSGKRLEDHCSIGDYNIQ
KSSTITMYFRSG
>cel-CE16986
MKATTVKENEVKDDRKLSLNEMLRKRCLQVKNTKMKNSSMPKFQYFVRLNGKTRTLNVNA
SDTVEQGKMQLCHNARSTRMSYGGKPLSDQITFGEYNISNNSTMDLHFRI
>hsa-Hs20473312
MQIFVKTLTGKTITLEVEPSDTIENVKAKIQGKEGIPPDQQRLIFAGKQLEDGRTLSDYN
IQKESTLHLVLRLLVVLRKGRRSLTPLPRRISTRERRLSWLS
>sce-YDR139c
MIVKVKTLTGKEISVELKESDLVYHIKELLEEKEGIPPSQQRLIFQGKQIDDKLTVTDAH
LVEGMQLHLVLTLRGGN

以上是 kog001 ,来自拟南芥(ath)、香菇(cel)、人(hsa)和酵母(sce)。请注意将每个标识符与基因名分隔开的连字符(-)。这很重要!确保任何基因名中都没有假连字符,如果由于某种原因不能使用连字符,请使用 -ts 标志设置分隔字符。

一旦序列命名正确,只需将其传递到rdmcl:

$: rdmcl your_seq_file.fa

将创建一个新目录,其中包含与运行相关的所有工具,包括"final_clusters.txt"文件,这可能是您最感兴趣的结果。

有几个参数可以修改;使用 :$rdmcl-h 获取它们的列表。它们也在wiki中单独描述。

2017年进化论讲座视频

我将讨论rd-mcl的基本原理和高级实现细节

evolutionvid

在集群上分发rd-mcl

在搜索mcl参数空间时,d-mcl将并行化all-by-all图的创建。一旦创建了一个图,它就被保存在数据库中,从而防止在以后再次识别同一个集群时重复"艰难"的工作。这意味着给定运行的计算负担在运行开始时往往很高,并随着时间的推移而减少。

要在"硬"部分跨多个节点展开工作,请使用与rd-mcl捆绑在一起的脚本启动worker

$: launch_worker --workdb <path/to/desired/directory>

默认情况下, 启动工作进程 将使用它可以找到的所有核心,因此要么隔离整个节点,要么传入 –max-cpu 标志来限制它。我一次运行了多达100个工人,但请注意,这种压力可能会导致一些不稳定(例如,队列中的作业丢失和主线程冻结)。20名工人通常是安全的。

接下来,启动rd-mcl,并将workdb标志设置为您为启动工作者指定的相同路径:

$: rdmcl --workdb <path/to/same/directory/as/launch_worker>

RD-MCL现在将其昂贵的全部工作发送到队列中,等待其中一个工人进行计算。您可以通过在与工作程序相同的目录中运行监视器脚本来跟踪工作程序有多忙:

$: monitor_dbs

Press return to terminate.
#Master  AveMhb   #Worker  AveWhb   #queue   #subq   #proc   #subp   #comp   #HashWait #IdWait  ConnectTime
2919.0     1651.0     136222122925250.01

此外,您可以将任意数量的rd-mcl作业发送到同一工作池,没有问题。

参考文献

1 Fitch,W.M. 区分同源蛋白质和类似蛋白质 系统化。缩放。 19 ,99–106(1970年)。

2 Gabaldón,T.和Koonin,E.V. 基因正畸学的功能和进化意义 自然评论。遗传学。 14 ,360-366(2013年)。

3 Koonin,E.V. 正畸、副记录和进化基因组学 遗传学年度回顾。 39 ,309-338(2005年)。

接触

如果您有任何意见、建议或顾虑,请可以在"问题跟踪"中创建问题,也可以直接与我联系,地址是:steve bond > nih gov

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不可访问配置设计   在java中使用json就像在javascript中一样   java如何屏蔽Android 4.0主密钥   java为什么clickable的预期条件不执行click()?   Azure事件中心:Kafka消费者在java中不轮询任何内容   javajaxb和enum实现接口   java如何在标记下添加ProgressBar和按钮   java如何为对象实现arrayList   使用多重匹配重载java构造方法重载   java使用for循环和if语句搜索帐户   java JPanel在JPanel中添加了顶部填充   IntelliJ将Java项目/模块转换为Maven项目/模块   java如何迭代arraylist中的arraylist   自定义类的java“找不到符号”错误