cosmicqc 1.1.2__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,152 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pdm
86
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
87
+ #pdm.lock
88
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
89
+ # in version control.
90
+ # https://pdm.fming.dev/#use-with-ide
91
+ .pdm.toml
92
+
93
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
94
+ __pypackages__/
95
+
96
+ # Celery stuff
97
+ celerybeat-schedule
98
+ celerybeat.pid
99
+
100
+ # SageMath parsed files
101
+ *.sage.py
102
+
103
+ # Environments
104
+ .env
105
+ .venv
106
+ env/
107
+ venv/
108
+ ENV/
109
+ env.bak/
110
+ venv.bak/
111
+
112
+ # Spyder project settings
113
+ .spyderproject
114
+ .spyproject
115
+
116
+ # Rope project settings
117
+ .ropeproject
118
+
119
+ # mkdocs documentation
120
+ /site
121
+
122
+ # mypy
123
+ .mypy_cache/
124
+ .dmypy.json
125
+ dmypy.json
126
+
127
+ # Pyre type checker
128
+ .pyre/
129
+
130
+ # pytype static type analyzer
131
+ .pytype/
132
+
133
+ # Cython debug symbols
134
+ cython_debug/
135
+
136
+ # test data ignores
137
+ *.tif
138
+ *.tiff
139
+ *.sqlite
140
+ *.parquet
141
+ *.zip
142
+ *.csv
143
+ *.csv.gz
144
+ *.npy
145
+ .DS_Store
146
+
147
+ # jupyter notebook build files from myst-nb
148
+ docs/jupyter_execute
149
+
150
+ # ignore vscode files
151
+ .vscode/
152
+ settings.json
@@ -0,0 +1,95 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ default_language_version:
4
+ python: python3.11
5
+ # globally exclude manuscript sources from all hooks (see docs/manuscripts)
6
+ exclude: ^docs/manuscripts/
7
+ repos:
8
+ - repo: https://github.com/pre-commit/pre-commit-hooks
9
+ rev: v6.0.0
10
+ hooks:
11
+ - id: trailing-whitespace
12
+ - id: end-of-file-fixer
13
+ exclude: |
14
+ (?x)^(
15
+ .*\.svg
16
+ )$
17
+ - id: check-yaml
18
+ - id: detect-private-key
19
+ - repo: https://github.com/astral-sh/uv-pre-commit
20
+ rev: "0.12.6"
21
+ hooks:
22
+ - id: uv-lock
23
+ - repo: https://github.com/tox-dev/pyproject-fmt
24
+ rev: "v2.28.1"
25
+ hooks:
26
+ - id: pyproject-fmt
27
+ - repo: https://github.com/codespell-project/codespell
28
+ rev: v2.4.3
29
+ hooks:
30
+ - id: codespell
31
+ exclude: |
32
+ (?x)^(
33
+ .*\.lock |
34
+ .*\.json |
35
+ .*\.ipynb |
36
+ .*\.cppipe
37
+ )$
38
+ - repo: https://github.com/executablebooks/mdformat
39
+ rev: 1.0.0
40
+ hooks:
41
+ - id: mdformat
42
+ additional_dependencies:
43
+ - mdformat-gfm
44
+ exclude: ^README\.md$ # README is managed by gh-md-toc
45
+ - repo: https://github.com/citation-file-format/cffconvert
46
+ rev: b6045d78aac9e02b039703b030588d54d53262ac
47
+ hooks:
48
+ - id: validate-cff
49
+ - repo: https://github.com/adrienverge/yamllint
50
+ rev: v1.38.0
51
+ hooks:
52
+ - id: yamllint
53
+ exclude: pre-commit-config.yaml
54
+ - repo: https://github.com/rhysd/actionlint
55
+ rev: v1.7.12
56
+ hooks:
57
+ - id: actionlint
58
+ - repo: https://github.com/astral-sh/ruff-pre-commit
59
+ rev: "v0.16.4"
60
+ hooks:
61
+ - id: ruff-format
62
+ - id: ruff-check
63
+ - repo: https://github.com/jendrikseipp/vulture
64
+ rev: 'v2.16'
65
+ hooks:
66
+ - id: vulture
67
+ - repo: local
68
+ hooks:
69
+ - id: readme-toc
70
+ name: Update README TOC (github-markdown-toc)
71
+ language: system
72
+ entry: scripts/update_readme_toc.sh
73
+ pass_filenames: false
74
+ files: ^README\.md$
75
+ - repo: https://github.com/software-gardening/almanack
76
+ rev: v0.1.17
77
+ hooks:
78
+ - id: almanack-check
79
+ args: [--exclude_paths=docs]
80
+ - repo: local
81
+ hooks:
82
+ - id: code-cov-gen
83
+ name: Generate code coverage
84
+ language: system
85
+ entry: uv run coverage run -m pytest
86
+ pass_filenames: false
87
+ always_run: true
88
+ - repo: https://github.com/Weird-Sheep-Labs/coverage-pre-commit
89
+ rev: 0.1.1
90
+ hooks:
91
+ - id: coverage-xml
92
+ - id: coverage-badge
93
+ args: ["-o", "media/coverage-badge.svg"]
94
+ additional_dependencies:
95
+ - setuptools<81
@@ -0,0 +1,172 @@
1
+ # This CITATION.cff file was generated with cffinit.
2
+ # Visit https://bit.ly/cffinit to generate yours today!
3
+ ---
4
+ cff-version: 1.2.0
5
+ title: coSMicQC
6
+ message: >-
7
+ If you use this software, please cite it using the
8
+ metadata from this file.
9
+ type: software
10
+ authors:
11
+ - given-names: Jenna
12
+ family-names: Tomkinson
13
+ orcid: 'https://orcid.org/0000-0003-2676-5813'
14
+ - given-names: David
15
+ family-names: Bunten
16
+ orcid: 'https://orcid.org/0000-0001-6041-3665'
17
+ - given-names: Vincent
18
+ family-names: Rubinetti
19
+ orcid: 'https://orcid.org/0000-0002-4655-3773'
20
+ - given-names: Gregory
21
+ family-names: Way
22
+ orcid: 'https://orcid.org/0000-0002-0503-9348'
23
+ repository-code: 'https://github.com/cytomining/coSMicQC'
24
+ identifiers:
25
+ - description: Software DOI
26
+ type: doi
27
+ value: "10.5281/zenodo.14797008"
28
+ - description: Preprint DOI
29
+ type: doi
30
+ value: "10.1101/2025.10.14.682427"
31
+ abstract: >-
32
+ coSMicQC is a software tool for single-cell quality control of morphology datasets.
33
+ keywords:
34
+ - python
35
+ - single-cell-analysis
36
+ - profiling
37
+ - quality-control
38
+ - way-lab
39
+ license: BSD-3-Clause
40
+ references:
41
+ - authors:
42
+ - name: "Way Lab CFReT_data Team"
43
+ date-accessed: "2024-05-13"
44
+ title: Way Lab CFReT_data CytoTable Data
45
+ type: data
46
+ repository-code: "https://github.com/WayScience/CFReT_data"
47
+ url: "https://github.com/WayScience/CFReT_data/blob/main/3.process_cfret_features/data/converted_profiles/localhost231120090001_converted.parquet"
48
+ scope: "localhost231120090001_converted.parquet"
49
+ notes: >-
50
+ Data from CFReT_data project is used to help validate
51
+ expected results. Data is generated from CellProfiler
52
+ and CytoTable.
53
+ identifiers:
54
+ - description: "Github Link with Contributors"
55
+ type: url
56
+ value: "https://github.com/WayScience/CFReT_data/graphs/contributors"
57
+ - authors:
58
+ - name: "Way Lab NF1_cellpainting_data Team"
59
+ date-accessed: "2024-06-28"
60
+ title: Way Lab NF1_cellpainting_data CytoTable Data
61
+ type: data
62
+ repository-code: "https://github.com/WayScience/nf1_cellpainting_data"
63
+ notes: >-
64
+ Data from NF1_cellpainting_data project is used to help validate
65
+ expected results. Data is generated from CellProfiler
66
+ and CytoTable. We use the following files from the repository:
67
+ - "Plate_2_nf1_analysis.sqlite"
68
+ - "Plate_2.parquet"
69
+ identifiers:
70
+ - description: "Github Link with Contributors"
71
+ type: url
72
+ value: "https://github.com/WayScience/nf1_cellpainting_data/graphs/contributors"
73
+ - title: >-
74
+ Plate 2 (Cell Painting images from Plate 2 for NF1_cellpainting_data project)
75
+ type: data
76
+ url: https://figshare.com/articles/dataset/Plate_2/22233700
77
+ notes: >-
78
+ Image data for related NF1_cellpainting_data parquet sqlite.
79
+ authors:
80
+ - family-names: Tomkinson
81
+ given-names: Jenna
82
+ - family-names: Mattson-Hoss
83
+ given-names: Michelle
84
+ - family-names: Sarnoff
85
+ given-names: Herb
86
+ - family-names: Way
87
+ given-names: Gregory
88
+ date-published: "2023-04-12"
89
+ identifiers:
90
+ - type: doi
91
+ value: 10.6084/m9.figshare.22233700.v4
92
+ - authors:
93
+ - name: "Way Lab and Alexander Lab Nuclear Speckles Collaboration"
94
+ date-accessed: "2024-09-04"
95
+ title: Way Lab and Alexander Lab Nuclear Speckles Collaboration Data
96
+ type: data
97
+ repository-code: https://github.com/WayScience/nuclear_speckle_image_profiling
98
+ notes: >-
99
+ Data from a collaborative project focusing on nuclear speckles
100
+ with the Way Lab and Alexander Lab s used to help validate
101
+ expected results. Parquet data is generated from CellProfiler
102
+ and CytoTable. Images courtesy of Katherine Alexander
103
+ and the Alexander Lab.
104
+ identifiers:
105
+ - description: "Github Link with Contributors"
106
+ type: url
107
+ value: "https://github.com/WayScience/nuclear_speckle_image_profiling/graphs/contributors"
108
+ - authors:
109
+ - family-names: Chandrasekaran
110
+ given-names: Srinivas Niranj
111
+ - family-names: Cimini
112
+ given-names: Beth A.
113
+ - family-names: Goodale
114
+ given-names: Amy
115
+ - family-names: Miller
116
+ given-names: Lisa
117
+ - family-names: Kost-Alimova
118
+ given-names: Maria
119
+ - family-names: Jamali
120
+ given-names: Nasim
121
+ - family-names: Doench
122
+ given-names: John G.
123
+ - family-names: Fritchman
124
+ given-names: Briana
125
+ - family-names: Skepner
126
+ given-names: Adam
127
+ - family-names: Melanson
128
+ given-names: Michelle
129
+ - family-names: Kalinin
130
+ given-names: Alexandr A.
131
+ - family-names: Arevalo
132
+ given-names: John
133
+ - family-names: Haghighi
134
+ given-names: Marzieh
135
+ - family-names: Caicedo
136
+ given-names: Juan C.
137
+ - family-names: Kuhn
138
+ given-names: Daniel
139
+ - family-names: Hernandez
140
+ given-names: Desiree
141
+ - family-names: Berstler
142
+ given-names: James
143
+ - family-names: Shafqat-Abbasi
144
+ given-names: Hamdah
145
+ - family-names: Root
146
+ given-names: David E.
147
+ - family-names: Swalley
148
+ given-names: Susanne E.
149
+ - family-names: Garg
150
+ given-names: Sakshi
151
+ - family-names: Singh
152
+ given-names: Shantanu
153
+ - family-names: Carpenter
154
+ given-names: Anne E.
155
+ date-accessed: "2024-08-21"
156
+ title: >-
157
+ Three million images and morphological profiles of cells treated with matched chemical and genetic perturbations
158
+ type: article
159
+ issn: 1548-7105
160
+ issue: 6
161
+ journal: Nature Methods
162
+ pages: 1114-1121
163
+ volume: 21
164
+ url: https://doi.org/10.1038/s41592-024-02241-6
165
+ date-published: "2024-06-01"
166
+ identifiers:
167
+ - type: doi
168
+ value: 10.1038/s41592-024-02241-6
169
+ notes: >-
170
+ JUMP (cpg0000-jump-pilot) was used to help demonstrate coSMicQC performance
171
+ with large data. See here for more information:
172
+ https://github.com/broadinstitute/cellpainting-gallery
@@ -0,0 +1,3 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ Please see our full code of conduct at https://cytomining.github.io/coSMicQC/main/code_of_conduct
@@ -0,0 +1,3 @@
1
+ # Contributing
2
+
3
+ Please see our [contributing](https://github.com/cytomining/coSMicQC/blob/main/docs/src/contributing.md) documentation for more details on contributions, development, and testing.
cosmicqc-1.1.2/LICENSE ADDED
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2024, Way Science
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,14 @@
1
+ # Constrain the sdist to what's needed to build and describe the package.
2
+ # setuptools_scm's file-finder adds every git-tracked file to the sdist by
3
+ # default; docs/, tests/, and media/ carry large notebooks, images, and
4
+ # fixture data that push the tarball past PyPI's 100 MB per-file limit, so
5
+ # prune them here.
6
+ include LICENSE
7
+ include README.md
8
+ include CITATION.cff
9
+
10
+ prune docs
11
+ prune tests
12
+ prune media
13
+ prune scripts
14
+ prune .github
@@ -0,0 +1,127 @@
1
+ Metadata-Version: 2.4
2
+ Name: cosmicqc
3
+ Version: 1.1.2
4
+ Summary: coSMicQC is a software tool for single-cell quality control of morphology datasets.
5
+ Author: Jenna Tomkinson, Dave Bunten, Gregory P. Way
6
+ License-Expression: BSD-3-Clause
7
+ Classifier: Programming Language :: Python :: 3 :: Only
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Requires-Python: <3.14,>=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: cytodataframe<0.4,>=0.0.25; python_version < "3.11"
16
+ Requires-Dist: cytodataframe<0.4,>=0.3; python_version >= "3.11"
17
+ Requires-Dist: fire<0.8,>=0.6
18
+ Requires-Dist: llvmlite==0.49
19
+ Requires-Dist: matplotlib<4,>=3.10.3
20
+ Requires-Dist: pandas<3,>=2.2.2
21
+ Requires-Dist: pyarrow<21,>=16; python_version < "3.11"
22
+ Requires-Dist: pyarrow<23,>=22; python_version >= "3.11"
23
+ Requires-Dist: pyyaml<7,>=6.0.1
24
+ Requires-Dist: scipy<2,>=1.13
25
+ Requires-Dist: seaborn<0.14,>=0.13.2
26
+ Requires-Dist: tabulate<1,>=0.9
27
+ Dynamic: license-file
28
+
29
+ <img height="200" src="https://raw.githubusercontent.com/cytomining/coSMicQC/main/media/logo/with-text-for-light-bg.png?raw=true">
30
+
31
+ # Single cell Morphology Quality Control
32
+
33
+ ![PyPI - Version](https://img.shields.io/pypi/v/cosmicqc)
34
+ [![Build Status](https://github.com/cytomining/coSMicQC/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/cytomining/coSMicQC/actions/workflows/run-tests.yml?query=branch%3Amain)
35
+ ![Coverage Status](https://raw.githubusercontent.com/cytomining/coSMicQC/main/media/coverage-badge.svg)
36
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
37
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
38
+ [![Preprint DOI badge](https://img.shields.io/badge/Preprint_DOI-10.1101/2025.10.14.682427-blue)](https://doi.org/10.1101/2025.10.14.682427)
39
+ [![Software DOI badge](https://img.shields.io/badge/Software_DOI-10.5281/zenodo.14888111-blue)](https://doi.org/10.5281/zenodo.14797008)
40
+
41
+ > 🌠 Navigate the cosmos of single-cell morphology with confidence — coSMicQC keeps your data on course!
42
+
43
+ ## Contents
44
+
45
+ <!--ts-->
46
+ * [Single cell Morphology Quality Control](#single-cell-morphology-quality-control)
47
+ * [Contents](#contents)
48
+ * [Overview](#overview)
49
+ * [Repo Contents](#repo-contents)
50
+ * [System Requirements](#system-requirements)
51
+ * [Installation Guide](#installation-guide)
52
+ * [Stable release (PyPI)](#stable-release-pypi)
53
+ * [Development version (from source)](#development-version-from-source)
54
+ * [Demo](#demo)
55
+ * [Results](#results)
56
+ * [License](#license)
57
+ * [Issues](#issues)
58
+ * [Citation](#citation)
59
+
60
+
61
+ <!--te-->
62
+
63
+ ## Overview
64
+
65
+ coSMicQC is a Python package to evaluate converted single-cell morphology outputs from [CytoTable](https://github.com/cytomining/CytoTable).
66
+ Technical artifacts can arise during segmentation, leading to issues such as under-segmentation, over-segmentation, or the erroneous segmentation of background noise, smudges, or bright artifacts.
67
+ By utilizing specific morphological features extracted with CellProfiler, you can identify technically incorrect segmentations and label or remove them before downstream analysis.
68
+
69
+ Please confer with our docsite for more comprehensive information about the project: https://cytomining.github.io/coSMicQC/main/
70
+
71
+ > 🌟 Check out our [blog post](https://waysciencelab.com/2024/12/20/cosmicqc.html) for a deeper background and how coSMicQC can help.
72
+
73
+ ## Repo Contents
74
+
75
+ - `src/cosmicqc`: coSMicQC source code.
76
+ - `tests`: test suite.
77
+ - `docs`: documentation sources and examples.
78
+ - `media`: project assets (e.g., coverage badge).
79
+ - `reports`: generated artifacts (figures, notebooks, or summaries).
80
+
81
+ ## System Requirements
82
+
83
+ - Python: `>=3.10` (tested through 3.13).
84
+ - RAM/CPU: standard laptop/desktop is sufficient for typical plate-sized datasets; larger screens benefit from more RAM/cores for faster QC/plotting.
85
+ - OS: Linux, macOS, and Windows are supported via Python; CI tests run on GitHub Actions.
86
+
87
+ ## Installation Guide
88
+
89
+ ### Stable release (PyPI)
90
+
91
+ ```shell
92
+ pip install coSMicQC
93
+ ```
94
+
95
+ ### Development version (from source)
96
+
97
+ ```shell
98
+ pip install git+https://github.com/cytomining/coSMicQC.git
99
+ # or with uv for local development
100
+ uv sync
101
+ ```
102
+
103
+ ## Demo
104
+
105
+ - Examples and notebooks live under `docs/src/examples` and the published docs: https://cytomining.github.io/coSMicQC
106
+ - Quickstart blog post: https://waysciencelab.com/2024/12/20/cosmicqc.html
107
+
108
+ ## Results
109
+
110
+ - Test and lint status: ![Build Status](https://github.com/cytomining/coSMicQC/actions/workflows/run-tests.yml/badge.svg?branch=main)
111
+ - Coverage: ![Coverage Status](https://raw.githubusercontent.com/cytomining/coSMicQC/main/media/coverage-badge.svg)
112
+
113
+ ## License
114
+
115
+ BSD-3-Clause; see [LICENSE](LICENSE).
116
+
117
+ ## Issues
118
+
119
+ Please open issues or feature requests at https://github.com/cytomining/coSMicQC/issues.
120
+
121
+ ## Citation
122
+
123
+ If you use coSMicQC in your work, please cite:
124
+
125
+ - Software DOI: [10.5281/zenodo.14888111](https://doi.org/10.5281/zenodo.14888111)
126
+ - Preprint: [10.1101/2025.10.14.682427](https://doi.org/10.1101/2025.10.14.682427)
127
+ - Citation metadata: [CITATION.cff](CITATION.cff)