Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
ed86fc6
remove junk
salotz Nov 24, 2025
8624a04
update AUTHORS files
salotz Nov 24, 2025
04329d7
enable using uv for proj mgmt
salotz Nov 24, 2025
7d28de0
formatting
salotz Nov 24, 2025
2529f7f
get tests passing
salotz Nov 24, 2025
24a9653
working on README
salotz Nov 25, 2025
3dd5e77
fix pyproject.toml readme
salotz Nov 25, 2025
468d4e5
update class definitions
salotz Nov 25, 2025
bfec483
add attrs dependency
salotz Nov 25, 2025
e73547d
add walker types and tests
salotz Nov 25, 2025
feb40ca
fixup! add walker types and tests
salotz Nov 25, 2025
0abc539
minor fixups
salotz Nov 26, 2025
d769333
add nptyping to deps
salotz Nov 26, 2025
24eea4f
refactor runners/openmm and half of tests
salotz Nov 26, 2025
1cd7f77
fixup! minor fixups
salotz Nov 26, 2025
1e89f58
improve walker weight comparison operator
salotz Nov 26, 2025
840ecc2
refactor and add tests for decisions and basic NoResampler
salotz Nov 26, 2025
7ca7a30
fixup! refactor and add tests for decisions and basic NoResampler
salotz Nov 26, 2025
ed46377
add proc pool work mapper
salotz Nov 26, 2025
bd774b4
remove orchestration code paths
salotz Dec 1, 2025
2f443b8
add Monitor interface
salotz Dec 1, 2025
9367520
add lennard jones system maker for testing
salotz Dec 1, 2025
d342cc9
make Walker generic wrt to the state
salotz Dec 1, 2025
17069b9
adds mock runner and update runner interface
salotz Dec 1, 2025
278b7f8
update work mapper interface
salotz Dec 1, 2025
2467001
clean up sim manager interface and add tests
salotz Dec 1, 2025
e2b1cff
update types; removing nptyping
salotz Dec 1, 2025
9159437
add some functional tests
salotz Dec 1, 2025
40caf11
remove junk .keep files
salotz Dec 1, 2025
fd44a0b
removing more junk, get doc tests running
salotz Dec 1, 2025
3a9f3fd
initial implementation of proc pool mapper
salotz Dec 1, 2025
09ad9b7
move openmm integration tests
salotz Dec 1, 2025
23a00c5
remove pytest_wepy module
salotz Dec 1, 2025
3036dca
refine Walker interfaces even further
salotz Dec 1, 2025
9fab914
remove multiprocessing_logging
salotz Dec 1, 2025
5494a92
minor cleanups
salotz Dec 2, 2025
8af87cf
add pytest options
salotz Dec 2, 2025
ffdf2f3
add ray to dependencies
salotz Dec 3, 2025
70a3966
refactoring openmm state and runner
salotz Dec 3, 2025
f8c8b7b
finish reimplementing the openmm runner
salotz Dec 3, 2025
5910c7d
mock runner implementation updates
salotz Dec 3, 2025
a786d22
working tests for work mappers
salotz Dec 3, 2025
cb96c0c
refactor work mapper runner interfaces
salotz Dec 3, 2025
e2bfd65
fix resampling tests
salotz Dec 3, 2025
f371918
wip!
salotz Dec 4, 2025
33fc351
writing openmm specific work mapper
salotz Dec 4, 2025
b1444ee
finished implementation of the openmm procpool mapper
salotz Dec 5, 2025
f1c174a
refactor log pool setup function and test
salotz Dec 5, 2025
0821838
add log handling to REVO proc pool
salotz Dec 5, 2025
289d6dc
add alanine dipeptide example system
salotz Dec 5, 2025
bd50847
add alanine dipeptide ramachandran distance metric
salotz Dec 5, 2025
110dfcd
adds more helpers for dealing with logging
salotz Dec 5, 2025
8b86185
cleaning and new tests
salotz Dec 5, 2025
d9ff9ce
implement OpenMM logging reporter bases
salotz Dec 6, 2025
85b8f23
adds heart beat logger
salotz Dec 6, 2025
ee5f73b
add support in OpenMM runner for simulation reporters
salotz Dec 6, 2025
021250d
add support for Runner.init in sim manager lifecycle
salotz Dec 6, 2025
3e48d68
export HeartBeatLoggingReporterFactory for openmm runner
salotz Dec 8, 2025
5358700
copy all components for sim manager
salotz Dec 8, 2025
0defc97
add heart beat openmm simulation logger to test
salotz Dec 8, 2025
48d62be
add some more clock time info to heart beat openmm logger
salotz Dec 8, 2025
4e354fb
implement state machine protocol for runners
salotz Dec 8, 2025
2975ed8
implement state machine for openmm runner
salotz Dec 8, 2025
8e5b00d
implement state machine for Manager
salotz Dec 9, 2025
045353d
update work mappers
salotz Dec 9, 2025
96c9d03
use spawn for revo multiprocessing Pool
salotz Dec 9, 2025
a78c88f
add OpenMMRunnerFactory test
salotz Dec 9, 2025
de35c92
update LJ Pair test system metric
salotz Dec 9, 2025
6fe9803
add realistic example of LJ pair
salotz Dec 9, 2025
c4bb360
new ala test system, cleanup
salotz Dec 9, 2025
9d5dace
fix REVO Pool and force spawn
salotz Dec 9, 2025
a15882e
get all unit tests passing
salotz Dec 9, 2025
b4ebb03
implement energy and unitcell logging reporters
salotz Dec 9, 2025
00e234a
removes step_size from logging reporter inputs
salotz Dec 9, 2025
768699f
add new logging reporters to default OpenMMRunnerFactory configuration
salotz Dec 9, 2025
3d1fbd6
update and tests for all decisions
salotz Dec 10, 2025
fcf0d95
add explicit DecisionRecord classes for Decision
salotz Dec 10, 2025
a570afe
tests for resampler base classes
salotz Dec 10, 2025
20234e5
remove randomwalk system stuff
salotz Dec 10, 2025
b544d5e
refactor and test the resampling.distances module
salotz Dec 10, 2025
4245994
make specific Mock distance and tests
salotz Dec 10, 2025
98e460f
fixup for noresampler
salotz Dec 10, 2025
b6340d4
REVO tests, light refactoring
salotz Dec 10, 2025
89bdfc9
resurrect the OpenMM Serial work mapper
salotz Dec 11, 2025
82eff98
add pytest plugins to help with flaky tests
salotz Dec 11, 2025
9a7dcae
fixups
salotz Dec 11, 2025
2456b64
fix pool hanging issue
salotz Dec 11, 2025
dc2dc96
update sim_manager for resampler factory
salotz Dec 11, 2025
3f13102
update integration tests
salotz Dec 11, 2025
5fd0e19
formatting
salotz Dec 11, 2025
e70f11b
add NoResampler factory
salotz Dec 11, 2025
de9e23a
make e2e tests more realistic
salotz Dec 11, 2025
50ca5d0
refactor reporter base classes and test
salotz Dec 11, 2025
77ff7b5
add tests for core of dashboard reporter
salotz Dec 11, 2025
f65807c
reduce logging in the REVO variance optimization loop
salotz Dec 11, 2025
a8616ca
fix ugly dashboard output
salotz Dec 11, 2025
1eb4ead
refacotr a few things with the decision
salotz Dec 11, 2025
f0ffa67
add mixin for writing attrs WalkerState classes
salotz Dec 11, 2025
42a2066
add some extra topologies to LJ pair system
salotz Dec 11, 2025
9ecd2d3
start to WepyHDF5 tests and types
salotz Dec 11, 2025
af49b6f
rework decision types
salotz Dec 12, 2025
f6ee56d
progress in testing WepyHDF5
salotz Dec 12, 2025
39b11f2
partial tests for WepyHDF5Reporter
salotz Dec 12, 2025
0a08c88
change OpenMMState.to_dict to .dict
salotz Dec 12, 2025
1cf5023
add WalkerStateBox class
salotz Dec 12, 2025
42687da
redo how WepyHDF5Reporter deals with units and quantities
salotz Dec 12, 2025
3e79a3b
tests for WepyHDF5 new_run and add_traj
salotz Dec 12, 2025
42b63ad
add AttrsMappingMixin
salotz Dec 13, 2025
0db1dd9
add clear types for resampl{ing,er} records
salotz Dec 13, 2025
e838163
add record fields to storage protocol
salotz Dec 13, 2025
cc1b7e7
finalized record data interfaces and working HDF5
salotz Dec 13, 2025
016f411
relax python version requirement
salotz Jan 6, 2026
a5cda21
replace itertools.batched
salotz Jan 6, 2026
7b8199e
add support for more versions of python
salotz Jan 6, 2026
eb96d97
bump version number
salotz Jan 13, 2026
3e4f6b2
add support for numpy 1
salotz Jan 15, 2026
5842579
add top level wepy exports
salotz Jan 15, 2026
a8d5c5b
implement new Factory interface for all factories
salotz Jan 16, 2026
26313f7
wip! partial updates to dashboard reporters
salotz Jan 16, 2026
25eb33f
update and export the openmm default units
salotz Jan 16, 2026
62333c2
fixes saving of scalar values from states
salotz Jan 16, 2026
ef73a1f
add default units to HDF5 reporter
salotz Jan 16, 2026
607d30d
implement separate `init_walker_save_fields` for HDF5 reporter
salotz Jan 16, 2026
d1e7e37
fixes dimension wrapping mismatch
salotz Jan 17, 2026
ccafa87
minor fix to realistic_test
salotz Jan 17, 2026
05c15f6
fix minor typos
salotz Jan 17, 2026
2c24865
adds some more complex HDF5 reporting to realistic_example
salotz Jan 17, 2026
8eec3e4
minimal addition of WExploreResamplerFactory
salotz Jan 17, 2026
2c1fd0d
make the num_cores argument to ResamplerFactory optional
salotz Jan 17, 2026
06635bf
configure dvc in repo
salotz Jan 21, 2026
620bb54
fix realistic integration test
salotz Jan 21, 2026
fc18253
add test data synthesis and populate with hdf5 file
salotz Jan 21, 2026
3b18796
add fixture for loading the hdf5 data in tests
salotz Jan 21, 2026
4cf64c0
wip! add a lot of tests and fixes to analysis and hdf5 modules
salotz Jan 23, 2026
bdf9021
fix mistake hdf5
salotz Jan 24, 2026
3fcbaad
move hdf5 fixtures to general conftest
salotz Jan 24, 2026
4c1285f
adds lots of tests and types for contig_tree module
salotz Jan 25, 2026
4aca796
!wip more fixes and tests
salotz Jan 25, 2026
ebcf1f7
fixes duplicate field definition
salotz Jan 25, 2026
ca4b985
formatting
salotz Jan 26, 2026
728cfd5
Include wepy_tools in wepy package modules
salotz Jan 26, 2026
22bb20b
fixup! fix module inclusion
salotz Jan 26, 2026
c44070a
proper type signature for alt_reps in reporter
salotz Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions .coveragerc

This file was deleted.

3 changes: 3 additions & 0 deletions .dvc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/config.local
/tmp
/cache
4 changes: 4 additions & 0 deletions .dvc/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[core]
remote = idp-dvc-gs
['remote "idp-dvc-gs"']
url = gs://examol-idp-prod-dvc/dvcstore-wepy2
3 changes: 3 additions & 0 deletions .dvcignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Add patterns of files dvc should ignore, which could improve
# the performance. Learn more at
# https://dvc.org/doc/user-guide/dvcignore
3 changes: 3 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source_env_if_exists .envrc.local
. ./.venv/bin/activate

1 change: 0 additions & 1 deletion .gitattributes

This file was deleted.

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -287,5 +287,6 @@ tags
.vim

# End of https://www.gitignore.io/api/vim
uv.lock
_output
.envrc.local
_tmp
6 changes: 3 additions & 3 deletions AUTHORS.org → AUTHORS.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
* Credits
# Credits

** Development Lead
## Development Lead

Samuel D. Lotz <samuel.lotz@salotz.info>

** Contributors
## Contributors

Alex Dickson
Nazanin Donyapour
Expand Down
38 changes: 37 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,40 @@
# Contributing
# CONTRIBUTING

```
uv sync --all-extras
```

To test against other python versions run this first for each version
you are interested in:

```
uv sync --python 3.11 --all-extras
```


## Tests

The standard test run like:

```
uv run --all-extras pytest tests/unit
```

The flake finder flag will enable running certain tests multiple
times. Typically for parallel routines which intermittently fail.

You can test on other python versions like:

```
uv run --python 3.11 --all-extras pytest --flake-finder tests/unit
```

The `--flake-finder` flag will run things multiple times to see if
they are flaky.



# Contributing (OLD)

Developing on wepy

Expand Down
24 changes: 0 additions & 24 deletions MANIFEST.in

This file was deleted.

62 changes: 62 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<a href="https://doi.org/10.5281/zenodo.3973431"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.3973431.svg" alt="DOI"></a>

# Weighted Ensemble Python: wepy

![Wepy Logo](./info/logo/wepy.svg)


[Documentation](https://adicksonlab.github.io/wepy/index.html)

Modular implementation and framework for running weighted ensemble (WE)
simulations in pure python, where the aim is to have simple things
simple and complicated things possible. The latter being the priority.

The goal of the architecture is that it should be highly modular to
allow extension, but provide a "killer app" for most uses that just
works, no questions asked.

Comes equipped with support for
[OpenMM](https://github.com/pandegroup/openmm) molecular dynamics,
parallelization using multiprocessing, the
[WExplore](http://pubs.acs.org/doi/abs/10.1021/jp411479c) and
[REVO](https://pubmed.ncbi.nlm.nih.gov/31255090/) (Resampling
Ensembles by Variance Optimization) resampling algorithms, and an HDF5
file format and library for storing and querying your WE datasets that
can be used from the command line.

The deeper architecture of `wepy` is intended to be loosely coupled,
so that unforeseen use cases can be accomodated, but tightly
integrated for the most common of use cases, i.e. molecular dynamics.

This allows freedom for fast development of new methods.

## Installation

Also see: [Installation Instructions](info/installation.org)

```shell
pip install wepy

# for openmm and MD related packages
pip install 'wepy[md]'
```

## Citations

Current [Zenodo DOI](https://zenodo.org/badge/latestdoi/101077926).

Cite software as:

```
Samuel D. Lotz, Nazanin Donyapour, Alex Dickson, Tom Dixon, Nicole Roussey, & Rob Hall. (2020, August 4). ADicksonLab/wepy: 1.0.0 Major version release (Version v1.0.0). Zenodo. http://doi.org/10.5281/zenodo.3973431
```

Accompanying journal article:

- [ACS Omega](https://pubs.acs.org/doi/abs/10.1021/acsomega.0c03892) article






93 changes: 0 additions & 93 deletions README.org

This file was deleted.

6 changes: 0 additions & 6 deletions dev/README.md

This file was deleted.

7 changes: 0 additions & 7 deletions dev/docs.requirements.txt

This file was deleted.

2 changes: 0 additions & 2 deletions dev/interactive.requirements.txt

This file was deleted.

5 changes: 0 additions & 5 deletions dev/qa.requirements.txt

This file was deleted.

3 changes: 0 additions & 3 deletions dev/testing.requirements.txt

This file was deleted.

1 change: 0 additions & 1 deletion dev/typechecking.requirements.txt

This file was deleted.

1 change: 0 additions & 1 deletion env.sh

This file was deleted.

20 changes: 10 additions & 10 deletions info/users_guide.org
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ We see that ReceptorDistance is inheriting from the ~Distance~ class,
which is defined as such:

#+BEGIN_SRC python
class Distance(object):
class Distance:
"""Abstract Base class for Distance classes."""

def __init__(self):
Expand Down Expand Up @@ -615,7 +615,7 @@ as being equivalent to:
We notice that the ~Distance~ class defines this method ~distance~:

#+BEGIN_SRC python
class Distance(object):
class Distance:
...

def distance(self, state_a, state_b):
Expand All @@ -634,7 +634,7 @@ it still has access to it.
We notice that ~Distance~ also defines the method ~image_distance~:

#+BEGIN_SRC python
class Distance(object):
class Distance:

...

Expand Down Expand Up @@ -1040,7 +1040,7 @@ weights of walkers in an ensemble (a simple list container).
The implementation is very simple:

#+begin_src python
class Walker(object):
class Walker:

def __init__(self, state, weight):

Expand Down Expand Up @@ -1077,7 +1077,7 @@ it doesn't directly inherit from the actual ~WalkerState~ class.
The implementation is very simple:

#+begin_src python
class WalkerState(object):
class WalkerState:

def __init__(self, **kwargs):
self._data = kwargs
Expand Down Expand Up @@ -1478,8 +1478,8 @@ handle new ones, e.g.:

#+end_src

In addition to the ABC ~Reporter~ class the ~FileReporter~ and
~ProgressiveFileReporter~ are very useful to inherit from as they
In addition to the ABC ~Reporter~ class the ~FileReporterABC~ and
~ProgressiveFileReporterABC~ are very useful to inherit from as they
handle some file path and file mode logic, the latter updates modes to
allow for repeated writes to the same file for each cycle of a
simulation.
Expand All @@ -1489,9 +1489,9 @@ specific to its own function and all the handling of filenames is done
by a call to the superclass constructor:

#+begin_src python
from wepy.reporter.reporter import ProgressiveFileReporter
from wepy.reporter.reporter import ProgressiveFileReporterABC

class DashboardReporter(ProgressiveFileReporter):
class DashboardReporter(ProgressiveFileReporterABC):

def __init__(self,
step_time=None,
Expand Down Expand Up @@ -1524,7 +1524,7 @@ then using a simple for-loop to sequentially compute the segments:

#+begin_src python

class Mapper(object):
class Mapper:

def init(self, segment_func):

Expand Down
Loading