dcm-classifier
Science Score: 65.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
✓Institutional organization owner
Organization brainsia has institutional domain (www.engineering.uiowa.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: BRAINSia
- License: apache-2.0
- Language: Python
- Default Branch: main
- Size: 9.94 MB
Statistics
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 8
- Releases: 2
Metadata Files
README.md
Introduction
In this work, we developed a robust, easily extensible classification framework that extracts key features from well-characterized DICOM header fields for identifying image modality and acquisition plane. Our tool is crucial for eliminating error-prone human interaction and allowing automatization, increasing imaging applications' reliability and efficiency. We used Random Forrest and Decision Tree algorithms to determine the image modality and orientation. We trained on header meta-data of over 49000 scan volumes from multiple studies and achieved over 99% prediction accuracy on image modality and acquisition plane classification.
This project was supported by several funding sources including:
- UCSF SCOUTS RO1
- NIH-NINDS R01NS114405 and NINDS R01 NS119896
- Botimageai.
Paper
Click here to view the published paper.
Citing
Please reference the manuscript:
Michal Brzus, Cavan J. Riley, Joel Bruss, Aaron Boes, Randall Jones, Hans J. Johnson, "DICOM sequence selection for medical imaging applications," Proc. SPIE 12931, Medical Imaging 2024: Imaging Informatics for Healthcare, Research, and Applications, 1293108 (2 April 2024); https://doi.org/10.1117/12.3006568
Additionally, please reference the citations located in the citations directory
Instructions
Below are instructions for installing and using the package as a user and developer.
Documentation
The documentation for the package can be found here
Tutorials
Tutorial notebooks are provided in the scripts directory for training and using the classifier along with all the necessary scripts for training a custom model.
User Instructions
Pip install
Users have the ability to simply pip install the package which will install the classifier and all necessary dependencies to run the classifier for ease of use. This will also provide the user with the pretrained model for classification.
$ pip install dcm-classifier
Clone the repository
If you prefer to clone the git repository:
$ git clone https://github.com/BRAINSia/dcm-classifier.git
Navigate to the cloned repo
$ cd <repo path>
Setup virtual environment
$ python3 -m venv <venv_path> && source <venv_path>/bin/activate
Install required packages
$ pip install -r requirements.txt
Developer Instructions
For development, clone the repository and install the developer requirements in a virtual environment. Development allows for training of new models using the scripts directory.
$ pip install -r requirements_dev.txt
Install pre-commit hooks
$ pre-commit install
Run pre-commit hooks to ensure code quality
$ pre-commit run -a
Run the classify study script, the path to a model can be omitted and the default model provided in the package will be used.
$ python3 <path_to_scripts_directory>/classify_study.py -d <path_to_dicom_session>
or pass the path to a separate model
$ python3 <path_to_scripts_directory>/classify_study.py -m models/ova_rf_classifier.onnx -d <path_to_dicom_session>
Testing
Testing in the dcm-classifier package is done using pytest. To run the tests, navigate to the root directory of the package
The testing data is stored in Git LFS so the following commands will be needed before running pytest
bash
git lfs fetch
git lfs checkout
and now
bash
pytest
# or to fail on warnings
python3 -Werror::FutureWarning -m pytest
Coverage Analysis
To run coverage analysis, navigate to the root directory of the package and run the following commands:
bash
coverage run --concurrency=multiprocessing --parallel-mode -m pytest tests --junitxml=tests/pytest.xml
coverage combine
coverage report --format=text -m |tee tests/pytest-coverage.txt
coverage xml -o tests/coverage.xml
coverage xml -o tests/coverage.xml
Contributing
We welcome contributions from the community! Before getting started, please take a moment to review our Contribution Guidelines for instructions on how to contribute to this project. Whether you're fixing a bug, implementing a new feature, or improving documentation, your contributions are greatly appreciated!
FAQs
What is the purpose of this package?
The purpose of this package is to provide a tool for classifying DICOM images based on their header information. This tool can be used to automate the classification process and eliminate human error.
What are the key features of this package?
The key features of this package include:
- Classification of DICOM images based on header information
- Automated classification process
- Elimination of human error
What are the future plans for this package and how can I contribute?
The future plans for this package include:
- Adding support for more image modalities
- Improving the classification accuracy
- Adding support for more DICOM header fields
Authors
Owner
- Name: BRAINSia
- Login: BRAINSia
- Kind: organization
- Email: hans-johnson@uiowa.edu
- Location: The University of Iowa
- Website: https://www.engineering.uiowa.edu/faculty-staff/hans-johnson
- Repositories: 50
- Profile: https://github.com/BRAINSia
Citation (citations/EndNote_citation.enw)
%0 - CONF %A Brzus, Michal %A Riley, Cavan %A Bruss, Joel %A Boes, Aaron %A Jones, Randall %A Johnson, Hans %T DICOM sequence selection for medical imaging applications %V 12931 %B SPIE Medical Imaging %& MI %D 2024 %U https://doi.org/10.1117/12.3006568 %DOI 10.1117/12.3006568 %I SPIE
GitHub Events
Total
- Create event: 16
- Commit comment event: 1
- Issues event: 13
- Watch event: 2
- Delete event: 8
- Issue comment event: 10
- Push event: 43
- Pull request review event: 11
- Pull request review comment event: 1
- Pull request event: 19
Last Year
- Create event: 16
- Commit comment event: 1
- Issues event: 13
- Watch event: 2
- Delete event: 8
- Issue comment event: 10
- Push event: 43
- Pull request review event: 11
- Pull request review comment event: 1
- Pull request event: 19
Dependencies
- itk ==5.4rc1
- itk-core ==5.4rc1
- itk-filtering ==5.4rc1
- itk-io ==5.4rc1
- itk-numerics ==5.4rc1
- itk-registration ==5.4rc1
- itk-segmentation ==5.4rc1
- onnxruntime ==1.16.1
- pandas ==2.1.2
- pydicom ==2.4.3
- black ==23.1.0 development
- coverage ==7.2.7 development
- dicom-anonymizer ==1.0.11 development
- matplotlib ==3.7.0 development
- openpyxl ==3.1.1 development
- pytest ==7.4.2 development
- scikit-learn ==1.1.1 development
- scipy ==1.10.0 development
- skl2onnx ==1.13 development
- tomli ==2.0.1 development
- actions/checkout v2 composite
- actions/setup-python v2 composite
- sphinx ==7.3.6
- sphinx_rtd_theme ==2.0.0