pychemstation 0.10.11__tar.gz → 0.10.13__tar.gz
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.
- {pychemstation-0.10.11 → pychemstation-0.10.13}/.pre-commit-config.yaml +7 -1
- pychemstation-0.10.13/.vscode/settings.json +12 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/PKG-INFO +2 -2
- {pychemstation-0.10.11 → pychemstation-0.10.13}/README.md +1 -1
- pychemstation-0.10.13/cmd +1 -0
- pychemstation-0.10.13/out.txt +8 -0
- pychemstation-0.10.13/paper.bib +89 -0
- pychemstation-0.10.13/paper.md +133 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/comm.py +1 -1
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/data_aq/method.py +112 -136
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/data_aq/sequence.py +67 -34
- pychemstation-0.10.13/pychemstation/control/controllers/devices/__init__.py +6 -0
- pychemstation-0.10.13/pychemstation/control/controllers/devices/column.py +61 -0
- pychemstation-0.10.13/pychemstation/control/controllers/devices/dad.py +85 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/devices/injector.py +18 -0
- pychemstation-0.10.13/pychemstation/control/controllers/devices/pump.py +131 -0
- pychemstation-0.10.13/pychemstation/control/controllers/devices/sample_info.py +27 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/hplc.py +36 -12
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/abc_tables/device.py +17 -3
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/abc_tables/table.py +146 -63
- pychemstation-0.10.13/pychemstation/utils/device_types.py +73 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/macro.py +2 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/table_types.py +65 -8
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pyproject.toml +2 -2
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/constants.py +3 -14
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/dtypes/test_abc.py +3 -1
- pychemstation-0.10.13/tests/edit/__init__.py +0 -0
- pychemstation-0.10.13/tests/edit/test_edit_col.py +63 -0
- pychemstation-0.10.13/tests/edit/test_edit_dad.py +50 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/edit/test_edit_method.py +3 -5
- pychemstation-0.10.13/tests/files/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/test_offline.py +10 -0
- pychemstation-0.10.13/tests/load/__init__.py +0 -0
- pychemstation-0.10.13/tests/load/test_load_bottles.py +0 -0
- pychemstation-0.10.13/tests/load/test_load_column.py +48 -0
- pychemstation-0.10.13/tests/load/test_load_dad.py +41 -0
- pychemstation-0.10.13/tests/load/test_load_pump.py +46 -0
- pychemstation-0.10.13/tests/load/test_load_sample_info.py +37 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/load/test_switch_sequence.py +3 -5
- pychemstation-0.10.13/tests/run/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/uv.lock +544 -517
- pychemstation-0.10.11/out.txt +0 -511
- pychemstation-0.10.11/pychemstation/control/controllers/devices/__init__.py +0 -3
- pychemstation-0.10.11/pychemstation/utils/device_types.py +0 -7
- pychemstation-0.10.11/tests/comm/out.txt +0 -309
- {pychemstation-0.10.11 → pychemstation-0.10.13}/.gitignore +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/.gitlab-ci.yml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/CHANGELOG.md +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/CONTRIBUTING.md +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/LICENSE +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/branch-rename.sh +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/index.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/analysis/base_spectrum.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/analysis/spec_utils.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/analysis/utils.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/analysis.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/control/chromatogram.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/control/hplc.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/control.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/generated.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/utils/chemstation.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/utils/constants.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/utils/hplc_param_types.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation/utils.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/pychemstation.html +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/doc/search.js +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/analysis/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/analysis/base_spectrum.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/analysis/chromatogram.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/analysis/process_report.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/README.md +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/README.md +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/data_aq/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/generated/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/generated/dad_method.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/generated/pump_method.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/abc_tables/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/abc_tables/abc_comm.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/abc_tables/run.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/injector_types.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/method_types.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/mocking/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/mocking/mock_comm.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/mocking/mock_hplc.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/num_utils.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/parsing.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/sequence_types.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/spec_utils.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/utils/tray_types.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation.egg-info/PKG-INFO +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation.egg-info/SOURCES.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation.egg-info/dependency_links.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation.egg-info/requires.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation.egg-info/top_level.txt +0 -0
- /pychemstation-0.10.11/tests/__init__.py → /pychemstation-0.10.13/reply +0 -0
- /pychemstation-0.10.11/tests/load/test_load_bottles.py → /pychemstation-0.10.13/tests/__init__.py +0 -0
- /pychemstation-0.10.11/tests/load/test_load_dad.py → /pychemstation-0.10.13/tests/comm/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/comm/test_dirs.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/comm/test_hplc_comm.py +0 -0
- /pychemstation-0.10.11/tests/load/test_load_sample_info.py → /pychemstation-0.10.13/tests/dtypes/__init__.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/edit/test_edit_sequence.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/0_2025-03-15 19-14-35.D/single.B +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Automatically_Generated_Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Automatically_Generated_Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Limsinf.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/sample.acaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/single.B +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/hplc_testing 2025-03-27 17-13-47_run seq with new method.PDF +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Limsinf.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report01.xls +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/hplc_testing 2025-03-27 17-13-47_run seq with new method.PDF +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/sequence.acam_ +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Limsinf.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report01.xls +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/hplc_testing 2025-03-27 17-13-47_run seq with new method.PDF +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/sequence.acam_ +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/ACQRES.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/CSlbk.ini +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1.UV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1A.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1A.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1B.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1B.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1C.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1C.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1D.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1D.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1E.ch +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1E.npz +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DiagResults.REG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Limsinf.xml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/RUN.LOG +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report.TXT +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report00.CSV +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report01.xls +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/da.macaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/hplc_testing 2025-03-27 17-13-47_run seq with new method.PDF +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/lcdiag.reg +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/sequence.acam_ +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/files/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/hplc_talk.mac +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/load/test_load_injector.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/load/test_switch_method.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/run/test_run_method.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/run/test_run_sequence.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/tests/test_integration.py +0 -0
- {pychemstation-0.10.11 → pychemstation-0.10.13}/update-lib.sh +0 -0
@@ -11,4 +11,10 @@ repos:
|
|
11
11
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
12
12
|
rev: v1.15.0
|
13
13
|
hooks:
|
14
|
-
- id: mypy
|
14
|
+
- id: mypy
|
15
|
+
- repo: local
|
16
|
+
hooks:
|
17
|
+
- id: delete-debug-files
|
18
|
+
name: delete-debug-files
|
19
|
+
entry: bash -c 'find . -name "out.txt" -type f -delete'
|
20
|
+
language: system
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pychemstation
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.13
|
4
4
|
Summary: Library to interact with Chemstation software, primarily used in Hein lab
|
5
5
|
Project-URL: Documentation, https://pychemstation-e5a086.gitlab.io/pychemstation.html
|
6
6
|
Project-URL: Repository, https://gitlab.com/heingroup/device-api/pychemstation
|
@@ -23,7 +23,7 @@ Requires-Dist: scipy>=1.10.1
|
|
23
23
|
Requires-Dist: xsdata>=24.9
|
24
24
|
Description-Content-Type: text/markdown
|
25
25
|
|
26
|
-
#
|
26
|
+
# pychemstation: A Python package for automated control of Chemstation using MACROs
|
27
27
|
|
28
28
|

|
29
29
|
|
@@ -0,0 +1 @@
|
|
1
|
+
8 response$ = _METHPATH$
|
@@ -0,0 +1,89 @@
|
|
1
|
+
@misc{AccelerationConsortium,
|
2
|
+
title = {Acceleration {{Consortium}}},
|
3
|
+
urldate = {2025-04-16},
|
4
|
+
howpublished = {https://acceleration.utoronto.ca/events/acceleration-consortium-fall-research-symposium},
|
5
|
+
file = {/Users/lucyhao/Zotero/storage/KJJAD45E/acceleration-consortium-fall-research-symposium.html}
|
6
|
+
}
|
7
|
+
|
8
|
+
@misc{BourneGroupHPLCMethodOptimisationGUIHPLC,
|
9
|
+
title = {Bourne-{{Group}}/{{HPLCMethodOptimisationGUI}}: {{HPLC}} Method Optimisation Using Machine Learning},
|
10
|
+
urldate = {2025-04-16},
|
11
|
+
howpublished = {https://github.com/Bourne-Group/HPLCMethodOptimisationGUI}
|
12
|
+
}
|
13
|
+
|
14
|
+
@misc{ChromatographyMethodDevelopment,
|
15
|
+
title = {Chromatography {{Method Development}} - {{OpenLab ChemStation}} {\textbar} {{Agilent}}},
|
16
|
+
urldate = {2025-04-16},
|
17
|
+
howpublished = {https://www.agilent.com/en/product/software-informatics/analytical-software-suite/chromatography-data-systems/openlab-chemstation},
|
18
|
+
file = {/Users/lucyhao/Zotero/storage/KBK2IZV3/openlab-chemstation.html}
|
19
|
+
}
|
20
|
+
|
21
|
+
@misc{CroningpAnalyticallabware2025,
|
22
|
+
title = {Croningp/Analyticallabware},
|
23
|
+
year = {2025},
|
24
|
+
month = mar,
|
25
|
+
urldate = {2025-04-16},
|
26
|
+
howpublished = {croningp}
|
27
|
+
}
|
28
|
+
|
29
|
+
@article{dixonOperatorfreeHPLCAutomated2024a,
|
30
|
+
title = {Operator-Free {{HPLC}} Automated Method Development Guided by {{Bayesian}} Optimization},
|
31
|
+
author = {Dixon, Thomas M. and Williams, Jeanine and Besenhard, Maximilian and Howard, Roger M. and MacGregor, James and Peach, Philip and Clayton, Adam D. and Warren, Nicholas J. and Bourne, Richard A.},
|
32
|
+
year = {2024},
|
33
|
+
month = aug,
|
34
|
+
journal = {Digital Discovery},
|
35
|
+
volume = {3},
|
36
|
+
number = {8},
|
37
|
+
pages = {1591--1601},
|
38
|
+
publisher = {RSC},
|
39
|
+
issn = {2635-098X},
|
40
|
+
doi = {10.1039/D4DD00062E},
|
41
|
+
urldate = {2025-04-16},
|
42
|
+
abstract = {The need to efficiently develop high performance liquid chromatography (HPLC) methods, whilst adhering to quality by design principles is of paramount importance when it comes to impurity detection in the synthesis of active pharmaceutical ingredients. This study highlights a novel approach that fully automates HPLC method development using black-box single and multi-objective Bayesian optimization algorithms. Three continuous variables including the initial isocratic hold time, initial organic modifier concentration and the gradient time were adjusted to simultaneously optimize the number of peaks detected, the resolution between peaks and the method length. Two mixtures of analytes, one with seven compounds and one with eleven compounds, were investigated. The system explored the design space to find a global optimum in chromatogram quality without human assistance, and methods that gave baseline resolution were identified. Optimal operating conditions were typically reached within just 13 experiments. The single and multi-objective Bayesian optimization algorithms were compared to show that multi-objective optimization was more suitable for HPLC method development. This allowed for multiple chromatogram acceptance criteria to be selected without having to repeat the entire optimization, making it a useful tool for robustness testing. Work in this paper presents a fully ``operator-free'' and closed loop HPLC method optimization process that can find optimal methods quickly when compared to other modern HPLC optimization techniques such as design of experiments, linear solvent strength models or quantitative structure retention relationships.},
|
43
|
+
langid = {english},
|
44
|
+
file = {/Users/lucyhao/Zotero/storage/R6J4X3FX/Dixon et al. - 2024 - Operator-free HPLC automated method development guided by Bayesian optimization.pdf;/Users/lucyhao/Zotero/storage/U6VQC54Q/Dixon et al. - 2024 - Operator-free HPLC automated method development guided by Bayesian optimization.pdf}
|
45
|
+
}
|
46
|
+
|
47
|
+
@misc{DynamicSamplingAutonomous,
|
48
|
+
title = {Dynamic Sampling in Autonomous Process Optimization - {{Chemical Science}} ({{RSC Publishing}})},
|
49
|
+
urldate = {2025-04-16},
|
50
|
+
howpublished = {https://pubs.rsc.org/en/content/articlelanding/2024/sc/d3sc06884f\#!divAbstract},
|
51
|
+
file = {/Users/lucyhao/Zotero/storage/V9P3MB47/d3sc06884f.html}
|
52
|
+
}
|
53
|
+
|
54
|
+
@misc{HeinGroupHplcmethodoptimization2025,
|
55
|
+
title = {Hein {{Group}} / Hplc-Method-Optimization {$\cdot$} {{GitLab}}},
|
56
|
+
year = {2025},
|
57
|
+
month = apr,
|
58
|
+
journal = {GitLab},
|
59
|
+
urldate = {2025-04-16},
|
60
|
+
abstract = {GitLab.com},
|
61
|
+
howpublished = {https://gitlab.com/heingroup/hplc-method-optimization},
|
62
|
+
langid = {english}
|
63
|
+
}
|
64
|
+
|
65
|
+
@article{robertsAutomatingStochasticAntibody2025,
|
66
|
+
title = {Automating Stochastic Antibody--Drug Conjugation: A Self-Driving Lab Approach for Enhanced Therapeutic Development},
|
67
|
+
shorttitle = {Automating Stochastic Antibody--Drug Conjugation},
|
68
|
+
author = {Roberts, Liam and Reish, Matthew E. and Yang, Jerrica and Zhang, Wenyu and Derasp, Joshua S. and Hein, Jason E.},
|
69
|
+
year = {2025},
|
70
|
+
month = apr,
|
71
|
+
journal = {Digital Discovery},
|
72
|
+
volume = {4},
|
73
|
+
number = {4},
|
74
|
+
pages = {979--986},
|
75
|
+
publisher = {RSC},
|
76
|
+
issn = {2635-098X},
|
77
|
+
doi = {10.1039/D4DD00363B},
|
78
|
+
urldate = {2025-04-16},
|
79
|
+
abstract = {Antibody--drug conjugates (ADCs) have become a promising cancer treatment over the past two decades due to their on-target drug-release capabilities. However, labor-intensive manual conjugations currently limit the throughput of ADC synthesis. Herein, we introduce a Self-Driving Lab (SDL) for automated stochastic antibody--drug conjugation and characterization. The robotic platform performs conjugations and determines drug to antibody ratios from chromatography data, enabling the production of target ADCs iteratively in a closed loop. Our SDL establishes a robust foundation for increasing ADC production throughput and accelerating the development of cancer therapeutics.},
|
80
|
+
langid = {english},
|
81
|
+
file = {/Users/lucyhao/Zotero/storage/ENB4N88F/Roberts et al. - 2025 - Automating stochastic antibody–drug conjugation a self-driving lab approach for enhanced therapeuti.pdf;/Users/lucyhao/Zotero/storage/MQW4T3ZY/Roberts et al. - 2025 - Automating stochastic antibody–drug conjugation a self-driving lab approach for enhanced therapeuti.pdf}
|
82
|
+
}
|
83
|
+
|
84
|
+
@article{schneiderMacroProgrammingGuide,
|
85
|
+
title = {Macro {{Programming Guide}}},
|
86
|
+
author = {Schneider, J{\"u}rgen},
|
87
|
+
langid = {english},
|
88
|
+
file = {/Users/lucyhao/Zotero/storage/QKT883DB/Schneider - Macro Programming Guide.pdf}
|
89
|
+
}
|
@@ -0,0 +1,133 @@
|
|
1
|
+
---
|
2
|
+
title: 'pychemstation: A Python package for automated control of Chemstation using MACROs'
|
3
|
+
tags:
|
4
|
+
- Python
|
5
|
+
- Self Driving Labs
|
6
|
+
- SDL
|
7
|
+
- HPLC
|
8
|
+
- Automation
|
9
|
+
authors:
|
10
|
+
- name: Lucy Hao
|
11
|
+
email: lucyhao@chem.ubc.ca
|
12
|
+
orcid: 0000-0003-0296-3591
|
13
|
+
affiliation: 1
|
14
|
+
- name: Maria Politi
|
15
|
+
email: politim@chem.ubc.ca
|
16
|
+
orcid: 0000-0002-5815-3371
|
17
|
+
affiliation: "1, 3"
|
18
|
+
- name: Jason Hein
|
19
|
+
email: jhein@chem.ubc.ca
|
20
|
+
orcid: 0000-0002-4345-3005
|
21
|
+
affiliation: "1, 2, 3, 4"
|
22
|
+
affiliations:
|
23
|
+
- name: Department of Chemistry, The University of British Columbia, Vancouver, Canada
|
24
|
+
index: 1
|
25
|
+
- name: Department of Chemistry, University of Bergen, Norway
|
26
|
+
index: 2
|
27
|
+
- name: Acceleration Consortium, University of Toronto, Toronto, ON, Canada
|
28
|
+
index: 3
|
29
|
+
- name: Telescope Innovations Corp., Vancouver, BC, Canada
|
30
|
+
index: 4
|
31
|
+
date: 17 April 2025
|
32
|
+
bibliography: paper.bib
|
33
|
+
---
|
34
|
+
|
35
|
+
# Summary
|
36
|
+
|
37
|
+
`pychemstation` is a Python package that automates the use of high-performance liquid chromatography (HPLC) machines using
|
38
|
+
Chemstation [@ChromatographyMethodDevelopment]. Python enables easy adoption by chemists and integrates smoothly with
|
39
|
+
existing data analysis and robotics packages used in developing automated chemical workflows. The `pychemstation` API
|
40
|
+
provides users with a simple class-based interface to automate common operations such as running analytical methods and
|
41
|
+
sequences, modifying methods and sequences, and extracting chromatograms after runs. `pychemstation` provides this functionality by generating MACROs (a command
|
42
|
+
protocol developed by Agilent) which are sent to ChemStation for execution. With HPLC being one of the most widely
|
43
|
+
used analytical methods in research and industry, `pychemstation` opens the doors to using this powerful analytical technique in automated chemical workflows.
|
44
|
+
|
45
|
+
# Statement of need
|
46
|
+
|
47
|
+
Chemists run hundreds of analytical measurements to gain insight into chemical reactions.
|
48
|
+
This amounts to hours of manual labour to interact with graphical user interfaces (GUIs) to modify analytical methods,
|
49
|
+
run the methods, and then extract data to gain scientific insight. Tasks such as these are amenable to automation, leading to a broader research
|
50
|
+
goal to automate experiments through self-driving labs (SDLs) [@robertsAutomatingStochasticAntibody2025; @DynamicSamplingAutonomous].
|
51
|
+
SDLs are robotic platforms that autonomously plan and execute hundreds of chemical reactions. Building an SDL requires
|
52
|
+
every step a chemist would do by hand to be automated, one of them being the running of analytical equipment such as HPLC.
|
53
|
+
Building autonomous chemical requires the development of robust software tools that enable control and communication with analytical hardware.
|
54
|
+
|
55
|
+
`pychemstation` was designed to be used by chemists to control Agilent-specific HPLC machines in their day-to-day
|
56
|
+
operations or in developing SDLs. The development of `pychemstation` stemmed from the desire for a
|
57
|
+
robust strategy to interact with Chemstation, moving away from the fragile and cumbersome development of the “mouse and
|
58
|
+
keyboard” interaction strategy with the GUI. Development began from the augmentation of an existing Python codebase for
|
59
|
+
sending MACROs to Chemstation, with addition more MACROs through trial-and-error and previous published work
|
60
|
+
[@CroningpAnalyticallabware2025; @dixonOperatorfreeHPLCAutomated2024a; @BourneGroupHPLCMethodOptimisationGUIHPLCl; @schneiderMacroProgrammingGuide].
|
61
|
+
`pychemstation` has already been used in several of the Hein group's projects, including SDLs for kinetics,
|
62
|
+
liquid-liquid extraction and development of a Python based tool for autonomous data-driven HPLC method
|
63
|
+
development [@AccelerationConsortium; @HeinGroupHplcmethodoptimization2025]. Built with robustness and ease-of-use in
|
64
|
+
mind, `pychemstation` frees the chemist from repetitive tasks and gives SDL developers the ability to seamlessly interact with
|
65
|
+
HPLC machines through an API, enhancing productivity and enabling more efficient software integration.
|
66
|
+
|
67
|
+
# Description
|
68
|
+
|
69
|
+
`pychemstation` controls the operation of Chemstation through a set of `Controller` classes which generate MACROs based
|
70
|
+
on Python dataclasses. A schematic describing the package architecture is shown below in figure 1.
|
71
|
+
|
72
|
+

|
78
|
+
|
79
|
+
MACROs enabling functionality beyond method editing were discovered using a MACRO editor and Chemstation's built in
|
80
|
+
MACRO help [@schneiderMacroProgrammingGuide; @ChromatographyMethodDevelopment].
|
81
|
+
Python tests were written to ensure proper functionality of all the methods available in the `HPLCController` class that
|
82
|
+
most users interact with, shown in figure 2. These tests include both unit (testing the individual controller
|
83
|
+
classes) and integration tests (such as editing of methods and running them immediately after with retrieval of run
|
84
|
+
data). Tests were run on two different HPLC machines in the Hein group.
|
85
|
+
|
86
|
+

|
87
|
+
|
88
|
+
The `HPLCController` class contains a series of subclasses of `RunController` and `DeviceController`.
|
89
|
+
`RunController` subclasses, `MethodController` and `SequenceController`, generate MACROs related to runs,
|
90
|
+
such as triggering runs and returning data. The `DeviceController` subclasses are a new edition, allowing users to load
|
91
|
+
details about the injector, diode array detector, column/thermostat and pumps. The subclasses extending
|
92
|
+
`DeviceController` are in active development.
|
93
|
+
|
94
|
+
The `RunController` subclasses provide `pychemstation`'s main functionality. The `MethodController` triggers method runs for one sample, while the `SequenceController` can trigger a runf o
|
95
|
+
After a run is triggered, the `RunController` can either block until the HPLC is done the run or immediately return. If the user
|
96
|
+
chooses to return before the HPLC is done a run, they choose to check how much time is remaining for the run. After the
|
97
|
+
run, the `RunController` returns all the necessary file paths for further data processing. The UV chromatogram is returned per active channel, or for the entire
|
98
|
+
scanned spectrum. There is limited data processing functionality for the auto-generated report in the `ReportProcessor`
|
99
|
+
classes, thus other Python libraries are recommended for more in depth processing.
|
100
|
+
|
101
|
+
The `MethodController` edits the pump timetable while the `SequenceController` edits the sequence table. An example is
|
102
|
+
shown below. Various combinations of parameters and editing scenarios were tested to ensure the generated MACROs could
|
103
|
+
handle different types of parameter updates.
|
104
|
+
|
105
|
+

|
106
|
+

|
107
|
+
|
108
|
+
A summary of available methods and functionality are shown in the tables below.
|
109
|
+
|
110
|
+
| Run Controller | Features |
|
111
|
+
|----------------|------------------------------------------------------------------------------------------------------------|
|
112
|
+
| Sequence | Switch, Load sequence details, Edit sequence table entries, Run sequence, Retrieve sequence run data files |
|
113
|
+
| Method | Switch, Load method timetable, Edit method timetable, Run method, Retrieve method run data files |
|
114
|
+
|
115
|
+
| Device Controller | Features |
|
116
|
+
|----------------------|-------------------------------------------------------------------------------------|
|
117
|
+
| Pump | Edit parameters (flow, pressure, organic modifier), solvent and waste bottle status |
|
118
|
+
| Diode Array Detector | Read and set active wavelengths |
|
119
|
+
| Injector | Change injection volume |
|
120
|
+
| Columns | Read active column, edit active column |
|
121
|
+
|
122
|
+
Thus, `pychemstation` provides both high-level and low-level control of an HPLC machine that uses Agilent's Chemstation
|
123
|
+
software. More information and use case examples can be found in
|
124
|
+
the [documentation](https://pychemstation-e5a086.gitlab.io/pychemstation.html).
|
125
|
+
|
126
|
+
# Acknowledgements
|
127
|
+
|
128
|
+
We acknowledge contributions from Wesley McNutt, Matthew Reish and Clark Zhang and funding support from AC, NSERC,
|
129
|
+
Canada
|
130
|
+
NRC,
|
131
|
+
CFFI (?).
|
132
|
+
|
133
|
+
# References
|
@@ -54,7 +54,7 @@ class CommunicationController(ABCCommunicationController):
|
|
54
54
|
raise RuntimeError("Failed to get number.")
|
55
55
|
|
56
56
|
def get_text_val(self, cmd: str) -> str:
|
57
|
-
tries =
|
57
|
+
tries = 5
|
58
58
|
for _ in range(tries):
|
59
59
|
self.send(Command.GET_TEXT_VAL_CMD.value.format(cmd=cmd))
|
60
60
|
res = self.receive()
|
{pychemstation-0.10.11 → pychemstation-0.10.13}/pychemstation/control/controllers/data_aq/method.py
RENAMED
@@ -5,12 +5,16 @@ import time
|
|
5
5
|
import warnings
|
6
6
|
from typing import Dict, List, Optional, Union, Tuple
|
7
7
|
|
8
|
-
from result import Err,
|
8
|
+
from result import Err, Result, Ok
|
9
9
|
|
10
|
-
from
|
10
|
+
from ..devices.column import ColumnController
|
11
|
+
from ..devices.dad import DADController
|
12
|
+
from ..devices.pump import PumpController
|
13
|
+
from ..devices.sample_info import SampleInfo
|
14
|
+
from ....analysis.chromatogram import (
|
11
15
|
TIME_FORMAT,
|
12
|
-
AgilentChannelChromatogramData,
|
13
16
|
AgilentHPLCChromatogram,
|
17
|
+
AgilentChannelChromatogramData,
|
14
18
|
)
|
15
19
|
|
16
20
|
from ....analysis.process_report import AgilentReport, ReportType
|
@@ -20,12 +24,13 @@ from ....utils.macro import Command
|
|
20
24
|
from ....utils.method_types import (
|
21
25
|
HPLCMethodParams,
|
22
26
|
MethodDetails,
|
27
|
+
TimeTableEntry,
|
23
28
|
Param,
|
24
29
|
PType,
|
25
|
-
TimeTableEntry,
|
26
30
|
)
|
27
|
-
from ....utils.table_types import RegisterFlag, T, Table
|
31
|
+
from ....utils.table_types import RegisterFlag, T, Table
|
28
32
|
from ..devices.injector import InjectorController
|
33
|
+
from ....utils.tray_types import Tray
|
29
34
|
|
30
35
|
|
31
36
|
class MethodController(RunController):
|
@@ -38,9 +43,17 @@ class MethodController(RunController):
|
|
38
43
|
data_dirs: Optional[List[str]],
|
39
44
|
table: Table,
|
40
45
|
offline: bool,
|
41
|
-
|
46
|
+
injector: InjectorController,
|
47
|
+
pump: PumpController,
|
48
|
+
dad: DADController,
|
49
|
+
column: ColumnController,
|
50
|
+
sample_info: SampleInfo,
|
42
51
|
):
|
43
|
-
self.
|
52
|
+
self.injector = injector
|
53
|
+
self.pump = pump
|
54
|
+
self.dad = dad
|
55
|
+
self.column = column
|
56
|
+
self.sample_info = sample_info
|
44
57
|
self.data_files: List[str] = []
|
45
58
|
super().__init__(
|
46
59
|
controller=controller,
|
@@ -50,6 +63,9 @@ class MethodController(RunController):
|
|
50
63
|
offline=offline,
|
51
64
|
)
|
52
65
|
|
66
|
+
def get_sample_location(self) -> Tray:
|
67
|
+
return self.sample_info.get_location()
|
68
|
+
|
53
69
|
def get_current_method_name(self) -> str:
|
54
70
|
self.sleepy_send(Command.GET_METHOD_CMD)
|
55
71
|
res = self.receive()
|
@@ -60,18 +76,8 @@ class MethodController(RunController):
|
|
60
76
|
def get_method_params(self) -> HPLCMethodParams:
|
61
77
|
if self.controller:
|
62
78
|
return HPLCMethodParams(
|
63
|
-
organic_modifier=self.
|
64
|
-
|
65
|
-
register=self.table_locator.register,
|
66
|
-
register_flag=RegisterFlag.SOLVENT_B_COMPOSITION,
|
67
|
-
)
|
68
|
-
),
|
69
|
-
flow=self.controller.get_num_val(
|
70
|
-
cmd=TableOperation.GET_OBJ_HDR_VAL.value.format(
|
71
|
-
register=self.table_locator.register,
|
72
|
-
register_flag=RegisterFlag.FLOW,
|
73
|
-
)
|
74
|
-
),
|
79
|
+
organic_modifier=self.get_om(),
|
80
|
+
flow=self.get_flow(),
|
75
81
|
)
|
76
82
|
raise ValueError("Communication controller is offline!")
|
77
83
|
|
@@ -135,26 +141,6 @@ class MethodController(RunController):
|
|
135
141
|
method_name = res.ok_value.string_response
|
136
142
|
return method_name
|
137
143
|
|
138
|
-
def get_post_time(self) -> Union[int, float]:
|
139
|
-
if self.controller:
|
140
|
-
return self.controller.get_num_val(
|
141
|
-
cmd=TableOperation.GET_OBJ_HDR_VAL.value.format(
|
142
|
-
register=self.table_locator.register,
|
143
|
-
register_flag=RegisterFlag.POST_TIME,
|
144
|
-
)
|
145
|
-
)
|
146
|
-
raise ValueError("Communication controller is not online!")
|
147
|
-
|
148
|
-
def get_stop_time(self) -> Union[int, float]:
|
149
|
-
if self.controller:
|
150
|
-
return self.controller.get_num_val(
|
151
|
-
cmd=TableOperation.GET_OBJ_HDR_VAL.value.format(
|
152
|
-
register=self.table_locator.register,
|
153
|
-
register_flag=RegisterFlag.MAX_TIME,
|
154
|
-
)
|
155
|
-
)
|
156
|
-
raise ValueError("Communication controller is not online!")
|
157
|
-
|
158
144
|
def get_total_runtime(self) -> Union[int, float]:
|
159
145
|
"""Returns total method runtime in minutes."""
|
160
146
|
return self.get_post_time() + self.get_stop_time()
|
@@ -214,20 +200,14 @@ class MethodController(RunController):
|
|
214
200
|
self.edit_method_timetable(updated_method.timetable)
|
215
201
|
|
216
202
|
if save:
|
217
|
-
self.
|
218
|
-
Command.SAVE_METHOD_CMD.value.format(
|
219
|
-
commit_msg=f"saved method at {str(time.time())}"
|
220
|
-
)
|
221
|
-
)
|
203
|
+
self.save_method()
|
222
204
|
|
223
|
-
def
|
224
|
-
self.
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
ptype=PType.NUM,
|
205
|
+
def save_method(self):
|
206
|
+
self.send(
|
207
|
+
Command.SAVE_METHOD_CMD.value.format(
|
208
|
+
commit_msg=f"saved method at {str(time.time())}"
|
209
|
+
)
|
229
210
|
)
|
230
|
-
self._update_param(initial_organic_modifier)
|
231
211
|
|
232
212
|
def _validate_organic_modifier(self, new_om):
|
233
213
|
if not (isinstance(new_om, int) or isinstance(new_om, float)):
|
@@ -237,13 +217,6 @@ class MethodController(RunController):
|
|
237
217
|
if new_om > 100:
|
238
218
|
raise ValueError("Organic modifer must be less than 100.")
|
239
219
|
|
240
|
-
def edit_flow(self, new_flow: Union[int, float]):
|
241
|
-
self._validate_flow(new_flow)
|
242
|
-
flow: Param = Param(
|
243
|
-
val=new_flow, chemstation_key=RegisterFlag.FLOW, ptype=PType.NUM
|
244
|
-
)
|
245
|
-
self._update_param(flow)
|
246
|
-
|
247
220
|
def _validate_flow(self, new_flow):
|
248
221
|
if not (isinstance(new_flow, int) or isinstance(new_flow, float)):
|
249
222
|
raise ValueError("Flow must be int or float")
|
@@ -252,38 +225,12 @@ class MethodController(RunController):
|
|
252
225
|
if new_flow >= 5.0:
|
253
226
|
raise ValueError("Flow must be less than 5.0")
|
254
227
|
|
255
|
-
def edit_stop_time(self, new_stop_time: Union[int, float]):
|
256
|
-
self.validate_stop_time(new_stop_time)
|
257
|
-
stop_time: Param = Param(
|
258
|
-
val=new_stop_time,
|
259
|
-
chemstation_key=RegisterFlag.MAX_TIME,
|
260
|
-
ptype=PType.NUM,
|
261
|
-
)
|
262
|
-
self._update_param(
|
263
|
-
Param(
|
264
|
-
val="Set", chemstation_key=RegisterFlag.STOPTIME_MODE, ptype=PType.STR
|
265
|
-
)
|
266
|
-
)
|
267
|
-
self._update_param(stop_time)
|
268
|
-
|
269
228
|
def validate_stop_time(self, new_stop_time):
|
270
229
|
if not (isinstance(new_stop_time, int) or isinstance(new_stop_time, float)):
|
271
230
|
raise ValueError("Stop time must be int or float")
|
272
231
|
if new_stop_time < 0:
|
273
232
|
raise ValueError("Stop time must be positive")
|
274
233
|
|
275
|
-
def edit_post_time(self, new_post_time: Union[int, float]):
|
276
|
-
self.validate_post_time(new_post_time)
|
277
|
-
post_time: Param = Param(
|
278
|
-
val=new_post_time,
|
279
|
-
chemstation_key=RegisterFlag.POST_TIME,
|
280
|
-
ptype=PType.NUM,
|
281
|
-
)
|
282
|
-
self._update_param(
|
283
|
-
Param(val="Set", chemstation_key=RegisterFlag.POSTIME_MODE, ptype=PType.STR)
|
284
|
-
)
|
285
|
-
self._update_param(post_time)
|
286
|
-
|
287
234
|
def validate_post_time(self, new_post_time):
|
288
235
|
if not (isinstance(new_post_time, int) or isinstance(new_post_time, float)):
|
289
236
|
raise ValueError("Post time must be int or float")
|
@@ -298,59 +245,14 @@ class MethodController(RunController):
|
|
298
245
|
new_post_time: Union[int, float] | None,
|
299
246
|
):
|
300
247
|
self.delete_table()
|
301
|
-
self.
|
248
|
+
self._validate_flow(new_flow)
|
249
|
+
self.validate_post_time(new_post_time)
|
250
|
+
self._validate_organic_modifier(new_initial_om)
|
251
|
+
self.validate_stop_time(new_stop_time)
|
302
252
|
self.edit_flow(new_flow)
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
self._update_param(
|
307
|
-
Param(
|
308
|
-
val="Off",
|
309
|
-
chemstation_key=RegisterFlag.STOPTIME_MODE,
|
310
|
-
ptype=PType.STR,
|
311
|
-
)
|
312
|
-
)
|
313
|
-
if new_post_time:
|
314
|
-
self.edit_post_time(new_post_time)
|
315
|
-
else:
|
316
|
-
self._update_param(
|
317
|
-
Param(
|
318
|
-
val="Off",
|
319
|
-
chemstation_key=RegisterFlag.POSTIME_MODE,
|
320
|
-
ptype=PType.STR,
|
321
|
-
)
|
322
|
-
)
|
323
|
-
|
324
|
-
def _update_param(self, method_param: Param):
|
325
|
-
"""Change a method parameter, changes what is visibly seen in Chemstation GUI.
|
326
|
-
(changes the first row in the timetable)
|
327
|
-
|
328
|
-
:param method_param: a parameter to update for currently loaded method.
|
329
|
-
"""
|
330
|
-
register = self.table_locator.register
|
331
|
-
setting_command = (
|
332
|
-
TableOperation.UPDATE_OBJ_HDR_VAL
|
333
|
-
if method_param.ptype == PType.NUM
|
334
|
-
else TableOperation.UPDATE_OBJ_HDR_TEXT
|
335
|
-
)
|
336
|
-
if isinstance(method_param.chemstation_key, list):
|
337
|
-
for register_flag in method_param.chemstation_key:
|
338
|
-
self.sleepy_send(
|
339
|
-
setting_command.value.format(
|
340
|
-
register=register,
|
341
|
-
register_flag=register_flag,
|
342
|
-
val=method_param.val,
|
343
|
-
)
|
344
|
-
)
|
345
|
-
else:
|
346
|
-
self.sleepy_send(
|
347
|
-
setting_command.value.format(
|
348
|
-
register=register,
|
349
|
-
register_flag=method_param.chemstation_key,
|
350
|
-
val=method_param.val,
|
351
|
-
)
|
352
|
-
)
|
353
|
-
self.download()
|
253
|
+
self.edit_initial_om(new_initial_om)
|
254
|
+
self.edit_stop_time(new_stop_time)
|
255
|
+
self.edit_post_time(new_post_time)
|
354
256
|
|
355
257
|
def download(self):
|
356
258
|
self.sleepy_send("DownloadRCMethod PMP1")
|
@@ -585,3 +487,77 @@ class MethodController(RunController):
|
|
585
487
|
Row {i + 1} ({timetable[i].start_time}) has a smaller or equal starttime than row {i} ({start_time})"""
|
586
488
|
)
|
587
489
|
self._validate_row(row)
|
490
|
+
|
491
|
+
def get_om(self):
|
492
|
+
return self._read_num_param(RegisterFlag.SOLVENT_B_COMPOSITION)
|
493
|
+
|
494
|
+
def get_flow(self):
|
495
|
+
return self._read_num_param(RegisterFlag.FLOW)
|
496
|
+
|
497
|
+
def get_post_time(self) -> Union[int, float]:
|
498
|
+
return self._read_num_param(RegisterFlag.POST_TIME)
|
499
|
+
|
500
|
+
def get_stop_time(self) -> Union[int, float]:
|
501
|
+
return self._read_num_param(RegisterFlag.MAX_TIME)
|
502
|
+
|
503
|
+
def edit_post_time(self, new_post_time: Optional[int | float]):
|
504
|
+
if new_post_time:
|
505
|
+
post_time: Param = Param(
|
506
|
+
val=new_post_time,
|
507
|
+
chemstation_key=RegisterFlag.POST_TIME,
|
508
|
+
ptype=PType.NUM,
|
509
|
+
)
|
510
|
+
self._update_param(
|
511
|
+
Param(
|
512
|
+
val="Set",
|
513
|
+
chemstation_key=RegisterFlag.POSTIME_MODE,
|
514
|
+
ptype=PType.STR,
|
515
|
+
)
|
516
|
+
)
|
517
|
+
self._update_param(post_time)
|
518
|
+
else:
|
519
|
+
self._update_param(
|
520
|
+
Param(
|
521
|
+
val="Off",
|
522
|
+
chemstation_key=RegisterFlag.POSTIME_MODE,
|
523
|
+
ptype=PType.STR,
|
524
|
+
)
|
525
|
+
)
|
526
|
+
|
527
|
+
def edit_stop_time(self, new_stop_time: Optional[int | float]):
|
528
|
+
if new_stop_time:
|
529
|
+
stop_time: Param = Param(
|
530
|
+
val=new_stop_time,
|
531
|
+
chemstation_key=RegisterFlag.MAX_TIME,
|
532
|
+
ptype=PType.NUM,
|
533
|
+
)
|
534
|
+
self._update_param(
|
535
|
+
Param(
|
536
|
+
val="Set",
|
537
|
+
chemstation_key=RegisterFlag.STOPTIME_MODE,
|
538
|
+
ptype=PType.STR,
|
539
|
+
)
|
540
|
+
)
|
541
|
+
self._update_param(stop_time)
|
542
|
+
else:
|
543
|
+
self._update_param(
|
544
|
+
Param(
|
545
|
+
val="Off",
|
546
|
+
chemstation_key=RegisterFlag.STOPTIME_MODE,
|
547
|
+
ptype=PType.STR,
|
548
|
+
)
|
549
|
+
)
|
550
|
+
|
551
|
+
def edit_flow(self, new_flow: Union[int, float]):
|
552
|
+
flow: Param = Param(
|
553
|
+
val=new_flow, chemstation_key=RegisterFlag.FLOW, ptype=PType.NUM
|
554
|
+
)
|
555
|
+
self._update_param(flow)
|
556
|
+
|
557
|
+
def edit_initial_om(self, new_om: Union[int, float]):
|
558
|
+
initial_organic_modifier: Param = Param(
|
559
|
+
val=new_om,
|
560
|
+
chemstation_key=RegisterFlag.SOLVENT_B_COMPOSITION,
|
561
|
+
ptype=PType.NUM,
|
562
|
+
)
|
563
|
+
self._update_param(initial_organic_modifier)
|