(Arne Babenhauserheide)
2016-11-08: polish plot polish plot
diff --git a/examples/ensemble-estimation.w b/examples/ensemble-estimation.w
--- a/examples/ensemble-estimation.w
+++ b/examples/ensemble-estimation.w
@@ -115,7 +115,8 @@ define x^seed-std : append-ec (: i (leng
define P : make-covariance-matrix-from-standard-deviations x^seed-std
;; Then generate observations
-define y⁰-num 600 ; careful: N² in memory, 1000 is still OK
+define y⁰-num 3000
+define y⁰-plot-skip 100
define y⁰-pos-max 100
;; At the positions where they are measured. Drawn randomly to avoid
;; giving an undue weight to later values.
@@ -155,7 +156,7 @@ x are parameters to be optimized, pos is
;; the equivalent of measured observations
define y^true : list-ec (: i y⁰-pos) : H x^true i
;; now we disturb the observations with a fixed standard deviation. This assumes uncorrelated observations.
-define y⁰-std 4
+define y⁰-std 16
define y⁰ : list-ec (: i y^true) : + i : * y⁰-std : random:normal
;; and define the covariance matrix. This assumes uncorrelated observations.
define R : make-covariance-matrix-from-standard-deviations : list-ec (: i y⁰-num) y⁰-std
@@ -272,7 +273,8 @@ define : flatten li
define : main args
let*
- : ensemble-member-count 32
+ : ensemble-member-count 256
+ ensemble-member-plot-skip 32
optimized : EnSRT H x^b P y⁰ R y⁰-pos ensemble-member-count
x-opt : list-ref optimized 0
x-deviations : list-ref optimized 1
@@ -324,15 +326,16 @@ define : main args
format port "pl.plot(*zip(*sorted(zip(ypos, ytrue))), label='true')\n"
format port "pl.errorbar(*zip(*sorted(zip(ypos, yopt))), yerr=zip(*sorted(zip(ypos, yoptstds)))[1], label='optimized')\n"
format port "eb=pl.errorbar(*zip(*sorted(zip(ypos, y0))), yerr=yerr, alpha=0.6, marker='+', linewidth=0, label='measurements')\neb[-1][0].set_linewidth(1)\n"
- list-ec (: step 0 (length x^steps) 10) ; stepsize 10: sample one in 10 steps
- list-ec (: member (list-ref x^steps (- (length x^steps) step 1))) ; reversed
- begin
+ list-ec (: step 0 (length x^steps) y⁰-plot-skip)
+ let : : members : list-ref x^steps (- (length x^steps) step 1)
+ list-ec (: member-idx 0 (length members) ensemble-member-plot-skip) ; reversed
+ let : : member : list-ref members member-idx
format port "paired = pl.get_cmap('Paired')
cNorm = mpl.colors.Normalize(vmin=~A, vmax=~A)
scalarMap = mpl.cm.ScalarMappable(norm=cNorm, cmap=paired)\n" 0 (length member)
list-ec (: param-idx 0 (length member) 4) ; step = 4
; plot parameter 0
- format port "pl.plot(~A, ~A, marker='.', color=scalarMap.to_rgba(~A), linewidth=0, label='', alpha=0.6, zorder=-1)\n" (/ step 10) (+ 80 (* 60 (list-ref member param-idx))) param-idx
+ format port "pl.plot(~A, ~A, marker='.', color=scalarMap.to_rgba(~A), linewidth=0, label='', alpha=0.6, zorder=-1)\n" (/ step y⁰-plot-skip) (+ 80 (* 60 (list-ref member param-idx))) param-idx
format port "pl.legend(loc='upper right')\n"
format port "pl.xlabel('position [arbitrary units]')\n"
format port "pl.ylabel('value [arbitrary units]')\n"