| 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", | |
| } |