00001 #include "pga.h"
00002
00003 #define MAX_DAT 1000
00004
00005 #define NEQ 18
00006
00007 #define MAX_SPIKES 100000
00008
00009 struct input_data
00010 {
00011 int position;
00012 int filled;
00013 double data[MAX_DAT][2];
00014 double params[NUM_PARAMS];
00015 };
00016
00017 double na_m_inf(double v);
00018
00019 double na_h_deriv(double v, double na_h);
00020
00021 double kd_n_deriv(double v, double kd_n);
00022
00023 double a_bfast_deriv(double v, double a_bfast);
00024
00025 double a_a_deriv(double v, double a_a);
00026
00027 double a_bslow_deriv(double v, double a_bslow);
00028
00029 double h_r_deriv(double v, double h_r);
00030
00031 double kv3_n_deriv(double v, double kv3_n);
00032
00033 double kv3_h_deriv(double kv3_h, double kv3_n);
00034
00035 double ca_i_deriv(double tot_ca_curr, double ca_i);
00036
00037 double ca_reverse(double ca_i);
00038
00039 double k_a_deriv(double v, double k_a, double ca_i);
00040
00041 double k_ca_a_deriv(double v, double ca_i, double k_ca_a);
00042
00043 double k_ca_b_deriv(double ca_i, double k_ca_b);
00044
00045 double ahp_a_deriv(double ca_i, double ahp_a);
00046
00047 double ca_f1_a_deriv(double v, double ca_f1_a);
00048
00049 double ca_f1_b_deriv(double v, double ca_f1_b);
00050
00051 double ca_f2_a_deriv(double v, double ca_f2_a);
00052
00053 double ca_s_a_deriv(double v, double ca_s_a);
00054
00055 int stim(double t1, struct input_data *model_data_ptr);
00056
00057 int get_delay(double spike_times[],
00058 int model_spike_count,
00059 double exp_time[],
00060 int exp_delay_count,
00061 double model_delay[]
00062 );
00063
00064 void fill_struct(struct input_data *pulse_train_ptr);
00065
00066 int get_exp_delay(double *exp_time_ptr, double *exp_delay_ptr);
00067
00068 int model(struct input_data *model_data_ptr, double spike_times[]);
00069
00070 size_t model_slow_wave(struct input_data *model_data_ptr, double ** wave);
00071
00072 void model_wave_and_spikes(
00073 struct input_data *model_data_ptr,
00074 double ** wave_ptr, size_t * wave_size,
00075 double ** spike_ptr, size_t * spike_size);
00076