BioImageIT API

BioImageIT allows you to create and execute workflows in pure Python.

Here is an example usage:

from pathlib import Path
from PyFlow.WorkflowManager import WorkflowManager

# Initialize the workflow manager with the path of your workflow
workflowManager = WorkflowManager(Path('/Users/amasson/BioImageIT/DemoWorkflow'))

# Create nodes

listFiles = workflowManager.initializeNode('ListFiles')

binaryThreshold = workflowManager.initializeNode('binary_threshold')
connectedComponents = workflowManager.initializeNode('connected_components')
labelStatistics = workflowManager.initializeNode('label_statistics')

extractChannel0 = workflowManager.initializeNode('extract_channel')
extractChannel1 = workflowManager.initializeNode('extract_channel')

concatDataFrames = workflowManager.initializeNode('Concat')

subtractImages = workflowManager.initializeNode('subtract_images')

atlas = workflowManager.initializeNode('atlas')

# Setup connections

workflowManager.setupConnections()

workflowManager.connect(listFiles, binaryThreshold)
workflowManager.connect(binaryThreshold, connectedComponents)
workflowManager.connect(connectedComponents, labelStatistics)

workflowManager.connect(listFiles, extractChannel0)
workflowManager.connect(listFiles, extractChannel1)

workflowManager.connect(extractChannel0, concatDataFrames)
workflowManager.connect(extractChannel1, concatDataFrames)

workflowManager.connect(concatDataFrames, subtractImages)
workflowManager.connect(subtractImages, atlas)

# Set node parameters

listFiles.parameters['inputs']['folderPath']['value'] = '/Users/amasson/Documents/DemoData/CellPose/CellPoseExamples'
listFiles.parameters['inputs']['columnName']['value'] = 'CellPoseExamples'
binaryThreshold.parameters['inputs']['channel']['value'] = 0
binaryThreshold.parameters['inputs']['lowerThreshold']['value'] = 0
binaryThreshold.parameters['inputs']['upperThreshold']['value'] = 130
binaryThreshold.parameters['inputs']['insideValue']['value'] = 255
binaryThreshold.parameters['inputs']['outsideValue']['value'] = 0
labelStatistics.parameters['inputs']['minSize']['value'] = 350
labelStatistics.parameters['inputs']['maxSize']['value'] = 500
extractChannel0.parameters['inputs']['channel']['value'] = 0
extractChannel1.parameters['inputs']['channel']['value'] = 1

# Execute the workflow

workflowManager.computeNodes()
workflowManager.executeWorkflow()