41 "Bitmapped flag: bit 0 = Xgate, bit 1 = Ygate, bit 2 = Zgate"
42 "When true, specifies that the lookup table value should be"
43 "used directly as the state of the channel, rather than used"
44 "as a rate term for numerical integration for the state",
49 "State variable for X gate",
54 "State variable for Y gate",
59 "State variable for Y gate",
65 "Flag: when true, use concentration message rather than Vm to"
80 "Incoming message from Concen object to specific conc to use"
81 "in the Z gate calculations",
85 "Function to create specified gate."
86 "Argument: Gate type [X Y Z]",
96 "Sets up HHGate X for channel",
104 "Sets up HHGate Y for channel",
112 "Sets up HHGate Z for channel",
121 static Finfo* HHChannelBaseFinfos[] =
138 static string doc[] =
140 "Name",
"HHChannelBase",
141 "Author",
"Upinder S. Bhalla, 2014, NCBS",
142 "Description",
"HHChannelBase: Base class for "
143 "Hodgkin-Huxley type voltage-gated Ion channels. Something "
144 "like the old tabchannel from GENESIS, but also presents "
145 "a similar interface as hhchan from GENESIS. ",
150 static Cinfo HHChannelBaseCinfo(
154 sizeof( HHChannelBaseFinfos )/
sizeof(
Finfo *),
157 sizeof(doc)/
sizeof(
string)
160 return &HHChannelBaseCinfo;
175 useConcentration_( 0 ),
185 cout <<
"Warning: HHChannelBase::setPower: Cannot be negative\n";
189 cout <<
"Warning: HHChannelBase::setPower: unlikely to be > 5\n";
347 return exp( p *
log( x ) );
373 if ( orig->
cinfo() == zClass )
382 vector< double > chandata( num * 6, 0.0 );
383 vector< double >::iterator j = chandata.begin();
385 for (
unsigned int i = 0; i < num; ++i ) {
386 Eref er( orig, i + start );
398 j = chandata.begin();
399 for (
unsigned int i = 0; i < num; ++i ) {
400 Eref er( orig, i + start );
double getZpower(const Eref &e) const
static const Cinfo * hhChannelCinfo
double getYpower(const Eref &e) const
double modulation_
Value used to scale channel conductance up or down.
virtual void vSetY(const Eref &e, double Y)=0
virtual void vSetEk(const Eref &e, double Ek)=0
virtual HHGate * vGetZgate(unsigned int i) const =0
virtual void vHandleConc(const Eref &e, double conc)=0
unsigned int getNumZgates() const
Returns 1 if Z gate present, otherwise 0.
virtual double vGetGbar(const Eref &e) const =0
double(* PFDD)(double, double)
virtual void vSetYpower(const Eref &e, double Ypower)=0
double Zpower_
Exponent for Z gate.
void setNumGates(unsigned int num)
void setInstant(const Eref &e, int Instant)
double vGetModulation(const Eref &e) const
virtual void zombieSwap(const Cinfo *zCinfo)
virtual func, this base version must be called by all derived classes
static PFDD selectPower(double power)
void setY(const Eref &e, double Y)
unsigned int getNumYgates() const
Returns 1 if Y gate present, otherwise 0.
virtual void vCreateGate(const Eref &e, string gateType)=0
HHGate * getXgate(unsigned int i)
double getXpower(const Eref &e) const
void setUseConcentration(const Eref &e, int value)
HHGate * getZgate(unsigned int i)
unsigned int getNumXgates() const
virtual void vSetSolver(const Eref &e, Id hsolve)
virtual HHGate * vGetXgate(unsigned int i) const =0
void log(string msg, serverity_level_ type=debug, bool redirectToConsole=true, bool removeTicks=true)
Log to console (and to a log-file)
virtual void vSetX(const Eref &e, double X)=0
double getY(const Eref &e) const
bool doubleEq(double x, double y)
static double powerN(double x, double p)
void handleConc(const Eref &e, double conc)
static double power2(double x, double p)
void setZ(const Eref &e, double Z)
bool useConcentration_
Flag for use of conc for input to Z gate calculations.
static const Cinfo * initCinfo()
HHGate * getYgate(unsigned int i)
virtual void vSetGbar(const Eref &e, double Gbar)=0
virtual double vGetX(const Eref &e) const =0
static const Cinfo * initCinfo()
void createGate(const Eref &e, string gateType)
static void zombify(Element *orig, const Cinfo *zClass, Id hsolve)
virtual void vSetZpower(const Eref &e, double Zpower)=0
void setYpower(const Eref &e, double Ypower)
virtual void vSetZ(const Eref &e, double Z)=0
virtual double vGetY(const Eref &e) const =0
virtual void vSetInstant(const Eref &e, int Instant)=0
bool checkPower(double power)
const Cinfo * cinfo() const
void setX(const Eref &e, double X)
double Ypower_
Exponent for Y gate.
virtual unsigned int localDataStart() const =0
Returns index of first data entry on this node.
virtual unsigned int numLocalData() const =0
Returns number of local data entries on this node.
static double power4(double x, double p)
int getInstant(const Eref &e) const
int getUseConcentration(const Eref &e) const
static double power1(double x, double p)
virtual void vSetXpower(const Eref &e, double Xpower)=0
double getX(const Eref &e) const
void setZpower(const Eref &e, double Zpower)
virtual int vGetInstant(const Eref &e) const =0
virtual double vGetZ(const Eref &e) const =0
virtual HHGate * vGetYgate(unsigned int i) const =0
void setXpower(const Eref &e, double Xpower)
double getZ(const Eref &e) const
virtual void vSetUseConcentration(const Eref &e, int value)=0
double Xpower_
Exponent for X gate.
static const Cinfo * initCinfo()
Specify the Class Info static variable for initialization.
static double power3(double x, double p)
virtual double vGetEk(const Eref &e) const =0