Example #1
0
    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]
Example #2
0
    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)
Example #3
0
    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]