Skip to content

GSoC 2012 Blog Post

scolobb edited this page Dec 31, 2012 · 16 revisions

SymPy is a computer algebra system (CAS) written in pure Python. The core allows basic manipulation of expressions (like differentiation or expansion) and it contains many modules for common tasks (limits, integrals, differential equations, series, matrices, quantum physics, geometry, plotting, and code generation).

SymPy has participated in the Google Summer of Code program in previous years under the umbrellas of Python Software Foundation, Portland State University, and the Space Telescope Science Institute, where we were very successful. In fact, several of our core developers, including four of the mentors from this year, started working with SymPy as Google Summer of Code students. We participated in Google Summer of Code 2011 as a standalone organization for the first time. We had excellent contributions and yet more people joined the community. The 2011 report is here. We were accepted to Google Summer of Code 2012 as a standalone organization again and we would to share this year's experience in this blog post.

As part of the application process we required each student to submit a patch (as a GitHub pull request) that had to be reviewed and accepted. This allowed us to see that each applicant knew how to use git as well as communicate effectively during the review process.This also encouraged only serious applicants to apply. We had over 10 (CHECK THIS) mentors available and we ended up with 6 students, all of whom were successful at final evaluations.

We required that the students write weekly blog posts during the course of their development activity, reporting their progress and presenting their further plans. Besides helping the mentors to assess the status of their students, weekly blog reports also set weak intermediate milestones that facilitated more detailed planning. The blog posts were also required to not be overloaded with technical details, which made them suitable to use as an informal documentation of the submitted work.

In the following paragraphs we will list the GSoC-2012 students in no particular order, linking their names to their blogs and referencing their final reports, as well providing a short overview of their contribution. The applications submitted by these students can be found on SymPy wiki.

Aleksandar Makelov - Computational Group Theory, mentored by David Joyner.

Aleksandar greatly improved the group-theory-related facilities of SymPy, including the tools to deal with permutation groups. Besides contributing the code for calculating the basic characteristics of a group and its elements, like orbits or stabilizers, he added a special version of the Schreier-Sims algorithm, which is the standard algorithm for finding the strong generating set of a permutation group. Aleksandar also contributed a function to find the subgroup of all elements satisfying a certain property. This function allows finding centralizers, normalizers, coset representatives, etc., and is thus a very powerful instrument in analysing the structure of groups.

Bharath M R - Implicit Plotting, mentored by Aaron Meurer.

Bharath implemented the implicit plotting module which allows plotting implicitly defined functions. This feature is extremely useful for graphical analysis of equations and having it implemented pushes SymPy forward greatly. Moreover, support for boolean combinations of functions is provided, which is a very convenient addition. The implicit plotting module is based on interval arithmetic, which was contributed by Bharath as well, at the beginning of the Summer of Code period. Bharath also worked on improving the existing plotting functionality and implemented adaptive sampling, which makes graphical representations of functions much more precise by dynamically choosing the sampling rate, basing on the behaviour of the function.

Angadh Nanjangud - Enhancements to sympy.physics.mechanics, mentored by Gilbert Gede. (COULD NOT FIND REPORT) (CHECK THIS)

Angadh greatly pushed forward the part of SymPy codebase which deals with dynamics. He started by defining a way to represent systems of solid bodies and particle systems in SymPy and then added the tools for determining the total linear and angular momenta of a system or of certain parts thereof. Angadh also added the possibility to compute the kinetic and potential energies of the system, or of a part of it, as a function of time, thus providing a powerful instrument of analysis of such systems. Towards the end of the Summer of Code period, Angadh implemented Lagrange's method, which is a standard method of analysis in Lagrangian mechanics. The implementation of this method offers yet another useful set of capabilities to dynamicists using SymPy.

Guru Devanla - Density Operators, Trace and Partial Trace for Quantum Module, mentored by Brian Granger and Sean Vig.

Guru worked on adding support for density matrices to the quantum-mechanics-related SymPy modules. Density matrices, also referred to as density operators, are a powerful analysis tool which is particularly useful in quantum computing. Guru also implemented several operations on density matrices, like trace and partial trace, computing entropy, fidelity, etc. These additions give SymPy the power to better serve researchers working with quantum mechanics, and, in particular, those who explore the domains of quantum computer science. During the Summer of Code, Guru also provided examples of using the code he contributed in the form of IPython Notebooks, which essentially represent an intuitive mix of rich text and Python code.

Sergiu Ivanov - Category Theory Module, mentored by Tom Bachmann.

Sergiu laid the basis for a category theory module in SymPy. In the summer he mainly focused on automated plotting of commutative diagrams and producing LaTeX compatible Xy-pic output. Towards the end of the Summer of Code, Sergiu started working on automatic derivation of the property of a diagram to be commutative, basing on the knowledge that certain other diagrams are commutative. However, due to the restricted timeframe of GSoC, this effort has not yet resulted in functional code. Sergiu will continue the work on the automatic derivation of commutativity in his spare time.

Stefan Krastanov - Functional Differential Geometry, mentored by Matthew Rocklin.

Clone this wiki locally