westpa 2022.13__cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- westpa/__init__.py +14 -0
- westpa/_version.py +21 -0
- westpa/analysis/__init__.py +5 -0
- westpa/analysis/core.py +749 -0
- westpa/analysis/statistics.py +27 -0
- westpa/analysis/trajectories.py +369 -0
- westpa/cli/__init__.py +0 -0
- westpa/cli/core/__init__.py +0 -0
- westpa/cli/core/w_fork.py +152 -0
- westpa/cli/core/w_init.py +230 -0
- westpa/cli/core/w_run.py +77 -0
- westpa/cli/core/w_states.py +212 -0
- westpa/cli/core/w_succ.py +99 -0
- westpa/cli/core/w_truncate.py +68 -0
- westpa/cli/tools/__init__.py +0 -0
- westpa/cli/tools/ploterr.py +506 -0
- westpa/cli/tools/plothist.py +706 -0
- westpa/cli/tools/w_assign.py +597 -0
- westpa/cli/tools/w_bins.py +166 -0
- westpa/cli/tools/w_crawl.py +119 -0
- westpa/cli/tools/w_direct.py +557 -0
- westpa/cli/tools/w_dumpsegs.py +94 -0
- westpa/cli/tools/w_eddist.py +506 -0
- westpa/cli/tools/w_fluxanl.py +376 -0
- westpa/cli/tools/w_ipa.py +832 -0
- westpa/cli/tools/w_kinavg.py +127 -0
- westpa/cli/tools/w_kinetics.py +96 -0
- westpa/cli/tools/w_multi_west.py +414 -0
- westpa/cli/tools/w_ntop.py +213 -0
- westpa/cli/tools/w_pdist.py +515 -0
- westpa/cli/tools/w_postanalysis_matrix.py +82 -0
- westpa/cli/tools/w_postanalysis_reweight.py +53 -0
- westpa/cli/tools/w_red.py +491 -0
- westpa/cli/tools/w_reweight.py +780 -0
- westpa/cli/tools/w_select.py +226 -0
- westpa/cli/tools/w_stateprobs.py +111 -0
- westpa/cli/tools/w_timings.py +113 -0
- westpa/cli/tools/w_trace.py +599 -0
- westpa/core/__init__.py +0 -0
- westpa/core/_rc.py +673 -0
- westpa/core/binning/__init__.py +55 -0
- westpa/core/binning/_assign.c +36018 -0
- westpa/core/binning/_assign.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/core/binning/_assign.pyx +370 -0
- westpa/core/binning/assign.py +454 -0
- westpa/core/binning/binless.py +96 -0
- westpa/core/binning/binless_driver.py +54 -0
- westpa/core/binning/binless_manager.py +189 -0
- westpa/core/binning/bins.py +47 -0
- westpa/core/binning/mab.py +506 -0
- westpa/core/binning/mab_driver.py +54 -0
- westpa/core/binning/mab_manager.py +197 -0
- westpa/core/data_manager.py +1761 -0
- westpa/core/extloader.py +74 -0
- westpa/core/h5io.py +1079 -0
- westpa/core/kinetics/__init__.py +24 -0
- westpa/core/kinetics/_kinetics.c +45174 -0
- westpa/core/kinetics/_kinetics.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/core/kinetics/_kinetics.pyx +815 -0
- westpa/core/kinetics/events.py +147 -0
- westpa/core/kinetics/matrates.py +156 -0
- westpa/core/kinetics/rate_averaging.py +266 -0
- westpa/core/progress.py +218 -0
- westpa/core/propagators/__init__.py +54 -0
- westpa/core/propagators/executable.py +592 -0
- westpa/core/propagators/loaders.py +196 -0
- westpa/core/reweight/__init__.py +14 -0
- westpa/core/reweight/_reweight.c +36899 -0
- westpa/core/reweight/_reweight.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/core/reweight/_reweight.pyx +439 -0
- westpa/core/reweight/matrix.py +126 -0
- westpa/core/segment.py +119 -0
- westpa/core/sim_manager.py +839 -0
- westpa/core/states.py +359 -0
- westpa/core/systems.py +93 -0
- westpa/core/textio.py +74 -0
- westpa/core/trajectory.py +603 -0
- westpa/core/we_driver.py +910 -0
- westpa/core/wm_ops.py +43 -0
- westpa/core/yamlcfg.py +298 -0
- westpa/fasthist/__init__.py +34 -0
- westpa/fasthist/_fasthist.c +38755 -0
- westpa/fasthist/_fasthist.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/fasthist/_fasthist.pyx +222 -0
- westpa/mclib/__init__.py +271 -0
- westpa/mclib/__main__.py +28 -0
- westpa/mclib/_mclib.c +34610 -0
- westpa/mclib/_mclib.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/mclib/_mclib.pyx +226 -0
- westpa/oldtools/__init__.py +4 -0
- westpa/oldtools/aframe/__init__.py +35 -0
- westpa/oldtools/aframe/atool.py +75 -0
- westpa/oldtools/aframe/base_mixin.py +26 -0
- westpa/oldtools/aframe/binning.py +178 -0
- westpa/oldtools/aframe/data_reader.py +560 -0
- westpa/oldtools/aframe/iter_range.py +200 -0
- westpa/oldtools/aframe/kinetics.py +117 -0
- westpa/oldtools/aframe/mcbs.py +153 -0
- westpa/oldtools/aframe/output.py +39 -0
- westpa/oldtools/aframe/plotting.py +88 -0
- westpa/oldtools/aframe/trajwalker.py +126 -0
- westpa/oldtools/aframe/transitions.py +469 -0
- westpa/oldtools/cmds/__init__.py +0 -0
- westpa/oldtools/cmds/w_ttimes.py +361 -0
- westpa/oldtools/files.py +34 -0
- westpa/oldtools/miscfn.py +23 -0
- westpa/oldtools/stats/__init__.py +4 -0
- westpa/oldtools/stats/accumulator.py +35 -0
- westpa/oldtools/stats/edfs.py +129 -0
- westpa/oldtools/stats/mcbs.py +96 -0
- westpa/tools/__init__.py +33 -0
- westpa/tools/binning.py +472 -0
- westpa/tools/core.py +340 -0
- westpa/tools/data_reader.py +159 -0
- westpa/tools/dtypes.py +31 -0
- westpa/tools/iter_range.py +198 -0
- westpa/tools/kinetics_tool.py +343 -0
- westpa/tools/plot.py +283 -0
- westpa/tools/progress.py +17 -0
- westpa/tools/selected_segs.py +154 -0
- westpa/tools/wipi.py +751 -0
- westpa/trajtree/__init__.py +4 -0
- westpa/trajtree/_trajtree.c +17829 -0
- westpa/trajtree/_trajtree.cpython-312-aarch64-linux-gnu.so +0 -0
- westpa/trajtree/_trajtree.pyx +130 -0
- westpa/trajtree/trajtree.py +117 -0
- westpa/westext/__init__.py +0 -0
- westpa/westext/adaptvoronoi/__init__.py +3 -0
- westpa/westext/adaptvoronoi/adaptVor_driver.py +214 -0
- westpa/westext/hamsm_restarting/__init__.py +3 -0
- westpa/westext/hamsm_restarting/example_overrides.py +35 -0
- westpa/westext/hamsm_restarting/restart_driver.py +1165 -0
- westpa/westext/stringmethod/__init__.py +11 -0
- westpa/westext/stringmethod/fourier_fitting.py +69 -0
- westpa/westext/stringmethod/string_driver.py +253 -0
- westpa/westext/stringmethod/string_method.py +306 -0
- westpa/westext/weed/BinCluster.py +180 -0
- westpa/westext/weed/ProbAdjustEquil.py +100 -0
- westpa/westext/weed/UncertMath.py +247 -0
- westpa/westext/weed/__init__.py +10 -0
- westpa/westext/weed/weed_driver.py +192 -0
- westpa/westext/wess/ProbAdjust.py +101 -0
- westpa/westext/wess/__init__.py +6 -0
- westpa/westext/wess/wess_driver.py +217 -0
- westpa/work_managers/__init__.py +57 -0
- westpa/work_managers/core.py +396 -0
- westpa/work_managers/environment.py +134 -0
- westpa/work_managers/mpi.py +318 -0
- westpa/work_managers/processes.py +201 -0
- westpa/work_managers/serial.py +28 -0
- westpa/work_managers/threads.py +79 -0
- westpa/work_managers/zeromq/__init__.py +20 -0
- westpa/work_managers/zeromq/core.py +635 -0
- westpa/work_managers/zeromq/node.py +131 -0
- westpa/work_managers/zeromq/work_manager.py +526 -0
- westpa/work_managers/zeromq/worker.py +320 -0
- westpa-2022.13.dist-info/METADATA +179 -0
- westpa-2022.13.dist-info/RECORD +162 -0
- westpa-2022.13.dist-info/WHEEL +7 -0
- westpa-2022.13.dist-info/entry_points.txt +30 -0
- westpa-2022.13.dist-info/licenses/LICENSE +21 -0
- westpa-2022.13.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Created on May 29, 2015
|
|
3
|
+
|
|
4
|
+
@author: mzwier
|
|
5
|
+
'''
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
import multiprocessing
|
|
9
|
+
import os
|
|
10
|
+
import signal
|
|
11
|
+
import threading
|
|
12
|
+
|
|
13
|
+
from .core import ZMQCore, Message, ZMQWMTimeout, PassiveMultiTimer, Task, Result, TIMEOUT_MASTER_BEACON
|
|
14
|
+
|
|
15
|
+
import zmq
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
log = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ZMQWorker(ZMQCore):
|
|
22
|
+
'''This is the outward facing worker component of the ZMQ work manager. This
|
|
23
|
+
forms the interface to the master. This process cannot hang or crash due to an
|
|
24
|
+
error in tasks it executes, so tasks are isolated in ZMQExecutor, which
|
|
25
|
+
communicates with ZMQWorker via (what else?) ZeroMQ.'''
|
|
26
|
+
|
|
27
|
+
def __init__(self, rr_endpoint, ann_endpoint):
|
|
28
|
+
super().__init__()
|
|
29
|
+
|
|
30
|
+
# Upstream endpoints
|
|
31
|
+
self.rr_endpoint = rr_endpoint
|
|
32
|
+
self.ann_endpoint = ann_endpoint
|
|
33
|
+
|
|
34
|
+
# Downstream endpoints
|
|
35
|
+
self.task_endpoint = self.make_internal_endpoint()
|
|
36
|
+
self.result_endpoint = self.make_internal_endpoint()
|
|
37
|
+
|
|
38
|
+
self.master_id = None
|
|
39
|
+
self.identified = False
|
|
40
|
+
|
|
41
|
+
# The task currently being processed
|
|
42
|
+
self.pending_task = None
|
|
43
|
+
|
|
44
|
+
# Executor process
|
|
45
|
+
|
|
46
|
+
self.shutdown_timeout = 5.0 # Five second wait between shutdown message and SIGINT and SIGINT and SIGKILL
|
|
47
|
+
self.executor_process = None
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def is_master(self):
|
|
51
|
+
return False
|
|
52
|
+
|
|
53
|
+
def update_master_info(self, msg):
|
|
54
|
+
if self.master_id is None:
|
|
55
|
+
self.master_id = msg.master_id
|
|
56
|
+
self.timers.reset(TIMEOUT_MASTER_BEACON)
|
|
57
|
+
|
|
58
|
+
def identify(self, rr_socket):
|
|
59
|
+
if self.master_id is None or self.identified or self.timers.expired(TIMEOUT_MASTER_BEACON):
|
|
60
|
+
return
|
|
61
|
+
self.send_message(rr_socket, Message.IDENTIFY, payload=self.get_identification())
|
|
62
|
+
self.recv_ack(rr_socket, timeout=self.master_beacon_period * self.timeout_factor * 1000)
|
|
63
|
+
self.identified = True
|
|
64
|
+
|
|
65
|
+
def request_task(self, rr_socket, task_socket):
|
|
66
|
+
if self.master_id is None:
|
|
67
|
+
return
|
|
68
|
+
elif self.pending_task is not None:
|
|
69
|
+
return
|
|
70
|
+
elif self.timers.expired(TIMEOUT_MASTER_BEACON):
|
|
71
|
+
return
|
|
72
|
+
else:
|
|
73
|
+
self.send_message(rr_socket, Message.TASK_REQUEST)
|
|
74
|
+
reply = self.recv_message(rr_socket, timeout=self.master_beacon_period * self.timeout_factor * 1000)
|
|
75
|
+
self.update_master_info(reply)
|
|
76
|
+
if reply.message == Message.NAK:
|
|
77
|
+
# No task available
|
|
78
|
+
return
|
|
79
|
+
else:
|
|
80
|
+
with self.message_validation(reply):
|
|
81
|
+
assert isinstance(reply.payload, Task)
|
|
82
|
+
task = reply.payload
|
|
83
|
+
self.pending_task = task
|
|
84
|
+
self.send_message(task_socket, Message.TASK, task)
|
|
85
|
+
|
|
86
|
+
def handle_reconfigure_timeout(self, msg, timers):
|
|
87
|
+
with self.message_validation(msg):
|
|
88
|
+
assert msg.payload is not None
|
|
89
|
+
timer, new_period = msg.payload
|
|
90
|
+
timers.change_duration(timer, new_period)
|
|
91
|
+
timers.reset(timer)
|
|
92
|
+
|
|
93
|
+
def handle_result(self, result_socket, rr_socket):
|
|
94
|
+
msg = self.recv_message(result_socket)
|
|
95
|
+
with self.message_validation(msg):
|
|
96
|
+
assert msg.message == Message.RESULT
|
|
97
|
+
assert isinstance(msg.payload, Result)
|
|
98
|
+
assert msg.payload.task_id == self.pending_task.task_id
|
|
99
|
+
|
|
100
|
+
msg.src_id = self.node_id
|
|
101
|
+
self.pending_task = None
|
|
102
|
+
self.send_message(rr_socket, msg)
|
|
103
|
+
reply = self.recv_ack(rr_socket, timeout=self.master_beacon_period * self.timeout_factor * 1000)
|
|
104
|
+
self.update_master_info(reply)
|
|
105
|
+
|
|
106
|
+
def comm_loop(self):
|
|
107
|
+
'''Master communication loop for the worker process.'''
|
|
108
|
+
|
|
109
|
+
rr_socket = self.context.socket(zmq.REQ)
|
|
110
|
+
|
|
111
|
+
ann_socket = self.context.socket(zmq.SUB)
|
|
112
|
+
ann_socket.setsockopt(zmq.SUBSCRIBE, b'')
|
|
113
|
+
inproc_socket = self.context.socket(zmq.SUB)
|
|
114
|
+
inproc_socket.setsockopt(zmq.SUBSCRIBE, b'')
|
|
115
|
+
|
|
116
|
+
task_socket = self.context.socket(zmq.PUSH)
|
|
117
|
+
result_socket = self.context.socket(zmq.PULL)
|
|
118
|
+
|
|
119
|
+
self.log.info('This is {}'.format(self.node_description))
|
|
120
|
+
|
|
121
|
+
timers = self.timers = PassiveMultiTimer()
|
|
122
|
+
timers.add_timer(TIMEOUT_MASTER_BEACON, 86400)
|
|
123
|
+
timers.add_timer('worker_beacon', self.worker_beacon_period)
|
|
124
|
+
timers.add_timer('startup_timeout', self.startup_timeout)
|
|
125
|
+
peer_found = False
|
|
126
|
+
|
|
127
|
+
try:
|
|
128
|
+
rr_socket.connect(self.rr_endpoint)
|
|
129
|
+
ann_socket.connect(self.ann_endpoint)
|
|
130
|
+
inproc_socket.bind(self.inproc_endpoint)
|
|
131
|
+
task_socket.connect(self.task_endpoint)
|
|
132
|
+
result_socket.bind(self.result_endpoint)
|
|
133
|
+
|
|
134
|
+
poller = zmq.Poller()
|
|
135
|
+
poller.register(ann_socket, zmq.POLLIN)
|
|
136
|
+
poller.register(inproc_socket, zmq.POLLIN)
|
|
137
|
+
poller.register(result_socket, zmq.POLLIN)
|
|
138
|
+
|
|
139
|
+
timers.reset()
|
|
140
|
+
while True:
|
|
141
|
+
# If a timer is already expired, next_expiration_in() will return 0, which
|
|
142
|
+
# zeromq interprets as infinite wait; so instead we select a 1 ms wait in this
|
|
143
|
+
# case.
|
|
144
|
+
poll_results = dict(poller.poll((timers.next_expiration_in() or 0.001) * 1000))
|
|
145
|
+
|
|
146
|
+
if poll_results and not peer_found:
|
|
147
|
+
timers.remove_timer('startup_timeout')
|
|
148
|
+
peer_found = True
|
|
149
|
+
timers.change_duration(TIMEOUT_MASTER_BEACON, self.master_beacon_period * self.timeout_factor)
|
|
150
|
+
timers.reset(TIMEOUT_MASTER_BEACON)
|
|
151
|
+
|
|
152
|
+
announcements = []
|
|
153
|
+
|
|
154
|
+
# Check for internal messages first
|
|
155
|
+
if inproc_socket in poll_results:
|
|
156
|
+
announcements.extend(self.recv_all(inproc_socket))
|
|
157
|
+
|
|
158
|
+
# Process announcements
|
|
159
|
+
if ann_socket in poll_results:
|
|
160
|
+
announcements.extend(self.recv_all(ann_socket))
|
|
161
|
+
|
|
162
|
+
# announcements = Message.coalesce_announcements(announcements)
|
|
163
|
+
# self.log.debug('received {:d} announcements'.format(len(announcements)))
|
|
164
|
+
|
|
165
|
+
messages_by_tag = {}
|
|
166
|
+
for msg in announcements:
|
|
167
|
+
messages_by_tag.setdefault(msg.message, list()).append(msg)
|
|
168
|
+
|
|
169
|
+
# Check for shutdown messages
|
|
170
|
+
if Message.SHUTDOWN in messages_by_tag:
|
|
171
|
+
self.log.debug('received shutdown message')
|
|
172
|
+
return
|
|
173
|
+
elif Message.TASKS_AVAILABLE in messages_by_tag:
|
|
174
|
+
self.update_master_info(messages_by_tag[Message.TASKS_AVAILABLE][0])
|
|
175
|
+
elif Message.MASTER_BEACON in messages_by_tag:
|
|
176
|
+
self.update_master_info(messages_by_tag[Message.MASTER_BEACON][0])
|
|
177
|
+
|
|
178
|
+
if self.master_id is not None and timers.expired('worker_beacon'):
|
|
179
|
+
self.identify(rr_socket)
|
|
180
|
+
timers.reset('worker_beacon')
|
|
181
|
+
|
|
182
|
+
# Handle results, so that we clear ourselves of completed tasks
|
|
183
|
+
# before asking for more
|
|
184
|
+
if result_socket in poll_results:
|
|
185
|
+
self.handle_result(result_socket, rr_socket)
|
|
186
|
+
# immediately request another task if available
|
|
187
|
+
if not timers.expired(TIMEOUT_MASTER_BEACON):
|
|
188
|
+
self.request_task(rr_socket, task_socket)
|
|
189
|
+
|
|
190
|
+
# Handle any remaining messages
|
|
191
|
+
for tag, msgs in messages_by_tag.items():
|
|
192
|
+
if tag == Message.MASTER_BEACON:
|
|
193
|
+
self.identify(rr_socket)
|
|
194
|
+
elif tag == Message.RECONFIGURE_TIMEOUT:
|
|
195
|
+
for msg in msgs:
|
|
196
|
+
self.handle_reconfigure_timeout(msg, timers)
|
|
197
|
+
elif tag == Message.TASKS_AVAILABLE:
|
|
198
|
+
self.request_task(rr_socket, task_socket)
|
|
199
|
+
|
|
200
|
+
del announcements, messages_by_tag
|
|
201
|
+
|
|
202
|
+
if timers.expired(TIMEOUT_MASTER_BEACON):
|
|
203
|
+
self.log.error('no contact from master; shutting down')
|
|
204
|
+
return
|
|
205
|
+
|
|
206
|
+
if not peer_found and timers.expired('startup_timeout'):
|
|
207
|
+
self.log.error('startup phase elapsed with no contact from master; shutting down')
|
|
208
|
+
break
|
|
209
|
+
|
|
210
|
+
except ZMQWMTimeout:
|
|
211
|
+
# both handle_result() and request_task() have receive timeouts set to
|
|
212
|
+
# self.master_beacon_period*self.timeout_factor, and timeout exceptions
|
|
213
|
+
# propagate to this point.
|
|
214
|
+
self.log.error('timeout communicating with peer; shutting down')
|
|
215
|
+
finally:
|
|
216
|
+
self.shutdown_executor()
|
|
217
|
+
self.executor_process.join()
|
|
218
|
+
self.context.destroy(linger=1)
|
|
219
|
+
self.context = None
|
|
220
|
+
self.remove_ipc_endpoints()
|
|
221
|
+
|
|
222
|
+
def shutdown_executor(self):
|
|
223
|
+
if self.context is not None:
|
|
224
|
+
try:
|
|
225
|
+
self.log.debug('sending shutdown task to executor')
|
|
226
|
+
task_socket = self.context.socket(zmq.PUSH)
|
|
227
|
+
task_socket.connect(self.task_endpoint)
|
|
228
|
+
self.send_message(task_socket, Message.SHUTDOWN)
|
|
229
|
+
task_socket.close(linger=1)
|
|
230
|
+
except Exception:
|
|
231
|
+
pass
|
|
232
|
+
|
|
233
|
+
pid = self.executor_process.pid
|
|
234
|
+
self.executor_process.join(self.shutdown_timeout)
|
|
235
|
+
# is_alive() is prone to a race condition so catch the case that the PID is already dead
|
|
236
|
+
if self.executor_process.is_alive():
|
|
237
|
+
self.log.debug('sending SIGTERM to worker process {:d}'.format(pid))
|
|
238
|
+
self.executor_process.terminate()
|
|
239
|
+
# try:
|
|
240
|
+
# os.kill(self.executor_process.pid, signal.SIGINT)
|
|
241
|
+
# except ProcessLookupError:
|
|
242
|
+
# self.log.debug('worker process {:d} already dead'.format(pid))
|
|
243
|
+
self.executor_process.join(self.shutdown_timeout)
|
|
244
|
+
if self.executor_process.is_alive():
|
|
245
|
+
self.executor_process.kill()
|
|
246
|
+
self.log.warning('sending SIGKILL to worker process {:d}'.format(pid))
|
|
247
|
+
# try:
|
|
248
|
+
# os.kill(self.executor_process.pid, signal.SIGKILL)
|
|
249
|
+
# except ProcessLookupError:
|
|
250
|
+
# self.log.debug('worker process {:d} already dead'.format(pid))
|
|
251
|
+
self.executor_process.join()
|
|
252
|
+
self.log.debug('worker process {:d} terminated'.format(pid))
|
|
253
|
+
else:
|
|
254
|
+
self.log.debug('worker process {:d} terminated gracefully with code {:d}'.format(pid, self.executor_process.exitcode))
|
|
255
|
+
|
|
256
|
+
def install_signal_handlers(self, signals=None):
|
|
257
|
+
if not signals:
|
|
258
|
+
signals = {signal.SIGINT, signal.SIGQUIT, signal.SIGTERM}
|
|
259
|
+
|
|
260
|
+
for sig in signals:
|
|
261
|
+
signal.signal(sig, signal.SIG_IGN)
|
|
262
|
+
|
|
263
|
+
def startup(self, process_index=None):
|
|
264
|
+
self.install_signal_handlers()
|
|
265
|
+
executor = ZMQExecutor(self.task_endpoint, self.result_endpoint)
|
|
266
|
+
self.executor_process = multiprocessing.Process(target=executor.startup, args=(process_index,))
|
|
267
|
+
self.executor_process.start()
|
|
268
|
+
self.context = zmq.Context()
|
|
269
|
+
self.comm_thread = threading.Thread(target=self.comm_loop)
|
|
270
|
+
self.comm_thread.start()
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
class ZMQExecutor(ZMQCore):
|
|
274
|
+
'''The is the component of the ZMQ WM worker that actually executes tasks.
|
|
275
|
+
This is isolated in a separate process and controlled via ZMQ from
|
|
276
|
+
the ZMQWorker.'''
|
|
277
|
+
|
|
278
|
+
def __init__(self, task_endpoint, result_endpoint):
|
|
279
|
+
super().__init__()
|
|
280
|
+
|
|
281
|
+
self.task_endpoint = task_endpoint
|
|
282
|
+
self.result_endpoint = result_endpoint
|
|
283
|
+
|
|
284
|
+
def comm_loop(self):
|
|
285
|
+
task_socket = self.context.socket(zmq.PULL)
|
|
286
|
+
result_socket = self.context.socket(zmq.PUSH)
|
|
287
|
+
|
|
288
|
+
task_socket.bind(self.task_endpoint)
|
|
289
|
+
result_socket.connect(self.result_endpoint)
|
|
290
|
+
|
|
291
|
+
self.log.info('This is {}'.format(self.node_description))
|
|
292
|
+
|
|
293
|
+
try:
|
|
294
|
+
while True:
|
|
295
|
+
try:
|
|
296
|
+
msg = self.recv_message(task_socket, timeout=100)
|
|
297
|
+
except KeyboardInterrupt:
|
|
298
|
+
break
|
|
299
|
+
except ZMQWMTimeout:
|
|
300
|
+
continue
|
|
301
|
+
else:
|
|
302
|
+
if msg.message == Message.TASK:
|
|
303
|
+
task = msg.payload
|
|
304
|
+
result = task.execute()
|
|
305
|
+
self.send_message(result_socket, Message.RESULT, result)
|
|
306
|
+
elif msg.message == Message.SHUTDOWN:
|
|
307
|
+
break
|
|
308
|
+
finally:
|
|
309
|
+
self.context.destroy(linger=0)
|
|
310
|
+
self.context = None
|
|
311
|
+
|
|
312
|
+
def startup(self, process_index=None):
|
|
313
|
+
if process_index is not None:
|
|
314
|
+
from westpa.work_managers import environment
|
|
315
|
+
|
|
316
|
+
pi_name = '{}_PROCESS_INDEX'.format(environment.WMEnvironment.env_prefix)
|
|
317
|
+
self.log.debug('Setting {}={}'.format(pi_name, process_index))
|
|
318
|
+
os.environ[pi_name] = str(process_index)
|
|
319
|
+
self.context = zmq.Context()
|
|
320
|
+
self.comm_loop()
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: westpa
|
|
3
|
+
Version: 2022.13
|
|
4
|
+
Summary: WESTPA is a package for constructing and running stochastic simulations using the "weighted ensemble" approach of Huber and Kim (1996).
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://westpa.github.io
|
|
7
|
+
Project-URL: Repository, https://github.com/westpa/westpa
|
|
8
|
+
Project-URL: Documentation, https://github.readthedocs.io
|
|
9
|
+
Project-URL: Issues, https://github.com/westpa/westpa/issues
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Operating System :: POSIX
|
|
14
|
+
Classifier: Programming Language :: Python
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Cython
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/x-rst
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: numpy<3,>=1.25.0
|
|
21
|
+
Requires-Dist: scipy>=0.19.1
|
|
22
|
+
Requires-Dist: h5py>=2.10
|
|
23
|
+
Requires-Dist: mdtraj>=1.9.5
|
|
24
|
+
Requires-Dist: pyyaml
|
|
25
|
+
Requires-Dist: pyzmq
|
|
26
|
+
Requires-Dist: matplotlib
|
|
27
|
+
Requires-Dist: blessings
|
|
28
|
+
Requires-Dist: ipykernel
|
|
29
|
+
Requires-Dist: pandas
|
|
30
|
+
Requires-Dist: tqdm
|
|
31
|
+
Requires-Dist: tables
|
|
32
|
+
Provides-Extra: tests
|
|
33
|
+
Requires-Dist: pytest; extra == "tests"
|
|
34
|
+
Requires-Dist: pytest-cov; extra == "tests"
|
|
35
|
+
Requires-Dist: pytest-rerunfailures; extra == "tests"
|
|
36
|
+
Requires-Dist: pytest-timeout; extra == "tests"
|
|
37
|
+
Provides-Extra: mpi
|
|
38
|
+
Requires-Dist: mpi4py; extra == "mpi"
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: westpa[tests]; extra == "dev"
|
|
41
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
42
|
+
Dynamic: license-file
|
|
43
|
+
|
|
44
|
+
===============
|
|
45
|
+
WESTPA 2.0
|
|
46
|
+
===============
|
|
47
|
+
|
|
48
|
+
|ghactions| |anaconda| |tutorial|
|
|
49
|
+
|
|
50
|
+
|docs| |usersgroup|
|
|
51
|
+
|
|
52
|
+
.. |ghactions| image:: https://github.com/westpa/westpa/actions/workflows/test.yaml/badge.svg?branch=westpa2
|
|
53
|
+
:target: https://github.com/westpa/westpa/actions/workflows/test.yaml
|
|
54
|
+
:alt: GitHub Actions
|
|
55
|
+
|
|
56
|
+
.. |docs| image:: https://readthedocs.org/projects/westpa/badge/?version=latest
|
|
57
|
+
:target: https://westpa.readthedocs.io/en/latest/?badge=latest
|
|
58
|
+
:alt: Documentation Status
|
|
59
|
+
|
|
60
|
+
.. |tutorial| image:: https://img.shields.io/badge/WESTPA-tutorials-blueviolet.svg
|
|
61
|
+
:target: https://github.com/westpa/tutorials
|
|
62
|
+
:alt: WESTPA Tutorials GitHub
|
|
63
|
+
|
|
64
|
+
.. |usersgroup| image:: https://img.shields.io/badge/Google%20Group-Users-lightgrey.svg
|
|
65
|
+
:target: http://groups.google.com/group/westpa-users
|
|
66
|
+
:alt: Users Google Group
|
|
67
|
+
|
|
68
|
+
.. |anaconda| image:: https://anaconda.org/conda-forge/westpa/badges/version.svg
|
|
69
|
+
:alt: Anaconda
|
|
70
|
+
:target: https://anaconda.org/conda-forge/westpa
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
--------
|
|
74
|
+
Overview
|
|
75
|
+
--------
|
|
76
|
+
|
|
77
|
+
WESTPA is a package for constructing and running stochastic simulations using the "weighted ensemble" approach
|
|
78
|
+
of Huber and Kim (1996). For use of WESTPA please cite the following:
|
|
79
|
+
|
|
80
|
+
Zwier, M.C., Adelman, J.L., Kaus, J.W., Pratt, A.J., Wong, K.F., Rego, N.B., Suarez, E., Lettieri, S.,
|
|
81
|
+
Wang, D.W., Grabe, M., Zuckerman, D.M., and Chong, L.T. "WESTPA: An Interoperable, Highly
|
|
82
|
+
Scalable Software Package For Weighted Ensemble Simulation and Analysis," J. Chem. Theory Comput., 11: 800−809 (2015).
|
|
83
|
+
|
|
84
|
+
Russo, J. D., Zhang, S., Leung, J.M.G., Bogetti, A.T., Thompson, J.P., DeGrave, A.J., Torrillo, P.A., Pratt, A.J.,
|
|
85
|
+
Wong, K.F., Xia, J., Copperman, J., Adelman, J.L., Zwier, M.C., LeBard, D.N., Zuckerman, D.M., Chong, L.T.
|
|
86
|
+
WESTPA 2.0: High-Performance Upgrades for Weighted Ensemble Simulations and Analysis of Longer-Timescale Applications.
|
|
87
|
+
J. Chem. Theory Comput., 18 (2): 638–649 (2022).
|
|
88
|
+
|
|
89
|
+
See this page_ and this powerpoint_ for an overview of weighted ensemble simulation.
|
|
90
|
+
|
|
91
|
+
To help us fund development and improve WESTPA please fill out a one-minute survey_ and consider
|
|
92
|
+
contributing documentation or code to the WESTPA community.
|
|
93
|
+
|
|
94
|
+
WESTPA is free software, licensed under the terms of the MIT License. See the file ``LICENSE`` for more information.
|
|
95
|
+
|
|
96
|
+
.. _survey: https://docs.google.com/forms/d/e/1FAIpQLSfWaB2aryInU06cXrCyAFmhD_gPibgOfFk-dspLEsXuS9-RGQ/viewform
|
|
97
|
+
.. _page: https://westpa.github.io/westpa/overview.html
|
|
98
|
+
.. _powerpoint: https://docs.google.com/presentation/d/1PKsklN5aYLlLSTDOLdNGti6pcGs4Rgxm/edit?usp=sharing&ouid=117278498028744119802&rtpof=true&sd=true
|
|
99
|
+
|
|
100
|
+
------------
|
|
101
|
+
Requirements
|
|
102
|
+
------------
|
|
103
|
+
|
|
104
|
+
WESTPA is written in Python and requires version 3.10 or later. WESTPA also requires a number of Python scientific software packages.
|
|
105
|
+
The simplest way to meet these requirements is to download the
|
|
106
|
+
Anaconda Python distribution from www.anaconda.com (free for all users).
|
|
107
|
+
|
|
108
|
+
WESTPA currently runs on Unix-like operating systems, including Linux and
|
|
109
|
+
Mac OS X. It is developed and tested on x86_64 machines running Linux.
|
|
110
|
+
|
|
111
|
+
--------------------------------
|
|
112
|
+
Obtaining and Installing WESTPA
|
|
113
|
+
--------------------------------
|
|
114
|
+
|
|
115
|
+
WESTPA is developed and tested on Unix-like operating systems, including Linux and Mac OS X.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
Regardless of the chosen method of installation, before installing WESTPA, we recommend you to first install the Python 3 version provided by the latest free `Anaconda Python distribution`_. After installing Anaconda, create a new python environment for the WESTPA install with the following::
|
|
119
|
+
|
|
120
|
+
conda create -n westpa python=3.11
|
|
121
|
+
conda activate westpa
|
|
122
|
+
|
|
123
|
+
Then, we recommend installing WESTPA through conda or pip. Execute either of the following::
|
|
124
|
+
|
|
125
|
+
conda install -c conda-forge westpa
|
|
126
|
+
|
|
127
|
+
or::
|
|
128
|
+
|
|
129
|
+
python -m pip install westpa
|
|
130
|
+
|
|
131
|
+
See the install instructions on our `wiki`_ for more detailed information.
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
To install from source (**not recommended**), start by downloading the corresponding tar.gz file from the `releases page`_. After downloading the file, unpack the file and install WESTPA by executing the following::
|
|
135
|
+
|
|
136
|
+
tar xvzf westpa-2022.12.tar.gz
|
|
137
|
+
cd westpa
|
|
138
|
+
python -m pip install -e .
|
|
139
|
+
|
|
140
|
+
.. _`releases page`: https://github.com/westpa/westpa/releases
|
|
141
|
+
.. _`Anaconda Python distribution`: https://www.anaconda.com/download
|
|
142
|
+
.. _`wiki`: https://github.com/westpa/westpa/wiki/Installing-WESTPA
|
|
143
|
+
|
|
144
|
+
---------------
|
|
145
|
+
Getting started
|
|
146
|
+
---------------
|
|
147
|
+
|
|
148
|
+
High-level tutorials of how to use the WESTPA software can be found here_.
|
|
149
|
+
Further, all WESTPA command-line tools provide detailed help when
|
|
150
|
+
given the -h/--help option.
|
|
151
|
+
|
|
152
|
+
Finally, while WESTPA is a powerful tool that enables expert simulators to access much longer
|
|
153
|
+
timescales than is practical with standard simulations, there can be a steep learning curve to
|
|
154
|
+
figuring out how to effectively run the simulations on your computing resource of choice.
|
|
155
|
+
For serious users who have completed the online tutorials and are ready for production simulations
|
|
156
|
+
of their system, we invite you to contact Lillian Chong (ltchong AT pitt DOT edu) about spending
|
|
157
|
+
a few days with her lab and/or setting up video conferencing sessions to help you get your
|
|
158
|
+
simulations off the ground.
|
|
159
|
+
|
|
160
|
+
.. _here: https://github.com/westpa/westpa/wiki/Tutorials
|
|
161
|
+
|
|
162
|
+
------------
|
|
163
|
+
Getting help
|
|
164
|
+
------------
|
|
165
|
+
|
|
166
|
+
WESTPA FAQ_
|
|
167
|
+
|
|
168
|
+
A mailing list for WESTPA is available, at which one can ask questions (or see
|
|
169
|
+
if a question one has was previously addressed). This is the preferred means
|
|
170
|
+
for obtaining help and support. See http://groups.google.com/group/westpa-users
|
|
171
|
+
to sign up or search archived messages.
|
|
172
|
+
|
|
173
|
+
.. _FAQ: https://github.com/westpa/westpa/wiki/Frequently-Asked-Questions
|
|
174
|
+
|
|
175
|
+
----------
|
|
176
|
+
Developers
|
|
177
|
+
----------
|
|
178
|
+
|
|
179
|
+
Search archived messages or post to the westpa-devel Google group: https://groups.google.com/group/westpa-devel.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
westpa/__init__.py,sha256=xyNfYIcP2ncBLu_foO1NKmJrQh8-uYdwvMuM0HsOG1M,329
|
|
2
|
+
westpa/_version.py,sha256=HzXELH4G2hwAc_BIg7Hw3TFPzpS3Heelj4osiHQeXZU,499
|
|
3
|
+
westpa/analysis/__init__.py,sha256=CcmVPCB9OSEib0mJ4U-s9v3nrj4h-T_9AGApAbPnn8I,268
|
|
4
|
+
westpa/analysis/core.py,sha256=WhsyNjCI0sB54K5LXWKiuiXEXzh8XmpeIgteRzT9aWo,22599
|
|
5
|
+
westpa/analysis/statistics.py,sha256=M3Gj1bOiAu_SA4upR7gENYEOP2gnIEaSOZeGyoIxAc8,789
|
|
6
|
+
westpa/analysis/trajectories.py,sha256=n43ZCqSVLOp_jN518cfTfvTqX5Wzz4kdW0oNIS5oUjA,13196
|
|
7
|
+
westpa/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
westpa/cli/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
westpa/cli/core/w_fork.py,sha256=UZVY6nUdMRRbKPfNFGAfEAu7tVhu7NewopPdQ0s8cz8,5693
|
|
10
|
+
westpa/cli/core/w_init.py,sha256=V_CvlAuq8flg-zUO01sbMGYkLqrEDD4DU9sV90bYFus,8793
|
|
11
|
+
westpa/cli/core/w_run.py,sha256=9fLOJjCYQadB28gdsKwGxwjJtSB5u0DRITzAWmL3rJg,2159
|
|
12
|
+
westpa/cli/core/w_states.py,sha256=Fkr0WdUut59vPtj0_TZWAmY5_qf5H_WsoiusO7Slz50,9433
|
|
13
|
+
westpa/cli/core/w_succ.py,sha256=ZK1MHHu7t53VdBrRgJUe7b1R8DnhMKPjHOqbbOjC_As,3074
|
|
14
|
+
westpa/cli/core/w_truncate.py,sha256=QdIwMespZD69t3tDkqC1bZRo4CICs18ShlVXYSeFPd8,2030
|
|
15
|
+
westpa/cli/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
westpa/cli/tools/ploterr.py,sha256=Fm4Yoexm2c1H5_H8t2GMsXncHcJAltWpp0c5XMnDpW0,18906
|
|
17
|
+
westpa/cli/tools/plothist.py,sha256=2jpAk_-T2XoWUExUyUNk0JOucPjQX51JxtntXRlQ54I,28051
|
|
18
|
+
westpa/cli/tools/w_assign.py,sha256=ISCbozLoIJtZXxMrmXDbh_EplPPW7ltpK_Jp1fvUFH8,25957
|
|
19
|
+
westpa/cli/tools/w_bins.py,sha256=e9YMvQoQ5jjzBK8zlZgXNDCDhFGMMKgb2b-UdyI_qgQ,6801
|
|
20
|
+
westpa/cli/tools/w_crawl.py,sha256=qbQ5jp0EDFIY6DQovM_t8KRW8we257KV8eXjBBNXFCA,4109
|
|
21
|
+
westpa/cli/tools/w_direct.py,sha256=S2qICD66sW03KacMY7byQnSccyBBxZLwgocrymghO38,22720
|
|
22
|
+
westpa/cli/tools/w_dumpsegs.py,sha256=uv0WxvKGauyW6VT3zGyALUXVqSXwDrhwbF3ZVSJV9Mo,3952
|
|
23
|
+
westpa/cli/tools/w_eddist.py,sha256=pAZVIOSgMiJxo7f6AXES_UhAwMaeK4S5Tl58O21hB-w,20056
|
|
24
|
+
westpa/cli/tools/w_fluxanl.py,sha256=jQ3X2yoBlr0QyVPZjMefTm1jLnhaCGrrIMqdvYlQhRg,15453
|
|
25
|
+
westpa/cli/tools/w_ipa.py,sha256=qpQIKk1nBzWjouT4hKgBuIT9AnO0rKZ0AwCzp_40vJo,37457
|
|
26
|
+
westpa/cli/tools/w_kinavg.py,sha256=MjmomiIWoBnjfm8Pq-93y6DoCq26DbCxdJ5bcP-25Ys,4324
|
|
27
|
+
westpa/cli/tools/w_kinetics.py,sha256=ALx8t9GGARfdMxgkPEqQzWoRVQkqJneM4EZF2ur_oPk,3542
|
|
28
|
+
westpa/cli/tools/w_multi_west.py,sha256=Vye1OTiyFHaUkPKMxyOediE1_6hq-EMp7SeoaVO7rwk,20049
|
|
29
|
+
westpa/cli/tools/w_ntop.py,sha256=9Mmz0ZeIyP55N6stuO3FSpFg3Whp4Cu4pmkDEoBGmIk,8234
|
|
30
|
+
westpa/cli/tools/w_pdist.py,sha256=I7yGHMvmU--jjuZNMSxtTSR_vLVhYvhJpjluzcjPGaQ,20821
|
|
31
|
+
westpa/cli/tools/w_postanalysis_matrix.py,sha256=owHtPNcD2RF33C-3oq4LhNWG6M-_nWCGenrNtV574Dc,3227
|
|
32
|
+
westpa/cli/tools/w_postanalysis_reweight.py,sha256=lFjSuBWZ-25AKwA6_ee168BfINjbnVmxPDxYKJHFUkw,1808
|
|
33
|
+
westpa/cli/tools/w_red.py,sha256=zDLdQ--DYPu4t1w8YXEfNWMt3grKLg2ezwEwfgnbluA,15421
|
|
34
|
+
westpa/cli/tools/w_reweight.py,sha256=n3O7ULAHwPRYME_eIDtsJmI5atSDC1CquR_jsIAQhac,33412
|
|
35
|
+
westpa/cli/tools/w_select.py,sha256=cNtuIgv8-P7bPyHDJmbrVwSasMFth5ULVTpz2QjVdfU,9717
|
|
36
|
+
westpa/cli/tools/w_stateprobs.py,sha256=fOaHZe7RYCNsIJmbXQqkdU6_cxqKcQLrKh2sxdaYvIQ,3872
|
|
37
|
+
westpa/cli/tools/w_timings.py,sha256=efzcWS_Hl1h0eaLGNOrW0GWwEl3ixfYUpoSKvqb9NBk,3530
|
|
38
|
+
westpa/cli/tools/w_trace.py,sha256=CTZ9xoHCcKOkxy_UX21mCDNJ6wQSEksobKG20anOAE4,23166
|
|
39
|
+
westpa/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
westpa/core/_rc.py,sha256=oXdBGsVF6F594PZ9hWjAylyNp8dhSq3GSgptUD4rgBs,25508
|
|
41
|
+
westpa/core/data_manager.py,sha256=AUlagEphGk8sFxOeS4-B3Fk9k55Wn98H8X64xG9zU9o,74990
|
|
42
|
+
westpa/core/extloader.py,sha256=yxyJN-lHo3Zjd6jS6_uhC1fIl52H-h8sbV9zYJfEWGg,2239
|
|
43
|
+
westpa/core/h5io.py,sha256=lbdfCVY3Z0n1pZS9bDhrbvHR6JS6z4c30rlaa3IbHrs,41375
|
|
44
|
+
westpa/core/progress.py,sha256=tEDDn-JPY6ZNzYqyrdgA7peo7pDu8kOMvqfyiHWUgps,6753
|
|
45
|
+
westpa/core/segment.py,sha256=Gd_5htIZ6xKxxCms9XMtJncehGvMVxZeNdy4drxrnpc,4421
|
|
46
|
+
westpa/core/sim_manager.py,sha256=w5u5UB7eOIBTJ89_3PibVwhuzkI5tf4CT_eqzkv5Tzg,39160
|
|
47
|
+
westpa/core/states.py,sha256=eVEqpQTMyoKmNwz3DFD2S0wM_4vVayl35wbKK3JUJ0Q,13327
|
|
48
|
+
westpa/core/systems.py,sha256=pb9YNFUcDhx3Fvhb0NcjlPCdhSUk41IhI0Sqdtr91q8,3693
|
|
49
|
+
westpa/core/textio.py,sha256=lqohyyyfMTkFvTdQ8V45yUpASiJsWTh42XAG15K63dA,2434
|
|
50
|
+
westpa/core/trajectory.py,sha256=f1DZKcQ3Y1yts4owaG3U8VYbQ0ihSeTb2H1uwG1HdrY,20022
|
|
51
|
+
westpa/core/we_driver.py,sha256=cEEbMwnadeK16CGbOnFiJoFzs7F9SSdf7-0BLCT4F1c,40751
|
|
52
|
+
westpa/core/wm_ops.py,sha256=o_pc0BHpfCkbveTO5h76hxjXJpQgw1S-zIzVmM_u-Qc,1529
|
|
53
|
+
westpa/core/yamlcfg.py,sha256=FVPxZaJ9Hz8TpmcbDVee_tunygnUdMpMlUj78qrWftE,8974
|
|
54
|
+
westpa/core/binning/__init__.py,sha256=XmjBP6fg_id_vDELkcWW3u2GeuL5OPWblvX-kc7mINk,1297
|
|
55
|
+
westpa/core/binning/_assign.c,sha256=VSzMZuZBSaxTVoQyUNP2tNRizAhe0efllDKrJljH7hM,1452150
|
|
56
|
+
westpa/core/binning/_assign.cpython-312-aarch64-linux-gnu.so,sha256=LgJTc9p-X4ZnOBHNx_G7prOq8taLR8VVnBUu04GvzNc,2279680
|
|
57
|
+
westpa/core/binning/_assign.pyx,sha256=PB6l6zMu2M0t6CPwsdumfqRyr_6XWH2F5orx5bXl-fE,14616
|
|
58
|
+
westpa/core/binning/assign.py,sha256=BK36b890emddIqlJgj6NY3rOT0cq7IeFiwiSc5v0dQw,18110
|
|
59
|
+
westpa/core/binning/binless.py,sha256=Fb9TI5swQntzXjmlWFbYQ9yjzjLxDKNVVdmRxRqOnIY,4056
|
|
60
|
+
westpa/core/binning/binless_driver.py,sha256=T5qWpLnjxCS9RdKeWf7eVCC_s6TQFDENL7X3VG6JIYo,2231
|
|
61
|
+
westpa/core/binning/binless_manager.py,sha256=n-2JXiPnoZf33mv54NN7uYdgPucP1y6e-CmeSoU-i4w,9414
|
|
62
|
+
westpa/core/binning/bins.py,sha256=WDj7DNX3MTVkRvkgAooa9G8VThxw32uIfMTuk9sS194,1460
|
|
63
|
+
westpa/core/binning/mab.py,sha256=lH8bBxmIzhje1mK18PrN3yUcb_Ghqud63IKv9D7wP08,20296
|
|
64
|
+
westpa/core/binning/mab_driver.py,sha256=azSqc9pqHk_zc1ptGNjXARDbK-UAnPVmCiYwebi5mPY,2223
|
|
65
|
+
westpa/core/binning/mab_manager.py,sha256=07Kx1oSWVS-fN9GBOKEYokkMNXUu7jr1UaJOHPL9G5U,9815
|
|
66
|
+
westpa/core/kinetics/__init__.py,sha256=djtiki7X5-IEzwjwswbdgrolwUIzVAHKxCiI5B3WH28,510
|
|
67
|
+
westpa/core/kinetics/_kinetics.c,sha256=4o0OcEeQ1EfYH_sxlaqoItXrpy7VTdv7gnzYKqNr-lY,1911949
|
|
68
|
+
westpa/core/kinetics/_kinetics.cpython-312-aarch64-linux-gnu.so,sha256=6t3SWj545tVg2iENRfU6Yy6uGxVA4RrxDGSvbnZRl3Q,3185976
|
|
69
|
+
westpa/core/kinetics/_kinetics.pyx,sha256=eTolsM069Fn1ijiRG8ChdwkxZpbqQjpo15R7jqV2unM,29532
|
|
70
|
+
westpa/core/kinetics/events.py,sha256=VqYBN5rVOf3hAYUA6xQ6UN7GP6tVgRFIoP69tfGhkTo,6511
|
|
71
|
+
westpa/core/kinetics/matrates.py,sha256=3kpmV8GJ0mv-8Iy_IdUCfo-gWOGtMzUWHmkibYRgyzs,5569
|
|
72
|
+
westpa/core/kinetics/rate_averaging.py,sha256=gIKDXBAOSDI6KythepoC4QipUPksTRBc9zbM7DRtwo4,10300
|
|
73
|
+
westpa/core/propagators/__init__.py,sha256=rx_kkeg3Tbb_rI0uhLGCD3OwSYj9QuhxF8QGN3mILrg,2373
|
|
74
|
+
westpa/core/propagators/executable.py,sha256=jInxV1QQHtB-d0l6U-S-W40Up6W_l-YoT_BO_zE5_yE,27627
|
|
75
|
+
westpa/core/propagators/loaders.py,sha256=TColR8wh6EEuFmh7ocqnBejFjcAnyzdepKhxOoeAcLs,8300
|
|
76
|
+
westpa/core/reweight/__init__.py,sha256=8goYojsHMcJCZblBC2sc2fcj-NUNVEstbSLswKNlVfg,284
|
|
77
|
+
westpa/core/reweight/_reweight.c,sha256=yc2O1XADfZfeCYCeFYJcQ43jNU56TxsK8BJlC1_Ot98,1490896
|
|
78
|
+
westpa/core/reweight/_reweight.cpython-312-aarch64-linux-gnu.so,sha256=l8QPOoHnmnUgyAGubNoB66CeukbwBudQNiVXCL5ZqHA,2434288
|
|
79
|
+
westpa/core/reweight/_reweight.pyx,sha256=-1yuuRGaKJWhfYXAX2QzeKUCEO-9JrXYuNsDFSDksYQ,14521
|
|
80
|
+
westpa/core/reweight/matrix.py,sha256=219sRxkML1V9niPIndSoRvJAC0fUmpG0PLDKpmfWW-g,5509
|
|
81
|
+
westpa/fasthist/__init__.py,sha256=oWj0gKEkKfHjGHwkzmpgAxDz55h2ze_sqQVzWSsOP6s,1071
|
|
82
|
+
westpa/fasthist/_fasthist.c,sha256=WpiPb9UqHaJrv6bonaamu1-Dz2Gpch2iTzIzp-GtYW4,1521431
|
|
83
|
+
westpa/fasthist/_fasthist.cpython-312-aarch64-linux-gnu.so,sha256=7ybpg63kqlmU29eQiM49eO22x8jmmee9Q6rKu8wAIaw,2312904
|
|
84
|
+
westpa/fasthist/_fasthist.pyx,sha256=3JJwTA-ZcT25KzwmQIuItFBRi4z3-h7zcDqkHep8Owk,10093
|
|
85
|
+
westpa/mclib/__init__.py,sha256=idY4CVkcsjx0iIJZ9AcNQdSq3PZcSOFZrqBaOqvYlpU,11653
|
|
86
|
+
westpa/mclib/__main__.py,sha256=cKqfE9koMcrHkslEPpFISA4Eblwl0mllaxn7pFeyX1A,881
|
|
87
|
+
westpa/mclib/_mclib.c,sha256=3nnjZGksYOGvaX70Nm3I2DRtevFde-uycPIs8jmn0vM,1333524
|
|
88
|
+
westpa/mclib/_mclib.cpython-312-aarch64-linux-gnu.so,sha256=aIo77PJ8sAE1u4tgSn-i-UfVZDBkU1rktgU-HwmrmyQ,2213264
|
|
89
|
+
westpa/mclib/_mclib.pyx,sha256=Wx3txJyqlfJg2vTfHSapGp8q54chJuM9XhaWAIuCTXY,7931
|
|
90
|
+
westpa/oldtools/__init__.py,sha256=rxAxsQNQMADy5j8xrqW_7Vk3D9ajM7lfDjHaKQHRDTI,62
|
|
91
|
+
westpa/oldtools/files.py,sha256=JmLtZqxD88cybEHcOU6kodAeOJYxylpYFl4OQqU13Hs,944
|
|
92
|
+
westpa/oldtools/miscfn.py,sha256=595W28JazmiU9ioDgOKU9ZxtXJue_q-8WcpOKTgkikQ,909
|
|
93
|
+
westpa/oldtools/aframe/__init__.py,sha256=1MMuHYaL790Y1bh7NU3gweTYRIr2xgR1U9bmNrJVrSM,1047
|
|
94
|
+
westpa/oldtools/aframe/atool.py,sha256=5_ZkivLChU1wMaEvI-F7i-huMRYg2Dy8AH36eivWI0Y,2185
|
|
95
|
+
westpa/oldtools/aframe/base_mixin.py,sha256=OAK5NfVfwdPxvFzhxxT_oEnFKR_5s0NRoqTVA6G1gXY,654
|
|
96
|
+
westpa/oldtools/aframe/binning.py,sha256=L259HcIn-1Qz1AKUWBXjZ3HFE0odry7OZf-aG070fSE,7565
|
|
97
|
+
westpa/oldtools/aframe/data_reader.py,sha256=nuIkR-vFRW_stcXwcjMSZI1RO73By-x-phfTrlD73Jc,20927
|
|
98
|
+
westpa/oldtools/aframe/iter_range.py,sha256=HFODveMwtKAbHXpbt8bII7edVy8RqwC-QPlLXLX66dU,8465
|
|
99
|
+
westpa/oldtools/aframe/kinetics.py,sha256=Ohq_B6zbxE6wVX40Ox8FuiGmnrhQ0h4ovvZnJuoul-I,4389
|
|
100
|
+
westpa/oldtools/aframe/mcbs.py,sha256=TmHGoatGId8iL1g1RiLiqZBwjl0ipFhtza2e0mxuyn8,6037
|
|
101
|
+
westpa/oldtools/aframe/output.py,sha256=SVFF-fXsl12f8mV5xTvy8rm5YIs_p4xDvN8zEYaVnTE,1540
|
|
102
|
+
westpa/oldtools/aframe/plotting.py,sha256=IUa8XmuT_tkWmmbMZluKzsBrUfcfce7Phk9xigacOu4,2455
|
|
103
|
+
westpa/oldtools/aframe/trajwalker.py,sha256=mXkLMg3aIBo76fogCXZs3xNwpTc9Y6qfHNIEhYRIERg,5540
|
|
104
|
+
westpa/oldtools/aframe/transitions.py,sha256=3cQan9ju2s5hW9KvYs38kuKvSh5RjAsvHlvaY2eOZ_M,18542
|
|
105
|
+
westpa/oldtools/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
+
westpa/oldtools/cmds/w_ttimes.py,sha256=5fmAMwqfEuaLd5FK2eXtzBtAIG2aogjlWzBHCpyCpaM,13243
|
|
107
|
+
westpa/oldtools/stats/__init__.py,sha256=KFbQJ1tD1Dnq6x50hv_g8xlaL45E65cATSg4APIzweY,119
|
|
108
|
+
westpa/oldtools/stats/accumulator.py,sha256=AZ1RshALSHjdhfDXidE5_yHaDEsdDXfSzsmogECCoJ8,1137
|
|
109
|
+
westpa/oldtools/stats/edfs.py,sha256=qwgSVoNk_UnnPi1SvXnrQQR28cS-irZvwCErbXdWW1I,4096
|
|
110
|
+
westpa/oldtools/stats/mcbs.py,sha256=pkjV9QPNJQvwW0fURDOkr6OvTS20VVbcCp4bVp0iOMA,3511
|
|
111
|
+
westpa/tools/__init__.py,sha256=HZ4dvK0DV20RfuSzbABWz1qJMIEd1MinBa4tnSDgXa0,1032
|
|
112
|
+
westpa/tools/binning.py,sha256=JtkOcU20IMX98MUp0mH7YMS_R3ENv11mnT8mD8qxojs,20713
|
|
113
|
+
westpa/tools/core.py,sha256=y8kn8TN_R8h3iRE5oES-0BFHk3QLQMOmN66HrlXLons,12102
|
|
114
|
+
westpa/tools/data_reader.py,sha256=i4Uv4OGwiPN-vLrCGOf1vtgMgnLqIg0fYVA0Jn4iXG4,6316
|
|
115
|
+
westpa/tools/dtypes.py,sha256=5aEHhfqX6BJuTBUyirehZJ_G3al1q5GSWZSHyQmhynU,913
|
|
116
|
+
westpa/tools/iter_range.py,sha256=nVQIvqJ9oXOALyQIFsFp_UqMjW5BBQUd1ShZttb20xo,8730
|
|
117
|
+
westpa/tools/kinetics_tool.py,sha256=E_Yy4iYr7AxAOLNaty4j2CmczDBfMVJGSlQs4zIL_5A,14890
|
|
118
|
+
westpa/tools/plot.py,sha256=JlNe5GenVYjnEPNC_6kesu5qv9H6HFOfrBUjGHfSMqY,12854
|
|
119
|
+
westpa/tools/progress.py,sha256=LimIp3qr7rO7ZLGg2SgieFkzEYk1Sn8BtMAhOLRalnA,499
|
|
120
|
+
westpa/tools/selected_segs.py,sha256=cC6YKvhxj6IPz9ybF9Te89nBEKtcaypTjzKPPDQC2uc,4943
|
|
121
|
+
westpa/tools/wipi.py,sha256=ozNkR9d3oAUQn_TCyCk2bEKQWEmn6_NOtjXzAJPN1kM,29046
|
|
122
|
+
westpa/trajtree/__init__.py,sha256=K64Ok5bUP-fXo1H2rigJqxCnm-U23tJlRngNOnzR3gs,96
|
|
123
|
+
westpa/trajtree/_trajtree.c,sha256=KgasMd3dqY4VqL_rMjXEZXsDiX4vpKii5xPpMWJDn6o,765132
|
|
124
|
+
westpa/trajtree/_trajtree.cpython-312-aarch64-linux-gnu.so,sha256=q-qn6iaj8GYv4T-6QYl0xmkXFpjAtyH9Xx_wmBmlbHc,1184640
|
|
125
|
+
westpa/trajtree/_trajtree.pyx,sha256=w0iXHlQUHTZZrFvw-5RK72iXVbdPFY008C1_kN6DpUA,5378
|
|
126
|
+
westpa/trajtree/trajtree.py,sha256=sLf4kTi0QyvFdbSR__YcPwOR2wcOxtlkC4IPUFcq-9M,4497
|
|
127
|
+
westpa/westext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
|
+
westpa/westext/adaptvoronoi/__init__.py,sha256=Zk7CiLsUJr3qZwZPKSqOBTOVV8uUvsMXkCbiTflMLHA,88
|
|
129
|
+
westpa/westext/adaptvoronoi/adaptVor_driver.py,sha256=xZdBJo-VcX8USB-vpBZWh1qDCMwP-_GMl7V04zaxXN4,8827
|
|
130
|
+
westpa/westext/hamsm_restarting/__init__.py,sha256=0vhEngHBLOp89Mp1CVvt9BYDPosrc1nWGZVNicKFuf8,59
|
|
131
|
+
westpa/westext/hamsm_restarting/example_overrides.py,sha256=3eDzKh_F0yNVm0lN4u0Pnrnj_WR9y4JDXa1-CU7qlbY,1065
|
|
132
|
+
westpa/westext/hamsm_restarting/restart_driver.py,sha256=c5D1I82NVo93_zPcGVtA12c2P10mK_NmkBx06upz-GU,50284
|
|
133
|
+
westpa/westext/stringmethod/__init__.py,sha256=1Nk3Uygs6GWr_FJbNH0Rss2DENurIm4WGx86V0qXxy8,310
|
|
134
|
+
westpa/westext/stringmethod/fourier_fitting.py,sha256=499B3GdZ_pYuFP6kK7ICDnL8StMHSKgrjPX9Xyl1NL8,2256
|
|
135
|
+
westpa/westext/stringmethod/string_driver.py,sha256=8z4pEuflwRx0mb-KaRaqEk98cYUd2cvjglXDp4BRNQQ,9369
|
|
136
|
+
westpa/westext/stringmethod/string_method.py,sha256=4Mb2rtlnIWm7Xym3Lu5RB3c5HulE8tl6Jj3HYvYFjAQ,10421
|
|
137
|
+
westpa/westext/weed/BinCluster.py,sha256=sx9xzZy_ot54TkFuBrCXzAtdAwT89TQEpj2cexx9lVo,7680
|
|
138
|
+
westpa/westext/weed/ProbAdjustEquil.py,sha256=LEJyaEYPaHkXH6lIxgsSKbqTTtuwaoQ-IiBaR9r7Dlk,4248
|
|
139
|
+
westpa/westext/weed/UncertMath.py,sha256=RvmETtO4Jr7ti_aaO9jlzTTemqkbtwFljT6Thibn_u8,8768
|
|
140
|
+
westpa/westext/weed/__init__.py,sha256=LTg42k-I3HbtOWkbWkMHOLA-AK23rFz2ja8zg0qFCvk,451
|
|
141
|
+
westpa/westext/weed/weed_driver.py,sha256=zYwFNpJnocds3DHOEz0P3WJU0CzfnuKoBSuVM543jKs,8770
|
|
142
|
+
westpa/westext/wess/ProbAdjust.py,sha256=zc0H_SURBTgxvZFQCFrXeq_pHzRDAG-ejnD6WKQGt5o,3233
|
|
143
|
+
westpa/westext/wess/__init__.py,sha256=5nw6mcZx7eI4szw0v2q8XBusvb0Q2MUCgGKQUx2j0DE,153
|
|
144
|
+
westpa/westext/wess/wess_driver.py,sha256=6-qAfSL8MNrZqIT76ewOjotcJnIVWubfHynHscGEwQE,9632
|
|
145
|
+
westpa/work_managers/__init__.py,sha256=nHbI9PmRosOeZ11gCHIwpv9qwgXbwUnGt9vIZ0nLtOg,1670
|
|
146
|
+
westpa/work_managers/core.py,sha256=NVe9XhcfizBzXjkymgeo0xLzNLP0tP6-VoTE0uxu91U,15061
|
|
147
|
+
westpa/work_managers/environment.py,sha256=WexOkNB8ovvByB78kXB6uzm7nlE-fIB42IpfLIvZzoI,4948
|
|
148
|
+
westpa/work_managers/mpi.py,sha256=ArxswC1CMgBc5rZ1nr4cQQvwHlCWAcN-BkZt8ilhSgk,9511
|
|
149
|
+
westpa/work_managers/processes.py,sha256=Mtpm3FCR9UoiK3rbofHIdwHPfM_bwgM3sz7fJekQQnE,7757
|
|
150
|
+
westpa/work_managers/serial.py,sha256=fo5Sql5wO4PdFy2VbcssWy0G459MJwKjRWkklK6nDxo,694
|
|
151
|
+
westpa/work_managers/threads.py,sha256=-Xktf-LPqVRf7sMW7Yqdc_ayO_4x_f0zA9iZS_G-fuI,2335
|
|
152
|
+
westpa/work_managers/zeromq/__init__.py,sha256=rrl4YbEaZr2AiEBTMlhvEFH83dBlAwWR_1L8UkqoJVs,438
|
|
153
|
+
westpa/work_managers/zeromq/core.py,sha256=XtwJRvB5I-2V2vYhR_T4tTLKxObsMgPvBbjSz2bJUX4,22731
|
|
154
|
+
westpa/work_managers/zeromq/node.py,sha256=CeoJhXVqrZxrV3lMnDtm3LNkGFxjS4dr3E6wd7ZQRTE,4877
|
|
155
|
+
westpa/work_managers/zeromq/work_manager.py,sha256=UB_WvnejDRVi1ZU2QWpP9uzhnccOH7b3qHgU-wSstTY,22425
|
|
156
|
+
westpa/work_managers/zeromq/worker.py,sha256=YE-iU7_yOiVIu8Aal5j-qrq8sNsG4JSVtRJAiFjnBcw,12940
|
|
157
|
+
westpa-2022.13.dist-info/METADATA,sha256=2mWrLTLmQwHBeKAAJ9rrNqw0HwzUUZm_uNt37nSr8n0,7392
|
|
158
|
+
westpa-2022.13.dist-info/WHEEL,sha256=8dLfIaEdZhvKMcxjctjlRF9OMhsXJ-Ot8dAcG4hIc8U,193
|
|
159
|
+
westpa-2022.13.dist-info/entry_points.txt,sha256=ynuyZj7vSuOx3tVXj7_PAduVblO9YoN4pm-aikyB0gE,1479
|
|
160
|
+
westpa-2022.13.dist-info/top_level.txt,sha256=otaLnQtwo9jKCJmja4iOOsOVDThUvPfjJaeLrgGEhlE,7
|
|
161
|
+
westpa-2022.13.dist-info/RECORD,,
|
|
162
|
+
westpa-2022.13.dist-info/licenses/LICENSE,sha256=I2wUldIRJmflTYUxmSiITSZEKvlovlMPrE3JU5IslkY,1074
|