abelfunctions - A Python Library for Computing Abelian Functions

Mar 29, 2012

I'm pleased to
introduce
abelfunctions , a Python library for computing Abelian
functions in Python and Sage. The primary goal of the project is to
make computing with Abelian functions as ubiquitous as computing with,
say, trigonometric functions. This framework is applied toward solving
integrable systems of partial differential equations. Abelfunctions
encompasses most, if not all, of the computational aspects of my
research and will serve as a repository for my Ph.D. work. All of my
code is hosted on GitHub and can be
freely browsed, downloaded, and commented on.

Why I Ported My Code

I decided to create abelfunctions when I realized that 99% of
the code that I had implemented or was planning to implement
in Sage could be done using
the Numpy/Scipy, Sympy,
and NetworkX packages; all of
which are included in Sage anyway. These packages are also included in
the Enthought Python
Distribution (EPD): a popular scientific Python suite amongst
applied mathematicians. The primary benefits of this transition from
"pure Sage" implementation to Python are:

All of my work is packaged together in a single repository, making
clear my contributions to the scientific programming community.

My code can reach a wider audience.

People can use my code while I work on it and without having to wait
for Sage's patch acceptance process.

To be clear, I have absolutely nothing against the Sage development
environment. I just noticed that most of my computations are either
numerical, which is Numpy/Scipy's strength, or symbolic, which is
Sympy's strength. Unfortunately, these don't seem to be the focus of
the majority of the Sage development team. With this setup, both the
Sage and general scientific Python communities can take advantage of
my work.

Current Functionality

Right now, in abelfunctions, you can compute Puiseux series expansions of plane algebraic curves as well as the Riemann theta function. Below is some example usage with EPD. We compute the first four non-zero terms of the three Puiseux series expansions $p_1(x),p_2(x),p_3(x)$ of the plane curve $f(x,y) = y^3 + 2x^3y - x^7$ above the $x$-point $x=0$. That is, locally at $x=0$ the curve $f(x,y)=0$ looks like $p_i(x)$ on the $i$th sheet of the corresponding Riemann surface.

I'm in the process of including all of the functionality necessary to
compute period matrices of plane complex algebraic curves. I've made
this
a
"GitHub Milestone" of the abelfunctions project.

There are installation instructions and more examples on
the abelfunctions
wiki. And if you'd like the contribute then please feel free to do
so! (I need to write a lot of tests, documentation, and docstrings!)
Finally, if you encounter a bug or have suggestions on how to improve
the library then don't hesitate to file an "issue" in
the Issues
section of the repository. I'll be posting major updates on my
code as I progress.