westpa 2022.10__cp312-cp312-macosx_10_9_x86_64.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.
Potentially problematic release.
This version of westpa might be problematic. Click here for more details.
- westpa/__init__.py +14 -0
- westpa/_version.py +21 -0
- westpa/analysis/__init__.py +5 -0
- westpa/analysis/core.py +746 -0
- westpa/analysis/statistics.py +27 -0
- westpa/analysis/trajectories.py +360 -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 +59 -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 +596 -0
- westpa/cli/tools/w_bins.py +166 -0
- westpa/cli/tools/w_crawl.py +119 -0
- westpa/cli/tools/w_direct.py +547 -0
- westpa/cli/tools/w_dumpsegs.py +94 -0
- westpa/cli/tools/w_eddist.py +506 -0
- westpa/cli/tools/w_fluxanl.py +378 -0
- westpa/cli/tools/w_ipa.py +833 -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 +486 -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_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.cpython-312-darwin.so +0 -0
- westpa/core/binning/assign.py +449 -0
- westpa/core/binning/binless.py +96 -0
- westpa/core/binning/binless_driver.py +54 -0
- westpa/core/binning/binless_manager.py +190 -0
- westpa/core/binning/bins.py +47 -0
- westpa/core/binning/mab.py +427 -0
- westpa/core/binning/mab_driver.py +54 -0
- westpa/core/binning/mab_manager.py +198 -0
- westpa/core/data_manager.py +1694 -0
- westpa/core/extloader.py +74 -0
- westpa/core/h5io.py +995 -0
- westpa/core/kinetics/__init__.py +24 -0
- westpa/core/kinetics/_kinetics.cpython-312-darwin.so +0 -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 +715 -0
- westpa/core/reweight/__init__.py +14 -0
- westpa/core/reweight/_reweight.cpython-312-darwin.so +0 -0
- westpa/core/reweight/matrix.py +126 -0
- westpa/core/segment.py +119 -0
- westpa/core/sim_manager.py +830 -0
- westpa/core/states.py +359 -0
- westpa/core/systems.py +93 -0
- westpa/core/textio.py +74 -0
- westpa/core/trajectory.py +330 -0
- westpa/core/we_driver.py +908 -0
- westpa/core/wm_ops.py +43 -0
- westpa/core/yamlcfg.py +391 -0
- westpa/fasthist/__init__.py +34 -0
- westpa/fasthist/__main__.py +110 -0
- westpa/fasthist/_fasthist.cpython-312-darwin.so +0 -0
- westpa/mclib/__init__.py +264 -0
- westpa/mclib/__main__.py +28 -0
- westpa/mclib/_mclib.cpython-312-darwin.so +0 -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 +146 -0
- westpa/oldtools/aframe/output.py +39 -0
- westpa/oldtools/aframe/plotting.py +90 -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 +358 -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 +89 -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 +340 -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.cpython-312-darwin.so +0 -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 +182 -0
- westpa/westext/wess/ProbAdjust.py +101 -0
- westpa/westext/wess/__init__.py +6 -0
- westpa/westext/wess/wess_driver.py +207 -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 +187 -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 +641 -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.10.dist-info/AUTHORS +22 -0
- westpa-2022.10.dist-info/LICENSE +21 -0
- westpa-2022.10.dist-info/METADATA +183 -0
- westpa-2022.10.dist-info/RECORD +150 -0
- westpa-2022.10.dist-info/WHEEL +5 -0
- westpa-2022.10.dist-info/entry_points.txt +29 -0
- westpa-2022.10.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
from westpa.tools import WESTParallelTool, WESTDataReader, IterRangeSelection, ProgressIndicatorComponent
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
|
|
5
|
+
from westpa.core import h5io
|
|
6
|
+
from westpa.core.data_manager import seg_id_dtype, n_iter_dtype, weight_dtype
|
|
7
|
+
from westpa.core.extloader import get_object
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _find_matching_segments(west_datafile_name, n_iter, predicate, invert=False):
|
|
11
|
+
'''Find all segments in iteration ``n_iter`` that match (or do not match, if
|
|
12
|
+
``invert`` is true) the given ``predicate``. Returns a sequence of matching
|
|
13
|
+
seg_ids.'''
|
|
14
|
+
|
|
15
|
+
with h5io.WESTPAH5File(west_datafile_name, 'r') as west_datafile:
|
|
16
|
+
iter_group = west_datafile.get_iter_group(n_iter)
|
|
17
|
+
nsegs = iter_group['seg_index'].shape[0]
|
|
18
|
+
matching_ids = set(map(int, predicate(n_iter, iter_group)))
|
|
19
|
+
|
|
20
|
+
if invert:
|
|
21
|
+
matching_ids = set(range(nsegs)) - matching_ids
|
|
22
|
+
|
|
23
|
+
matchvec = sorted(np.fromiter(matching_ids, dtype=seg_id_dtype, count=len(matching_ids)))
|
|
24
|
+
return n_iter, matchvec
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class WSelectTool(WESTParallelTool):
|
|
28
|
+
prog = 'w_select'
|
|
29
|
+
description = '''\
|
|
30
|
+
Select dynamics segments matching various criteria. This requires a
|
|
31
|
+
user-provided prediate function. By default, only matching segments are
|
|
32
|
+
stored. If the -a/--include-ancestors option is given, then matching segments
|
|
33
|
+
and their ancestors will be stored.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
-----------------------------------------------------------------------------
|
|
37
|
+
Predicate function
|
|
38
|
+
-----------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
Segments are selected based on a predicate function, which must be callable
|
|
41
|
+
as ``predicate(n_iter, iter_group)`` and return a collection of segment IDs
|
|
42
|
+
matching the predicate in that iteration.
|
|
43
|
+
|
|
44
|
+
The predicate may be inverted by specifying the -v/--invert command-line
|
|
45
|
+
argument.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
-----------------------------------------------------------------------------
|
|
49
|
+
Output format
|
|
50
|
+
-----------------------------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
The output file (-o/--output, by default "select.h5") contains the following
|
|
53
|
+
datasets:
|
|
54
|
+
|
|
55
|
+
``/n_iter`` [iteration]
|
|
56
|
+
*(Integer)* Iteration numbers for each entry in other datasets.
|
|
57
|
+
|
|
58
|
+
``/n_segs`` [iteration]
|
|
59
|
+
*(Integer)* Number of segment IDs matching the predicate (or inverted
|
|
60
|
+
predicate, if -v/--invert is specified) in the given iteration.
|
|
61
|
+
|
|
62
|
+
``/seg_ids`` [iteration][segment]
|
|
63
|
+
*(Integer)* Matching segments in each iteration. For an iteration
|
|
64
|
+
``n_iter``, only the first ``n_iter`` entries are valid. For example,
|
|
65
|
+
the full list of matching seg_ids in the first stored iteration is
|
|
66
|
+
``seg_ids[0][:n_segs[0]]``.
|
|
67
|
+
|
|
68
|
+
``/weights`` [iteration][segment]
|
|
69
|
+
*(Floating-point)* Weights for each matching segment in ``/seg_ids``.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
-----------------------------------------------------------------------------
|
|
73
|
+
Command-line arguments
|
|
74
|
+
-----------------------------------------------------------------------------
|
|
75
|
+
'''
|
|
76
|
+
|
|
77
|
+
def __init__(self):
|
|
78
|
+
super().__init__()
|
|
79
|
+
|
|
80
|
+
self.data_reader = WESTDataReader()
|
|
81
|
+
self.iter_range = IterRangeSelection()
|
|
82
|
+
self.progress = ProgressIndicatorComponent()
|
|
83
|
+
self.output_file = None
|
|
84
|
+
self.output_filename = None
|
|
85
|
+
self.predicate = None
|
|
86
|
+
self.invert = False
|
|
87
|
+
self.include_ancestors = False
|
|
88
|
+
|
|
89
|
+
def add_args(self, parser):
|
|
90
|
+
self.data_reader.add_args(parser)
|
|
91
|
+
self.iter_range.add_args(parser)
|
|
92
|
+
|
|
93
|
+
sgroup = parser.add_argument_group('selection options')
|
|
94
|
+
sgroup.add_argument(
|
|
95
|
+
'-p',
|
|
96
|
+
'--predicate-function',
|
|
97
|
+
metavar='MODULE.FUNCTION',
|
|
98
|
+
help='''Use the given predicate function to match segments. This function
|
|
99
|
+
should take an iteration number and the HDF5 group corresponding to that
|
|
100
|
+
iteration and return a sequence of seg_ids matching the predicate, as in
|
|
101
|
+
``match_predicate(n_iter, iter_group)``.''',
|
|
102
|
+
)
|
|
103
|
+
sgroup.add_argument('-v', '--invert', dest='invert', action='store_true', help='''Invert the match predicate.''')
|
|
104
|
+
sgroup.add_argument(
|
|
105
|
+
'-a', '--include-ancestors', action='store_true', help='''Include ancestors of matched segments in output.'''
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
ogroup = parser.add_argument_group('output options')
|
|
109
|
+
ogroup.add_argument('-o', '--output', default='select.h5', help='''Write output to OUTPUT (default: %(default)s).''')
|
|
110
|
+
self.progress.add_args(parser)
|
|
111
|
+
|
|
112
|
+
def process_args(self, args):
|
|
113
|
+
self.progress.process_args(args)
|
|
114
|
+
self.data_reader.process_args(args)
|
|
115
|
+
with self.data_reader:
|
|
116
|
+
self.iter_range.process_args(args)
|
|
117
|
+
|
|
118
|
+
predicate = get_object(args.predicate_function, path=['.'])
|
|
119
|
+
if not callable(predicate):
|
|
120
|
+
raise TypeError('predicate object {!r} is not callable'.format(predicate))
|
|
121
|
+
self.predicate = predicate
|
|
122
|
+
self.invert = bool(args.invert)
|
|
123
|
+
self.include_ancestors = bool(args.include_ancestors)
|
|
124
|
+
self.output_filename = args.output
|
|
125
|
+
|
|
126
|
+
def go(self):
|
|
127
|
+
self.data_reader.open('r')
|
|
128
|
+
output_file = h5io.WESTPAH5File(self.output_filename, mode='w')
|
|
129
|
+
pi = self.progress.indicator
|
|
130
|
+
|
|
131
|
+
iter_start, iter_stop = self.iter_range.iter_start, self.iter_range.iter_stop
|
|
132
|
+
iter_count = iter_stop - iter_start
|
|
133
|
+
|
|
134
|
+
output_file.create_dataset('n_iter', dtype=n_iter_dtype, data=list(range(iter_start, iter_stop)))
|
|
135
|
+
current_seg_count = 0
|
|
136
|
+
seg_count_ds = output_file.create_dataset('n_segs', dtype=np.uint, shape=(iter_count,))
|
|
137
|
+
matching_segs_ds = output_file.create_dataset(
|
|
138
|
+
'seg_ids',
|
|
139
|
+
shape=(iter_count, 0),
|
|
140
|
+
maxshape=(iter_count, None),
|
|
141
|
+
dtype=seg_id_dtype,
|
|
142
|
+
chunks=h5io.calc_chunksize((iter_count, 1000000), seg_id_dtype),
|
|
143
|
+
shuffle=True,
|
|
144
|
+
compression=9,
|
|
145
|
+
)
|
|
146
|
+
weights_ds = output_file.create_dataset(
|
|
147
|
+
'weights',
|
|
148
|
+
shape=(iter_count, 0),
|
|
149
|
+
maxshape=(iter_count, None),
|
|
150
|
+
dtype=weight_dtype,
|
|
151
|
+
chunks=h5io.calc_chunksize((iter_count, 1000000), weight_dtype),
|
|
152
|
+
shuffle=True,
|
|
153
|
+
compression=9,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
with pi:
|
|
157
|
+
pi.new_operation('Finding matching segments', extent=iter_count)
|
|
158
|
+
# futures = set()
|
|
159
|
+
# for n_iter in xrange(iter_start,iter_stop):
|
|
160
|
+
# futures.add(self.work_manager.submit(_find_matching_segments,
|
|
161
|
+
# args=(self.data_reader.we_h5filename,n_iter,self.predicate,self.invert)))
|
|
162
|
+
|
|
163
|
+
# for future in self.work_manager.as_completed(futures):
|
|
164
|
+
for future in self.work_manager.submit_as_completed(
|
|
165
|
+
(
|
|
166
|
+
(_find_matching_segments, (self.data_reader.we_h5filename, n_iter, self.predicate, self.invert), {})
|
|
167
|
+
for n_iter in range(iter_start, iter_stop)
|
|
168
|
+
),
|
|
169
|
+
self.max_queue_len,
|
|
170
|
+
):
|
|
171
|
+
n_iter, matching_ids = future.get_result()
|
|
172
|
+
n_matches = len(matching_ids)
|
|
173
|
+
|
|
174
|
+
if n_matches:
|
|
175
|
+
if n_matches > current_seg_count:
|
|
176
|
+
current_seg_count = len(matching_ids)
|
|
177
|
+
matching_segs_ds.resize((iter_count, n_matches))
|
|
178
|
+
weights_ds.resize((iter_count, n_matches))
|
|
179
|
+
current_seg_count = n_matches
|
|
180
|
+
|
|
181
|
+
seg_count_ds[n_iter - iter_start] = n_matches
|
|
182
|
+
matching_segs_ds[n_iter - iter_start, :n_matches] = matching_ids
|
|
183
|
+
weights_ds[n_iter - iter_start, :n_matches] = self.data_reader.get_iter_group(n_iter)['seg_index']['weight'][
|
|
184
|
+
sorted(matching_ids)
|
|
185
|
+
]
|
|
186
|
+
del matching_ids
|
|
187
|
+
pi.progress += 1
|
|
188
|
+
|
|
189
|
+
if self.include_ancestors:
|
|
190
|
+
pi.new_operation('Tracing ancestors of matching segments', extent=iter_count)
|
|
191
|
+
from_previous = set()
|
|
192
|
+
current_seg_count = matching_segs_ds.shape[1]
|
|
193
|
+
for n_iter in range(iter_stop - 1, iter_start - 1, -1):
|
|
194
|
+
iiter = n_iter - iter_start
|
|
195
|
+
n_matches = seg_count_ds[iiter]
|
|
196
|
+
matching_ids = set(from_previous)
|
|
197
|
+
if n_matches:
|
|
198
|
+
matching_ids.update(matching_segs_ds[iiter, : seg_count_ds[iiter]])
|
|
199
|
+
from_previous.clear()
|
|
200
|
+
|
|
201
|
+
n_matches = len(matching_ids)
|
|
202
|
+
if n_matches > current_seg_count:
|
|
203
|
+
matching_segs_ds.resize((iter_count, n_matches))
|
|
204
|
+
weights_ds.resize((iter_count, n_matches))
|
|
205
|
+
current_seg_count = n_matches
|
|
206
|
+
|
|
207
|
+
if n_matches > 0:
|
|
208
|
+
seg_count_ds[iiter] = n_matches
|
|
209
|
+
matching_ids = sorted(matching_ids)
|
|
210
|
+
matching_segs_ds[iiter, :n_matches] = matching_ids
|
|
211
|
+
weights_ds[iiter, :n_matches] = self.data_reader.get_iter_group(n_iter)['seg_index']['weight'][
|
|
212
|
+
sorted(matching_ids)
|
|
213
|
+
]
|
|
214
|
+
parent_ids = self.data_reader.get_iter_group(n_iter)['seg_index']['parent_id'][sorted(matching_ids)]
|
|
215
|
+
from_previous.update(parent_id for parent_id in parent_ids if parent_id >= 0) # filter initial states
|
|
216
|
+
del parent_ids
|
|
217
|
+
del matching_ids
|
|
218
|
+
pi.progress += 1
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def entry_point():
|
|
222
|
+
WSelectTool().main()
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
if __name__ == '__main__':
|
|
226
|
+
entry_point()
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
from westpa.tools import WESTMasterCommand, WESTParallelTool
|
|
2
|
+
from warnings import warn
|
|
3
|
+
|
|
4
|
+
from westpa.cli.tools.w_direct import DStateProbs
|
|
5
|
+
|
|
6
|
+
# Just a shim to make sure everything works and is backwards compatible.
|
|
7
|
+
# We're making sure it has the appropriate functions so that it can be called
|
|
8
|
+
# as a regular tool, and not a subcommand.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WStateProbs(DStateProbs):
|
|
12
|
+
subcommand = 'trace'
|
|
13
|
+
help_text = 'averages and CIs for path-tracing kinetics analysis'
|
|
14
|
+
default_output_file = 'stateprobs.h5'
|
|
15
|
+
# This isn't strictly necessary, but for the moment, here it is.
|
|
16
|
+
# We really need to modify the underlying class so that we don't pull this sort of stuff if it isn't necessary.
|
|
17
|
+
# That'll take some case handling, which is fine.
|
|
18
|
+
default_kinetics_file = 'assign.h5'
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class WDirect(WESTMasterCommand, WESTParallelTool):
|
|
22
|
+
prog = 'w_stateprobs'
|
|
23
|
+
subcommands = [WStateProbs]
|
|
24
|
+
subparsers_title = 'calculate state-to-state kinetics by tracing trajectories'
|
|
25
|
+
description = '''\
|
|
26
|
+
Calculate average populations and associated errors in state populations from
|
|
27
|
+
weighted ensemble data. Bin assignments, including macrostate definitions,
|
|
28
|
+
are required. (See "w_assign --help" for more information).
|
|
29
|
+
|
|
30
|
+
-----------------------------------------------------------------------------
|
|
31
|
+
Output format
|
|
32
|
+
-----------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
The output file (-o/--output, usually "stateprobs.h5") contains the following
|
|
35
|
+
dataset:
|
|
36
|
+
|
|
37
|
+
/avg_state_pops [state]
|
|
38
|
+
(Structured -- see below) Population of each state across entire
|
|
39
|
+
range specified.
|
|
40
|
+
|
|
41
|
+
If --evolution-mode is specified, then the following additional dataset is
|
|
42
|
+
available:
|
|
43
|
+
|
|
44
|
+
/state_pop_evolution [window][state]
|
|
45
|
+
(Structured -- see below). State populations based on windows of
|
|
46
|
+
iterations of varying width. If --evolution-mode=cumulative, then
|
|
47
|
+
these windows all begin at the iteration specified with
|
|
48
|
+
--start-iter and grow in length by --step-iter for each successive
|
|
49
|
+
element. If --evolution-mode=blocked, then these windows are all of
|
|
50
|
+
width --step-iter (excluding the last, which may be shorter), the first
|
|
51
|
+
of which begins at iteration --start-iter.
|
|
52
|
+
|
|
53
|
+
The structure of these datasets is as follows:
|
|
54
|
+
|
|
55
|
+
iter_start
|
|
56
|
+
(Integer) Iteration at which the averaging window begins (inclusive).
|
|
57
|
+
|
|
58
|
+
iter_stop
|
|
59
|
+
(Integer) Iteration at which the averaging window ends (exclusive).
|
|
60
|
+
|
|
61
|
+
expected
|
|
62
|
+
(Floating-point) Expected (mean) value of the rate as evaluated within
|
|
63
|
+
this window, in units of inverse tau.
|
|
64
|
+
|
|
65
|
+
ci_lbound
|
|
66
|
+
(Floating-point) Lower bound of the confidence interval on the rate
|
|
67
|
+
within this window, in units of inverse tau.
|
|
68
|
+
|
|
69
|
+
ci_ubound
|
|
70
|
+
(Floating-point) Upper bound of the confidence interval on the rate
|
|
71
|
+
within this window, in units of inverse tau.
|
|
72
|
+
|
|
73
|
+
corr_len
|
|
74
|
+
(Integer) Correlation length of the rate within this window, in units
|
|
75
|
+
of tau.
|
|
76
|
+
|
|
77
|
+
Each of these datasets is also stamped with a number of attributes:
|
|
78
|
+
|
|
79
|
+
mcbs_alpha
|
|
80
|
+
(Floating-point) Alpha value of confidence intervals. (For example,
|
|
81
|
+
*alpha=0.05* corresponds to a 95% confidence interval.)
|
|
82
|
+
|
|
83
|
+
mcbs_nsets
|
|
84
|
+
(Integer) Number of bootstrap data sets used in generating confidence
|
|
85
|
+
intervals.
|
|
86
|
+
|
|
87
|
+
mcbs_acalpha
|
|
88
|
+
(Floating-point) Alpha value for determining correlation lengths.
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
-----------------------------------------------------------------------------
|
|
92
|
+
Command-line options
|
|
93
|
+
-----------------------------------------------------------------------------
|
|
94
|
+
'''
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def entry_point():
|
|
98
|
+
warn('{} is being deprecated. Please use w_direct instead.'.format(WDirect.prog))
|
|
99
|
+
# If we're not really supporting subcommands...
|
|
100
|
+
import sys
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
if sys.argv[1] != 'trace':
|
|
104
|
+
sys.argv.insert(1, 'trace')
|
|
105
|
+
except Exception:
|
|
106
|
+
sys.argv.insert(1, 'trace')
|
|
107
|
+
WDirect().main()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
if __name__ == '__main__':
|
|
111
|
+
entry_point()
|