1:
#|
2:
3:
(load "all")
4:
(load "fft-basic")
5:
6:
(define output-directory "99.9th-percentile/real/")
7:
8:
(define output-directory "99.9th-percentile/complex/")
9:
10:
|#
11:
12:
(define output-directory "99.9th-percentile/complex-fft-smoothing/")
13:
14:
15:
(define data (time (read-data file-name)))
16:
17:
(time (data-fft->image data))
18:
19:
(define volume-50-display (time (Array->Fixed-array f64-array-manipulators (volume->magnitude-display ((Array-accessor (curry data 1)) 50)))))
20:
21:
(set! data #f)
22:
23:
(time (write-pgm (f64->pgm 255 (normalize-magnitude-display volume-50-display))
24:
		 (string-append output-directory "volume-50.pgm")))
25:
26:
(define shrinkage-parameters '())
27:
28:
(profile-start!)
29:
30:
(for-each (lambda (all-stuff)
31:
	    (let* ((filters (car all-stuff))
32:
		   (description (cadr all-stuff))
33:
		   (active-regions-name (caddr all-stuff))
34:
		   (data (time (read-data file-name)))
35:
		   (ignore (time (data-fft->image data)))
36:
		   (real-data (time (Array-map f64-array-manipulators
37:
					       Complex-magnitude
38:
					       data)))
39:
		   (shrinkage-parameter  (if filters (time (real-generic-smooth-data real-data filters))))
40:
		   (active-regions (time (real-compute-active-regions real-data)))
41:
		   (active-regions-display (time (active-regions->display active-regions)))
42:
		   (active-regions-pgm (time (active-regions->pgm active-regions))))
43:
	      (time (write-pgm active-regions-pgm
44:
			       (string-append output-directory
45:
					      "active-regions-"
46:
					      active-regions-name
47:
					      ".pgm")))
48: .01%
	      (time (write-pgm (f64->pgm 255
49:
					 (normalize-magnitude-display
50:
					  (Array-lazy-map (lambda (active? magnitude)
51:
							    (* active? magnitude))
52:
							  active-regions-display
53:
							  volume-50-display)))
54:
			       (string-append output-directory
55:
					      "normalized-active-regions-"
56:
					      active-regions-name
57:
					      ".pgm")))
58:
	      (if filters
59:
		  (set! shrinkage-parameters (cons (list description ": " shrinkage-parameter #\newline)
60:
						   shrinkage-parameters)))))
61:
	  (list (list #f
62:
		      "No smoothing"
63:
		      "no-smoothing")))
64:
65:
(profile-stop!)
66:
67:
(write-profile-report "fMRI")
68:
#|
69:
70:
(for-each (lambda (all-stuff)
71:
	    (let* ((filters (car all-stuff))
72:
		   (description (cadr all-stuff))
73:
		   (active-regions-name (caddr all-stuff))
74:
		   (data (time (read-data file-name)))
75:
		   (ignore (time (generic-smooth-data data slice-filters)))
76:
		   (ignore (time (data-fft->image data)))
77:
		   (shrinkage-parameter  (if filters (time (generic-smooth-data data filters))))
78:
		   (active-regions (time (real-compute-active-regions data)))
79:
		   (active-regions-display (time (active-regions->display active-regions)))
80:
		   (active-regions-pgm (time (active-regions->pgm active-regions))))
81:
	      (time (write-pgm active-regions-pgm
82:
			       (string-append output-directory
83:
					      "active-regions-"
84:
					      active-regions-name
85:
					      ".pgm")))
86:
	      (time (write-pgm (f64->pgm 255
87:
					 (normalize-magnitude-display
88:
					  (Array-lazy-map (lambda (active? magnitude)
89:
							    (* active? magnitude))
90:
							  active-regions-display
91:
							  volume-50-display)))
92:
			       (string-append output-directory
93:
					      "normalized-active-regions-"
94:
					      active-regions-name
95:
					      ".pgm")))
96:
	      (if filters
97:
		  (set! shrinkage-parameters (cons (list description ": " shrinkage-parameter #\newline)
98:
						   shrinkage-parameters)))))
99:
	  (list (list #f
100:
		      "No smoothing"
101:
		      "no-smoothing")
102:
		(list slice-filters
103:
		      "Slice smoothing"
104:
		      "slice-smoothing")
105:
		(list volume-filters
106:
		      "Volume smoothing"
107:
		      "volume-smoothing")
108:
		(list anisotropic-early-time-filters
109:
		      "Time/volume anisotropic smoothing with early time filters"
110:
		      "anisotropic-early-time-smoothing")
111:
		(list anisotropic-late-time-filters
112:
		      "Time/volume anisotropic smoothing with late time filters"
113:
		      "anisotropic-late-time-smoothing")
114:
		(list isotropic-early-time-filters
115:
		      "Time/volume isotropic smoothing with early time filters"
116:
		      "isotropic-early-time-smoothing")
117:
		(list isotropic-late-time-filters
118:
		      "Time/volume isotropic smoothing with late time filters"
119:
		      "isotropic-late-time-smoothing")))
120:
121:
(with-output-to-file (string-append output-directory "Shrinkage-parameters")
122:
    (lambda ()
123:
      (display (reverse shrinkage-parameters))))
124:
|#