def calculateStats(results, Fields, Filter): """ Calculates S_ (Sum), A_ (Avg/mean), and D_ (std Deviation) for each field""" try: for field in Fields: #print field,field,results[field] parts = field.split('_') if len(parts) > 1: prefix = parts[0] + '_' else: prefix = '' if len(results[field]) > 1: results['S_' + field] = MLab.sum(results[field]) results['A_' + field] = MLab.mean(results[field]) results['D_' + field] = MLab.std( results[field]) / (MLab.sqrt(len(results[field])) - 1) else: results['S_' + field] = results[field][0] results['A_' + field] = results[field][0] results['D_' + field] = 0.0 Filtered = MLab.nonzero( results[prefix + 'TgtFound'][:len(results[field]) - 1]) if len(Filtered) > 1: TgtFoundResults = MLab.choose(Filtered, results[field]) results['N_' + field] = MLab.mean(TgtFoundResults) results['E_' + field] = MLab.std(TgtFoundResults) / ( MLab.sqrt(len(TgtFoundResults)) - 1) else: results['N_' + field] = MLab.choose(Filtered, results[field])[0] results['E_' + field] = 0.0 results['RtngConfCorr'] = calculateCorrelation(results['NavConf'], results['DirRtng']) results['RtngCorrCorr'] = calculateCorrelation(results['NavConf'], results['TgtFound']) results['ConfCorrCorr'] = calculateCorrelation(results['DirRtng'], results['TgtFound']) results['RtngEffcCorr'] = calculateCorrelation(results['NavConf'], results['Efficiency']) results['ConfEffcCorr'] = calculateCorrelation(results['DirRtng'], results['Efficiency']) results['A_CorrTgt'] = results['CorrTgt'] / float(results['IncrTgt'] + results['CorrTgt']) except IndexError: pass #print 'ERROR: Missing keys when calculating stats for', field, Filter except KeyError: pass #print 'ERROR: Missing keys when calculating stats for', field, Filter except ValueError: print 'ERROR: Invalid entry in choice array', field, Filtered, len( results[field]), '\n', results[field]