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