Which IDE for scientific computing and plotting in Python?

ECII picture ECII · Dec 21, 2013 · Viewed 34k times · Source

I am currently using R for all my scientific computing and plotting, but I would like to explore Python. I have been using RStudio as an IDE for R, which as an IDE fulfills 100% of my need for scientific computing, number crunching, data analysis and visualizations. Is there something similar for Python? Basically syntax highlighting, code completion, smart indentation, code execution directly from the source editor, plotting within the IDE and version control (git).

Answer

Kirell picture Kirell · Dec 21, 2013

I strongly suggest that you install a complete scientific python distribution such as Anaconda or Enthought Python which contains all the packages you need for science (numpy, scipy, matplotlib, numba, pandas, etc.)

For scientific computing, the de-facto standard is to use IPython instead of python. It is a improved python interpreter, with batteries includes (indentation, completion, history, HPC, etc.).

For you IDE, Matlab-like, you have basically one choice: Spyder (which as a basic git support). The other IDE are nicers but they lack the tools for inspecting datasets. Spyder directly runs an IPython session which can be edited later on with other tools.

Another one IPython notebook (now known as Jupyter) which is a new and very powerful tool especially if you want to document your code with Latex code. Your IPython session is embedded and directly transferable to others, easily versionable.

You can also run an interactive presentation directly within the notebook, which is a nice way to show results. Think of it as the future of research, where your results are interactive. Anyone who can download the notebook will run the same exact experiments.

Take a look at the multiple examples already out there:

IPython notebook example

If you don't like to work in the browser, I suggest my setup which is:

Remember that all the IPython front ends (IPython console, IPython QtConsole, IPython Notebook, SublimeREPL, etc.) can be connected to the same IPython core instance.

So, you can easily mix different tools at the same time depending on your needs (writing documentation, writing scientific stuff, code, presentation).

One IPython core to rule them all :-)