Dear Py-ChemShell developers, I had a run-time problem with the latest beta version (21.0.2) of Py-ChemShell.
I assumed that the --debug flag used after command “$chemshell_root/bin/$arch chemshell.py > chemshell.out” would not affect the output of the whole package. However, when I use --debug 2, ChemShell exit normally, while using --debug 3 (more clearly when n>=3 in “–debug n”) causes ChemShell ending with error.
I compiled parallel version of the package with latest Intel® oneAPI toolkits (Base & HPC Toolkit) on Ubuntu 22.04.1 LTS platform. Python version is 3.10.6 (latest version from apt-get tool). Version for NWChem and Gulp are 7.0.2 and 5.2, respectively. I use some of the input files in $chemshell_root/tests/qmmm/nwchem-gulp/ directory.
Here is the file list:
chemshell.py (Renamed from mgo25_shells_sepecp.py)
mgo25_explicit.pun
mgo_2body.ff
mgo.basis
mgo_sepecp.ecp
Here is the command for my test (where n=2, 3):
source /opt/intel/oneapi/setvars.sh > /dev/null
chemshell_root=/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2
exe=$chemshell_root/bin/intel/chemsh
$exe -np 32 --debug $n chemshell.py > chemshell.out
Here is the output in chemshell.out for n=2:
#......
----------------------------------------------------------------------
ChemShell parallel environment initialised
Number of MPI processes : 32
----------------------------------------------------------------------
#......
======================================================================
ChemShell Test Utility
======================================================================
No tolerance specified so default used.
Tolerance : 0.000001000
Calculated: -110.473369557
Reference : -110.473369550
Deviation : -0.000000007
----------------------------------------------------------------------
Test passed
----------------------------------------------------------------------
ChemShell exiting normally.
>>> Executing command: mpirun -n 32 /home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/bin/intel/chemsh.x -nwg 1 -npmm 0 -gm 1024 -dbg 2 chemshell.py
Here is the output in chemshell.out for n=3:
#......
----------------------------------------------------------------------
ChemShell parallel environment initialised
Number of MPI processes : 32
----------------------------------------------------------------------
#......
>>> (DEBUG) c c_exec_function: master code 0
>>> NWChem run successfully.
>>> Peak memory used by procedure chemsh.base.run.run: 236.609 MB
>>> Elapsed time of procedure chemsh.interfaces.qm.run: 0.775 sec
Applying charge shift to (QMMM.frag indices):
[]
+----------------------------+
| ChemShell/GULP Interface |
+----------------------------+
>>> _MM.run(): cmdpath has been determined to be: <CDLL '/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/build/intel/lib/libgulp.so', handle 7f4b8eeb4090 at 0x7f4a6740a1d0>
by path =
by linked lib = <CDLL '/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/build/intel/lib/libgulp.so', handle 7f4b8eeb4090 at 0x7f4a6740a0e0>
by _syscmd = gulp
>>> ChemShell Parallel module: debug level = 3
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=1, pf=6
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=2, pf=6
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=3, pf=6
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=4, pf=6
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=5, pf=6
>>> (DEBUG) c_exec_function: locating function in table... pf->handle=6, pf=6
>>> (DEBUG) c c_exec_function: start master exec
>>> (DEBUG) c c_exec_function: master code 0
>>> chemsh.x ERROR: Failed running chemshell.py
ValueError: could not convert string to float: 'Gulp'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/io/files/punch.py", line 124, in parse
databuff = loadtxt(pun, dtype=dt, skiprows=1)
File "/home/xxxxx/.local/lib/python3.10/site-packages/numpy/lib/npyio.py", line 1338, in loadtxt
arr = _read(fname, dtype=dtype, comment=comment, delimiter=delimiter,
File "/home/xxxxx/.local/lib/python3.10/site-packages/numpy/lib/npyio.py", line 999, in _read
arr = _load_from_filelike(
ValueError: could not convert string 'Gulp' to float64 at row 0, column 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "chemshell.py", line 48, in <module>
sp.run()
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/miscutils.py", line 122, in wrapper
result = proc(*args, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/tasks/sp.py", line 85, in run
self.theory.run(_gradients=self.gradients, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/miscutils.py", line 143, in wrapper
result = proc(*args, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/interfaces/qmmm.py", line 861, in run
shells.relaxShells(self, dryrun=dryrun)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/miscutils.py", line 122, in wrapper
result = proc(*args, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/hybrid/shells.py", line 91, in relaxShells
ierror = qmmmObj.mm.run(_shells=True, dryrun=dryrun)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/miscutils.py", line 122, in wrapper
result = proc(*args, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/interfaces/mm.py", line 150, in run
ierror = run.run(self, cmdpath, stderr=self.logger, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/miscutils.py", line 143, in wrapper
result = proc(*args, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/base/run.py", line 216, in run
ierror = selectcases[type(cmdpath)](theory, cmdpath, options=options, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/base/run.py", line 174, in runLib
theory.parseOutput()
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/interfaces/mm.py", line 111, in parseOutput
self.parseAdditionalOutput()
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/interfaces/gulp/__init__.py", line 351, in parseAdditionalOutput
self._result.energy = fileutils.getArrayFromFile(selectcases[task], 'punch', (1,1))[0]
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/utils/fileutils.py", line 187, in getArrayFromFile
abuff = file.parse(filename, fmt, receiver=abuff, regex=regex, number_only=number_only)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/io/file.py", line 99, in parse
returned = selectcases[fmt.lower()](filename, _regex=regex, receiver=receiver, **kwargs)
File "/home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/chemsh/io/files/punch.py", line 133, in parse
intrusive = str(emessage).split(':')[1].strip()
IndexError: list index out of range
>>> Executing command: mpirun -n 32 /home/xxxxx/softwares/chemshell/chemsh-py-21.0.2/bin/intel/chemsh.x -nwg 1 -npmm 0 -gm 1024 -dbg 3 chemshell.py
>>> Parallel run failed. Exiting...
“ValueError: could not convert string to float: ‘Gulp’” should be important. But since I’m not very familiar with Python code, I hope you can help me figure it out. Any additional output or compiling details will be given if needed.
Thank you!