pychemstation 0.10.6__tar.gz → 0.10.7__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.6 → pychemstation-0.10.7}/PKG-INFO +3 -3
- {pychemstation-0.10.6 → pychemstation-0.10.7}/README.md +1 -1
- {pychemstation-0.10.6 → pychemstation-0.10.7}/out.txt +134 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/README.md +1 -1
- {pychemstation-0.10.6/pychemstation/utils/mocking → pychemstation-0.10.7/pychemstation/control/controllers/abc_tables}/abc_comm.py +1 -6
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/device.py +5 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/run.py +42 -14
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/table.py +15 -6
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/comm.py +26 -5
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/data_aq/method.py +10 -13
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/data_aq/sequence.py +118 -88
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/devices/injector.py +4 -4
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/hplc.py +38 -26
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/macro.py +11 -0
- pychemstation-0.10.7/pychemstation/utils/mocking/mock_comm.py +5 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/sequence_types.py +3 -2
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pyproject.toml +2 -2
- pychemstation-0.10.7/tests/cmd +1 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/constants.py +10 -6
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/out.txt +4686 -0
- pychemstation-0.10.7/tests/reply +0 -0
- pychemstation-0.10.7/tests/test_abc.py +45 -0
- pychemstation-0.10.7/tests/test_comm.py +30 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_method.py +3 -6
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_offline.py +29 -10
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_sequence.py +28 -38
- {pychemstation-0.10.6 → pychemstation-0.10.7}/uv.lock +1 -1
- pychemstation-0.10.6/pychemstation/utils/mocking/mock_comm.py +0 -5
- {pychemstation-0.10.6 → pychemstation-0.10.7}/.gitignore +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/.gitlab-ci.yml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/.pre-commit-config.yaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/CHANGELOG.md +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/CONTRIBUTING.md +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/LICENSE +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/index.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/analysis/base_spectrum.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/analysis/spec_utils.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/analysis/utils.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/analysis.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/control/chromatogram.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/control/hplc.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/control.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/generated.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/utils/chemstation.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/utils/constants.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/utils/hplc_param_types.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation/utils.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/pychemstation.html +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/doc/search.js +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/analysis/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/analysis/base_spectrum.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/analysis/chromatogram.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/analysis/process_report.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/README.md +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/data_aq/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/devices/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/generated/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/generated/dad_method.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/generated/pump_method.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/injector_types.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/method_types.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/mocking/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/mocking/mock_hplc.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/num_utils.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/parsing.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/pump_types.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/spec_utils.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/table_types.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/utils/tray_types.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation.egg-info/PKG-INFO +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation.egg-info/SOURCES.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation.egg-info/dependency_links.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation.egg-info/requires.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation.egg-info/top_level.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/acq.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/da.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/0_2025-03-15 19-14-35.D/single.B +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/ACQRES.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/CSlbk.ini +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1.UV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DiagResults.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Limsinf.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/RUN.LOG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/da.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/lcdiag.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/sample.acaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/single.B +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/__init__.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_talk.mac +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/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.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_injector.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_integration.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/tests/test_online.py +0 -0
- {pychemstation-0.10.6 → pychemstation-0.10.7}/update-lib.sh +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pychemstation
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.7
|
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
|
@@ -18,7 +18,7 @@ Requires-Dist: matplotlib>=3.7.5
|
|
18
18
|
Requires-Dist: pandas>=2.0.3
|
19
19
|
Requires-Dist: pdoc>=14.7.0
|
20
20
|
Requires-Dist: polling>=0.3.2
|
21
|
-
Requires-Dist: pre-commit>=
|
21
|
+
Requires-Dist: pre-commit>=3.5.0
|
22
22
|
Requires-Dist: pytest>=7.3.5
|
23
23
|
Requires-Dist: rainbow-api>=1.0.10
|
24
24
|
Requires-Dist: result>=0.17.0
|
@@ -90,7 +90,7 @@ DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
|
90
90
|
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
91
91
|
|
92
92
|
# Initialize HPLC Controller
|
93
|
-
hplc_controller = HPLCController(
|
93
|
+
hplc_controller = HPLCController(extra_data_dirs=[DATA_DIR_2, DATA_DIR_3],
|
94
94
|
comm_dir=DEFAULT_COMMAND_PATH,
|
95
95
|
method_dir=DEFAULT_METHOD_DIR,
|
96
96
|
sequence_dir=SEQUENCE_DIR)
|
@@ -59,7 +59,7 @@ DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
|
59
59
|
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
60
60
|
|
61
61
|
# Initialize HPLC Controller
|
62
|
-
hplc_controller = HPLCController(
|
62
|
+
hplc_controller = HPLCController(extra_data_dirs=[DATA_DIR_2, DATA_DIR_3],
|
63
63
|
comm_dir=DEFAULT_COMMAND_PATH,
|
64
64
|
method_dir=DEFAULT_METHOD_DIR,
|
65
65
|
sequence_dir=SEQUENCE_DIR)
|
@@ -375,3 +375,137 @@ LoadMethod "D:\Chemstation\1\Methods\", "GENERAL-POROSHELL-OPT.M"
|
|
375
375
|
response$ = _MethFile$
|
376
376
|
Rows = TabHdrVal(RCPMP1Method[1], "Timetable", "NumberOfRows")
|
377
377
|
response_num = TabHdrVal(RCPMP1Method[1], "Timetable", "NumberOfRows")
|
378
|
+
response$ = AcqStatus$
|
379
|
+
Local Rows
|
380
|
+
SaveMethod _MethPath$, _MethFile$, "method saved by pychemstation"
|
381
|
+
SaveSequence _SeqPath$, _SeqFile$
|
382
|
+
LIDoOperation "TURN_ON"
|
383
|
+
PrepRun
|
384
|
+
_SeqFile$ = "hplc_testing.S"
|
385
|
+
_SeqPath$ = "C:\1\Sequence\"
|
386
|
+
LoadSequence _SeqPath$, _SeqFile$
|
387
|
+
response$ = _SeqFile$
|
388
|
+
Rows = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
389
|
+
response_num = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
390
|
+
Sleep 0.1
|
391
|
+
Print Rows
|
392
|
+
response$ = _SeqFile$
|
393
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "SampleName")
|
394
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "Vial")
|
395
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "Method")
|
396
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "InjVial")
|
397
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjVolume")
|
398
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjectionSource")
|
399
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "SampleType")
|
400
|
+
Rows = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
401
|
+
response_num = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
402
|
+
Sleep 0.1
|
403
|
+
Print Rows
|
404
|
+
response$ = _SeqFile$
|
405
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "SampleName")
|
406
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "Vial")
|
407
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "Method")
|
408
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "InjVial")
|
409
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjVolume")
|
410
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjectionSource")
|
411
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "SampleType")
|
412
|
+
response$ = AcqStatus$
|
413
|
+
Local Rows
|
414
|
+
SaveMethod _MethPath$, _MethFile$, "method saved by pychemstation"
|
415
|
+
SaveSequence _SeqPath$, _SeqFile$
|
416
|
+
LIDoOperation "TURN_ON"
|
417
|
+
PrepRun
|
418
|
+
_SeqFile$ = "hplc_testing.S"
|
419
|
+
_SeqPath$ = "C:\1\Sequence\"
|
420
|
+
LoadSequence _SeqPath$, _SeqFile$
|
421
|
+
response$ = _SeqFile$
|
422
|
+
Rows = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
423
|
+
response_num = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
424
|
+
Sleep 0.1
|
425
|
+
Print Rows
|
426
|
+
response$ = _SeqFile$
|
427
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "SampleName")
|
428
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "Vial")
|
429
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "Method")
|
430
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "InjVial")
|
431
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjVolume")
|
432
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjectionSource")
|
433
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "SampleType")
|
434
|
+
PrepRun
|
435
|
+
SaveMethod _MethPath$, _MethFile$, "{commit_msg}"
|
436
|
+
SaveSequence _SeqPath$, _SeqFile$
|
437
|
+
response_num = ObjHdrVal("RCPMP1Method[1]", "PostTime_Time")
|
438
|
+
response_num = ObjHdrVal("RCPMP1Method[1]", "StopTime_Time")
|
439
|
+
response$ = _MethFile$
|
440
|
+
RunSequence
|
441
|
+
response$ = AcqStatus$
|
442
|
+
response$ = AcqStatus$
|
443
|
+
response$ = AcqStatus$
|
444
|
+
response$ = AcqStatus$
|
445
|
+
response$ = AcqStatus$
|
446
|
+
response$ = AcqStatus$
|
447
|
+
response$ = AcqStatus$
|
448
|
+
response$ = AcqStatus$
|
449
|
+
response$ = AcqStatus$
|
450
|
+
response$ = AcqStatus$
|
451
|
+
response$ = AcqStatus$
|
452
|
+
response$ = AcqStatus$
|
453
|
+
response$ = AcqStatus$
|
454
|
+
response$ = AcqStatus$
|
455
|
+
response$ = AcqStatus$
|
456
|
+
response$ = AcqStatus$
|
457
|
+
response$ = AcqStatus$
|
458
|
+
response$ = AcqStatus$
|
459
|
+
response$ = AcqStatus$
|
460
|
+
response$ = AcqStatus$
|
461
|
+
response$ = AcqStatus$
|
462
|
+
response$ = AcqStatus$
|
463
|
+
Local Rows
|
464
|
+
SaveMethod _MethPath$, _MethFile$, "method saved by pychemstation"
|
465
|
+
SaveSequence _SeqPath$, _SeqFile$
|
466
|
+
LIDoOperation "TURN_ON"
|
467
|
+
PrepRun
|
468
|
+
_SeqFile$ = "hplc_testing.S"
|
469
|
+
_SeqPath$ = "C:\1\Sequence\"
|
470
|
+
LoadSequence _SeqPath$, _SeqFile$
|
471
|
+
response$ = _SeqFile$
|
472
|
+
Rows = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
473
|
+
response_num = TabHdrVal(_sequence[1], "SeqTable1", "NumberOfRows")
|
474
|
+
Sleep 0.1
|
475
|
+
Print Rows
|
476
|
+
response$ = _SeqFile$
|
477
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "SampleName")
|
478
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "Vial")
|
479
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "Method")
|
480
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "InjVial")
|
481
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjVolume")
|
482
|
+
response$ = TabText$("_sequence[1]", "SeqTable1", 1, "InjectionSource")
|
483
|
+
response_num = TabVal("_sequence[1]", "SeqTable1", 1, "SampleType")
|
484
|
+
PrepRun
|
485
|
+
SaveMethod _MethPath$, _MethFile$, "{commit_msg}"
|
486
|
+
SaveSequence _SeqPath$, _SeqFile$
|
487
|
+
response_num = ObjHdrVal("RCPMP1Method[1]", "PostTime_Time")
|
488
|
+
response_num = ObjHdrVal("RCPMP1Method[1]", "StopTime_Time")
|
489
|
+
response$ = _MethFile$
|
490
|
+
RunSequence
|
491
|
+
response$ = AcqStatus$
|
492
|
+
response$ = AcqStatus$
|
493
|
+
response$ = AcqStatus$
|
494
|
+
response$ = AcqStatus$
|
495
|
+
response$ = AcqStatus$
|
496
|
+
response$ = AcqStatus$
|
497
|
+
response$ = AcqStatus$
|
498
|
+
response$ = AcqStatus$
|
499
|
+
response$ = AcqStatus$
|
500
|
+
response$ = AcqStatus$
|
501
|
+
response$ = AcqStatus$
|
502
|
+
response$ = AcqStatus$
|
503
|
+
response$ = AcqStatus$
|
504
|
+
response$ = AcqStatus$
|
505
|
+
response$ = AcqStatus$
|
506
|
+
response$ = AcqStatus$
|
507
|
+
response$ = AcqStatus$
|
508
|
+
response$ = AcqStatus$
|
509
|
+
response$ = AcqStatus$
|
510
|
+
response$ = AcqStatus$
|
511
|
+
response$ = AcqStatus$
|
@@ -10,7 +10,7 @@ DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
|
10
10
|
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
11
11
|
|
12
12
|
# Initialize HPLC Controller
|
13
|
-
hplc_controller = HPLCController(
|
13
|
+
hplc_controller = HPLCController(extra_data_dirs=[DATA_DIR_2, DATA_DIR_3],
|
14
14
|
comm_dir=DEFAULT_COMMAND_PATH,
|
15
15
|
method_dir=DEFAULT_METHOD_DIR,
|
16
16
|
sequence_dir=SEQUENCE_DIR)
|
@@ -18,12 +18,7 @@ from typing import Union
|
|
18
18
|
|
19
19
|
from result import Err, Ok, Result
|
20
20
|
|
21
|
-
from
|
22
|
-
HPLCAvailStatus,
|
23
|
-
Command,
|
24
|
-
Status,
|
25
|
-
Response,
|
26
|
-
)
|
21
|
+
from ....utils.macro import Status, HPLCAvailStatus, Command, Response
|
27
22
|
|
28
23
|
|
29
24
|
class ABCCommunicationController(abc.ABC):
|
{pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/device.py
RENAMED
@@ -13,3 +13,8 @@ class DeviceController(ABCTableController, ABC):
|
|
13
13
|
):
|
14
14
|
super().__init__(controller=controller, table=table)
|
15
15
|
self.offline = offline
|
16
|
+
|
17
|
+
def __new__(cls, *args, **kwargs):
|
18
|
+
if cls is ABCTableController:
|
19
|
+
raise TypeError(f"only children of '{cls.__name__}' may be instantiated")
|
20
|
+
return object.__new__(cls)
|
{pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/run.py
RENAMED
@@ -11,13 +11,17 @@ import math
|
|
11
11
|
import os
|
12
12
|
import time
|
13
13
|
import warnings
|
14
|
-
from typing import Dict, List, Optional, Tuple, Union
|
14
|
+
from typing import Dict, List, Optional, Tuple, Union, Set
|
15
15
|
|
16
16
|
import polling
|
17
17
|
import rainbow as rb
|
18
|
-
from result import Err,
|
18
|
+
from result import Err, Ok, Result
|
19
|
+
|
20
|
+
from pychemstation.analysis.chromatogram import (
|
21
|
+
AgilentChannelChromatogramData,
|
22
|
+
AgilentHPLCChromatogram,
|
23
|
+
)
|
19
24
|
|
20
|
-
from .table import ABCTableController
|
21
25
|
from ....analysis.process_report import (
|
22
26
|
AgilentReport,
|
23
27
|
CSVProcessor,
|
@@ -25,14 +29,11 @@ from ....analysis.process_report import (
|
|
25
29
|
TXTProcessor,
|
26
30
|
)
|
27
31
|
from ....control.controllers.comm import CommunicationController
|
28
|
-
from
|
29
|
-
AgilentChannelChromatogramData,
|
30
|
-
AgilentHPLCChromatogram,
|
31
|
-
)
|
32
|
-
from ....utils.macro import HPLCRunningStatus
|
32
|
+
from ....utils.macro import Command, HPLCRunningStatus
|
33
33
|
from ....utils.method_types import MethodDetails
|
34
34
|
from ....utils.sequence_types import SequenceTable
|
35
|
-
from ....utils.table_types import
|
35
|
+
from ....utils.table_types import T, Table
|
36
|
+
from .table import ABCTableController
|
36
37
|
|
37
38
|
TableType = Union[MethodDetails, SequenceTable]
|
38
39
|
|
@@ -47,12 +48,10 @@ class RunController(ABCTableController, abc.ABC):
|
|
47
48
|
offline: bool = False,
|
48
49
|
):
|
49
50
|
super().__init__(controller=controller, table=table)
|
50
|
-
warnings.warn(
|
51
|
-
"This abstract class is not meant to be initialized. Use MethodController or SequenceController."
|
52
|
-
)
|
53
51
|
self.table_state: Optional[TableType] = None
|
54
52
|
self.curr_run_starting_time: Optional[float] = None
|
55
53
|
self.timeout: Optional[float] = None
|
54
|
+
self.current_run_child_files: Set[str] = set()
|
56
55
|
|
57
56
|
if not offline:
|
58
57
|
if src and not os.path.isdir(src):
|
@@ -79,8 +78,15 @@ class RunController(ABCTableController, abc.ABC):
|
|
79
78
|
self.uv: Dict[int, AgilentHPLCChromatogram] = {}
|
80
79
|
self.data_files: List = []
|
81
80
|
|
81
|
+
def __new__(cls, *args, **kwargs):
|
82
|
+
if cls is RunController:
|
83
|
+
raise TypeError(f"only children of '{cls.__name__}' may be instantiated")
|
84
|
+
return object.__new__(cls)
|
85
|
+
|
82
86
|
@abc.abstractmethod
|
83
|
-
def fuzzy_match_most_recent_folder(
|
87
|
+
def fuzzy_match_most_recent_folder(
|
88
|
+
self, most_recent_folder: T, child_files: Set[str]
|
89
|
+
) -> Result[T, str]:
|
84
90
|
pass
|
85
91
|
|
86
92
|
@abc.abstractmethod
|
@@ -120,6 +126,12 @@ class RunController(ABCTableController, abc.ABC):
|
|
120
126
|
|
121
127
|
def check_hplc_run_finished(self) -> Tuple[float, bool]:
|
122
128
|
if self.controller:
|
129
|
+
try:
|
130
|
+
_, current_run_file = self.get_current_run_data_dir_file()
|
131
|
+
sample_file, extension, _ = current_run_file.partition(".D")
|
132
|
+
self.current_run_child_files.add(sample_file)
|
133
|
+
except Exception:
|
134
|
+
pass
|
123
135
|
done_running = self.controller.check_if_not_running()
|
124
136
|
if self.curr_run_starting_time and self.timeout:
|
125
137
|
time_passed = time.time() - self.curr_run_starting_time
|
@@ -141,6 +153,7 @@ class RunController(ABCTableController, abc.ABC):
|
|
141
153
|
|
142
154
|
:return: Data file object containing most recent run file information.
|
143
155
|
"""
|
156
|
+
self.current_run_child_files = set()
|
144
157
|
if self.timeout is not None:
|
145
158
|
finished_run = False
|
146
159
|
minutes = math.ceil(self.timeout / 60)
|
@@ -170,7 +183,9 @@ class RunController(ABCTableController, abc.ABC):
|
|
170
183
|
else:
|
171
184
|
raise ValueError("Timeout value is None, no comparison can be made.")
|
172
185
|
|
173
|
-
check_folder = self.fuzzy_match_most_recent_folder(
|
186
|
+
check_folder = self.fuzzy_match_most_recent_folder(
|
187
|
+
self.data_files[-1], self.current_run_child_files
|
188
|
+
)
|
174
189
|
if check_folder.is_ok() and finished_run:
|
175
190
|
return check_folder
|
176
191
|
elif check_folder.is_ok():
|
@@ -226,3 +241,16 @@ class RunController(ABCTableController, abc.ABC):
|
|
226
241
|
def _reset_time(self):
|
227
242
|
self.curr_run_starting_time = None
|
228
243
|
self.timeout = None
|
244
|
+
|
245
|
+
def get_current_run_data_dir_file(self) -> Tuple[str, str]:
|
246
|
+
self.send(Command.GET_CURRENT_RUN_DATA_DIR)
|
247
|
+
full_path_name = self.receive()
|
248
|
+
self.send(Command.GET_CURRENT_RUN_DATA_FILE)
|
249
|
+
current_sample_file = self.receive()
|
250
|
+
if full_path_name.is_ok() and current_sample_file.is_ok():
|
251
|
+
return (
|
252
|
+
full_path_name.ok_value.string_response,
|
253
|
+
current_sample_file.ok_value.string_response,
|
254
|
+
)
|
255
|
+
else:
|
256
|
+
raise ValueError("Couldn't read data dir and file.")
|
{pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/abc_tables/table.py
RENAMED
@@ -7,7 +7,6 @@ Authors: Lucy Hao
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
import abc
|
10
|
-
import warnings
|
11
10
|
from typing import Optional, Union
|
12
11
|
|
13
12
|
from result import Err, Result
|
@@ -27,13 +26,15 @@ class ABCTableController(abc.ABC):
|
|
27
26
|
controller: Optional[CommunicationController],
|
28
27
|
table: Table,
|
29
28
|
):
|
30
|
-
warnings.warn(
|
31
|
-
"This abstract class is not meant to be initialized. Use MethodController or SequenceController."
|
32
|
-
)
|
33
29
|
self.controller = controller
|
34
30
|
self.table_locator = table
|
35
31
|
self.table_state: Optional[TableType] = None
|
36
32
|
|
33
|
+
def __new__(cls, *args, **kwargs):
|
34
|
+
if cls is ABCTableController:
|
35
|
+
raise TypeError(f"only children of '{cls.__name__}' may be instantiated")
|
36
|
+
return object.__new__(cls, *args, **kwargs)
|
37
|
+
|
37
38
|
def receive(self) -> Result[Response, str]:
|
38
39
|
if self.controller:
|
39
40
|
for _ in range(10):
|
@@ -93,6 +94,8 @@ class ABCTableController(abc.ABC):
|
|
93
94
|
raise ValueError("Controller is offline")
|
94
95
|
|
95
96
|
def add_new_col_num(self, col_name: RegisterFlag, val: Union[int, float]):
|
97
|
+
if not (isinstance(val, int) or isinstance(val, float)):
|
98
|
+
raise ValueError(f"{val} must be an int or float.")
|
96
99
|
self.sleepy_send(
|
97
100
|
TableOperation.NEW_COL_VAL.value.format(
|
98
101
|
register=self.table_locator.register,
|
@@ -103,6 +106,8 @@ class ABCTableController(abc.ABC):
|
|
103
106
|
)
|
104
107
|
|
105
108
|
def add_new_col_text(self, col_name: RegisterFlag, val: str):
|
109
|
+
if not isinstance(val, str):
|
110
|
+
raise ValueError(f"{val} must be a str.")
|
106
111
|
self.sleepy_send(
|
107
112
|
TableOperation.NEW_COL_TEXT.value.format(
|
108
113
|
register=self.table_locator.register,
|
@@ -115,10 +120,12 @@ class ABCTableController(abc.ABC):
|
|
115
120
|
def _edit_row_num(
|
116
121
|
self, col_name: RegisterFlag, val: Union[int, float], row: Optional[int] = None
|
117
122
|
):
|
123
|
+
if not (isinstance(val, int) or isinstance(val, float)):
|
124
|
+
raise ValueError(f"{val} must be an int or float.")
|
118
125
|
if row:
|
119
126
|
num_rows = self.get_num_rows()
|
120
127
|
if num_rows.is_ok():
|
121
|
-
if num_rows.
|
128
|
+
if num_rows.ok_value.num_response < row:
|
122
129
|
raise ValueError("Not enough rows to edit!")
|
123
130
|
|
124
131
|
self.sleepy_send(
|
@@ -134,10 +141,12 @@ class ABCTableController(abc.ABC):
|
|
134
141
|
def _edit_row_text(
|
135
142
|
self, col_name: RegisterFlag, val: str, row: Optional[int] = None
|
136
143
|
):
|
144
|
+
if not isinstance(val, str):
|
145
|
+
raise ValueError(f"{val} must be a str.")
|
137
146
|
if row:
|
138
147
|
num_rows = self.get_num_rows()
|
139
148
|
if num_rows.is_ok():
|
140
|
-
if num_rows.
|
149
|
+
if num_rows.ok_value.num_response < row:
|
141
150
|
raise ValueError("Not enough rows to edit!")
|
142
151
|
|
143
152
|
self.sleepy_send(
|
@@ -11,17 +11,17 @@ Authors: Alexander Hammer, Hessam Mehr, Lucy Hao
|
|
11
11
|
"""
|
12
12
|
|
13
13
|
import time
|
14
|
-
from typing import Optional, Union
|
14
|
+
from typing import Optional, Union, Tuple, List
|
15
15
|
|
16
16
|
from result import Err, Ok, Result
|
17
17
|
|
18
18
|
from ...utils.macro import (
|
19
|
-
str_to_status,
|
20
|
-
HPLCErrorStatus,
|
21
19
|
Command,
|
20
|
+
HPLCErrorStatus,
|
22
21
|
Status,
|
22
|
+
str_to_status,
|
23
23
|
)
|
24
|
-
from
|
24
|
+
from .abc_tables.abc_comm import ABCCommunicationController
|
25
25
|
|
26
26
|
|
27
27
|
class CommunicationController(ABCCommunicationController):
|
@@ -76,7 +76,7 @@ class CommunicationController(ABCCommunicationController):
|
|
76
76
|
if res.is_err():
|
77
77
|
return HPLCErrorStatus.NORESPONSE
|
78
78
|
if res.is_ok():
|
79
|
-
parsed_response = self.receive().
|
79
|
+
parsed_response = self.receive().ok_value.string_response
|
80
80
|
self._most_recent_hplc_status = str_to_status(parsed_response)
|
81
81
|
return self._most_recent_hplc_status
|
82
82
|
else:
|
@@ -148,3 +148,24 @@ class CommunicationController(ABCCommunicationController):
|
|
148
148
|
return Err(
|
149
149
|
f"Failed to receive reply to command #{cmd_no} due to {err} caused by {err_msg}."
|
150
150
|
)
|
151
|
+
|
152
|
+
def get_chemstation_dirs(self) -> Tuple[str, str, List[str]]:
|
153
|
+
method_dir, sequence_dir, data_dirs = None, None, None
|
154
|
+
self.send(Command.GET_METHOD_DIR)
|
155
|
+
res = self.receive()
|
156
|
+
if res.is_ok():
|
157
|
+
method_dir = res.ok_value.string_response
|
158
|
+
self.send(Command.GET_SEQUENCE_DIR)
|
159
|
+
res = self.receive()
|
160
|
+
if res.is_ok():
|
161
|
+
sequence_dir = res.ok_value.string_response
|
162
|
+
self.send(Command.GET_DATA_DIRS)
|
163
|
+
res = self.receive()
|
164
|
+
if res.is_ok():
|
165
|
+
data_dirs = res.ok().string_response.split("|")
|
166
|
+
if method_dir and sequence_dir and data_dirs:
|
167
|
+
return method_dir, sequence_dir, data_dirs
|
168
|
+
else:
|
169
|
+
raise ValueError(
|
170
|
+
"Please provide the method, sequence and data directories, could not be found."
|
171
|
+
)
|
{pychemstation-0.10.6 → pychemstation-0.10.7}/pychemstation/control/controllers/data_aq/method.py
RENAMED
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
3
3
|
import os
|
4
4
|
import time
|
5
5
|
import warnings
|
6
|
-
from typing import List, Optional, Union, Dict
|
6
|
+
from typing import List, Optional, Union, Dict, Set
|
7
7
|
|
8
8
|
from result import Err, Ok, Result
|
9
9
|
|
@@ -413,8 +413,6 @@ class MethodController(RunController):
|
|
413
413
|
:param stall_while_running: whether to stall or immediately return
|
414
414
|
:param add_timestamp: if should add timestamp to experiment name
|
415
415
|
"""
|
416
|
-
|
417
|
-
folder_name = ""
|
418
416
|
hplc_is_running = False
|
419
417
|
tries = 0
|
420
418
|
while tries < 10 and not hplc_is_running:
|
@@ -427,18 +425,15 @@ class MethodController(RunController):
|
|
427
425
|
else experiment_name,
|
428
426
|
)
|
429
427
|
)
|
430
|
-
|
431
|
-
f"{experiment_name}_{timestamp}.D"
|
432
|
-
if add_timestamp
|
433
|
-
else f"{experiment_name}.D"
|
434
|
-
)
|
428
|
+
|
435
429
|
hplc_is_running = self.check_hplc_is_running()
|
436
430
|
tries += 1
|
437
431
|
|
432
|
+
data_dir, data_file = self.get_current_run_data_dir_file()
|
438
433
|
if not hplc_is_running:
|
439
434
|
raise RuntimeError("Method failed to start.")
|
440
435
|
|
441
|
-
self.data_files.append(os.path.join(
|
436
|
+
self.data_files.append(os.path.join(os.path.normpath(data_dir), data_file))
|
442
437
|
self.timeout = (self.get_total_runtime()) * 60
|
443
438
|
|
444
439
|
if stall_while_running:
|
@@ -446,18 +441,20 @@ class MethodController(RunController):
|
|
446
441
|
if run_completed.is_ok():
|
447
442
|
self.data_files[-1] = run_completed.ok_value
|
448
443
|
else:
|
449
|
-
raise RuntimeError("Run error has occurred.")
|
444
|
+
raise RuntimeError(f"Run error has occurred:{run_completed.err_value}.")
|
450
445
|
else:
|
451
|
-
folder = self.fuzzy_match_most_recent_folder(self.data_files[-1])
|
446
|
+
folder = self.fuzzy_match_most_recent_folder(self.data_files[-1], None)
|
452
447
|
while folder.is_err():
|
453
|
-
folder = self.fuzzy_match_most_recent_folder(self.data_files[-1])
|
448
|
+
folder = self.fuzzy_match_most_recent_folder(self.data_files[-1], None)
|
454
449
|
if folder.is_ok():
|
455
450
|
self.data_files[-1] = folder.ok_value
|
456
451
|
else:
|
457
452
|
warning = f"Data folder {self.data_files[-1]} may not exist, returning and will check again after run is done."
|
458
453
|
warnings.warn(warning)
|
459
454
|
|
460
|
-
def fuzzy_match_most_recent_folder(
|
455
|
+
def fuzzy_match_most_recent_folder(
|
456
|
+
self, most_recent_folder: T, child_dirs: Optional[Set[str]]
|
457
|
+
) -> Result[str, str]:
|
461
458
|
if isinstance(most_recent_folder, str) or isinstance(most_recent_folder, bytes):
|
462
459
|
if os.path.exists(most_recent_folder):
|
463
460
|
return Ok(most_recent_folder)
|