日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修改 MrBayes 3.2 源码解决不能恢复断点的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  當數據量較大時,用MrBayes進行計算通常是曠日持久的事情,幾天甚至幾個月。中間如果斷電死機什么的發生就很令人發狂了。于是?MrBayes?3.2 svn 版增加了一個斷點保存的功能,死機后可以從保存的斷點處繼續計算。只要在mcmc命令中加入checkfreq=n (n為保存斷點間隔的代數)參數即可保存斷點;下次從斷點繼續運算時,在mcmc ?命令中加入append=yes參數即可.?

  碰巧的是,前些天不知道誰把我用來計算的那臺服務器的電源碰掉了,我那已經算了20多天的任務啊.....!  想砍人之余又慶幸事前曾經設置了斷點保存??墒钱斘以趍cmc ?命令中加入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

總結

以上是生活随笔為你收集整理的修改 MrBayes 3.2 源码解决不能恢复断点的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。