comparison model/table.c @ 0:5242703e91d3 tip

Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author tomwalters
date Fri, 20 May 2011 15:19:45 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:5242703e91d3
1 /*
2 Copyright (c) Applied Psychology Unit, Medical Research Council. 1988, 1989
3 ===========================================================================
4
5 Permission to use, copy, modify, and distribute this software without fee
6 is hereby granted for research purposes, provided that this copyright
7 notice appears in all copies and in all supporting documentation, and that
8 the software is not redistributed for any fee (except for a nominal shipping
9 charge). Anyone wanting to incorporate all or part of this software in a
10 commercial product must obtain a license from the Medical Research Council.
11
12 The MRC makes no representations about the suitability of this
13 software for any purpose. It is provided "as is" without express or implied
14 warranty.
15
16 */
17
18 /*
19 table.c - Options tables for model parameters
20
21 */
22
23 /***************************************************************************
24 * The model options are grouped according to the processing stages which use
25 * them. The stages which use each group are listed above each group. These
26 * lists contain sub-lists of stages from each model type, (ie, envelope, fine,
27 * complex, nonmult, noncalc. See model.c:FindStage() ).
28 * The options table for a particular group must be installed in the options
29 * field of the stage structure (see model.c:FindStage()) which is the lowest
30 * stage (as listed textually in the stage table) of the stages which use that
31 * group. In this way, the other stages which use that group will pick up the
32 * options when the complete options table is constructed, by accumulating all
33 * options groups from a given stage name to the bottom of the stage table.
34 * For example, the "auditory filter output" group listed just below is used
35 * by stage fbm (a "fine" model), stage bmm (a "nonmult" model), and stages
36 * fcp and fcr (both "complex" models). The group options table (fbmopts)
37 * should be installed in the stage table in the options fields for the stages
38 * fbm, bmm, and fcr. The stage fcp can be assigned NO_OPTS because it will
39 * pick up the options from stage fcr when the complete options table is
40 * constructed, (see gen.c:constructOptions()).
41 *
42 * Routes through the model.
43 * There are two parallel routes (ie sequential stages of processing):
44 * a) an auditory route (conventionally displayed as landscapes).
45 * b) a speech route (conventionally displayed as greyscales).
46 * Either route is a three-stage model, composed of a sequence of modules.
47 * The names of each of the three stages are an alias for the corresponding
48 * module at a particular stage of processing. (Eg, genbmm is the first of the
49 * three model stages in the auditory route. It is displayed as a landscape.
50 * It is an alias for genfbm, and the sequence of modules leading to this is
51 * wav,fbm).
52 * An additional route displays excitation patterns, which are basically
53 * spectra, (for example, genepn is like gennap, but viewed with the frequency
54 * axis as the abscissa. Similarly, gensas is like genbmm).
55 *
56 * Process Module Auditory Speech Excitation
57 * ---------------------------- ------ -------- ------- ----------
58 * Input wave genwav
59 * Filterbank genfbm genbmm
60 * Rectifier genfbr
61 * Compressor genfbc gensgm genasa
62 * LP filter genfbl
63 * Adaptive threshold genfbt gennap
64 * Integration and downsampling genfbd gencgm genepn
65 * Triggered integration gensai gensai
66 * Integration and downsampling gensas gensas
67 *
68 * In addition, there is a spiral mapping of the auditory image, genspl,
69 * which is a spiral version of gensai.
70 *
71 * Note that on the speech route, gensgm is identical to gencgm but with
72 * enable_at=off.
73 * Originally, gensgm and gencgm were simply aliases for the genfbd module,
74 * which were to have distinct parameters using distinct options files.
75 *
76 ****************************************************************************/
77
78
79 /******* [fbm] [bmm] [fcp,fcr] stage: "auditory filter output" ************/
80
81 static Option fbmopts[] = {
82
83 { "channels_afb", chansdflt, &chansstr, "Number of channels in filter", InOutOption},
84 { "mincf_afb", mindflt, &minstr, "Minimum center frequency (Hz)", InOutOption},
85 { "maxcf_afb", maxdflt, &maxstr, "Maximum center frequency (Hz)", InOutOption},
86 { "dencf_afb", dendflt, &denstr, "Filter density (filters/critical band)", InOutOption},
87 { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", OutputOption},
88 { "interp_afb", interpdflt, &interpstr, "Levels of interpolation to apply", SilentOption},
89 { "bwmin_afb", limitdflt, &limitstr, "Minimum filter bandwith", InOutOption},
90 { "quality_afb", qualdflt, &qualstr, "Ultimate qualtity factor of filters", InOutOption},
91 {"audiogram_afb", audiodflt, &audiostr, "Audiogram equalisation parameter\n", InOutOption},
92
93 { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", OutputOption},
94 { "float_gtf", floatdflt, &floatstr, "Floating point filter calculations", SilentOption},
95 { "gain_gtf", gaindflt, &gainstr, "Filter output amplification", InOutOption},
96 { "phase_gtf", phasedflt, &phasestr, "Phase compensation option", InOutOption},
97 { "order_gtf", orderdflt, &orderstr, "Filter order\n", InOutOption},
98
99 ( char * ) 0 } ;
100
101 /************** [fbr] stage: "rectified filter output" ******************/
102
103 static Option fbropts[] = {
104
105 { "rectify", rectdflt, &rectstr, "Rectify filter output", InOutOption},
106
107 ( char * ) 0 } ;
108
109 /*********** [fbc] [fec] stage: "compressed filter output" **************/
110
111 static Option fbcopts[] = {
112
113 { "compress", logdflt, &logstr, "Apply log compression", InOutOption},
114 { "compensate", compdflt, &compstr, "Cochlea output compressor\n", InputOption},
115
116 ( char * ) 0 } ;
117
118 /*********** [fbu] [feu] stage: "uncompressed filter output" **************/
119
120 static Option fbuopts[] = {
121
122 { "power", powerdflt, &powerstr, "Power of Compression", SilentOption},
123
124 ( char * ) 0 } ;
125
126 /*********** [fbs] [fes] stage: "saturated filter output" **************/
127
128 static Option fbsopts[] = {
129
130 { "saturate", satdflt, &satstr, "Introduce Saturation of non-linearity\n", SilentOption},
131
132 ( char * ) 0 } ;
133
134 /*********** [fbl] [fel] stage: "low-pass filtered filter output ***********/
135
136 static Option fblopts[] = {
137
138 { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", OutputOption},
139 { "meddis", meddisdflt, &meddisstr, "Enables Meddis haircell model\n", SilentOption},
140
141 { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", OutputOption},
142 { "igain_lpf", ligaindflt, &ligainstr, "Gain of integration stage\n", SilentOption},
143 { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", OutputOption},
144 { "vloss_lpf", lvlossdflt, &lvlossstr, "Rest level for loss", SilentOption},
145 { "loss_lpf", llossdflt, &llossstr, "Loss time constant", OutputOption},
146 { "loss_lpf", llossdflt, &llossstr, "Loss time constant", SilentOption},
147 { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", OutputOption},
148 { "tdown_lpf", ldowndflt, &ldownstr, "Downward time constant in ms", SilentOption},
149 { "tup_lpf", lupdflt, &lupstr, "Upward time constant in ms", SilentOption},
150 { "stages_lpf", lstagedflt, &lstagestr, "Stages of integration\n", SilentOption},
151
152 ( char * ) 0 } ;
153
154 /*********** [nap,fbt] [fet] stage: "neural activity pattern" **************/
155
156 static Option fbtopts[] = {
157
158 { "enable_at", stxdflt, &stxstr, "Enable adaptive thresholding module", InOutOption},
159 { "trise_at", risedflt, &risestr, "Threshold adaptation rate (upwards)", InOutOption},
160 {"t1recovery_at", rapiddflt, &rapidstr, "Initial recovery rate relative to filter", InOutOption},
161 {"t2recovery_at", fastdflt, &faststr, "Secondary recovery rate relative to filter", InOutOption},
162 { "propt2t1_at", propdflt, &propstr, "Relative height of secondary adaptation", InOutOption},
163 { "frecovery_at", latdflt, &latstr, "Recovery rate across frequency", InOutOption},
164 { "reclimit_at", vdraindflt, &vdrainstr, "Limitation on recovery level\n", InOutOption},
165
166 { "times_at", timesdflt, &timesstr, "Oversampling of calculation of threshold", OutputOption},
167 { "times_at", timesdflt, &timesstr, "Oversampling of calculation of threshold", SilentOption},
168
169 ( char * ) 0 } ;
170
171 /*********** [fba] [fea] stage: "adapted transduced filter output" *********/
172
173 static Option fbaopts[] = {
174
175 { "mmincf_mfb", minmfdflt, &minmfstr, "Minimum modulation frequency (Hz)", InOutOption},
176 { "mmaxcf_mfb", maxmfdflt, &maxmfstr, "Maximum modulation frequency (Hz)", InOutOption},
177 { "mdencf_mfb", denmfdflt, &denmfstr, "Modulation filter density ", InOutOption},
178 { "stepcf_mfb", stepmfdflt, &stepmfstr, "Step between images\n", InOutOption},
179
180 { "tadaptation", adapdflt, &adapstr, "Time constant of long term adaptation\n", SilentOption},
181
182 ( char * ) 0 } ;
183
184 /*********** [fbh] [feh] stage: "hard limited filter output" **************/
185
186 static Option fbhopts[] = {
187
188 { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",OutputOption},
189 { "hard_limit", harddflt, &hardstr, "Hardlimit firing rate before integration\n",SilentOption},
190
191 ( char * ) 0 } ;
192
193 /***** [sgm,cgm,fbd,fbi] [fed,fei] stage: "integrated filter output" *******/
194
195 static Option fbiopts[] = {
196
197 { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", OutputOption},
198 { "igain_idt", igaindflt, &igainstr, "Gain of integration stage\n", SilentOption},
199
200 { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", OutputOption},
201 { "vloss_idt", vlossdflt, &vlossstr, "Rest level for loss", SilentOption},
202 { "loss_idt", lossdflt, &lossstr, "Loss time constant", OutputOption},
203 { "loss_idt", lossdflt, &lossstr, "Loss time constant", SilentOption},
204 { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", OutputOption},
205 { "tdown_idt", downdflt, &downstr, "Downward time constant in ms", SilentOption},
206 { "tup_idt", updflt, &upstr, "Low-pass filter time constant in ms", InOutOption},
207 { "stages_idt", stagedflt, &stagestr, "Stages of integration\n", InOutOption},
208
209 ( char * ) 0 } ;
210
211 /*********** [spl,sai] [sie] stage: "stabilized auditory image" ************/
212
213 static Option saiopts[] = {
214
215 { "napdecay_ai", cgmdflt, &cgmstr, "Neural activity decay time constant", InOutOption},
216 { "ttdecay_ai", ttdflt, &ttstr, "Trigger threshold decay time constant", InOutOption},
217 { "utrate_ai", utlimdflt, &utlimstr, "Upper trigger rate limit (Hz)", InOutOption},
218 { "ltrate_ai", ltlimdflt, &ltlimstr, "Lower trigger rate limit (Hz)", InOutOption},
219 { "decay_ai", decaydflt, &decaystr, "Auditory image decay time constant\n", InOutOption},
220
221 ( char * ) 0 } ;
222
223 /*********** [sas] [sse] stage: "stabilized auditory spectrogram" **********/
224
225 static Option sasopts[] = {
226
227 { "ulim_sas", ulimdflt, &ulimstr, "Upper integration limit for auditory image", InOutOption},
228 { "llim_sas", llimdflt, &llimstr, "Lower integration limit for auditory image\n", InOutOption},
229
230 ( char * ) 0 } ;
231