"""
Copyright 2018 Johns Hopkins University (Author: Jesus Villalba)
Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
"""
import numpy as np
import h5py
from .score_norm import ScoreNorm
[docs]class TNorm(ScoreNorm):
"""Class for T-Norm score normalization."""
[docs] def predict(self, scores, scores_coh_test, mask=None):
if mask is None:
mu_t = np.mean(scores_coh_test, axis=0, keepdims=True)
s_t = np.std(scores_coh_test, axis=0, keepdims=True)
else:
scores_coh_test[mask == False] = 0
n_t = np.mean(mask, axis=0, keepdims=True)
mu_t = np.mean(scores_coh_test, axis=0, keepdims=True) / n_t
s_t = np.sqrt(
np.mean(scores_coh_test ** 2, axis=0, keepdims=True) / n_t - mu_t ** 2
)
s_t[s_t < self.std_floor] = self.std_floor
scores_norm = (scores - mu_t) / s_t
return scores_norm