Source code for hippounit.scores.score_ZScore_ObliqueIntegration
from __future__ import division
from sciunit import Score
import numpy
import collections
from sciunit.utils import assert_dimensionless
[docs]class ZScore_ObliqueIntegration(Score):
"""
Average of Z scores. A float indicating the average of standardized difference
from reference means for oblique integration features.
"""
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_ObliqueIntegration,self).__init__(score, related_data=related_data)
[docs] @classmethod
def compute(cls, observation, prediction):
"""Computes average of z-scores from observation and prediction for features of dendritic integration in oblique dendrites"""
#print observation
#print prediction
errors_dict=collections.OrderedDict()
errors=[]
for feat_name, value in observation.items():
if 'mean' in feat_name:
p_mean = prediction['model_' + feat_name]
o_mean = observation[feat_name]
o_std = observation[feat_name[5:] + '_std']
try:
feature_error = abs(p_mean - o_mean)/o_std
feature_error = assert_dimensionless(feature_error)
except (TypeError,AssertionError) as e:
feature_error = e
errors.append(feature_error)
errors_dict[feat_name[5:] + '_error'] = feature_error
#print errors_dict
score_avg=numpy.nanmean(errors)
return score_avg, errors_dict
def __str__(self):
return 'ZScore_avg = %.2f' % self.score