Returns the level associated to the resolution parameters in the whole slide image. Args: wsi: a whole slide image object loaded from a file. level: the level number. mpp: the micron-per-pixel resolution. power: the objective power.
(
self, wsi, level: int | None, mpp: float | tuple[float, float] | None, power: int | None
)
| 171 | return value_at_levels.index(closest_value) |
| 172 | |
| 173 | def get_valid_level( |
| 174 | self, wsi, level: int | None, mpp: float | tuple[float, float] | None, power: int | None |
| 175 | ) -> int: |
| 176 | """ |
| 177 | Returns the level associated to the resolution parameters in the whole slide image. |
| 178 | |
| 179 | Args: |
| 180 | wsi: a whole slide image object loaded from a file. |
| 181 | level: the level number. |
| 182 | mpp: the micron-per-pixel resolution. |
| 183 | power: the objective power. |
| 184 | |
| 185 | """ |
| 186 | |
| 187 | # Try instance parameters if no resolution is provided |
| 188 | if mpp is None and power is None and level is None: |
| 189 | mpp = self.mpp |
| 190 | power = self.power |
| 191 | level = self.level |
| 192 | |
| 193 | # Ensure that at most one resolution parameter is provided. |
| 194 | resolution = [val[0] for val in [("level", level), ("mpp", mpp), ("power", power)] if val[1] is not None] |
| 195 | if len(resolution) > 1: |
| 196 | raise ValueError(f"Only one of `level`, `mpp`, or `power` should be provided. {resolution} are provided.") |
| 197 | |
| 198 | n_levels = self.get_level_count(wsi) |
| 199 | |
| 200 | if mpp is not None: |
| 201 | mpp_ = ensure_tuple_rep(mpp, 2) |
| 202 | available_mpps = [self.get_mpp(wsi, level) for level in range(n_levels)] |
| 203 | level = self._find_closest_level("mpp", mpp_, available_mpps, self.mpp_atol, self.mpp_rtol) |
| 204 | elif power is not None: |
| 205 | power_ = ensure_tuple(power) |
| 206 | available_powers = [(self.get_power(wsi, level),) for level in range(n_levels)] |
| 207 | level = self._find_closest_level("power", power_, available_powers, self.power_atol, self.power_rtol) |
| 208 | else: |
| 209 | if level is None: |
| 210 | # Set the default value if no resolution parameter is provided. |
| 211 | level = 0 |
| 212 | if level >= n_levels: |
| 213 | raise ValueError( |
| 214 | f"The maximum level of this image is {n_levels - 1} while level={level} is requested)!" |
| 215 | ) |
| 216 | |
| 217 | return level |
| 218 | |
| 219 | @abstractmethod |
| 220 | def get_level_count(self, wsi) -> int: |
no test coverage detected