pychemstation 0.10.7__tar.gz → 0.10.8.dev1__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 (251) hide show
  1. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/.gitlab-ci.yml +3 -1
  2. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/PKG-INFO +1 -7
  3. pychemstation-0.10.8.dev1/branch-rename.sh +23 -0
  4. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/analysis/base_spectrum.py +14 -15
  5. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/analysis/chromatogram.py +7 -8
  6. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/analysis/process_report.py +7 -15
  7. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/README.md +1 -1
  8. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/__init__.py +2 -1
  9. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/comm.py +33 -27
  10. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/data_aq/method.py +13 -13
  11. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/data_aq/sequence.py +12 -24
  12. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/devices/injector.py +3 -3
  13. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/hplc.py +24 -39
  14. pychemstation-0.10.8.dev1/pychemstation/utils/__init__.py +23 -0
  15. {pychemstation-0.10.7/pychemstation/control/controllers → pychemstation-0.10.8.dev1/pychemstation/utils}/abc_tables/abc_comm.py +8 -9
  16. {pychemstation-0.10.7/pychemstation/control/controllers → pychemstation-0.10.8.dev1/pychemstation/utils}/abc_tables/device.py +9 -2
  17. {pychemstation-0.10.7/pychemstation/control/controllers → pychemstation-0.10.8.dev1/pychemstation/utils}/abc_tables/run.py +35 -28
  18. {pychemstation-0.10.7/pychemstation/control/controllers → pychemstation-0.10.8.dev1/pychemstation/utils}/abc_tables/table.py +14 -16
  19. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/macro.py +2 -0
  20. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/method_types.py +12 -13
  21. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/num_utils.py +3 -3
  22. pychemstation-0.10.8.dev1/pychemstation/utils/sequence_types.py +91 -0
  23. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/spec_utils.py +42 -66
  24. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/table_types.py +13 -2
  25. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/tray_types.py +28 -16
  26. pychemstation-0.10.8.dev1/pyproject.toml +121 -0
  27. pychemstation-0.10.8.dev1/tests/comm/out.txt +86 -0
  28. pychemstation-0.10.7/tests/test_comm.py → pychemstation-0.10.8.dev1/tests/comm/test_dirs.py +3 -1
  29. pychemstation-0.10.7/tests/test_online.py → pychemstation-0.10.8.dev1/tests/comm/test_hplc_comm.py +1 -1
  30. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/constants.py +10 -19
  31. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/dtypes}/test_abc.py +4 -3
  32. pychemstation-0.10.8.dev1/tests/edit/out.txt +5068 -0
  33. pychemstation-0.10.7/tests/test_method.py → pychemstation-0.10.8.dev1/tests/edit/test_edit_method.py +1 -77
  34. pychemstation-0.10.8.dev1/tests/edit/test_edit_sequence.py +198 -0
  35. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/test_offline.py +16 -12
  36. pychemstation-0.10.8.dev1/tests/load/out.txt +198 -0
  37. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/load}/test_injector.py +1 -1
  38. pychemstation-0.10.8.dev1/tests/load/test_load_method.py +71 -0
  39. pychemstation-0.10.8.dev1/tests/load/test_load_sequence.py +49 -0
  40. pychemstation-0.10.8.dev1/tests/run/out.txt +324 -0
  41. pychemstation-0.10.8.dev1/tests/run/test_run_method.py +69 -0
  42. pychemstation-0.10.7/tests/test_sequence.py → pychemstation-0.10.8.dev1/tests/run/test_run_sequence.py +13 -5
  43. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/test_integration.py +3 -0
  44. pychemstation-0.10.7/pychemstation/utils/pump_types.py +0 -7
  45. pychemstation-0.10.7/pychemstation/utils/sequence_types.py +0 -73
  46. pychemstation-0.10.7/pyproject.toml +0 -42
  47. pychemstation-0.10.7/tests/__init__.py +0 -0
  48. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/.gitignore +0 -0
  49. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/.pre-commit-config.yaml +0 -0
  50. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/CHANGELOG.md +0 -0
  51. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/CONTRIBUTING.md +0 -0
  52. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/LICENSE +0 -0
  53. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/README.md +0 -0
  54. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/index.html +0 -0
  55. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/analysis/base_spectrum.html +0 -0
  56. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/analysis/spec_utils.html +0 -0
  57. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/analysis/utils.html +0 -0
  58. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/analysis.html +0 -0
  59. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/control/chromatogram.html +0 -0
  60. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/control/hplc.html +0 -0
  61. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/control.html +0 -0
  62. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/generated.html +0 -0
  63. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/utils/chemstation.html +0 -0
  64. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/utils/constants.html +0 -0
  65. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/utils/hplc_param_types.html +0 -0
  66. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation/utils.html +0 -0
  67. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/pychemstation.html +0 -0
  68. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/doc/search.js +0 -0
  69. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/out.txt +0 -0
  70. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/__init__.py +0 -0
  71. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/analysis/__init__.py +0 -0
  72. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/__init__.py +0 -0
  73. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/README.md +0 -0
  74. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/data_aq/__init__.py +0 -0
  75. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/control/controllers/devices/__init__.py +0 -0
  76. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/generated/__init__.py +0 -0
  77. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/generated/dad_method.py +0 -0
  78. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/generated/pump_method.py +0 -0
  79. {pychemstation-0.10.7/pychemstation/control/controllers → pychemstation-0.10.8.dev1/pychemstation/utils}/abc_tables/__init__.py +0 -0
  80. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/injector_types.py +0 -0
  81. {pychemstation-0.10.7/pychemstation/utils → pychemstation-0.10.8.dev1/pychemstation/utils/mocking}/__init__.py +0 -0
  82. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/mocking/mock_comm.py +0 -0
  83. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/mocking/mock_hplc.py +0 -0
  84. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation/utils/parsing.py +0 -0
  85. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation.egg-info/PKG-INFO +0 -0
  86. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation.egg-info/SOURCES.txt +0 -0
  87. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation.egg-info/dependency_links.txt +0 -0
  88. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation.egg-info/requires.txt +0 -0
  89. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/pychemstation.egg-info/top_level.txt +0 -0
  90. {pychemstation-0.10.7/pychemstation/utils/mocking → pychemstation-0.10.8.dev1/tests}/__init__.py +0 -0
  91. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/cmd +0 -0
  92. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/0_2025-03-15 19-14-35.PDF +0 -0
  93. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/ACQRES.REG +0 -0
  94. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/CSlbk.ini +0 -0
  95. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DA.M/DAMETHOD.REG +0 -0
  96. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DA.M/INFO.MTH +0 -0
  97. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DA.M/RECALIB.MTH +0 -0
  98. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DA.M/rpthead.txt +0 -0
  99. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1.UV +0 -0
  100. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1A.ch +0 -0
  101. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1A.npz +0 -0
  102. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1B.ch +0 -0
  103. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1B.npz +0 -0
  104. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1C.ch +0 -0
  105. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1C.npz +0 -0
  106. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1D.ch +0 -0
  107. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1D.npz +0 -0
  108. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1E.ch +0 -0
  109. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DAD1E.npz +0 -0
  110. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/DiagResults.REG +0 -0
  111. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/PMP1.AnalyticalResults.drvml +0 -0
  112. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/REPORT01.CSV +0 -0
  113. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/REPORT02.CSV +0 -0
  114. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/REPORT03.CSV +0 -0
  115. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/REPORT04.CSV +0 -0
  116. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/REPORT05.CSV +0 -0
  117. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/RUN.LOG +0 -0
  118. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/Report.TXT +0 -0
  119. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/Report00.CSV +0 -0
  120. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/Report01.xls +0 -0
  121. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/SAMPLE.XML +0 -0
  122. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/SAMPLE.XML.bak +0 -0
  123. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/WLS1.Sampler.scml +0 -0
  124. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/acq.macaml +0 -0
  125. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/acq.txt +0 -0
  126. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/acq_MethHist.txt +0 -0
  127. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/acq_damethod.reg +0 -0
  128. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/da.macaml +0 -0
  129. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/lcdiag.reg +0 -0
  130. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/sample.acaml +0 -0
  131. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/0_2025-03-15 19-14-35.D/single.B +0 -0
  132. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/ACQRES.REG +0 -0
  133. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT01.CSV +0 -0
  134. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT02.CSV +0 -0
  135. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT03.CSV +0 -0
  136. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT04.CSV +0 -0
  137. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/AUTOMATICALLY_GENERATED_REPORT05.CSV +0 -0
  138. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Automatically_Generated_Report.TXT +0 -0
  139. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Automatically_Generated_Report00.CSV +0 -0
  140. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/CSlbk.ini +0 -0
  141. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/DAMETHOD.REG +0 -0
  142. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/INFO.MTH +0 -0
  143. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/RECALIB.MTH +0 -0
  144. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DA.M/rpthead.txt +0 -0
  145. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1.UV +0 -0
  146. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.ch +0 -0
  147. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1A.npz +0 -0
  148. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.ch +0 -0
  149. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1B.npz +0 -0
  150. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.ch +0 -0
  151. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1C.npz +0 -0
  152. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.ch +0 -0
  153. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1D.npz +0 -0
  154. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.ch +0 -0
  155. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1E.npz +0 -0
  156. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.ch +0 -0
  157. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1F.npz +0 -0
  158. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.ch +0 -0
  159. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1G.npz +0 -0
  160. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.ch +0 -0
  161. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DAD1H.npz +0 -0
  162. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/DiagResults.REG +0 -0
  163. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/Limsinf.xml +0 -0
  164. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/PMP1.AnalyticalResults.drvml +0 -0
  165. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/RUN.LOG +0 -0
  166. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML +0 -0
  167. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/SAMPLE.XML.bak +0 -0
  168. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/WLS1.Sampler.scml +0 -0
  169. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.macaml +0 -0
  170. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq.txt +0 -0
  171. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_MethHist.txt +0 -0
  172. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/acq_damethod.reg +0 -0
  173. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/da.macaml +0 -0
  174. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/lcdiag.reg +0 -0
  175. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/sample.acaml +0 -0
  176. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/10 IS 2025-02-10 23-41-33_10_2025-02-11 02-21-44.D/single.B +0 -0
  177. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/CSlbk.ini +0 -0
  178. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/ACQ.MS +0 -0
  179. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.ConfigXML.xml +0 -0
  180. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodMetaData.xml +0 -0
  181. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/Agilent1200erDadDriver1.RapidControl.MethodXML.xml +0 -0
  182. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.ConfigXML.xml +0 -0
  183. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodMetaData.xml +0 -0
  184. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentColumnCompDriver1.RapidControl.MethodXML.xml +0 -0
  185. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.ConfigXML.xml +0 -0
  186. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodMetaData.xml +0 -0
  187. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentPumpDriver1.RapidControl.MethodXML.xml +0 -0
  188. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.ConfigXML.xml +0 -0
  189. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodMetaData.xml +0 -0
  190. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.MethodXML.xml +0 -0
  191. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/AgilentSamplerDriver1.RapidControl.PretreatXML.xml +0 -0
  192. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/DAMETHOD.REG +0 -0
  193. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/FIA.REG +0 -0
  194. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INFO.MTH +0 -0
  195. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/INJECTOR.MTH +0 -0
  196. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/MassHunterIntegration.ini +0 -0
  197. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RECALIB.MTH +0 -0
  198. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/RapidControl.InstrumentConfig.xml +0 -0
  199. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/rpthead.txt +0 -0
  200. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/GENERAL-POROSHELL-OPT.M/smpl_pur.mth +0 -0
  201. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/Methods.Reg +0 -0
  202. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/hplc_testing.B +0 -0
  203. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/hplc_testing.LOG +0 -0
  204. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/hplc_testing.S +0 -0
  205. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/hplc_testing.Start +0 -0
  206. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/ACQRES.REG +0 -0
  207. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/CSlbk.ini +0 -0
  208. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/DAMETHOD.REG +0 -0
  209. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/INFO.MTH +0 -0
  210. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/RECALIB.MTH +0 -0
  211. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DA.M/rpthead.txt +0 -0
  212. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1.UV +0 -0
  213. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.ch +0 -0
  214. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1A.npz +0 -0
  215. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.ch +0 -0
  216. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1B.npz +0 -0
  217. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.ch +0 -0
  218. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1C.npz +0 -0
  219. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.ch +0 -0
  220. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1D.npz +0 -0
  221. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.ch +0 -0
  222. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DAD1E.npz +0 -0
  223. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/DiagResults.REG +0 -0
  224. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Limsinf.xml +0 -0
  225. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/PMP1.AnalyticalResults.drvml +0 -0
  226. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT01.CSV +0 -0
  227. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT02.CSV +0 -0
  228. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT03.CSV +0 -0
  229. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT04.CSV +0 -0
  230. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/REPORT05.CSV +0 -0
  231. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/RUN.LOG +0 -0
  232. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report.TXT +0 -0
  233. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report00.CSV +0 -0
  234. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/Report01.xls +0 -0
  235. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML +0 -0
  236. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/SAMPLE.XML.bak +0 -0
  237. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/WLS1.Sampler.scml +0 -0
  238. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.macaml +0 -0
  239. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq.txt +0 -0
  240. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_MethHist.txt +0 -0
  241. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/acq_damethod.reg +0 -0
  242. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/da.macaml +0 -0
  243. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/hplc_testing 2025-03-27 17-13-47_run seq with new method.PDF +0 -0
  244. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/lcdiag.reg +0 -0
  245. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/run seq with new method.D/sequence.acam_ +0 -0
  246. {pychemstation-0.10.7/tests → pychemstation-0.10.8.dev1/tests/files}/hplc_testing 2025-03-27 17-13-47/sequence.acaml +0 -0
  247. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/hplc_talk.mac +0 -0
  248. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/out.txt +0 -0
  249. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/tests/reply +0 -0
  250. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/update-lib.sh +0 -0
  251. {pychemstation-0.10.7 → pychemstation-0.10.8.dev1}/uv.lock +0 -0
@@ -13,4 +13,6 @@ pages:
13
13
  - mv doc/ ./public/
14
14
  artifacts:
15
15
  paths:
16
- - public
16
+ - public
17
+ rules:
18
+ - if: $CI_COMMIT_BRANCH == "v0.10.x"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pychemstation
3
- Version: 0.10.7
3
+ Version: 0.10.8.dev1
4
4
  Summary: Library to interact with Chemstation software, primarily used in Hein lab
5
5
  Project-URL: Documentation, https://pychemstation-e5a086.gitlab.io/pychemstation.html
6
6
  Project-URL: Repository, https://gitlab.com/heingroup/device-api/pychemstation
@@ -13,19 +13,13 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Python: >=3.10
15
15
  Requires-Dist: aghplctools==4.8.6
16
- Requires-Dist: coverage>=7.6.1
17
16
  Requires-Dist: matplotlib>=3.7.5
18
17
  Requires-Dist: pandas>=2.0.3
19
18
  Requires-Dist: pdoc>=14.7.0
20
19
  Requires-Dist: polling>=0.3.2
21
- Requires-Dist: pre-commit>=3.5.0
22
- Requires-Dist: pytest>=7.3.5
23
20
  Requires-Dist: rainbow-api>=1.0.10
24
21
  Requires-Dist: result>=0.17.0
25
22
  Requires-Dist: scipy>=1.10.1
26
- Requires-Dist: seabreeze>=2.9.2
27
- Requires-Dist: setuptools>=75.3.2
28
- Requires-Dist: twine>=6.1.0
29
23
  Requires-Dist: xsdata>=24.9
30
24
  Description-Content-Type: text/markdown
31
25
 
@@ -0,0 +1,23 @@
1
+ # Names of things - allows you to copy/paste commands
2
+ old_name=nightly
3
+ new_name=finn-python38-support
4
+ remote=origin
5
+
6
+ # Rename the local branch to the new name
7
+ git branch -m $old_name $new_name
8
+
9
+ # Delete the old branch on remote
10
+ git push $remote --delete $old_name
11
+
12
+ # Or shorter way to delete remote branch [:]
13
+ git push $remote :$old_name
14
+
15
+ # Prevent git from using the old name when pushing in the next step.
16
+ # Otherwise, git will use the old upstream name instead of $new_name.
17
+ git branch --unset-upstream $new_name
18
+
19
+ # Push the new branch to remote
20
+ git push $remote $new_name
21
+
22
+ # Reset the upstream branch for the new_name local branch
23
+ git push $remote -u $new_name
@@ -2,6 +2,7 @@ import logging
2
2
  import os
3
3
  import pickle
4
4
  from abc import ABC, abstractmethod
5
+ from typing import Optional, Union
5
6
 
6
7
  import matplotlib.pyplot as plt
7
8
  import numpy as np
@@ -43,16 +44,15 @@ class AbstractSpectrum(ABC):
43
44
  "baseline",
44
45
  }
45
46
 
46
- def __init__(self, path=None, autosaving=True):
47
+ def __init__(
48
+ self, path: Optional[Union[str, bool]] = None, autosaving: Optional[bool] = True
49
+ ):
47
50
  """Default constructor, loads properties into instance namespace.
48
51
 
49
52
  Can be redefined in ancestor classes.
50
53
 
51
- Args:
52
- path (Union[str, bool], optional): Valid path to save data to.
53
- If omitted, uses ".//spectrum". If False - no folder created.
54
- autosaving (bool, optional): If the True (default) will save the
55
- spectrum when the new one is loaded. Will drop otherwise.
54
+ :param path: Valid path to save data to. If omitted, uses ".//spectrum". If False - no folder created.
55
+ :param autosaving: If the True (default) will save the spectrum when the new one is loaded. Will drop otherwise.
56
56
  """
57
57
 
58
58
  self.autosaving = autosaving
@@ -70,10 +70,10 @@ class AbstractSpectrum(ABC):
70
70
  self.path = os.path.join(".", "spectrum")
71
71
  os.makedirs(self.path, exist_ok=True)
72
72
  else:
73
- try:
73
+ if isinstance(path, str):
74
74
  os.makedirs(path, exist_ok=True)
75
75
  self.path = path
76
- except TypeError: # type(path) -> bool
76
+ else:
77
77
  self.path = "."
78
78
 
79
79
  # creating logger
@@ -86,15 +86,14 @@ class AbstractSpectrum(ABC):
86
86
  self.__init__(path=self.path, autosaving=self.autosaving)
87
87
 
88
88
  @abstractmethod
89
- def load_spectrum(self, x, y, timestamp):
89
+ def load_spectrum(self, x: np.ndarray, y: np.ndarray, timestamp: float):
90
90
  """Loads the spectral data.
91
91
 
92
92
  This method must be redefined in ancestor classes.
93
93
 
94
- Args:
95
- x (:obj: np.array): An array with data to be plotted as "x" axis.
96
- y (:obj: np.array): An array with data to be plotted as "y" axis.
97
- timestamp (float): Timestamp to the corresponding spectrum.
94
+ :param x: An array with data to be plotted as "x" axis.
95
+ :param y: An array with data to be plotted as "y" axis.
96
+ :param timestamp: Timestamp to the corresponding spectrum.
98
97
  """
99
98
 
100
99
  try:
@@ -107,8 +106,8 @@ class AbstractSpectrum(ABC):
107
106
  self.save_data()
108
107
  self._dump()
109
108
 
110
- self.x = x
111
- self.y = y
109
+ self.x: np.ndarray = x
110
+ self.y: np.ndarray = y
112
111
  self.timestamp = timestamp
113
112
 
114
113
  def save_data(self, filename=None, verbose=False):
@@ -3,7 +3,7 @@
3
3
  import os
4
4
  import time
5
5
  from dataclasses import dataclass
6
- from typing import Dict
6
+ from typing import Dict, Tuple
7
7
 
8
8
  import numpy as np
9
9
 
@@ -80,15 +80,14 @@ class AgilentHPLCChromatogram(AbstractSpectrum):
80
80
 
81
81
  ### PUBLIC METHODS TO LOAD RAW DATA ###
82
82
 
83
- def extract_rawdata(self, experiment_dir: str, channel: str):
84
- """
85
- Reads raw data from Chemstation .CH files.
83
+ def extract_rawdata(
84
+ self, experiment_dir: str, channel: str
85
+ ) -> Tuple[np.ndarray, np.ndarray]:
86
+ """Reads raw data from Chemstation .CH files.
86
87
 
87
- Args:
88
- experiment_dir: .D directory with the .CH files
88
+ :param experiment_dir: .D directory with the .CH files
89
89
 
90
- Returns:
91
- np.array(times), np.array(values) Raw chromatogram data
90
+ :returns: np.array(times), np.array(values) Raw chromatogram data
92
91
  """
93
92
  filename = os.path.join(experiment_dir, f"DAD1{channel}")
94
93
  npz_file = filename + ".npz"
@@ -65,8 +65,7 @@ class ReportProcessor(abc.ABC):
65
65
 
66
66
  class CSVProcessor(ReportProcessor):
67
67
  def __init__(self, path: str):
68
- """
69
- Class to process reports in CSV form.
68
+ """Class to process reports in CSV form.
70
69
 
71
70
  :param path: the parent folder that contains the CSV report(s) to parse.
72
71
  """
@@ -104,8 +103,7 @@ class CSVProcessor(ReportProcessor):
104
103
  return all_labels_seen
105
104
 
106
105
  def process_report(self) -> Result[AgilentReport, AnyStr]:
107
- """
108
- Method to parse details from CSV report.
106
+ """Method to parse details from CSV report.
109
107
 
110
108
  :return: subset of complete report details, specifically the sample location, solvents in pumps,
111
109
  and list of peaks at each wavelength channel.
@@ -176,9 +174,7 @@ class CSVProcessor(ReportProcessor):
176
174
 
177
175
 
178
176
  class TXTProcessor(ReportProcessor):
179
- """
180
- Regex matches for column and unit combinations, courtesy of Veronica Lai.
181
- """
177
+ """Regex matches for column and unit combinations, courtesy of Veronica Lai."""
182
178
 
183
179
  _column_re_dictionary = {
184
180
  "Peak": { # peak index
@@ -212,8 +208,7 @@ class TXTProcessor(ReportProcessor):
212
208
  max_ret_time: int = 999,
213
209
  target_wavelength_range=None,
214
210
  ):
215
- """
216
- Class to process reports in CSV form.
211
+ """Class to process reports in CSV form.
217
212
 
218
213
  :param path: the parent folder that contains the CSV report(s) to parse.
219
214
  :param min_ret_time: peaks after this value (min) will be returned
@@ -228,8 +223,7 @@ class TXTProcessor(ReportProcessor):
228
223
  super().__init__(path)
229
224
 
230
225
  def process_report(self) -> Result[AgilentReport, Union[AnyStr, Exception]]:
231
- """
232
- Method to parse details from CSV report.
226
+ """Method to parse details from CSV report.
233
227
  If you want more functionality, use `aghplctools`.
234
228
  `from aghplctools.ingestion.text import pull_hplc_area_from_txt`
235
229
  `signals = pull_hplc_area_from_txt(file_path)`
@@ -281,8 +275,7 @@ class TXTProcessor(ReportProcessor):
281
275
  return Err(e)
282
276
 
283
277
  def parse_area_report(self, report_text: str) -> Dict:
284
- """
285
- Interprets report text and parses the area report section, converting it to dictionary.
278
+ """Interprets report text and parses the area report section, converting it to dictionary.
286
279
  Courtesy of Veronica Lai.
287
280
 
288
281
  :param report_text: plain text version of the report.
@@ -340,8 +333,7 @@ class TXTProcessor(ReportProcessor):
340
333
  return signals
341
334
 
342
335
  def build_peak_regex(self, signal_table: str) -> Pattern[str] | None:
343
- """
344
- Builds a peak regex from a signal table. Courtesy of Veronica Lai.
336
+ """Builds a peak regex from a signal table. Courtesy of Veronica Lai.
345
337
 
346
338
  :param signal_table: block of lines associated with an area table
347
339
  :return: peak line regex object (<=3.6 _sre.SRE_PATTERN, >=3.7 re.Pattern)
@@ -70,7 +70,7 @@ seq_table = SequenceTable(
70
70
  inj_source=InjectionSource.MANUAL
71
71
  ),
72
72
  SequenceEntry(
73
- vial_location=TenVialColumn.ONE,
73
+ vial_location=VialBar.ONE,
74
74
  method="General-Poroshell",
75
75
  num_inj=1,
76
76
  inj_vol=1,
@@ -4,5 +4,6 @@
4
4
 
5
5
  from .comm import CommunicationController
6
6
  from . import data_aq
7
+ from . import devices
7
8
 
8
- __all__ = ["CommunicationController", "data_aq"]
9
+ __all__ = ["CommunicationController", "data_aq", "devices"]
@@ -15,18 +15,23 @@ from typing import Optional, Union, Tuple, List
15
15
 
16
16
  from result import Err, Ok, Result
17
17
 
18
+ from ...utils.abc_tables.abc_comm import ABCCommunicationController
18
19
  from ...utils.macro import (
19
20
  Command,
20
21
  HPLCErrorStatus,
21
22
  Status,
22
23
  str_to_status,
23
24
  )
24
- from .abc_tables.abc_comm import ABCCommunicationController
25
25
 
26
26
 
27
27
  class CommunicationController(ABCCommunicationController):
28
- """
29
- Class that communicates with Agilent using Macros
28
+ """Class that communicates with Agilent using Macros
29
+
30
+ :param comm_dir: the complete directory path that was used in the MACRO file, common file that pychemstation and Chemstation use to communicate.
31
+ :param cmd_file: name of the write file that pychemstation writes MACROs to, in `comm_dir`
32
+ :param reply_file: name of the read file that Chemstation replies to, in `comm_dir
33
+ :param offline: whether or not communication with Chemstation is to be established
34
+ :param debug: if True, prints all send MACROs to an out.txt file
30
35
  """
31
36
 
32
37
  def __init__(
@@ -37,12 +42,6 @@ class CommunicationController(ABCCommunicationController):
37
42
  offline: bool = False,
38
43
  debug: bool = False,
39
44
  ):
40
- """
41
- :param comm_dir:
42
- :param cmd_file: Name of command file
43
- :param reply_file: Name of reply file
44
- :param debug: whether to save log of sent commands
45
- """
46
45
  super().__init__(comm_dir, cmd_file, reply_file, offline, debug)
47
46
 
48
47
  def get_num_val(self, cmd: str) -> Union[int, float]:
@@ -151,21 +150,28 @@ class CommunicationController(ABCCommunicationController):
151
150
 
152
151
  def get_chemstation_dirs(self) -> Tuple[str, str, List[str]]:
153
152
  method_dir, sequence_dir, data_dirs = None, None, None
154
- self.send(Command.GET_METHOD_DIR)
155
- res = self.receive()
156
- if res.is_ok():
157
- method_dir = res.ok_value.string_response
158
- self.send(Command.GET_SEQUENCE_DIR)
159
- res = self.receive()
160
- if res.is_ok():
161
- sequence_dir = res.ok_value.string_response
162
- self.send(Command.GET_DATA_DIRS)
163
- res = self.receive()
164
- if res.is_ok():
165
- data_dirs = res.ok().string_response.split("|")
166
- if method_dir and sequence_dir and data_dirs:
167
- return method_dir, sequence_dir, data_dirs
168
- else:
169
- raise ValueError(
170
- "Please provide the method, sequence and data directories, could not be found."
171
- )
153
+ for _ in range(10):
154
+ self.send(Command.GET_METHOD_DIR)
155
+ res = self.receive()
156
+ if res.is_ok():
157
+ method_dir = res.ok_value.string_response
158
+ self.send(Command.GET_SEQUENCE_DIR)
159
+ res = self.receive()
160
+ if res.is_ok():
161
+ sequence_dir = res.ok_value.string_response
162
+ self.send(Command.GET_DATA_DIRS)
163
+ res = self.receive()
164
+ if res.is_ok():
165
+ data_dirs = res.ok().string_response.split("|")
166
+ if method_dir and sequence_dir and data_dirs:
167
+ if not sequence_dir[0].isalpha():
168
+ sequence_dir = "C:" + sequence_dir
169
+ if not method_dir[0].isalpha():
170
+ method_dir = "C:" + method_dir
171
+ for i, data_dir in enumerate(data_dirs):
172
+ if not data_dir[0].isalpha():
173
+ data_dirs[i] = "C:" + data_dir
174
+ return method_dir, sequence_dir, data_dirs
175
+ raise ValueError(
176
+ f"One of the method: {method_dir}, sequence: {sequence_dir} or data directories: {data_dirs} could not be found, please provide your own."
177
+ )
@@ -7,7 +7,6 @@ from typing import List, Optional, Union, Dict, Set
7
7
 
8
8
  from result import Err, Ok, Result
9
9
 
10
- from ..abc_tables.run import RunController
11
10
  from ....analysis.process_report import AgilentReport, ReportType
12
11
  from ....control.controllers import CommunicationController
13
12
  from pychemstation.analysis.chromatogram import (
@@ -15,6 +14,7 @@ from pychemstation.analysis.chromatogram import (
15
14
  AgilentChannelChromatogramData,
16
15
  AgilentHPLCChromatogram,
17
16
  )
17
+ from ....utils.abc_tables.run import RunController
18
18
  from ....utils.macro import Command
19
19
  from ....utils.method_types import (
20
20
  HPLCMethodParams,
@@ -28,15 +28,13 @@ from ..devices.injector import InjectorController
28
28
 
29
29
 
30
30
  class MethodController(RunController):
31
- """
32
- Class containing method related logic
33
- """
31
+ """Class containing method related logic."""
34
32
 
35
33
  def __init__(
36
34
  self,
37
- controller: CommunicationController,
38
- src: str,
39
- data_dirs: List[str],
35
+ controller: Optional[CommunicationController],
36
+ src: Optional[str],
37
+ data_dirs: Optional[List[str]],
40
38
  table: Table,
41
39
  offline: bool,
42
40
  injector_controller: InjectorController,
@@ -51,7 +49,7 @@ class MethodController(RunController):
51
49
  offline=offline,
52
50
  )
53
51
 
54
- def check(self) -> str:
52
+ def get_current_method_name(self) -> str:
55
53
  time.sleep(2)
56
54
  self.send(Command.GET_METHOD_CMD)
57
55
  time.sleep(2)
@@ -441,18 +439,20 @@ class MethodController(RunController):
441
439
  if run_completed.is_ok():
442
440
  self.data_files[-1] = run_completed.ok_value
443
441
  else:
444
- raise RuntimeError(f"Run error has occurred:{run_completed.err_value}.")
442
+ warnings.warn(run_completed.err_value)
445
443
  else:
446
- folder = self.fuzzy_match_most_recent_folder(self.data_files[-1], None)
447
- while folder.is_err():
448
- folder = self.fuzzy_match_most_recent_folder(self.data_files[-1], None)
444
+ folder = self._fuzzy_match_most_recent_folder(self.data_files[-1], None)
445
+ i = 0
446
+ while folder.is_err() and i < 10:
447
+ folder = self._fuzzy_match_most_recent_folder(self.data_files[-1], None)
448
+ i += 1
449
449
  if folder.is_ok():
450
450
  self.data_files[-1] = folder.ok_value
451
451
  else:
452
452
  warning = f"Data folder {self.data_files[-1]} may not exist, returning and will check again after run is done."
453
453
  warnings.warn(warning)
454
454
 
455
- def fuzzy_match_most_recent_folder(
455
+ def _fuzzy_match_most_recent_folder(
456
456
  self, most_recent_folder: T, child_dirs: Optional[Set[str]]
457
457
  ) -> Result[str, str]:
458
458
  if isinstance(most_recent_folder, str) or isinstance(most_recent_folder, bytes):
@@ -13,6 +13,7 @@ from pychemstation.analysis.chromatogram import (
13
13
 
14
14
  from ....analysis.process_report import AgilentReport, ReportType
15
15
  from ....control.controllers.comm import CommunicationController
16
+ from ....utils.abc_tables.run import RunController
16
17
  from ....utils.macro import Command
17
18
  from ....utils.sequence_types import (
18
19
  InjectionSource,
@@ -22,8 +23,7 @@ from ....utils.sequence_types import (
22
23
  SequenceTable,
23
24
  )
24
25
  from ....utils.table_types import RegisterFlag, T, Table
25
- from ....utils.tray_types import FiftyFourVialPlate, TenVialColumn, Tray
26
- from ..abc_tables.run import RunController
26
+ from ....utils.tray_types import FiftyFourVialPlate, VialBar, Tray
27
27
  from . import MethodController
28
28
 
29
29
 
@@ -36,8 +36,8 @@ class SequenceController(RunController):
36
36
  self,
37
37
  controller: Optional[CommunicationController],
38
38
  method_controller: MethodController,
39
- src: str,
40
- data_dirs: List[str],
39
+ src: Optional[str],
40
+ data_dirs: Optional[List[str]],
41
41
  table: Table,
42
42
  offline: bool,
43
43
  ):
@@ -80,11 +80,7 @@ class SequenceController(RunController):
80
80
 
81
81
  def try_vial_location(self, val: Any) -> Tray:
82
82
  try:
83
- return (
84
- TenVialColumn(val)
85
- if val <= 10
86
- else FiftyFourVialPlate.from_int(num=val)
87
- )
83
+ return VialBar(val) if val <= 10 else FiftyFourVialPlate.from_int(num=val)
88
84
  except ValueError:
89
85
  raise ValueError("Expected vial location, is empty.")
90
86
 
@@ -109,15 +105,6 @@ class SequenceController(RunController):
109
105
  data_file=data_file,
110
106
  )
111
107
 
112
- def check(self) -> str:
113
- time.sleep(2)
114
- self.send(Command.GET_SEQUENCE_CMD)
115
- time.sleep(2)
116
- res = self.receive()
117
- if res.is_ok():
118
- return res.ok_value.string_response
119
- return "ERROR"
120
-
121
108
  def switch(self, seq_name: str):
122
109
  """
123
110
  Switch to the specified sequence. The sequence name does not need the '.S' extension.
@@ -249,7 +236,7 @@ class SequenceController(RunController):
249
236
 
250
237
  def edit_vial_location(self, loc: Tray, row_num: int, save: bool = True):
251
238
  loc_num = -1
252
- if isinstance(loc, TenVialColumn):
239
+ if isinstance(loc, VialBar):
253
240
  loc_num = loc.value
254
241
  elif isinstance(loc, FiftyFourVialPlate):
255
242
  loc_num = loc.value()
@@ -322,6 +309,7 @@ class SequenceController(RunController):
322
309
  sequence_name=self.table_state.name,
323
310
  dir=full_path_name,
324
311
  _data_files=[r.data_file for r in self.table_state.rows],
312
+ child_dirs=[os.path.join(full_path_name, current_sample_file)],
325
313
  )
326
314
  self.data_files.append(data_file)
327
315
  else:
@@ -332,12 +320,12 @@ class SequenceController(RunController):
332
320
  if run_completed.is_ok():
333
321
  self.data_files[-1] = run_completed.ok_value
334
322
  else:
335
- warnings.warn("Run may have not completed.")
323
+ warnings.warn(run_completed.err_value)
336
324
  else:
337
325
  raise RuntimeError("Sequence run may not have started.")
338
326
 
339
327
  @override
340
- def fuzzy_match_most_recent_folder(
328
+ def _fuzzy_match_most_recent_folder(
341
329
  self, most_recent_folder: T, child_dirs: Optional[Set[str]]
342
330
  ) -> Result[SequenceDataFiles, str]:
343
331
  if isinstance(most_recent_folder, SequenceDataFiles):
@@ -383,7 +371,7 @@ class SequenceController(RunController):
383
371
  else self.data_files[-1]
384
372
  )
385
373
  if len(seq_data_dir.child_dirs) == 0:
386
- search_folder = self.fuzzy_match_most_recent_folder(
374
+ search_folder = self._fuzzy_match_most_recent_folder(
387
375
  seq_data_dir, set(seq_data_dir.child_dirs)
388
376
  )
389
377
  if search_folder.is_ok():
@@ -414,7 +402,7 @@ class SequenceController(RunController):
414
402
  else self.data_files[-1]
415
403
  )
416
404
  if len(seq_file_dir.child_dirs) == 0:
417
- self.data_files[-1] = self.fuzzy_match_most_recent_folder(
405
+ self.data_files[-1] = self._fuzzy_match_most_recent_folder(
418
406
  seq_file_dir, set(seq_file_dir.child_dirs)
419
407
  ).ok_value
420
408
  spectra: List[AgilentChannelChromatogramData] = []
@@ -430,7 +418,7 @@ class SequenceController(RunController):
430
418
  ) -> List[AgilentReport]:
431
419
  if custom_path:
432
420
  self.data_files.append(
433
- self.fuzzy_match_most_recent_folder(
421
+ self._fuzzy_match_most_recent_folder(
434
422
  most_recent_folder=SequenceDataFiles(
435
423
  dir=custom_path,
436
424
  sequence_name="NA",
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from ..abc_tables.device import DeviceController
4
3
  from ....control.controllers import CommunicationController
4
+ from ....utils.abc_tables.device import DeviceController
5
5
  from ....utils.injector_types import (
6
6
  Draw,
7
7
  Inject,
@@ -17,7 +17,7 @@ from ....utils.injector_types import (
17
17
  )
18
18
  from ....utils.macro import Response
19
19
  from ....utils.table_types import RegisterFlag, Table
20
- from ....utils.tray_types import Tray, FiftyFourVialPlate, TenVialColumn, LocationPlus
20
+ from ....utils.tray_types import Tray, FiftyFourVialPlate, VialBar, LocationPlus
21
21
 
22
22
 
23
23
  class InjectorController(DeviceController):
@@ -31,7 +31,7 @@ class InjectorController(DeviceController):
31
31
  return FiftyFourVialPlate.from_str(val)
32
32
  except Exception:
33
33
  try:
34
- return TenVialColumn(int(val))
34
+ return VialBar(int(val))
35
35
  except Exception:
36
36
  raise ValueError("Location could not be identified.")
37
37