pychemstation 0.10.1__tar.gz → 0.10.3__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.1 → pychemstation-0.10.3}/PKG-INFO +45 -20
- {pychemstation-0.10.1 → pychemstation-0.10.3}/README.md +43 -18
- pychemstation-0.10.3/pychemstation/analysis/__init__.py +9 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/analysis/process_report.py +11 -12
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/README.md +21 -53
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/injector.py +4 -5
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/sequence.py +2 -2
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/table.py +1 -1
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/hplc.py +11 -13
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/num_utils.py +2 -2
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/tray_types.py +3 -2
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pyproject.toml +2 -2
- {pychemstation-0.10.1 → pychemstation-0.10.3}/update-lib.sh +1 -2
- pychemstation-0.10.1/pychemstation/analysis/__init__.py +0 -5
- pychemstation-0.10.1/setup.py +0 -24
- {pychemstation-0.10.1 → pychemstation-0.10.3}/.gitignore +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/.gitlab-ci.yml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/CHANGELOG.md +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/CONTRIBUTING.md +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/LICENSE +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/base_spectrum.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/process_report.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/spec_utils.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/utils.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/comm.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/comm.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/column.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/dad.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/device.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/injector.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/pump.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/sequence.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/table_controller.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/ms.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/sequence.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/table.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/hplc.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/sequence.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/table_controller.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/generated/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/generated/dad_method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/generated/pump_method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/chromatogram.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/injector_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/macro.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/method_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/num_utils.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/parsing.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/pump_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/sequence_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/spec_utils.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/table_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/utils/tray_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/constants.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_comb.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_comm.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_inj.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_nightly.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_offline_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_online_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_proc_rep.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_runs_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_sequence.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/tests/test_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/index.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/analysis/base_spectrum.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/analysis/spec_utils.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/analysis/utils.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/analysis.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/control/chromatogram.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/control/hplc.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/control.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/generated.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/utils/chemstation.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/utils/constants.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/utils/hplc_param_types.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation/utils.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/pychemstation.html +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/doc/search.js +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/analysis/base_spectrum.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/README.md +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/comm.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/device.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/ms.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/generated/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/generated/dad_method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/generated/pump_method.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/chromatogram.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/injector_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/macro.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/method_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/parsing.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/pump_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/sequence_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/spec_utils.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/utils/table_types.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation.egg-info/PKG-INFO +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation.egg-info/SOURCES.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation.egg-info/dependency_links.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation.egg-info/requires.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation.egg-info/top_level.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/da.macaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/single.B +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/__init__.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/constants.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_talk.mac +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/DAMETHOD.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/INFO.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/RECALIB.MTH +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/rpthead.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/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.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/out.txt +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/test_offline_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/test_online_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/tests/test_runs_stable.py +0 -0
- {pychemstation-0.10.1 → pychemstation-0.10.3}/uv.lock +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pychemstation
|
3
|
-
Version: 0.10.
|
4
|
-
Summary: Library to interact with Chemstation software, primarily used in Hein
|
3
|
+
Version: 0.10.3
|
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
|
7
7
|
Author-email: lucyhao <hao.lucyy@gmail.com>
|
@@ -79,29 +79,55 @@ HPLCTalk_Run
|
|
79
79
|
|
80
80
|
```python
|
81
81
|
from pychemstation.control import HPLCController
|
82
|
+
from pychemstation.utils.method_types import *
|
82
83
|
import pandas as pd
|
83
84
|
|
84
|
-
# these paths will be unique to your Chemstation setup
|
85
|
-
DEFAULT_METHOD = "GENERAL-POROSHELL"
|
86
|
-
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
87
85
|
DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
|
88
|
-
|
89
|
-
|
90
|
-
|
86
|
+
SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
|
87
|
+
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
88
|
+
DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
89
|
+
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
91
90
|
|
91
|
+
# Initialize HPLC Controller
|
92
92
|
hplc_controller = HPLCController(data_dirs=[DATA_DIR_2, DATA_DIR_3],
|
93
93
|
comm_dir=DEFAULT_COMMAND_PATH,
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
hplc_controller.switch_method(
|
99
|
-
|
94
|
+
method_dir=DEFAULT_METHOD_DIR,
|
95
|
+
sequence_dir=SEQUENCE_DIR)
|
96
|
+
|
97
|
+
# Switching a method
|
98
|
+
hplc_controller.switch_method("General-Poroshell")
|
99
|
+
|
100
|
+
# Editing a method
|
101
|
+
new_method = MethodDetails(
|
102
|
+
name="General-Poroshell",
|
103
|
+
params=HPLCMethodParams(
|
104
|
+
organic_modifier=7,
|
105
|
+
flow=0.44),
|
106
|
+
timetable=[
|
107
|
+
TimeTableEntry(
|
108
|
+
start_time=0.10,
|
109
|
+
organic_modifer=7,
|
110
|
+
flow=0.34
|
111
|
+
),
|
112
|
+
TimeTableEntry(
|
113
|
+
start_time=4,
|
114
|
+
organic_modifer=99,
|
115
|
+
flow=0.55
|
116
|
+
)
|
117
|
+
],
|
118
|
+
stop_time=5,
|
119
|
+
post_time=2
|
120
|
+
)
|
121
|
+
hplc_controller.edit_method(new_method)
|
122
|
+
|
123
|
+
# Run a method and get a report or data from last run method
|
124
|
+
hplc_controller.run_method(experiment_name="test_experiment")
|
125
|
+
report = hplc_controller.get_last_run_method_report()
|
126
|
+
vial_location = report.vial_location
|
127
|
+
|
128
|
+
# Save, analyze or plot the data!
|
100
129
|
chrom = hplc_controller.get_last_run_method_data()
|
101
|
-
|
102
|
-
# afterwards, save, analyze or plot the data!
|
103
|
-
values = {"x": chrom.A.x, "y": chrom.A.y}
|
104
|
-
chromatogram_data = pd.DataFrame.from_dict(values)
|
130
|
+
chromatogram_data = pd.DataFrame.from_dict({"x": chrom.A.x, "y": chrom.A.y})
|
105
131
|
chromatogram_data.to_csv("Run 10.csv", index=False)
|
106
132
|
```
|
107
133
|
|
@@ -122,7 +148,6 @@ Lucy Hao, Maria Politi
|
|
122
148
|
- Adapted from [**AnalyticalLabware**](https://github.com/croningp/analyticallabware), created by members in the Cronin
|
123
149
|
Group. Copyright © Cronin Group, used under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) license.
|
124
150
|
- Adapted from the [MACROS](https://github.com/Bourne-Group/HPLCMethodOptimisationGUI) used in [**Operator-free HPLC
|
125
|
-
automated method development guided by Bayesian optimization
|
126
|
-
**](https://pubs.rsc.org/en/content/articlelanding/2024/dd/d4dd00062e),
|
151
|
+
automated method development guided by Bayesian optimization**](https://pubs.rsc.org/en/content/articlelanding/2024/dd/d4dd00062e),
|
127
152
|
created by members in the Bourne Group. Copyright © Bourne Group, used under
|
128
153
|
the [MIT](https://opensource.org/license/mit) license.
|
@@ -49,29 +49,55 @@ HPLCTalk_Run
|
|
49
49
|
|
50
50
|
```python
|
51
51
|
from pychemstation.control import HPLCController
|
52
|
+
from pychemstation.utils.method_types import *
|
52
53
|
import pandas as pd
|
53
54
|
|
54
|
-
# these paths will be unique to your Chemstation setup
|
55
|
-
DEFAULT_METHOD = "GENERAL-POROSHELL"
|
56
|
-
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
57
55
|
DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
|
57
|
+
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
58
|
+
DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
59
|
+
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
61
60
|
|
61
|
+
# Initialize HPLC Controller
|
62
62
|
hplc_controller = HPLCController(data_dirs=[DATA_DIR_2, DATA_DIR_3],
|
63
63
|
comm_dir=DEFAULT_COMMAND_PATH,
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
hplc_controller.switch_method(
|
69
|
-
|
64
|
+
method_dir=DEFAULT_METHOD_DIR,
|
65
|
+
sequence_dir=SEQUENCE_DIR)
|
66
|
+
|
67
|
+
# Switching a method
|
68
|
+
hplc_controller.switch_method("General-Poroshell")
|
69
|
+
|
70
|
+
# Editing a method
|
71
|
+
new_method = MethodDetails(
|
72
|
+
name="General-Poroshell",
|
73
|
+
params=HPLCMethodParams(
|
74
|
+
organic_modifier=7,
|
75
|
+
flow=0.44),
|
76
|
+
timetable=[
|
77
|
+
TimeTableEntry(
|
78
|
+
start_time=0.10,
|
79
|
+
organic_modifer=7,
|
80
|
+
flow=0.34
|
81
|
+
),
|
82
|
+
TimeTableEntry(
|
83
|
+
start_time=4,
|
84
|
+
organic_modifer=99,
|
85
|
+
flow=0.55
|
86
|
+
)
|
87
|
+
],
|
88
|
+
stop_time=5,
|
89
|
+
post_time=2
|
90
|
+
)
|
91
|
+
hplc_controller.edit_method(new_method)
|
92
|
+
|
93
|
+
# Run a method and get a report or data from last run method
|
94
|
+
hplc_controller.run_method(experiment_name="test_experiment")
|
95
|
+
report = hplc_controller.get_last_run_method_report()
|
96
|
+
vial_location = report.vial_location
|
97
|
+
|
98
|
+
# Save, analyze or plot the data!
|
70
99
|
chrom = hplc_controller.get_last_run_method_data()
|
71
|
-
|
72
|
-
# afterwards, save, analyze or plot the data!
|
73
|
-
values = {"x": chrom.A.x, "y": chrom.A.y}
|
74
|
-
chromatogram_data = pd.DataFrame.from_dict(values)
|
100
|
+
chromatogram_data = pd.DataFrame.from_dict({"x": chrom.A.x, "y": chrom.A.y})
|
75
101
|
chromatogram_data.to_csv("Run 10.csv", index=False)
|
76
102
|
```
|
77
103
|
|
@@ -92,7 +118,6 @@ Lucy Hao, Maria Politi
|
|
92
118
|
- Adapted from [**AnalyticalLabware**](https://github.com/croningp/analyticallabware), created by members in the Cronin
|
93
119
|
Group. Copyright © Cronin Group, used under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) license.
|
94
120
|
- Adapted from the [MACROS](https://github.com/Bourne-Group/HPLCMethodOptimisationGUI) used in [**Operator-free HPLC
|
95
|
-
automated method development guided by Bayesian optimization
|
96
|
-
**](https://pubs.rsc.org/en/content/articlelanding/2024/dd/d4dd00062e),
|
121
|
+
automated method development guided by Bayesian optimization**](https://pubs.rsc.org/en/content/articlelanding/2024/dd/d4dd00062e),
|
97
122
|
created by members in the Bourne Group. Copyright © Bourne Group, used under
|
98
123
|
the [MIT](https://opensource.org/license/mit) license.
|
@@ -23,13 +23,13 @@ from pychemstation.utils.tray_types import FiftyFourVialPlate, Tray
|
|
23
23
|
|
24
24
|
@dataclass
|
25
25
|
class AgilentPeak:
|
26
|
+
peak_number: Optional[int]
|
26
27
|
retention_time: float
|
28
|
+
peak_type: Optional[str]
|
27
29
|
width: float
|
28
30
|
area: float
|
29
31
|
height: float
|
30
|
-
|
31
|
-
peak_type: Optional[str]
|
32
|
-
height_percent: Optional[float]
|
32
|
+
area_percent: Optional[float]
|
33
33
|
|
34
34
|
|
35
35
|
@dataclass
|
@@ -73,7 +73,7 @@ class CSVProcessor(ReportProcessor):
|
|
73
73
|
"""
|
74
74
|
Method to parse details from CSV report.
|
75
75
|
|
76
|
-
:
|
76
|
+
:return: subset of complete report details, specifically the sample location, solvents in pumps,
|
77
77
|
and list of peaks at each wavelength channel.
|
78
78
|
"""
|
79
79
|
labels = os.path.join(self.path, 'REPORT00.CSV')
|
@@ -95,11 +95,11 @@ class CSVProcessor(ReportProcessor):
|
|
95
95
|
encoding="utf-16", header=None)
|
96
96
|
peaks = df.apply(lambda row: AgilentPeak(*row), axis=1)
|
97
97
|
wavelength = df_labels[1][pos + s].partition(",4 Ref=off")[0][-3:]
|
98
|
-
signals[wavelength] = peaks
|
98
|
+
signals[wavelength] = list(peaks)
|
99
99
|
break
|
100
100
|
|
101
101
|
return Ok(AgilentReport(
|
102
|
-
signals=[Signals(wavelength=w, peaks=s, data=None) for w, s in signals.items()],
|
102
|
+
signals=[Signals(wavelength=int(w), peaks=s, data=None) for w, s in signals.items()],
|
103
103
|
vial_location=FiftyFourVialPlate.from_int(int(vial_location)),
|
104
104
|
solvents=solvents
|
105
105
|
))
|
@@ -155,13 +155,12 @@ class TXTProcessor(ReportProcessor):
|
|
155
155
|
def process_report(self) -> Result[AgilentReport, AnyStr]:
|
156
156
|
"""
|
157
157
|
Method to parse details from CSV report.
|
158
|
-
|
159
|
-
:returns: subset of complete report details, specifically the sample location, solvents in pumps,
|
160
|
-
and list of peaks at each wavelength channel.
|
161
|
-
|
162
158
|
If you want more functionality, use `aghplctools`.
|
163
159
|
`from aghplctools.ingestion.text import pull_hplc_area_from_txt`
|
164
160
|
`signals = pull_hplc_area_from_txt(file_path)`
|
161
|
+
|
162
|
+
:return: subset of complete report details, specifically the sample location, solvents in pumps,
|
163
|
+
and list of peaks at each wavelength channel.
|
165
164
|
"""
|
166
165
|
|
167
166
|
with open(os.path.join(self.path, "REPORT.TXT"), 'r', encoding='utf-16') as openfile:
|
@@ -176,7 +175,7 @@ class TXTProcessor(ReportProcessor):
|
|
176
175
|
|
177
176
|
parsed_signals = []
|
178
177
|
for wavelength, wavelength_dict in signals.items():
|
179
|
-
current_wavelength_signals = Signals(wavelength=wavelength, peaks=[], data=None)
|
178
|
+
current_wavelength_signals = Signals(wavelength=int(wavelength), peaks=[], data=None)
|
180
179
|
for ret_time, ret_time_dict in wavelength_dict.items():
|
181
180
|
if self.min_ret_time <= ret_time <= self.max_ret_time:
|
182
181
|
current_wavelength_signals.peaks.append(AgilentPeak(retention_time=ret_time,
|
@@ -185,7 +184,7 @@ class TXTProcessor(ReportProcessor):
|
|
185
184
|
height=ret_time_dict['Height'],
|
186
185
|
peak_number=None,
|
187
186
|
peak_type=ret_time_dict['Type'],
|
188
|
-
|
187
|
+
area_percent=None))
|
189
188
|
parsed_signals.append(current_wavelength_signals)
|
190
189
|
|
191
190
|
return Ok(AgilentReport(vial_location=None,
|
@@ -1,30 +1,24 @@
|
|
1
1
|
# Examples of usecases
|
2
2
|
|
3
|
-
## Initialization
|
4
|
-
|
5
3
|
```python
|
6
4
|
from pychemstation.control import HPLCController
|
7
5
|
|
8
6
|
DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
|
9
|
-
DATA_DIR = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
10
7
|
SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
|
11
8
|
DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
|
9
|
+
DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
|
10
|
+
DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
|
12
11
|
|
13
|
-
|
12
|
+
# Initialize HPLC Controller
|
13
|
+
hplc_controller = HPLCController(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)
|
17
|
-
```
|
18
|
-
|
19
|
-
## Switching a method
|
20
17
|
|
21
|
-
|
18
|
+
# Switching a method
|
22
19
|
hplc_controller.switch_method("General-Poroshell")
|
23
|
-
```
|
24
20
|
|
25
|
-
|
26
|
-
|
27
|
-
```python
|
21
|
+
# Editing a method
|
28
22
|
from pychemstation.utils.method_types import *
|
29
23
|
|
30
24
|
new_method = MethodDetails(
|
@@ -47,52 +41,27 @@ new_method = MethodDetails(
|
|
47
41
|
stop_time=5,
|
48
42
|
post_time=2
|
49
43
|
)
|
50
|
-
|
51
44
|
hplc_controller.edit_method(new_method)
|
52
|
-
```
|
53
|
-
|
54
|
-
## Running a method and get data from last run method
|
55
45
|
|
56
|
-
|
46
|
+
# Run a method and get a report or data from last run method
|
57
47
|
hplc_controller.run_method(experiment_name="test_experiment")
|
58
48
|
chrom = hplc_controller.get_last_run_method_data()
|
59
49
|
channel_a_time = chrom.A.x
|
60
|
-
|
50
|
+
report = hplc_controller.get_last_run_method_report()
|
51
|
+
vial_location = report.vial_location
|
61
52
|
|
62
|
-
|
63
|
-
|
64
|
-
```python
|
53
|
+
# switch the currently loaded sequence
|
65
54
|
hplc_controller.switch_sequence(sequence_name="hplc_testing")
|
66
|
-
```
|
67
55
|
|
68
|
-
|
69
|
-
|
70
|
-
```python
|
71
|
-
from pychemstation.utils.sequence_types import *
|
72
|
-
from pychemstation.utils.tray_types import *
|
73
|
-
|
74
|
-
hplc_controller.edit_sequence_row(SequenceEntry(
|
75
|
-
vial_location=FiftyFourVialPlate(plate=Plate.TWO, letter=Letter.A, num=Num.SEVEN).value(),
|
76
|
-
method="General-Poroshell",
|
77
|
-
num_inj=3,
|
78
|
-
inj_vol=4,
|
79
|
-
sample_name="Blank",
|
80
|
-
sample_type=SampleType.BLANK,
|
81
|
-
inj_source=InjectionSource.HIP_ALS
|
82
|
-
), 1)
|
83
|
-
```
|
84
|
-
|
85
|
-
## Editing entire Sequence Table
|
86
|
-
|
87
|
-
```python
|
56
|
+
# edit the sequence table
|
88
57
|
from pychemstation.utils.tray_types import *
|
89
58
|
from pychemstation.utils.sequence_types import *
|
90
59
|
|
91
60
|
seq_table = SequenceTable(
|
92
|
-
name=
|
61
|
+
name="hplc_testing",
|
93
62
|
rows=[
|
94
63
|
SequenceEntry(
|
95
|
-
vial_location=FiftyFourVialPlate
|
64
|
+
vial_location=FiftyFourVialPlate.from_str("P1-A1"),
|
96
65
|
method="General-Poroshell",
|
97
66
|
num_inj=3,
|
98
67
|
inj_vol=4,
|
@@ -101,7 +70,7 @@ seq_table = SequenceTable(
|
|
101
70
|
inj_source=InjectionSource.MANUAL
|
102
71
|
),
|
103
72
|
SequenceEntry(
|
104
|
-
vial_location=TenVialColumn.ONE
|
73
|
+
vial_location=TenVialColumn.ONE,
|
105
74
|
method="General-Poroshell",
|
106
75
|
num_inj=1,
|
107
76
|
inj_vol=1,
|
@@ -110,7 +79,7 @@ seq_table = SequenceTable(
|
|
110
79
|
inj_source=InjectionSource.AS_METHOD
|
111
80
|
),
|
112
81
|
SequenceEntry(
|
113
|
-
vial_location=
|
82
|
+
vial_location=FiftyFourVialPlate.from_str("P2-B4"),
|
114
83
|
method="General-Poroshell",
|
115
84
|
num_inj=3,
|
116
85
|
inj_vol=4,
|
@@ -121,12 +90,11 @@ seq_table = SequenceTable(
|
|
121
90
|
]
|
122
91
|
)
|
123
92
|
hplc_controller.edit_sequence(seq_table)
|
124
|
-
```
|
125
93
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
94
|
+
# Run a sequence and get data or report from last run sequence
|
95
|
+
hplc_controller.run_sequence()
|
96
|
+
chroms = hplc_controller.get_last_run_sequence_data(read_uv=True)
|
97
|
+
row_1_channel_A_abs = chroms[0][210].y
|
98
|
+
report = hplc_controller.get_last_run_sequence_reports()
|
99
|
+
vial_location_row_1 = report[0].vial_location
|
132
100
|
```
|
{pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/injector.py
RENAMED
@@ -1,10 +1,9 @@
|
|
1
|
-
from __future__ import annotations
|
2
1
|
|
3
|
-
from .device import DeviceController
|
4
2
|
from ....control.controllers import CommunicationController
|
5
3
|
from ....utils.injector_types import (
|
6
4
|
Draw,
|
7
5
|
Inject,
|
6
|
+
InjectorFunction,
|
8
7
|
InjectorTable,
|
9
8
|
Mode,
|
10
9
|
Remote,
|
@@ -14,6 +13,7 @@ from ....utils.injector_types import (
|
|
14
13
|
)
|
15
14
|
from ....utils.table_types import RegisterFlag, Table
|
16
15
|
from ....utils.tray_types import Tray
|
16
|
+
from .device import DeviceController
|
17
17
|
|
18
18
|
|
19
19
|
class InjectorController(DeviceController):
|
@@ -21,7 +21,7 @@ class InjectorController(DeviceController):
|
|
21
21
|
def __init__(self, controller: CommunicationController, table: Table, offline: bool):
|
22
22
|
super().__init__(controller, table, offline)
|
23
23
|
|
24
|
-
def get_row(self, row: int) ->
|
24
|
+
def get_row(self, row: int) -> InjectorFunction:
|
25
25
|
def return_tray_loc() -> Tray:
|
26
26
|
pass
|
27
27
|
|
@@ -43,9 +43,8 @@ class InjectorController(DeviceController):
|
|
43
43
|
return Remote(command=RemoteCommand(self.get_text(row, RegisterFlag.REMOTE)),
|
44
44
|
duration=self.get_num(row, RegisterFlag.REMOTE_DUR))
|
45
45
|
|
46
|
-
def load(self) -> InjectorTable
|
46
|
+
def load(self) -> InjectorTable:
|
47
47
|
rows = self.get_num_rows()
|
48
48
|
if rows.is_ok():
|
49
49
|
return InjectorTable(functions=[self.get_row(i) for i in range(int(rows.ok_value.num_response))])
|
50
50
|
|
51
|
-
|
{pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/sequence.py
RENAMED
@@ -249,11 +249,11 @@ class SequenceController(TableController):
|
|
249
249
|
except Exception:
|
250
250
|
return Err("Failed to get sequence folder")
|
251
251
|
|
252
|
-
def get_data_uv(self,custom_path: Optional[str] = None) -> List[Dict[
|
252
|
+
def get_data_uv(self,custom_path: Optional[str] = None) -> List[Dict[int, AgilentHPLCChromatogram]]:
|
253
253
|
custom_path = SequenceDataFiles(dir=custom_path, child_dirs=[], sequence_name="") if custom_path else self.data_files[-1]
|
254
254
|
if len(custom_path.child_dirs) == 0:
|
255
255
|
self.data_files[-1] = self.fuzzy_match_most_recent_folder(custom_path).ok_value
|
256
|
-
all_w_spectra: List[Dict[
|
256
|
+
all_w_spectra: List[Dict[int, AgilentHPLCChromatogram]] = []
|
257
257
|
for row in self.data_files[-1].child_dirs:
|
258
258
|
self.get_uv_spectrum(row)
|
259
259
|
all_w_spectra.append(self.uv)
|
{pychemstation-0.10.1 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/table.py
RENAMED
@@ -71,7 +71,7 @@ class TableController(abc.ABC):
|
|
71
71
|
"H": AgilentHPLCChromatogram(),
|
72
72
|
}
|
73
73
|
self.report: Optional[AgilentReport] = None
|
74
|
-
self.uv: Dict[
|
74
|
+
self.uv: Dict[int, AgilentHPLCChromatogram] = {}
|
75
75
|
self.data_files: List = []
|
76
76
|
|
77
77
|
def receive(self) -> Result[Response, str]:
|
@@ -10,7 +10,7 @@ from typing import Dict, List, Optional, Tuple, Union
|
|
10
10
|
from pychemstation.utils.chromatogram import (
|
11
11
|
AgilentHPLCChromatogram,
|
12
12
|
)
|
13
|
-
|
13
|
+
|
14
14
|
from ..analysis.process_report import AgilentReport, ReportType
|
15
15
|
from ..control.controllers import (
|
16
16
|
CommunicationController,
|
@@ -18,11 +18,11 @@ from ..control.controllers import (
|
|
18
18
|
SequenceController,
|
19
19
|
)
|
20
20
|
from ..utils.chromatogram import AgilentChannelChromatogramData
|
21
|
-
from ..utils.injector_types import InjectorTable
|
22
21
|
from ..utils.macro import Command, Response, Status
|
23
22
|
from ..utils.method_types import MethodDetails
|
24
23
|
from ..utils.sequence_types import SequenceTable
|
25
24
|
from ..utils.table_types import Table
|
25
|
+
from .controllers.devices.injector import InjectorController
|
26
26
|
|
27
27
|
|
28
28
|
class HPLCController:
|
@@ -96,7 +96,7 @@ class HPLCController:
|
|
96
96
|
"""
|
97
97
|
Get the most recent response from Chemstation.
|
98
98
|
|
99
|
-
:
|
99
|
+
:return: most recent response from a macro that returned a response.
|
100
100
|
"""
|
101
101
|
if not self.comm:
|
102
102
|
raise RuntimeError(
|
@@ -107,7 +107,7 @@ class HPLCController:
|
|
107
107
|
"""
|
108
108
|
Get the current status of the HPLC machine.
|
109
109
|
|
110
|
-
:
|
110
|
+
:return: current status of the HPLC machine; Status types can be found in `pychemstation.utils.macro`
|
111
111
|
"""
|
112
112
|
if not self.comm:
|
113
113
|
raise RuntimeError(
|
@@ -168,7 +168,7 @@ class HPLCController:
|
|
168
168
|
"""
|
169
169
|
Check if the currently running method (if any) is done.
|
170
170
|
|
171
|
-
:returns
|
171
|
+
:returns the percent of the method run completed, and whether the run is complete.
|
172
172
|
"""
|
173
173
|
return self.method_controller.check_hplc_run_finished()
|
174
174
|
|
@@ -176,7 +176,7 @@ class HPLCController:
|
|
176
176
|
"""
|
177
177
|
Check if the currently running sequence (if any) is done.
|
178
178
|
|
179
|
-
:
|
179
|
+
:return: the percent of the sequence run completed, and whether the run is complete.
|
180
180
|
"""
|
181
181
|
return self.sequence_controller.check_hplc_run_finished()
|
182
182
|
|
@@ -202,9 +202,10 @@ class HPLCController:
|
|
202
202
|
report_type: ReportType = ReportType.CSV) -> AgilentReport:
|
203
203
|
"""
|
204
204
|
Return data contained in the REPORT files. Use `aghplctools` if you want more report processing utility.
|
205
|
+
|
205
206
|
:param custom_path: path to sequence folder
|
206
207
|
:param report_type: read either the TXT or CSV version
|
207
|
-
:
|
208
|
+
:return: report data for method
|
208
209
|
"""
|
209
210
|
return self.method_controller.get_report(custom_path=custom_path, report_type=report_type)[0]
|
210
211
|
|
@@ -226,14 +227,15 @@ class HPLCController:
|
|
226
227
|
report_type: ReportType = ReportType.CSV) -> List[AgilentReport]:
|
227
228
|
"""
|
228
229
|
Return data contained in the REPORT files. Use `aghplctools` if you want more report processing utility.
|
230
|
+
|
229
231
|
:param custom_path: path to sequence folder
|
230
232
|
:param report_type: read either the TXT or CSV version
|
231
|
-
:
|
233
|
+
:return: list of reports for each row
|
232
234
|
"""
|
233
235
|
return self.sequence_controller.get_report(custom_path=custom_path, report_type=report_type)
|
234
236
|
|
235
237
|
def get_last_run_sequence_data(self, read_uv: bool = False,
|
236
|
-
custom_path: Optional[str] = None) -> List[Dict[
|
238
|
+
custom_path: Optional[str] = None) -> List[Dict[int, AgilentHPLCChromatogram]] | \
|
237
239
|
List[AgilentChannelChromatogramData]:
|
238
240
|
"""
|
239
241
|
Returns data for all rows in the last run sequence data.
|
@@ -254,10 +256,6 @@ class HPLCController:
|
|
254
256
|
"""Returns the name of the currently loaded method."""
|
255
257
|
return self.method_controller.check()
|
256
258
|
|
257
|
-
def load_injector_program(self) -> InjectorTable:
|
258
|
-
"""Returns all details of the injector program for the currently loaded method."""
|
259
|
-
return self.method_controller.injector_controller.load()
|
260
|
-
|
261
259
|
def load_method(self) -> MethodDetails:
|
262
260
|
"""Returns details of the currently loaded method, such as its starting modifier conditions and timetable."""
|
263
261
|
return self.method_controller.load()
|
@@ -11,7 +11,7 @@ def find_nearest_value_index(array, value) -> Tuple[float, int]:
|
|
11
11
|
:param value: Target value.
|
12
12
|
:type value: float
|
13
13
|
|
14
|
-
:
|
14
|
+
:return: Nearest value in array and its index.
|
15
15
|
"""
|
16
16
|
|
17
17
|
index_ = np.argmin(np.abs(array - value))
|
@@ -34,7 +34,7 @@ def interpolate_to_index(array, ids, precision: int = 100) -> np.array:
|
|
34
34
|
:type ids: np.array[float]
|
35
35
|
:param precision: Desired presion.
|
36
36
|
|
37
|
-
:
|
37
|
+
:return: New array with interpolated values according to provided indexes "ids".
|
38
38
|
|
39
39
|
Example:
|
40
40
|
>>> interpolate_to_index(np.array([1.5]), np.array([1,2,3], 100))
|
@@ -94,8 +94,9 @@ class FiftyFourVialPlate:
|
|
94
94
|
def from_str(cls, loc: str):
|
95
95
|
"""
|
96
96
|
Converts a string representing the vial location into numerical representation for Chemstation.
|
97
|
+
|
97
98
|
:param loc: vial location
|
98
|
-
:
|
99
|
+
:return: `FiftyFourVialPlate` object representing the vial location
|
99
100
|
:raises: ValueError if string is invalid tray location
|
100
101
|
"""
|
101
102
|
if len(loc) != 5:
|
@@ -116,7 +117,7 @@ class FiftyFourVialPlate:
|
|
116
117
|
Converts an integer representation of a vial location to a `FiftyFourVialPlate` or `TenVialColumn` object
|
117
118
|
|
118
119
|
:param num: numerical representation of a vial location
|
119
|
-
:
|
120
|
+
:return: the proper vial location object
|
120
121
|
:raises: ValueError no matching can be made
|
121
122
|
"""
|
122
123
|
if num in range(1, 11):
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "pychemstation"
|
7
|
-
version = "0.10.
|
8
|
-
description = "Library to interact with Chemstation software, primarily used in Hein
|
7
|
+
version = "0.10.3"
|
8
|
+
description = "Library to interact with Chemstation software, primarily used in Hein lab"
|
9
9
|
authors = [{ name = "lucyhao", email = "hao.lucyy@gmail.com" }]
|
10
10
|
requires-python = ">=3.10"
|
11
11
|
readme = "README.md"
|
pychemstation-0.10.1/setup.py
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
import setuptools
|
2
|
-
|
3
|
-
with open("README.md", "r") as fh:
|
4
|
-
long_description = fh.read()
|
5
|
-
|
6
|
-
setuptools.setup(
|
7
|
-
name="pychemstation",
|
8
|
-
version="0.10.0",
|
9
|
-
author="Lucy Hao",
|
10
|
-
author_email="lhao03@student.ubc.ca",
|
11
|
-
description="Library to interact with Chemstation software, primarily used in Hein lab",
|
12
|
-
long_description=long_description,
|
13
|
-
long_description_content_type="text/markdown",
|
14
|
-
url="https://gitlab.com/heingroup/device-api/pychemstation",
|
15
|
-
packages=setuptools.find_packages(),
|
16
|
-
install_requires=[
|
17
|
-
'polling',
|
18
|
-
'seabreeze',
|
19
|
-
'xsdata',
|
20
|
-
'result',
|
21
|
-
'rainbow-api',
|
22
|
-
'aghplctools'
|
23
|
-
],
|
24
|
-
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pychemstation-0.10.1 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/base_spectrum.py
RENAMED
File without changes
|