/* * file: column.h * * [DEFINE DESCRIPTION = Neural column class] * * Name Date Description * -------------- -------- ------------------------------------- * Andrew H. Fagg 09/05/94 Original * * */ #ifndef COLUMN_CLASS #define COLUMN_CLASS #include "gate.h" class column_parms_class { public: nsl_data* collector_kx1; nsl_data* collector_kx2; nsl_data* collector_ky1; nsl_data* collector_ky2; nsl_data* collector_ky3; nsl_data* sensory_kx1; /* NSLramp */ nsl_data* sensory_kx2; /* used as a gain - which is opposite */ /* from the standard NSL interpretation */ /* of kx2! */ nsl_data* sensory_ky1; nsl_data* sensory_ky2; nsl_data* output_kx1; nsl_data* output_kx2; nsl_data* output_ky1; nsl_data* output_ky2; nsl_data* minimum_output_mem; nsl_data* tau; /* Output unit tau. */ nsl_data* pet_flag; }; class column_class { int num_gates; /* Gate inputs */ gate_class** gates; /* Column states */ nsl_data collector_mem; nsl_data collector; nsl_data sensory_mem; nsl_data sensory; nsl_data output_mem; nsl_data output; nsl_data pet_pos; /* PET components */ nsl_data pet_neg; /* Sensor inputs */ connector_class* sensory_connector; nsl_vector* sensory_weights; /* Parameters */ column_parms_class* parms; /* Object name */ name_class* name; public: /* Methods */ column_class(char*, name_class* , short, column_parms_class*, int, short, gate_parms_class*); ~column_class(); void init_weights(); //OVERLOAD CALL: init_weights: column.c(column_class), gate.c(gate_class), layer.c(layer_class) void clear_activities(); //OVERLOAD CALL: clear_activities: column.c(column_class), gate.c(gate_class), layer.c(layer_class) void forward_mem(); //OVERLOAD CALL: forward_mem: column.c(column_class), layer.c(layer_class) void forward_act(); //OVERLOAD CALL: forward_act: column.c(column_class), layer.c(layer_class) name_class* get_name(); //OVERLOAD CALL: get_name: column.c(column_class), connector.c(connector_class), gate.c(gate_class), layer.c(layer_class), reverse_connector.c(reverse_connector_input_class), reverse_connector.c(reverse_connector_output_class), sensor.c(sensor_class) nsl_data* get_collector(); //OVERLOAD CALL: get_collector: layer.c(layer_class), column.c(column_class) nsl_data* get_collector_mem(); //OVERLOAD CALL: get_collector_mem: column.c(column_class), layer.c(layer_class) nsl_data* get_sensory(); //OVERLOAD CALL: get_sensory: layer.c(layer_class), column.c(column_class) nsl_data* get_sensory_mem(); //OVERLOAD CALL: get_sensory_mem: column.c(column_class), layer.c(layer_class) nsl_data* get_output(); //OVERLOAD CALL: get_output: layer.c(layer_class), column.c(column_class) nsl_data* get_output_mem(); //OVERLOAD CALL: get_output_mem: column.c(column_class), layer.c(layer_class) nsl_vector* get_sensory_weights(); connector_class* get_sensory_connector(); connector_class* get_gate_connector(int, int); //OVERLOAD CALL: get_gate_connector: column.c(column_class), layer.c(layer_class) nsl_data* get_column_output(int); void report_column(int, int); //OVERLOAD CALL: report_column: column.c(column_class), layer.c(layer_class) void report_gate(int, int); //OVERLOAD CALL: report_gate: column.c(column_class), gate.c(gate_class), layer.c(layer_class) int stuff(ifstream&); //OVERLOAD CALL: stuff: gate.c(gate_class), layer.c(layer_class), column.c(column_class), connector.c(connector_class) nsl_data* get_pet_pos(); //OVERLOAD CALL: get_pet_pos: column.c(column_class), gate.c(gate_class) nsl_data* get_pet_neg(); //OVERLOAD CALL: get_pet_neg: column.c(column_class), gate.c(gate_class) }; #endif