Exemple #1
0
    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)
Exemple #2
0
 # read the signal
 try:
     mS = measuredSignal(ID,mic)
 except:
     print('element avoided')
 else:
     if mS.is_initialized():
         y, t, sR = mS.get_signal(mic)
         ch_info = mS.channel_info(mic)
         # get the values from measuredValues to initiate MicSignal and Case
         var = ['Tb','Te','Tp_b','Tp_e','LAEQ']
         micValues = mesVal.get_variables_values(ID, mic, var)
         if micValues:
             micValues.update(ch_info)
             # initiate  MicSignal
             micSn = MicSignal(ID,mic,y,t,sR, micValues)
             # test if signal is clipped, skip it if True
             if micSn.clippedtest():
                 clipped.add((ID,mic))
                 print('clipped')
                 continue
             for alg in algorithms:
                 # calc KG
                 micSn.calc_kg(alg, complete=False)
                 # set results in mesVal
                 mesVal.set_kg_values(alg,**micSn.get_KG_results(alg))
         else:
             print('\n'+str(ID)+'_'+str(mic)+' was mistakenly taken as mbbmtested\n')
     else:
         try:
             print('ignoring '+str(ID)+', '+str(mic))
Exemple #3
0
 # caseDict to fill
 caseDict={}
 # select randomly a case mic tuple
 case_n = np.random.randint(len(IDxMic))
 ID , mic = IDxMic.pop(case_n)
 print('('+ID+', '+str(mic)+')', end = '; ')
 # read the signal
 mS = measuredSignal(ID,mic)
 y, t, sR = mS.get_signal(mic)
 ch_info = mS.channel_info(mic)
 # get the values from measuredValues to initiate MicSignal and Case
 var = ['Tb','Te','Tp_b','Tp_e','LAEQ']
 micValues = mesVal.get_variables_values(ID, mic, var)
 micValues.update(ch_info)
 # initiate  MicSignal
 micSn = MicSignal(ID,mic,y,t,sR, micValues)
 # test if signal is clipped, skipü it if True
 if micSn.clippedtest():
     clipped.add((ID,mic))
     print('clipped')
     continue
 # create Wav and add path to caseDict
 caseDict['wavPath'] = str(micSn.export_to_Wav(mesPath))
 # initialize empty Case with None author
 caseDict['case'] = {'measurement' : measurement, 'location': location,
  'mID':ID, 'mic':mic,\
  'Tb': micValues['Tb'], 'Te': micValues['Te'], 'author' : None}
 #add tmin tmax
 caseDict['tmin'] = float(t.min())
 caseDict['tmax'] = float(t.max())
 # Add data to plot ; key:[t,y] , #key is label of plot
Exemple #4
0
 #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')
Exemple #5
0
 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()