“Fortran运行时错误:Amber12中的文件结束”

时间:2013-04-18 22:09:32

标签: fortran bioinformatics gfortran

我正在使用用于分子机械力场的amber12软件来模拟生物分子,我按照下一个链接中描述的安装说明Intallation of amber in Mac OS X该程序实际可行但是在尝试执行程序的一部分时软件停止并说

  

Fortran运行时错误:文件结束

1.这就是我的工作,首先访问包含文件的文件夹

N-terminal-2:~ javieralejandrorendoncarrillo$ cd Desktop/amber/Complex1

2.然后设置路径

N-terminal-2:Complex1 javieralejandrorendoncarrillo$ export AMBERHOME=/Users/javieralejandrorendoncarrillo/amber/amber12

3.最后在下一个命令行执行程序:

N-terminal-2:Complex1 javieralejandrorendoncarrillo$ $AMBERHOME/bin/sander.MPI -O -i min.in -o min_complex.out -p complex.prmtop -c complex.inpcrd -r complex_min.crd &
[2] 13377
N-terminal-2:Complex1 javieralejandrorendoncarrillo$ At line 524 of file mdread.F90 (unit = 5, file = 'min.in')
Fortran runtime error: End of file

[2]-  Exit 2                  $AMBERHOME/bin/sander.MPI -O -i min.in -o min_complex.out -p complex.prmtop -c complex.inpcrd -r complex_min.crd
N-terminal-2:Complex1 javieralejandrorendoncarrillo$ 

文件min.in保存在文件夹Complex 1中我正在运行模拟这是min.in

的脚本
Initial minimisation of our complex
 &cntrl
  imin=1, maxcyc=3000, ncyc=2500,
  cut=16, ntb=0, igb=1,
 &end

我该如何解决这个问题?语法错了吗?有谁知道如何执行或者这是什么样的编程语言?

这是我所拥有的gfortran安装的版本

N-terminal-2:~ javieralejandrorendoncarrillo$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin12/4.7.2/lto-wrapper
Target: x86_64-apple-darwin12
Configured with: ../gcc-4.7.2/configure --prefix=/opt/local --build=x86_64-apple-darwin12 --enable-languages=c,c++,objc,obj-c++,lto,fortran,java --libdir=/opt/local/lib/gcc47 --includedir=/opt/local/include/gcc47 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-4.7 --with-libiconv-prefix=/opt/local --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-4.7 --with-gxx-include-dir=/opt/local/include/gcc47/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-ppl=/opt/local --with-cloog=/opt/local --enable-cloog-backend=isl --disable-cloog-version-check --enable-stage1-checking --disable-multilib --enable-lto --enable-libstdcxx-time --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --disable-ppl-version-check --with-pkgversion='MacPorts gcc47 4.7.2_2'
Thread model: posix
gcc version 4.7.2 (MacPorts gcc47 4.7.2_2) 

3 个答案:

答案 0 :(得分:10)

我收到了同样的错误消息:..file mdread.F90 (unit = 5, file = 'min_all.in')..

在调查此问题时,我出于某种原因发现将 min_all.in 文件中的ntpr=5更改为6可以解决问题:

 &cntrl
  imin=1, maxcyc=200,
  ntpr=6,
 &end

对于这些东西,不是抽屉里最锋利的刀,我很难看到为什么这样才能解决它。

ntpr值仅定义轨迹坐标应发送到外部文件的频率,在这种情况下每6步而不是每5步。

答案 1 :(得分:2)

扩展评论而不是答案。您获得的错误消息的两个常见原因,即

At line 524 of file mdread.F90 (unit = 5, file = 'min.in') Fortran runtime error: End of file

  1. 正在读取的文件不是程序正在查找的位置。
  2. 程序尝试从文件中读取比文件包含的更多数据。
  3. 根据您发布的内容,似乎(1)不太可能,但您可以通过在打开文件之前插入INQUIRE语句检查文件的存在来检查。或者,您可以在文件STATUS='old'语句中使用OPEN关键字(和值),如果文件不存在,程序将报告错误。

    至于(2),你几乎都是靠自己。这里没有人(除非你非常幸运)很可能知道你的程序期望从输入文件中读取什么,并且你没有发布任何相关的代码。您可能需要修改文件READ语句,以包含END=关键字参数来清除错误源。

    我认为Amber12的供应商本身可能比SO社区更了解他们的代码;你的问题会更好地针对他们。

    我觉得这个问题与你正在使用的编译器无关。

答案 2 :(得分:1)

'&end'或'/'行不应是输入脚本中的最后一行。在“&end”或“ \”行之后使用新的空行,以您所使用的为准。 这为我解决了这个问题。