AstroML: Machine Learning for Astronomy
AstroML is a Python module for machine learning and data mining built on numpy, scipy, scikit-learn, and matplotlib, and distributed under the BSD license. It contains a growing library of statistical and machine learning routines for analyzing astronomical data in python, loaders for several open astronomical datasets, and a large suite of examples of analyzing and visualizing astronomical datasets.
This project was started in 2012 by Jake VanderPlas to accompany the book Statistics, Data Mining, and Machine Learning in Astronomy by Zeljko Ivezic, Andrew Connolly, Jacob VanderPlas, and Alex Gray.
- HTML documentation: http://www.astroML.org
- Core source-code repository: http://github.com/astroML/astroML
- Issue Tracker: http://github.com/astroML/astroML/issues
- Mailing List: https://groups.google.com/forum/#!forum/astroml-general
This package uses distutils, which is the default way of installing python modules. Before installation, make sure your system meets the prerequisites listed in Dependencies, listed below.
To install the core
astroML package in your home directory, use:
pip install astroML
The core package is pure python, so installation should be straightforward on most systems. To install from source, use:
python setup.py install
You can specify an arbitrary directory for installation using:
python setup.py install --prefix='/some/path'
To install system-wide on Linux/Unix systems:
python setup.py build sudo python setup.py install
There are two levels of dependencies in astroML. Core dependencies are
required for the core
astroML package. Optional dependencies are required
to run some (but not all) of the example scripts. Individual example scripts
will list their optional dependencies at the top of the file.
astroML package requires the following:
- Python version 2.6-2.7 and 3.3+
- Numpy >= 1.4
- Scipy >= 0.7
- Scikit-learn >= 0.18
- Matplotlib >= 0.99
- AstroPy > 0.2.5 AstroPy is required to read Flexible Image Transport System (FITS) files, which are used by several datasets.
This configuration matches the Ubuntu 10.04 LTS release from April 2010, with the addition of scikit-learn.
To run unit tests, you will also need nose >= 0.10
Several of the example scripts require specialized or upgraded packages. These requirements are listed at the top of the particular scripts
- Scipy version 0.11 added a sparse graph submodule. The minimum spanning tree example requires scipy >= 0.11
- PyMC provides a nice interface for Markov-Chain Monte Carlo. Several astroML examples use pyMC for exploration of high-dimensional spaces. The examples were written with pymc version 2.2
- HEALPy provides an interface to the HEALPix pixelization scheme, as well as fast spherical harmonic transforms.
This package is designed to be a repository for well-written astronomy code, and submissions of new routines are encouraged. After installing the version-control system Git, you can check out the latest sources from GitHub using:
git clone git://github.com/astroML/astroML.git
or if you have write privileges:
git clone firstname.lastname@example.org:astroML/astroML.git
We strongly encourage contributions of useful astronomy-related code: for astroML to be a relevant tool for the python/astronomy community, it will need to grow with the field of research. There are a few guidelines for contribution:
Any contribution should be done through the github pull request system (for
more information, see the
Code submitted to
astroML should conform to a BSD-style license,
and follow the PEP8 style guide.
Documentation and Examples
All submitted code should be documented following the Numpy Documentation Guide. This is a unified documentation style used by many packages in the scipy universe.
In addition, it is highly recommended to create example scripts that show the
usefulness of the method on an astronomical dataset (preferably making use
of the loaders in
astroML.datasets). These example scripts are in the
examples subdirectory of the main source repository.