本文整理汇总了Python中ilastik.applets.batchProcessing.BatchProcessingApplet.parse_known_cmdline_args方法的典型用法代码示例。如果您正苦于以下问题:Python BatchProcessingApplet.parse_known_cmdline_args方法的具体用法?Python BatchProcessingApplet.parse_known_cmdline_args怎么用?Python BatchProcessingApplet.parse_known_cmdline_args使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ilastik.applets.batchProcessing.BatchProcessingApplet
的用法示例。
在下文中一共展示了BatchProcessingApplet.parse_known_cmdline_args方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PixelClassificationWorkflow
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
#.........这里部分代码省略.........
# see role constants, above
opDataSelection.DatasetRoles.setValue( PixelClassificationWorkflow.ROLE_NAMES )
self.featureSelectionApplet = self.createFeatureSelectionApplet()
self.pcApplet = self.createPixelClassificationApplet()
opClassify = self.pcApplet.topLevelOperator
self.dataExportApplet = PixelClassificationDataExportApplet(self, "Prediction Export")
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.PmapColors.connect( opClassify.PmapColors )
opDataExport.LabelNames.connect( opClassify.LabelNames )
opDataExport.WorkingDirectory.connect( opDataSelection.WorkingDirectory )
opDataExport.SelectionNames.setValue( self.EXPORT_NAMES )
# Expose for shell
self._applets.append(self.projectMetadataApplet)
self._applets.append(self.dataSelectionApplet)
self._applets.append(self.featureSelectionApplet)
self._applets.append(self.pcApplet)
self._applets.append(self.dataExportApplet)
self.dataExportApplet.prepare_for_entire_export = self.prepare_for_entire_export
self.dataExportApplet.post_process_entire_export = self.post_process_entire_export
self.batchProcessingApplet = BatchProcessingApplet(self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet)
self._applets.append(self.batchProcessingApplet)
if unused_args:
# We parse the export setting args first. All remaining args are considered input files by the input applet.
self._batch_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( unused_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( unused_args )
else:
self._batch_input_args = None
self._batch_export_args = None
if unused_args:
logger.warn("Unused command-line args: {}".format( unused_args ))
def createDataSelectionApplet(self):
"""
Can be overridden by subclasses, if they want to use
special parameters to initialize the DataSelectionApplet.
"""
data_instructions = "Select your input data using the 'Raw Data' tab shown on the right"
return DataSelectionApplet( self,
"Input Data",
"Input Data",
supportIlastik05Import=True,
instructionText=data_instructions )
def createFeatureSelectionApplet(self):
"""
Can be overridden by subclasses, if they want to return their own type of FeatureSelectionApplet.
NOTE: The applet returned here must have the same interface as the regular FeatureSelectionApplet.
(If it looks like a duck...)
"""
return FeatureSelectionApplet(self, "Feature Selection", "FeatureSelections", self.filter_implementation)
def createPixelClassificationApplet(self):
"""
Can be overridden by subclasses, if they want to return their own type of PixelClassificationApplet.
示例2: ObjectClassificationWorkflow
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
#.........这里部分代码省略.........
self._batch_input_args = None
self._export_args = None
self.batchProcessingApplet = None
if self.batch:
self.batchProcessingApplet = BatchProcessingApplet(self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet)
if unused_args:
# Additional export args (specific to the object classification workflow)
export_arg_parser = argparse.ArgumentParser()
export_arg_parser.add_argument( "--table_filename", help="The location to export the object feature/prediction CSV file.", required=False )
export_arg_parser.add_argument( "--export_object_prediction_img", action="store_true" )
export_arg_parser.add_argument( "--export_object_probability_img", action="store_true" )
export_arg_parser.add_argument( "--export_pixel_probability_img", action="store_true" )
# TODO: Support this, too, someday?
#export_arg_parser.add_argument( "--export_object_label_img", action="store_true" )
self._export_args, unused_args = export_arg_parser.parse_known_args(unused_args)
if self.input_types != 'raw' and self._export_args.export_pixel_probability_img:
raise RuntimeError("Invalid command-line argument: \n"\
"--export_pixel_probability_img' can only be used with the combined "\
"'Pixel Classification + Object Classification' workflow.")
if sum([self._export_args.export_object_prediction_img,
self._export_args.export_object_probability_img,
self._export_args.export_pixel_probability_img]) > 1:
raise RuntimeError("Invalid command-line arguments: Only one type classification output can be exported at a time.")
# We parse the export setting args first. All remaining args are considered input files by the input applet.
self._batch_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( unused_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( unused_args )
# For backwards compatibility, translate these special args into the standard syntax
if self._export_args.export_object_prediction_img:
self._batch_input_args.export_source = "Object Predictions"
if self._export_args.export_object_probability_img:
self._batch_input_args.export_source = "Object Probabilities"
if self._export_args.export_pixel_probability_img:
self._batch_input_args.export_source = "Pixel Probabilities"
self.blockwiseObjectClassificationApplet = BlockwiseObjectClassificationApplet(
self, "Blockwise Object Classification", "Blockwise Object Classification")
self._applets.append(self.objectExtractionApplet)
self._applets.append(self.objectClassificationApplet)
self._applets.append(self.dataExportApplet)
if self.batchProcessingApplet:
self._applets.append(self.batchProcessingApplet)
self._applets.append(self.blockwiseObjectClassificationApplet)
if unused_args:
logger.warn("Unused command-line args: {}".format( unused_args ))
@property
def applets(self):
return self._applets
@property
def imageNameListSlot(self):
return self.dataSelectionApplet.topLevelOperator.ImageName
示例3: EdgeTrainingWithMulticutWorkflow
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
class EdgeTrainingWithMulticutWorkflow(Workflow):
workflowName = "Edge Training With Multicut"
workflowDisplayName = "(BETA) Edge Training With Multicut"
workflowDescription = "A workflow based around training a classifier for merging superpixels and joining them via multicut."
defaultAppletIndex = 0 # show DataSelection by default
DATA_ROLE_RAW = 0
DATA_ROLE_PROBABILITIES = 1
DATA_ROLE_SUPERPIXELS = 2
DATA_ROLE_GROUNDTRUTH = 3
ROLE_NAMES = ['Raw Data', 'Probabilities', 'Superpixels', 'Groundtruth']
EXPORT_NAMES = ['Multicut Segmentation']
@property
def applets(self):
return self._applets
@property
def imageNameListSlot(self):
return self.dataSelectionApplet.topLevelOperator.ImageName
def __init__(self, shell, headless, workflow_cmdline_args, project_creation_workflow, *args, **kwargs):
self.stored_classifier = None
# Create a graph to be shared by all operators
graph = Graph()
super(EdgeTrainingWithMulticutWorkflow, self).__init__( shell, headless, workflow_cmdline_args, project_creation_workflow, graph=graph, *args, **kwargs)
self._applets = []
# -- DataSelection applet
#
self.dataSelectionApplet = DataSelectionApplet(self, "Input Data", "Input Data", forceAxisOrder=['zyxc', 'yxc'])
# Dataset inputs
opDataSelection = self.dataSelectionApplet.topLevelOperator
opDataSelection.DatasetRoles.setValue( self.ROLE_NAMES )
# -- Watershed applet
#
self.wsdtApplet = WsdtApplet(self, "DT Watershed", "DT Watershed")
# -- Edge training AND Multicut applet
#
self.edgeTrainingWithMulticutApplet = EdgeTrainingWithMulticutApplet(self, "Training and Multicut", "Training and Multicut")
opEdgeTrainingWithMulticut = self.edgeTrainingWithMulticutApplet.topLevelOperator
DEFAULT_FEATURES = { self.ROLE_NAMES[self.DATA_ROLE_RAW]: ['standard_edge_mean'] }
opEdgeTrainingWithMulticut.FeatureNames.setValue( DEFAULT_FEATURES )
# -- DataExport applet
#
self.dataExportApplet = DataExportApplet(self, "Data Export")
self.dataExportApplet.prepare_for_entire_export = self.prepare_for_entire_export
self.dataExportApplet.post_process_entire_export = self.post_process_entire_export
# Configure global DataExport settings
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.WorkingDirectory.connect( opDataSelection.WorkingDirectory )
opDataExport.SelectionNames.setValue( self.EXPORT_NAMES )
# -- BatchProcessing applet
#
self.batchProcessingApplet = BatchProcessingApplet(self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet)
# -- Expose applets to shell
self._applets.append(self.dataSelectionApplet)
self._applets.append(self.wsdtApplet)
self._applets.append(self.edgeTrainingWithMulticutApplet)
self._applets.append(self.dataExportApplet)
self._applets.append(self.batchProcessingApplet)
# -- Parse command-line arguments
# (Command-line args are applied in onProjectLoaded(), below.)
# Parse workflow-specific command-line args
parser = argparse.ArgumentParser()
parser.add_argument('--retrain', help="Re-train the classifier based on labels stored in the project file, and re-save.", action="store_true")
self.parsed_workflow_args, unused_args = parser.parse_known_args(workflow_cmdline_args)
if unused_args:
# Parse batch export/input args.
self._data_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( unused_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( unused_args )
else:
unused_args = None
self._batch_input_args = None
self._data_export_args = None
if unused_args:
logger.warn("Unused command-line args: {}".format( unused_args ))
if not self._headless:
shell.currentAppletChanged.connect( self.handle_applet_changed )
def prepareForNewLane(self, laneIndex):
"""
Overridden from Workflow base class.
Called immediately before a new lane is added to the workflow.
#.........这里部分代码省略.........
示例4: ConservationTrackingWorkflowBase
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
#.........这里部分代码省略.........
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.SelectionNames.setValue( ['Object-Identities', 'Tracking-Result', 'Merger-Result'] )
opDataExport.WorkingDirectory.connect( opDataSelection.WorkingDirectory )
# Extra configuration for object export table (as CSV table or HDF5 table)
opTracking = self.trackingApplet.topLevelOperator
self.dataExportApplet.set_exporting_operator(opTracking)
self.dataExportApplet.prepare_lane_for_export = self.prepare_lane_for_export
# configure export settings
# settings = {'file path': self.default_export_filename, 'compression': {}, 'file type': 'csv'}
# selected_features = ['Count', 'RegionCenter', 'RegionRadii', 'RegionAxes']
# opTracking.ExportSettings.setValue( (settings, selected_features) )
self._applets = []
self._applets.append(self.dataSelectionApplet)
if not self.fromBinary:
self._applets.append(self.thresholdTwoLevelsApplet)
self._applets.append(self.objectExtractionApplet)
if self.divisionDetectionApplet:
self._applets.append(self.divisionDetectionApplet)
self.batchProcessingApplet = BatchProcessingApplet(self, "Batch Processing", self.dataSelectionApplet, self.dataExportApplet)
self._applets.append(self.cellClassificationApplet)
self._applets.append(self.trackingApplet)
self._applets.append(self.dataExportApplet)
self._applets.append(self.batchProcessingApplet)
# Parse export and batch command-line arguments for headless mode
if workflow_cmdline_args:
self._data_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( workflow_cmdline_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( workflow_cmdline_args )
else:
unused_args = None
self._data_export_args = None
self._batch_input_args = None
if unused_args:
logger.warning("Unused command-line args: {}".format( unused_args ))
@property
def applets(self):
return self._applets
def _createDivisionDetectionApplet(self,selectedFeatures=dict()):
return ObjectClassificationApplet(workflow=self,
name="Division Detection (optional)",
projectFileGroupName="DivisionDetection",
selectedFeatures=selectedFeatures)
@property
def imageNameListSlot(self):
return self.dataSelectionApplet.topLevelOperator.ImageName
def prepareForNewLane(self, laneIndex):
# Store division and cell classifiers
if self.divisionDetectionApplet:
opDivisionClassification = self.divisionDetectionApplet.topLevelOperator
if opDivisionClassification.classifier_cache.Output.ready() and \
not opDivisionClassification.classifier_cache._dirty:
self.stored_division_classifier = opDivisionClassification.classifier_cache.Output.value
else:
示例5: StructuredTrackingWorkflowBase
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
#.........这里部分代码省略.........
self._applets.append(self.thresholdTwoLevelsApplet)
self._applets.append(self.trackingFeatureExtractionApplet)
self._applets.append(self.divisionDetectionApplet)
self.batchProcessingApplet = BatchProcessingApplet(self, "Batch Processing", self.dataSelectionApplet, self.dataExportTrackingApplet)
self._applets.append(self.cellClassificationApplet)
self._applets.append(self.objectExtractionApplet)
self._applets.append(self.annotationsApplet)
self._applets.append(self.trackingApplet)
self._applets.append(self.dataExportTrackingApplet)
if self.divisionDetectionApplet:
opDivDetection = self.divisionDetectionApplet.topLevelOperator
opDivDetection.SelectedFeatures.setValue(configConservation.selectedFeaturesDiv)
opDivDetection.LabelNames.setValue(['Not Dividing', 'Dividing'])
opDivDetection.AllowDeleteLabels.setValue(False)
opDivDetection.AllowAddLabel.setValue(False)
opDivDetection.EnableLabelTransfer.setValue(False)
opCellClassification = self.cellClassificationApplet.topLevelOperator
opCellClassification.SelectedFeatures.setValue(configConservation.selectedFeaturesObjectCount )
opCellClassification.SuggestedLabelNames.setValue( ['False Detection',] + [str(1) + ' Object'] + [str(i) + ' Objects' for i in range(2,10) ] )
opCellClassification.AllowDeleteLastLabelOnly.setValue(True)
opCellClassification.EnableLabelTransfer.setValue(False)
if workflow_cmdline_args:
if '--testFullAnnotations' in workflow_cmdline_args:
self.testFullAnnotations = True
else:
self.testFullAnnotations = False
self._data_export_args, unused_args = self.dataExportTrackingApplet.parse_known_cmdline_args( workflow_cmdline_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( workflow_cmdline_args )
else:
unused_args = None
self._data_export_args = None
self._batch_input_args = None
self.testFullAnnotations = False
if unused_args:
logger.warning("Unused command-line args: {}".format( unused_args ))
def _pluginExportFunc(self, lane_index, filename, exportPlugin, checkOverwriteFiles, plugArgsSlot) -> int:
return (
self.trackingApplet
.topLevelOperator
.getLane(lane_index)
.exportPlugin(
filename,
exportPlugin,
checkOverwriteFiles,
additionalPluginArgumentsSlot
)
)
def connectLane(self, laneIndex):
opData = self.dataSelectionApplet.topLevelOperator.getLane(laneIndex)
opObjExtraction = self.objectExtractionApplet.topLevelOperator.getLane(laneIndex)
opTrackingFeatureExtraction = self.trackingFeatureExtractionApplet.topLevelOperator.getLane(laneIndex)
opAnnotations = self.annotationsApplet.topLevelOperator.getLane(laneIndex)
if not self.fromBinary:
opTwoLevelThreshold = self.thresholdTwoLevelsApplet.topLevelOperator.getLane(laneIndex)
示例6: NNClassificationWorkflow
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
class NNClassificationWorkflow(Workflow):
"""
Workflow for the Neural Network Classification Applet
"""
workflowName = "Neural Network Classification"
workflowDescription = "This is obviously self-explanatory."
defaultAppletIndex = 0 # show DataSelection by default
DATA_ROLE_RAW = 0
ROLE_NAMES = ['Raw Data']
EXPORT_NAMES = ['Probabilities']
@property
def applets(self):
"""
Return the list of applets that are owned by this workflow
"""
return self._applets
@property
def imageNameListSlot(self):
"""
Return the "image name list" slot, which lists the names of
all image lanes (i.e. files) currently loaded by the workflow
"""
return self.dataSelectionApplet.topLevelOperator.ImageName
def __init__(self, shell, headless, workflow_cmdline_args, project_creation_args, *args, **kwargs):
# Create a graph to be shared by all operators
graph = Graph()
super(NNClassificationWorkflow, self).__init__(shell, headless, workflow_cmdline_args, project_creation_args, graph=graph, *args, **kwargs)
self._applets = []
self._workflow_cmdline_args = workflow_cmdline_args
# Parse workflow-specific command-line args
parser = argparse.ArgumentParser()
# parser.add_argument('--print-labels-by-slice', help="Print the number of labels for each Z-slice of each image.", action="store_true")
# Parse the creation args: These were saved to the project file when this project was first created.
parsed_creation_args, unused_args = parser.parse_known_args(project_creation_args)
# Parse the cmdline args for the current session.
parsed_args, unused_args = parser.parse_known_args(workflow_cmdline_args)
# self.print_labels_by_slice = parsed_args.print_labels_by_slice
data_instructions = "Select your input data using the 'Raw Data' tab shown on the right.\n\n"\
"Power users: Optionally use the 'Prediction Mask' tab to supply a binary image that tells ilastik where it should avoid computations you don't need."
# Applets for training (interactive) workflow
self.dataSelectionApplet = self.createDataSelectionApplet()
opDataSelection = self.dataSelectionApplet.topLevelOperator
# see role constants, above
opDataSelection.DatasetRoles.setValue(NNClassificationWorkflow.ROLE_NAMES)
self.nnClassificationApplet = NNClassApplet(self, "NNClassApplet")
self.dataExportApplet = NNClassificationDataExportApplet(self, 'Data Export')
# Configure global DataExport settings
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.WorkingDirectory.connect(opDataSelection.WorkingDirectory)
opDataExport.SelectionNames.setValue(self.EXPORT_NAMES)
self.batchProcessingApplet = BatchProcessingApplet(self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet)
# Expose for shell
self._applets.append(self.dataSelectionApplet)
self._applets.append(self.nnClassificationApplet)
self._applets.append(self.dataExportApplet)
self._applets.append(self.batchProcessingApplet)
if unused_args:
# We parse the export setting args first. All remaining args are considered input files by the input applet.
self._batch_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args(unused_args)
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args(unused_args)
else:
self._batch_input_args = None
self._batch_export_args = None
if unused_args:
logger.warn("Unused command-line args: {}".format(unused_args))
def createDataSelectionApplet(self):
"""
Can be overridden by subclasses, if they want to use
special parameters to initialize the DataSelectionApplet.
"""
data_instructions = "Select your input data using the 'Raw Data' tab shown on the right"
return DataSelectionApplet(self,
"Input Data",
"Input Data",
supportIlastik05Import=True,
instructionText=data_instructions)
def connectLane(self, laneIndex):
#.........这里部分代码省略.........
示例7: CountingWorkflow
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
class CountingWorkflow(Workflow):
workflowName = "Cell Density Counting"
workflowDescription = "This is obviously self-explanatory."
defaultAppletIndex = 1 # show DataSelection by default
def __init__(self, shell, headless, workflow_cmdline_args, project_creation_args, appendBatchOperators=True, *args, **kwargs):
graph = kwargs['graph'] if 'graph' in kwargs else Graph()
if 'graph' in kwargs: del kwargs['graph']
super( CountingWorkflow, self ).__init__( shell, headless, workflow_cmdline_args, project_creation_args, graph=graph, *args, **kwargs )
self.stored_classifer = None
# Parse workflow-specific command-line args
parser = argparse.ArgumentParser()
parser.add_argument("--csv-export-file", help="Instead of exporting prediction density images, export total counts to the given csv path.")
self.parsed_counting_workflow_args, unused_args = parser.parse_known_args(workflow_cmdline_args)
######################
# Interactive workflow
######################
self.projectMetadataApplet = ProjectMetadataApplet()
self.dataSelectionApplet = DataSelectionApplet(self,
"Input Data",
"Input Data" )
opDataSelection = self.dataSelectionApplet.topLevelOperator
role_names = ['Raw Data']
opDataSelection.DatasetRoles.setValue( role_names )
self.featureSelectionApplet = FeatureSelectionApplet(self,
"Feature Selection",
"FeatureSelections")
self.countingApplet = CountingApplet(workflow=self)
opCounting = self.countingApplet.topLevelOperator
self.dataExportApplet = CountingDataExportApplet(self, "Density Export", opCounting)
# Customization hooks
self.dataExportApplet.prepare_for_entire_export = self.prepare_for_entire_export
self.dataExportApplet.post_process_lane_export = self.post_process_lane_export
self.dataExportApplet.post_process_entire_export = self.post_process_entire_export
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.PmapColors.connect(opCounting.PmapColors)
opDataExport.LabelNames.connect(opCounting.LabelNames)
opDataExport.UpperBound.connect(opCounting.UpperBound)
opDataExport.WorkingDirectory.connect(opDataSelection.WorkingDirectory)
opDataExport.SelectionNames.setValue( ['Probabilities'] )
self._applets = []
self._applets.append(self.projectMetadataApplet)
self._applets.append(self.dataSelectionApplet)
self._applets.append(self.featureSelectionApplet)
self._applets.append(self.countingApplet)
self._applets.append(self.dataExportApplet)
self._batch_input_args = None
self._batch_export_args = None
if appendBatchOperators:
self.batchProcessingApplet = BatchProcessingApplet( self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet )
self._applets.append(self.batchProcessingApplet)
if unused_args:
# We parse the export setting args first. All remaining args are considered input files by the input applet.
self._batch_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( unused_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( unused_args )
if unused_args:
logger.warn("Unused command-line args: {}".format( unused_args ))
@property
def applets(self):
return self._applets
@property
def imageNameListSlot(self):
return self.dataSelectionApplet.topLevelOperator.ImageName
def prepareForNewLane(self, laneIndex):
"""
Overridden from Workflow base class.
Called immediately before a new lane is added to the workflow.
"""
# When the new lane is added, dirty notifications will propagate throughout the entire graph.
# This means the classifier will be marked 'dirty' even though it is still usable.
# Before that happens, let's store the classifier, so we can restore it at the end of connectLane(), below.
opCounting = self.countingApplet.topLevelOperator
if opCounting.classifier_cache.Output.ready() and \
not opCounting.classifier_cache._dirty:
self.stored_classifer = opCounting.classifier_cache.Output.value
else:
self.stored_classifer = None
def handleNewLanesAdded(self):
"""
Overridden from Workflow base class.
#.........这里部分代码省略.........
示例8: NewAutocontextWorkflowBase
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
class NewAutocontextWorkflowBase(Workflow):
workflowName = "New Autocontext Base"
defaultAppletIndex = 0 # show DataSelection by default
DATA_ROLE_RAW = 0
DATA_ROLE_PREDICTION_MASK = 1
# First export names must match these for the export GUI, because we re-use the ordinary PC gui
# (See PixelClassificationDataExportGui.)
EXPORT_NAMES_PER_STAGE = ['Probabilities', 'Simple Segmentation', 'Uncertainty', 'Features', 'Labels', 'Input']
@property
def applets(self):
return self._applets
@property
def imageNameListSlot(self):
return self.dataSelectionApplet.topLevelOperator.ImageName
def __init__(self, shell, headless, workflow_cmdline_args, project_creation_args, n_stages, *args, **kwargs):
"""
n_stages: How many iterations of feature selection and pixel classification should be inserted into the workflow.
All other params are just as in PixelClassificationWorkflow
"""
# Create a graph to be shared by all operators
graph = Graph()
super( NewAutocontextWorkflowBase, self ).__init__( shell, headless, workflow_cmdline_args, project_creation_args, graph=graph, *args, **kwargs )
self.stored_classifers = []
self._applets = []
self._workflow_cmdline_args = workflow_cmdline_args
# Parse workflow-specific command-line args
parser = argparse.ArgumentParser()
parser.add_argument('--retrain', help="Re-train the classifier based on labels stored in project file, and re-save.", action="store_true")
# Parse the creation args: These were saved to the project file when this project was first created.
parsed_creation_args, unused_args = parser.parse_known_args(project_creation_args)
# Parse the cmdline args for the current session.
parsed_args, unused_args = parser.parse_known_args(workflow_cmdline_args)
self.retrain = parsed_args.retrain
data_instructions = "Select your input data using the 'Raw Data' tab shown on the right.\n\n"\
"Power users: Optionally use the 'Prediction Mask' tab to supply a binary image that tells ilastik where it should avoid computations you don't need."
self.dataSelectionApplet = self.createDataSelectionApplet()
opDataSelection = self.dataSelectionApplet.topLevelOperator
# see role constants, above
role_names = ['Raw Data', 'Prediction Mask']
opDataSelection.DatasetRoles.setValue( role_names )
self.featureSelectionApplets = []
self.pcApplets = []
for i in range(n_stages):
self.featureSelectionApplets.append( self.createFeatureSelectionApplet(i) )
self.pcApplets.append( self.createPixelClassificationApplet(i) )
opFinalClassify = self.pcApplets[-1].topLevelOperator
# If *any* stage enters 'live update' mode, make sure they all enter live update mode.
def sync_freeze_predictions_settings( slot, *args ):
freeze_predictions = slot.value
for pcApplet in self.pcApplets:
pcApplet.topLevelOperator.FreezePredictions.setValue( freeze_predictions )
for pcApplet in self.pcApplets:
pcApplet.topLevelOperator.FreezePredictions.notifyDirty( sync_freeze_predictions_settings )
self.dataExportApplet = PixelClassificationDataExportApplet(self, "Prediction Export")
opDataExport = self.dataExportApplet.topLevelOperator
opDataExport.PmapColors.connect( opFinalClassify.PmapColors )
opDataExport.LabelNames.connect( opFinalClassify.LabelNames )
opDataExport.WorkingDirectory.connect( opDataSelection.WorkingDirectory )
self.EXPORT_NAMES = []
for stage_index in reversed(list(range(n_stages))):
self.EXPORT_NAMES += ["{} Stage {}".format( name, stage_index+1 ) for name in self.EXPORT_NAMES_PER_STAGE]
# And finally, one last item for *all* probabilities from all stages.
self.EXPORT_NAMES += ["Probabilities All Stages"]
opDataExport.SelectionNames.setValue( self.EXPORT_NAMES )
# Expose for shell
self._applets.append(self.dataSelectionApplet)
self._applets += itertools.chain(*list(zip(self.featureSelectionApplets, self.pcApplets)))
self._applets.append(self.dataExportApplet)
self.dataExportApplet.prepare_for_entire_export = self.prepare_for_entire_export
self.dataExportApplet.post_process_entire_export = self.post_process_entire_export
self.batchProcessingApplet = BatchProcessingApplet(self,
"Batch Processing",
self.dataSelectionApplet,
self.dataExportApplet)
self._applets.append(self.batchProcessingApplet)
if unused_args:
# We parse the export setting args first. All remaining args are considered input files by the input applet.
self._batch_export_args, unused_args = self.dataExportApplet.parse_known_cmdline_args( unused_args )
#.........这里部分代码省略.........
示例9: StructuredTrackingWorkflowBase
# 需要导入模块: from ilastik.applets.batchProcessing import BatchProcessingApplet [as 别名]
# 或者: from ilastik.applets.batchProcessing.BatchProcessingApplet import parse_known_cmdline_args [as 别名]
#.........这里部分代码省略.........
self._applets = []
self._applets.append(self.dataSelectionApplet)
if not self.fromBinary:
self._applets.append(self.thresholdTwoLevelsApplet)
self._applets.append(self.trackingFeatureExtractionApplet)
self._applets.append(self.divisionDetectionApplet)
self.batchProcessingApplet = BatchProcessingApplet(self, "Batch Processing", self.dataSelectionApplet, self.dataExportTrackingApplet)
self._applets.append(self.cellClassificationApplet)
self._applets.append(self.cropSelectionApplet)
self._applets.append(self.objectExtractionApplet)
self._applets.append(self.annotationsApplet)
# self._applets.append(self.dataExportAnnotationsApplet)
self._applets.append(self.trackingApplet)
self._applets.append(self.dataExportTrackingApplet)
if self.divisionDetectionApplet:
opDivDetection = self.divisionDetectionApplet.topLevelOperator
opDivDetection.SelectedFeatures.setValue(configConservation.selectedFeaturesDiv)
opDivDetection.LabelNames.setValue(['Not Dividing', 'Dividing'])
opDivDetection.AllowDeleteLabels.setValue(False)
opDivDetection.AllowAddLabel.setValue(False)
opDivDetection.EnableLabelTransfer.setValue(False)
opCellClassification = self.cellClassificationApplet.topLevelOperator
opCellClassification.SelectedFeatures.setValue(configConservation.selectedFeaturesObjectCount )
opCellClassification.SuggestedLabelNames.setValue( ['False Detection',] + [str(1) + ' Object'] + [str(i) + ' Objects' for i in range(2,10) ] )
opCellClassification.AllowDeleteLastLabelOnly.setValue(True)
opCellClassification.EnableLabelTransfer.setValue(False)
if workflow_cmdline_args:
self._data_export_args, unused_args = self.dataExportTrackingApplet.parse_known_cmdline_args( workflow_cmdline_args )
self._batch_input_args, unused_args = self.batchProcessingApplet.parse_known_cmdline_args( workflow_cmdline_args )
else:
unused_args = None
self._data_export_args = None
self._batch_input_args = None
if unused_args:
logger.warn("Unused command-line args: {}".format( unused_args ))
def connectLane(self, laneIndex):
opData = self.dataSelectionApplet.topLevelOperator.getLane(laneIndex)
opObjExtraction = self.objectExtractionApplet.topLevelOperator.getLane(laneIndex)
opTrackingFeatureExtraction = self.trackingFeatureExtractionApplet.topLevelOperator.getLane(laneIndex)
opAnnotations = self.annotationsApplet.topLevelOperator.getLane(laneIndex)
if not self.fromBinary:
opTwoLevelThreshold = self.thresholdTwoLevelsApplet.topLevelOperator.getLane(laneIndex)
# opDataAnnotationsExport = self.dataExportAnnotationsApplet.topLevelOperator.getLane(laneIndex)
opCropSelection = self.cropSelectionApplet.topLevelOperator.getLane(laneIndex)
opStructuredTracking = self.trackingApplet.topLevelOperator.getLane(laneIndex)
opDataTrackingExport = self.dataExportTrackingApplet.topLevelOperator.getLane(laneIndex)
## Connect operators ##
op5Raw = OpReorderAxes(parent=self)
op5Raw.AxisOrder.setValue("txyzc")
op5Raw.Input.connect(opData.ImageGroup[0])
opDivDetection = self.divisionDetectionApplet.topLevelOperator.getLane(laneIndex)
opCellClassification = self.cellClassificationApplet.topLevelOperator.getLane(laneIndex)
if not self.fromBinary: