{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Run Experiment For Set Duration\n",
"\n",
"This examples shows how to use Python to control the Synapse mode and\n",
"monitor recording status.
\n",
"This uses the 'ExperimentSetTime' example experiment, but it could run with any\n",
"experiment.\n",
"\n",
"## Housekeeping\n",
"\n",
"Import tdt library for SynapseAPI, and Python's built-in time library so we can add a pause\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import tdt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup\n",
"\n",
"Choose which experiment to run and the duration. It could be anything.
\n",
"This example uses a simple experiment with just a Tick store.
\n",
"To see full list of available experiments use syn.getKnownExperiments()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"EXPERIMENT = 'ExperimentSetTime'\n",
"TOTAL_TIME = 30\n",
"\n",
"# Connect to Synapse\n",
"syn = tdt.SynapseAPI()\n",
"\n",
"# Set your experiment\n",
"syn.setCurrentExperiment(EXPERIMENT)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Runtime"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"\n",
"# Set the system to 'Preview' mode\n",
"syn.setModeStr('Preview')\n",
"\n",
"# Wait five seconds to give 'getSystemStatus' time to update internally\n",
"time.sleep(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Main Loop"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": "Current elapsed time: 3s\nCurrent elapsed time: 4s\nCurrent elapsed time: 5s\nCurrent elapsed time: 6s\nCurrent elapsed time: 7s\nCurrent elapsed time: 8s\nCurrent elapsed time: 9s\nCurrent elapsed time: 10s\nCurrent elapsed time: 11s\nCurrent elapsed time: 12s\nCurrent elapsed time: 13s\nCurrent elapsed time: 14s\nCurrent elapsed time: 15s\nCurrent elapsed time: 16s\nCurrent elapsed time: 17s\nCurrent elapsed time: 18s\nCurrent elapsed time: 19s\nCurrent elapsed time: 20s\nCurrent elapsed time: 21s\nCurrent elapsed time: 22s\nCurrent elapsed time: 23s\nCurrent elapsed time: 24s\nCurrent elapsed time: 25s\nCurrent elapsed time: 26s\nCurrent elapsed time: 27s\nCurrent elapsed time: 28s\nCurrent elapsed time: 29s\nCurrent elapsed time: 30s\n"
}
],
"source": [
"currTime = 0\n",
"prevTime = 0\n",
"\n",
"# Poll the system status until it reaches the desired state\n",
"while currTime < TOTAL_TIME:\n",
"\n",
" # Add any additional API controls here\n",
" currTime = syn.getSystemStatus()['recordSecs']\n",
" if prevTime != currTime:\n",
" print(f'Current elapsed time: {currTime}s')\n",
"\n",
" prevTime = currTime"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our desired elapsed time has passed, switch to Idle mode"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": "done\n"
}
],
"source": [
"syn.setModeStr('Idle')\n",
"print('done')"
]
}
],
"metadata": {
"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.6.8-final"
},
"orig_nbformat": 2,
"kernelspec": {
"name": "python36864bitspyconda4e4a217d6bc34d79800c8a79c30c5bd0",
"display_name": "Python 3.6.8 64-bit ('spy': conda)"
}
},
"nbformat": 4,
"nbformat_minor": 2
}