一、问题描述
在添加水分子后,top文件的分子个数和类型会被添加到新的top文件中。
gmx solvate -cp F:\biosoftware\gromacs\MD\clyl\clyl_box.gro -cs F:\biosoftware\gromacs\gmx2020.3_GPU\bin\spc216.gro -p F:\biosoftware\gromacs\MD\clyl\clylc.top -o F:\biosoftware\gromacs\MD\clyl\clyl_water.gro
然而运行添加水分子的代码后,出现如下报错:
Number of solvent molecules: 22928
Processing topology
Adding line for 22928 solvent molecules with resname (SOL) to topology file (F:\biosoftware\gromacs\MD\clyl\clyl.top)
Back Off! I just backed up F:\biosoftware\gromacs\MD\clyl\clyl.top to F:\biosoftware\gromacs\MD\clyl/#clyl.top.1#
GROMACS reminds you: "No matter how important you are, you are not as important as lunch." (Randy Pausch)
有意思的是同样的程序换到有些服务器上又完全没有问题,而且是同样的windows系统。
二、解决方案
1.将上述添加水分子的代码写成test.bat文件后,放在D盘(与输出文件不同的磁盘(F:))中,双击运行后出现以下结果,输出文件中没有形成新的top文件,旧的top文件名改为#旧top文件名.1#
通过细心观察我们发现在test.bat所在文件夹中生成了一个临时文件temp.topa02584,打开后我们发现其内容是top文件,也就是说本该出现在F盘的top文件,搁浅在D盘了。
2.将上述添加水分子的代码写成test.bat文件后,放在E盘(与输出文件不同的磁盘(F:))中,双击运行后出现以下结果,输出文件中没有形成新的top文件,旧的top文件名改为#旧top文件名.1#
同样我们发现在test.bat所在文件夹中生成了一个临时文件temp.topa13272。
3.继续尝试,将上述添加水分子的代码写成test.bat文件后,放在F盘(与输出文件相同的磁盘(F:))中,双击运行后出现以下结果,输出文件中形成新的top文件,旧的top文件名改为#旧top文件名.1#
同样G盘我们也尝试了,出现了与D、E相同的情况。具体就不赘述了。
5.继续尝试,将上述添加水分子的代码写成test.bat文件后,放在C盘(与输出文件相同的磁盘(F:))中,双击运行后出现以下结果,输出文件中形成新的top文件,并直接覆盖旧的top文件,这种情况使我们最希望看到的,即生成符合要求的top文件,又不会产生带#号的废弃文件。
三、总结
top文件不能生成的问题困扰了我2年之久,之前也是通过手动修改,或者添加python代码解决。但是每次在不同系统或者电脑上需要修改路径等等问题,感觉有点麻烦,亦或者是安装linux的版本的gromacs,也算是能解决。但在windows上存在的这一问题,令我如鲠在喉,今天算是彻底知道问题所在了。
显然代码所在路径的权限对于新文件的生成迭代是有显著影响的,这就是为什么有些软件指定在C盘安装,这样他就有了完全的权限,不会影响后续程序的运行。我们的这个代码也是一样,为了bat文件能正常运行,我们可以将bat文件置于C盘,或者将bat文件放到和输出文件相同的储存盘,这样就不影响top文件的生成以及后续代码的运行。