Source code for monte_carlo_analysis.strategies.ClassWiseDistributionStrategy

"""
**Author** : Robin Camarasa

**Institution** : Erasmus Medical Center

**Position** : PhD student

**Contact** : r.camarasa@erasmusmc.nl

**Date** : 2020-10-29

**Project** : monte_carlo_analysis

**Implement ClassWiseDistributionStrategy class**

"""
import numpy as np
from itertools import product
from monte_carlo_analysis.strategies import Strategy
from numba import jit


[docs]class ClassWiseDistributionStrategy(Strategy):
[docs] @staticmethod @jit def transformation( uncertainty_metric_transformation: callable, ensemble_output: np.array, counter: list ) -> np.array: """ Compute the strategy :param ensemble_output: Ensemble error """ # Get the dim size of the output uncertainty map uncertainty_map_shape = ensemble_output.shape[2:] # Initialize uncertainty metric uncertainty_map = np.zeros( (ensemble_output.shape[1], ensemble_output.shape[1]) +\ uncertainty_map_shape ) # Loop over the indexes of the output uncertainty metric for i in counter: for j1 in range(ensemble_output.shape[1]): for j2 in range(j1, ensemble_output.shape[1]): uncertainty_map[(j1, j2,) + i] = uncertainty_metric_transformation( ensemble_output[(slice(None), j1,) + i], ensemble_output[(slice(None), j2,) + i] ) uncertainty_map[j2, j1, :] = uncertainty_map[j1, j2, :] return np.max(uncertainty_map, axis=0)