def test_on_case(self, case, mesValues, micSn = None): ''' test algorithm on Case ''' loc = mesValues.location mes = mesValues.measurement assert((case.case['location'] == loc and\ case.case['measurement'] == mes)) mID = case.case['mID'] mic = case.case['mic'] self.currentauthor = case.case['author'] quality = case.case['quality'] if micSn == None: micSn = MicSignal.from_measurement(mesValues, mID, mic) else: assert((case.case['mID'] == micSn.ID and\ case.case['mic'] == micSn.mic)) #output = self.func(micSn) micSn.calc_kg(self) output= micSn.get_KG_results(self)['result'] # compare case and alg results comparation, disc = case.compare(output['result'], output['t'],sum =True) #fill test cases # todo: if ROC evaluation # todo: addr BPR vector to case_tests masked in Te Tb # todo: add TF vectors self.case_tests[str(case)] = {'mic':mic,'mID':mID,'location':loc,\ 'measurement':mes,'author':self.currentauthor, \ 'quality':quality, 'disc':disc, 'te':case.get_bounds()[1], 'tb':case.get_bounds()[0]} #export for R if self.Rexport: for i in range(0,len(disc)): self.forR.append({'mic':mic, 'mID':mID, 'location':loc, 'author':self.currentauthor,'quality':quality, 'BPR':output['BPR'][i], 'time':output['t'][i], 'disc':disc[i], 'NoiseT':self.noiseType, 'Alg':"Z2", 'AlgProp': self.stringsummary()}) self.case_tests[str(case)].update(output) self.case_tests[str(case)].update(comparation) # add rates self.case_tests[str(case)].update(rates(**comparation)) return(micSn)
#collect cases cases = [] for authP in casePath.iterdir(): if authP.is_dir(): print(authP) cases.extend([Case.from_JSON(cp) for cp in authP.iterdir()\ if cp.match('case_**.json') ]) notfound=[] print('Case cases:') print('----------------------') for case in cases: print(str(case)) mID = case.case['mID'] mic = case.case['mic'] # initaite mic signal micSn, mesVal = MicSignal.from_measurement(mID, mic, Paths=Paths) if micSn: for alg in algorithms: print(str(alg),end = ', ') alg.test_on_case(case, mesVal, micSn) print('.') else: notfound.append(mID) print(mID+" not found. Pass.") #calc global Rates print('Calculate global Rates') for alg in algorithms: alg.calc_rates() # save print('save to json')
jsonpath=mesPath.joinpath(pathlib.Path('measurements_example/MBBMZugExample')) mesVal = measuredValues.from_json(jsonpath) location = mesVal.location measurement = mesVal.measurement # setup measured signal measuredSignal.setup(jsonpath) # todo: if necessary serialize on mesVal mesValues = measuredValues.from_json(jsonpath) casePath1 = mesValues.path.joinpath('test_cases/luc/case_m_1656_4_luc.json') case1 = Case.from_JSON(casePath1) casePath2 = mesValues.path.joinpath('test_cases/luc/case_m_2791_1_luc.json') case2 = Case.from_JSON(casePath2) ## case = case2 micSn, mesVal = MicSignal.from_measurement(case.case['mID'],case.case['mic'], Paths) micSn.calc_kg(algorithms[0]) ## if 2<1: f,axes = plt.subplots(2,sharex = True) ax = axes[0] micSn.plot_triggers(ax,color = '#272822',lw=1) micSn.plot_BPR(algorithm, ax, color = '#272822', linewidth=1) case.plot(ax) ax.set_xlim(-0.5,8) ymin,ymax = ax.get_ylim() ax=axes[1] alg_res = micSn.get_KG_results(algorithm)['result'] micSn.plot_BPR(algorithms[0], ax, color = '#272822', lw=1) case.plot_compare(ax,alg_res['result'], alg_res['t']) plt.show()