Mercurial > repos > bgruening > bioimage_inference
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 |
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") |