hca-metadata-schema 0.2.0__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,209 @@
1
+ # MCP server config (machine-specific virtualenv paths)
2
+ .mcp.json
3
+
4
+ # Claude Code per-user settings (permissions, etc.)
5
+ .claude/settings.local.json
6
+
7
+ # Claude Code agent worktrees (isolated subagent working copies)
8
+ .claude/worktrees/
9
+
10
+ # Byte-compiled / optimized / DLL files
11
+ __pycache__/
12
+ *.py[cod]
13
+ *$py.class
14
+
15
+ # C extensions
16
+ *.so
17
+
18
+ # Distribution / packaging
19
+ .Python
20
+ build/
21
+ develop-eggs/
22
+ dist/
23
+ downloads/
24
+ eggs/
25
+ .eggs/
26
+ lib/
27
+ lib64/
28
+ parts/
29
+ sdist/
30
+ var/
31
+ wheels/
32
+ share/python-wheels/
33
+ *.egg-info/
34
+ .installed.cfg
35
+ *.egg
36
+ MANIFEST
37
+
38
+ # PyInstaller
39
+ # Usually these files are written by a python script from a template
40
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
41
+ *.manifest
42
+ *.spec
43
+
44
+ # Installer logs
45
+ pip-log.txt
46
+ pip-delete-this-directory.txt
47
+
48
+ # Unit test / coverage reports
49
+ htmlcov/
50
+ .tox/
51
+ .nox/
52
+ .coverage
53
+ .coverage.*
54
+ .cache
55
+ nosetests.xml
56
+ coverage.xml
57
+ *.cover
58
+ *.py,cover
59
+ .hypothesis/
60
+ .pytest_cache/
61
+ cover/
62
+
63
+ # Translations
64
+ *.mo
65
+ *.pot
66
+
67
+ # Django stuff:
68
+ *.log
69
+ local_settings.py
70
+ db.sqlite3
71
+ db.sqlite3-journal
72
+
73
+ # Flask stuff:
74
+ instance/
75
+ .webassets-cache
76
+
77
+ # Scrapy stuff:
78
+ .scrapy
79
+
80
+ # Sphinx documentation
81
+ docs/_build/
82
+
83
+ # PyBuilder
84
+ .pybuilder/
85
+ target/
86
+
87
+ # Jupyter Notebook
88
+ .ipynb_checkpoints
89
+
90
+ # IPython
91
+ profile_default/
92
+ ipython_config.py
93
+
94
+ # pyenv
95
+ # For a library or package, you might want to ignore these files since the code is
96
+ # intended to run in multiple environments; otherwise, check them in:
97
+ # .python-version
98
+
99
+ # pipenv
100
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
101
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
102
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
103
+ # install all needed dependencies.
104
+ #Pipfile.lock
105
+
106
+ # UV
107
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
108
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
109
+ # commonly ignored for libraries.
110
+ # Everything under packages/ is a published library, not a deployed app: nothing in the build
111
+ # or deploy path reads these locks (uv build resolves from pyproject.toml; the Docker images use
112
+ # the services' poetry.lock). Tracking them only invited drift, because release-please bumps
113
+ # pyproject.toml but not uv.lock (see #483). Scoped to packages/ so future uv-based *services*
114
+ # (apps) can still commit their locks.
115
+ packages/*/uv.lock
116
+ # shared/ is the same shape: a library consumed only as a path dependency, never
117
+ # installed from its own lock (services build it through their poetry.lock; uv
118
+ # build/sync resolve from pyproject.toml). Nothing reads shared/uv.lock, so ignore it.
119
+ shared/uv.lock
120
+
121
+ # poetry
122
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
123
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
124
+ # commonly ignored for libraries.
125
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
126
+ #poetry.lock
127
+
128
+ # pdm
129
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
130
+ #pdm.lock
131
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
132
+ # in version control.
133
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
134
+ .pdm.toml
135
+ .pdm-python
136
+ .pdm-build/
137
+
138
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
139
+ __pypackages__/
140
+
141
+ # Celery stuff
142
+ celerybeat-schedule
143
+ celerybeat.pid
144
+
145
+ # SageMath parsed files
146
+ *.sage.py
147
+
148
+ # Environments
149
+ .env
150
+ .env.make
151
+ .venv
152
+ env/
153
+ venv/
154
+ ENV/
155
+ env.bak/
156
+ venv.bak/
157
+
158
+ # Spyder project settings
159
+ .spyderproject
160
+ .spyproject
161
+
162
+ # Rope project settings
163
+ .ropeproject
164
+
165
+ # mkdocs documentation
166
+ /site
167
+
168
+ # mypy
169
+ .mypy_cache/
170
+ .dmypy.json
171
+ dmypy.json
172
+
173
+ # Pyre type checker
174
+ .pyre/
175
+
176
+ # pytype static type analyzer
177
+ .pytype/
178
+
179
+ # Cython debug symbols
180
+ cython_debug/
181
+
182
+ # PyCharm
183
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
184
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
185
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
186
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
187
+ #.idea/
188
+
189
+ # Ruff stuff:
190
+ .ruff_cache/
191
+
192
+ # PyPI configuration file
193
+ .pypirc
194
+
195
+ # Lambda deployment packages and environments
196
+ *.zip
197
+ deployment/layers/
198
+ deployment/test-lambda-env/
199
+ deployment/entry-sheet-validator/output/
200
+ response.json
201
+
202
+ # macOS
203
+ .DS_Store
204
+
205
+ # Drafting space for outbound correspondence with atlas teams — notes to the
206
+ # breast, gut, immune and pancreas teams while they are being written. These
207
+ # are not code and do not belong in a tools repo, but they should not be one
208
+ # `git clean` from gone either. Anything sent lands in hca-ingest-coordination.
209
+ notes/
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+
3
+ ## [0.2.0](https://github.com/clevercanary/hca-validation-tools/compare/hca-schema-v0.1.0...hca-schema-v0.2.0) (2026-10-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * add 10th and 11th decade development stages ([#202](https://github.com/clevercanary/hca-validation-tools/issues/202)) ([775091e](https://github.com/clevercanary/hca-validation-tools/commit/775091ebff3033f526e5d434fd9da3f0cce5dc0c))
9
+ * add musculoskeletal dataset schema ([#172](https://github.com/clevercanary/hca-validation-tools/issues/172)) ([#173](https://github.com/clevercanary/hca-validation-tools/issues/173)) ([4ff848b](https://github.com/clevercanary/hca-validation-tools/commit/4ff848b1b63db0da66558c852544e6ff96809fa1))
10
+ * move ambient_count_correction and doublet_detection from uns to obs ([#349](https://github.com/clevercanary/hca-validation-tools/issues/349)) ([90b2b0b](https://github.com/clevercanary/hca-validation-tools/commit/90b2b0bea36500f7bb9a54961fd3dfc3f74c9cf9))
11
+ * **schema:** give the LinkML schema its own version, bumped by release-please ([#537](https://github.com/clevercanary/hca-validation-tools/issues/537)) ([#803](https://github.com/clevercanary/hca-validation-tools/issues/803)) ([d016fa3](https://github.com/clevercanary/hca-validation-tools/commit/d016fa3a4e14abe9d99fadfe2d3c8164f7d85b96))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **schema:** make three obs columns visible to annDataLocation discovery ([#545](https://github.com/clevercanary/hca-validation-tools/issues/545)) ([2f4679b](https://github.com/clevercanary/hca-validation-tools/commit/2f4679b87424e3c2c6ea0c5f408106c466843b36))
17
+
18
+
19
+ ### Code Refactoring
20
+
21
+ * update file structure to support multiple independent services ([#124](https://github.com/clevercanary/hca-validation-tools/issues/124)) ([ef1782a](https://github.com/clevercanary/hca-validation-tools/commit/ef1782a247af1fe9f562a12256b8ebc8e3ff657f))
22
+
23
+ ## 0.1.0 (unversioned baseline)
24
+
25
+ `0.1.0` does not name one fixed schema. The schema was first given this version in
26
+ August 2025 (#124) and changed many times afterwards without a bump, including the
27
+ musculoskeletal bionetwork schema (December 2025) and the `Cell` class (#538). A file
28
+ or report that says `0.1.0` was checked against some schema from that period, but which
29
+ one cannot be told from the version alone.
30
+
31
+ From 0.2.0 on, `core.yaml`'s `version:` is bumped by release-please according to
32
+ `docs/schema-version-contract.md`, and every change is listed here (#537). The 0.2.0 entry
33
+ also lists the earlier, unversioned changes, since no release marked where they ended.
@@ -0,0 +1,55 @@
1
+ # hca-metadata-schema Makefile
2
+ # Schema validation and model generation. The data dictionary is built from shared/ (it needs shared's code).
3
+
4
+ SCHEMA_DIR := src/hca_metadata_schema
5
+ GENERATED := $(SCHEMA_DIR)/generated/core.py
6
+ SCHEMAS := $(wildcard $(SCHEMA_DIR)/*.yaml)
7
+ UV := uv run --group codegen
8
+ SUPPRESS_WARNINGS := 2>/dev/null
9
+
10
+ .PHONY: help
11
+ help:
12
+ @echo "hca-metadata-schema tasks:"
13
+ @echo " validate-schema - Validate all schema files"
14
+ @echo " lint-schema - Lint schema files"
15
+ @echo " gen-schema - Generate the Pydantic models from the LinkML schemas"
16
+ @echo " test - Run the package tests"
17
+
18
+ # Schema validation
19
+ .PHONY: validate-schema
20
+ validate-schema:
21
+ @echo "Validating all schema files..."
22
+ @for schema in $(SCHEMAS); do \
23
+ echo "Validating $$(basename $$schema)..."; \
24
+ $(UV) gen-yaml $$schema > /dev/null $(SUPPRESS_WARNINGS) || exit 1; \
25
+ echo "✓ $$(basename $$schema) is valid"; \
26
+ done
27
+ @echo "All schema files are valid!"
28
+
29
+ # Lint schema files
30
+ .PHONY: lint-schema
31
+ lint-schema:
32
+ @echo "Linting schema files..."
33
+ @$(UV) linkml lint $(SCHEMA_DIR) --validate
34
+
35
+ # Lint schema files with only errors (no style warnings)
36
+ .PHONY: lint-schema-errors
37
+ lint-schema-errors:
38
+ @echo "Linting schema files (errors only)..."
39
+ @$(UV) linkml lint $(SCHEMA_DIR) --validate --ignore-warnings || (echo "❌ Schema has critical errors" && exit 1)
40
+ @echo "✓ No critical errors found in schema files"
41
+
42
+ # Generate Python models from schemas
43
+ .PHONY: gen-schema
44
+ gen-schema:
45
+ @echo "Generating models..."
46
+ @# Generate to a temp file so a failed run leaves the committed model intact. sed marks the schema version line
47
+ @# so release-please bumps it with core.yaml (docs/schema-version-contract.md).
48
+ @$(UV) gen-pydantic $(SCHEMA_DIR)/core.yaml --meta AUTO > $(GENERATED).tmp
49
+ @sed -E 's/^(version = "[^"]*")$$/\1 # x-release-please-version/' $(GENERATED).tmp > $(GENERATED)
50
+ @rm $(GENERATED).tmp
51
+ @echo "Done"
52
+
53
+ .PHONY: test
54
+ test:
55
+ @uv run pytest tests/ -v
@@ -0,0 +1,54 @@
1
+ Metadata-Version: 2.5
2
+ Name: hca-metadata-schema
3
+ Version: 0.2.0
4
+ Summary: HCA metadata schema: LinkML definitions and the Pydantic models generated from them
5
+ Project-URL: Homepage, https://github.com/clevercanary/hca-validation-tools
6
+ Author-email: Clever Canary <dave@clevercanary.com>
7
+ License-Expression: MIT
8
+ Requires-Python: <4.0,>=3.10
9
+ Requires-Dist: pydantic<3,>=2
10
+ Description-Content-Type: text/markdown
11
+
12
+ # hca-metadata-schema
13
+
14
+ The HCA metadata schema: the LinkML YAML definitions and the Pydantic models generated from them.
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ pip install hca-metadata-schema
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ ```python
25
+ from hca_metadata_schema import CORE_SCHEMA_PATH, __version__
26
+ from hca_metadata_schema.generated.core import Cell, Dataset, Donor, Sample
27
+
28
+ # The Pydantic models validate a record against the schema
29
+ Donor(...)
30
+
31
+ # The LinkML source, for tools that read the schema itself (e.g. linkml-runtime's SchemaView)
32
+ CORE_SCHEMA_PATH # .../hca_metadata_schema/core.yaml
33
+ ```
34
+
35
+ The package depends only on pydantic. Reading the YAML with `SchemaView` needs `linkml-runtime`, which
36
+ you install yourself.
37
+
38
+ ## Versioning
39
+
40
+ The schema has one version, in `core.yaml`, and the package version is the same number. What each bump
41
+ means is set out in
42
+ [`docs/schema-version-contract.md`](https://github.com/clevercanary/hca-validation-tools/blob/main/docs/schema-version-contract.md).
43
+
44
+ ## Development
45
+
46
+ ```bash
47
+ make gen-schema # regenerate generated/core.py from the YAML
48
+ make validate-schema # check every YAML file compiles
49
+ uv run pytest tests/ -v
50
+ ```
51
+
52
+ After editing the YAML, regenerate the models and the data dictionary (`make -C shared gen-schema
53
+ generate-data-dictionary` from the repo root) and commit the result. CI's `generated-schema` job fails if either is
54
+ stale, and the opt-in pre-commit hook `schema-generated` regenerates them when a schema YAML file is committed.
@@ -0,0 +1,43 @@
1
+ # hca-metadata-schema
2
+
3
+ The HCA metadata schema: the LinkML YAML definitions and the Pydantic models generated from them.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install hca-metadata-schema
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```python
14
+ from hca_metadata_schema import CORE_SCHEMA_PATH, __version__
15
+ from hca_metadata_schema.generated.core import Cell, Dataset, Donor, Sample
16
+
17
+ # The Pydantic models validate a record against the schema
18
+ Donor(...)
19
+
20
+ # The LinkML source, for tools that read the schema itself (e.g. linkml-runtime's SchemaView)
21
+ CORE_SCHEMA_PATH # .../hca_metadata_schema/core.yaml
22
+ ```
23
+
24
+ The package depends only on pydantic. Reading the YAML with `SchemaView` needs `linkml-runtime`, which
25
+ you install yourself.
26
+
27
+ ## Versioning
28
+
29
+ The schema has one version, in `core.yaml`, and the package version is the same number. What each bump
30
+ means is set out in
31
+ [`docs/schema-version-contract.md`](https://github.com/clevercanary/hca-validation-tools/blob/main/docs/schema-version-contract.md).
32
+
33
+ ## Development
34
+
35
+ ```bash
36
+ make gen-schema # regenerate generated/core.py from the YAML
37
+ make validate-schema # check every YAML file compiles
38
+ uv run pytest tests/ -v
39
+ ```
40
+
41
+ After editing the YAML, regenerate the models and the data dictionary (`make -C shared gen-schema
42
+ generate-data-dictionary` from the repo root) and commit the result. CI's `generated-schema` job fails if either is
43
+ stale, and the opt-in pre-commit hook `schema-generated` regenerates them when a schema YAML file is committed.
@@ -0,0 +1,36 @@
1
+ [project]
2
+ name = "hca-metadata-schema"
3
+ version = "0.2.0"
4
+ description = "HCA metadata schema: LinkML definitions and the Pydantic models generated from them"
5
+ authors = [{ name = "Clever Canary", email = "dave@clevercanary.com" }]
6
+ license = "MIT"
7
+ readme = "README.md"
8
+ requires-python = ">=3.10,<4.0"
9
+ # The generated models import only pydantic and the standard library. Keep it that way: this package
10
+ # is what lets hca-anndata-tools use the schema without pulling in linkml.
11
+ dependencies = [
12
+ "pydantic>=2,<3",
13
+ ]
14
+
15
+ [project.urls]
16
+ Homepage = "https://github.com/clevercanary/hca-validation-tools"
17
+
18
+ [dependency-groups]
19
+ dev = [
20
+ "pytest>=8.0,<9",
21
+ "pyyaml>=6.0,<7",
22
+ ]
23
+ # gen-pydantic and gen-yaml for the Makefile's schema targets, kept out of `dev` so the tests (and CI)
24
+ # do not install linkml. Same pin and linkml-runtime cap as shared/pyproject.toml, for the same reason.
25
+ codegen = [
26
+ "linkml==1.9.2",
27
+ "linkml-runtime>=1.9.2,<1.10",
28
+ ]
29
+
30
+ [build-system]
31
+ requires = ["hatchling"]
32
+ build-backend = "hatchling.build"
33
+
34
+ # Ships every file under the package directory, which is how the LinkML YAML reaches the wheel.
35
+ [tool.hatch.build.targets.wheel]
36
+ packages = ["src/hca_metadata_schema"]
@@ -0,0 +1,11 @@
1
+ """The HCA metadata schema: LinkML YAML definitions and the Pydantic models generated from them.
2
+
3
+ `CORE_SCHEMA_PATH` is the root schema; it imports every other YAML file shipped here. The models are in
4
+ `hca_metadata_schema.generated.core`, regenerated from the YAML by `make gen-schema`.
5
+ """
6
+
7
+ from pathlib import Path
8
+
9
+ __version__ = "0.2.0" # x-release-please-version
10
+
11
+ CORE_SCHEMA_PATH = Path(__file__).parent / "core.yaml"
@@ -0,0 +1,32 @@
1
+ id: https://github.com/clevercanary/hca-validation-tools/schema/bionetwork/adipose
2
+ name: hca-validation-adipose
3
+ title: Adipose BioNetwork Extensions
4
+ description: Adipose network–specific refinements to the HCA dataset schema
5
+ license: MIT
6
+
7
+ prefixes:
8
+ linkml: https://w3id.org/linkml/
9
+ hca: https://github.com/clevercanary/hca-validation-tools/schema/
10
+
11
+ default_prefix: hca
12
+ default_range: string
13
+
14
+ imports:
15
+ - linkml:types
16
+ - ../dataset
17
+ - ../slots
18
+ - ../enums
19
+
20
+ classes:
21
+ AdiposeDataset:
22
+ is_a: Dataset
23
+ description: Dataset with Adipose BioNetwork–specific metadata requirements.
24
+ slots:
25
+ - ambient_count_correction
26
+ - doublet_detection
27
+
28
+ AdiposeSample:
29
+ is_a: Sample
30
+ description: Sample with Adipose BioNetwork–specific metadata requirements.
31
+ slots:
32
+ - dissociation_protocol
@@ -0,0 +1,35 @@
1
+ id: https://github.com/clevercanary/hca-validation-tools/schema/bionetwork/gut
2
+ name: hca-validation-gut
3
+ title: Gut BioNetwork Extensions
4
+ description: Gut network–specific refinements to the HCA dataset schema
5
+ license: MIT
6
+
7
+ prefixes:
8
+ linkml: https://w3id.org/linkml/
9
+ hca: https://github.com/clevercanary/hca-validation-tools/schema/
10
+
11
+ default_prefix: hca
12
+ default_range: string
13
+
14
+ imports:
15
+ - linkml:types
16
+ - ../dataset
17
+ - ../slots
18
+ - ../enums
19
+ classes:
20
+ GutDataset:
21
+ is_a: Dataset
22
+ description: Dataset with Gut BioNetwork–specific metadata requirements.
23
+ slots:
24
+ - ambient_count_correction
25
+ - doublet_detection
26
+
27
+ GutSample:
28
+ is_a: Sample
29
+ description: Sample with Gut BioNetwork–specific metadata requirements.
30
+ slots:
31
+ - radial_tissue_term
32
+ - dissociation_protocol
33
+
34
+
35
+
@@ -0,0 +1,25 @@
1
+ id: https://github.com/clevercanary/hca-validation-tools/schema/bionetwork/musculoskeletal
2
+ name: hca-validation-musculoskeletal
3
+ title: Musculoskeletal BioNetwork Extensions
4
+ description: Musculoskeletal network–specific refinements to the HCA dataset schema
5
+ license: MIT
6
+
7
+ prefixes:
8
+ linkml: https://w3id.org/linkml/
9
+ hca: https://github.com/clevercanary/hca-validation-tools/schema/
10
+
11
+ default_prefix: hca
12
+ default_range: string
13
+
14
+ imports:
15
+ - linkml:types
16
+ - ../dataset
17
+ - ../slots
18
+ - ../enums
19
+ classes:
20
+ MusculoskeletalDataset:
21
+ is_a: Dataset
22
+ description: Dataset with Musculoskeletal BioNetwork–specific metadata requirements.
23
+ slots:
24
+ - ambient_count_correction
25
+ - doublet_detection
@@ -0,0 +1,69 @@
1
+ id: https://github.com/clevercanary/hca-validation-tools/schema/cell
2
+ name: hca-validation-cell
3
+ title: HCA Validation Cell Schema
4
+ description: Schema for validating Human Cell Atlas (HCA) cell metadata
5
+ license: MIT
6
+
7
+ prefixes:
8
+ linkml: https://w3id.org/linkml/
9
+ hca: https://github.com/clevercanary/hca-validation-tools/schema/
10
+
11
+ default_prefix: hca
12
+ default_range: string
13
+
14
+ imports:
15
+ - linkml:types
16
+
17
+ classes:
18
+ Cell:
19
+ description: >-
20
+ A single cell derived from a sample
21
+ slots:
22
+ - author_cell_type
23
+ - cell_type_ontology_term_id
24
+
25
+ slots:
26
+ author_cell_type:
27
+ title: Author Cell Type
28
+ description: Encoding of author intuition of cellular annotation in the dataset.
29
+ examples:
30
+ - value: Goblet cell; microglia
31
+ annotations:
32
+ annDataLocation: obs
33
+ tier: Tier 1
34
+ range: string
35
+ required: false
36
+ multivalued: false
37
+ comments:
38
+ - Encoding of author intuition of cellular annotation in their dataset.
39
+ - >-
40
+ Retained alongside the ontology term so the author's original naming is not lost
41
+ when terms are mapped to CL.
42
+
43
+ cell_type_ontology_term_id:
44
+ title: Cell Type Ontology Term ID
45
+ description: Cell Ontology (CL) term.
46
+ examples:
47
+ - value: CL:0001204
48
+ annotations:
49
+ annDataLocation: obs
50
+ tier: Tier 1
51
+ cxg: cell_type_ontology_term_id
52
+ range: string
53
+ required: false
54
+ multivalued: false
55
+ notes:
56
+ - |
57
+ This must be a Cell Ontology (CL) term (http://www.ebi.ac.uk/ols4/ontologies/cl).
58
+
59
+ If no appropriate high-level term can be found or the cell type is unknown, then it is strongly recommended to use 'unknown'.
60
+
61
+ The following terms must not be used: "CL:0000255" for eukaryotic cell; "CL:0000257" for Eumycetozoan cell; "CL:0000548" for animal cell.
62
+ - >-
63
+ ZFA, FBbt, and WBbt terms are allowed depending on the organism, and "na" is
64
+ allowed if tissue_type is "cell line" — per the h5ad validator's curie_constraints.
65
+ comments:
66
+ - Encoding of cell type to help alignment with other datasets.
67
+ - >-
68
+ Unrecoverable once dropped — populate_labels derives cell_type from this column,
69
+ not the reverse. Optional here to match the h5ad validator's requirement_level.
@@ -0,0 +1,23 @@
1
+ id: https://github.com/clevercanary/hca-validation-tools/schema/core
2
+ name: hca-validation-core
3
+ title: HCA Validation Core Schema
4
+ description: Core schema for validating Human Cell Atlas (HCA) data
5
+ license: MIT
6
+ version: 0.2.0 # x-release-please-version
7
+
8
+ prefixes:
9
+ linkml: https://w3id.org/linkml/
10
+ hca: https://github.com/clevercanary/hca-validation-tools/schema/
11
+
12
+ default_prefix: hca
13
+ default_range: string
14
+
15
+ imports:
16
+ - linkml:types
17
+ - dataset
18
+ - bionetwork/adipose
19
+ - bionetwork/gut
20
+ - bionetwork/musculoskeletal
21
+ - donor
22
+ - sample
23
+ - cell