changeset 18:4a967f4f18a0

Exact reconstruction now works.
author Nic Cleju <nikcleju@gmail.com>
date Thu, 05 Apr 2012 11:01:22 +0300
parents 7fdf964f4edd
children 2837cfeaf353
files stdparams_exact.py test_approx.py test_exact.py
diffstat 3 files changed, 28 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/stdparams_exact.py	Tue Apr 03 16:27:18 2012 +0300
+++ b/stdparams_exact.py	Thu Apr 05 11:01:22 2012 +0300
@@ -18,7 +18,7 @@
 paramstest = dict()
 paramstest['algos'] = exact_gap,exact_sl0,exact_bp,exact_ompeps,exact_tst       # tuple of algorithms
 #paramstest['algos'] = exact_bp_cvxopt,       # tuple of algorithms
-paramstest['d'] = 50.0
+paramstest['d'] = 200.0
 paramstest['sigma'] = 1.2
 paramstest['deltas'] = numpy.array([0.05, 0.45, 0.95])
 paramstest['rhos'] = numpy.array([0.05, 0.45, 0.95])
--- a/test_approx.py	Tue Apr 03 16:27:18 2012 +0300
+++ b/test_approx.py	Thu Apr 05 11:01:22 2012 +0300
@@ -260,7 +260,10 @@
   lambdas = params['lambdas']
   numvects = params['numvects']
   SNRdb = params['SNRdb']
-  ncpus = params['ncpus']
+  if 'ncpus' in params:
+    ncpus = params['ncpus']
+  else:
+    ncpus = None    
   savedataname = params['savedataname']
   
   if ncpus is None:
@@ -284,12 +287,14 @@
   print "  Running algorithms",[algotuple[1] for algotuple in algosN],[algotuple[1] for algotuple in algosL]
   
   # Prepare parameters
+  print "Generating task parameters..."
   taskparams = generateTaskParams(params)
   
   # Store global variables
   currmodule.ntasks = len(taskparams)
   
   # Run
+  print "Running..."
   taskresults = []
   if doparallel:
     currmodule.printLock = multiprocessing.Lock()
--- a/test_exact.py	Tue Apr 03 16:27:18 2012 +0300
+++ b/test_exact.py	Thu Apr 05 11:01:22 2012 +0300
@@ -216,7 +216,7 @@
   """
 
   print "This is analysis recovery ABS exact script by Nic"
-  print "Running simulation
+  print "Running simulation"
 
   algos = params['algos']
   d = params['d']
@@ -225,7 +225,10 @@
   rhos = params['rhos']
   numvects = params['numvects']
   SNRdb = params['SNRdb']
-  ncpus = params['ncpus']
+  if 'ncpus' in params:
+    ncpus = params['ncpus']
+  else:
+    ncpus = None
   savedataname = params['savedataname']
 
   if ncpus is None:
@@ -249,12 +252,14 @@
   print "  Running algorithms",[algotuple[1] for algotuple in algos]
   
   # Prepare parameters
+  print "Generating task parameters..."
   taskparams = generateTaskParams(params)
 
   # Store global variables
   currmodule.ntasks = len(taskparams)
  
   # Run
+  print "Running..."
   taskresults = []
   if doparallel:
     currmodule.printLock = multiprocessing.Lock()
@@ -326,6 +331,11 @@
           currmodule.printLock.acquire()
           print "Caught exception when running algorithm",strname," :",e.message
           currmodule.printLock.release()
+      except ValueError as e:
+        if currmodule.printLock:
+          currmodule.printLock.acquire()
+          print "Caught ValueError exception when running algorithm",strname," :",e.message
+          currmodule.printLock.release()
       err[strname][iy]    = numpy.linalg.norm(x0[:,iy] - xrec[strname][:,iy])
       relerr[strname][iy] = err[strname][iy] / numpy.linalg.norm(x0[:,iy])
   for algofunc,strname in algos:
@@ -361,17 +371,20 @@
   Generates figures from paper "Analysis-based sparse reconstruction with synthesis-based solvers".
   The figures are saved in the current folder.
   """
-  run(stdparams_exact.std1)
-  plot(stdparams_exact.std1['savedataname'])
+  run(stdparams_exact.params1)
+  plot(stdparams_exact.params1['savedataname'])
   
 # Script main
 if __name__ == "__main__":
   
   # Set the number of cpus for paraller running (or comment to leave default = max)
   #stdparams_exact.paramstest['ncpus'] = 1
-  
+
+  # Run test parameters
+  #stdparams_exact.paramstest['ncpus'] = 1
+  #run(stdparams_exact.paramstest)
+  #plot(stdparams_exact.paramstest['savedataname'])
+
+  #stdparams_exact.params1['ncpus'] = 1
   generateFig()
 
-  # Run test parameters
-  #run(stdparams_exact.paramstest)
-  #plot(stdparams_exact.paramstest['savedataname'])