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)
""" Wrapper for formats.save_aff_tiff. """ from jpyutils.jlogging import logging_setup import sys from structs import formats logging_setup('debug') in_fn, out_fn = sys.argv[1:3] if len(sys.argv) > 3: dim = int(sys.argv[3]) else: # Default to taking min of all affinities dim = 3 formats.save_aff_tiff(out_fn, formats.read_aff(in_fn), dim)
""" Convert edge affinities file from .aff (snemi3d) to .raw (aleks). """ from jpyutils.jlogging import logging_setup import sys from structs import formats logging_setup('debug') in_fn, out_fn = sys.argv[1:3] if len(sys.argv) > 3: lim = int(sys.argv[3]) else: lim = 0 aff_3d = formats.read_aff(in_fn) if lim: aff_3d = aff_3d[:lim] aff_3d = formats.WEIGHT_DTYPE_FLOAT(aff_3d) / formats.WEIGHT_MAX_UINT formats.save_aff(out_fn, aff_3d)