Python in Astronomy 2017

Posted by s.aragon on 5 September 2017 - 10:58am

Python in AstronomyBy Thomas Robitaille, Software Sustainability Institute 2017 Fellow

The Lorentz Center in Leiden hosted the Python in Astronomy 2017 workshop from 8th to 12th May 2017. This meeting followed a highly interactive format and featured talks, unconference sessions, and hands-on coding sprints.

Over the last decade, the Python programming language has grown in Astronomy research from an occasionally used language to one of the most popular everyday tools. In parallel, we have seen the rise of large collaborative open-source projects such as Astropy, SunPy and yt  (in contrast, previous development of software in Astronomy had been far more fragmented). These projects have adopted best practices for software development, including proper packaging, testing, and documentation, and an increasing number of researchers are interested in getting involved in existing open-source efforts or publishing their software in the open and adopting the same best practices. Given this interest, a few of us organised in 2015 the first workshop dedicated specifically to Python in Astronomy, with the aim to bring together existing developers, educators, and users interested in becoming more involved with development and education efforts. This series of workshops has proved very successful, typically with over 200 applications for around 60 places (the workshops have been kept deliberately small to foster better communication and interactivity). After two successful meetings in 2015 and 2016, I stepped down as an organiser and attended the 2017 meeting as a participant.

The format of this year’s meeting (as for previous editions) was designed so as to promote interactivity and practical progress in several areas. Mornings were typically dedicated to short talks and spontaneous lightning talks, with talk topics ranging from new Python package presentations/announcements to specific uses of Python in projects or at observatories, and also including best practices for sharing code.

The afternoons were much more free-form, with ‘unconference’ sessions. For anyone not familiar with this format, the idea is to have a whiteboard where participants can propose and vote for sessions that they want to attend, and the final decision about which sessions will take place is made only 5-10 minutes before the sessions start in the afternoon. Sessions included tutorials, specialised discussions, and hands-on mini-sprints. The Lorentz Center in Leiden, where this edition (and the 2015 edition) of the workshop was held is ideally suited to this format, due to the large number of possible break-out rooms (all participants get an office!).

Most tutorials were held on the Tuesday afternoon, and included how to get started with Git, publishing code (and contributing to packages) on GitHub, and developing graphical user interfaces in Python. On the other days, unconference discussions covered a wide variety of topics, including development and documentation planning for various packages. Since the workshop focuses on practical progress, one of the days was dedicated to sprints, which saw participants contribute to existing projects, or publish their code on GitHub or make releases available on PyPI, or even start new projects/hacks. There were too many projects to mention an exhaustive list here, but here are a few examples to illustrate the diversity of projects:

  • David Pérez-Suárez and Zé Vinícius created a tool named Buss that measures the Bus Factor for open-source projects on GitHub—it does this by finding out how many files have been edited only by one contributor in the history of the project (indicating potential points of failure if that contributor leaves the project). This tool is available on GitHub and is also described in more detail, including results on popular repositories, in a blog post.

  • Janna Goldstein led a hack with others to try and build a tool to make it possible to project spherical images onto polyhedral surfaces which can then be printed and folded into globes - the code so far is available on GitHub.

  • Kelle Cruz, Ekaterina Ilin and Azalee Bostroem worked on making the Astropy project website and documentation more approachable for newcomers, and made improvements that are now live.

  • I worked with several others on a continuation of the LetThereBe project, which was started at the Software Sustainability Institute's Collaborations Workshop 2017. The original aim of this project is to make it easy for people interested in building packages to set up a template package which follows best-practices for code layout, testing, documentation, and to set up continuous integration services such as Travis or AppVeyor.

One interesting aspect about the meeting is that due to the large over-subscription (typically 4:1), selecting participants by getting organisers to vote would be difficult and highly prone to bias. As a result, the organisers used a package called entrofy, which allows targets to be set for various diversity metrics, and which selects participants so as to fulfill those targets. This requires collecting data during the application process in a structured way (i.e. not free-form text). In the case of Python in Astronomy, targets were set for the distribution of gender, geographical location, Python experience, and more. The result was a very diverse conference along several axes, which resulted in a much improved atmosphere compared to typical technical or Astronomy conferences, and this has had a direct positive impact on diversity in the open-source projects represented at the workshop. So if you are organizing a conference and need to select participants due to number constraints, I highly recommend using entrofy, which is open-source and available on GitHub!

The next installment of Python in Astronomy will be taking place in 2018. Once the website is live, it should appear at http://openastronomy.org/pyastro/2018/, so be sure to check back there in a couple of months to find out more about the next workshop!

Share this page