Skip to main content

Automated pelvimetry and body composition analysis from CT segmentations

Project description

ctpelvimetry

Automated CT pelvimetry and body composition analysis from CT segmentations.

Description and Features

ctpelvimetry is a Python package for automated pelvimetric measurement and body composition analysis from CT images. It integrates with TotalSegmentator for segmentation and provides a complete DICOM-to-results pipeline.

Pelvimetry Measurements

Metric Description
ISD (mm) Inter-Spinous Distance
APD (mm) Antero-Posterior Diameter at ISD level
Inlet AP (mm) Promontory → Upper Symphysis
Outlet AP (mm) Apex → Lower Symphysis
Outlet Transverse (mm) Intertuberous diameter
Outlet Area (cm²) Ellipse approx: π/4 × AP × Transverse
Sacral Length (mm) Promontory → Apex
Sacral Depth (mm) Max anterior concavity

Body Composition Measurements

Metric Description
VAT (cm²) Visceral Adipose Tissue area
SAT (cm²) Subcutaneous Adipose Tissue area
V/S ratio VAT / SAT ratio
SMA (cm²) Skeletal Muscle Area

Measured at L3 vertebral level and ISD (mid-pelvis) level.

Key Features

  • Per-metric error isolation — failure in one metric does not affect the others
  • Quality gates — automatic detection of pelvic rotation, tilt, and sacrum offset
  • Batch processing — process hundreds of patients with progress tracking and failure summaries
  • QC figures — sagittal combined, extended 3-panel, and body composition overlays
  • Modular design — use the full pipeline or individual analysis functions

Package Structure

ctpelvimetry/
├── __init__.py          # Public API
├── config.py            # PelvicConfig, constants
├── io.py                # Mask loading, coordinate transforms
├── conversion.py        # DICOM → NIfTI (dcm2niix)
├── segmentation.py      # TotalSegmentator execution
├── landmarks.py         # Midline, symphysis, sacral landmarks
├── metrics.py           # ISD, APD, ITD, sacral depth
├── body_composition.py  # VAT/SAT/SMA analysis
├── qc.py                # QC figure generation
├── pipeline.py          # run_combined_pelvimetry, run_full_pipeline
├── batch.py             # Batch orchestration
└── cli.py               # Unified CLI entry point

Installation

# Basic install (analyse existing segmentations)
pip install ctpelvimetry

# Full install (includes TotalSegmentator for segmentation)
pip install "ctpelvimetry[seg]"

Note: The full install pulls in TotalSegmentator and its PyTorch dependencies. If you only need to analyse pre-existing segmentations, the basic install is sufficient.

Dependencies

Package Minimum Version
numpy ≥ 1.24
nibabel ≥ 5.0
pandas ≥ 2.0
scipy ≥ 1.11
matplotlib ≥ 3.7
tqdm ≥ 4.60
TotalSegmentator ≥ 2.0 (optional, pip install ".[seg]")

Usage Examples

CLI — Pelvimetry (from existing segmentation)

ctpelvimetry pelv \
  --seg_folder /path/to/segmentations \
  --nifti_path /path/to/ct.nii.gz \
  --patient Patient_001 \
  --output_root ./output --qc

CLI — Full Pipeline (DICOM → NIfTI → Seg → Measurements)

ctpelvimetry pelv \
  --dicom_dir /path/to/Patient_001 \
  --output_root ./output \
  --patient Patient_001

CLI — Body Composition

ctpelvimetry body-comp \
  --patient Patient_001 \
  --seg_root ./batch_output \
  --nifti_root ./batch_output \
  --pelvimetry_csv ./batch_output/combined_pelvimetry_report.csv \
  --output body_comp.csv --qc

CLI — Batch Processing

# Pelvimetry batch
ctpelvimetry pelv \
  --dicom_root /path/to/DICOMs \
  --output_root ./output \
  --start 1 --end 250

# Body composition batch
ctpelvimetry body-comp \
  --seg_root ./batch_output \
  --nifti_root ./batch_output \
  --pelvimetry_csv ./report.csv \
  --output body_comp.csv \
  --start 1 --end 210 --qc_root ./qc

Python API

from ctpelvimetry import run_combined_pelvimetry, process_single_patient

# Pelvimetry
result = run_combined_pelvimetry(
    "Patient_001", "/path/to/seg", "/path/to/ct.nii.gz"
)

# Body composition
result = process_single_patient(
    "Patient_001", "/path/to/seg_root",
    "/path/to/ct.nii.gz", "/path/to/report.csv"
)

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit your changes (git commit -m "Add your feature")
  4. Push to the branch (git push origin feature/your-feature)
  5. Open a Pull Request

Citation

If you use ctpelvimetry in your research, please cite:

Manuscript in preparation. Citation details will be updated upon publication.

License

This project is licensed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ctpelvimetry-1.0.0.tar.gz (47.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ctpelvimetry-1.0.0-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file ctpelvimetry-1.0.0.tar.gz.

File metadata

  • Download URL: ctpelvimetry-1.0.0.tar.gz
  • Upload date:
  • Size: 47.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ctpelvimetry-1.0.0.tar.gz
Algorithm Hash digest
SHA256 26094bd682d43993fcf3d8dc177f256d4df43fcd9e7a39b71f61d3612f34417d
MD5 092a798a17e27e430a0265ff08a72845
BLAKE2b-256 24f8ebf9b5aaf0fc83e1bb0887b756284da2c1d53a5b4b08abaac7031d17f000

See more details on using hashes here.

File details

Details for the file ctpelvimetry-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ctpelvimetry-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ctpelvimetry-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a40000a2ff6d634e64eee85fa0b92bbcc33770fb38253277203a6c53a3a7d348
MD5 452fc1cd62ecd42bd5cbc62a7f48aa64
BLAKE2b-256 c22bebf3efaca5c4b668ce3ab142dd96dfd455070f8c465a29a489b543e3a8cc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page