pyvideo.org: Videos of Matthew Rocklinhttp://pyvideo.org/speaker/583/matthew-rocklin/rssen-usThu, 10 Jul 2014 00:00:00 -0500500Blaze: Building a Foundation for Array-Oriented Computing in Pythonhttp://pyvideo.org/video/2811/blaze-building-a-foundation-for-array-oriented-c<p>Abstract</p>
The Blaze project is a collection of libraries being built towards the goal of generalizing NumPy's data model and working on distributed data. This talk covers each of these libraries, and how they work together to accomplish this goal.
<p>Description</p>
Python's scientific computing and data analysis ecosystem, built around NumPy, SciPy, Matplotlib, Pandas, and a host of other libraries, is a tremendous success. NumPy provides an array object, the array-oriented ufunc primitive, and standard practices for exposing and writing numerical libraries to Python all of which have assisted in making it a solid foundation for the community. Over time, however, it has become clear that there are some limitations of NumPy that are difficult to address via evolution from within. Notably, the way NumPy arrays are restricted to data with regularly strided memory structure on a single machine is not easy to change.
Blaze is a project being built with the goal of addressing these limitations, and becoming a foundation to grow Python's success in array-oriented computing long into the future. It consists of a small collection of libraries being built to generalize NumPy's notions of array, dtype, and ufuncs to be more extensible, and to represent data and computation that is distributed or does not fit in main memory.
Datashape is the array type system that describes the structure of data, including a specification of a grammar and set of basic types, and a library for working with them. LibDyND is an in-memory array programming library, written in C++ and exposed to Python to provide the local representation of memory supporting the datashape array types. BLZ is a chunked column-oriented persistence storage format for storing Blaze data, well-suited for out of core computations. Finally, the Blaze library ties these components together with a deferred execution graph and execution engine, which can analyze desired computations together with the location and size of input data, and carry out an execution plan in memory, out of core, or in a distributed fashion as is needed.
Mark Wiebe,Matthew RocklinThu, 10 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2811/blaze-building-a-foundation-for-array-oriented-cSymPy Tutorial Part 1http://pyvideo.org/video/2706/sympy-tutorial-part-1<p>Abstract</p>
SymPy is a pure Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.
<p>Description</p>
In this tutorial we will introduce attendees to SymPy. We will show basics of constructing and manipulating mathematical expressions in SymPy, the most common issues and differences from other computer algebra systems, and how to deal with them. In the last part of this tutorial we will show how to solve some practical problems with SymPy. This will include showing how to interface SymPy with popular numeric libraries like NumPy.
This knowledge should be enough for attendees to start using SymPy for solving mathematical problems and hacking SymPy's internals (though hacking core modules may require additional expertise).Aaron Meurer,Jason K. Moore,Matthew RocklinWed, 09 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2706/sympy-tutorial-part-1SymPy Tutorial Part 2http://pyvideo.org/video/2713/sympy-tutorial-part-2<p>Abstract</p>
SymPy is a pure Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.
Aaron Meurer,Jason K. Moore,Matthew RocklinWed, 09 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2713/sympy-tutorial-part-2SymPy Tutorial Part 3http://pyvideo.org/video/2707/sympy-tutorial-part-3<p>Abstract</p>
SymPy is a pure Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.
Aaron Meurer,Jason K. Moore,Matthew RocklinWed, 09 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2707/sympy-tutorial-part-3SymPy Tutorial Part 4http://pyvideo.org/video/2711/sympy-tutorial-part-4<p>Abstract</p>
SymPy is a pure Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.
Aaron Meurer,Jason K. Moore,Matthew RocklinWed, 09 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2711/sympy-tutorial-part-4Taking Control: Enabling Mathematicians and Scientistshttp://pyvideo.org/video/2712/taking-control-enabling-mathematicians-and-scien<p>Abstract</p>
Good solutions to hard problems require both domain and algorithmic expertise.
Domain experts know what to do and computer scientists know how to do it
well. This talk discusses challenges and experiences trying to reconcile these
two groups, particularly within SymPy. It proposes concrete approaches
including multiple dispatch, pattern matching, and programmatic strategies.
<p>Description</p>
Good solutions to hard problems require both domain and algorithmic expertise.
Domain experts know *what* to do and computer scientists know *how* to do it
well. Coordination between the algorithmic and domain programmer is
challenging to do well and difficult to scale. It is also arguably one of the
most relevant blocks to scientific progress today.
This talk draws from experience supporting mathematical programmers in the
SymPy project. SymPy is a computer algebra system, a complex problem that
requires the graph manipulation algorithms of a modern compiler alongside the mathematics of several PhD theses. SymPy draws from a broad developer base
with experienced and novice developers alike and so struggles to maintain a
cohesive organized codebase.
We approach this development problem by separating software engineering
into a collection of small functions, written by domain experts, alongside an
abstract control system, written by algorithmic programmers. We facilitate
this division with techniques taken from other languages and compiler
technologies. Notably we motivate the use of a few general purpose libraries
for multiple dispatch, pattern matching, and programmatic control.
Matthew RocklinWed, 09 Jul 2014 00:00:00 -0500http://pyvideo.org/video/2712/taking-control-enabling-mathematicians-and-scienSymPy Stats - Uncertainty Modelinghttp://pyvideo.org/video/1208/sympy-stats-uncertainty-modeling<p>Description</p>
SymPy is a symbolic algebra package for Python. In SymPy.Stats we add a
stochastic variable type to this package to form a language for uncertainty
modeling. This allows engineers and scientists to symbolically declare the
uncertainty in their mathematical models and to make probabilistic queries. We
provide transformations from probabilistic statements like $P(X*Y > 3)$ or
$E(X**2)$ into deterministic integrals. These integrals are then solved using
SymPy's integration routines or through numeric sampling.
This talk touches on a few rising themes:
* The rise in interest in uncertainty quantification and
* The use of symbolics in scientific computing
* Intermediate representation layers and multi-stage compilation
Historically solutions to uncertainty quantification problems have been
expressed by writing Monte Carlo codes around individual problems. By creating
a symbolic uncertainty language we allow the expression of the problem-to-be-
solved to be written separately from the numerical technique. SymPy.stats
serves as an interface layer. The statistical programmer doesn't need to think
about the details of numerical techniques and the computational methods
programmer doesn't need to think about the particular domain-specific
questions to be solved.
We have implemented multiple comptuational backends including purely symbolic
(using SymPy's integration engine), sampling, and code generation.
In the talk we discuss these ideas with a few illustrative examples taken from
basic probability and engineering. The following is one such example
[http://sympystats.wordpress.com/2011/07/02/a-lesson-in-data-assimilation-
using-sympy/](http://sympystats.wordpress.com/2011/07/02/a-lesson-in-data-
assimilation-using-sympy/)
Matthew RocklinWed, 18 Jul 2012 00:00:00 -0500http://pyvideo.org/video/1208/sympy-stats-uncertainty-modeling