Skip to content

Google Summer of Code 2014 Project Ideas

Erik Bray edited this page Mar 17, 2014 · 39 revisions

Background

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!

Project Ideas

Work on photometry package

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.

Reading and writing spectra

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.

Work on framework for plotting Astronomical images

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.

Spectral analysis tool

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.

New remote services in astroquery package

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.

Affiliated package installer and infrastructure

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.

Re-projection of images

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.

Performance improvements

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.

Advanced web interface for browsing/viewing tutorials

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.

Improve test coverage

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.

High-performance ASCII table reader and memory view tables

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.

Implement uncertainties in Quantity

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.

Implement IAU2000 celestial coordinate transformations

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.

Available Mentors

Clone this wiki locally