torch_staintools.augmentor package
Submodules
torch_staintools.augmentor.base module
- class torch_staintools.augmentor.base.Augmentor(get_stain_matrix: BaseExtractor, concentration_method: Literal['ista', 'cd', 'ls'] = 'ista', rng: int | Generator | None = None, target_stain_idx: Sequence[int] | None = (0, 1), sigma_alpha: float = 0.2, sigma_beta: float = 0.2, num_stains: int = 2, luminosity_threshold: float | None = 0.8, regularizer: float = 0.1, cache: TensorCache | None = None, device: device | None = None)
- Bases: - CachedRNGModule- Basic augmentation object as a nn.Module with stain matrices cache. - __concentration_selected(target_stain_idx: Sequence[int] | None) Tensor
- Return concentration of selected stain channels - Parameters:
- target_concentration – B x num_stains x num_pixel_in_mask 
- target_stain_idx – Basic indices of the selected stains. If None then returns all stain. 
 
- Returns:
- The view of the selected stain (no copies) 
 
 - __inplace_augment_helper(*, tissue_mask: Tensor, alpha: Tensor, beta: Tensor)
- Helper function to augment a given row(s) of stain concentration: alpha * concentration + beta - Parameters:
- target_concentration – B x num_stains x num_pixel 
- tissue_mask – mask of tissue regions. only augment concentration within the mask 
- alpha – alpha value for augmentation 
- beta – beta value for augmentation 
 
- Returns:
- augmented concentration. The result is in-place (as for the target_concentration here). It might be cloned beforehand in prior. 
 
 - __inplace_tensor(inplace: bool) Tensor
- Helper function to get the clone or the original concentration. - Parameters:
- target_concentration – concentration tensor 
- inplace – bool. If True then returns itself, otherwise returns a clone. 
 
- Returns:
- The original or cloned concentration tensor 
 
 - static augment(*, target_concentration: Tensor, tissue_mask: Tensor, target_stain_idx: Sequence[int] | None, inplace: bool, rng: Generator, sigma_alpha: float, sigma_beta: float)
- Parameters:
- target_concentration – concentration matrix of input image. B x num_stains x num_pixel 
- tissue_mask – region of the tissue 
- target_stain_idx – which stain channel to operate on. 
- inplace – whether augment the concentration matrix in-place 
- rng – rng for alpha and beta generation 
- sigma_alpha – sample values in range (-sigma, sigma) 
- sigma_beta – same semantic of sigma_alpha but applied to beta 
 
 - Returns: 
 - classmethod build(method: str, *, concentration_method: Literal['ista', 'cd', 'ls'] = 'ista', rng: int | Generator | None = None, target_stain_idx: Sequence[int] | None = (0, 1), sigma_alpha: float = 0.2, sigma_beta: float = 0.2, luminosity_threshold: float | None = 0.8, regularizer: float = 0.1, use_cache: bool = False, cache_size_limit: int = -1, device: device | None = None, load_path: str | None = None)
- Factory builder of the augmentor which manipulate the stain concentration by alpha * concentration + beta. - Parameters:
- method – algorithm name to extract stain - support ‘vahadane’ or ‘macenko’ 
- concentration_method – method to obtain the concentration. Default ‘ista’ for fast sparse solution on GPU only applied for StainSeparation-based approaches (macenko and vahadane). support ‘ista’, ‘cd’, and ‘ls’. ‘ls’ simply solves the least square problem for factorization of min||HExC - OD|| but is faster. ‘ista’/cd enforce the sparse penalty but slower. 
- rng – an optional seed (either an int or a torch.Generator) to determine the random number generation. 
- target_stain_idx – what stains to augment: e.g., for HE cases, it can be either or both from [0, 1] 
- sigma_alpha – alpha is uniformly randomly selected from (1-sigma_alpha, 1+sigma_alpha) 
- sigma_beta – beta is uniformly randomly selected from (-sigma_beta, sigma_beta) 
- luminosity_threshold – luminosity threshold to find tissue regions (smaller than but positive) a pixel is considered as being tissue if the intensity falls in the open interval of (0, threshold). 
- regularizer – regularization term in ISTA algorithm 
- use_cache – whether to use cache to save the stain matrix to avoid re-computation 
- cache_size_limit – size limit of the cache. negative means no limits. 
- device – what device to hold the cache. 
- load_path – If specified, then stain matrix cache will be loaded from the file path. See the cache module for more details. 
 
- Returns:
- Augmentor. 
 
 - static channel_rand(target_concentration_selected: Tensor, rng: Generator, sigma_alpha: float, sigma_beta: float) Tuple[Tensor, Tensor]
- Parameters:
- target_concentration_selected – concentrations to work on (e.g., the entire or a subset of concentration matrix) 
- rng – torch.Generator object 
- sigma_alpha – sample alpha values in range (1-sigma, 1+ sigma) 
- sigma_beta – sample beta values in range (-sigma, sigma) 
 
- Returns:
- sampled alpha and beta as a tuple 
 
 - concentration_method: Literal['ista', 'cd', 'ls']
 - device: device
 - forward(target: Tensor, cache_keys: List[Hashable] | None = None, **stain_mat_kwargs)
- Parameters:
- target – input tensor to augment. Shape B x C x H x W and intensity range is [0, 1]. 
- cache_keys – unique keys point the input batch to the cached stain matrices. None means no cache. 
- **stain_mat_kwargs – all extra keyword arguments other than regularizer/num_stains/luminosity_threshold set in __init__. 
 
- Returns:
- Augmented output. 
 
 - get_stain_matrix: BaseExtractor
 - luminosity_threshold: float
 - num_stains: int
 - static randn_range(*size, low, high, device: device, rng: Generator)
- Helper function to get the uniform random float within low/high given the torch.Generator - Parameters:
- *size – size of the random number 
- low – lower bound (inclusive) 
- high – upper bound (inclusive) 
- device – device to create the random numbers 
- rng – random number generator 
 
- Returns:
- random sample given the size and the bounds using the specified rng. 
 
 - regularizer: float
 - sigma_alpha: float
 - sigma_beta: float
 - target_concentrations: Tensor
 - target_stain_idx: Sequence[int] | None
 
torch_staintools.augmentor.factory module
- class torch_staintools.augmentor.factory.AugmentorBuilder
- Bases: - object- Factory Builder for all supported normalizers: macenko/vahadane - For any non-stain separation-based augmentation, the factory builders can be integrated here for a unified interface. - static build(method: Literal['vahadane', 'macenko'], concentration_method: Literal['ista', 'cd', 'ls'] = 'ista', rng: int | Generator | None = None, target_stain_idx: Sequence[int] | None = (0, 1), sigma_alpha: float = 0.2, sigma_beta: float = 0.2, luminosity_threshold: float | None = 0.8, regularizer: float = 0.1, use_cache: bool = False, cache_size_limit: int = -1, device: device | None = None, load_path: str | None = None) Augmentor
- build from specified algorithm name method and augment the stain by alpha * concentration + beta - Warning - concentration_algorithm = ‘ls’ May fail on GPU for individual large input (e.g., 1000 x 1000), regardless of batch size. Therefore, ‘ls’ is better for multiple small inputs in terms of H and W. - Parameters:
- method – Name of stain normalization algorithm. Support macenko and vahadane 
- concentration_method – method to obtain the concentration. Default ‘ista’ for fast sparse solution on GPU only applied for StainSeparation-based approaches (macenko and vahadane). support ‘ista’, ‘cd’, and ‘ls’. ‘ls’ simply solves the least square problem for factorization of min||HExC - OD|| but is faster. ‘ista’/cd enforce the sparse penalty but slower. 
- rng – random seed for augmentation and any random initialization may incur. 
- target_stain_idx – which stain to augment 
- sigma_alpha – alpha sampled from (1-sigma_alpha, 1+sigma_alpha) 
- sigma_beta – beta sampled from (-sigma_beta, sigma_beta) 
- luminosity_threshold – luminosity threshold (smaller than) to find tissue region. 
- regularizer – regularization term in ISTA for dictionary learning (e.g., concentration computation) 
- use_cache – whether to cache the stain matrix for each input image 
- cache_size_limit – limit size of cache (how many matrices to cache). -1 means no limits. 
- device – device of the cache 
- load_path – whether to load prefetched cache. None means nothing will be loaded. 
 
- Returns:
- corresponding Augmentor object.