pychemstation 0.10.8.dev2__tar.gz → 0.10.9__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.8.dev2 → pychemstation-0.10.9}/PKG-INFO +17 -12
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/README.md +16 -11
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/analysis/process_report.py +3 -1
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/data_aq/method.py +224 -70
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/data_aq/sequence.py +95 -67
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/hplc.py +29 -2
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/abc_tables/abc_comm.py +7 -3
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/abc_tables/run.py +13 -12
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/abc_tables/table.py +18 -13
- pychemstation-0.10.9/pychemstation/utils/device_types.py +7 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/macro.py +5 -2
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/method_types.py +1 -1
- pychemstation-0.10.9/pychemstation/utils/mocking/mock_comm.py +28 -0
- pychemstation-0.10.9/pychemstation/utils/mocking/mock_hplc.py +30 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/sequence_types.py +0 -2
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/table_types.py +2 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pyproject.toml +1 -1
- pychemstation-0.10.9/tests/comm/out.txt +309 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/comm/test_dirs.py +7 -10
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/comm/test_hplc_comm.py +1 -1
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/constants.py +5 -3
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/edit/test_edit_method.py +71 -8
- pychemstation-0.10.9/tests/edit/test_edit_sequence.py +373 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/ACQRES.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/CSlbk.ini +5 -0
- pychemstation-0.10.9/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.9/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.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DA.M/rpthead.txt +63 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1.UV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1A.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1A.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1B.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1B.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1C.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1C.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1D.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1D.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1E.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DAD1E.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/DiagResults.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Limsinf.xml +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/PMP1.AnalyticalResults.drvml +15 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT01.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT02.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT03.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT04.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/REPORT05.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/RUN.LOG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report.TXT +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report00.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/Report01.xls +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/SAMPLE.XML +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/SAMPLE.XML.bak +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/WLS1.Sampler.scml +22 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq.macaml +921 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq_MethHist.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/acq_damethod.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/da.macaml +1113 -0
- pychemstation-0.10.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/lcdiag.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method1.D/sequence.acam_ +4404 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/ACQRES.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/CSlbk.ini +5 -0
- pychemstation-0.10.9/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.9/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.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DA.M/rpthead.txt +63 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1.UV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1A.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1A.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1B.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1B.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1C.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1C.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1D.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1D.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1E.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DAD1E.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/DiagResults.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Limsinf.xml +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/PMP1.AnalyticalResults.drvml +15 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT01.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT02.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT03.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT04.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/REPORT05.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/RUN.LOG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report.TXT +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report00.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/Report01.xls +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/SAMPLE.XML +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/SAMPLE.XML.bak +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/WLS1.Sampler.scml +22 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq.macaml +921 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq_MethHist.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/acq_damethod.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/da.macaml +1113 -0
- pychemstation-0.10.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/lcdiag.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method2.D/sequence.acam_ +4404 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/ACQRES.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/CSlbk.ini +5 -0
- pychemstation-0.10.9/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.9/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.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DA.M/rpthead.txt +63 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1.UV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1A.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1A.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1B.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1B.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1C.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1C.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1D.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1D.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1E.ch +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DAD1E.npz +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/DiagResults.REG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Limsinf.xml +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/PMP1.AnalyticalResults.drvml +15 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT01.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT02.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT03.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT04.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/REPORT05.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/RUN.LOG +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report.TXT +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report00.CSV +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/Report01.xls +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/SAMPLE.XML +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/SAMPLE.XML.bak +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/WLS1.Sampler.scml +22 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq.macaml +921 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq_MethHist.txt +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/acq_damethod.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/da.macaml +1113 -0
- pychemstation-0.10.9/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.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/lcdiag.reg +0 -0
- pychemstation-0.10.9/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method3.D/sequence.acam_ +4404 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/test_offline.py +27 -3
- pychemstation-0.10.9/tests/load/test_load_dad.py +0 -0
- pychemstation-0.10.8.dev2/tests/load/test_injector.py → pychemstation-0.10.9/tests/load/test_load_injector.py +1 -1
- pychemstation-0.10.9/tests/load/test_load_sample_info.py +0 -0
- pychemstation-0.10.8.dev2/tests/load/test_load_method.py → pychemstation-0.10.9/tests/load/test_switch_method.py +5 -5
- pychemstation-0.10.8.dev2/tests/load/test_load_sequence.py → pychemstation-0.10.9/tests/load/test_switch_sequence.py +1 -1
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/run/test_run_method.py +17 -6
- pychemstation-0.10.9/tests/run/test_run_sequence.py +79 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/test_integration.py +112 -115
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/uv.lock +16 -45
- pychemstation-0.10.8.dev2/pychemstation/utils/mocking/mock_comm.py +0 -5
- pychemstation-0.10.8.dev2/pychemstation/utils/mocking/mock_hplc.py +0 -2
- pychemstation-0.10.8.dev2/tests/cmd +0 -1
- pychemstation-0.10.8.dev2/tests/comm/out.txt +0 -86
- pychemstation-0.10.8.dev2/tests/edit/out.txt +0 -5068
- pychemstation-0.10.8.dev2/tests/edit/test_edit_sequence.py +0 -198
- pychemstation-0.10.8.dev2/tests/load/out.txt +0 -198
- pychemstation-0.10.8.dev2/tests/out.txt +0 -32872
- pychemstation-0.10.8.dev2/tests/run/out.txt +0 -324
- pychemstation-0.10.8.dev2/tests/run/test_run_sequence.py +0 -227
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/.gitignore +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/.gitlab-ci.yml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/.pre-commit-config.yaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/CHANGELOG.md +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/CONTRIBUTING.md +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/LICENSE +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/branch-rename.sh +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/index.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/analysis/base_spectrum.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/analysis/spec_utils.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/analysis/utils.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/analysis.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/control/chromatogram.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/control/hplc.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/control.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/generated.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/utils/chemstation.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/utils/constants.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/utils/hplc_param_types.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation/utils.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/pychemstation.html +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/doc/search.js +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/out.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/analysis/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/analysis/base_spectrum.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/analysis/chromatogram.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/README.md +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/README.md +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/comm.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/data_aq/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/devices/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/control/controllers/devices/injector.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/generated/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/generated/dad_method.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/generated/pump_method.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/abc_tables/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/abc_tables/device.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/injector_types.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/mocking/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/num_utils.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/parsing.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/spec_utils.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation/utils/tray_types.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation.egg-info/PKG-INFO +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation.egg-info/SOURCES.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation.egg-info/dependency_links.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation.egg-info/requires.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/pychemstation.egg-info/top_level.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/__init__.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/dtypes/test_abc.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/acq.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/da.macaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/0_2025-03-15 19-14-35.D/single.B +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/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.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/files/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/tests/hplc_talk.mac +0 -0
- /pychemstation-0.10.8.dev2/tests/reply → /pychemstation-0.10.9/tests/load/test_load_bottles.py +0 -0
- {pychemstation-0.10.8.dev2 → pychemstation-0.10.9}/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.9
|
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
|
@@ -30,8 +30,7 @@ Description-Content-Type: text/markdown
|
|
30
30
|
[](https://pypi.org/project/pychemstation/)
|
31
31
|
|
32
32
|
> **_NOTE:_** If you are running Python **3.8**, use versions 0.**8**.x. If you are running Python **3.9** use versions 0.**9**.x.
|
33
|
-
> If you are running Python **>=3.10**, use version 0.**10**.x.
|
34
|
-
> is not guaranteed!
|
33
|
+
> If you are running Python **>=3.10**, use version 0.**10**.x. Older versions of pychemstation are not the most feature-rich and bug-free. Please consider upgrading to using Python 3.10!
|
35
34
|
|
36
35
|
Unofficial Python package to control Agilent Chemstation; we are not affiliated with Agilent.
|
37
36
|
Check out the [docs](https://pychemstation-e5a086.gitlab.io/pychemstation.html) for usage instructions. This project is under
|
@@ -73,21 +72,17 @@ HPLCTalk_Run
|
|
73
72
|
## Example Usage
|
74
73
|
|
75
74
|
```python
|
75
|
+
import time
|
76
76
|
from pychemstation.control import HPLCController
|
77
77
|
from pychemstation.utils.method_types import *
|
78
78
|
import pandas as pd
|
79
79
|
|
80
|
-
DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
|
81
|
-
SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
|
82
80
|
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
83
|
-
|
84
|
-
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
81
|
+
CUSTOM_DATA_DIR = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data\\MyData"
|
85
82
|
|
86
83
|
# Initialize HPLC Controller
|
87
|
-
hplc_controller = HPLCController(extra_data_dirs=[
|
88
|
-
comm_dir=DEFAULT_COMMAND_PATH
|
89
|
-
method_dir=DEFAULT_METHOD_DIR,
|
90
|
-
sequence_dir=SEQUENCE_DIR)
|
84
|
+
hplc_controller = HPLCController(extra_data_dirs=[CUSTOM_DATA_DIR],
|
85
|
+
comm_dir=DEFAULT_COMMAND_PATH)
|
91
86
|
|
92
87
|
# Switching a method
|
93
88
|
hplc_controller.switch_method("General-Poroshell")
|
@@ -116,7 +111,17 @@ new_method = MethodDetails(
|
|
116
111
|
hplc_controller.edit_method(new_method)
|
117
112
|
|
118
113
|
# Run a method and get a report or data from last run method
|
119
|
-
hplc_controller.run_method(experiment_name="test_experiment")
|
114
|
+
hplc_controller.run_method(experiment_name="test_experiment", stall_while_running=False)
|
115
|
+
time_left, done = hplc_controller.check_method_complete()
|
116
|
+
while not done:
|
117
|
+
print(time_left)
|
118
|
+
time.sleep(time_left/2)
|
119
|
+
time_left, done = hplc_controller.check_method_complete()
|
120
|
+
|
121
|
+
# Save the path the HPLC data for later!
|
122
|
+
file_path = hplc_controller.get_last_run_method_file_path()
|
123
|
+
|
124
|
+
# Make sure CSV reports are being generated in the post-run MACRO!
|
120
125
|
report = hplc_controller.get_last_run_method_report()
|
121
126
|
vial_location = report.vial_location
|
122
127
|
|
@@ -5,8 +5,7 @@
|
|
5
5
|
[](https://pypi.org/project/pychemstation/)
|
6
6
|
|
7
7
|
> **_NOTE:_** If you are running Python **3.8**, use versions 0.**8**.x. If you are running Python **3.9** use versions 0.**9**.x.
|
8
|
-
> If you are running Python **>=3.10**, use version 0.**10**.x.
|
9
|
-
> is not guaranteed!
|
8
|
+
> If you are running Python **>=3.10**, use version 0.**10**.x. Older versions of pychemstation are not the most feature-rich and bug-free. Please consider upgrading to using Python 3.10!
|
10
9
|
|
11
10
|
Unofficial Python package to control Agilent Chemstation; we are not affiliated with Agilent.
|
12
11
|
Check out the [docs](https://pychemstation-e5a086.gitlab.io/pychemstation.html) for usage instructions. This project is under
|
@@ -48,21 +47,17 @@ HPLCTalk_Run
|
|
48
47
|
## Example Usage
|
49
48
|
|
50
49
|
```python
|
50
|
+
import time
|
51
51
|
from pychemstation.control import HPLCController
|
52
52
|
from pychemstation.utils.method_types import *
|
53
53
|
import pandas as pd
|
54
54
|
|
55
|
-
DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
|
56
|
-
SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
|
57
55
|
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
58
|
-
|
59
|
-
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
56
|
+
CUSTOM_DATA_DIR = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data\\MyData"
|
60
57
|
|
61
58
|
# Initialize HPLC Controller
|
62
|
-
hplc_controller = HPLCController(extra_data_dirs=[
|
63
|
-
comm_dir=DEFAULT_COMMAND_PATH
|
64
|
-
method_dir=DEFAULT_METHOD_DIR,
|
65
|
-
sequence_dir=SEQUENCE_DIR)
|
59
|
+
hplc_controller = HPLCController(extra_data_dirs=[CUSTOM_DATA_DIR],
|
60
|
+
comm_dir=DEFAULT_COMMAND_PATH)
|
66
61
|
|
67
62
|
# Switching a method
|
68
63
|
hplc_controller.switch_method("General-Poroshell")
|
@@ -91,7 +86,17 @@ new_method = MethodDetails(
|
|
91
86
|
hplc_controller.edit_method(new_method)
|
92
87
|
|
93
88
|
# Run a method and get a report or data from last run method
|
94
|
-
hplc_controller.run_method(experiment_name="test_experiment")
|
89
|
+
hplc_controller.run_method(experiment_name="test_experiment", stall_while_running=False)
|
90
|
+
time_left, done = hplc_controller.check_method_complete()
|
91
|
+
while not done:
|
92
|
+
print(time_left)
|
93
|
+
time.sleep(time_left/2)
|
94
|
+
time_left, done = hplc_controller.check_method_complete()
|
95
|
+
|
96
|
+
# Save the path the HPLC data for later!
|
97
|
+
file_path = hplc_controller.get_last_run_method_file_path()
|
98
|
+
|
99
|
+
# Make sure CSV reports are being generated in the post-run MACRO!
|
95
100
|
report = hplc_controller.get_last_run_method_report()
|
96
101
|
vial_location = report.vial_location
|
97
102
|
|
@@ -83,7 +83,9 @@ class CSVProcessor(ReportProcessor):
|
|
83
83
|
if "00" in name and file_extension.lower() == "csv":
|
84
84
|
prefix, _, _ = name.partition("00")
|
85
85
|
return prefix
|
86
|
-
raise FileNotFoundError(
|
86
|
+
raise FileNotFoundError(
|
87
|
+
"Couldn't find the prefix for CSV, please make sure the post-run settings generate a CSV."
|
88
|
+
)
|
87
89
|
|
88
90
|
def report_contains(self, labels: List[str], want: List[str]):
|
89
91
|
for label in labels:
|
@@ -3,17 +3,18 @@ from __future__ import annotations
|
|
3
3
|
import os
|
4
4
|
import time
|
5
5
|
import warnings
|
6
|
-
from typing import List, Optional, Union,
|
6
|
+
from typing import Dict, List, Optional, Union, Tuple
|
7
7
|
|
8
8
|
from result import Err, Ok, Result
|
9
9
|
|
10
|
-
from ....analysis.process_report import AgilentReport, ReportType
|
11
|
-
from ....control.controllers import CommunicationController
|
12
10
|
from pychemstation.analysis.chromatogram import (
|
13
11
|
TIME_FORMAT,
|
14
12
|
AgilentChannelChromatogramData,
|
15
13
|
AgilentHPLCChromatogram,
|
16
14
|
)
|
15
|
+
|
16
|
+
from ....analysis.process_report import AgilentReport, ReportType
|
17
|
+
from ....control.controllers import CommunicationController
|
17
18
|
from ....utils.abc_tables.run import RunController
|
18
19
|
from ....utils.macro import Command
|
19
20
|
from ....utils.method_types import (
|
@@ -23,7 +24,7 @@ from ....utils.method_types import (
|
|
23
24
|
PType,
|
24
25
|
TimeTableEntry,
|
25
26
|
)
|
26
|
-
from ....utils.table_types import RegisterFlag, Table, TableOperation
|
27
|
+
from ....utils.table_types import RegisterFlag, T, Table, TableOperation
|
27
28
|
from ..devices.injector import InjectorController
|
28
29
|
|
29
30
|
|
@@ -50,9 +51,7 @@ class MethodController(RunController):
|
|
50
51
|
)
|
51
52
|
|
52
53
|
def get_current_method_name(self) -> str:
|
53
|
-
|
54
|
-
self.send(Command.GET_METHOD_CMD)
|
55
|
-
time.sleep(2)
|
54
|
+
self.sleepy_send(Command.GET_METHOD_CMD)
|
56
55
|
res = self.receive()
|
57
56
|
if res.is_ok():
|
58
57
|
return res.ok_value.string_response
|
@@ -77,26 +76,22 @@ class MethodController(RunController):
|
|
77
76
|
raise ValueError("Communication controller is offline!")
|
78
77
|
|
79
78
|
def get_row(self, row: int) -> TimeTableEntry:
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
start_time=self.get_num(row, RegisterFlag.TIME),
|
97
|
-
organic_modifer=om,
|
98
|
-
flow=flow,
|
99
|
-
)
|
79
|
+
function = self.get_text(row, RegisterFlag.FUNCTION)
|
80
|
+
if function == RegisterFlag.FLOW.value:
|
81
|
+
return TimeTableEntry(
|
82
|
+
start_time=self.get_num(row, RegisterFlag.TIME),
|
83
|
+
organic_modifer=None,
|
84
|
+
flow=self.get_num(row, RegisterFlag.TIMETABLE_FLOW),
|
85
|
+
)
|
86
|
+
if function == RegisterFlag.SOLVENT_COMPOSITION.value:
|
87
|
+
return TimeTableEntry(
|
88
|
+
start_time=self.get_num(row, RegisterFlag.TIME),
|
89
|
+
organic_modifer=self.get_num(
|
90
|
+
row, RegisterFlag.TIMETABLE_SOLVENT_B_COMPOSITION
|
91
|
+
),
|
92
|
+
flow=None,
|
93
|
+
)
|
94
|
+
raise ValueError("Both flow and organic modifier are empty")
|
100
95
|
|
101
96
|
def get_timetable(self, rows: int):
|
102
97
|
uncoalesced_timetable_rows = [self.get_row(r + 1) for r in range(rows)]
|
@@ -195,7 +190,6 @@ class MethodController(RunController):
|
|
195
190
|
method_dir=method_dir, method_name=method_name
|
196
191
|
)
|
197
192
|
)
|
198
|
-
|
199
193
|
time.sleep(2)
|
200
194
|
self.send(Command.GET_METHOD_CMD)
|
201
195
|
time.sleep(2)
|
@@ -219,6 +213,7 @@ class MethodController(RunController):
|
|
219
213
|
new_stop_time=updated_method.stop_time,
|
220
214
|
new_post_time=updated_method.post_time,
|
221
215
|
)
|
216
|
+
self.validate_timetable(updated_method.timetable)
|
222
217
|
self.edit_method_timetable(updated_method.timetable)
|
223
218
|
|
224
219
|
if save:
|
@@ -229,6 +224,7 @@ class MethodController(RunController):
|
|
229
224
|
)
|
230
225
|
|
231
226
|
def edit_initial_om(self, new_om: Union[int, float]):
|
227
|
+
self._validate_organic_modifier(new_om)
|
232
228
|
initial_organic_modifier: Param = Param(
|
233
229
|
val=new_om,
|
234
230
|
chemstation_key=RegisterFlag.SOLVENT_B_COMPOSITION,
|
@@ -236,13 +232,31 @@ class MethodController(RunController):
|
|
236
232
|
)
|
237
233
|
self._update_param(initial_organic_modifier)
|
238
234
|
|
235
|
+
def _validate_organic_modifier(self, new_om):
|
236
|
+
if not (isinstance(new_om, int) or isinstance(new_om, float)):
|
237
|
+
raise ValueError("Organic modifier must be int or float")
|
238
|
+
if new_om < 0:
|
239
|
+
raise ValueError("Organic modifier must be positive")
|
240
|
+
if new_om > 100:
|
241
|
+
raise ValueError("Organic modifer must be less than 100.")
|
242
|
+
|
239
243
|
def edit_flow(self, new_flow: Union[int, float]):
|
244
|
+
self._validate_flow(new_flow)
|
240
245
|
flow: Param = Param(
|
241
246
|
val=new_flow, chemstation_key=RegisterFlag.FLOW, ptype=PType.NUM
|
242
247
|
)
|
243
248
|
self._update_param(flow)
|
244
249
|
|
250
|
+
def _validate_flow(self, new_flow):
|
251
|
+
if not (isinstance(new_flow, int) or isinstance(new_flow, float)):
|
252
|
+
raise ValueError("Flow must be int or float")
|
253
|
+
if new_flow < 0:
|
254
|
+
raise ValueError("Flow must be positive")
|
255
|
+
if new_flow >= 5.0:
|
256
|
+
raise ValueError("Flow must be less than 5.0")
|
257
|
+
|
245
258
|
def edit_stop_time(self, new_stop_time: Union[int, float]):
|
259
|
+
self.validate_stop_time(new_stop_time)
|
246
260
|
stop_time: Param = Param(
|
247
261
|
val=new_stop_time,
|
248
262
|
chemstation_key=RegisterFlag.MAX_TIME,
|
@@ -255,7 +269,14 @@ class MethodController(RunController):
|
|
255
269
|
)
|
256
270
|
self._update_param(stop_time)
|
257
271
|
|
272
|
+
def validate_stop_time(self, new_stop_time):
|
273
|
+
if not (isinstance(new_stop_time, int) or isinstance(new_stop_time, float)):
|
274
|
+
raise ValueError("Stop time must be int or float")
|
275
|
+
if new_stop_time < 0:
|
276
|
+
raise ValueError("Stop time must be positive")
|
277
|
+
|
258
278
|
def edit_post_time(self, new_post_time: Union[int, float]):
|
279
|
+
self.validate_post_time(new_post_time)
|
259
280
|
post_time: Param = Param(
|
260
281
|
val=new_post_time,
|
261
282
|
chemstation_key=RegisterFlag.POST_TIME,
|
@@ -266,6 +287,12 @@ class MethodController(RunController):
|
|
266
287
|
)
|
267
288
|
self._update_param(post_time)
|
268
289
|
|
290
|
+
def validate_post_time(self, new_post_time):
|
291
|
+
if not (isinstance(new_post_time, int) or isinstance(new_post_time, float)):
|
292
|
+
raise ValueError("Post time must be int or float")
|
293
|
+
if new_post_time < 0:
|
294
|
+
raise ValueError("Post time must be positive")
|
295
|
+
|
269
296
|
def update_method_params(
|
270
297
|
self,
|
271
298
|
new_flow: Union[int, float],
|
@@ -311,7 +338,7 @@ class MethodController(RunController):
|
|
311
338
|
)
|
312
339
|
if isinstance(method_param.chemstation_key, list):
|
313
340
|
for register_flag in method_param.chemstation_key:
|
314
|
-
self.
|
341
|
+
self.sleepy_send(
|
315
342
|
setting_command.value.format(
|
316
343
|
register=register,
|
317
344
|
register_flag=register_flag,
|
@@ -319,66 +346,158 @@ class MethodController(RunController):
|
|
319
346
|
)
|
320
347
|
)
|
321
348
|
else:
|
322
|
-
self.
|
349
|
+
self.sleepy_send(
|
323
350
|
setting_command.value.format(
|
324
351
|
register=register,
|
325
352
|
register_flag=method_param.chemstation_key,
|
326
353
|
val=method_param.val,
|
327
354
|
)
|
328
355
|
)
|
329
|
-
time.sleep(2)
|
330
356
|
self.download()
|
331
357
|
|
332
358
|
def download(self):
|
333
|
-
self.send("Sleep 1")
|
334
359
|
self.sleepy_send("DownloadRCMethod PMP1")
|
335
|
-
self.send("Sleep 1")
|
336
360
|
|
337
|
-
def _edit_row(
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
361
|
+
def _edit_row(
|
362
|
+
self,
|
363
|
+
row: TimeTableEntry,
|
364
|
+
first_row: bool,
|
365
|
+
time_added: bool,
|
366
|
+
flow_added: bool,
|
367
|
+
om_added: bool,
|
368
|
+
function_added: bool,
|
369
|
+
) -> Tuple[bool, bool, bool, bool]:
|
370
|
+
def add_time():
|
371
|
+
nonlocal time_added
|
372
|
+
nonlocal first_row
|
373
|
+
if not time_added:
|
345
374
|
self.add_new_col_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
375
|
+
time_added = True
|
376
|
+
elif not first_row:
|
377
|
+
self._edit_row_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
378
|
+
|
379
|
+
def add_flow():
|
380
|
+
nonlocal flow_added
|
381
|
+
nonlocal function_added
|
382
|
+
if not flow_added:
|
383
|
+
if not function_added:
|
384
|
+
self.add_new_col_text(
|
385
|
+
col_name=RegisterFlag.FUNCTION,
|
386
|
+
val=RegisterFlag.FLOW.value,
|
387
|
+
)
|
388
|
+
function_added = True
|
389
|
+
else:
|
390
|
+
self._edit_row_text(
|
391
|
+
col_name=RegisterFlag.FUNCTION,
|
392
|
+
val=RegisterFlag.FLOW.value,
|
393
|
+
)
|
346
394
|
self.add_new_col_num(
|
347
|
-
col_name=RegisterFlag.
|
348
|
-
val=row.
|
395
|
+
col_name=RegisterFlag.TIMETABLE_FLOW,
|
396
|
+
val=row.flow,
|
349
397
|
)
|
350
|
-
|
351
|
-
|
352
|
-
self.get_num_rows()
|
398
|
+
flow_added = True
|
399
|
+
else:
|
353
400
|
self._edit_row_text(
|
354
401
|
col_name=RegisterFlag.FUNCTION, val=RegisterFlag.FLOW.value
|
355
402
|
)
|
356
|
-
self.add_new_col_num(col_name=RegisterFlag.TIMETABLE_FLOW, val=row.flow)
|
357
403
|
self._edit_row_num(col_name=RegisterFlag.TIMETABLE_FLOW, val=row.flow)
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
404
|
+
|
405
|
+
def add_om():
|
406
|
+
nonlocal om_added
|
407
|
+
nonlocal function_added
|
408
|
+
if not om_added:
|
409
|
+
if not function_added:
|
410
|
+
self.add_new_col_text(
|
411
|
+
col_name=RegisterFlag.FUNCTION,
|
412
|
+
val=RegisterFlag.SOLVENT_COMPOSITION.value,
|
413
|
+
)
|
414
|
+
function_added = True
|
415
|
+
else:
|
416
|
+
self._edit_row_text(
|
417
|
+
col_name=RegisterFlag.FUNCTION,
|
418
|
+
val=RegisterFlag.SOLVENT_COMPOSITION.value,
|
419
|
+
)
|
420
|
+
self.add_new_col_num(
|
421
|
+
col_name=RegisterFlag.TIMETABLE_SOLVENT_B_COMPOSITION,
|
422
|
+
val=row.organic_modifer,
|
423
|
+
)
|
424
|
+
om_added = True
|
425
|
+
else:
|
363
426
|
self._edit_row_text(
|
364
427
|
col_name=RegisterFlag.FUNCTION,
|
365
428
|
val=RegisterFlag.SOLVENT_COMPOSITION.value,
|
366
429
|
)
|
367
|
-
self._edit_row_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
368
430
|
self._edit_row_num(
|
369
431
|
col_name=RegisterFlag.TIMETABLE_SOLVENT_B_COMPOSITION,
|
370
432
|
val=row.organic_modifer,
|
371
433
|
)
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
434
|
+
|
435
|
+
if row.organic_modifer:
|
436
|
+
self.add_row()
|
437
|
+
add_om()
|
438
|
+
add_time()
|
439
|
+
if row.flow:
|
440
|
+
self.add_row()
|
441
|
+
add_flow()
|
442
|
+
add_time()
|
443
|
+
self.download()
|
444
|
+
return time_added, flow_added, om_added, function_added
|
445
|
+
|
446
|
+
# if first_row:
|
447
|
+
# time_added = False
|
448
|
+
# flow_row_method: Callable = (
|
449
|
+
# self.add_new_col_text
|
450
|
+
# if row.flow and not row.organic_modifer
|
451
|
+
# else self._edit_row_text
|
452
|
+
# )
|
453
|
+
# if row.organic_modifer:
|
454
|
+
# self.add_row()
|
455
|
+
# self.add_new_col_text(
|
456
|
+
# col_name=RegisterFlag.FUNCTION,
|
457
|
+
# val=RegisterFlag.SOLVENT_COMPOSITION.value,
|
458
|
+
# )
|
459
|
+
# if not time_added:
|
460
|
+
# time_added = True
|
461
|
+
# self.add_new_col_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
462
|
+
# self.add_new_col_num(
|
463
|
+
# col_name=RegisterFlag.TIMETABLE_SOLVENT_B_COMPOSITION,
|
464
|
+
# val=row.organic_modifer,
|
465
|
+
# )
|
466
|
+
# if row.flow:
|
467
|
+
# self.add_row()
|
468
|
+
# self.get_num_rows()
|
469
|
+
# flow_row_method(
|
470
|
+
# col_name=RegisterFlag.FUNCTION, val=RegisterFlag.FLOW.value
|
471
|
+
# )
|
472
|
+
# if not time_added:
|
473
|
+
# time_added = True
|
474
|
+
# self.add_new_col_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
475
|
+
# self.add_new_col_num(col_name=RegisterFlag.TIMETABLE_FLOW, val=row.flow)
|
476
|
+
# self._edit_row_num(col_name=RegisterFlag.TIMETABLE_FLOW, val=row.flow)
|
477
|
+
# self.download()
|
478
|
+
# else:
|
479
|
+
# if row.organic_modifer:
|
480
|
+
# self.add_row()
|
481
|
+
# self.get_num_rows()
|
482
|
+
# self._edit_row_text(
|
483
|
+
# col_name=RegisterFlag.FUNCTION,
|
484
|
+
# val=RegisterFlag.SOLVENT_COMPOSITION.value,
|
485
|
+
# )
|
486
|
+
# self._edit_row_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
487
|
+
# self._edit_row_num(
|
488
|
+
# col_name=RegisterFlag.TIMETABLE_SOLVENT_B_COMPOSITION,
|
489
|
+
# val=row.organic_modifer,
|
490
|
+
# )
|
491
|
+
# self.download()
|
492
|
+
# if row.flow:
|
493
|
+
# self.add_row()
|
494
|
+
# self.get_num_rows()
|
495
|
+
# self._edit_row_text(
|
496
|
+
# col_name=RegisterFlag.FUNCTION, val=RegisterFlag.FLOW.value
|
497
|
+
# )
|
498
|
+
# self._edit_row_num(col_name=RegisterFlag.TIMETABLE_FLOW, val=row.flow)
|
499
|
+
# self._edit_row_num(col_name=RegisterFlag.TIME, val=row.start_time)
|
500
|
+
# self.download()
|
382
501
|
|
383
502
|
def edit_method_timetable(self, timetable_rows: List[TimeTableEntry]):
|
384
503
|
self.get_num_rows()
|
@@ -389,10 +508,23 @@ class MethodController(RunController):
|
|
389
508
|
res = self.get_num_rows()
|
390
509
|
|
391
510
|
self.new_table()
|
392
|
-
self.get_num_rows()
|
393
|
-
|
511
|
+
num_rows = self.get_num_rows()
|
512
|
+
if num_rows.ok_value.num_response != 0:
|
513
|
+
raise ValueError("Should be zero rows!")
|
514
|
+
|
515
|
+
time_added = False
|
516
|
+
flow_added = False
|
517
|
+
om_added = False
|
518
|
+
function_added = False
|
394
519
|
for i, row in enumerate(timetable_rows):
|
395
|
-
self._edit_row(
|
520
|
+
time_added, flow_added, om_added, function_added = self._edit_row(
|
521
|
+
row=row,
|
522
|
+
first_row=i == 0,
|
523
|
+
time_added=time_added,
|
524
|
+
flow_added=flow_added,
|
525
|
+
om_added=om_added,
|
526
|
+
function_added=function_added,
|
527
|
+
)
|
396
528
|
|
397
529
|
def stop(self):
|
398
530
|
"""
|
@@ -441,10 +573,10 @@ class MethodController(RunController):
|
|
441
573
|
else:
|
442
574
|
warnings.warn(run_completed.err_value)
|
443
575
|
else:
|
444
|
-
folder = self._fuzzy_match_most_recent_folder(self.data_files[-1]
|
576
|
+
folder = self._fuzzy_match_most_recent_folder(self.data_files[-1])
|
445
577
|
i = 0
|
446
578
|
while folder.is_err() and i < 10:
|
447
|
-
folder = self._fuzzy_match_most_recent_folder(self.data_files[-1]
|
579
|
+
folder = self._fuzzy_match_most_recent_folder(self.data_files[-1])
|
448
580
|
i += 1
|
449
581
|
if folder.is_ok():
|
450
582
|
self.data_files[-1] = folder.ok_value
|
@@ -453,11 +585,11 @@ class MethodController(RunController):
|
|
453
585
|
warnings.warn(warning)
|
454
586
|
|
455
587
|
def _fuzzy_match_most_recent_folder(
|
456
|
-
self, most_recent_folder: T
|
588
|
+
self, most_recent_folder: T
|
457
589
|
) -> Result[str, str]:
|
458
590
|
if isinstance(most_recent_folder, str) or isinstance(most_recent_folder, bytes):
|
459
591
|
if os.path.exists(most_recent_folder):
|
460
|
-
return Ok(most_recent_folder)
|
592
|
+
return Ok(str(most_recent_folder))
|
461
593
|
return Err("Folder not found!")
|
462
594
|
raise ValueError("Folder is not a str or byte type.")
|
463
595
|
|
@@ -490,3 +622,25 @@ class MethodController(RunController):
|
|
490
622
|
if len(possible_data.x) > 0:
|
491
623
|
signal.data = possible_data
|
492
624
|
return [metd_report]
|
625
|
+
|
626
|
+
def _validate_row(self, row: TimeTableEntry):
|
627
|
+
if not (row.flow or row.organic_modifer):
|
628
|
+
raise ValueError(
|
629
|
+
"Require one of flow or organic modifier for the method timetable entry!"
|
630
|
+
)
|
631
|
+
if row.flow:
|
632
|
+
self._validate_flow(row.flow)
|
633
|
+
if row.organic_modifer:
|
634
|
+
self._validate_organic_modifier(row.organic_modifer)
|
635
|
+
|
636
|
+
def validate_timetable(self, timetable: List[TimeTableEntry]):
|
637
|
+
start_time = 0.0
|
638
|
+
for i, row in enumerate(timetable):
|
639
|
+
if row.start_time > start_time:
|
640
|
+
start_time = row.start_time
|
641
|
+
elif row.start_time <= start_time:
|
642
|
+
raise ValueError(
|
643
|
+
f"""Every row's start time must be larger than the previous start time.
|
644
|
+
Row {i + 1} ({timetable[i].start_time}) has a smaller or equal starttime than row {i} ({start_time})"""
|
645
|
+
)
|
646
|
+
self._validate_row(row)
|