def oversegment(oversegmenter, lim=0, infile=None, outfile=None): module = importer.get_module('oversegmenters', oversegmenter) use_bm = hasattr(module, 'oversegment_bm') use_aff = hasattr(module, 'oversegment_aff') if use_bm and use_aff: raise ImportError("Bad module: '%s'" % module.__name__) if use_bm: if not infile: infile = config.fn_bm bm_3d = formats.read_bm(infile) if lim: bm_3d = bm_3d[:lim] labels_3d, n_labels = module.oversegment_bm(bm_3d) elif use_aff: if not infile: infile = config.fn_aff aff_3d = formats.read_aff(infile) if lim: aff_3d = aff_3d[:lim] # Need edges going out-of-bounds to be 0, to prevent the exploring # of out-of-bounds vertices formats.clean_aff(aff_3d) labels_3d, n_labels = module.oversegment_aff(aff_3d) else: raise ImportError("Bad module: '%s'" % module.__name__) logging.info("Found %d labels" % n_labels) # Write labels to disk if not outfile: outfile = io.get_filename(config.dn_data, "oversegment-%s" % oversegmenter, "tif") formats.save_labels(outfile, labels_3d)
""" Convert Aleks' label output to my tiff label output format. This is for viewing of labels via imagej. """ from jpyutils.jlogging import logging_setup import numpy as np import sys from structs import formats logging_setup('debug') def read_labels_aleks(fn, zsize, ysize, xsize): labels_3d = np.fromfile(fn, dtype=formats.LABELS_DTYPE).reshape((zsize, ysize, xsize)) return labels_3d fn_in = sys.argv[1] zsize, ysize, xsize = map(int, sys.argv[2:5]) fn_out = sys.argv[5] labels_3d = read_labels_aleks(fn_in, zsize, ysize, xsize) formats.save_labels(fn_out, labels_3d)