Google Summer of Code 2014 Project Ideas
Welcome to the project ideas page for the Astropy project! Astropy is a community effort to develop a single core package for Astronomy in Python and foster interoperability between Python astronomy packages. The project was started in 2011. Because it is a young project, there are many opportunities to make a big impact on the package by developing new features that will be used in day-to-day work by professional Astronomers.
Astropy will be participating in the Google Summer of Code 2014 under the Python umbrella organization. See here for information about participating as part of the Python organization, in particular the guidelines for prospective students, which include that students will need to:
- Demonstrate to your prospective mentor(s) that you are able to complete the project you've proposed
- Blog for their GSoC project. Free blogs are available at http://www.blogger.com/
- Contribute at least one patch to the project(s) you're applying to work with
Students are expected to work (remotely) on the project full time this summer, and receive a $5,500 stipend, so this is a great opportunity to contribute to Astropy, have fun, and get rewarded for it!
If you are interested in applying, please read over our Student Application Guidelines!
Primary Mentors: @astrofrog, @eteq, @cdeil
Difficulty: Moderate
Astronomy knowledge needed: Basic
Programming skills: Python, Cython
Description: Work on the photutils package, which is used to measure the brightness of stars. Photometry is a fundamental aspect of Astronomy, and we are converging on a proposed API for implementation in Astropy (see here). This project would involve implementing a large part of this functionality and working towards integrating this package into the core Astropy package.
Primary Mentors: @wkerzendorf, @nhmc
Difficulty: Moderate
Astronomy knowledge needed: None
Programming skills: Python
Description: Work on functionality to implement reading/writing spectra from/to various file formats for the specutils afilliated package. Spectra are one of the most important measurements in astronomy. Over the last decades a wealth of spectral information has been collected in many different formats. This project aims to make sure that astropy enables readers and writers for all of them. No astronomy knowledge is required.
Primary mentor: @astrofrog, @adrn, @cdeil
Difficulty: Moderate to Advanced
Astronomy knowledge needed: Low
Programming skills: Python, good knowledge of Matplotlib ideal
Description: Work on a new framework for plotting Astronomical images for integration in Astropy. Astronomical images can be plotted using special curvilinear coordinate systems in different spherical projections, which makes this non-trivial. Examples of previous packages that have done this include APLpy, and we are converging on a proposed API for implementing this into Astropy in a general way (see here). This project would involve implementing a large part of this proposed functionality. In addition, this project could involve working on plotting functionality in the rest of Astropy.
Primary Mentors: @wkerzendorf, @eteq
Difficulty: Advanced
Astronomy knowledge needed: Good
Programming skills: Python
Description: Implementing a spectral analysis tool mainly to reproduce the different steps done by the iraf task apall. Analyzing spectra is a difficult task in astronomy. Astropy aims to enable the analysis of spectra in completely in python. We are at an exciting stage where we have most of the tools ready to build a spectral analysis framework in python. This project will try to build the framework using existing astropy tools and inform development for missing bits. This is and advanced project and requires good knowledge of python, numpy and astronomy.
Primary Mentors: @keflavich, @astrofrog, @cdeil
Difficulty: Moderate
Astronomy knowledge needed: None/Low
Programming skills: Python
Description: Implement new remote services into the astroquery package. This project involves using python's requests packages to create web queries and provide command-line interfaces to services that don't currently have any. There is a list of open issues describing catalogs that need an interface. No astronomy knowledge is required, though it is helpful to understand what the coordinate systems (RA/Dec) refer to.
Primary Mentors: @eteq, @embray
Difficulty: Moderate
Astronomy knowledge needed: None
Programming skills: Python, Web development
Implement an affiliated package installer and improve the affiliated package infrastructure. The Astropy project includes both the astropy
core package and a variety of community-contributed tools called "affiliated packages." These affiliated packages are registered online, and it would be useful to have an install tool that allows anyone with astropy
to also install affiliated packages quickly and easily. This project could also involve improving the affiliated package web site to better advertise quality affiliated packages. Hence, it is well-suited to a student that would like to do a mix of Python coding and web page work.
Primary Mentors: @astrofrog, @keflavich, @cdeil
Difficulty: Moderate
Astronomy knowledge needed: None
Programming skills: Python (and Cython and C desirable)
Descrption: Work on functionality to re-project images from one spherical projection to another, which is essential for combining Astronomical images into large mosaics/images. This would involve writing C/Cython code for the computationally expensive parts, and creating a high-level Python interface on top of this.
Primary Mentors: @mdboom, @taldcroft, @embray
Difficulty: Moderate
Astronomy knowledge needed: None
Programming skills: Python
Description: Work on improving performance across the board. Astropy was designed with functionality in mind, but performance is also important. The size of datasets that Astronomers are using is increasing rapidly, and typical datasets already include millions to billions of stars/galaxies. Typical datasets are now moving from the Gb to the Tb regime. This project would involve identifying parts of Astropy where performance can be improved, and speeding up the code while maintaining readability and functionality. This will include writing new performance tests using the asv performance monitoring tool.
Primary Mentor(s): @adrn, @embray
Difficulty: Low
Astronomy knowledge needed: None
Programming skills: Python, Web development
Description: Develop an advanced web interface for browsing/viewing user- and developer-contributed tutorials. The current tutorial system is built around IPython Notebooks: tutorial authors simply contribute a notebook file and the backend renders it into a static HTML page. The tutorials are then listed on a static HTML landing page. We would like to develop a more feature-rich interface for the tutorials to 1) make them searchable, 2) organize them, e.g., via tags, and 3) automatically link to the Astropy documentation. This project requires HTML5/CSS, some Python, and (potentially) some amount of design.
Primary Mentors: @astrofrog @embray
Difficulty: Low
Astronomy knowledge needed: None
Programming skills: Python
Description: Work on improving the unit test coverage. The test coverage for Astropy is shown here, and the project will be to identify modules which are under-tested, understand the functionality, and develop new unit tests.
Primary Mentors: @taldcroft, @embray
Difficulty: Moderate
Astronomy knowledge needed: None
Programming skills: Python, Cython, possibly C
Description: The astropy.io.ascii
package reads and writes text-based data tables in variety of formats, with an emphasis on flexibility and ease-of-use over speed. However, in many cases the data format is simple (e.g. CSV) and there is an opportunity to use a faster, less-flexible parser. The goal of this project is to write a table parser which can read Gb-sized files into the astropy Table structure. In addition to improving speed, a key goal is lowering the memory footprint by not storing intermediate string versions of column values. If this part of the project is completed there is a natural follow-on to implement memory-mapped views of text-based tables via the Table
class.
Primary Mentors: @eteq
Difficulty: Moderate to Advanced
Astronomy knowledge needed: None, but statistics background or a familiarity with physics/astronomy experimental methods might help.
Programming skills: Python
Description: The astropy.units
package includes a Quantity
class that represents a value (or array of values) with a unit. Currently, it does not include support for any uncertainty on the value, limiting its usefulness for certain types of astronomy projects. astropy.nddata
has initial work on a framework for such uncertainties. This project would involve porting relevant parts of the nddata
uncertainties framework to Quantity
, as well as implementing propagation of those uncertainties whereQuantity
objects are combined. As time allows, it might further expand to developing more powerful ways of representing uncertainties in Quantity
.
Primary Mentors: @eteq, @astrofrog
Difficulty: Advanced
Astronomy knowledge needed: Some, primarily enough to understand the basics of the IAU transformation stack (an example primer that needs to be understood is here)
Programming skills: Python, Cython
Description: The astropy.coordinates
package includes a framework for representing celestial coordinates and their transformations. It does not yet, however, include the full stack of transformations necessary to get from coordinates in a standard catalog/astronomical journal article format all the way down to coordinates as seen from a certain point on the Earth. This project would be to implement the transformations as defined by the IAU 2000 symposium (with some minor amendments since then). A lot of this would involve wrapping the (ERFA C library)[https://github.com/liberfa/erfa] functions in a form suitable for use by astropy.coordinates
via Cython.
- Tom Aldcroft, Harvard-Smithsonian Center for Astrophysics, USA
- Erik Bray, Space Telescope Science Institute
- Neil Crighton, Swinburne University of Technology, Australia
- Christoph Deil, Max Planck Institute for Nuclear Physics, Germany
- Mike Droettboom, Space Telescope Science Institute
- Adam Ginsburg, European Southern Observatory, Germany
- Wolfgang Kerzendorf, University of Toronto, Canada
- Adrian Price-Whelan, Columbia University, USA
- Thomas Robitaille, Max Planck Institute for Astronomy, Germany
- Erik Tollerud, Yale University