Exemplo n.º 1
0
 def test_h5save_signalobj(self):
     """
     SignalObj hdf5 save test
     """
     sin1 = pytta.generate.sin(freq=500, timeLength=6)
     sin2 = pytta.generate.sin(freq=1000, timeLength=7)
     sin2.signalType = 'energy'
     savedlst = [sin1, sin2]
     pytta.save(self.filename, sin1, sin2)
     loaded = pytta.load(self.filename)
     loadedlst = [loaded[pyttaobj] for pyttaobj in loaded]
     for idx, pobj in enumerate(loadedlst):
         # Testing every attribute
         # SignalObj.timeSignal
         self.assertSequenceEqual(pobj.timeSignal.tolist(),
                                  savedlst[idx].timeSignal.tolist())
         # SignalObj.freqSignal
         self.assertSequenceEqual(pobj.freqSignal.tolist(),
                                  savedlst[idx].freqSignal.tolist())
         # SignalObj.samplingRate
         self.assertEqual(pobj.samplingRate, savedlst[idx].samplingRate)
         # SignalObj.signalType
         self.assertEqual(pobj.signalType, savedlst[idx].signalType)
         # SignalObj.channels
         self.assertEqual(str(pobj.channels), str(savedlst[idx].channels))
Exemplo n.º 2
0
    def test_h5save_impulsiveresponse(self):
        """"
        ImpulsiveResponse hdf5 save test
        """
        xt = pytta.generate.sweep(fftDegree=16)
        noise = pytta.generate.random_noise(fftDegree=16,
                                            startMargin=0,
                                            stopMargin=0)
        noise *= 0.5
        yt = xt + noise
        IR = pytta.ImpulsiveResponse(excitation=xt,
                                     recording=yt,
                                     method='Ht',
                                     winType='hann',
                                     winSize=44100 * 0.1,
                                     overlap=0.6,
                                     samplingRate=noise.samplingRate,
                                     freqMax=10000,
                                     freqMin=100,
                                     comment='testing the stuff')

        pytta.save(self.filename, IR)

        a = pytta.load(self.filename)
        loadedlst = [a[pyttaobj] for pyttaobj in a]
        self.assertSequenceEqual(loadedlst[0].systemSignal.timeSignal.tolist(),
                                 IR.systemSignal.timeSignal.tolist())
Exemplo n.º 3
0
        SR = SR.replace('-', '')
        RoomirsInSitu1 = D_inSitu1.calculate_ir(
            getRoomres,
            calibrationTake=1,
            skipInCompensation=skipInCompensation,
            skipOutCompensation=skipOutCompensation,
            skipBypCalibration=skipBypCalibration,
            skipIndCalibration=skipIndCalibration,
            skipRegularization=skipRegularization,
            skipSave=skipSave)

        # Plota respostas impulsivas de cada cfg fonte-receptor
        for name, msdThng in RoomirsInSitu1.items():
            print(name)
        if plots:
            #p1 = [IR.plot_freq(ylim=[-10, 120]) for IR in msdThng.measuredSignals]
            p2 = msdThng.measuredSignals[0].plot_freq(xLim=None)
            p3 = msdThng.measuredSignals[0].plot_time_dB(xLim=None)

        # Calcula TR
        newTR = MPP.TR(RoomirsInSitu1, 20, IREndManualCut)

        if plots:
            _ = newTR[SR][0].plot()

        TR_inSitu[SR] = newTR[SR]

# Salva resultados
TR_inSitu['dictName'] = 'TR_inSitu'
pytta.save(analysisFileName + ".hdf5", TR_inSitu)
Exemplo n.º 4
0
    def test_h5save_recmeasure(self):
        """
        RecMeasure hdf5 save test
        """
        mType = 'rec'
        lengthDomain = 'samples'
        lengthDomain2 = 'time'
        fftDegree = 18
        timeLength2 = 4
        device = 4
        device2 = 3
        inChannels = [1, 2, 3, 4]
        inChannels2 = [1, 5, 3, 7]
        samplingRate = 44100
        samplingRate2 = 48000
        freqMin = 22
        freqMin2 = 20
        freqMax = 19222
        freqMax2 = 20000
        comment = 'Testing'
        comment2 = 'Testing2'

        med1 = pytta.generate.measurement(kind=mType,
                                          samplingRate=samplingRate,
                                          freqMin=freqMin,
                                          freqMax=freqMax,
                                          device=device,
                                          inChannels=inChannels,
                                          comment=comment,
                                          lengthDomain=lengthDomain,
                                          fftDegree=fftDegree)

        med2 = pytta.generate.measurement(kind=mType,
                                          samplingRate=samplingRate2,
                                          freqMin=freqMin2,
                                          freqMax=freqMax2,
                                          device=device2,
                                          inChannels=inChannels2,
                                          comment=comment2,
                                          lengthDomain=lengthDomain2,
                                          timeLength=timeLength2)

        savedlst = [med1, med2]

        pytta.save(self.filename, med1, med2)

        a = pytta.load(self.filename)

        loadedlst = [a[pyttaobj] for pyttaobj in a]

        for idx, pobj in enumerate(loadedlst):
            self.assertEqual(pobj.lengthDomain, savedlst[idx].lengthDomain)

            self.assertEqual(pobj.timeLength, savedlst[idx].timeLength)

            self.assertEqual(pobj.fftDegree, savedlst[idx].fftDegree)

            self.assertEqual(pobj.device, savedlst[idx].device)

            self.assertEqual(str(pobj.inChannels),
                             str(savedlst[idx].inChannels))

            self.assertEqual(pobj.samplingRate, savedlst[idx].samplingRate)

            self.assertEqual(pobj.freqMin, savedlst[idx].freqMin)

            self.assertEqual(pobj.freqMax, savedlst[idx].freqMax)

            self.assertEqual(pobj.comment, savedlst[idx].comment)
Exemplo n.º 5
0
    def test_h5save_analysis(self):
        """
        Analysis hdf5 save test.
        """
        anType = 'RT'
        anType2 = 'mixed'
        nthOct = 3
        nthOct2 = 1
        minBand = 60
        minBand2 = 70
        maxBand = 20000
        maxBand2 = 16000
        data = [
            2.0226, 1.7139, 1.4615, 1.7127, 1.0890, 1.5395, 1.2965, 1.9011,
            1.9835, 2.1028, 2.1225, 1.9030, 1.9064, 2.0137, 1.8834, 1.6736,
            1.5220, 1.5677, 1.6691, 1.4698, 1.2754, 0.9378, 0.6863, 0.4889,
            0.3776, 0.3113
        ]
        data2 = [
            2.0226, 1.7127, 1.2965, 2.1028, 1.9064, 1.6736, 1.6691, 0.9378,
            0.3776
        ]
        error = [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1, 1, 1, 1
        ]
        errorLabel = 'errinho'
        error2 = [1, 1, 1, 1, 1, 1, 1, 1, 1]
        errorLabel2 = 'erroncio'
        dataLabel = 'etiquetismo'
        dataLabel2 = 'etiquetasso'
        comment = 'Testaaano carai'
        comment2 = 'Testano memo'

        an = pytta.Analysis(anType=anType,
                            nthOct=nthOct,
                            minBand=minBand,
                            maxBand=maxBand,
                            data=data,
                            error=error,
                            errorLabel=errorLabel,
                            dataLabel=dataLabel,
                            comment=comment)

        an2 = pytta.Analysis(anType=anType2,
                             nthOct=nthOct2,
                             minBand=minBand2,
                             maxBand=maxBand2,
                             data=data2,
                             error=error2,
                             errorLabel=errorLabel2,
                             dataLabel=dataLabel2,
                             comment=comment2)

        savedlst = [an, an2]

        pytta.save(self.filename, an, an2)

        a = pytta.load(self.filename)

        loadedlst = [a[pyttaobj] for pyttaobj in a]

        for idx, pobj in enumerate(loadedlst):
            self.assertEqual(pobj.anType, savedlst[idx].anType)

            self.assertEqual(pobj.nthOct, savedlst[idx].nthOct)

            self.assertEqual(pobj.minBand, savedlst[idx].minBand)

            self.assertEqual(pobj.maxBand, savedlst[idx].maxBand)

            self.assertEqual(pobj.dataLabel, savedlst[idx].dataLabel)

            self.assertEqual(pobj.errorLabel, savedlst[idx].errorLabel)

            self.assertEqual(pobj.comment, savedlst[idx].comment)

            self.assertEqual(pobj.data.tolist(), savedlst[idx].data.tolist())

            self.assertEqual(pobj.error.tolist(), savedlst[idx].error.tolist())
Exemplo n.º 6
0
    def test_h5save_frfmeasure(self):
        """
            FRFMeasure hdf5 save test
            """
        mType = 'frf'
        fftDegree = 18
        fftDegree2 = 19
        device = 4
        device2 = 3
        inChannels = [1, 2, 3, 4]
        inChannels2 = [1, 5, 3, 7]
        outChannels = [1, 2]
        outChannels2 = [1, 3]
        samplingRate = 44100
        samplingRate2 = 48000
        freqMin = 22
        freqMin2 = 20
        freqMax = 19222
        freqMax2 = 20000
        comment = 'Testing'
        comment2 = 'Testing2'
        excitation = pytta.generate.sweep(freqMin=freqMin,
                                          freqMax=freqMax,
                                          samplingRate=samplingRate,
                                          fftDegree=fftDegree)

        excitation2 = pytta.generate.sweep(freqMin=freqMin2,
                                           freqMax=freqMax2,
                                           samplingRate=samplingRate2,
                                           fftDegree=fftDegree2)

        med1 = pytta.generate.measurement(kind=mType,
                                          excitation=excitation,
                                          samplingRate=samplingRate,
                                          freqMin=freqMin,
                                          freqMax=freqMax,
                                          device=device,
                                          inChannels=inChannels,
                                          outChannels=outChannels,
                                          comment=comment)

        med2 = pytta.generate.measurement(kind=mType,
                                          excitation=excitation2,
                                          samplingRate=samplingRate2,
                                          freqMin=freqMin2,
                                          freqMax=freqMax2,
                                          device=device2,
                                          inChannels=inChannels2,
                                          outChannels=outChannels2,
                                          comment=comment2)

        savedlst = [med1, med2]

        pytta.save(self.filename, med1, med2)

        a = pytta.load(self.filename)

        loadedlst = [a[pyttaobj] for pyttaobj in a]

        for idx, pobj in enumerate(loadedlst):
            self.assertEqual(pobj.lengthDomain, savedlst[idx].lengthDomain)

            self.assertEqual(pobj.excitation.timeSignal.tolist(),
                             savedlst[idx].excitation.timeSignal.tolist())

            self.assertEqual(pobj.device, savedlst[idx].device)

            self.assertEqual(str(pobj.inChannels),
                             str(savedlst[idx].inChannels))

            self.assertEqual(str(pobj.outChannels),
                             str(savedlst[idx].outChannels))

            self.assertEqual(pobj.samplingRate, savedlst[idx].samplingRate)

            self.assertEqual(pobj.freqMin, savedlst[idx].freqMin)

            self.assertEqual(pobj.freqMax, savedlst[idx].freqMax)

            self.assertEqual(pobj.comment, savedlst[idx].comment)
Exemplo n.º 7
0
Lps_revCh = Lps_revCh[list(Lps_revCh.keys())[0]]
Lps_revCh.creation_name = 'Lps_revCh'
if plots:
    _ = Recalibirs[list(Recalibirs.keys())[0]].measuredSignals[0].plot_time_dB()
    _ = Lps_revCh.plot()
    # _ = Lps_revCh.plot(yLim=[0,42])

# %% Lpe in all positions
Lpe_revCh = MPP.G_Lpe_revCh(RoomirsLpe, IREndManualCut=IREndManualCut)
if plots:
    _ = roomirsRevCh[list(roomirsRevCh.keys())[0]].measuredSignals[0].plot_time_dB()
    _ = Lpe_revCh.plot(errorLabel=None)
    # _ = Lpe_revCh.plot(yLim=[24,39])

# %% T_revCh
a = pytta.load(analysisFileNameTR)
for key, value in a.items():
    exec(key + ' = value')
    exec(key + ".creation_name = '" + key + "'")
if plots:
    _ = T_revCh.plot()

# %%
pytta.save(analysisFileName, Lps_revCh, Lpe_revCh, T_revCh)

# %%
a = pytta.load(analysisFileName)
for key, value in a.items():
    exec(key + 'ld = value')
    exec(key + "ld.creation_name = '" + key + "'")
V_revCh = 207
Exemplo n.º 8
0
        # Lpe médio para cada posição
        # Lpe_inSitu = {'S1R1': [Analysis_avg1, Analysis_avg2, ..., Analysis_avgn]}            
        Lpe_inSitu1 = MPP.G_Lpe_inSitu(RoomirsInSitu1, IREndManualCut=IREndManualCut)
        
        if plots:
            _ = Lpe_inSitu1[SR][0].plot()
        
        # G in all positions loaded in Lpe_inSitu1
        newG = MPP.G(Lpe_inSitu1, Lpe_revCh, V_revCh, T_revCh, Lps_revCh, Lps_inSitu1)
        _ = G1[SR].plot(yLim=None, title='G in situ ganho 1',
                        xLabel='Bandas de frequência [Hz]',
                        yLabel='Fator de força [dB]')
        
        G1[SR] = newG[SR]
        # Save
        pytta.save(analysisFileName + "_" + SR + ".hdf5", G1, Lpe_inSitu1,
                   Lps_inSitu1)

# %%
if len(G1AllPos.keys()) == 6:
    pytta.save(analysisFileName + ".hdf5", G1AllPos, Lpe_inSitu1,
                       Lps_inSitu1)
        
# %%
G1 = {'dictName':'G1'}
Lpe_inSitu1 = {'dictName':'Lpe_inSitu1'}

#%%
for source in [1, 2]:
    for receiver in [1, 2, 3]:
        SR = "S" + str(source) + "R" + str(receiver)
        a = pytta.load(analysisFileName + "_" + SR + ".hdf5")
Exemplo n.º 9
0
        'samplingRate': 44100,  # Frequency of sampling
        'freqMin': 100,  # Minimum frequency of interest NOT WORKING
        'freqMax': 20000,  # Maximum frequency of interest NOT WORKING
        'device': device,  # Device number provided at runtime
        'inChannels': [1],  # List of hardware channels to be used
        'outChannels': [1],  # List of hardware channels to be used
        'comment': 'Testing; 1, 2.'  # just a comentary
    }

    ms = pytta.generate.measurement(
        'frf',  # Generates the configuration for an impulse response measurement
        **measurementParams)

    #%% Run the measurement and process data, return an ImpulseResponse object
    med1 = ms.run()

    #%% Shows the data
    med1.plot_time()
    med1.plot_freq()

    #%% Save the measurement
    path = 'data\\'
    name = 'myir'
    filename = f'{path}{name}'

    # Save PyTTaObj as HDF5 file
    pytta.save(filename, med1)

    # Export wave file of SignalObj
    # pytta.write_wav(filename+'.wav', med1.IR)