# Running Brian scripts

Brian scripts are standard Python scripts, and can therefore be run in the same way. For interactive, explorative work, you might want to run code in a jupyter notebook or in an ipython shell; for running finished code, you might want to execute scripts through the standard Python interpreter; finally, for working on big projects spanning multiple files, a dedicated integrated development environment for Python could be a good choice. We will briefly describe all these approaches and how they relate to Brian’s examples and tutorial that are part of this documentation. Note that none of these approaches are specific to Brian, so you can also search for more information in any of the resources listed on the Python website.

## Jupyter notebook

> The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.

> (from jupyter.org)

Jupyter notebooks are a great tool to run Brian code interactively, and include the results of the simulations, as well as additional explanatory text in a common document. Such documents have the file ending `.ipynb`, and in Brian we use this format to store the ../resources/tutorials/index. These files can be displayed by github (see e.g. the first Brian tutorial), but in this case you can only see them as a static website, not edit or execute any of the code.

To make the full use of such notebooks, you have to run them using the jupyter infrastructure. The easiest option is to use the free mybinder.org web service, which allows you to try out Brian without installing it on your own machine. Links to run the tutorials on this infrastructure are provided as “launch binder” buttons on the ../resources/tutorials/index page, and also for each of the Examples at the top of the respective page (e.g. Example: COBAHH). To run notebooks on your own machine, you need an installation of the jupyter notebook software on your own machine, as well as Brian itself (see the Installation instructions for details). To open an existing notebook, you have to download it to your machine. For the Brian tutorials, you find the necessary links on the ../resources/tutorials/index page. When you have downloaded/installed everything necessary, you can start the jupyter notebook from the command line (using Terminal on OS X/Linux, Command Prompt on Windows):

    jupyter notebook

this will open the “Notebook Dashboard” in your default browser, from which you can either open an existing notebook or create a new one. In the notebook, you can then execute individual “code cells” by pressing `SHIFT+ENTER` on your keyboard, or by pressing the play button in the toolbar.

For more information, see the jupyter notebook documentation.

## IPython shell

An alternative to using the jupyter notebook is to use the interactive Python shell IPython, which runs in the Terminal/Command Prompt. You can use it to directly type Python code interactively (each line will be executed as soon as you press `ENTER`), or to run Python code stored in a file. Such files typically have the file ending `.py`. You can either create it yourself in a text editor of your choice (e.g. by copying&pasting code from one of the Examples), or by downloading such files from places such as github (e.g. the Brian examples), or ModelDB. You can then run them from within IPython via:

    %run filename.py

## Python interpreter

The most basic way to run Python code is to run it through the standard Python interpreter. While you can also use this interpreter interactively, it is much less convenient to use than the IPython shell or the jupyter notebook described above. However, if all you want to do is to run an existing Python script (e.g. one of the Brian Examples), then you can do this by calling:

    python filename.py

in a Terminal/Command Prompt.

## Integrated development environment (IDE)

Python is a widely used programming language, and is therefore support by a wide range of integrated development environments (IDE). Such IDEs provide features that are very convenient for developing complex projects, e.g. they integrate text editor and interactive Python console, graphical debugging tools, etc. Popular environments include Spyder, PyCharm, and Visual Studio Code, for an extensive list see the Python wiki.