Skip to content

Commit

Permalink
added observer for measuring trajectories
Browse files Browse the repository at this point in the history
  • Loading branch information
derfred committed Sep 25, 2011
1 parent a4f8c28 commit 0d4767c
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
47 changes: 47 additions & 0 deletions src/observers.js
Expand Up @@ -150,3 +150,50 @@ ResetObserver.prototype.sync_rules_satisfied = function(rules, search_window, pa
}

exports.ResetObserver = ResetObserver;


function TimedPhaseObserver(options) {
this.interval = options.interval;
this.start_time = options.start_time ? options.start_time : 0;
this.lookahead = 2;
}

TimedPhaseObserver.prototype.event_initialize = function(simulator) {
var num_evts = this.lookahead / this.interval;
for(var i=0;i<num_evts;i++) {
simulator.new_event(this.start_time+i*this.interval, "tick");
}
this.log = [];
}

TimedPhaseObserver.prototype.event_tick = function(simulator) {
var result = {};
simulator.network.each_neuron(function(neuron) {
result[neuron.id] = neuron.current_phase(simulator.current_time);
});
result["time"] = simulator.current_time;
this.log.push(result);

simulator.new_event(simulator.current_time+this.lookahead, "tick");
}

TimedPhaseObserver.prototype.collate_log = function() {
var result = [];
for(var i=0;i<this.log.length;i++) {
var value = this.log[i];
var line = value.time+"";
for(k in value) {
if(k!="time") {
line += (","+k+","+value[k]);
}
}
result.push(line);
}
return result.join("\n");
}

TimedPhaseObserver.prototype.write_to_file = function(filename) {
fs.writeFile(filename, this.collate_log());
}

exports.TimedPhaseObserver = TimedPhaseObserver;
23 changes: 23 additions & 0 deletions src/util.js
Expand Up @@ -31,6 +31,29 @@ function self_stabilizer(N, options) {
export("self_stabilizer", self_stabilizer);


function object_keys(object) {
var result = [];
for(k in object) {
result.push(k);
}
return result;
}

export("object_keys", object_keys);


function array_remove(array, obj) {
for(var i=array.length-1;i!=0;i--) {
if(array[i] == obj) {
array.splice(i);
}
}
return array;
}

export("array_remove", array_remove);


function group_by(array, predicate) {
var tmp = {};
var keys = [];
Expand Down

0 comments on commit 0d4767c

Please sign in to comment.