# abelfunctions - A Python Library for Computing Abelian Functions

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.