Source code for hippounit.scores.score_ZScore_PSPAttenuation

from __future__ import division
from builtins import str
from builtins import range
from sciunit import Score
import numpy
from sciunit.utils import assert_dimensionless
import collections

[docs]class ZScore_PSPAttenuation(Score): """ Average of Z scores. A float indicating the average of standardized difference from reference means for PSP attenuation values. """ def __init__(self, score, related_data={}): if not isinstance(score, Exception) and not isinstance(score, float): raise InvalidScoreError("Score must be a float.") else: super(ZScore_PSPAttenuation,self).__init__(score, related_data=related_data)
[docs] @classmethod def compute(cls, observation, prediction, distances): """Computes average of z-scores from observation and prediction for PSP attenuation values""" errors = collections.OrderedDict() for i in range (0, len(distances)): p_value = prediction['mean_attenuation_soma/dend_'+str(distances[i])+'_um']['mean'] o_mean = observation['mean_attenuation_soma/dend_'+str(distances[i])+'_um'] o_std = observation['std_attenuation_soma/dend_'+str(distances[i])+'_um'] try: error = abs(p_value - o_mean)/o_std error = assert_dimensionless(error) except (TypeError,AssertionError) as e: error = e errors['error_attenuation_soma/dend_'+str(distances[i])+'_um'] = error error_list = [] for key, value in errors.items(): error_list.append(value) score_avg = numpy.nanmean(error_list) return score_avg, errors
def __str__(self): return 'ZScore_avg = %.2f' % self.score