|
9 | 9 | from sqlmodel import Session, select |
10 | 10 |
|
11 | 11 | import murfey.util.db as MurfeyDB |
| 12 | +from murfey.util.fib import number_from_name |
12 | 13 |
|
13 | 14 | logger = logging.getLogger("murfey.workflows.fib.register_atlas") |
14 | 15 |
|
@@ -151,34 +152,48 @@ def _register_fib_imaging_site( |
151 | 152 | Register FIB atlas in Murfey database or update existing entry. |
152 | 153 | """ |
153 | 154 | # Create new entry if one doesn't already exist |
154 | | - if not ( |
| 155 | + if ( |
155 | 156 | fib_imaging_site := murfey_db.exec( |
156 | 157 | select(MurfeyDB.ImagingSite) |
157 | 158 | .where(MurfeyDB.ImagingSite.session_id == session_id) |
158 | | - .where(MurfeyDB.ImagingSite.image_path == str(metadata.file)) |
| 159 | + .where(MurfeyDB.ImagingSite.site_name == metadata.site_name) |
| 160 | + .where(MurfeyDB.ImagingSite.data_type == "atlas") |
159 | 161 | ).one_or_none() |
160 | | - ): |
| 162 | + ) is None: |
161 | 163 | fib_imaging_site = MurfeyDB.ImagingSite( |
162 | 164 | session_id=session_id, |
| 165 | + site_name=metadata.site_name, |
163 | 166 | image_path=str(metadata.file), |
164 | 167 | data_type="atlas", |
165 | 168 | ) |
166 | | - # Add/update entries |
167 | | - fib_imaging_site.site_name = metadata.site_name |
168 | | - fib_imaging_site.pos_x = metadata.pos_x |
169 | | - fib_imaging_site.pos_y = metadata.pos_y |
170 | | - fib_imaging_site.pos_z = metadata.pos_z |
171 | | - fib_imaging_site.rotation = float(np.rad2deg(metadata.rotation)) |
172 | | - fib_imaging_site.tilt_alpha = float(np.rad2deg(metadata.tilt_alpha)) |
173 | | - fib_imaging_site.tilt_beta = float(np.rad2deg(metadata.tilt_beta)) |
174 | | - fib_imaging_site.len_x = metadata.len_x |
175 | | - fib_imaging_site.len_y = metadata.len_y |
176 | | - fib_imaging_site.image_pixels_x = metadata.pixels_x |
177 | | - fib_imaging_site.image_pixels_y = metadata.pixels_y |
178 | | - fib_imaging_site.image_pixel_size = metadata.pixel_size |
179 | | - |
180 | | - murfey_db.add(fib_imaging_site) |
181 | | - murfey_db.commit() |
| 169 | + |
| 170 | + # Check if the entry is new or newer than the current stored one |
| 171 | + incoming_number = number_from_name(metadata.file.stem) |
| 172 | + # Handle empty string |
| 173 | + if not fib_imaging_site.image_path: |
| 174 | + current_number = 0 |
| 175 | + # Read 'maps' atlases in one way |
| 176 | + elif "maps" in (curr_path := Path(fib_imaging_site.image_path)).parts: |
| 177 | + current_number = number_from_name(curr_path.stem) |
| 178 | + else: |
| 179 | + current_number = 0 |
| 180 | + # Update if incoming one is newer |
| 181 | + if incoming_number > current_number: |
| 182 | + fib_imaging_site.image_path = str(metadata.file) |
| 183 | + fib_imaging_site.pos_x = metadata.pos_x |
| 184 | + fib_imaging_site.pos_y = metadata.pos_y |
| 185 | + fib_imaging_site.pos_z = metadata.pos_z |
| 186 | + fib_imaging_site.rotation = float(np.rad2deg(metadata.rotation)) |
| 187 | + fib_imaging_site.tilt_alpha = float(np.rad2deg(metadata.tilt_alpha)) |
| 188 | + fib_imaging_site.tilt_beta = float(np.rad2deg(metadata.tilt_beta)) |
| 189 | + fib_imaging_site.len_x = metadata.len_x |
| 190 | + fib_imaging_site.len_y = metadata.len_y |
| 191 | + fib_imaging_site.image_pixels_x = metadata.pixels_x |
| 192 | + fib_imaging_site.image_pixels_y = metadata.pixels_y |
| 193 | + fib_imaging_site.image_pixel_size = metadata.pixel_size |
| 194 | + |
| 195 | + murfey_db.add(fib_imaging_site) |
| 196 | + murfey_db.commit() |
182 | 197 |
|
183 | 198 |
|
184 | 199 | def run( |
|
0 commit comments