"""
Created on Tue Oct 1 01:38:16 2019.
@author: mtageld
"""
from histomicstk.annotations_and_masks.annotation_and_mask_utils import \
delete_annotations_in_slide
[docs]
def cellularity_detection_workflow(
gc, cdo, slide_id, monitorPrefix='',
destination_folder_id=None, keep_existing_annotations=False):
"""Run cellularity detection for single slide.
The cellularity detection algorithm can either be
Cellularity_detector_superpixels or Cellularity_detector_thresholding.
Arguments:
---------
gc : object
girder client object
cdo : object
Cellularity_detector object instance. Can either be
Cellularity_detector_superpixels() or
Cellularity_detector_thresholding(). The thresholding-based workflow
seems to be more robust, despite being simpler.
slide_id : str
girder id of slide on which workflow is done
monitorPrefix : str
this will set the cds monitorPrefix attribute
destination_folder_id : str or None
if not None, copy slide to this girder folder and post results
there instead of original slide.
keep_existing_annotations : bool
keep existing annotations in slide when posting results?
"""
cdo.monitorPrefix = monitorPrefix
# copy slide to target folder, otherwise work in-place
if destination_folder_id is not None:
cdo._print1('%s: copying slide to destination folder' % monitorPrefix)
resp = gc.post(
'/item/%s/copy?folderId=%s©Annotations=%s' %
(slide_id, destination_folder_id, keep_existing_annotations))
slide_id = resp['_id']
elif not keep_existing_annotations:
cdo._print1('%s: deleting existing annotations' % monitorPrefix)
delete_annotations_in_slide(gc, slide_id)
# run cds for this slide
cdo.slide_id = slide_id
cdo.run()
return slide_id