IPython

From Wikipedia, the free encyclopedia
Jump to: navigation, search
IPython
IPython Logo.png
Screenshot of IPython 6.x on Mac OS, showing the computation of a fourrier transform using numpy.
IPython Shell
Original author(s) Fernando Perez[1]
Developer(s) Others
Initial release 2001; 17 years ago (2001)[1]
Stable release
6.3.1 / 6 April 2018; 15 days ago (2018-04-06)[2]
Repository Edit this at Wikidata
Written in Python, JavaScript, CSS, HTML
Operating system Cross-platform
Type Shell
License BSD
Website ipython.org

IPython is a command shell for interactive computing in multiple programming languages, originally developed for the Python programming language, that offers introspection, rich media, shell syntax, tab completion, and history. IPython provides the following features:

  • Interactive shells (terminal and Qt-based).
  • A browser-based notebook with support for code, text, mathematical expressions, inline plots and other media.
  • Support for interactive data visualization and use of GUI toolkits.
  • Flexible, embeddable interpreters to load into one's own projects.
  • Tools for parallel computing.

Parallel computing[edit]

Architectural View of IPython's parallel machinery

IPython is based on an architecture that provides parallel and distributed computing. IPython enables parallel applications to be developed, executed, debugged and monitored interactively. Hence, the I (Interactive) in IPython,[3] this architecture abstracts out parallelism, which enables IPython to support many different styles of parallelism[4] including:

  • Single program, multiple data (SPMD) parallelism
  • Multiple program, multiple data (MIMD) parallelism
  • Message passing using MPI
  • Task parallelism
  • Data parallelism
  • Combinations of these approaches
  • Custom user defined approaches

With the release of IPython 4.0, the parallel computing capabilities have been made optional and released under the ipyparallel python package.

IPython frequently draw from SciPy stack[5] libraries like NumPy and SciPy, often installed alongside from one of many Scientific Python distributions.[5] IPython provide integration some library of the SciPy stack like matplotlib, like inline graph when in used with the Jupyter notebook. Python libraries can implement IPython specific hooks to customize object Rich object display. SymPy for example implement rendering of Mathematical Expression as rendered LaTeX when used within IPython context.[6]

Other features[edit]

IPython allows non-blocking interaction with Tkinter, PyGTK, PyQt/PySide and wxPython (the standard Python shell only allows interaction with Tkinter). IPython can interactively manage parallel computing clusters using asynchronous status callbacks and/or MPI. IPython can also be used as a system shell replacement,[7] its default behavior is largely similar to Unix shells, but it allows customization and the flexibility of executing code in a live Python environment. Using IPython as a shell replacement is less common and it is now recommended to use Xonsh which provide most of the IPython feature with better shell integrations.

End Of Python 2 support[edit]

IPython 5.x (Long Time Support) series will be the last version of IPython to support Python 2. The IPython project pledged to not support Python 2 beyond 2020[8] by being one of the first project to join the Python 3 Statement, the 6.x series is only compatible with Python 3 and above. It is still possible though to run a IPython kernel and a Jupyter Notebook server on different Python versions allowing user to still access Python 2 on newer version of Jupyter.

Project Jupyter[edit]

In 2014, Fernando Pérez announced a spin-off project from IPython called Project Jupyter.[9] IPython continued to exist as a Python shell and a kernel for Jupyter, while the notebook and other language-agnostic parts of IPython moved under the Jupyter name.[10][11] Jupyter is language agnostic and support execution environment (aka kernels) in several dozen of languages among which Julia, R, Haskell, Ruby and of course Python (via the IPython kernel).[12]

In 2015, GitHub and the Jupyter Project announced native rendering of Jupyter notebooks file format (.ipynb files) on the GitHub platform.[13][14]

Notebook[edit]

Jupyter Notebook (Formerly IPython Notebooks) is a web-based interactive computational environment for creating Jupyter notebooks documents, the "notebook" term can colloquially make reference to many different entities, mainly the Jupyter web application, Jupyter python web server, or Jupyter document format depending on context. A Jupyter Notebook document is a JSON document, following a versioned schema, and containing an ordered list of input/output cells which can contain code, text (using Markdown), mathematics, plots and rich media, usually ending with the ".ipynb" extension.

Jupyter notebooks document can be converted to a number of open standard output formats (HTML, presentation slides, LaTeX, PDF, ReStructuredText, Markdown, Python) through 'Download As' in the web interface, via the nbconvert library or 'jupyter nbconvert' comand line interface in a shell.

To simplify visualisation of Jupyter notebook documents on the web, the nbconvert library is provided as a service through NbViewer which can take a URL to any publicly available notebook document, convert it to HTML on the file and display it to the user.

IPython Notebook interface

Jupyter Notebook provides a browser-based REPL built upon a number of popular open-source libraries:

Jupyter Notebook can connect to many kernels, (by default Jupyter Notebook ships with the IPython kernel) to allow programming in many languages, as of the 2.3 release[15][16] (October 2014), there are currently 49 Jupyter-compatible kernels for as many programming languages, including Python, R, Julia and Haskell.[17]

The Notebook interface was added to IPython in the 0.12 release[18] (December 2011), renamed to Jupyter notebook in 2015 (IPython 4.0 – Jupyter 1.0). Jupyter Notebook is similar to the notebook interface of other programs such as Maple, Mathematica, and SageMath, a computational interface style that originated with Mathematica in the 1980s[19]. According to The Atlantic Journal, Jupyter interest overtook the popularity of the Mathematica notebook interface in early 2018[19].

In the media[edit]

IPython has been mentioned in the popular computing press and other popular media,[20][19]. and it has a presence at scientific conferences.[21] For scientific and engineering work, it is often presented as a companion tool to matplotlib,[22] the Jupyter notebook format is increasingly seen as one contender for the future of the research papers that offers many advantages over closed source competitors according to Paul Romer.[23][19]

Grants and awards[edit]

Beginning 1 January 2013, the Alfred P. Sloan Foundation announced that it would support IPython development for two years.[24]

On 23 March 2013, Fernando Perez was awarded the Free Software Foundation Advancement of Free Software award for IPython.

In August 2013, Microsoft made a donation of $100,000 to sponsor IPython’s continued development.[25]

In January 2014, it won the Jolt Productivity Award[26] from Dr. Dobb's in the category of coding tools. In July 2015, the project won a funding of $6 million from Gordon and Betty Moore Foundation, Alfred P. Sloan Foundation and Leona M. and Harry B. Helmsley Charitable Trust.[27]

See also[edit]

References[edit]

  1. ^ a b "The IPython notebook: a historical retrospective". Fernando Perez Blog. 8 January 2012. 
  2. ^ "GitHub - Release 6.3.1". Retrieved 10 April 2018. 
  3. ^ Helen, Shen (2014). "Interactive notebooks: Sharing the code". Nature. 515 (7525): 151–152. doi:10.1038/515151a. PMID 25373681. 
  4. ^ "Using IPython for Parallel computing - IPython docs". 
  5. ^ a b "SciPy Stack". 
  6. ^ "Printing — SymPy 1.1 documentation". docs.sympy.org. Retrieved 2018-04-11. 
  7. ^ McKinney, Wes (2012). "Chapter 3". Python for Data Analysis. ISBN 978-1-449-31979-3. 
  8. ^ "Release of IPython 5.0 – Jupyter Blog". Jupyter Blog. 2016-07-08. Retrieved 2018-04-11. 
  9. ^ "Project Jupyter // Speaker Deck". 
  10. ^ "The Notebook, Qt console and a number of other pieces are now parts of Jupyter". 
  11. ^ "The Big Split™". 
  12. ^ "Project Jupyter | Home". 
  13. ^ sshirokov (2015-05-07). "GitHub + Jupyter Notebooks = <3". The GitHub Blog. Retrieved 2018-04-10. 
  14. ^ "Rendering Notebooks on GitHub – Jupyter Blog". Jupyter Blog. 2015-05-07. Retrieved 2018-04-10. 
  15. ^ "What's new in IPython > Issues closed in the 2.x development cycle". 
  16. ^ "What's new in IPython > 2.0 Series". 
  17. ^ "Jupyter kernels > List of (some) IPython compatible kernels". 
  18. ^ "Notebook's announcement- 0.12 release note". 
  19. ^ a b c d Somers, James. "The Scientific Paper Is Obsolete". The Atlantic. Retrieved 2018-04-10. 
  20. ^ Koziol, Conrad (12 September 2005). "Introducing IPython". NewsForge. 
  21. ^ "IPython Presentations". 
  22. ^ Pérez, Fernando; Granger, Brian E. (2007). "IPython: A System for Interactive Scientific Computing" (PDF). Computing in Science & Engineering. 9 (3). Archived from the original (PDF) on 2 June 2010. Retrieved 30 July 2015. 
  23. ^ "Jupyter, Mathematica, and the Future of the Research Paper – Paul Romer". paulromer.net. Retrieved 2018-04-15. 
  24. ^ "Announcement in scipy mailing list". 
  25. ^ "IPython Announcement". 
  26. ^ "Jolt Productivity Award write-up in Dr. Dobb's". 
  27. ^ "$6M for UC Berkeley and Cal Poly to expand and enhance open-source software for scientific computing and data science". Retrieved 13 August 2015. 

External links[edit]