pychemstation 0.10.2__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.
Files changed (238) hide show
  1. {pychemstation-0.10.2 → pychemstation-0.10.3}/PKG-INFO +45 -20
  2. {pychemstation-0.10.2 → pychemstation-0.10.3}/README.md +43 -18
  3. pychemstation-0.10.3/pychemstation/analysis/__init__.py +9 -0
  4. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/analysis/process_report.py +11 -12
  5. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/README.md +21 -53
  6. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/injector.py +4 -5
  7. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/sequence.py +2 -2
  8. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/table.py +1 -1
  9. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/hplc.py +11 -13
  10. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/num_utils.py +2 -2
  11. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/tray_types.py +3 -2
  12. {pychemstation-0.10.2 → pychemstation-0.10.3}/pyproject.toml +2 -2
  13. pychemstation-0.10.2/pychemstation/analysis/__init__.py +0 -5
  14. {pychemstation-0.10.2 → pychemstation-0.10.3}/.gitignore +0 -0
  15. {pychemstation-0.10.2 → pychemstation-0.10.3}/.gitlab-ci.yml +0 -0
  16. {pychemstation-0.10.2 → pychemstation-0.10.3}/CHANGELOG.md +0 -0
  17. {pychemstation-0.10.2 → pychemstation-0.10.3}/CONTRIBUTING.md +0 -0
  18. {pychemstation-0.10.2 → pychemstation-0.10.3}/LICENSE +0 -0
  19. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/__init__.py +0 -0
  20. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/__init__.py +0 -0
  21. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/base_spectrum.py +0 -0
  22. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/process_report.py +0 -0
  23. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/spec_utils.py +0 -0
  24. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/analysis/utils.py +0 -0
  25. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/__init__.py +0 -0
  26. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/comm.py +0 -0
  27. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/__init__.py +0 -0
  28. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/comm.py +0 -0
  29. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/__init__.py +0 -0
  30. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/column.py +0 -0
  31. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/dad.py +0 -0
  32. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/device.py +0 -0
  33. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/injector.py +0 -0
  34. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/devices/pump.py +0 -0
  35. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/method.py +0 -0
  36. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/sequence.py +0 -0
  37. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/table_controller.py +0 -0
  38. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/__init__.py +0 -0
  39. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/method.py +0 -0
  40. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/ms.py +0 -0
  41. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/sequence.py +0 -0
  42. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/controllers/tables/table.py +0 -0
  43. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/hplc.py +0 -0
  44. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/__init__.py +0 -0
  45. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/method.py +0 -0
  46. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/sequence.py +0 -0
  47. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/control/table/table_controller.py +0 -0
  48. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/generated/__init__.py +0 -0
  49. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/generated/dad_method.py +0 -0
  50. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/generated/pump_method.py +0 -0
  51. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/__init__.py +0 -0
  52. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/chromatogram.py +0 -0
  53. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/injector_types.py +0 -0
  54. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/macro.py +0 -0
  55. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/method_types.py +0 -0
  56. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/num_utils.py +0 -0
  57. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/parsing.py +0 -0
  58. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/pump_types.py +0 -0
  59. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/sequence_types.py +0 -0
  60. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/spec_utils.py +0 -0
  61. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/table_types.py +0 -0
  62. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/pychemstation/utils/tray_types.py +0 -0
  63. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/__init__.py +0 -0
  64. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/constants.py +0 -0
  65. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_comb.py +0 -0
  66. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_comm.py +0 -0
  67. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_inj.py +0 -0
  68. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_method.py +0 -0
  69. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_nightly.py +0 -0
  70. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_offline_stable.py +0 -0
  71. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_online_stable.py +0 -0
  72. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_proc_rep.py +0 -0
  73. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_runs_stable.py +0 -0
  74. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_sequence.py +0 -0
  75. {pychemstation-0.10.2 → pychemstation-0.10.3}/build/lib/tests/test_stable.py +0 -0
  76. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/index.html +0 -0
  77. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/analysis/base_spectrum.html +0 -0
  78. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/analysis/spec_utils.html +0 -0
  79. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/analysis/utils.html +0 -0
  80. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/analysis.html +0 -0
  81. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/control/chromatogram.html +0 -0
  82. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/control/hplc.html +0 -0
  83. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/control.html +0 -0
  84. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/generated.html +0 -0
  85. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/utils/chemstation.html +0 -0
  86. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/utils/constants.html +0 -0
  87. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/utils/hplc_param_types.html +0 -0
  88. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation/utils.html +0 -0
  89. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/pychemstation.html +0 -0
  90. {pychemstation-0.10.2 → pychemstation-0.10.3}/doc/search.js +0 -0
  91. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/__init__.py +0 -0
  92. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/analysis/base_spectrum.py +0 -0
  93. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/__init__.py +0 -0
  94. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/README.md +0 -0
  95. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/__init__.py +0 -0
  96. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/comm.py +0 -0
  97. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/__init__.py +0 -0
  98. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/devices/device.py +0 -0
  99. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/__init__.py +0 -0
  100. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/method.py +0 -0
  101. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/control/controllers/tables/ms.py +0 -0
  102. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/generated/__init__.py +0 -0
  103. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/generated/dad_method.py +0 -0
  104. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/generated/pump_method.py +0 -0
  105. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/__init__.py +0 -0
  106. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/chromatogram.py +0 -0
  107. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/injector_types.py +0 -0
  108. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/macro.py +0 -0
  109. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/method_types.py +0 -0
  110. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/parsing.py +0 -0
  111. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/pump_types.py +0 -0
  112. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/sequence_types.py +0 -0
  113. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/spec_utils.py +0 -0
  114. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation/utils/table_types.py +0 -0
  115. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation.egg-info/PKG-INFO +0 -0
  116. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation.egg-info/SOURCES.txt +0 -0
  117. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation.egg-info/dependency_links.txt +0 -0
  118. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation.egg-info/requires.txt +0 -0
  119. {pychemstation-0.10.2 → pychemstation-0.10.3}/pychemstation.egg-info/top_level.txt +0 -0
  120. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
  121. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
  122. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
  123. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
  124. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
  125. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
  126. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
  127. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
  128. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
  129. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
  130. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
  131. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
  132. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
  133. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
  134. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
  135. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
  136. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
  137. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
  138. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
  139. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
  140. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
  141. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
  142. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
  143. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
  144. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
  145. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
  146. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
  147. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
  148. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
  149. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
  150. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
  151. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
  152. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
  153. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq.txt +0 -0
  154. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
  155. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
  156. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/da.macaml +0 -0
  157. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
  158. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
  159. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/0_2025-03-15 19-14-35.D/single.B +0 -0
  160. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/__init__.py +0 -0
  161. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/constants.py +0 -0
  162. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_talk.mac +0 -0
  163. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
  164. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
  165. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
  166. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
  167. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
  168. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
  169. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
  170. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
  171. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
  172. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
  173. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
  174. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
  175. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
  176. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
  177. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
  178. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
  179. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
  180. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
  181. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
  182. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
  183. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
  184. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
  185. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
  186. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
  187. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
  188. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
  189. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
  190. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
  191. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
  192. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
  193. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
  194. {pychemstation-0.10.2 → 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
  195. {pychemstation-0.10.2 → 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
  196. {pychemstation-0.10.2 → 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
  197. {pychemstation-0.10.2 → 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
  198. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
  199. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
  200. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
  201. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
  202. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
  203. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
  204. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
  205. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
  206. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
  207. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
  208. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
  209. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
  210. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
  211. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
  212. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
  213. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
  214. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
  215. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
  216. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
  217. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
  218. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
  219. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
  220. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
  221. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
  222. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
  223. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
  224. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
  225. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
  226. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
  227. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
  228. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
  229. {pychemstation-0.10.2 → 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
  230. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
  231. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
  232. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
  233. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/out.txt +0 -0
  234. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/test_offline_stable.py +0 -0
  235. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/test_online_stable.py +0 -0
  236. {pychemstation-0.10.2 → pychemstation-0.10.3}/tests/test_runs_stable.py +0 -0
  237. {pychemstation-0.10.2 → pychemstation-0.10.3}/update-lib.sh +0 -0
  238. {pychemstation-0.10.2 → 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.2
4
- Summary: Library to interact with Chemstation software, primarily used in Hein lagit branch -mb
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
- DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data\\"
89
- DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data\\"
90
- SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\2\\Sequence\\"
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
- sequence_dir=SEQUENCE_DIR,
95
- method_dir=DEFAULT_METHOD_DIR)
96
-
97
- hplc_controller.preprun()
98
- hplc_controller.switch_method(method_name=DEFAULT_METHOD)
99
- hplc_controller.run_method(experiment_name="Run 10")
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
- DATA_DIR_2 = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data\\"
59
- DATA_DIR_3 = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data\\"
60
- SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\2\\Sequence\\"
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
- sequence_dir=SEQUENCE_DIR,
65
- method_dir=DEFAULT_METHOD_DIR)
66
-
67
- hplc_controller.preprun()
68
- hplc_controller.switch_method(method_name=DEFAULT_METHOD)
69
- hplc_controller.run_method(experiment_name="Run 10")
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.
@@ -0,0 +1,9 @@
1
+ from .base_spectrum import AbstractSpectrum
2
+ from .process_report import CSVProcessor
3
+ from .process_report import TXTProcessor
4
+
5
+ __all__ = [
6
+ 'AbstractSpectrum',
7
+ 'CSVProcessor',
8
+ 'TXTProcessor'
9
+ ]
@@ -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
- peak_number: Optional[int]
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
- :returns: subset of complete report details, specifically the sample location, solvents in pumps,
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
- height_percent=None))
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
- hplc_controller = HPLCController(data_dir=DATA_DIR,
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
- ```python
18
+ # Switching a method
22
19
  hplc_controller.switch_method("General-Poroshell")
23
- ```
24
20
 
25
- ## Editing a method
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
- ```python
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
- ## Switching a sequence
63
-
64
- ```python
53
+ # switch the currently loaded sequence
65
54
  hplc_controller.switch_sequence(sequence_name="hplc_testing")
66
- ```
67
55
 
68
- ## Editing a Sequence Row
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=DEFAULT_SEQUENCE,
61
+ name="hplc_testing",
93
62
  rows=[
94
63
  SequenceEntry(
95
- vial_location=FiftyFourVialPlate(plate=Plate.TWO, letter=Letter.A, num=Num.SEVEN).value(),
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.value,
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=10,
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
- ## Running a sequence and get data from last run sequence
127
-
128
- ```python
129
- hplc_controller.run_sequence(seq_table)
130
- chroms = hplc_controller.get_last_run_sequence_data()
131
- channel_A_time = chroms[0].A.x
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
  ```
@@ -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) -> None | Remote | Draw | Wait | Inject:
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 | None:
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
-
@@ -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[str, AgilentHPLCChromatogram]]:
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[str, AgilentHPLCChromatogram]] = []
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)
@@ -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[str, AgilentHPLCChromatogram] = {}
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
- from .controllers.devices.injector import InjectorController
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
- :returns: most recent response from a macro that returned a response.
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
- :returns: current status of the HPLC machine; Status types can be found in `pychemstation.utils.macro`
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: the percent of the method run completed, and whether the run is complete.
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
- :returns: the percent of the sequence run completed, and whether the run is complete.
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
- :returns: report data for method
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
- :returns: list of reports for each row
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[str, AgilentHPLCChromatogram]] | \
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
- :returns: Nearest value in array and its index.
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
- :returns: New array with interpolated values according to provided indexes "ids".
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
- :returns: `FiftyFourVialPlate` object representing the vial location
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
- :returns: the proper vial location object
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.2"
8
- description = "Library to interact with Chemstation software, primarily used in Hein lagit branch -mb"
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"
@@ -1,5 +0,0 @@
1
- from .base_spectrum import AbstractSpectrum
2
-
3
- __all__ = [
4
- 'AbstractSpectrum',
5
- ]
File without changes