7/21/01 LHC ARLO model for EarLab website, a digital warehouse of auditory models and data.
This is C code (prepared by Xuedong Zhang) for the AN model described in "Auditory nerve model for predicting performance limits of normal and impaired listeners," Heinz, M.G., Zhang, X., Bruce, I.C., and Carney, L.H. ARLO (2001) 2:91-96. This code is written in C, such that it is compatible with MATLAB. After loading all of these files into your directory, In Matlab, type: compile_ARLO to create a mex file (an_arlo) that can be called as a Matlab function. Run TEST.m in matlab to test the model - this code provides a simple example. The basic call to the model is as follows: >> sout(:,index) = an_arlo([tdres,cf,spont,model,species,ifspike],sig'); where 'sout' is the synapse output (in sp/sec) as described in JASA 2001. Note the following INPUT parameters are required to run the model: tdres: is the time-domain resolution of the input stimulus waveform in seconds- this sets the temporal resolution is used throughout the model. cf: is the characteristic frequency of a single AN fiber, in Hz. spont: is spontaneous rate, in sp/sec model: refers to the version of the model used, as follows: Model numbers as used in ARLO Heinz et al., Fig. 4 - 1: Nonlinear_w/compression & suppression (model for 'healthy' ear) 2: Nonlinear_w/compression, but without off-frequency suppression 3: Linear sharp 4: Linear broad, low threshold 5: Linear broad, high threshold species: refers to the species modeled - where 0 = human (as in ARLO paper) 9 = cat, all CFs (as in JASA 2001 Zhang et al., paper) 1 = cat, only low CFs (as in Carney '93 JASA paper - not recommended) ifspike: is a flag related to whether or not spikes are generated. if ifspike = 0, the sout is scaled (with parameter Ass) to yield appropriate average rates _without_ refractoriness (as in ARLO) if ifspike = 1, the sout is scaled (with parameter Ass) to yield higher rates, such that after spike generation with refractoriness, average rates are again appropriate. Finally, sig is an array that holds the stimulus waveform, scaled in pascals and sampled at the resolution specified in the input parameter tdres. To generate spike times, see latter part of the example program TEST.m: the function call is: >> [sptime,nspikes] = sgmodel([tdres, nrep],sout); where tdres is the same as above, and nrep is the number of repetitions. (This function runs fine in Matlab6 version 12, had problems in Matlab5.3.) Good Luck! -Laurel Carney 7/28/01