Package ca.nengo.examples

Source Code of ca.nengo.examples.IntegratorExample

/*
* Created on 14-Jun-2006
*/
package ca.nengo.examples;

import java.io.File;
import java.io.IOException;

import ca.nengo.io.MatlabExporter;
import ca.nengo.math.Function;
import ca.nengo.math.impl.ConstantFunction;
import ca.nengo.model.Ensemble;
import ca.nengo.model.Network;
import ca.nengo.model.SimulationException;
//import ca.nengo.model.SimulationMode;
import ca.nengo.model.StructuralException;
import ca.nengo.model.Termination;
import ca.nengo.model.Units;
import ca.nengo.model.impl.FunctionInput;
import ca.nengo.model.impl.NetworkImpl;
import ca.nengo.model.nef.NEFEnsemble;
import ca.nengo.model.nef.NEFEnsembleFactory;
import ca.nengo.model.nef.impl.NEFEnsembleFactoryImpl;
import ca.nengo.plot.Plotter;
import ca.nengo.sim.Simulator;
//import ca.nengo.sim.impl.LocalSimulator;
import ca.nengo.util.Probe;
import ca.nengo.util.TimeSeries;

public class IntegratorExample {

  public static Network createNetwork() throws StructuralException {
   
    Network network = new NetworkImpl();
   
    Function f = new ConstantFunction(1, 1f);
//    Function f = new SineFunction();
    FunctionInput input = new FunctionInput("input", new Function[]{f}, Units.UNK);
    network.addNode(input);
   
    NEFEnsembleFactory ef = new NEFEnsembleFactoryImpl();
   
    NEFEnsemble integrator = ef.make("integrator", 500, 1, "integrator1", true)
    network.addNode(integrator);
    integrator.collectSpikes(true);

    Plotter.plot(integrator);
    Plotter.plot(integrator, NEFEnsemble.X);
   
    float tau = .05f;
   
    Termination interm = integrator.addDecodedTermination("input", new float[][]{new float[]{tau}}, tau, false);
//    Termination interm = integrator.addDecodedTermination("input", new float[][]{new float[]{1f}}, tau);
    network.addProjection(input.getOrigin(FunctionInput.ORIGIN_NAME), interm);
   
    Termination fbterm = integrator.addDecodedTermination("feedback", new float[][]{new float[]{1f}}, tau, false);
    network.addProjection(integrator.getOrigin(NEFEnsemble.X), fbterm);
   
    //System.out.println("Network creation: " + (System.currentTimeMillis() - start));
    return network;
  }
   
 
  public static void main(String[] args) {
       
    try {
      Network network = createNetwork();
      Simulator simulator = network.getSimulator();
     
      Probe inputRecorder = simulator.addProbe("input", "input", true);
      Probe integratorRecorder = simulator.addProbe("integrator", NEFEnsemble.X, true);
      Probe neuronRecorder = simulator.addProbe("integrator", 0, "V", true);

      long startTime = System.currentTimeMillis();
      simulator.run(0f, 1f, .0002f);
      System.out.println("Run time: " + ((System.currentTimeMillis() - startTime)/1000f) );
   
      TimeSeries integratorData = integratorRecorder.getData();
      integratorData.getLabels()[0] = "decoded output";
     
      Plotter.plot(inputRecorder.getData(), "Input");
      Plotter.plot(integratorData, .005f, "Integrator");
      Plotter.plot(neuronRecorder.getData(), "Neuron #0");
     
      Plotter.plot(((Ensemble) network.getNode("integrator")).getSpikePattern());
     
      MatlabExporter me = new MatlabExporter();
      me.add("input", inputRecorder.getData());
      me.add("integrator", integratorRecorder.getData(), .01f);
      me.add("neuron", neuronRecorder.getData());
      me.write(new File("export.mat"));
     
    } catch (SimulationException e) {
      e.printStackTrace();
    } catch (StructuralException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
   
  }

}
TOP

Related Classes of ca.nengo.examples.IntegratorExample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.