Auditory nerve model for predicting performance limits (Heinz et al 2001)

 Download zip file 
Help downloading and running models
Accession:36834
A computational auditory nerve (AN) model was developed for use in modeling psychophysical experiments with normal and impaired human listeners. In this phenomenological model, many physiologically vulnerable response properties associated with the cochlear amplifier are represented by a single nonlinear control mechanism, see paper for details. Several model versions are described that can be used to evaluate the relative effects of these nonlinear properties.
Reference:
1 . Heinz MG, Zhang X, Bruce IC, Carney LH (2001) Auditory nerve model for predicting performance limits of normal and impaired listeners. Acoustics Research Letters Online 2(3):91-96
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Auditory nerve;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program; MATLAB;
Model Concept(s): Activity Patterns; Temporal Pattern Generation; Audition;
Implementer(s): Zhang, Xuedong ;
#ifndef _HC_H
#define _HC_H
#include <math.h>
#include <stdlib.h>
#include "filters.h"

typedef struct __NonLinear TNonLinear;
typedef struct __HairCell THairCell;
THairCell* getHairCell(double tdres, double cutoff, int order);
TNonLinear* getAfterOhcNL(double taumin,double taumax,double dc,double minR);

/*/AfterOHC NonLinear */
double runAfterOhcNL(TNonLinear* p, double x);
void runAfterOhcNL2(TNonLinear* p, const double *in, double *out,const int length);
/*/OHC NonLinear function */
void init_boltzman(TNonLinear* p,double _corner,double _slope, double _strength,
   	                  double _x0,double _s0,double _x1,double _s1,double _asym);
double runBoltzman(TNonLinear *p,double x);
void runBoltzman2(TNonLinear *p,const double *in,double *out,const int length);
/*/IHC NonLinear function */
double runIHCNL(TNonLinear * p,double x);
void runIHCNL2(TNonLinear* p,const double *in,double *out,const int length);
/*/IHCPPI Nonlinear */
double runIHCPPI(TNonLinear* p, double x);
void runIHCPPI2(TNonLinear* p,const double *in,double *out,const int length);
/*/HairCell run */
double runHairCell(THairCell* p,double x);
void runHairCell2(THairCell* p,const double *in,double *out,const int length);

/*
 *
 * ################# Structure Implementation #######################
 *
 */
struct __NonLinear{
  double (*run)(TNonLinear* p,double x);
  void (*run2)(TNonLinear *p,const double *in,double *out,const int length);
  /*/For OHC Boltzman */
  double p_corner,p_slope,p_strength,x0,s0,x1,s1,shift;
  double Acp,Bcp,Ccp;
  /*/For AfterOHCNL */
  double dc,minR,A,TauMax,TauMin; /*/s0 also used by AfterOHCNL */
  /*/For IHC nonlinear function */
  double A0,B,C,D;
  /*/For IHCPPI nonlinear */
  double psl,pst,p1,p2;
};

struct __HairCell{
  double (*run)(THairCell *p,double x);
  void (*run2)(THairCell* p,const double *in, double *out,const int length);
  TLowPass hclp;
  TNonLinear hcnl;
  /*/Boltzman Like NonLinear */
  void (*setOHC_NL)(THairCell*,double,double,double,double,double,double,double,double);
  void (*setIHC_NL)();
};

#endif


Loading data, please wait...