Create an image with the before and after of the transform. Also update the transform's documentation to point to this image.
(
transform, transform_args, data, ndim=3, colorbar=False, update_doc=True, seed=0, is_post=False
)
| 411 | |
| 412 | |
| 413 | def create_transform_im( |
| 414 | transform, transform_args, data, ndim=3, colorbar=False, update_doc=True, seed=0, is_post=False |
| 415 | ): |
| 416 | """Create an image with the before and after of the transform. |
| 417 | Also update the transform's documentation to point to this image.""" |
| 418 | |
| 419 | transform = transform(**transform_args) |
| 420 | |
| 421 | if not has_matplotlib: |
| 422 | raise RuntimeError |
| 423 | |
| 424 | if isinstance(transform, Randomizable): |
| 425 | # increment the seed for map transforms so they're different to the array versions. |
| 426 | seed = seed + 1 if isinstance(transform, MapTransform) else seed |
| 427 | transform.set_random_state(seed) |
| 428 | |
| 429 | out_dir = MONAIEnvVars.doc_images() |
| 430 | if out_dir is None: |
| 431 | raise RuntimeError( |
| 432 | "Please git clone https://github.com/Project-MONAI/DocImages" |
| 433 | + " and then set the environment variable `MONAI_DOC_IMAGES`" |
| 434 | ) |
| 435 | out_dir = os.path.join(out_dir, "transforms") |
| 436 | |
| 437 | # Path is transform name |
| 438 | transform_name = transform.__class__.__name__ |
| 439 | out_fname = transform_name + ".png" |
| 440 | out_file = os.path.join(out_dir, out_fname) |
| 441 | |
| 442 | is_map = isinstance(transform, MapTransform) |
| 443 | data_in = pre_process_data(deepcopy(data), ndim, is_map, is_post) |
| 444 | |
| 445 | data_tr = transform(deepcopy(data_in)) |
| 446 | |
| 447 | images_before, before_shape = get_images(data_in) |
| 448 | images_after, after_shape = get_images(data_tr) |
| 449 | images = (images_before, images_after) |
| 450 | shapes = (before_shape, after_shape) |
| 451 | |
| 452 | labels = None |
| 453 | if is_map: |
| 454 | labels_before, *_ = get_images(data_in, is_label=True) |
| 455 | labels_after, *_ = get_images(data_tr, is_label=True) |
| 456 | labels = (labels_before, labels_after) |
| 457 | |
| 458 | save_image(images, labels, out_file, transform_name, transform_args, shapes, colorbar) |
| 459 | |
| 460 | if update_doc: |
| 461 | base_dir = pathlib.Path(__file__).parent.parent.parent |
| 462 | rst_path = os.path.join(base_dir, "docs", "source", "transforms.rst") |
| 463 | update_docstring(rst_path, transform_name) |
| 464 | |
| 465 | |
| 466 | if __name__ == "__main__": |
no test coverage detected
searching dependent graphs…