import os from ij import IJ from ij.plugin.frame import RoiManager from fiji.plugin.trackmate.pairing.scripting import PairTrackMate from fiji.plugin.trackmate.pairing.method import AverageTrackPositionPairing from fiji.plugin.trackmate import Settings from fiji.plugin.trackmate.detection import HessianDetectorFactory from fiji.plugin.trackmate.tracking.sparselap import SimpleSparseLAPTrackerFactory from fiji.plugin.trackmate.tracking import LAPUtils # Where the images and the ROI files are. source_folder = '/Users/tinevez/Development/TrackMateWS/Pairing-TrackMate/samples/' # Prepare the settings for tracking. # Detection. detector_settings_ch1 = { 'TARGET_CHANNEL' : 1, 'RADIUS' : 0.2, # m 'RADIUS_Z' : 0.6, # m 'THRESHOLD' : 0.95, 'DO_SUBPIXEL_LOCALIZATION' : True, 'NORMALIZE' : True, } detector_settings_ch2 = { 'TARGET_CHANNEL' : 2, 'RADIUS' : 0.2, # m 'RADIUS_Z' : 0.6, # m 'THRESHOLD' : 0.95, 'DO_SUBPIXEL_LOCALIZATION' : True, 'NORMALIZE' : True, } # Tracking. tracker_settings_ch1 = LAPUtils.getDefaultLAPSettingsMap() tracker_settings_ch1['LINKING_MAX_DISTANCE'] = 1. # m tracker_settings_ch1['GAP_CLOSING_MAX_DISTANCE'] = 1. # m tracker_settings_ch1['MAX_FRAME_GAP'] = 2 tracker_settings_ch2 = LAPUtils.getDefaultLAPSettingsMap() tracker_settings_ch2['LINKING_MAX_DISTANCE'] = 1. # m tracker_settings_ch2['GAP_CLOSING_MAX_DISTANCE'] = 1. # m tracker_settings_ch2['MAX_FRAME_GAP'] = 2 # Pairing method method = AverageTrackPositionPairing() max_pair_distance = 1. # m # Loop over each TIF files. for im_file in os.listdir(source_folder): if not im_file.endswith('.tif'): continue im_path = os.path.join(source_folder, im_file) print('\nProcessing %s' % im_path) print(' - Loading image.') imp = IJ.openImage(im_path) # Look for the corresponding ROIs, stored as a ZIP file. roi_file = os.path.splitext(im_file)[0]+'.zip' roi_path = os.path.join(source_folder, roi_file) roiManager = RoiManager.getRoiManager() if roiManager: roiManager.close() if not os.path.exists(roi_path): print(' - Could not find matching ROI file %s. Will process the whole image.' % roi_file) else: print(' - Opened ROI file %s' % roi_file) IJ.open(roi_path) # Prepare settings objects. settings_ch1 = Settings(imp) settings_ch1.detectorFactory = HessianDetectorFactory() settings_ch1.detectorSettings = detector_settings_ch1 settings_ch1.trackerFactory = SimpleSparseLAPTrackerFactory() settings_ch1.trackerSettings = tracker_settings_ch1 settings_ch2 = Settings(imp) settings_ch2.detectorFactory = HessianDetectorFactory() settings_ch2.detectorSettings = detector_settings_ch2 settings_ch2.trackerFactory = SimpleSparseLAPTrackerFactory() settings_ch2.trackerSettings = tracker_settings_ch2 # Perform tracking and pairing. print(' - Executing tracking and pairing.') PairTrackMate.process(imp, settings_ch1, settings_ch2, method, max_pair_distance) print(' - Done.') print('\nFinished batch pairing in folder %s' % source_folder)