Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Biased simulation in tutorial 5 seems broken #17

Closed
sroet opened this issue Aug 15, 2021 · 5 comments
Closed

Biased simulation in tutorial 5 seems broken #17

sroet opened this issue Aug 15, 2021 · 5 comments

Comments

@sroet
Copy link
Member

sroet commented Aug 15, 2021

I am running through these notebooks with a new environment.

When I try to run the:
openpathsampling pathsampling shooting_setup.nc -o biased.nc --scheme biased_shooting -n 500 command the code seems to be unable to collect the engine object (this is not an issue in the regular simulation from the same file)

The code errors out in either the backward partial

stack trace
Working on Monte Carlo cycle number 1
Starting simulation...
Working on first step
Traceback (most recent call last):
  File "/home/sroet/miniconda3/envs/ops/bin/openpathsampling", line 33, in <module>
    sys.exit(load_entry_point('openpathsampling-cli', 'console_scripts', 'openpathsampling')())
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sroet/github_files/openpathsampling-cli/paths_cli/commands/pathsampling.py", line 22, in pathsampling
    pathsampling_main(output_storage=OUTPUT_FILE.get(output_file),
  File "/home/sroet/github_files/openpathsampling-cli/paths_cli/commands/pathsampling.py", line 35, in pathsampling_main
    simulation.run(n_steps)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathsimulators/path_sampling.py", line 261, in run
    hook_state, mcstep = self.run_one_step(step_info, hook_state)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathsimulators/path_sampling.py", line 291, in run_one_step
    movepath = self._mover.move(self.sample_set, step=self.step)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2594, in move
    self.mover.move(sample_set),
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 615, in move
    change = self.move_core(samples)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 642, in move_core
    trials, call_details = self(*samples)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 787, in __call__
    trial_trajectory, run_details = self._run(initial_trajectory,
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2365, in _run
    bkwd_partial = self._make_backward_trajectory(trajectory, modified,
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2284, in _make_backward_trajectory
    bkwd_partial = self.engine.generate(initial_snapshot.reversed,
AttributeError: 'NoneType' object has no attribute 'generate'
AttributeError: __getattribute__
Exception ignored in: 'netCDF4._netCDF4.Dataset.__dealloc__'
AttributeError: __getattribute__
AttributeError: __getattribute__
Exception ignored in: 'netCDF4._netCDF4.Dataset.__dealloc__'
AttributeError: __getattribute__

or the forward partial:

stack trace
Working on Monte Carlo cycle number 1
Starting simulation...
Working on first step
Traceback (most recent call last):
  File "/home/sroet/miniconda3/envs/ops/bin/openpathsampling", line 33, in <module>
    sys.exit(load_entry_point('openpathsampling-cli', 'console_scripts', 'openpathsampling')())
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/sroet/miniconda3/envs/ops/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sroet/github_files/openpathsampling-cli/paths_cli/commands/pathsampling.py", line 22, in pathsampling
    pathsampling_main(output_storage=OUTPUT_FILE.get(output_file),
  File "/home/sroet/github_files/openpathsampling-cli/paths_cli/commands/pathsampling.py", line 35, in pathsampling_main
    simulation.run(n_steps)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathsimulators/path_sampling.py", line 261, in run
    hook_state, mcstep = self.run_one_step(step_info, hook_state)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathsimulators/path_sampling.py", line 291, in run_one_step
    movepath = self._mover.move(self.sample_set, step=self.step)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2594, in move
    self.mover.move(sample_set),
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 1575, in move
    subchange = mover.move(sample_set)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 615, in move
    change = self.move_core(samples)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 642, in move_core
    trials, call_details = self(*samples)
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 787, in __call__
    trial_trajectory, run_details = self._run(initial_trajectory,
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2321, in _run
    fwd_partial = self._make_forward_trajectory(trajectory, modified,
  File "/home/sroet/github_files/openpathsampling/openpathsampling/pathmover.py", line 2273, in _make_forward_trajectory
    fwd_partial = self.engine.generate(initial_snapshot,
AttributeError: 'NoneType' object has no attribute 'generate'
AttributeError: __getattribute__
Exception ignored in: 'netCDF4._netCDF4.Dataset.__dealloc__'
AttributeError: __getattribute__
AttributeError: __getattribute__
Exception ignored in: 'netCDF4._netCDF4.Dataset.__dealloc__'
AttributeError: __getattribute__

With a bunch of netcdf errors.

I run with the current conda setup:

conda list
# packages in environment at /home/sroet/miniconda3/envs/ops:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
alsa-lib                  1.2.3                h516909a_0    conda-forge
argon2-cffi               20.1.0           py39h3811e60_2    conda-forge
astunparse                1.6.3              pyhd8ed1ab_0    conda-forge
async_generator           1.10                       py_0    conda-forge
attrs                     21.2.0             pyhd8ed1ab_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
bhmm                      0.6.3           py39h16ac069_1004    conda-forge
bleach                    4.0.0              pyhd8ed1ab_0    conda-forge
blosc                     1.21.0               h9c3ff4c_0    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.17.2               h7f98852_0    conda-forge
ca-certificates           2021.5.30            ha878542_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
certifi                   2021.5.30        py39hf3d152e_0    conda-forge
cffi                      1.14.6           py39he32792d_0    conda-forge
cftime                    1.5.0            py39hce5d2b2_0    conda-forge
click                     8.0.1            py39hf3d152e_0    conda-forge
colorama                  0.4.4              pyh9f0ad1d_0    conda-forge
coverage                  5.5              py39h3811e60_0    conda-forge
cudatoolkit               11.2.2               he111cf0_8    conda-forge
curl                      7.78.0               hea6ffbf_0    conda-forge
cycler                    0.10.0                     py_2    conda-forge
dbus                      1.13.6               h48d8840_2    conda-forge
debugpy                   1.4.1            py39he80948d_0    conda-forge
decorator                 4.4.2                      py_0    conda-forge
deeptime                  0.2.9            py39hde0f152_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
dill                      0.3.4              pyhd8ed1ab_0    conda-forge
entrypoints               0.3             pyhd8ed1ab_1003    conda-forge
expat                     2.4.1                h9c3ff4c_0    conda-forge
fftw                      3.3.9           nompi_h74d3f13_101    conda-forge
fontconfig                2.13.1            hba837de_1005    conda-forge
freetype                  2.10.4               h0708190_1    conda-forge
future                    0.18.2           py39hf3d152e_3    conda-forge
gettext                   0.19.8.1          h0b5b191_1005    conda-forge
glib                      2.68.3               h9c3ff4c_0    conda-forge
glib-tools                2.68.3               h9c3ff4c_0    conda-forge
greenlet                  1.1.1            py39he80948d_0    conda-forge
gst-plugins-base          1.18.4               hf529b03_2    conda-forge
gstreamer                 1.18.4               h76c114f_2    conda-forge
h5py                      3.3.0           nompi_py39h98ba4bc_100    conda-forge
hdf4                      4.2.15               h10796ff_3    conda-forge
hdf5                      1.10.6          nompi_h6a2412b_1114    conda-forge
icu                       68.1                 h58526e2_0    conda-forge
importlib-metadata        4.6.4            py39hf3d152e_0    conda-forge
iniconfig                 1.1.1              pyh9f0ad1d_0    conda-forge
ipykernel                 6.1.0            py39hef51801_0    conda-forge
ipython                   7.26.0           py39hef51801_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.6.3              pyhd3deb0d_0    conda-forge
jbig                      2.1               h7f98852_2003    conda-forge
jedi                      0.18.0           py39hf3d152e_2    conda-forge
jinja2                    3.0.1              pyhd8ed1ab_0    conda-forge
joblib                    1.0.1              pyhd8ed1ab_0    conda-forge
jpeg                      9d                   h36c2ea0_0    conda-forge
jsonschema                3.2.0              pyhd8ed1ab_3    conda-forge
jupyter                   1.0.0            py39hf3d152e_6    conda-forge
jupyter_client            6.1.12             pyhd8ed1ab_0    conda-forge
jupyter_console           6.4.0              pyhd8ed1ab_0    conda-forge
jupyter_core              4.7.1            py39hf3d152e_0    conda-forge
jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
jupyterlab_widgets        1.0.0              pyhd8ed1ab_1    conda-forge
kiwisolver                1.3.1            py39h1a9c180_1    conda-forge
krb5                      1.19.2               hcc1bbae_0    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
lerc                      2.2.1                h9c3ff4c_0    conda-forge
libblas                   3.9.0           11_linux64_openblas    conda-forge
libcblas                  3.9.0           11_linux64_openblas    conda-forge
libclang                  11.1.0          default_ha53f305_1    conda-forge
libcurl                   7.78.0               h2574ce0_0    conda-forge
libdeflate                1.7                  h7f98852_5    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.10               hcdb4288_3    conda-forge
libffi                    3.3                  h58526e2_2    conda-forge
libgcc-ng                 11.1.0               hc902ee8_8    conda-forge
libgfortran-ng            11.1.0               h69a702a_8    conda-forge
libgfortran5              11.1.0               h6c583b3_8    conda-forge
libglib                   2.68.3               h3e27bee_0    conda-forge
libgomp                   11.1.0               hc902ee8_8    conda-forge
libiconv                  1.16                 h516909a_0    conda-forge
liblapack                 3.9.0           11_linux64_openblas    conda-forge
libllvm10                 10.0.1               he513fc3_3    conda-forge
libllvm11                 11.1.0               hf817b99_2    conda-forge
libnetcdf                 4.8.0           nompi_hcd642e3_103    conda-forge
libnghttp2                1.43.0               h812cca2_0    conda-forge
libogg                    1.3.4                h7f98852_1    conda-forge
libopenblas               0.3.17          pthreads_h8fe5266_1    conda-forge
libopus                   1.3.1                h7f98852_1    conda-forge
libpng                    1.6.37               h21135ba_2    conda-forge
libpq                     13.3                 hd57d9b9_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libssh2                   1.9.0                ha56f1ee_6    conda-forge
libstdcxx-ng              11.1.0               h56837e0_8    conda-forge
libtiff                   4.3.0                hf544144_1    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libvorbis                 1.3.7                h9c3ff4c_0    conda-forge
libwebp-base              1.2.0                h7f98852_2    conda-forge
libxcb                    1.13              h7f98852_1003    conda-forge
libxkbcommon              1.0.3                he3ba5ed_0    conda-forge
libxml2                   2.9.12               h72842e0_0    conda-forge
libzip                    1.8.0                h4de3113_0    conda-forge
llvmlite                  0.36.0           py39h1bbdace_0    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
markupsafe                2.0.1            py39h3811e60_0    conda-forge
matplotlib                3.4.3            py39hf3d152e_0    conda-forge
matplotlib-base           3.4.3            py39h2fa2bec_0    conda-forge
matplotlib-inline         0.1.2              pyhd8ed1ab_2    conda-forge
mdtraj                    1.9.6            py39h138c130_1    conda-forge
mistune                   0.8.4           py39h3811e60_1004    conda-forge
mock                      4.0.3            py39hf3d152e_1    conda-forge
more-itertools            8.8.0              pyhd8ed1ab_0    conda-forge
mpiplus                   v0.0.1          py39hde42818_1002    conda-forge
msmtools                  1.2.6            py39hce5d2b2_0    conda-forge
multiprocess              0.70.12.2        py39h3811e60_0    conda-forge
mysql-common              8.0.25               ha770c72_2    conda-forge
mysql-libs                8.0.25               hfa10184_2    conda-forge
nbclient                  0.5.3              pyhd8ed1ab_0    conda-forge
nbconvert                 6.1.0            py39hf3d152e_0    conda-forge
nbformat                  5.1.3              pyhd8ed1ab_0    conda-forge
nbval                     0.9.6              pyh9f0ad1d_0    conda-forge
ncurses                   6.2                  h58526e2_4    conda-forge
nest-asyncio              1.5.1              pyhd8ed1ab_0    conda-forge
netcdf4                   1.5.7           nompi_py39hc6dca20_100    conda-forge
networkx                  2.6.2              pyhd8ed1ab_0    conda-forge
nglview                   3.0.3              pyh8a188c0_0    conda-forge
nose                      1.3.7                   py_1006    conda-forge
notebook                  6.4.3              pyha770c72_0    conda-forge
nspr                      4.30                 h9c3ff4c_0    conda-forge
nss                       3.69                 hb5efdd6_0    conda-forge
numba                     0.53.1           py39h56b8d98_1    conda-forge
numexpr                   2.7.3            py39hde0f152_0    conda-forge
numpy                     1.21.1           py39hdbf815f_0    conda-forge
ocl-icd                   2.3.0                h7f98852_0    conda-forge
ocl-icd-system            1.0.0                         1    conda-forge
olefile                   0.46               pyh9f0ad1d_1    conda-forge
openjpeg                  2.4.0                hb52868f_1    conda-forge
openmm                    7.5.1            py39h71eca04_1    conda-forge
openmmtools               0.20.3             pyhd8ed1ab_0    conda-forge
openpathsampling          1.5.2.dev0                dev_0    <develop>
openpathsampling-cli      0.2.2.dev0                dev_0    <develop>
openssl                   1.1.1k               h7f98852_0    conda-forge
packaging                 21.0               pyhd8ed1ab_0    conda-forge
pandas                    1.3.1            py39hde0f152_0    conda-forge
pandoc                    2.14.1               h7f98852_0    conda-forge
pandocfilters             1.4.2                      py_1    conda-forge
parso                     0.8.2              pyhd8ed1ab_0    conda-forge
pathos                    0.2.8              pyhd8ed1ab_0    conda-forge
pcre                      8.45                 h9c3ff4c_0    conda-forge
pdbfixer                  1.7                pyhd3deb0d_0    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    8.3.1            py39ha612740_0    conda-forge
pip                       21.2.4             pyhd8ed1ab_0    conda-forge
pluggy                    0.13.1           py39hf3d152e_4    conda-forge
pox                       0.3.0              pyhd8ed1ab_0    conda-forge
ppft                      1.6.6.4            pyhd8ed1ab_0    conda-forge
prometheus_client         0.11.0             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.19             pyha770c72_0    conda-forge
prompt_toolkit            3.0.19               hd8ed1ab_0    conda-forge
psutil                    5.8.0            py39h3811e60_1    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
py                        1.10.0             pyhd3deb0d_0    conda-forge
pycparser                 2.20               pyh9f0ad1d_2    conda-forge
pyemma                    2.5.9            py39hde0f152_0    conda-forge
pygments                  2.9.0              pyhd8ed1ab_0    conda-forge
pymbar                    3.0.5            py39hce5d2b2_2    conda-forge
pyparsing                 2.4.7              pyh9f0ad1d_0    conda-forge
pyqt                      5.12.3           py39hf3d152e_7    conda-forge
pyqt-impl                 5.12.3           py39h0fcd23e_7    conda-forge
pyqt5-sip                 4.19.18          py39he80948d_7    conda-forge
pyqtchart                 5.12             py39h0fcd23e_7    conda-forge
pyqtwebengine             5.12.1           py39h0fcd23e_7    conda-forge
pyrsistent                0.17.3           py39h3811e60_2    conda-forge
pytables                  3.6.1            py39hf6dc253_3    conda-forge
pytest                    6.2.4            py39hf3d152e_0    conda-forge
python                    3.9.6           h49503c6_1_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytz                      2021.1             pyhd8ed1ab_0    conda-forge
pyyaml                    5.4.1            py39h3811e60_0    conda-forge
pyzmq                     22.2.1           py39h37b5a0c_0    conda-forge
qt                        5.12.9               hda022c4_4    conda-forge
qtconsole                 5.1.1              pyhd8ed1ab_0    conda-forge
qtpy                      1.9.0                      py_0    conda-forge
readline                  8.1                  h46c0cb4_0    conda-forge
scikit-learn              0.24.2           py39h4dfa638_1    conda-forge
scipy                     1.7.1            py39hee8e79c_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                49.6.0           py39hf3d152e_3    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.8                he1b5a44_3    conda-forge
sqlalchemy                1.4.22           py39h3811e60_0    conda-forge
sqlite                    3.36.0               h9cd32fc_0    conda-forge
svgwrite                  1.4.1              pyhd8ed1ab_0    conda-forge
terminado                 0.10.1           py39hf3d152e_0    conda-forge
testpath                  0.5.0              pyhd8ed1ab_0    conda-forge
threadpoolctl             2.2.0              pyh8a188c0_0    conda-forge
tk                        8.6.10               h21135ba_1    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tornado                   6.1              py39h3811e60_1    conda-forge
tqdm                      4.62.1             pyhd8ed1ab_0    conda-forge
traitlets                 5.0.5                      py_0    conda-forge
tzdata                    2021a                he74cb21_1    conda-forge
ujson                     4.0.2            py39he80948d_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.37.0             pyhd8ed1ab_1    conda-forge
widgetsnbextension        3.5.1            py39hf3d152e_4    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
yaml                      0.2.5                h516909a_0    conda-forge
zeromq                    4.3.4                h9c3ff4c_0    conda-forge
zipp                      3.5.0              pyhd8ed1ab_0    conda-forge
zlib                      1.2.11            h516909a_1010    conda-forge
zstd                      1.5.0                ha95c52a_0    conda-forge

@sroet sroet changed the title Biased simultion in tutorial 5 seems broken Biased simulation in tutorial 5 seems broken Aug 15, 2021
@dwhswenson
Copy link
Member

Mobile now, so a little hard to read code, but I think this is one where you have to create the shooting strategy for this scheme. Did you include the engine when you created the strategy? It's possible to create a strategy without an engine (defaults to None) -- strongly considering making it required in 2.0 for exactly this reason.

Tests, including advanced tests (which runs notebook 5 & the CLI commands) ran 17 hours ago and passed, so I think the code is okay.

@dwhswenson
Copy link
Member

dwhswenson commented Aug 15, 2021

Aside: FWIW, the error that matters there is, I think, not the netcdf stuff, but:

AttributeError: 'NoneType' object has no attribute 'generate'

which says that your engine is set to None.

@sroet
Copy link
Member Author

sroet commented Aug 16, 2021

Did you include the engine when you created the strategy?

🤦 I did not.

It's possible to create a strategy without an engine (defaults to None) -- strongly considering making it required in 2.0 for exactly this reason.

Any reason why we don't already do this? Is there a working use-case in 1.x that does not set the engine at initialization? (I know it is technically an API break, but I don't know of a working use-case for this API)

@sroet
Copy link
Member Author

sroet commented Aug 16, 2021

(This can be closed and moved to an issue in the main OPS repo if you think it is more suited there)

@dwhswenson
Copy link
Member

Any reason why we don't already do this? Is there a working use-case in 1.x that does not set the engine at initialization? (I know it is technically an API break, but I don't know of a working use-case for this API)

Early on, we had this idea of setting a "default" engine for a given Python session. The intent was to make it so that users wouldn't need to specify the engine as frequently (if you're setting up strategies manually, it feels like redundant information in most cases). In retrospect, that breaks "Explicit is better than implicit", especially since the implicit value is per-session and won't be retained if you reload simulation objects from a file and continue to create new simulation objects in a new Python process. Since the redundant information is just engine=engine, that's not too bad, and requiring the redundancy is a reminder of the potential flexibility (yes, you can use a different engine for different ensembles -- no, that is not a good idea unless you know what you're doing, but Titus has a method I really like that uses QM forces in the barrier region and MM forces in the in-state minus move.)

We do have some examples (focused on showing how to create move schemes) that take advantage of this, but I think the better approach is to clean up the placeholder engines.NoEngine to make it more easily usable (not require a descriptor) and just use that in such examples. Actually, I was just writing something that (ab)uses the default engine=None in openpathsampling/mini-tutorials#3.

(This can be closed and moved to an issue in the main OPS repo if you think it is more suited there)

I'll close here and open a new issue in openpathsampling/openpathsampling to discuss improving API parameters in general, with this as a first example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants