dicompare


Namedicompare JSON
Version 0.1.15 PyPI version JSON
download
home_pagehttps://github.com/astewartau/dicompare
SummaryA tool for checking DICOM compliance against a template
upload_time2025-02-18 00:05:15
maintainerNone
docs_urlNone
authorAshley Stewart
requires_python>=3.8
licenseNone
keywords dicom compliance validation medical imaging
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # dicompare

[![](img/button.png)](https://astewartau.github.io/dicompare/)

dicompare is a DICOM validation tool designed to ensure compliance with study-specific imaging protocols and domain-specific guidelines while preserving data privacy. It provides multiple interfaces, including support for validation directly in the browser, leveraging WebAssembly (WASM), Pyodide, and the underlying pip package [`dicompare`](#dicompare). dicompare is suitable for multi-site studies and clinical environments without requiring software installation or external data uploads.

dicompare supports DICOM session validation against templates based on:

- **Reference sessions**: JSON schema files can be generated based on a reference MRI scanning session;
- **[TESTING] domain guidelines**: Flexible guidelines for specific domains (currently [QSM](https://doi.org/10.1002/mrm.30006));
- **[FUTURE] landmark studies**: Schema files based on landmark studies such as the [HCP](https://doi.org/10.1038/s41586-018-0579-z), [ABCD](https://doi.org/10.1016/j.dcn.2018.03.001), and [UK BioBank](https://doi.org/10.1038/s41586-018-0579-z) projects.

# Command-line interface (CLI) and application programming interface (API)

While you can run [dicompare](https://astewartau.github.io/dicompare/) in your browser now without any installation, you may also use the underlying `dicompare` pip package if you wish to use the command-line interface (CLI) or application programming interface (API).

```bash
pip install dicompare
```

## Command-line interface (CLI)

The package provides the following CLI entry points:

- `dcm-gen-session`: Generate JSON schemas for DICOM validation.
- `dcm-check-session`: Validate DICOM sessions against predefined schemas.

1. Generate a session template

```bash
dcm-gen-session \
    --in_session_dir /path/to/dicom/session \
    --out_json_ref schema.json \
    --acquisition_fields ProtocolName SeriesDescription \
    --reference_fields EchoTime RepetitionTime
```

This will create a JSON schema describing the session based on the specified fields.

2. Validate a DICOM Session

```bash
dicompare-session \
    --in_session /path/to/dicom/session \
    --json_ref schema.json \
    --out_json compliance_report.json
```

The tool will output a compliance summary, indicating deviations from the session template.

## Python API

The `dicompare` package provides a Python API for programmatic schema generation and validation.

**Generate a schema:**

```python
from dicompare.io import read_dicom_session

reference_fields = ["EchoTime", "RepetitionTime"]
acquisition_fields = ["ProtocolName", "SeriesDescription"]

session_data = read_dicom_session(
    session_dir="/path/to/dicom/session",
    acquisition_fields=acquisition_fields,
    reference_fields=reference_fields
)

# Save the schema as JSON
import json
with open("schema.json", "w") as f:
    json.dump(session_data, f, indent=4)
```

**Validate a session:**

```python
from dicompare.io import read_json_session, read_dicom_session
from dicompare.compliance import check_session_compliance

# Load the schema
acquisition_fields, reference_fields, ref_session = read_json_session(json_ref="schema.json")

# Read the input session
in_session = read_dicom_session(
    session_dir="/path/to/dicom/session",
    acquisition_fields=acquisition_fields,
    reference_fields=reference_fields
)

# Perform compliance check
compliance_summary = check_session_compliance(
    in_session=in_session,
    ref_session=ref_session,
    series_map=None  # Optional: map series if needed
)

# Print compliance summary
for entry in compliance_summary:
    print(entry)
```


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/astewartau/dicompare",
    "name": "dicompare",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "DICOM compliance validation medical imaging",
    "author": "Ashley Stewart",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/a4/47/28e3ba76304451fe02352cd149704fc42be2da6876b6f8922c3d3e3cb0b7/dicompare-0.1.15.tar.gz",
    "platform": null,
    "description": "# dicompare\n\n[![](img/button.png)](https://astewartau.github.io/dicompare/)\n\ndicompare is a DICOM validation tool designed to ensure compliance with study-specific imaging protocols and domain-specific guidelines while preserving data privacy. It provides multiple interfaces, including support for validation directly in the browser, leveraging WebAssembly (WASM), Pyodide, and the underlying pip package [`dicompare`](#dicompare). dicompare is suitable for multi-site studies and clinical environments without requiring software installation or external data uploads.\n\ndicompare supports DICOM session validation against templates based on:\n\n- **Reference sessions**: JSON schema files can be generated based on a reference MRI scanning session;\n- **[TESTING] domain guidelines**: Flexible guidelines for specific domains (currently [QSM](https://doi.org/10.1002/mrm.30006));\n- **[FUTURE] landmark studies**: Schema files based on landmark studies such as the [HCP](https://doi.org/10.1038/s41586-018-0579-z), [ABCD](https://doi.org/10.1016/j.dcn.2018.03.001), and [UK BioBank](https://doi.org/10.1038/s41586-018-0579-z) projects.\n\n# Command-line interface (CLI) and application programming interface (API)\n\nWhile you can run [dicompare](https://astewartau.github.io/dicompare/) in your browser now without any installation, you may also use the underlying `dicompare` pip package if you wish to use the command-line interface (CLI) or application programming interface (API).\n\n```bash\npip install dicompare\n```\n\n## Command-line interface (CLI)\n\nThe package provides the following CLI entry points:\n\n- `dcm-gen-session`: Generate JSON schemas for DICOM validation.\n- `dcm-check-session`: Validate DICOM sessions against predefined schemas.\n\n1. Generate a session template\n\n```bash\ndcm-gen-session \\\n    --in_session_dir /path/to/dicom/session \\\n    --out_json_ref schema.json \\\n    --acquisition_fields ProtocolName SeriesDescription \\\n    --reference_fields EchoTime RepetitionTime\n```\n\nThis will create a JSON schema describing the session based on the specified fields.\n\n2. Validate a DICOM Session\n\n```bash\ndicompare-session \\\n    --in_session /path/to/dicom/session \\\n    --json_ref schema.json \\\n    --out_json compliance_report.json\n```\n\nThe tool will output a compliance summary, indicating deviations from the session template.\n\n## Python API\n\nThe `dicompare` package provides a Python API for programmatic schema generation and validation.\n\n**Generate a schema:**\n\n```python\nfrom dicompare.io import read_dicom_session\n\nreference_fields = [\"EchoTime\", \"RepetitionTime\"]\nacquisition_fields = [\"ProtocolName\", \"SeriesDescription\"]\n\nsession_data = read_dicom_session(\n    session_dir=\"/path/to/dicom/session\",\n    acquisition_fields=acquisition_fields,\n    reference_fields=reference_fields\n)\n\n# Save the schema as JSON\nimport json\nwith open(\"schema.json\", \"w\") as f:\n    json.dump(session_data, f, indent=4)\n```\n\n**Validate a session:**\n\n```python\nfrom dicompare.io import read_json_session, read_dicom_session\nfrom dicompare.compliance import check_session_compliance\n\n# Load the schema\nacquisition_fields, reference_fields, ref_session = read_json_session(json_ref=\"schema.json\")\n\n# Read the input session\nin_session = read_dicom_session(\n    session_dir=\"/path/to/dicom/session\",\n    acquisition_fields=acquisition_fields,\n    reference_fields=reference_fields\n)\n\n# Perform compliance check\ncompliance_summary = check_session_compliance(\n    in_session=in_session,\n    ref_session=ref_session,\n    series_map=None  # Optional: map series if needed\n)\n\n# Print compliance summary\nfor entry in compliance_summary:\n    print(entry)\n```\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A tool for checking DICOM compliance against a template",
    "version": "0.1.15",
    "project_urls": {
        "Homepage": "https://github.com/astewartau/dicompare"
    },
    "split_keywords": [
        "dicom",
        "compliance",
        "validation",
        "medical",
        "imaging"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "184d6719c967f19611c5454c6fca216b35b7cba4d7a7eec63d6266b7465ac900",
                "md5": "2fa48c8376f4b66fd64c823eb9bffb2d",
                "sha256": "1108f3567a81c233b01ba96df8db5d8824bababc9923aa79518eca5d81a98837"
            },
            "downloads": -1,
            "filename": "dicompare-0.1.15-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2fa48c8376f4b66fd64c823eb9bffb2d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 33662,
            "upload_time": "2025-02-18T00:05:14",
            "upload_time_iso_8601": "2025-02-18T00:05:14.072060Z",
            "url": "https://files.pythonhosted.org/packages/18/4d/6719c967f19611c5454c6fca216b35b7cba4d7a7eec63d6266b7465ac900/dicompare-0.1.15-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a44728e3ba76304451fe02352cd149704fc42be2da6876b6f8922c3d3e3cb0b7",
                "md5": "a403ec483992935a633f8b4a397c43f1",
                "sha256": "9be5ab43b36aa2c1dd349e98e3161a962accc6c793c36cfa93546f8a4faa4141"
            },
            "downloads": -1,
            "filename": "dicompare-0.1.15.tar.gz",
            "has_sig": false,
            "md5_digest": "a403ec483992935a633f8b4a397c43f1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 30149,
            "upload_time": "2025-02-18T00:05:15",
            "upload_time_iso_8601": "2025-02-18T00:05:15.141159Z",
            "url": "https://files.pythonhosted.org/packages/a4/47/28e3ba76304451fe02352cd149704fc42be2da6876b6f8922c3d3e3cb0b7/dicompare-0.1.15.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-18 00:05:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "astewartau",
    "github_project": "dicompare",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "dicompare"
}
        
Elapsed time: 0.40977s