def print_measurements(options): """Print the measurements that would be output by a pipeline This function calls Pipeline.get_measurement_columns() to get the measurements that would be output by a pipeline. This can be used in a workflow tool or LIMS to find the outputs of a pipeline without running it. For instance, someone might want to integrate CellProfiler with Knime and write a Knime node that let the user specify a pipeline file. The node could then execute CellProfiler with the --measurements switch and display the measurements as node outputs. """ if options.pipeline_filename is None: raise ValueError("Can't print measurements, no pipeline file") import cellprofiler.pipeline pipeline = cellprofiler.pipeline.Pipeline() def callback(pipeline, event): if isinstance(event, cellprofiler.pipeline.LoadExceptionEvent): raise ValueError("Failed to load %s" % options.pipeline_filename) pipeline.add_listener(callback) pipeline.load(os.path.expanduser(options.pipeline_filename)) columns = pipeline.get_measurement_columns() print "--- begin measurements ---" print "Object,Feature,Type" for column in columns: object_name, feature, data_type = column[:3] print "%s,%s,%s" % (object_name, feature, data_type) print "--- end measurements ---"
def print_measurements(options): """Print the measurements that would be output by a pipeline This function calls Pipeline.get_measurement_columns() to get the measurements that would be output by a pipeline. This can be used in a workflow tool or LIMS to find the outputs of a pipeline without running it. For instance, someone might want to integrate CellProfiler with Knime and write a Knime node that let the user specify a pipeline file. The node could then execute CellProfiler with the --measurements switch and display the measurements as node outputs. """ if options.pipeline_filename is None: raise ValueError("Can't print measurements, no pipeline file") import cellprofiler.pipeline pipeline = cellprofiler.pipeline.Pipeline() def callback(pipeline, event): if isinstance(event, cellprofiler.pipeline.LoadExceptionEvent): raise ValueError("Failed to load %s" % options.pipeline_filename) pipeline.add_listener(callback) pipeline.load(os.path.expanduser(options.pipeline_filename)) columns = pipeline.get_measurement_columns() print("--- begin measurements ---") print("Object,Feature,Type") for column in columns: object_name, feature, data_type = column[:3] print("%s,%s,%s" % (object_name, feature, data_type)) print("--- end measurements ---")