annotate main.py @ 5:37b9ead209da draft default tip

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/bioimaging commit 399a62ba78a6a3d7885c7df03cc7de37e1a7ec6f
author bgruening
date Tue, 15 Apr 2025 15:39:20 +0000
parents 2b61d8fcfa52
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
1 """
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
2 Predict images using AI models from BioImage.IO
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
3 """
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
4
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
5 import argparse
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
6
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
7 import imageio
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
8 import numpy as np
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
9 import torch
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
10 import torch.nn.functional as F
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
11
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
12
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
13 def dynamic_resize(image: torch.Tensor, target_shape: tuple):
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
14 """
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
15 Resize an input tensor dynamically to the target shape.
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
16
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
17 Parameters:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
18 - image: Input tensor with shape (C, D1, D2, ..., DN) (any number of spatial dims)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
19 - target_shape: Tuple specifying the target shape (C', D1', D2', ..., DN')
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
20
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
21 Returns:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
22 - Resized tensor with target shape target_shape.
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
23 """
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
24 # Extract input shape
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
25 input_shape = image.shape
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
26 num_dims = len(input_shape) # Includes channels and spatial dimensions
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
27
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
28 # Ensure target shape matches the number of dimensions
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
29 if len(target_shape) != num_dims:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
30 raise ValueError(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
31 f"Target shape {target_shape} must match input dimensions {num_dims}"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
32 )
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
33
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
34 # Extract target channels and spatial sizes
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
35 target_channels = target_shape[0] # First element is the target channel count
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
36 target_spatial_size = target_shape[1:] # Remaining elements are spatial dimensions
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
37
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
38 # Add batch dim (N=1) for resizing
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
39 image = image.unsqueeze(0)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
40
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
41 # Choose the best interpolation mode based on dimensionality
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
42 if num_dims == 4:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
43 interp_mode = "trilinear"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
44 elif num_dims == 3:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
45 interp_mode = "bilinear"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
46 elif num_dims == 2:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
47 interp_mode = "bicubic"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
48 else:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
49 interp_mode = "nearest"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
50
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
51 # Resize spatial dimensions dynamically
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
52 image = F.interpolate(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
53 image, size=target_spatial_size, mode=interp_mode, align_corners=False
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
54 )
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
55
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
56 # Adjust channels if necessary
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
57 current_channels = image.shape[1]
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
58
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
59 if target_channels > current_channels:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
60 # Expand channels by repeating existing ones
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
61 expand_factor = target_channels // current_channels
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
62 remainder = target_channels % current_channels
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
63 image = image.repeat(1, expand_factor, *[1] * (num_dims - 1))
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
64
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
65 if remainder > 0:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
66 extra_channels = image[
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
67 :, :remainder, ...
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
68 ] # Take the first few channels to match target
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
69 image = torch.cat([image, extra_channels], dim=1)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
70
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
71 elif target_channels < current_channels:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
72 # Reduce channels by averaging adjacent ones
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
73 image = image[:, :target_channels, ...] # Simply slice to reduce channels
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
74 return image.squeeze(0) # Remove batch dimension before returning
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
75
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
76
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
77 if __name__ == "__main__":
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
78 arg_parser = argparse.ArgumentParser()
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
79 arg_parser.add_argument(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
80 "-im", "--imaging_model", required=True, help="Input BioImage model"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
81 )
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
82 arg_parser.add_argument(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
83 "-ii", "--image_file", required=True, help="Input image file"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
84 )
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
85 arg_parser.add_argument(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
86 "-is", "--image_size", required=True, help="Input image file's size"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
87 )
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
88 arg_parser.add_argument(
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
89 "-ia", "--image_axes", required=True, help="Input image file's axes"
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
90 )
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
91
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
92 # get argument values
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
93 args = vars(arg_parser.parse_args())
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
94 model_path = args["imaging_model"]
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
95 input_image_path = args["image_file"]
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
96 input_size = args["image_size"]
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
97
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
98 # load all embedded images in TIF file
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
99 test_data = imageio.v3.imread(input_image_path, index="...")
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
100 test_data = test_data.astype(np.float32)
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
101 test_data = np.squeeze(test_data)
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
102
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
103 target_image_dim = input_size.split(",")[::-1]
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
104 target_image_dim = [int(i) for i in target_image_dim if i != "1"]
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
105 target_image_dim = tuple(target_image_dim)
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
106
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
107 exp_test_data = torch.tensor(test_data)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
108 # check if image dimensions are reversed
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
109 reversed_order = list(reversed(range(exp_test_data.dim())))
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
110 exp_test_data_T = exp_test_data.permute(*reversed_order)
5
37b9ead209da planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/bioimaging commit 399a62ba78a6a3d7885c7df03cc7de37e1a7ec6f
bgruening
parents: 4
diff changeset
111 if exp_test_data_T.shape == target_image_dim and exp_test_data.shape != target_image_dim:
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
112 exp_test_data = exp_test_data_T
5
37b9ead209da planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/bioimaging commit 399a62ba78a6a3d7885c7df03cc7de37e1a7ec6f
bgruening
parents: 4
diff changeset
113 # check if image dimensions are not equal to target image dimensions
3
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
114 if exp_test_data.shape != target_image_dim:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
115 for i in range(len(target_image_dim) - exp_test_data.dim()):
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
116 exp_test_data = exp_test_data.unsqueeze(i)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
117 try:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
118 exp_test_data = dynamic_resize(exp_test_data, target_image_dim)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
119 except Exception as e:
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
120 raise RuntimeError(f"Error during resizing: {e}") from e
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
121
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
122 current_dimension = len(exp_test_data.shape)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
123 input_axes = args["image_axes"]
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
124 target_dimension = len(input_axes)
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
125 # expand input image based on the number of target dimensions
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
126 for i in range(target_dimension - current_dimension):
bc28236f407b planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit e08711c242a340a1671dfca35f52d3724086e968
bgruening
parents: 0
diff changeset
127 exp_test_data = torch.unsqueeze(exp_test_data, i)
0
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
128
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
129 # load model
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
130 model = torch.load(model_path)
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
131 model.eval()
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
132
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
133 # make prediction
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
134 pred_data = model(exp_test_data)
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
135 pred_data_output = pred_data.detach().numpy()
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
136
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
137 # save original image matrix
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
138 np.save("output_predicted_image_matrix.npy", pred_data_output)
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
139
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
140 # post process predicted file to correctly save as TIF file
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
141 pred_data = torch.squeeze(pred_data)
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
142 pred_numpy = pred_data.detach().numpy()
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
143
9f9ae2ac7820 planemo upload for repository https://github.com/bgruening/galaxytools/tree/recommendation_training/tools/bioimaging commit 57f46739f4365f59cd52c515bdd3fae2e01b734e
bgruening
parents:
diff changeset
144 # write predicted TIF image to file
4
2b61d8fcfa52 planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/bioimaging commit f038722c21eaa3018e1cef0004ac7bd283d15269
bgruening
parents: 3
diff changeset
145 imageio.v3.imwrite("output_predicted_image.tiff", pred_numpy, extension=".tiff")