chromstream 0.0.1__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.
@@ -0,0 +1,9 @@
1
+ MIT Licencse
2
+
3
+ Copyright <2025> <Sebastian Rejman>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1 @@
1
+ graft src/chromstream
@@ -0,0 +1,141 @@
1
+ Metadata-Version: 2.4
2
+ Name: chromstream
3
+ Version: 0.0.1
4
+ Summary: A Python package description goes here.
5
+ Author-email: Sebastian Rejman <s.rejman@uu.nl>
6
+ License: MIT
7
+ Project-URL: repository, https://github.com/Quantum-Accelerators/chromstream
8
+ Project-URL: documentation, https://quantum-accelerators.github.io/chromstream/
9
+ Project-URL: changelog, https://github.com/Quantum-Accelerators/chromstream/blob/main/CHANGELOG.md
10
+ Keywords: MyKeyword1,MyKeyword2
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Classifier: Operating System :: Microsoft :: Windows
21
+ Classifier: Operating System :: Unix
22
+ Classifier: Operating System :: MacOS
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE.md
26
+ Requires-Dist: ipykernel>=6.30.1
27
+ Requires-Dist: ipympl>=0.9.7
28
+ Requires-Dist: matplotlib>=3.9.4
29
+ Requires-Dist: mkdocs-include-markdown-plugin>=7.1.7
30
+ Requires-Dist: numpy
31
+ Requires-Dist: pandas>=2.3.2
32
+ Requires-Dist: scipy>=1.13.1
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
35
+ Requires-Dist: pytest-cov>=3.0.0; extra == "dev"
36
+ Requires-Dist: ruff>=0.0.285; extra == "dev"
37
+ Provides-Extra: docs
38
+ Requires-Dist: mkdocs>=1.6.1; extra == "docs"
39
+ Requires-Dist: mkdocs-autorefs>=1.4.3; extra == "docs"
40
+ Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
41
+ Requires-Dist: mkdocs-include-markdown-plugin>=7.1.7; extra == "docs"
42
+ Requires-Dist: mkdocs-jupyter>=0.25.1; extra == "docs"
43
+ Requires-Dist: mkdocs-literate-nav>=0.6.2; extra == "docs"
44
+ Requires-Dist: mkdocs-material>=9.6.19; extra == "docs"
45
+ Requires-Dist: mkdocstrings>=0.30.0; extra == "docs"
46
+ Requires-Dist: mkdocstrings-python>=1.18.2; extra == "docs"
47
+ Requires-Dist: pillow>=10.0.0; extra == "docs"
48
+ Requires-Dist: cairosvg>=2.7.1; extra == "docs"
49
+ Dynamic: license-file
50
+
51
+ # ChromStream
52
+
53
+ <p align="center">
54
+ <img src="docs/assets/chromstream_logo.svg" alt="pyGCxGC Logo" width="200"/>
55
+ </p>
56
+
57
+ A Python package for processing on-line gas chromatography data. ChromStream provides tools to parse, analyze, and visualize chromatographic data from various GC systems, and combine it with data from logfiles such as temperature and pressure.
58
+
59
+ ## Features
60
+
61
+ - Parse chromatographic data from multiple formats (Chromeleon, FID, etc.)
62
+ - Access to data at experiment, channel and chromatogram level
63
+ - Quick plotting of chromatograms
64
+ - Small selection of baseline corrections, possibility to use custom ones
65
+ - Integration using a dict of peaks
66
+ - Addition of logfiles
67
+
68
+ ## Installation
69
+
70
+ ### Installing using pip
71
+
72
+ ```bash
73
+ pip install ChromStream
74
+ ```
75
+
76
+ ### Install using uv
77
+
78
+ If you're using [uv](https://github.com/astral-sh/uv) for fast Python package management:
79
+
80
+ ```bash
81
+ uv add ChromStream
82
+ ```
83
+ ## Quick Start
84
+
85
+ Check the Quickstart Notebook to see a full demonstration of the most important features of the package.
86
+ Here's a simple example of how to set up an experiment, add chromatograms and plot them:
87
+
88
+ ```python
89
+ import chromstream as cs
90
+
91
+ exp = cs.Experiment(name='hello there')
92
+ exp.add_chromatogram('path-to-your-chromatogram') #loop over files to add multiple
93
+ exp.plot_chromatograms()
94
+ ```
95
+
96
+ To access specific channels:
97
+ ```python
98
+ exp.channels['channel-name'].plot()
99
+ ```
100
+
101
+ For specific chromatograms:
102
+
103
+ ```python
104
+ exp.channels['channel-name'].chromatograms[0].plot()
105
+ ```
106
+
107
+ ## Supported File Formats
108
+
109
+ ChromStream currently supports parsing data from:
110
+
111
+ - Chromeleon software exports (`.txt`)
112
+ - (software names) (ascii files)
113
+ - simple log files (e.g. exported from labview)
114
+
115
+ ## Documentation
116
+
117
+ - You can find the full documentation of the package [here](https://myonics.github.io/ChromStream/).
118
+
119
+ ## Example Notebooks
120
+
121
+ Check out the `example_notebooks/` directory for comprehensive examples:
122
+
123
+ - `example_calibration.ipynb` - GC calibration procedures
124
+
125
+
126
+ ## Roadmap
127
+ - Support for more files formats
128
+ - Addition of more data sources such as spectroscopy
129
+ - JSON saving and parsings
130
+ - tests
131
+
132
+ ## Contributing
133
+ This package is in active development. Any help is appreciated. You can submit feature requests or bug reports as issues on the repository.
134
+ If you have a specific file format which presently is nto supported please provide an example file.
135
+ PRs are more than welcome.
136
+
137
+ ## Authors
138
+
139
+ Sebastian Rejman - Utrecht University
140
+
141
+
@@ -0,0 +1,91 @@
1
+ # ChromStream
2
+
3
+ <p align="center">
4
+ <img src="docs/assets/chromstream_logo.svg" alt="pyGCxGC Logo" width="200"/>
5
+ </p>
6
+
7
+ A Python package for processing on-line gas chromatography data. ChromStream provides tools to parse, analyze, and visualize chromatographic data from various GC systems, and combine it with data from logfiles such as temperature and pressure.
8
+
9
+ ## Features
10
+
11
+ - Parse chromatographic data from multiple formats (Chromeleon, FID, etc.)
12
+ - Access to data at experiment, channel and chromatogram level
13
+ - Quick plotting of chromatograms
14
+ - Small selection of baseline corrections, possibility to use custom ones
15
+ - Integration using a dict of peaks
16
+ - Addition of logfiles
17
+
18
+ ## Installation
19
+
20
+ ### Installing using pip
21
+
22
+ ```bash
23
+ pip install ChromStream
24
+ ```
25
+
26
+ ### Install using uv
27
+
28
+ If you're using [uv](https://github.com/astral-sh/uv) for fast Python package management:
29
+
30
+ ```bash
31
+ uv add ChromStream
32
+ ```
33
+ ## Quick Start
34
+
35
+ Check the Quickstart Notebook to see a full demonstration of the most important features of the package.
36
+ Here's a simple example of how to set up an experiment, add chromatograms and plot them:
37
+
38
+ ```python
39
+ import chromstream as cs
40
+
41
+ exp = cs.Experiment(name='hello there')
42
+ exp.add_chromatogram('path-to-your-chromatogram') #loop over files to add multiple
43
+ exp.plot_chromatograms()
44
+ ```
45
+
46
+ To access specific channels:
47
+ ```python
48
+ exp.channels['channel-name'].plot()
49
+ ```
50
+
51
+ For specific chromatograms:
52
+
53
+ ```python
54
+ exp.channels['channel-name'].chromatograms[0].plot()
55
+ ```
56
+
57
+ ## Supported File Formats
58
+
59
+ ChromStream currently supports parsing data from:
60
+
61
+ - Chromeleon software exports (`.txt`)
62
+ - (software names) (ascii files)
63
+ - simple log files (e.g. exported from labview)
64
+
65
+ ## Documentation
66
+
67
+ - You can find the full documentation of the package [here](https://myonics.github.io/ChromStream/).
68
+
69
+ ## Example Notebooks
70
+
71
+ Check out the `example_notebooks/` directory for comprehensive examples:
72
+
73
+ - `example_calibration.ipynb` - GC calibration procedures
74
+
75
+
76
+ ## Roadmap
77
+ - Support for more files formats
78
+ - Addition of more data sources such as spectroscopy
79
+ - JSON saving and parsings
80
+ - tests
81
+
82
+ ## Contributing
83
+ This package is in active development. Any help is appreciated. You can submit feature requests or bug reports as issues on the repository.
84
+ If you have a specific file format which presently is nto supported please provide an example file.
85
+ PRs are more than welcome.
86
+
87
+ ## Authors
88
+
89
+ Sebastian Rejman - Utrecht University
90
+
91
+
@@ -0,0 +1,190 @@
1
+ [build-system]
2
+ requires = ["setuptools"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "chromstream"
7
+ description="A Python package description goes here."
8
+ version = "0.0.1"
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ authors = [{ name = "Sebastian Rejman", email = "s.rejman@uu.nl" }]
12
+ keywords = ["MyKeyword1", "MyKeyword2"]
13
+ classifiers = [
14
+ "Development Status :: 4 - Beta",
15
+ "Intended Audience :: Science/Research",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Intended Audience :: Science/Research",
22
+ "Topic :: Scientific/Engineering",
23
+ "Operating System :: Microsoft :: Windows",
24
+ "Operating System :: Unix",
25
+ "Operating System :: MacOS",
26
+ ]
27
+ requires-python = ">=3.9"
28
+ dependencies = [
29
+ "ipykernel>=6.30.1",
30
+ "ipympl>=0.9.7",
31
+ "matplotlib>=3.9.4",
32
+ "mkdocs-include-markdown-plugin>=7.1.7",
33
+ "numpy",
34
+ "pandas>=2.3.2",
35
+ "scipy>=1.13.1",
36
+ ]
37
+
38
+ [project.optional-dependencies]
39
+ dev = ["pytest>=7.4.0", "pytest-cov>=3.0.0", "ruff>=0.0.285"]
40
+ docs = [
41
+ "mkdocs>=1.6.1",
42
+ "mkdocs-autorefs>=1.4.3",
43
+ "mkdocs-gen-files>=0.5.0",
44
+ "mkdocs-include-markdown-plugin>=7.1.7",
45
+ "mkdocs-jupyter>=0.25.1",
46
+ "mkdocs-literate-nav>=0.6.2",
47
+ "mkdocs-material>=9.6.19",
48
+ "mkdocstrings>=0.30.0",
49
+ "mkdocstrings-python>=1.18.2",
50
+ "pillow>=10.0.0",
51
+ "cairosvg>=2.7.1"
52
+ ]
53
+
54
+ [project.urls]
55
+ repository = "https://github.com/Quantum-Accelerators/chromstream"
56
+ documentation = "https://quantum-accelerators.github.io/chromstream/"
57
+ changelog = "https://github.com/Quantum-Accelerators/chromstream/blob/main/CHANGELOG.md"
58
+
59
+ [tool.setuptools.package-data]
60
+ chromstream = ["py.typed"]
61
+
62
+ [tool.pyright]
63
+ include = ["chromstream"]
64
+ exclude = ["**/__pycache__"]
65
+ typeCheckingMode = "basic"
66
+ reportGeneralTypeIssues = false
67
+ reportOptionalMemberAccess = false
68
+ reportOptionalSubscript = false
69
+ reportOptionalOperand = false
70
+
71
+ [tool.pytest.ini_options]
72
+ minversion = "6.0"
73
+ addopts = ["-p no:warnings", "--import-mode=importlib"]
74
+ xfail_strict = true
75
+ log_cli_level = "warn"
76
+ pythonpath = "src"
77
+ testpaths = ["tests"]
78
+
79
+ [tool.black]
80
+ exclude = '''
81
+ /(
82
+ \.git
83
+ | \.tox
84
+ )/
85
+ '''
86
+ skip-magic-trailing-comma = true
87
+ line-length = 88
88
+
89
+ [tool.isort]
90
+ profile = 'black'
91
+ skip_gitignore = true
92
+
93
+ [tool.coverage.run]
94
+ source = ["src"]
95
+
96
+ [tool.coverage.report]
97
+ exclude_also = [
98
+ "if TYPE_CHECKING:",
99
+ "if __name__ == .__main__.:",
100
+ "except ImportError",
101
+ ]
102
+
103
+ [tool.ruff]
104
+ lint.select = [
105
+ "A", # flake8-builtins
106
+ "ARG", # flake8-unused-arguments
107
+ "ASYNC", # flake8-async
108
+ "ASYNC1", # flake8-async1
109
+ "B", # flake8-bugbear
110
+ "C4", # flake8-comprehensions
111
+ "E", # pycodestyle error
112
+ "EXE", # flake8-executable
113
+ "F", # pyflakes
114
+ "FA", # flake8-future-annotations
115
+ "FLY", # flynt
116
+ "I", # isort
117
+ "ICN", # flake8-import-conventions
118
+ "INT", # flake8-gettext
119
+ "ISC", # flake8-implicit-str-concat
120
+ "NPY", # numpy-specific rules
121
+ "PD", # pandas-vet
122
+ "PERF", # perflint
123
+ "PIE", # flake8-pie
124
+ "PL", # pylint
125
+ "PT", # flake8-pytest-style
126
+ "PYI", # flake8-pyi
127
+ "RET", # flake8-return
128
+ "RSE", # flake8-raise
129
+ "RUF", # Ruff-specific rules
130
+ "SIM", # flake8-simplify
131
+ "SLOT", # flake8-slots
132
+ "T20", # flake8-print
133
+ "TCH", # flake8-type-checking
134
+ "TID", # flake8-tidy-imports
135
+ "UP", # pyupgrade
136
+ "W", # pycodestyle warning
137
+ "YTT", # flake8-2020
138
+ ]
139
+ lint.ignore = [
140
+ "E501", # Line too long (enable length checking via ruff/black below)
141
+ "ISC001", # single-line-implicit-string-concatenation
142
+ "PLR", # Design related pylint codes
143
+ "PERF203", # try-except-in-loop
144
+ "RET505", # Unnecessary `elif` after `return`
145
+ "PLC0415", # `import` should be at the top-level of a file
146
+ "I001",
147
+ ]
148
+ lint.unfixable = [
149
+ "T20", # Removes print statements
150
+ "F841", # Removes unused variables
151
+ ]
152
+ lint.pydocstyle.convention = "numpy"
153
+ lint.isort.known-first-party = ["chromstream"]
154
+ lint.isort.required-imports = ["from __future__ import annotations"]
155
+ lint.isort.split-on-trailing-comma=false
156
+ src = ["src"]
157
+ extend-include = ["*.ipynb"]
158
+ line-length = 88
159
+
160
+ [tool.ruff.format]
161
+ docstring-code-format = true
162
+ skip-magic-trailing-comma = true
163
+
164
+ [tool.ruff.lint.per-file-ignores]
165
+ "__init__.py" = ["F401"]
166
+ "tests/**" = ["ANN", "ARG", "D", "E402", "PTH", "S101"]
167
+
168
+ [tool.docformatter]
169
+ pre-summary-newline = true
170
+ black = true
171
+
172
+ [tool.mypy]
173
+ ignore_missing_imports = true
174
+ namespace_packages = true
175
+ explicit_package_bases = true
176
+ no_implicit_optional = false
177
+ disable_error_code = ["annotation-unchecked", "operator"]
178
+ check_untyped_defs = false
179
+ disallow_untyped_calls = false
180
+ warn_return_any = false
181
+
182
+ lint.quotes = "double"
183
+
184
+ [tool.uv.sources]
185
+ chromstream = { workspace = true }
186
+
187
+ [dependency-groups]
188
+ docs = [
189
+ "chromstream",
190
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,15 @@
1
+ """Init data"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from importlib.metadata import version
6
+
7
+ from .parsers import *
8
+
9
+ from .objects import *
10
+
11
+ from .data_processing import *
12
+
13
+
14
+ # Load the version
15
+ __version__ = version("chromstream")