{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "%matplotlib inline"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "\n# Recording examples\n\nThis script demonstrates how to select different recording backends\nand read the result data back in. The simulated network itself is\nrather boring with only a single poisson generator stimulating a\nsingle neuron, so we get some data.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import nest\nimport numpy as np\n\n\ndef setup(record_to, time_in_steps):\n    \"\"\"Set up the network with the given parameters.\"\"\"\n\n    nest.ResetKernel()\n    nest.overwrite_files = True\n\n    pg_params = {'rate': 1000000.}\n    sr_params = {'record_to': record_to, 'time_in_steps': time_in_steps}\n\n    n = nest.Create('iaf_psc_exp')\n    pg = nest.Create('poisson_generator', 1, pg_params)\n    sr = nest.Create('spike_recorder', 1, sr_params)\n\n    nest.Connect(pg, n, syn_spec={'weight': 10.})\n    nest.Connect(n, sr)\n\n    return sr\n\n\ndef get_data(sr):\n    \"\"\"Get recorded data from the spike_recorder.\"\"\"\n\n    if sr.record_to == 'ascii':\n        return np.loadtxt(f'{sr.filenames[0]}', dtype=object)\n    if sr.record_to == 'memory':\n        return sr.get('events')\n\n\n# Just loop through some recording backends and settings\nfor time_in_steps in (True, False):\n    for record_to in ('ascii', 'memory'):\n        sr = setup(record_to, time_in_steps)\n        nest.Simulate(30.0)\n        data = get_data(sr)\n        print(f\"simulation resolution in ms: {nest.resolution}\")\n        print(f\"data recorded by recording backend {record_to} (time_in_steps={time_in_steps})\")\n        print(data)"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.6"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}