User Tools

Site Tools


ideas_page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ideas_page [2019/01/29 23:27]
dchu [Transition StarKit to Python 3]
ideas_page [2019/03/12 22:43]
216.165.21.29
Line 34: Line 34:
  
 ---- ----
- 
-==== Transition StarKit to Python 3 ==== 
- 
-**Difficulty:​** Medium 
- 
-**Astronomy knowledge needed:** None 
- 
-**Mentors:​** 
- 
-**Programming skills:** Python 
- 
-**GSoC Application Tag:​** ​ 
- 
-**Description:​** StarKit is written and tested for Python 2, but this is becoming obsolete due to changes in the underlying scientific libraries such as numpy migrating to Python 3. The goal of this project is to transition the code to be compatible with Python 3. To evaluate whether the transition is successful, this project will also need to define a series of tests before migration begins. A successful project should also show that a typical science case can be replicated using the new Python 3 compatible code. 
-  
---- 
  
 ==== Building a Testing Framework ==== ==== Building a Testing Framework ====
  
-**Difficulty:​** ​Medium+**Difficulty:​** ​Easy
  
-**Astronomy knowledge needed:​** ​None+**Astronomy knowledge needed:​** ​Some
  
-**Mentors:​**+**Mentors:​** ​Wolfgang Kerzendorf (@werzendorf),​ Tuan Do (@followthesheep)
  
 **Programming skills:** Python **Programming skills:** Python
Line 63: Line 47:
 **GSoC Application Tag:** **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. ​ +**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. 
  
 ---- ----
Line 73: Line 59:
 **Astronomy knowledge needed:** None **Astronomy knowledge needed:** None
  
-**Mentors:​** ​+**Mentors:​** ​Devin Chu (@dchu808), Rory Bentley (@rbentl)
  
 **Programming skills:** Python **Programming skills:** Python
Line 80: Line 66:
  
 **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. **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 [[https://​starkit.readthedocs.io/​en/​latest/​getting_started.html|getting started page]]. Program a sliding bar that corresponds to the variable ''​grid.teff''​ and plots the spectrum.
  
 ---- ----
  
-==== Atomic Datasets ​====+==== Dust Maps ====
  
-**Difficulty:​** ​Hard+**Difficulty:​** ​Medium
  
-**Astronomy knowledge needed:​** ​Medium+**Astronomy knowledge needed:​** ​Some
  
-**Mentors:​** @lukeshingles, @shaching+**Mentors:​** ​Tuan Do (@followthesheep)Devin Chu (@dchu808)
  
-**Programming skills**Python, Parsing, Databases, SQLAlchemy+**Programming skills:** Python
  
-**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP004_tardisatomic_restructure.rst|TEP004]]+**GSoC Application Tag:** 
  
-**GSoC Application Tag:** atomic dataset+**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.
  
-**Description:** In addition ​to the input parameters ​(brightness of the supernova, ejected mass of the different chemical elements, etc.), TARDIS requires data for describing ​the structure of atoms from different elements (e.g. a sodium atom is differently structured than an iron atom; see the figure for quick overview ​for carbon).+**Your first objective if you choose to accept the mission:** Go to Dustmaps ​(https://​dustmaps.readthedocs.io/​en/​latest/​and install ​the softwareMake function that takes the inputs: sky coordinates in Right Ascension (RA) and Declination (Dec), and distance. The function should return ​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
  
-{{:​bohrmodel.gif}}+----
  
-This data is not measured by astronomers,​ but is most often gathered in a lab by atomic physicists. As measurement equipment gets more and more precise, so do the measured structures of different elements. Thus these values update from time to time and are often available in simple ASCII files (http://​kurucz.harvard.edu/​atoms/​1401/​gf1401.gam). While we have compiled a small atom data set from some specific sources for our initial work, we would like to get a collection of parsers that can read the different ASCII formats of the group and put this information in a uniform database. ​+==== Auto-generate Filter Curves ====
  
-For this project you would help us make parsers for a variety of formats from a collection of atomic data sources (see the TEP) and in the second part put this into a database. The assembled database will not only be very interesting for us, but also for many other fields of astronomy that do rely on atomic data. A useful resource of understanding atomic structure description can be found in http://​www.physics.byu.edu/​faculty/​bergeson/​physics571/​notes/​L27spectnotation.pdf.+**Difficulty:** Easy
  
-In GSoC 2016 we created a package that compiles all of this information into a database named Carsus (see http://​carsus.readthedocs.io/​en/​latest/​). For this year we aim to strengthen the link between Carsus and TARDIS and also include more atomic data into Carsus.+**Astronomy knowledge needed:** Some
  
-**Your first objective if you choose to accept the mission:** Use the script ​(https://​github.com/​tardis-sn/​carsus-db/​blob/​master/​scripts/​create_hdfstore.pyto generate an HDF store - then implement a meta table in the HDF file that stores the units of the columns. ​+**Mentors:** Tuan Do (@followthesheep),​ Rory Bentley (@rbentl)
  
-----+**Programming skills:** Python
  
-==== New module for the creation of spectra ====+**GSoC Application Tag:​** ​
  
-**Difficulty:** Hard+**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. ​
  
-**Astronomy knowledge needed:** Medium/High+**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'​
  
-**Mentors:​** @unoebauer, @chvogl 
  
-**Programming skills**: Python, C, Cython+----
  
-**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP005_formal_integral.rst|TEP005]]+==== Include information about ages of stars ====
  
-**GSoC Application Tag:** spectral synthesis+**Difficulty:** Medium
  
-**Description:** TARDIS'​s main task is to create spectra that can be compared with observations. In order to use TARDIS to estimate parameters of real supernovae, we need to select TARDIS simulation parameters in such a way so as to produce spectra resembling those of real supernovae. When having a real spectrum, however, we don't know what those simulation parameters may be.+**Astronomy knowledge needed:** Some
  
-We use a method that uses random numbers to simulate the flow of light through the supernova envelope. But that also generates noise in the final output spectrum. We would like to implement a better solution for this, by using the formal integral solution developed by [[http://​adsabs.harvard.edu/​abs/​1999A&​A...345..211L|Lucy 1999]], as proposed in TEP005. In the figure below, the benefit of this new spectrum reconstruction method ​(shown as the thick black linecompared to the standard Monte Carlo counting approach ​(noisy histogramis illustrated (//image taken from [[http://​adsabs.harvard.edu/​cgi-bin/​nph-data_query?​bibcode=1999A%26A...345..211L&​link_type=ARTICLE&​db_key=AST&​high=|Lucy 1999, fig. 4]]//):+**Mentors:** Wolfgang Kerzendorf ​(@werzendorf), Rory Bentley ​(@rbentl)
  
-{{::​lucy1999_formal_vs_mc.png?​600|}}+**Programming skills:** Python
  
-A first basic Python implementation of this method has been realised during ESA's Summer of Code in Space 2016 program (SOCIS 2016). In this year, we aim at porting the scheme to the C-part of TARDIS. Furthermore,​ the Formal Integral method should be completed during this project by incorporating the effect of electron scattering and by interfacing the technique with the Macro Atom-based line interactions treatment of TARDIS (c.f. [[http://​www.aanda.org/​articles/​aa/​ref/​2002/​11/​aa1428/​aa1428.html|Lucy 2002]]). For this project we think that a firm physics or astrophysics background will be advantageous.+**GSoC Application Tag:** 
  
-**Your first objective if you choose to accept the mission:** Implement the calculation of the source function in CThe current implementation is done in python with pandasAssume the following function declaration with att_S_ul as the output ​and the storage structure as the input:+**Description:** A star’s age will tell a lot about its temperature and sizeWe want to use this information to analyze our starsThere 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.
  
-''​void integrate_source_function (storage_model_t ​*storage, double ​*att_S_ul);''​+**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.
  
-**Hints:​** ​   ​ 
-Use the current Python implementation as a starting point and try to understand ​ 
-how to access the relevant data on the C-level. 
-To this end, you can have a look at the TARDIS documentation and see how the data  
-for the macro atom scheme (e.g. transition_probabilities,​ transition_line_id,​ ...)  
-is stored. 
  
 ---- ----
  
 +==== Auto-generating documentation with complex data ====
  
 +**Difficulty:​** Medium
  
-==== Handling nuclear decay in TARDIS ====+**Astronomy knowledge needed:** None
  
-**Difficulty:** Medium/Hard+**Mentors:** Wolfgang Kerzendorf (@werzendorf),​ Devin Chu (@dchu808)
  
-**Astronomy knowledge needed:** Low/None +**Programming skills:** Python
- +
-**Mentors:​** @unoebauer, @wkerzendorf +
- +
-**Programming skills**Python +
- +
-**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP007_isotopes_decay.rst|TEP007]] +
- +
-**GSoC Application Tag:** nuclear decay +
- +
-**Description:​** Supernova are powered by the decay of radioactive elements and thus if we want to simulate +
-supernovae we also need to take this physical process into account. Currently, this is done in a very difficult and  +
-not easily extensible way in TARDIS. We have thought about adding more support for this and need your help with  +
-this. +
  
 +**GSoC Application Tag:​** ​
  
-**Your first objective if you choose to accept the mission:** Make a Pandas DataFrame ​with columns atomic_number,​ mass_number,​ mass - then use [[http://​pyne.io/​|PYNE]] ​to write a function ​that takes this table decays it for 100 days and returns a table with the decayed masses+**Description:** Documentation is an important for research software. It ensures that external users doing analysis ​with the Code understand what the code currently doesWe 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.
  
 ---- ----
  
 +==== Update to new Astropy modeling infrastructure ====
  
- +**Difficulty:​** ​Hard
- +
- +
-==== Improving the Tardis GUI ==== +
- +
-**Difficulty:​** ​Medium+
  
 **Astronomy knowledge needed:** None **Astronomy knowledge needed:** None
  
-**Mentors:​** @wkerzendorf, @unoebauer+**Mentors:​** ​Wolfgang Kerzendorf (@werzendorf)Tuan Do (@followthesheep)
  
 **Programming skills:** Python **Programming skills:** Python
  
-**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP012_gui_overhaul.rst|TEP012]]+**GSoC Application Tag:** 
  
-**GSoC Application Tag:** gui+**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.
  
-**Description:** Often we need more information about the model and the calculation than the mere spectrum. For example, we frequently need to investigate in detail how a specific spectral line feature forms, which ions and which specific line transitions contribute. For exactly ​this purpose a Qt-GUI was developed (see [[http://​tardis.readthedocs.io/​en/​latest/​gui.html#​gui-explanation|here]]). It allows the user to easily analyse TARDIS runs and extract important physical information without knowing the exact inner data structure of TARDIS.+**Your first objective if you choose to accept the mission:** Download ​the PR and see if this will work with StarKit
  
-During GSoC 2019 we want to update and improve this GUI. As a first step, the GUI has to be made compatible with the current design of TARDIS, i.e. able to work with simulation objects. After this preparatory step, the GUI should be extended to contain the analysis tools which currently reside in the [[https://​github.com/​tardis-sn/​tardisanalysis|tardisanalysis]] repository. Finally, an addon scheme should be developed/​implemented which enables the user to easily add more analysis tools. +----
- +
-**Your first objective if you choose to accept the mission:​** +
- +
-At the moment, the GUI is incompatible with the current version of TARDIS and can't be started (Issue [[https://​github.com/​tardis-sn/​tardis/​issues/​690|#​690]]). Make a PR that implements the necessary minimal changes in the GUI to start with the current version of TARDIS. In this first task, it is not necessary to fix all potentially broken features but that the main GUI window can be started without errors.+
ideas_page.txt · Last modified: 2019/03/12 22:43 by 216.165.21.29