def _run_export_with_empty_batch_lane(self, role_input_paths, batch_lane_index, template_infos, progress_callback): """ Configure the fresh batch lane with the given input files, and export the results. """ assert role_input_paths[0], "At least one file must be provided for each dataset (the first role)." opDataSelectionBatchLaneView = self.dataSelectionApplet.topLevelOperator.getLane( batch_lane_index ) # Apply new settings for each role for role_index, path_for_role in enumerate(role_input_paths): if not path_for_role: continue if template_infos[role_index]: info = copy.copy(template_infos[role_index]) else: info = DatasetInfo() # Override the template settings with the current filepath. default_info = DataSelectionApplet.create_default_headless_dataset_info(path_for_role) info.filePath = default_info.filePath info.location = default_info.location info.nickname = default_info.nickname # Apply to the data selection operator opDataSelectionBatchLaneView.DatasetGroup[role_index].setValue(info) # Make sure nothing went wrong opDataExportBatchlaneView = self.dataExportApplet.topLevelOperator.getLane( batch_lane_index ) assert opDataExportBatchlaneView.ImageToExport.ready() assert opDataExportBatchlaneView.ExportPath.ready() # New lanes were added. # Give the workflow a chance to restore anything that was unecessarily invalidated (e.g. classifiers) self.workflow.handleNewLanesAdded() # Call customization hook self.dataExportApplet.prepare_lane_for_export(batch_lane_index) # Finally, run the export logger.info("Exporting to {}".format( opDataExportBatchlaneView.ExportPath.value )) opDataExportBatchlaneView.progressSignal.subscribe(progress_callback) opDataExportBatchlaneView.run_export() # Call customization hook self.dataExportApplet.post_process_lane_export(batch_lane_index)
def append_lane(workflow, input_filepath, axisorder=None): # Sanity checks assert isinstance(workflow, PixelClassificationWorkflow) opPixelClassification = workflow.pcApplet.topLevelOperator assert opPixelClassification.Classifier.ready() # If the filepath is a globstring, convert the stack to h5 input_filepath = DataSelectionApplet.convertStacksToH5( [input_filepath], TMP_DIR )[0] info = DatasetInfo() info.location = DatasetInfo.Location.FileSystem info.filePath = input_filepath comp = PathComponents(input_filepath) # Convert all (non-url) paths to absolute # (otherwise they are relative to the project file, which probably isn't what the user meant) if not isUrl(input_filepath): comp.externalPath = os.path.abspath(comp.externalPath) info.filePath = comp.totalPath() info.nickname = comp.filenameBase if axisorder: info.axistags = vigra.defaultAxistags(axisorder) logger.debug( "adding lane: {}".format( info ) ) opDataSelection = workflow.dataSelectionApplet.topLevelOperator # Add a lane num_lanes = len( opDataSelection.DatasetGroup )+1 logger.debug( "num_lanes: {}".format( num_lanes ) ) opDataSelection.DatasetGroup.resize( num_lanes ) # Configure it. role_index = 0 # raw data opDataSelection.DatasetGroup[-1][role_index].setValue( info ) # Sanity check assert len(opPixelClassification.InputImages) == num_lanes return opPixelClassification
def impl(): projFilePath = self.project_file shell = self.shell # New project shell.createAndLoadNewProject(projFilePath, self.workflowClass()) workflow = shell.projectManager.workflow # Add our input files: opDataSelection = workflow.dataSelectionApplet.topLevelOperator opDataSelection.DatasetGroup.resize(1) info_raw = DatasetInfo() info_raw.filePath = self.sample_data_raw opDataSelection.DatasetGroup[0][0].setValue(info_raw) info_prob = DatasetInfo() info_prob.filePath = self.sample_data_prob info_raw.nickname = 'test_data' opDataSelection.DatasetGroup[0][1].setValue(info_prob) # Save shell.projectManager.saveProject()
def impl(): projFilePath = self.project_file shell = self.shell # New project shell.createAndLoadNewProject(projFilePath, self.workflowClass()) workflow = shell.projectManager.workflow # Add our input files: opDataSelection = workflow.dataSelectionApplet.topLevelOperator opDataSelection.DatasetGroup.resize(1) info_raw = DatasetInfo() info_raw.filePath = self.sample_data_raw opDataSelection.DatasetGroup[0][0].setValue(info_raw) info_prob = DatasetInfo() info_prob.filePath = self.sample_data_prob info_raw.nickname = 'test_data' opDataSelection.DatasetGroup[0][1].setValue(info_prob) # Save shell.projectManager.saveProject()
def append_lane(workflow, input_filepath, axisorder=None): """ Add a lane to the project file for the given input file. If axisorder is given, override the default axisorder for the file and force the project to use the given one. Globstrings are supported, in which case the files are converted to HDF5 first. """ # If the filepath is a globstring, convert the stack to h5 input_filepath = DataSelectionApplet.convertStacksToH5( [input_filepath], tempfile.mkdtemp() )[0] info = DatasetInfo() info.location = DatasetInfo.Location.FileSystem info.filePath = input_filepath comp = PathComponents(input_filepath) # Convert all (non-url) paths to absolute # (otherwise they are relative to the project file, which probably isn't what the user meant) if not isUrl(input_filepath): comp.externalPath = os.path.abspath(comp.externalPath) info.filePath = comp.totalPath() info.nickname = comp.filenameBase if axisorder: info.axistags = vigra.defaultAxistags(axisorder) logger.debug( "adding lane: {}".format( info ) ) opDataSelection = workflow.dataSelectionApplet.topLevelOperator # Add a lane num_lanes = len( opDataSelection.DatasetGroup )+1 logger.debug( "num_lanes: {}".format( num_lanes ) ) opDataSelection.DatasetGroup.resize( num_lanes ) # Configure it. role_index = 0 # raw data opDataSelection.DatasetGroup[-1][role_index].setValue( info )