Source code for elektronn3.data.transforms.region_generator

# ELEKTRONN3 - Neural Network Toolkit
#
# Copyright (c) 2017 - now
# Max Planck Institute of Neurobiology, Munich, Germany
# Authors: Ravil Dorozhinskii

import numpy as np


[docs] class Region: """ Is a container that holds spatial coordinates of the region """ def __init__(self, coords_lo: list, coords_hi: list, size: list = None): """ Parameters ---------- coords_lo - the lowest region coordinates along each axis coords_hi - the highest region coordinates along each axis size - spatial sizes of the region along each axis """ self.coords_lo = coords_lo self.coords_hi = coords_hi if size: self.size = size else: self.size = [high - low for high, low in zip(coords_hi, coords_lo)]
[docs] class RegionGenerator: """ A class instance generates regions with arbitrary spatial size and location within the specified coordinate bounds. The coordinate bounds are usually the spatial size of the input sample. """ def __init__(self, coord_bounds: list, lower_lim_region_size: list, upper_lim_region_size: list): """ Parameters ---------- coord_bounds - coordinate bounds of a sample with the format: [depth, width, height] lower_lim_region_size - region minimal size along each axis with the format: [min_depth, min_width, min_height] upper_lim_region_size - region maximal size along each axis with the format: [max_depth, max_width, max_height] """ self.sample_size = coord_bounds self.coords_lo_lim = lower_lim_region_size self.coords_hi_lim = upper_lim_region_size self.dim = len(self.sample_size)
[docs] def create_region(self) -> Region: """ Generates a region with arbitrary spatial size and location according to the parameters passed by the user to the constructor Returns ------- instance of the Region class """ size = [np.random.randint(low=self.coords_lo_lim[i], high=self.coords_hi_lim[i]) for i in range(self.dim)] coords_lo = [np.random.randint(low=0, high=self.sample_size[i] - size[i]) for i in range(self.dim)] coords_hi = [coords_lo[i] + size[i] for i in range(self.dim)] return Region(coords_lo, coords_hi, size)