comparison ABSexact.py @ 13:a2d881253324

In working, not debugged yet
author Nic Cleju <nikcleju@gmail.com>
date Mon, 12 Mar 2012 17:04:00 +0200
parents b48f725ceafa
children f2eb027ed101
comparison
equal deleted inserted replaced
12:86e1204b9e69 13:a2d881253324
1 # -*- coding: utf-8 -*-
2 """
3 Created on Fri Mar 09 14:06:13 2012
4
5 @author: ncleju
6 """
7
8 import numpy
9 import pyCSalgos.BP.l1eq_pd
10 import pyCSalgos.OMP.omp_QR
11 import pyCSalgos.SL0.SL0
12 import pyCSalgos.TST.RecommendedTST
13
14 def bp(y,M,Omega,x0, lbtol=1e-3, mu=10, cgtol=1e-8, cgmaxiter=200, verbose=False):
15
16 N,n = Omega.shape
17 D = numpy.linalg.pinv(Omega)
18 U,S,Vt = numpy.linalg.svd(D)
19 Aextra = Vt[-(N-n):,:]
20
21 # Create aggregate problem
22 Atilde = numpy.vstack((numpy.dot(M,D), Aextra))
23 ytilde = numpy.concatenate((y,numpy.zeros(N-n)))
24
25 return numpy.dot(D , pyCSalgos.BP.l1eq_pd.l1eq_pd(x0,Atilde,Atilde.T,ytilde, lbtol, mu, cgtol, cgmaxiter, verbose))
26
27 def ompeps(y,M,Omega,epsilon):
28
29 N,n = Omega.shape
30 D = numpy.linalg.pinv(Omega)
31 U,S,Vt = numpy.linalg.svd(D)
32 Aextra = Vt[-(N-n):,:]
33
34 # Create aggregate problem
35 Atilde = numpy.vstack((numpy.dot(M,D), Aextra))
36 ytilde = numpy.concatenate((y,numpy.zeros(N-n)))
37
38 opts = dict()
39 opts['stopCrit'] = 'mse'
40 opts['stopTol'] = epsilon
41 return numpy.dot(D , pyCSalgos.OMP.omp_QR.greed_omp_qr(aggy,aggD,aggD.shape[1],opts)[0])
42
43 def ompk(y,M,Omega,k):
44
45 N,n = Omega.shape
46 D = numpy.linalg.pinv(Omega)
47 U,S,Vt = numpy.linalg.svd(D)
48 Aextra = Vt[-(N-n):,:]
49
50 # Create aggregate problem
51 Atilde = numpy.vstack((numpy.dot(M,D), Aextra))
52 ytilde = numpy.concatenate((y,numpy.zeros(N-n)))
53
54 opts = dict()
55 opts['stopTol'] = k
56 return numpy.dot(D , pyCSalgos.OMP.omp_QR.greed_omp_qr(aggy,aggD,aggD.shape[1],opts)[0])
57
58 def sl0(y,M,Omega, sigma_min, sigma_decrease_factor=0.5, mu_0=2, L=3, true_s=None):
59
60 N,n = Omega.shape
61 D = numpy.linalg.pinv(Omega)
62 U,S,Vt = numpy.linalg.svd(D)
63 Aextra = Vt[-(N-n):,:]
64
65 # Create aggregate problem
66 Atilde = numpy.vstack((numpy.dot(M,D), Aextra))
67 ytilde = numpy.concatenate((y,numpy.zeros(N-n)))
68
69 return numpy.dot(D, pyCSalgos.SL0.SL0.SL0(Atilde,ytilde,sigma_min,sigma_decrease_factor,mu_0,L,true_s))
70
71 def tst_recom(y,M,Omega, nsweep=300, tol=0.00001, xinitial=None, ro=None):
72
73 N,n = Omega.shape
74 D = numpy.linalg.pinv(Omega)
75 U,S,Vt = numpy.linalg.svd(D)
76 Aextra = Vt[-(N-n):,:]
77
78 # Create aggregate problem
79 Atilde = numpy.vstack((numpy.dot(M,D), Aextra))
80 ytilde = numpy.concatenate((y,numpy.zeros(N-n)))
81
82 return numpy.dot(D, pyCSalgos.RecomTST.RecommendedTST.RecommendedTST(Atilde, ytilde, nsweep, tol, xinitial, ro))
83