Pegamoid crashes when reading a second .h5 file
Hi,
First, thank you for this nice orbital viewer. There seems to be an issue when using the "Load file..." button the second time to load a .h5 file (can even be the same one as the one loaded the first time). Pegamoid crashes with the error message shown below.
Traceback (most recent call last):
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 4659, in file_read
self.orbitals = self._fileReadThread.orbitals
^^^^^^^^^^^^^
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 3750, in orbitals
self._orbitals_changed(value)
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 3838, in _orbitals_changed
self.new_box()
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 4908, in new_box
self.boxSize = self.default_box()[0]
^^^^^^^^^^^^
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 4333, in boxSize
self._boxSize_changed(value, old)
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 4341, in _boxSize_changed
self.build_grid()
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 4993, in build_grid
self.update_cache(ngrid)
File "C:\Users\mfleuti\.conda\envs\pega\Scripts\pegamoid.py", line 5113, in update_cache
self._cache_file = np.memmap(os.path.join(self._tmpdir, '{0}.cache'.format(__name__.lower())), dtype=dtype, mode='w+', shape=(sum(self.orbitals.N_bas), npoints))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\mfleuti\.conda\envs\pega\Lib\site-packages\numpy\core\memmap.py", line 229, in __new__
f_ctx = open(os_fspath(filename), ('r' if mode == 'c' else mode)+'b')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: 'C:\\Users\\mfleuti\\AppData\\Local\\Temp\\tmpi79u4cc8\\pegamoid.cache '
This behavior seems to be fixed by changing lines
self._cache_file = np.memmap(os.path.join(self._tmpdir, '{0}.cache'.format(__name__.lower())), dtype=dtype, mode='w+', shape=(sum(self.orbitals.N_bas), npoints))
and
self._dens_cache = np.memmap(os.path.join(self._tmpdir, '{0}.cache'.format(__name__.lower()), dtype=dtype, mode='w+', shape=(maxdens, npoints+1))
to use a TemporaryFile
instead of the os.path.join(...)
thing
Although that might break other things I am not aware of...
I am running Pegamoid inside a conda environment on a windows machine.
Best wishes, Martin