MCPcopy Create free account
hub / github.com/Project-MONAI/MONAI / get_valid_level

Method get_valid_level

monai/data/wsi_reader.py:173–217  ·  view source on GitHub ↗

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
    )

Source from the content-addressed store, hash-verified

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:

Callers 1

get_dataMethod · 0.95

Calls 6

get_level_countMethod · 0.95
get_mppMethod · 0.95
_find_closest_levelMethod · 0.95
get_powerMethod · 0.95
ensure_tuple_repFunction · 0.90
ensure_tupleFunction · 0.90

Tested by

no test coverage detected