Source code for SCTrack.track
# coding=utf-8
from __future__ import annotations
import logging
import os.path
import time
import numpy as np
from SCTrack import reclassification
from SCTrack.utils import mask_to_json
[docs]def start_track(fannotation: str | dict, fout, basename, track_range=None, fimage=None, fbf=None,
export_visualization=True,
track_to_json=True):
"""
:param track_range: Track frame number range
:param visualize_background_image: track background image
:param basename:
:param fannotation: segmentation output result, json file or dict
:param fout: Tracking output folder path
:param fimage: raw image path, can be empty
:param fbf: Bright field image path, can be empty
:param export_visualization: Whether to export the tracking visualization file, if yes, it will export a multi-frame tif file
:param track_to_json: Whether to write the tracking result into fjson, if yes, a new json file will be generated
:return: None
"""
if type(fannotation) is str:
if not fannotation.endswith('.json'):
logging.info('convert mask to annotation file...')
annotation = mask_to_json(fannotation, xrange=track_range)
else:
annotation = fannotation
else:
annotation = fannotation
result_save_path = os.path.join(fout, 'tracking_output')
if not os.path.exists(result_save_path):
os.makedirs(result_save_path)
reclassification.run(annotation=annotation, output_dir=result_save_path, track_range=track_range, dic=fbf,
mcy=fimage,
save_visualize=export_visualization, visualize_background_image=fimage,
track_to_json=track_to_json, basename=basename)
if __name__ == '__main__':
# i = 8
# annotation = rf"G:\paper\test\Data{i}\SEG.tif"
# mcy_img = rf"G:\paper\test\Data{i}\01.tif"
# start_track(annotation, rf"G:\paper\test\Data{i}", 'mcy', 1000,
# mcy_img)
image = r"G:\paper\evaluate_data\evaluate_for_tracking\parameter_test_incorrect\!test_data\rpe19.tif"
annotation = r"G:\paper\evaluate_data\evaluate_for_tracking\parameter_test_incorrect\!test_data\result.json"
outputdir = fr"G:\paper\evaluate_data\evaluate_for_tracking\parameter_test_incorrect\GAP_WINDOW_LEN\10"
start_track(annotation, outputdir, 'rpe19', None, image, export_visualization=False)
# break
# annotation = r"G:\杂项\example\example-annotation.json"
# mcy_img = r"G:\杂项\example\example-image.tif"
# dic_img = r'G:\杂项\example\example-bf.tif'
# start_track(annotation, r"G:\杂项\example", 'mcy', 30,
# mcy_img)