修改 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-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-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
修改 MrBayes 3.2 源码解决不能恢复断点的问题相关推荐
- C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码...
原文:C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github. ...
- 31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库
31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boo ...
- zookeeper源码分析之恢复事务日志
zookeeper源码分析之恢复事务日志 前言 源码分析 查看事务日志命令 总结 前言 本文是基于zookeeper集群启动过程分析(https://blog.csdn.net/weixin_4244 ...
- Python 技术篇 - 修改源码解决中文主机名导致的flask、socket服务起不来问题: ‘utf-8‘ codec can‘t decode byte 0xc0 in position...
由于主机名为中文导致的 flask 服务起不来,报错如下: File "D:\work\python3.9_64\lib\socket.py", line 791, in getf ...
- 使用pdfBox实现pdf转图片出现中文方块乱码 简单修改源码解决
参考文章 问题排查:使用pdfbox将pdf转image时STSong-Light字体中文乱码 pdfbox版本是2.0 日志中打印出类似这样的日志(例:Using fallback XXX for ...
- es修改IK分词器源码 mysql热词动态更新(报错解决x3)
最近在公司遇到的一个问题,给elasticsearch配置ik热部署mysql词库. 我是参照下面这个博客来做的 https://www.cnblogs.com/xiaoxiaoliu/p/11218 ...
- django-oscar的物流状态pending修改以及分析源码解决报错:The new status 'xxx' is not valid for this order
先说物流状态的修改: django-oscar自带的物流状态是四个: OSCAR_INITIAL_ORDER_STATUS = 'Pending' OSCAR_INITIAL_LINE_STATUS ...
- 【咸鱼教程】置于后台停止计时,修改引擎源码解决。
一 调试环境 二 修改引擎 三 弊端 一 调试环境 环境: 引擎版本4.0.3 原因是tween.timer等使用的心跳计时器starttick,都是优先检查window的request ...
- 【转载保存】修改IK分词器源码实现动态加载词典
链接:http://www.gongstring.com/portal/article/index/id/59.html 当前IKAnalyzer从发布最后一个版本后就一直没有再更新,使用过程中,经常 ...
最新文章
- Lambda 表达式基础理论与示例
- 界面怎么使用pip_从零开始学Python——10Pyinstaller的使用
- 互联网产品mysql数据库设计总结
- eclipse中svn插件的安装
- Codeforces 1108 E2(线段树+思维)
- 解决小程序背景图片在真机上不能查看的问题
- 系统学习机器学习之增强学习(一)--模型基础
- 小白都能了解的聚类算法之四(谱聚类)
- Java前端和后端的区别
- 我的保研之路-哈工大计算机,中科院信工所,复旦大数据学院
- Typora数学公式总结
- 柯桥在PPT中如何制作翻书动画?
- 笔记本电脑怎么打不开计算机,笔记本电脑打不开了怎么办
- 抄袭/模仿/致敬的那些事:从《以父之名》说起(转)
- html语言设置网页背景,HTML+CSS入门 设置网页中的背景图片的5个属性
- MacBook Pro 一月使用体验
- QQ中的相关文件功能
- shell脚本一键安装jdk(三台)
- BearPi_HM Nano开发板环境搭建踩坑
- Poj·Dessert