Stars come in a variety of forms. For example, they have different temperatures at their surfaces, which affect their appearance and color. Stars also spin at different speeds. They are born in different environments. As stars live out their lives, they evolve and physically change in dramatic ways.
Each star emits a spectrum of light. This spectrum depends on the properties of the star, so studying a star’s spectrum reveals great information about the star itself. For example, the star’s temperature and atmospheric chemical composition determine which elemental features (known as absorption lines) are seen in the spectrum, as shown in the image below. The density and rotation of a star affect the shape of these lines as well. A star’s motion toward or away from us (known as radial velocity) shifts the positions of these lines.
Stellar spectroscopy has been a vital part of astronomy for over a century, and there continues to be extensive research in this field. Extensive simulations and observations of stars have improved astronomers’ understanding of how stars’ physical properties affect their spectra. By better characterizing a star’s observed spectrum, astronomers can improve their understanding of stellar astrophysics, formation, populations and evolution.
Starkit is a software package that fits stellar spectra and helps astronomers determine the physical properties of the star. It was developed to fit spectroscopic and photometric observations of stars to models of stellar structure, from which the important characteristics of the star can be found.
Starkit is made up of a series of modules, each of which contains a variety of different tools and functions that can be used by astronomers for their science. The primary modules included with the Starkit package are the base module, fitkit, gridkit, and utils.
The base module consists of the primary functions used in manipulating the given model to given characteristics. This includes things such as reshaping and resizing a model to the resolution and sampling of a particular instrument, adjusting the model to show effects of things such as doppler shifting of the starlight, and the effects of interstellar dust.
Fitkit contains the tools for the spectral fitting itself. Functions for fitting, saving the results of the fit, and recording and plotting the likelihood of fits are within Fitkit. In addition, functions for configuring the assumed ranges of the model parameters are included.
Next, is Gridkit. It holds the tools for loading, saving, and modifying various types of input models, or grids, that have been used with Starkit. In addition, Gridkit contains functions for fitting effects produced by the Earth’s atmosphere.
The final of the primary modules is utils, which has basic tools that are useful in observational astronomy, such as converting wavelengths in air to wavelengths in a vacuum.
In the TARDIS collaboration we first establish a detailed plan on implementing new features before starting the actual work. This is an important step that ensures that the entire TARDIS collaboration is informed about the development efforts and that the team members can help shape the ideas during the discussion phase. We call these documents TEP - TARDIS Enhancement Proposals. We already have a great list of ideas at https://github.com/tardis-sn/tep that we need help with. Some of these we have specially selected for GSoC 2019 and are listed with specific “warm-up” tasks below. But feel free to propose your own TEP and make a PR on that.
If you use one of our TEPs, you can definitely add more detail to the implementation, but what we really want to see is a detailed timeline with milestones that shows us that you have thought about how to implement the feature in three months. For any questions about the projects, please ask on Gitter.
Putting in a Pull Request with the First objective is essential for each proposal to allow to see how you work.
Difficulty: Easy
Astronomy knowledge needed: Some
Mentors: Wolfgang Kerzendorf (@werzendorf), Tuan Do (@followthesheep)
Programming skills: Python
GSoC Application Tag:
Description: While StarKit has been successfully used in multiple publications, development is currently limited by the fact that there are no unit tests and lack of a standard for testing. This project aims to develop a testing framework that will be used to validate code commits as well as improve the reproducibility of the science from using this software. Goals of this work include: (1) a testing framework such as pytest that can be automatically run to test new commits, (2) unit tests, (3) an example end-to-end fit of a stellar spectrum. This testing framework should also be well documented so that it is clear how to create new tests in the future.
Your first objective if you choose to accept the mission: StarKit is based on the Astropy package-template and uses the testing framework of py.test. Write a very simple test and see if it runs with python setup.py test.
Difficulty: Medium
Astronomy knowledge needed: None
Mentors: Devin Chu (@dchu808), Rory Bentley (@rbentl)
Programming skills: Python
GSoC Application Tag:
Description: In order to model the spectra of stars, StarKit uses a pre-computed grid consisting of model theoretical spectra that are generated a specific intervals in the different physical parameters. For example, a typical grid has thousands of spectra that are generated over a range of values in effective temperature, surface gravity, and composition. This grid has N-dimensions corresponding to N parameters. At each grid point is a spectrum generated a specific wavelengths and with a particular spectral resolution.
Your first objective if you choose to accept the mission: Using Jupyter Widget and matplotlib, program a widget that carries out box 2 in the getting started page. Program a sliding bar that corresponds to the variable grid.teff
and plots the spectrum.
Difficulty: Medium
Astronomy knowledge needed: Some
Mentors: Tuan Do (@followthesheep), Devin Chu (@dchu808)
Programming skills: Python
GSoC Application Tag:
Description: Dust in space absorbs the light that is emitted from a star when it reaches Earth. This effect is called extinction. If a star is farther away, the star light passes through more dust, which in turn increases the extinction. Starkit wants to incorporate Dustmaps, a software package that determines the amount of extinction based on the distance of the star.
Your first objective if you choose to accept the mission: Go to Dustmaps (https://dustmaps.readthedocs.io/en/latest/) and install the software. Make a function that takes the inputs: sky coordinates in Right Ascension (RA) and Declination (Dec), and distance. The function should return a value for extinction, E(B-V). There are several examples that will help you here: https://dustmaps.readthedocs.io/en/latest/examples.html#getting-started
Difficulty: Easy
Astronomy knowledge needed: Some
Mentors: Tuan Do (@followthesheep), Rory Bentley (@rbentl)
Programming skills: Python
GSoC Application Tag:
Description: Imaging of stars are typically done using different filters which is used to collect the light from the star over a certain wavelength range. The filter curve is a function that determines the fraction of light that is transmitted at each wavelength of the filter. This curve depends on the material that the filter is made of. Starkit uses a set of filters defined by the wsynphot package https://github.com/starkit/wsynphot (Documentation at https://wsynphot.readthedocs.io) so that it can model how bright stars are using different filters. This project is about developing some visualizations and plots of this library of filter curves so that people will have an easier time searching for filters.
Your first objective if you choose to accept the mission: Install the wsynphot package and plot the filter curve for the filter named 'Keck/NIRC2/H'
Difficulty: Medium
Astronomy knowledge needed: Some
Mentors: Wolfgang Kerzendorf (@werzendorf), Rory Bentley (@rbentl)
Programming skills: Python
GSoC Application Tag:
Description: A star’s age will tell a lot about its temperature and size. We want to use this information to analyze our stars. There is a package that will translate a stars age to its size and temperature called isochrones (https://github.com/timothydmorton/isochrones/). The goal of this project is to link this code to allow StarKit to use the information about a star’s age.
Your first objective if you choose to accept the mission: Install the ‘eep’ branch from https://github.com/timothydmorton/isochrones/ and run this notebook https://github.com/timothydmorton/isochrones/blob/eep/notebooks/demo.ipynb.
Difficulty: Medium
Astronomy knowledge needed: None
Mentors: Wolfgang Kerzendorf (@werzendorf), Devin Chu (@dchu808)
Programming skills: Python
GSoC Application Tag:
Description: Documentation is an important for research software. It ensures that external users doing analysis with the Code understand what the code currently does. We want to make sure that the documentation (consisting of Jupyter notebooks) automatically updates itself. TRAVIS is often used for continuous integration but can also be used to generate documentation.
Your first objective if you choose to accept the mission: Build a simple .travis.yml file that in the before_install step automatically downloads a grid from the documentation.
Difficulty: Hard
Astronomy knowledge needed: None
Mentors: Wolfgang Kerzendorf (@werzendorf), Tuan Do (@followthesheep)
Programming skills: Python
GSoC Application Tag:
Description: StarKit extensively uses the Astropy modeling framework. Recent updates have unfortunately made things unusable for us in Astropy modeling but a fix is in progress (see https://github.com/astropy/astropy/pull/7945). We need to test if this will work with StarKit.
Your first objective if you choose to accept the mission: Download the PR and see if this will work with StarKit.