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

Method __call__

monai/transforms/io/array.py:237–305  ·  view source on GitHub ↗

Load image file and metadata from the given filename(s). If `reader` is not specified, this class automatically chooses readers based on the reversed order of registered readers `self.readers`. Args: filename: path file or file-like object or a list of f

(self, filename: Sequence[PathLike] | PathLike, reader: ImageReader | None = None)

Source from the content-addressed store, hash-verified

235 self.readers.append(reader)
236
237 def __call__(self, filename: Sequence[PathLike] | PathLike, reader: ImageReader | None = None):
238 """
239 Load image file and metadata from the given filename(s).
240 If `reader` is not specified, this class automatically chooses readers based on the
241 reversed order of registered readers `self.readers`.
242
243 Args:
244 filename: path file or file-like object or a list of files.
245 will save the filename to meta_data with key `filename_or_obj`.
246 if provided a list of files, use the filename of first file to save,
247 and will stack them together as multi-channels data.
248 if provided directory path instead of file path, will treat it as
249 DICOM images series and read.
250 reader: runtime reader to load image file and metadata.
251
252 """
253 filename = tuple(
254 f"{Path(s).expanduser()}" if self.expanduser else s for s in ensure_tuple(filename) # allow Path objects
255 )
256 img, err = None, []
257 if reader is not None:
258 img = reader.read(filename) # runtime specified reader
259 else:
260 for reader in self.readers[::-1]:
261 if self.auto_select: # rely on the filename extension to choose the reader
262 if reader.verify_suffix(filename):
263 img = reader.read(filename)
264 break
265 else: # try the user designated readers
266 try:
267 img = reader.read(filename)
268 except Exception as e:
269 err.append(traceback.format_exc())
270 logging.getLogger(self.__class__.__name__).debug(e, exc_info=True)
271 logging.getLogger(self.__class__.__name__).info(
272 f"{reader.__class__.__name__}: unable to load {filename}.\n"
273 )
274 else:
275 err = []
276 break
277
278 if img is None or reader is None:
279 if isinstance(filename, Sequence) and len(filename) == 1:
280 filename = filename[0]
281 msg = "\n".join([f"{e}" for e in err])
282 raise RuntimeError(
283 f"{self.__class__.__name__} cannot find a suitable reader for file: {filename}.\n"
284 " Please install the reader libraries, see also the installation instructions:\n"
285 " https://monai.readthedocs.io/en/latest/installation.html#installing-the-recommended-dependencies.\n"
286 f" The current registered: {self.readers}.\n{msg}"
287 )
288 img_array: NdarrayOrTensor
289 img_array, meta_data = reader.get_data(img)
290 img_array = convert_to_dst_type(img_array, dst=img_array, dtype=self.dtype)[0]
291 if not isinstance(meta_data, dict):
292 raise ValueError(f"`meta_data` must be a dict, got type {type(meta_data)}.")
293 # make sure all elements in metadata are little endian
294 meta_data = switch_endianness(meta_data, "<")

Callers

nothing calls this directly

Calls 11

ensure_tupleFunction · 0.90
convert_to_dst_typeFunction · 0.90
EnsureChannelFirstClass · 0.90
switch_endiannessFunction · 0.85
debugMethod · 0.80
infoMethod · 0.80
readMethod · 0.45
verify_suffixMethod · 0.45
appendMethod · 0.45
get_dataMethod · 0.45

Tested by

no test coverage detected