def realTest(self): pySig = signals.InitFromFile('../../../data/glocs.wav',forceMono=True,doNormalize=True); pySig2 = pySig.copy() # pySig3 = pySig.copy() decalage = 500; pySig.crop(0, 4.5*pySig.samplingFrequency); pySig2.crop(decalage, decalage + 4.5*pySig.samplingFrequency); # pySig3.crop(decalage, decalage + 4.5*pySig.samplingFrequency); pySig.pad(16384) pySig2.pad(16384) # pySig3.pad(16384) dico = [128,1024,8192]; tol = [2]*len(dico); parallelProjections.initialize_plans(np.array(dico),np.array(tol)) classicDIco = mdct_dico.LODico(dico); jointDico = joint_dico.SetDico(dico , selectNature='sum') nbAtoms = 50; print "%%%%%%%%%%%%%%% Testing mp with one signal %%%%%%%%%%%%%%%" print "" approxClassic, decayClassic = mp.mp(pySig, classicDIco, 20, nbAtoms, padSignal=False, debug=0); print "" # print "%%%%%%%%%%%%%%% Testing Joint mp with one signal %%%%%%%%%%%%%%%" # print "" # approxCommon, approxSpecList, decayList,residualSignalList = mp.mp_joint((pySig,), jointDico, 20, nbAtoms, debug=0); # print "" # plt.plot() print "%%%%%%%%%%%%%%% Testing Joint mp with two signal %%%%%%%%%%%%%%%" approxCommon, approxSpecList, decayList, residualSignalList = mp.mp_joint((pySig,pySig2), jointDico, 20, nbAtoms, debug=2); print [abs(atom.getAmplitude()) for atom in approxSpecList[0].atoms]
def toleranceTests(self): print "%%%%%%%%%%%%%%% Testing Joint mp with increased Tolerance %%%%%%%%%%%%%%%" pySig = signals.InitFromFile('../../../data/glocs.wav',forceMono=True,doNormalize=True); pySig2 = pySig.copy() # pySig3 = pySig.copy() decalage = 750; pySig.crop(0, 4*16384); pySig2.crop(decalage, decalage + 4*16384); # pySig3.crop(decalage, decalage + 4.5*pySig.samplingFrequency); pySig.pad(16384) pySig2.pad(16384) # pySig3.pad(16384) dico = [128,1024]; tol = [16,2]; jointDico = joint_dico.SetDico(dico , selectNature='sum'); jointDicoTol = joint_dico.SetDico(dico , selectNature='sum', tol = tol); print jointDico.tolerances nbatoms = 50; meanApprox, currentApproxList, resEnergyList , residualSignalList = mp.mp_joint((pySig,pySig2,pySig2), jointDico, 10, nbatoms ,debug=0) print jointDicoTol.tolerances meanApproxTol, currentApproxListTol, resEnergyListTol , residualSignalListTol = mp.mp_joint((pySig,pySig2,pySig2), jointDicoTol, 10, nbatoms ,debug=0) for i in range(len(residualSignalList)): print np.sum(residualSignalList[i].dataVec **2), np.sum(residualSignalListTol[i].dataVec **2)
def nonLinearTest(self): """ Youpi""" pySig = signals.InitFromFile('../../../data/glocs.wav',forceMono=True,doNormalize=True); pySig2 = signals.InitFromFile('../../../data/voicemale.wav',forceMono=True,doNormalize=True); pySig3 = signals.InitFromFile('../../../data/voicefemale.wav',forceMono=True,doNormalize=True); pySig4 = signals.InitFromFile('../../../data/orchestra.wav',forceMono=True,doNormalize=True); decalage = 0; Start = 1.0; Stop = 1.5 pySig.crop(Start*pySig.samplingFrequency, Stop*pySig.samplingFrequency); pySig2.crop(Start*pySig.samplingFrequency, Stop*pySig.samplingFrequency); pySig3.crop(Start*pySig.samplingFrequency, Stop*pySig.samplingFrequency); pySig4.crop(Start*pySig.samplingFrequency, Stop*pySig.samplingFrequency); pySig2.dataVec += pySig.dataVec pySig3.dataVec += pySig.dataVec pySig4.dataVec += pySig.dataVec pySig2.pad(8192) pySig3.pad(8192) pySig4.pad(8192) # pySig3.pad(16384) dico = [128,1024,8192]; nbAtoms = 200; jointDico = joint_dico.SetDico(dico , selectNature='sum', tol=[2,2,2]); jointDicoNL = joint_dico.SetDico(dico , nonLinear = True, selectNature='weighted', tol=[2,2,2] , params=1); # let us compare the two decomposition approxCommon, approxSpecList, decayList, residualSignalList = mp.mp_joint((pySig2,pySig3,pySig4), jointDico, 20, nbAtoms, debug=0, padSignal=False); approxCommon2, approxSpecList2, decayList2, residualSignalList2 = mp.mp_joint((pySig3,pySig2,pySig4), jointDico, 20, nbAtoms, debug=0, padSignal=False); approxCommonNL, approxSpecListNL, decayListNL, residualSignalListNL = mp.mp_joint((pySig2,pySig3,pySig4), jointDicoNL, 20, nbAtoms, debug=0, padSignal=False); # shifting the order of the signals just to see if it's the same approxCommonNL2, approxSpecListNL2, decayListNL2, residualSignalListNL2 = mp.mp_joint((pySig3,pySig2,pySig4), jointDicoNL, 20, nbAtoms, debug=0, padSignal=False); # cProfile.runctx('mp.mp_joint((pySig2,pySig3), jointDico, 10, nbAtoms ,debug=0,doClean=False,padSignal=False)' , globals() , locals()) # cProfile.runctx('mp.mp_joint((pySig2,pySig3), jointDicoNL, 10, nbAtoms ,debug=0,doClean=False,padSignal=False)' , globals() , locals()) # print [block.sigNumber for block in jointDico.blocks] # print [block.sigNumber for block in jointDicoNL.blocks] print decayList[0][-1],decayList2[0][-1], decayListNL[0][-1], decayListNL2[1][-1] print decayList[1][-1],decayList2[1][-1], decayListNL[1][-1], decayListNL2[0][-1] print decayList[2][-1],decayList2[2][-1], decayListNL[2][-1], decayListNL2[2][-1] A = np.concatenate(jointDicoNL.blocks[2].intermediateProjection, axis = 1); # plt.figure() # plt.imshow(np.sqrt(np.abs(A[12000:14000,:].T)), interpolation='nearest',aspect='auto',cmap=cm.get_cmap('bone')) # plt.colorbar() # plt.figure() # plt.plot(jointDico.blocks[2].bestScoreTree,'b') # plt.plot(jointDicoNL.blocks[2].bestScoreTree,'r') # plt.figure() # plt.plot(jointDico.blocks[2].enframedDataMatrixList[0],'b') # plt.plot(jointDicoNL.blocks[2].enframedDataMatrixList[0],'r:') # plt.figure() # plt.plot(jointDico.blocks[2].projectionMatrix,'b') # plt.plot(jointDicoNL.blocks[2].projectionMatrix,'r') # print [atom.getAmplitude() for atom in approxCommonNL.atoms]