修改 MrBayes 3.2 源码解决不能恢复断点的问题

  当数据量较大时,用MrBayes进行计算通常是旷日持久的事情,几天甚至几个月。中间如果断电死机什么的发生就很令人发狂了。于是 MrBayes 3.2 svn 版增加了一个断点保存的功能,死机后可以从保存的断点处继续计算。只要在mcmc命令中加入checkfreq=n (n为保存断点间隔的代数)参数即可保存断点;下次从断点继续运算时,在mcmc  命令中加入append=yes参数即可. 

  碰巧的是,前些天不知道谁把我用来计算的那台服务器的电源碰掉了,我那已经算了20多天的任务啊.....!  想砍人之余又庆幸事前曾经设置了断点保存。可是当我在mcmc  命令中加入append=yes参数以恢复运算时,不幸的事还是发生了,MrBayes报错并停止:A maximum of 2000 characters is allowed on a single line, The longest line of the file  xxx contains at least one line with 58000 characters.   当时就有欲哭无泪的感觉啊。稍稍平复一下心情,决定还是从程序的源代码查起吧,希望不是一个与算法有关的大bug(小修小改能搞定,跟算法有关的话短时间就没办法搞了)!拿出错消息grep一下所有的源文件,发现问题在这里: 

trunk/src/command.c-3211-    /* find length of longest line */
trunk
/src/command.c-3212-    longestLineLength = LongestLine (fp);
trunk
/src/command.c-3213-    MrBayesPrint ("%s   Longest line length = %d\n", spacer, longestLineLength);
trunk
/src/command.c-3214-    longestLineLength += 50;
trunk
/src/command.c-3215-    
trunk
/src/command.c:3216:    /* check that longest line is not longer than CMD_STRING_LENGTH */
trunk
/src/command.c:3217:    if (longestLineLength >= CMD_STRING_LENGTH - 100)
trunk
/src/command.c-3218-        {
trunk
/src/command.c:3219:        MrBayesPrint ("%s   A maximum of %d characters is allowed on a single line\n", spacer, CMD_STRING_LENGTH - 100);
trunk
/src/command.c-3220-        MrBayesPrint ("%s   in a file. The longest line of the file %s\n", spacer, inputFileName);
trunk
/src/command.c-3221-        MrBayesPrint ("%s   contains at least one line with %d characters.\n", spacer, longestLineLength);
trunk
/src/command.c-3222-        nErrors++;
trunk
/src/command.c-3223-        }
trunk
/src/command.c-3224-#    if defined (MPI_ENABLED)

 

  原来最长行的字符数被 CMD_STRING_LENGTH 所限制。grep搜CMD_STRING_LENGTH,在mb.h中找到:

trunk/src/mb.h-250-#define OMEGA_MAX 1000000.0f
trunk
/src/mb.h-251-
trunk
/src/mb.h-252-#define POS_INFINITY 1E25f;
trunk
/src/mb.h-253-#define NEG_INFINITY -1000000.0f
trunk
/src/mb.h-254-
trunk
/src/mb.h:255:#define CMD_STRING_LENGTH 200000
trunk/src/mb.h-256-

 

  原来 CMD_STRING_LENGTH 被限制到了20000,该值已经大大不能符合我的数据要求了。于是操刀将其放大10倍,改为200000。重新编译MrBayes, 再次从断点处回复执行, OK,熟悉的计算过程又回来了。20多天的计算总算没白费。

 

转载于:https://www.cnblogs.com/agateriver/archive/2010/05/31/1748373.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】ubuntu下为APT设置代理

转自:https://blog.csdn.net/lwbeyond/article/details/8431927 Ubuntu下为APT设置代理一.最简单的方法 图形界面方法:新立得软件包管理器-->设置-->首选项-->网络。 进行设置代理就可以了。二.编辑命令 方法1:验证通过 如果您 希望…

wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。 设备中断的起始编号即wince预定义的设备中断ID的基值 SYSINTR_DEVICES EQU 8 一共支持64个设备中断 SYSINTR_MAX_DEVICES EQU 64 可用的设备…

Regular Expression

Reference: 正则表达式三十分钟入门: http://deerchao.net/tutorials/regex/regex.htm 在线测试工具: regexlib(http://regexlib.com/default.aspx) 吐血推荐,比较狠的一个工具: Expresso &…

【转】vsftp配置实例-虚拟用户锁定目录

转自: vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

顺丰快递,果然不一般!

2010-06-03 18:27:03快件到达北京集散点 2010-06-03 19:15:41快件离开北京集散点 发往北京集散中心 2010-06-03 21:05:34快件到达北京集散中心 2010-06-03 21:06:12快件离开北京集散中心 发往深圳集散中心 2010-06-04 02:56:29快件到达深圳集散中心 2010-06-04 02:57:04快件离开…

windowsCE异常和中断服务程序初探(-)

1。中断/异常相量的装入和执行方式。 中断和异常都是异步发生的事件,当该事件发生,系统将停止目前正在执行的代码转而执行事件响应的服务程序。而事件服务程序的入口点就是中断/异常向量所在的位置。arm的中断向量可以是0x0开始的低地址向…

windowsCE异常和中断服务程序初探(=)

继续上次的内容,在上次的分析中我们已经对SWI,FIQ,IRQ的流程有了一个大概的认识,下面继续对DataAbort和PrefetchAbort以及公共分发程序CommonHandler进行一下认识,完整异常处理的流程。 2-4 DataAbort服务程序 由数据异常触发&…

【转】Linux中tty、pty和pts概念及区别

转自:Linux中tty、pty和pts概念及区别 - 知乎 基本概念 ①tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是一种通过串行线连接键盘和打印机进行发送、阅读信息的设备,后来…

Microsoft Jet SQL 参考在线手册

http://www.weste.net/book/sql/转载于:https://www.cnblogs.com/cwfsoft/archive/2010/06/19/1760961.html

Windows CE下驱动程序开发基础

我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单讲一讲驱动开发的基础知识。…

【转】高端球管使用了哪些高科技?

转自:高端球管使用了哪些高科技? 本文来源:第三方维修平台 本文作者:RepairCT 随着人类发现X射线,这项技术不断应用到医学领域,比如X光机、DR、CT、乳腺钼靶等医疗设备,它们的主要核心均是利用…

关于代码组织的一些看法(上)

今天看了一个篇关于架构的文章,略有所感,记录一下。 软件的架构基本是从一个原始需求出发,逐步构建可维护、更灵活的开发框架的过程,在这个构建过程中可能会逐渐的增加代码的复杂度来满足灵活性的要求,从这个层面来讲&…

CE下基于Zylonite硬件平台的SD卡驱动开发

摘要:本文结合实际项目(一款以WINCE为操作系统内核的GSM/PHS双模智能手机)对嵌入式系统Windows CE5.0的底层驱动(SD卡)的架构进行了分析和研究,以MARVELL公司提供的基于INTEL Zylonite硬件平台的BSP为基础&…

【转】svn详解

转自:svn status详解 - 世界,太精彩 - 博客园 svn 是在提交前查看本地文本和版本库里面的文件的区别。返回值有许多种具体含义如下: L abc.c # svn已经在.svn目录锁定了abc.c M bar.c # bar.c的内…

outofmemory异常如何解决?

一年多来打交道最多的就是WinForm,界面设计确实比MFC容易多了,但是问题出的也更隐晦,要想完全解决还是离不开框架底层的知识。 现在又遇到了一个麻烦的问题:切换界面时,有时GroupBox(里面嵌有ListView&…

pthread-win32在VC2005下的使用

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属…

【转】apt命令

转自:apt命令详解 - 简书 apt命令可以说是Ubuntu系统下最为重要的命令,安装、更新、卸载软件,升级系统内核都离不开apt命令。 一、apt的简介 apt的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。 最初的时候&#xff…

asp.net 之高速缓存

一、输出高速缓存 页面顶部插入&#xff1a; <% OutputCache Duration"60" VaryByParam"None" %> <% OutputCache Duration"60" VaryByParam"id;page" %> 二、部分页面高速缓存 (UserControl) <% OutputCache Durati…

【转】在 Bash 中使用 -exec 选项和 find 命令搜索文件

转自&#xff1a;https://www.delftstack.com/zh/howto/linux/linux-find-exec/ 我们可以使用带有 -exec 选项的 find 命令来查找包含我们要搜索的文本的文件。 主要概念是使用 find 命令获取工作目录中的每个文件&#xff0c;并执行 grep 命令查找每个文件中的文本。 例子&…

SQL Server 相关create操作语句

创建数据库&#xff1a; create database jylton (namejylt,filenamee:\db\jylt.mdf,size4,filegrowth100%,maxsize1024 )log on(namejylt_log,filenamee:\db\jylt_log.ldf,size4,filegrowth100%)go 1&#xff0c;增&#xff1a;insert into t_user values(wangpeng,19);s 2&a…