import numpy as np def shorten_species(name): genus, species = name.split('_') return genus[0] + '. ' + species def get_saturation(sigmoid, low=0.05, high=0.95, first=True, last=True, condense=None): if condense == 'norm' and sigmoid.ndim == 2: sigmoid = np.linalg.norm(sigmoid, axis=1) min_value = sigmoid[0] if first else sigmoid.min(axis=0) max_value = sigmoid[-1] if last else sigmoid.max(axis=0) span = max_value - min_value low_value = min_value + low * span high_value = min_value + high * span low_mask = sigmoid >= low_value high_mask = sigmoid >= high_value if sigmoid.ndim == 1: low_ind = np.nonzero(low_mask)[0][0] high_ind = np.nonzero(high_mask)[0][0] elif condense == 'all': low_ind = np.nonzero(low_mask.all(axis=1))[0][0] high_ind = np.nonzero(high_mask.all(axis=1))[0][0] else: low_ind, high_ind = [], [] for i in range(sigmoid.shape[1]): low_ind.append(np.nonzero(low_mask[:, i])[0][0]) high_ind.append(np.nonzero(high_mask[:, i])[0][0]) return low_ind, high_ind