forked from ISISNeutronMuon/InstrumentScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
351 lines (243 loc) · 13.3 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
2019-10-30 <[email protected]>
* general/scans/defaults.py (Defaults.get_units): Check that a
block has units before trying to read those units.
2019-10-28 <[email protected]>
* general/scans/scans.py (Scan.plot): Get figures from get_fig
(ContinuousScan.plot): Get figures from get_fig
(ProductScan.plot): Get figures from get_fig
(ReplayScan.plot): Get figures from get_fig
* general/scans/defaults.py (Defaults.get_fig): Add a get_fig
function to supply figures for scans. This can be overloaded by
the beamlines to force all plots into a single figure or allow
multiple simultaneous plots
(Defaults.last_scan): Made last_scan a method of the Defaults
class to allow it to access the defaults.
* technique/sans/instrument.py (ScanningInstrument.send_pv):
Rename set_pv to send_pv in the SANS module so as not to overload
set_pv from genie.
2019-10-25 <[email protected]>
* general/scans/fit.py (smart_number_format): Add
smart_number_format to give a decent set of numerical digits
across a wider range of orders of magnitude.
* instrument/larmor/scans.py (generic_pol.inner_pol): Set the
default y-axis label to Polarisation for all generic_pol plot
* general/scans/detector.py (dae_periods.inner): Let anything with
the dae_periods decorator choose its y-axis label
(specific_spectra): Set the y-axis label yor all specfici_spectra
plots
* general/scans/detector.py: Allow setting the y-axis label
(DaePeriods.__init__): Allow setting the y-axis label
* instrument/loq/sample_changer_scan.py (LoqSampleChanger): Give a
label to the default BlockDetector.
* general/scans/scans.py (Scan.plot): Include a label on the y-axis of plots
(ReplayScan.__init__): Give a vertical axis label to the ReplayScan
(ReplayScan.plot): Plot the axis label when plotting a ReplayScan
(last_scan): Read the old y-axis label from the header of the last_scan
* general/scans/detector.py (DetectorManager.__init__): Give an
axis label to the DetectorManager.
(BlockDetector.__init__): Have BlockDetectors default to their
block name if no label is given.
* general/scans/scans.py (SimpleScan.__iter__): Include units
alongside axis labels when iterating.
(ProductScan.plot): Include units on both axes of 2D plots
(Scan.plot): Plot axes labels and units during replay scans
(last_scan): Added columns headers to scan log files
* general/scans/scans.py (Scan.plot): Add units to x-axis of scan plots
* instrument/loq/sample_changer_scan.py (LoqSampleChanger.scan):
Add default units to motion axis when give a motion name.
* instrument/loq/scans.py: Create a local wrapper for populate
* instrument/larmor/scans.py: Create a local wrapper for populate
* instrument/zoom/scans.py: Create a local wrapper for populate
* instrument/larmor/__init__.py: No explicit populate import
* instrument/zoom/__init__.py: No explicit populate import
* instrument/loq/__init__.py: No explicit populate import
* general/scans/motion.py (Motion.__init__): Add unit to Motion class
(BlockMotion.__init__): dd unit to BlockMotion constructor.
(pv_motion): Have pv_motion auto-locate unit
(populate): Move function into Defaults class
* general/scans/defaults.py (Defaults.scan): Add units to motion when passed a string
(Defaults.populate): Make populate a part of the defaults, instead
of just a function in general.scans.motion.
(Defaults.get_units): Add get_units to return the physical units of a motion
* doc/source/scans/tutorial.rst: Import populate from correct site
* doc/source/scans/instrument.rst: Import populate from correct site
2019-10-24 <[email protected]>
* general/scans/scans.py (Scan.fit): Account for classes that
return uncertainties when checking for multiple values.
* general/scans/fit.py (GaussianFit.readable): Include
uncertainties on GaussianFit.
(DampedOscillatorFit.readable): Include uncertainties on DampedOscillatorFit.
(ErfFit.readable): Include uncertainties on ErfFit.
(TopHatFit.readable): Include uncertainties on TopHotFit
* (CurveFit.fit): Return both the fit and the covariance matrix.
(CurveFit.get_y): Only perform the fit on the values and not the covariance.
* doc/sources/scans/tutorial.rst: Show how to use the
uncertainties returned by some fitting methods.
2019-10-23 <[email protected]>
* general/scans/fit.py (CentreOfMassFit.fit_plot_action.action):
Have the vertical line from the centre of mass fit be orange (to
contrast with the data points), instead of blue (the same colour
as the points).
2019-10-22 <[email protected]>
* general/scans/motion.py (BlockMotion.__init__): BlockMotion will
now find the block in ANY case if the block isn't present in the
chosen case. This also gives case insensitivity the scan
function when the axis is passed as a string.
* doc/source/sans/proposed.rst: Remove old proposed changes to
SANS module. These proposals were accepted and added over a year
ago.
* doc/source/sans/guide.rst: Add instrument scientist guide to
SANS documentation.
* general/scans/motion.py (populate): Fix bug with populate not
accept blocks with unicode names.
* test.sh (PYTHON_VERSION): Only generate documentation under
python 3. The new dependency graph generators only work under
Python 3 due to the use of the singledispatch decorator to help
navigate the abstract syntax tree of the python source. With
Python 2 receiving it's end of life in less than three months, I'm
not to concerned about this decision.
* technique/sans/util.py: Remove lint
* technique/sans/instrument.py: Remove lint
* instrument/loq/scans.py: Remove lint
* instrument/loq/sample_changer_scan.py: Remove lint
* instrument/larmor/scans.py: Remove lint
* general/scans/scans.py: Remove lint
* general/scans/monoid.py (ListOfMonoids.err): Removed lint
* general/scans/fit.py: Removed lint
* doc/source/index.rst: Added graphs.rst to the main documentation
index. Added instrument scientist guide to sans on main
index. Remove proposed sans changes.
* doc/source/graphs.rst: Added charts of the module and function
dependencies to the documentation.
* doc/functions.py: Add functions.py to chart the connections
between functions.
* doc/call.py: Add call.py to chart the connections between modules.
* .travis.yml (before_script): Install graphviz on the CI server
for graphs in the documentation.
* .pylintrc (ignore-imports): Ignore duplicate imports across
modules. Many instrument modules will wind up needing to import
the same functions, so the duplication is to be expected. This
could be bypassed by making the imports more implicit, but that
would make the code less readable.
* .gitignore: Ignore dotfiles produced as byproduct of documentation generation
2019-09-09 <[email protected]?
* instrument/larmor/sans: Don't try to access changer_pos before
the blocks are initialised.
* instrument/loq/sans: Don't try to access changer_pos before
the blocks are initialised.
* instrument/zoom/sans: Don't try to access changer_pos before
the blocks are initialised.
2019-09-02 <[email protected]>
* general/scans/scans.py (Scan.plot): Allow detector function to
have an accumulator parameter so that state can be maintained.
(ContinuousScan.plot): Allow detector function to
have an accumulator parameter so that state can be maintained.
(ProductScan.plot): Allow detector function to
have an accumulator parameter so that state can be maintained.
* general/scans/detector.py (BlockDetector): Add dummy accumulator to the detector function
(specific_spectra.inner): Add dummy accumulator to specific spectra
2019-08-06 ndw1748 <[email protected]>
* technique/sans/instrument.py (ScanningInstrument.changer_pos): Replace _move_pos private setter with changer_pos property on class
(ScanningInstrument.measurement_type): Change measurement_type from a function to a property
(ScanningInstrument.measurement_label): Change measurement_label from a function to a property
(ScanningInstrument.measurement_id): Change measurement_id from a function to a property
2019-08-05 ndw1748 <[email protected]>
* technique/sans/instrument.py (ScanningInstrument): Added more
sample changer positions.
2019-07-22 ndw1748 <[email protected]>
* technique/sans/instrument.py (ScanningInstrument.get_pv): Start
adding get_pv and set_pv methods to instrument base class
(ScanningInstrument._generic_scan): Only change detector, spectra,
or wiring tables when the user has actually changed the values.
Also, this function is no longer a static method.
(ScanningInstrument.set_measurement_type): Create base class
implemention to handle all cases
(ScanningInstrument.set_measurement_label): Create base class
implemention to handle all cases
(ScanningInstrument.set_measurement_id): Create base class
implemention to handle all cases
2019-07-01 ndw1748 <[email protected]>
* doc/source/reference.rst: Include all module members in reference docs.
* doc/source/scans/tutorial.rst: Cleanup hyperlinks
* doc/source/scans/instrument.rst: Update outdated information in
the instrument scientist guide to scans.
* instrument/loq/sans.py: Asorted bug fixes
(J1, J2): Fix timings on J1 and J2 for LOQ
* general/scans/defaults.py (Defaults.scan): Add information on
choosing a different detector to the scan docstring.
2019-05-29 ndw1748 <[email protected]>
* general/scans/fit.py: Remove interrupt handler override. IBEX
has moved to a different version of the numpy library that no
longer suffers from the Intel's MKL issues and the override is no
longer needed (or possible).
2019-05-28 ndw1748 <[email protected]>
* instrument/loq/sans.py (LOQ._generic_scan): Change LOQ default wiring tables
2019-05-14 <[email protected]>
* instrument/loq/sans.py (LOQ.setup_dae_normal): Added suport for
LOQ DAE modes: normal, quiet, 50hz_long, and 50hz_short
2019-05-13 <[email protected]>
* general/scans/scans.py (Scan.plot): Let fit plot actions view
the results of the previous action. As long as no one tries to
toss in an anamorphism, we don't have to worry about being
accidentally Turing complete.
* general/scans/fit.py (Fit.fit): Add uncertainty values into fits
(Fit.fit_quality): Start calculating the χ² of fits
(Fit.fit_plot_action.action): Insist that new fits are better than old fits
2019-05-07 <[email protected]>
* technique/sans/util.py (dae_setter.decorator.wrapper): Keep
track of DAE state to prevent constantly changing the wiring
tables.
2019-03-11 <[email protected]>
* general/scans/fit.py (GaussianFit.guess): Use proper statistics
to estimate Gaussian width and center when guessing before curve
fitting.
2019-03-05 <[email protected]>
* instrument/larmor/sans.py: Add scanning12 mode to Larmor and
make echoscan a synonym for it.
* doc/source/scans/tutorial.rst: Add documentation for scanning alternate detectors to the tutorial.
2019-03-04 <[email protected]>
* general/scans/defaults.py (Defaults.scan): Throw an exception
when the user requests a scan with no points.
2019-02-19 <[email protected]>
* general/scans/monoid.py (Average.err): Account for uncertainty
in count alongside the uncertainty in the total.
2019-02-19 <[email protected]>
* instrument/loq/sample_changer_scan.py (LoqSampleChanger): Add
the sample changer scan for LOQ.
* general/scans/scans.py (ContinuousScan): Add ContinuousMove
scanning functionality.
* general/scans/multiplot.py: Remove multiplot code, as this is
now handled by IBEX internal plotting.
* general/scans/motion.py (Motion): Add velocity support to Motion
objects.
* general/scans/monoid.py (Exact): Add an Exact Monoid for values
with no uncertainty.
* general/scans/fit.py: No longer hard code location of the Numpy
library for fixing the interrupt handler.
(CentreOfMassFit): Add new centre of mass fitting method
* general/scans/detector.py (BlockDetector): Add BlockDetector for
performing scans on black values, instead of detector values.
2019-02-13 <[email protected]>
* instrument/larmor/scans.py (fast_pol_measure): Replace
pol_measure with generic_pol. Create dedicated semsans_pol and
pol_measure detector objects on Larmor.
(auto_tune): Add Echo Tuning to larmor scans
* instrument/larmor/sans.py (Larmor.setup_dae_echoscan): Add
echoscan dae mode to larmor
* instrument/larmor/__init__.py: Larmor imports last_scan by default
* general/scans/scans.py (Scan.plot): Only attempt to safe a
figure from a scan if the save location is an actual string (and
not just a number or other weird value).
* general/scans/monoid.py (Polarisation.__float__): A polarisation
monoid with no data points is unpolarised.
* general/scans/fit.py (CurveFit.fit): Don't attempt to fit
non-finite date points.
* general/scans/detector.py (DaePeriods.__enter__): Automatically
save DaePeriods scans if the scan is given a title
2019-02-12 <[email protected]>
* instrument/loq/sans.py (LOQ.setup_dae_fifty): Start adding 50Hz mode to LOQ
(LOQ.setup_dae_event): Change LOQ run label to "SANS/TRANS"
* technique/sans/instrument.py: Add _move_pos function to allow instruments to support sample changer motor axes beyond "SamplePos".
* Adjust LOQ SANS support based on beamline experience.
* Change all references in SANS scripts from "aperature" to the
correctly spelled "aperture".