pychemstation 0.4.7.dev1__py3-none-any.whl → 0.4.7.dev2__py3-none-any.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.
Files changed (104) hide show
  1. pychemstation/control/__init__.py +3 -2
  2. hein-analytical-control/devices/Agilent/hplc.py → pychemstation/control/comm.py +21 -181
  3. pychemstation/control/method.py +232 -0
  4. pychemstation/control/sequence.py +140 -0
  5. pychemstation/control/table_controller.py +75 -0
  6. pychemstation/utils/__init__.py +0 -2
  7. {ag_hplc_macro/control → pychemstation/utils}/chromatogram.py +2 -1
  8. pychemstation/utils/constants.py +1 -1
  9. hein_analytical_control/devices/Agilent/hplc_param_types.py → pychemstation/utils/macro.py +5 -69
  10. pychemstation/utils/method_types.py +44 -0
  11. pychemstation/utils/sequence_types.py +33 -0
  12. pychemstation/utils/table_types.py +60 -0
  13. {pychemstation-0.4.7.dev1.dist-info → pychemstation-0.4.7.dev2.dist-info}/METADATA +13 -12
  14. pychemstation-0.4.7.dev2.dist-info/RECORD +30 -0
  15. ag_hplc_macro/__init__.py +0 -3
  16. ag_hplc_macro/analysis/__init__.py +0 -1
  17. ag_hplc_macro/analysis/base_spectrum.py +0 -509
  18. ag_hplc_macro/analysis/spec_utils.py +0 -304
  19. ag_hplc_macro/analysis/utils.py +0 -63
  20. ag_hplc_macro/control/__init__.py +0 -5
  21. ag_hplc_macro/control/hplc.py +0 -673
  22. ag_hplc_macro/generated/__init__.py +0 -56
  23. ag_hplc_macro/generated/dad_method.py +0 -367
  24. ag_hplc_macro/generated/pump_method.py +0 -519
  25. ag_hplc_macro/utils/__init__.py +0 -2
  26. ag_hplc_macro/utils/constants.py +0 -15
  27. ag_hplc_macro/utils/hplc_param_types.py +0 -185
  28. hein-analytical-control/__init__.py +0 -3
  29. hein-analytical-control/analysis/__init__.py +0 -1
  30. hein-analytical-control/analysis/base_spectrum.py +0 -509
  31. hein-analytical-control/analysis/spec_utils.py +0 -304
  32. hein-analytical-control/analysis/utils.py +0 -63
  33. hein-analytical-control/devices/Agilent/__init__.py +0 -3
  34. hein-analytical-control/devices/Agilent/chemstation.py +0 -290
  35. hein-analytical-control/devices/Agilent/chromatogram.py +0 -129
  36. hein-analytical-control/devices/Agilent/hplc_param_types.py +0 -141
  37. hein-analytical-control/devices/Magritek/Spinsolve/__init__.py +0 -0
  38. hein-analytical-control/devices/Magritek/Spinsolve/commands.py +0 -495
  39. hein-analytical-control/devices/Magritek/Spinsolve/spectrum.py +0 -822
  40. hein-analytical-control/devices/Magritek/Spinsolve/spinsolve.py +0 -425
  41. hein-analytical-control/devices/Magritek/Spinsolve/utils/__init__.py +0 -5
  42. hein-analytical-control/devices/Magritek/Spinsolve/utils/connection.py +0 -168
  43. hein-analytical-control/devices/Magritek/Spinsolve/utils/constants.py +0 -8
  44. hein-analytical-control/devices/Magritek/Spinsolve/utils/exceptions.py +0 -25
  45. hein-analytical-control/devices/Magritek/Spinsolve/utils/parser.py +0 -340
  46. hein-analytical-control/devices/Magritek/Spinsolve/utils/shimming.py +0 -55
  47. hein-analytical-control/devices/Magritek/Spinsolve/utils/spinsolve_logging.py +0 -43
  48. hein-analytical-control/devices/Magritek/__init__.py +0 -0
  49. hein-analytical-control/devices/OceanOptics/IR/NIRQuest512.py +0 -90
  50. hein-analytical-control/devices/OceanOptics/IR/__init__.py +0 -0
  51. hein-analytical-control/devices/OceanOptics/IR/ir_spectrum.py +0 -191
  52. hein-analytical-control/devices/OceanOptics/Raman/__init__.py +0 -0
  53. hein-analytical-control/devices/OceanOptics/Raman/raman_control.py +0 -46
  54. hein-analytical-control/devices/OceanOptics/Raman/raman_spectrum.py +0 -148
  55. hein-analytical-control/devices/OceanOptics/UV/QEPro2192.py +0 -90
  56. hein-analytical-control/devices/OceanOptics/UV/__init__.py +0 -0
  57. hein-analytical-control/devices/OceanOptics/UV/uv_spectrum.py +0 -227
  58. hein-analytical-control/devices/OceanOptics/__init__.py +0 -0
  59. hein-analytical-control/devices/OceanOptics/oceanoptics.py +0 -115
  60. hein-analytical-control/devices/__init__.py +0 -15
  61. hein-analytical-control/generated/__init__.py +0 -56
  62. hein-analytical-control/generated/dad_method.py +0 -367
  63. hein-analytical-control/generated/pump_method.py +0 -519
  64. hein_analytical_control/__init__.py +0 -3
  65. hein_analytical_control/analysis/__init__.py +0 -1
  66. hein_analytical_control/analysis/base_spectrum.py +0 -509
  67. hein_analytical_control/analysis/spec_utils.py +0 -304
  68. hein_analytical_control/analysis/utils.py +0 -63
  69. hein_analytical_control/devices/Agilent/__init__.py +0 -3
  70. hein_analytical_control/devices/Agilent/chemstation.py +0 -290
  71. hein_analytical_control/devices/Agilent/chromatogram.py +0 -129
  72. hein_analytical_control/devices/Agilent/hplc.py +0 -436
  73. hein_analytical_control/devices/Magritek/Spinsolve/__init__.py +0 -0
  74. hein_analytical_control/devices/Magritek/Spinsolve/commands.py +0 -495
  75. hein_analytical_control/devices/Magritek/Spinsolve/spectrum.py +0 -822
  76. hein_analytical_control/devices/Magritek/Spinsolve/spinsolve.py +0 -425
  77. hein_analytical_control/devices/Magritek/Spinsolve/utils/__init__.py +0 -5
  78. hein_analytical_control/devices/Magritek/Spinsolve/utils/connection.py +0 -168
  79. hein_analytical_control/devices/Magritek/Spinsolve/utils/constants.py +0 -8
  80. hein_analytical_control/devices/Magritek/Spinsolve/utils/exceptions.py +0 -25
  81. hein_analytical_control/devices/Magritek/Spinsolve/utils/parser.py +0 -340
  82. hein_analytical_control/devices/Magritek/Spinsolve/utils/shimming.py +0 -55
  83. hein_analytical_control/devices/Magritek/Spinsolve/utils/spinsolve_logging.py +0 -43
  84. hein_analytical_control/devices/Magritek/__init__.py +0 -0
  85. hein_analytical_control/devices/OceanOptics/IR/NIRQuest512.py +0 -90
  86. hein_analytical_control/devices/OceanOptics/IR/__init__.py +0 -0
  87. hein_analytical_control/devices/OceanOptics/IR/ir_spectrum.py +0 -191
  88. hein_analytical_control/devices/OceanOptics/Raman/__init__.py +0 -0
  89. hein_analytical_control/devices/OceanOptics/Raman/raman_control.py +0 -46
  90. hein_analytical_control/devices/OceanOptics/Raman/raman_spectrum.py +0 -148
  91. hein_analytical_control/devices/OceanOptics/UV/QEPro2192.py +0 -90
  92. hein_analytical_control/devices/OceanOptics/UV/__init__.py +0 -0
  93. hein_analytical_control/devices/OceanOptics/UV/uv_spectrum.py +0 -227
  94. hein_analytical_control/devices/OceanOptics/__init__.py +0 -0
  95. hein_analytical_control/devices/OceanOptics/oceanoptics.py +0 -115
  96. hein_analytical_control/devices/__init__.py +0 -15
  97. hein_analytical_control/generated/__init__.py +0 -56
  98. hein_analytical_control/generated/dad_method.py +0 -367
  99. hein_analytical_control/generated/pump_method.py +0 -519
  100. pychemstation-0.4.7.dev1.dist-info/RECORD +0 -109
  101. /ag_hplc_macro/utils/chemstation.py → /pychemstation/utils/parsing.py +0 -0
  102. {pychemstation-0.4.7.dev1.dist-info → pychemstation-0.4.7.dev2.dist-info}/LICENSE +0 -0
  103. {pychemstation-0.4.7.dev1.dist-info → pychemstation-0.4.7.dev2.dist-info}/WHEEL +0 -0
  104. {pychemstation-0.4.7.dev1.dist-info → pychemstation-0.4.7.dev2.dist-info}/top_level.txt +0 -0
@@ -1,115 +0,0 @@
1
- """Base module for interfacing with OceanOptics Spectrometers
2
-
3
- .. moduleauthor:: Artem Leonov, Graham Keenan
4
- """
5
- import time
6
- import logging
7
- import numpy as np
8
- import seabreeze
9
- from seabreeze.pyseabreeze import SeaBreezeDevice
10
-
11
- seabreeze.use("cseabreeze")
12
- import seabreeze.spectrometers as sb
13
-
14
- # Spectrometer Types:
15
- SPECS = {"UV": "2192", "RAMAN": "QE-PRO", "IR": "NIRQUEST"}
16
-
17
-
18
- class UnsupportedSpectrometer(Exception):
19
- """Exception for unsupported spectrometer types"""
20
-
21
-
22
- class NoSpectrometerDetected(Exception):
23
- """Exception for when no spectrometer is detected"""
24
-
25
-
26
- def _get_spectrometer(spec_type: str) -> SeaBreezeDevice:
27
- """Gets the Spectrometer from Seabreeze that matches given type
28
-
29
- Arguments:
30
- spec_type {str} -- Type of spectrometer to look for
31
-
32
- Raises:
33
- UnsupportedSpectrometer -- If the spec_type is not present
34
-
35
- Returns:
36
- str -- Name of the spectrometer
37
- """
38
-
39
- devices = sb.list_devices()
40
-
41
- if not devices:
42
- raise NoSpectrometerDetected("Are the spectrometers plugged in?")
43
- if spec_type in SPECS.keys():
44
- for dev in devices:
45
- if SPECS[spec_type] in str(dev):
46
- return dev
47
- raise UnsupportedSpectrometer("Spectrometer {} unsupported!".format(spec_type))
48
-
49
-
50
- class OceanOpticsSpectrometer:
51
- """Base class for interfacing with OceanOptics Spectrometers"""
52
-
53
- def __init__(self, spec_type, name=None):
54
- """
55
- Args:
56
- spec_type (str): The type of spectrometer, e.g. 'IR', 'raman', etc.
57
- name (str, optional): Device name for easier access
58
- """
59
- self.integration_time = 0.01 # in seconds
60
- self.__spec = _get_spectrometer(spec_type)
61
- self._spectrometer = sb.Spectrometer(self.__spec)
62
- self.name = name
63
- self._delay = 0.01
64
-
65
- self.logger = logging.getLogger("oceanoptics.spectrometer")
66
- self.logger.setLevel(logging.INFO)
67
- # Removing default handlers
68
- self.logger.handlers = []
69
- ch = logging.StreamHandler()
70
- ch.setLevel(logging.INFO)
71
- console_formatter = logging.Formatter(
72
- "%(asctime)s ; %(module)s ; %(name)s ; %(message)s"
73
- )
74
- ch.setFormatter(console_formatter)
75
- self.logger.addHandler(ch)
76
- self.set_integration_time(self.integration_time)
77
-
78
- def set_integration_time(self, integration_time):
79
- """Sets the integration time for the spectrometer
80
-
81
- Args:
82
- integration_time (float): Desired integration time in seconds!
83
- """
84
-
85
- self._spectrometer.open()
86
- self.integration_time = integration_time
87
- integration_time *= 1000 * 1000 # converting to microseconds
88
- self.logger.debug(
89
- "Setting the integration time to %s microseconds", integration_time
90
- )
91
- self._spectrometer.integration_time_micros(integration_time)
92
- self._spectrometer.close()
93
-
94
- def scan(self, n=3):
95
- """Reads the spectrometer and returns the spectrum
96
-
97
- Args:
98
- n (int, opitonal): Number of 'scans'
99
-
100
- Returns:
101
- (Tuple): Tuple containing spectrum wavelengths and intensities as numpy arrays
102
- Example: (array(wavelengths), array(intensities))
103
- """
104
-
105
- i_mean = []
106
- self.logger.debug("Scanning")
107
- self._spectrometer.open()
108
- for i in range(n):
109
- wavelengths, intensities = self._spectrometer.spectrum()
110
- i_mean.append(intensities)
111
- time.sleep(self._delay)
112
-
113
- intensities = np.mean(i_mean, axis=0)
114
- self._spectrometer.close()
115
- return (wavelengths, intensities)
@@ -1,15 +0,0 @@
1
- """
2
- .. include:: README.md
3
- """
4
-
5
- # physical instruments
6
- from .Magritek.Spinsolve.spinsolve import SpinsolveNMR
7
- from .OceanOptics.Raman.raman_control import OceanOpticsRaman
8
- from .OceanOptics.UV.QEPro2192 import QEPro2192
9
- from .OceanOptics.IR.NIRQuest512 import NIRQuest512
10
- from .Agilent.hplc import HPLCController
11
-
12
- # classes for spectra processing
13
- from .OceanOptics.Raman.raman_spectrum import RamanSpectrum
14
- from .Magritek.Spinsolve.spectrum import SpinsolveNMRSpectrum
15
- from .Agilent.chromatogram import AgilentHPLCChromatogram
@@ -1,56 +0,0 @@
1
- from .pump_method import (
2
- Channel1ExtendedSolventType,
3
- Channel2ExtendedSolventType,
4
- CompressA,
5
- CompressB,
6
- Definition,
7
- PostTime,
8
- PumpMethod,
9
- SolventComposition,
10
- SolventDescription,
11
- SolventElement,
12
- StopTime,
13
- StrokeA,
14
- Timetable,
15
- TimetableEntry,
16
- )
17
-
18
- from .dad_method import (
19
- AnalogOutput1,
20
- AnalogOutput2,
21
- DadMethod,
22
- PostTime,
23
- PrepareAutomation,
24
- PrepareMode,
25
- Signal,
26
- Signals,
27
- SpectraAcquisition,
28
- StopTime,
29
- )
30
-
31
- __all__ = [
32
- "Channel1ExtendedSolventType",
33
- "Channel2ExtendedSolventType",
34
- "CompressA",
35
- "CompressB",
36
- "Definition",
37
- "PostTime",
38
- "PumpMethod",
39
- "SolventComposition",
40
- "SolventDescription",
41
- "SolventElement",
42
- "StopTime",
43
- "StrokeA",
44
- "Timetable",
45
- "TimetableEntry",
46
- "AnalogOutput1",
47
- "AnalogOutput2",
48
- "DadMethod",
49
- "PostTime",
50
- "PrepareAutomation",
51
- "PrepareMode",
52
- "Signal",
53
- "Signals",
54
- "SpectraAcquisition",
55
- "StopTime",
56
- ]
@@ -1,367 +0,0 @@
1
- from dataclasses import dataclass, field
2
- from typing import Optional
3
-
4
-
5
- @dataclass
6
- class AnalogOutput1:
7
- analog_zero: Optional[int] = field(
8
- default=None,
9
- metadata={
10
- "name": "AnalogZero",
11
- "type": "Element",
12
- "required": True,
13
- },
14
- )
15
- analog_att: Optional[int] = field(
16
- default=None,
17
- metadata={
18
- "name": "AnalogAtt",
19
- "type": "Element",
20
- "required": True,
21
- },
22
- )
23
-
24
-
25
- @dataclass
26
- class AnalogOutput2:
27
- analog_zero: Optional[int] = field(
28
- default=None,
29
- metadata={
30
- "name": "AnalogZero",
31
- "type": "Element",
32
- "required": True,
33
- },
34
- )
35
- analog_att: Optional[int] = field(
36
- default=None,
37
- metadata={
38
- "name": "AnalogAtt",
39
- "type": "Element",
40
- "required": True,
41
- },
42
- )
43
-
44
-
45
- @dataclass
46
- class PostTime:
47
- post_time_mode: Optional[str] = field(
48
- default=None,
49
- metadata={
50
- "name": "PostTimeMode",
51
- "type": "Element",
52
- "required": True,
53
- },
54
- )
55
-
56
-
57
- @dataclass
58
- class PrepareAutomation:
59
- do_prep_run_balance: Optional[bool] = field(
60
- default=None,
61
- metadata={
62
- "name": "DoPrepRunBalance",
63
- "type": "Element",
64
- "required": True,
65
- },
66
- )
67
- do_start_run_balance: Optional[bool] = field(
68
- default=None,
69
- metadata={
70
- "name": "DoStartRunBalance",
71
- "type": "Element",
72
- "required": True,
73
- },
74
- )
75
- do_post_run_balance: Optional[bool] = field(
76
- default=None,
77
- metadata={
78
- "name": "DoPostRunBalance",
79
- "type": "Element",
80
- "required": True,
81
- },
82
- )
83
-
84
-
85
- @dataclass
86
- class PrepareMode:
87
- balance_mode: Optional[str] = field(
88
- default=None,
89
- metadata={
90
- "name": "BalanceMode",
91
- "type": "Element",
92
- "required": True,
93
- },
94
- )
95
- headroom: Optional[int] = field(
96
- default=None,
97
- metadata={
98
- "name": "Headroom",
99
- "type": "Element",
100
- "required": True,
101
- },
102
- )
103
- smpgain: Optional[int] = field(
104
- default=None,
105
- metadata={
106
- "name": "SMPGain",
107
- "type": "Element",
108
- "required": True,
109
- },
110
- )
111
-
112
-
113
- @dataclass
114
- class Signal:
115
- use_signal: Optional[bool] = field(
116
- default=None,
117
- metadata={
118
- "name": "UseSignal",
119
- "type": "Element",
120
- "required": True,
121
- },
122
- )
123
- id: Optional[str] = field(
124
- default=None,
125
- metadata={
126
- "name": "ID",
127
- "type": "Element",
128
- "required": True,
129
- },
130
- )
131
- wavelength: Optional[int] = field(
132
- default=None,
133
- metadata={
134
- "name": "Wavelength",
135
- "type": "Element",
136
- },
137
- )
138
- bandwidth: Optional[int] = field(
139
- default=None,
140
- metadata={
141
- "name": "Bandwidth",
142
- "type": "Element",
143
- },
144
- )
145
- use_reference: Optional[bool] = field(
146
- default=None,
147
- metadata={
148
- "name": "UseReference",
149
- "type": "Element",
150
- "required": True,
151
- },
152
- )
153
-
154
-
155
- @dataclass
156
- class SpectraAcquisition:
157
- spectra_range_from: Optional[int] = field(
158
- default=None,
159
- metadata={
160
- "name": "SpectraRangeFrom",
161
- "type": "Element",
162
- "required": True,
163
- },
164
- )
165
- spectra_range_to: Optional[int] = field(
166
- default=None,
167
- metadata={
168
- "name": "SpectraRangeTo",
169
- "type": "Element",
170
- "required": True,
171
- },
172
- )
173
- spectra_step: Optional[int] = field(
174
- default=None,
175
- metadata={
176
- "name": "SpectraStep",
177
- "type": "Element",
178
- "required": True,
179
- },
180
- )
181
- spectra_acq_mode: Optional[str] = field(
182
- default=None,
183
- metadata={
184
- "name": "SpectraAcqMode",
185
- "type": "Element",
186
- "required": True,
187
- },
188
- )
189
-
190
-
191
- @dataclass
192
- class StopTime:
193
- stop_time_mode: Optional[str] = field(
194
- default=None,
195
- metadata={
196
- "name": "StopTimeMode",
197
- "type": "Element",
198
- "required": True,
199
- },
200
- )
201
-
202
-
203
- @dataclass
204
- class Signals:
205
- signal: list[Signal] = field(
206
- default_factory=list,
207
- metadata={
208
- "name": "Signal",
209
- "type": "Element",
210
- "min_occurs": 1,
211
- },
212
- )
213
-
214
-
215
- @dataclass
216
- class DadMethod:
217
- module_type: Optional[str] = field(
218
- default=None,
219
- metadata={
220
- "name": "ModuleType",
221
- "type": "Attribute",
222
- "required": True,
223
- },
224
- )
225
- schema_version: Optional[str] = field(
226
- default=None,
227
- metadata={
228
- "name": "schemaVersion",
229
- "type": "Attribute",
230
- "required": True,
231
- },
232
- )
233
- schema_si: Optional[int] = field(
234
- default=None,
235
- metadata={
236
- "name": "schemaSI",
237
- "type": "Attribute",
238
- "required": True,
239
- },
240
- )
241
- module_options: Optional[object] = field(
242
- default=None,
243
- metadata={
244
- "name": "ModuleOptions",
245
- "type": "Attribute",
246
- "required": True,
247
- },
248
- )
249
- configuration_xml: Optional[str] = field(
250
- default=None,
251
- metadata={
252
- "name": "ConfigurationXml",
253
- "type": "Element",
254
- "required": True,
255
- },
256
- )
257
- timetable: Optional[object] = field(
258
- default=None,
259
- metadata={
260
- "name": "Timetable",
261
- "type": "Element",
262
- },
263
- )
264
- stop_time: Optional[StopTime] = field(
265
- default=None,
266
- metadata={
267
- "name": "StopTime",
268
- "type": "Element",
269
- "required": True,
270
- },
271
- )
272
- post_time: Optional[PostTime] = field(
273
- default=None,
274
- metadata={
275
- "name": "PostTime",
276
- "type": "Element",
277
- "required": True,
278
- },
279
- )
280
- delay: Optional[int] = field(
281
- default=None,
282
- metadata={
283
- "name": "Delay",
284
- "type": "Element",
285
- "required": True,
286
- },
287
- )
288
- analog_output1: Optional[AnalogOutput1] = field(
289
- default=None,
290
- metadata={
291
- "name": "AnalogOutput1",
292
- "type": "Element",
293
- "required": True,
294
- },
295
- )
296
- analog_output2: Optional[AnalogOutput2] = field(
297
- default=None,
298
- metadata={
299
- "name": "AnalogOutput2",
300
- "type": "Element",
301
- "required": True,
302
- },
303
- )
304
- signals: Optional[Signals] = field(
305
- default=None,
306
- metadata={
307
- "name": "Signals",
308
- "type": "Element",
309
- "required": True,
310
- },
311
- )
312
- peakwidth: Optional[int] = field(
313
- default=None,
314
- metadata={
315
- "name": "Peakwidth",
316
- "type": "Element",
317
- "required": True,
318
- },
319
- )
320
- slitwidth: Optional[int] = field(
321
- default=None,
322
- metadata={
323
- "name": "Slitwidth",
324
- "type": "Element",
325
- "required": True,
326
- },
327
- )
328
- uvlamp_required: Optional[bool] = field(
329
- default=None,
330
- metadata={
331
- "name": "UVLampRequired",
332
- "type": "Element",
333
- "required": True,
334
- },
335
- )
336
- vislamp_required: Optional[bool] = field(
337
- default=None,
338
- metadata={
339
- "name": "VISLampRequired",
340
- "type": "Element",
341
- "required": True,
342
- },
343
- )
344
- prepare_mode: Optional[PrepareMode] = field(
345
- default=None,
346
- metadata={
347
- "name": "PrepareMode",
348
- "type": "Element",
349
- "required": True,
350
- },
351
- )
352
- prepare_automation: Optional[PrepareAutomation] = field(
353
- default=None,
354
- metadata={
355
- "name": "PrepareAutomation",
356
- "type": "Element",
357
- "required": True,
358
- },
359
- )
360
- spectra_acquisition: Optional[SpectraAcquisition] = field(
361
- default=None,
362
- metadata={
363
- "name": "SpectraAcquisition",
364
- "type": "Element",
365
- "required": True,
366
- },
367
- )