# cidc-schemas
This repository contains formal definitions of the CIDC metadata model using [json-schema](https://json-schema.org/) syntax and vocabulary.
### View documentation at https://nci-cidc.github.io/cidc-schemas/
## Installation
To install the latest released version, run:
```bash
pip install nci-cidc-schemas
```
## Development
### Project Structure
- **`cidc_schemas/`** - a python module for generating, validating, and reading manifest and assay templates.
- **`schemas/`** - json specifications defining the CIDC metadata model.
- `templates/` - schemas for generating and validating manifest and assay templates.
- `assays/` - schemas for defining assay data models.
- `artifacts/` - schemas for defining artifacts.
- **`docs/`** - the most recent build of the data model documentation, along with templates and scripts for re-generating the documentation.
- **`template_examples/`** - example populated Excel files for template specifications in `schemas/templates`, and `.csv`s auto-generated from those `.xlsx`s that allow to transparently keep track of changes in them.
- **`tests/`** - tests for the `cidc_schemas` module.
- **`.githooks/`** - git hooks, e.g. for auto-generating `.csv`s in `template_examples/` and `.html` documentation files.
### Developer Setup
Install necessary dependencies.
```bash
pip install -r requirements.dev.txt
```
Install and configure pre-commit hooks.
```bash
pre-commit install
```
### Running tests
This repository has unit tests in the _tests_ folder. After installing dependencies
the tests can be run via the command
```bash
pytest tests
```
### Building documentation
Pre-commit hooks ensure documentation is automatically up-to date. To build the documentation manually, run the following commands:
```bash
python setup.py install # install helpers from the cidc_schemas library
python docs/generate_docs.py
```
This will output the generated html documents in `docs/docs`. If the updated docs are pushed up and merged into master, they will be viewable at https://nci-cidc.github.io/cidc-schemas/.
## Using the Command-Line Interface
This project comes with a command-line interface for validating schemas and generating/validating assay and manifest templates.
### Install the CLI
Clone the repository and cd into it
```bash
git clone git@github.com:NCI-CIDC/cidc-schemas.git
cd cidc-schemas
```
Install the `cidc_schemas` package (this adds the `cidc_schemas` CLI to your console)
```bash
python setup.py install
```
Run `cidc_schemas --help` to see available options.
If you're making changes to the module and want those changes to be reflected in the CLI without reinstalling the `cidc_schemas` module every time, run
```bash
python3 -m cidc_schemas.cli [args]
```
### Generate templates
Create a template for a given template configuration.
```bash
cidc_schemas generate_template -m templates/manifests/pbmc_template.json -o pbmc.xlsx
```
### Validate filled-out templates
Check that a populated template file is valid with respect to a template specification.
```bash
cidc_schemas validate_template -m templates/manifests/pbmc_template.json -x template_examples/pbmc_template.xlsx
```
### Validate JSON schemas
Check that a JSON schema conforms to the JSON Schema specifications.
```bash
cidc_schemas validate_schema -f shipping_core.json
```
Raw data
{
"_id": null,
"home_page": "https://github.com/NCI-CIDC/cidc-schemas",
"name": "nci-cidc-schemas",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.11,>=3.9",
"maintainer_email": null,
"keywords": "cidc_schemas",
"author": "NCI",
"author_email": "nci-cidc-tools-admin@mail.nih.gov",
"download_url": "https://files.pythonhosted.org/packages/15/7a/62a9e1a445dd402bc2daf433bf0d22bc561b829775491ce1a26ae3596d7f/nci_cidc_schemas-0.26.33.tar.gz",
"platform": null,
"description": "# cidc-schemas\n\nThis repository contains formal definitions of the CIDC metadata model using [json-schema](https://json-schema.org/) syntax and vocabulary.\n\n### View documentation at https://nci-cidc.github.io/cidc-schemas/\n\n## Installation\n\nTo install the latest released version, run:\n\n```bash\npip install nci-cidc-schemas\n```\n\n## Development\n\n### Project Structure\n\n- **`cidc_schemas/`** - a python module for generating, validating, and reading manifest and assay templates.\n - **`schemas/`** - json specifications defining the CIDC metadata model.\n - `templates/` - schemas for generating and validating manifest and assay templates.\n - `assays/` - schemas for defining assay data models.\n - `artifacts/` - schemas for defining artifacts.\n- **`docs/`** - the most recent build of the data model documentation, along with templates and scripts for re-generating the documentation.\n- **`template_examples/`** - example populated Excel files for template specifications in `schemas/templates`, and `.csv`s auto-generated from those `.xlsx`s that allow to transparently keep track of changes in them.\n- **`tests/`** - tests for the `cidc_schemas` module.\n- **`.githooks/`** - git hooks, e.g. for auto-generating `.csv`s in `template_examples/` and `.html` documentation files.\n\n### Developer Setup\n\nInstall necessary dependencies.\n\n```bash\npip install -r requirements.dev.txt\n```\n\nInstall and configure pre-commit hooks.\n\n```bash\npre-commit install\n```\n\n### Running tests\n\nThis repository has unit tests in the _tests_ folder. After installing dependencies\nthe tests can be run via the command\n\n```bash\npytest tests\n```\n\n### Building documentation\n\nPre-commit hooks ensure documentation is automatically up-to date. To build the documentation manually, run the following commands:\n\n```bash\npython setup.py install # install helpers from the cidc_schemas library\npython docs/generate_docs.py\n```\n\nThis will output the generated html documents in `docs/docs`. If the updated docs are pushed up and merged into master, they will be viewable at https://nci-cidc.github.io/cidc-schemas/.\n\n## Using the Command-Line Interface\n\nThis project comes with a command-line interface for validating schemas and generating/validating assay and manifest templates.\n\n### Install the CLI\n\nClone the repository and cd into it\n\n```bash\ngit clone git@github.com:NCI-CIDC/cidc-schemas.git\ncd cidc-schemas\n```\n\nInstall the `cidc_schemas` package (this adds the `cidc_schemas` CLI to your console)\n\n```bash\npython setup.py install\n```\n\nRun `cidc_schemas --help` to see available options.\n\nIf you're making changes to the module and want those changes to be reflected in the CLI without reinstalling the `cidc_schemas` module every time, run\n\n```bash\npython3 -m cidc_schemas.cli [args]\n```\n\n### Generate templates\n\nCreate a template for a given template configuration.\n\n```bash\ncidc_schemas generate_template -m templates/manifests/pbmc_template.json -o pbmc.xlsx\n```\n\n### Validate filled-out templates\n\nCheck that a populated template file is valid with respect to a template specification.\n\n```bash\ncidc_schemas validate_template -m templates/manifests/pbmc_template.json -x template_examples/pbmc_template.xlsx\n```\n\n### Validate JSON schemas\n\nCheck that a JSON schema conforms to the JSON Schema specifications.\n\n```bash\ncidc_schemas validate_schema -f shipping_core.json\n```\n",
"bugtrack_url": null,
"license": "MIT license",
"summary": "The CIDC data model and tools for working with it.",
"version": "0.26.33",
"project_urls": {
"Homepage": "https://github.com/NCI-CIDC/cidc-schemas"
},
"split_keywords": [
"cidc_schemas"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b9fcc59ee35c238c542fbd2dbfff929d70b8ef77a456e9a00910c99ff28ba252",
"md5": "43c072d935c6292f2055b94f160709bc",
"sha256": "d5f22ef3b940c0071173cd8bb7160cb460efc0e08160c4bbf0c47f7f7a414f47"
},
"downloads": -1,
"filename": "nci_cidc_schemas-0.26.33-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "43c072d935c6292f2055b94f160709bc",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "<3.11,>=3.9",
"size": 194218,
"upload_time": "2024-05-01T18:41:56",
"upload_time_iso_8601": "2024-05-01T18:41:56.542506Z",
"url": "https://files.pythonhosted.org/packages/b9/fc/c59ee35c238c542fbd2dbfff929d70b8ef77a456e9a00910c99ff28ba252/nci_cidc_schemas-0.26.33-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "157a62a9e1a445dd402bc2daf433bf0d22bc561b829775491ce1a26ae3596d7f",
"md5": "f9c21a20a69bcfbd399b72c72b904f70",
"sha256": "d9ec42479ff5311d1f2ee94575cd5236291c427bc4c4b4e229f709d10d7f2216"
},
"downloads": -1,
"filename": "nci_cidc_schemas-0.26.33.tar.gz",
"has_sig": false,
"md5_digest": "f9c21a20a69bcfbd399b72c72b904f70",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.11,>=3.9",
"size": 323461,
"upload_time": "2024-05-01T18:41:58",
"upload_time_iso_8601": "2024-05-01T18:41:58.616803Z",
"url": "https://files.pythonhosted.org/packages/15/7a/62a9e1a445dd402bc2daf433bf0d22bc561b829775491ce1a26ae3596d7f/nci_cidc_schemas-0.26.33.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-01 18:41:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NCI-CIDC",
"github_project": "cidc-schemas",
"github_not_found": true,
"lcname": "nci-cidc-schemas"
}