from dnafiber.trainee import Trainee from dnafiber.postprocess.fiber import FiberProps import pandas as pd def _get_model(revision, device="cuda"): if revision is None: model = Trainee.from_pretrained( "ClementP/DeepFiberQ", arch="unet", encoder_name="mit_b0" ) else: model = Trainee.from_pretrained( "ClementP/DeepFiberQ", revision=revision, ) return model.eval().to(device) def format_results(results: list[FiberProps], pixel_size: float) -> pd.DataFrame: """ Format the results for display in the UI. """ results = [fiber for fiber in results if fiber.is_valid] all_results = dict( FirstAnalog=[], SecondAnalog=[], length=[], ratio=[], fiber_type=[] ) all_results["FirstAnalog"].extend([fiber.red * pixel_size for fiber in results]) all_results["SecondAnalog"].extend([fiber.green * pixel_size for fiber in results]) all_results["length"].extend( [fiber.red * pixel_size + fiber.green * pixel_size for fiber in results] ) all_results["ratio"].extend([fiber.ratio for fiber in results]) all_results["fiber_type"].extend([fiber.fiber_type for fiber in results]) return pd.DataFrame.from_dict(all_results) MODELS_ZOO = { "Ensemble": "ensemble", "SegFormer MiT-B4": "segformer_mit_b4", "SegFormer MiT-B2": "segformer_mit_b2", "U-Net SE-ResNet50": "unet_se_resnet50", }