Utilities

pylidc.utils.consensus(anns, clevel=0.5, pad=None, ret_masks=True, verbose=True)[source]

Return the boolean-valued consensus volume amongst the provided annotations (anns) at a particular consensus level (clevel).

Parameters:
  • anns (list of pylidc.Annotation objects) – This list should be probably be one of the lists returned by the pylidc.Scan.cluster_annotations routine.
  • clevel (float, default=0.5) – The consensus fraction. For example, if clevel=0.5, then a voxel will have value 1 in the returned boolean volume when >= 50% of the segmentations include that voxel, and 0 otherwise.
  • pad (int, list, or float, default=None) – See Annotation.bbox for description for this argument.
  • ret_masks (bool, default=True) – If True, a list of masks is also returned corresponding to all the annotations. Note that this slightly different than calling boolean_mask on each respective Annotation object because these volumes will be the same shape and in a common reference frame.
  • verbose (bool, default=True) – Turns the DICOM image loading message on/off.
Returns:

consensus_mask, consensus_bbox[, masks]consensus_mask is the boolean-valued volume of the annotation masks at clevel consensus. consensus_bbox is a 3-tuple of slices that can be used to index into the image volume at the corresponding location of consensus_mask. masks is a list of boolean-valued mask volumes corresponding to each Annotation object. Each mask in the masks list has the same shape and is sampled in the common reference frame provided by consensus_bbox.

Return type:

(ndarray, tuple[, list])

pylidc.utils.volume_viewer(vol, mask=None, **line_kwargs)[source]

Interactive volume viewer utility

Parameters:
  • vol (ndarray, ndim=3) – An image volume.
  • mask (ndarray, ndim=3, dtype=bool) – A boolean mask volume.
  • line_kwargs (args) – Any keyword arguments that can be passed to matplotlib.pyplot.plot.

Example

An example:

import pylidc as pl
from pylidc.utils import volume_viewer

ann = pl.query(pl.Annotation).first()
vol = ann.scan.to_volume()

padding = 70.0

mask = ann.boolean_mask(pad=padding)
bbox = ann.bbox(pad=padding)

volume_viewer(vol[bbox], mask, ls='-', lw=2, c='r')