Skip to main content

A tool for processing and analyzing digital pathology images stored in DICOM format.

Project description

MiniPath README

Overview

MiniPath is a Python-based tool designed for processing and analyzing digital pathology images stored in DICOM format, particularly from whole slide images (WSIs). The primary focus of MiniPath is to extract and rank diverse image patches based on entropy and cluster analysis. The tool leverages several machine learning techniques, including Principal Component Analysis (PCA) and KMeans clustering, to identify representative patches that can be used for further analysis at higher magnification levels.

MiniPath includes various utilities for reading DICOM files from local storage or Google Cloud Storage (GCS), calculating image entropy, and selecting representative patches for downstream processing.

Key Features

  • DICOM Image Handling: Supports reading DICOM images from local paths, GCS, and DICOMweb.
  • Entropy Calculation: Uses entropy as a feature for image patch diversity ranking.
  • PCA and Clustering: Applies PCA to reduce feature dimensionality and KMeans clustering to group similar patches.
  • Patch Ranking: Ranks patches for diversity and selects representative patches.
  • High-Resolution Image Extraction: Extracts relevant high-magnification frames corresponding to selected low-magnification patches.

Installation

To install the necessary dependencies, you can use the provided requirements.txt file:

pip install -r requirements.txt

Environment Setup

This tool relies on environment variables to connect to Google Cloud services. Ensure that you have a .env file in the root directory with the following contents:

GOOGLE_APPLICATION_CREDENTIALS=path/to/your/credentials.json

Replace path/to/your/credentials.json with the actual path to your Google Cloud credentials file.

Usage

Initialization

from minipath import MiniPath
minipath = MiniPath(csv='path/to/csv_file.csv', subset=True)

Required Parameter

  • csv: Path to a CSV file containing metadata and GCS URLs for high-magnification DICOM images. Requires the following columns:
    • gcs_url: path to local ('path/to/file') or remote ('gs://') DICOM file or DICOMweb address ('https://')
    • SeriesInstanceUID: Necessary to link together different resolutions of DICOM images
    • row_num_asc: should have a 1 in this column if referring to the low magnification DICOM
    • row_num_desc: should have a 1 in this column if referring to the high magnification DICOM

Optional Parameters

  • subset: bool = True:

    • Boolean flag to decide if only a subset of diverse patches should be used. Defaults to True. If you set it to false, all patches will be extracted.
  • explained_variance: float = 0.8

    • Threshold for cumulative explained variance in Principal Component Analysis (PCA).
    • Determines how many principal components are kept based on the amount of variance they explain. A value of 0.8 means the components should explain at least 80% of the variance in the data.
  • img_size: int = 256

    • The size to which the low-resolution image is resized for patch extraction.
    • This option affects the resolution of the image before breaking it down into patches.
  • patch_size: int = 8

    • The size of each patch to be extracted from the resized image.
    • This option controls the granularity of the patches, where smaller sizes yield more patches per image.
  • min_k: int = 8

    • The minimum number of clusters to be used in KMeans clustering.
    • Ensures that at least a certain number of clusters are considered when determining the diversity of patches.
  • max_k: int = 50

    • The maximum number of clusters to be tested during KMeans clustering.
    • This option controls how many potential clusters will be used when identifying diverse patches.
  • km_init: str = 'k-means++'

    • The initialization method used for KMeans clustering.
    • The default value 'k-means++' ensures better initialization for faster convergence and more reliable clustering results.
  • km_max_iter: int = 300

    • Maximum number of iterations allowed for the KMeans algorithm.
    • This setting ensures that KMeans stops after 300 iterations even if it hasn't converged to an optimal solution, preventing excessive computation.
  • km_n_init: int = 10

    • The number of times the KMeans algorithm will be run with different centroid seeds.
    • KMeans clustering is run multiple times with different initializations, and the best result (in terms of inertia) is kept. A higher value increases reliability at the cost of more computation.

Get Representative Patches

minipath.get_representatives(full_url='https://path.to.dicom.web/resource')
  • full_url: The URL pointing to the low-magnification DICOM image. This method extracts image patches from the provided DICOM file, computes entropy for each patch, applies PCA, and clusters the patches to select the most representative ones.

Extract High-Resolution Frames

high_res_frames = minipath.get_high_res()
  • high_res_patches will be an array of dictionaries with the following keys:
    • 'row_min': Pixel coordinate of first row
    • 'row_max': Pixel coordinate of last row
    • 'col_min': Pixel coordinate of first col
    • 'col_max': Pixel coordinate of last col
    • 'frame': The dicom frame that represents this coordinate set
    • 'img_array': a numpy array of the image values

This method extracts high-resolution frames corresponding to the representative patches identified at low magnification. You can loop through this array for running a model.

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

minipath-0.1.12.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

minipath-0.1.12-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file minipath-0.1.12.tar.gz.

File metadata

  • Download URL: minipath-0.1.12.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for minipath-0.1.12.tar.gz
Algorithm Hash digest
SHA256 7e3860da643364df1358a84f2f60f9d137f6c8ff8a235f82bd1900d45843f8cb
MD5 e80941a850292a52f306e95e6b727815
BLAKE2b-256 20151714b80ff6e4c55640420acc27454083ba5f495a6ba0dac8756b7fd088be

See more details on using hashes here.

File details

Details for the file minipath-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: minipath-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for minipath-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 c838ccaa23679c205a3fdb6d46af5ce72778fcd38082a2e0da8a76a33058be02
MD5 37b4960680aa5a50443857f654c03963
BLAKE2b-256 7c4bfbfa8e9fefee6356b0da3a3e3516fab142a00f1e91de5d552b454e7c5e72

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