Brian Granger (Cal Poly State University / IPython)
Open source tools for exploratory and reproducible computational physics
Computing, and thus software, is one of the foundations of modern physics research and education. It is used for simulation, data analysis, statistical modeling, symbolic manipulation, experimental control, etc. The software we use for these activities has a profound affect on human behavior, attitudes and thought patterns. In this talk I will describe open source software tools and development patterns that are having an impact, through their attributes, on the practice of computational physics research and education. Distributed version control systems, such as git, have attributes that enhance collaboration, reproducibility and open peer review. In the context of open source software, git/GitHub have enabled teams to scale their development activities efficiently in a way that encourages broad and open collaboration. Using the ecosystem of open source Python projects as an example, I will describe the best practices that have emerged for collaboration, peer review and testing. In particular, I will contrast these practices with those of traditional scientific research. IPython is an open source source interactive computing environment for Python and other languages. Its attributes encourage exploration, reproducibility and reuse. Its main application, the IPython Notebook, enables users to create documents that combine live code with narrative text, LaTeX equations, images, video. These notebook documents provide a complete, reproducible record of a computation that can be converted to various formats (HTML, LaTeX, slideshows, Markdown, etc.) and shared with others. IPython enables scientists to create computational narratives that can be used in a wide range of settings in a reproducible manner. To conclude I will give examples of researchers who have used these tools to conduct exploratory computational research and education in a manner that is open and reproducible.