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 [2017/01/27 10:43]
chvogl [New module for the creation of spectra]
ideas_page [2017/02/09 15:00] (current)
unoebauer [Handling nuclear decay in TARDIS]
Line 5: Line 5:
 {{http://​upload.wikimedia.org/​wikipedia/​commons/​thumb/​a/​a2/​SN1994D.jpg/​480px-SN1994D.jpg}} {{http://​upload.wikimedia.org/​wikipedia/​commons/​thumb/​a/​a2/​SN1994D.jpg/​480px-SN1994D.jpg}}
  
-A [[http://​en.wikipedia.org/​wiki/​Supernova|supernova]] (here we show SN1994D in the Galaxy NGC4526 - //image source: wikipedia//​) marks the brilliant death throes of a star, during which it outshines its entire galaxy. It not only marks death, though: supernova ejecta change the evolution of the universe and enable the formation of planets and life as we know it. From the iron in your blood to the gold in your jewelry, supernovae return heavy elements assembled from the primordial hydrogen and helium left after the big bang.+A [[http://​en.wikipedia.org/​wiki/​Supernova|supernova]] (here we show SN1994D in the Galaxy NGC4526 - //image source: wikipedia//​) marks the brilliant death throes of a star, during which it outshines its entire galaxy. It not only marks death, though: supernova ejecta change the evolution of the universe and enable the formation of planets and life as we know it. From the iron in your blood to the silicon ​in your laptop, supernovae return heavy elements assembled from the primordial hydrogen and helium left after the big bang.
  
 There are still many mysteries surrounding supernovae (e.g. their precise origins, inner workings, ...). One way to study these objects in more detail is to split the light coming from these objects into its components (like using a prism) and analyzing the resulting data (which is called a spectrum). Here, we show spectra (black lines) of a number of different supernova types (//image courtesy Daniel Kasen and LBL//). Different chemical elements present in the supernova leave their mark on the spectra by imprinting characteristic features, so-called atomic lines (regions highlighted in colour). Thus, studying and interpreting such spectra allows us to identify what supernovae are made of. There are still many mysteries surrounding supernovae (e.g. their precise origins, inner workings, ...). One way to study these objects in more detail is to split the light coming from these objects into its components (like using a prism) and analyzing the resulting data (which is called a spectrum). Here, we show spectra (black lines) of a number of different supernova types (//image courtesy Daniel Kasen and LBL//). Different chemical elements present in the supernova leave their mark on the spectra by imprinting characteristic features, so-called atomic lines (regions highlighted in colour). Thus, studying and interpreting such spectra allows us to identify what supernovae are made of.
Line 25: Line 25:
 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 2017 and are listed with specific "​warm-up"​ tasks below. But feel free to propose your own TEP and make a PR on that.  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 2017 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 our mailing list [[https://​groups.google.com/​forum/#​!forum/​tardis-gsoc-sn-2017|tardis-sn-gsoc-2017@googlegroups.com]] or on [[https://​gitter.im/​tardis-sn/​tardis|Gitter]]. ​+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 our mailing list [[https://​groups.google.com/​forum/#​!forum/​tardis-sn-gsoc2017|tardis-sn-gsoc2017@googlegroups.com]] or on [[https://​gitter.im/​tardis-sn/​gsoc2017|Gitter]]. ​
  
 Putting in a Pull Request with the First objective is essential for each proposal to allow to see how you work.  Putting in a Pull Request with the First objective is essential for each proposal to allow to see how you work. 
Line 43: Line 43:
 **Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP001_extensive_test_suite.rst|TEP001]] **Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP001_extensive_test_suite.rst|TEP001]]
  
-**GSoC Application Tag:** testing+**GSoC Application Tag:​** ​integration-testing
  
 **Description:​** Testing a scientific code like TARDIS is very important. We need to ensure that the scientific insights we gain using the code are not based on bugs. Open collaboration with GitHub is great, but the more people work on the code the more opportunities there are to introduce bugs. Making sure that the code doesn'​t change or only changes as we expect it, is thus an important part of TARDIS development. ​ **Description:​** Testing a scientific code like TARDIS is very important. We need to ensure that the scientific insights we gain using the code are not based on bugs. Open collaboration with GitHub is great, but the more people work on the code the more opportunities there are to introduce bugs. Making sure that the code doesn'​t change or only changes as we expect it, is thus an important part of TARDIS development. ​
  
-We have two kind of tests: ​1) Unit tests that test small portions of the code. 2) Full tests that run the code with different settings ​and make sure that the outcome stays the same. This project concerns itself with the full tests.  +We have two types of tests: ​unit tests that verify ​small portions of the code and full-scale integration ​tests. The basis of the integration test framework was developed in GSoC2016 ​and should be expanded in this year: 
-We only use very few and not computationally expensive full tests as it is impractical for us to run these tests within ​our normal testing framework.  +  
- +  * currently we only verify ​that the output spectra remain ​the same. we'd like to expand that and check also different properties of our model against reference data (e.g. electron densities, ionization fractions, dilution factors) 
-Thus we want to add new testing mode to our current test suite - the slow tests. We need your help with that!+  * hand in hand with expanding the verification process ​we will improve the reporting process which should contain detailed plots and comparison results 
 +  * finally, different integration test suites should be defined. Our idea here is to have set of tests which proceed relatively fast and can thus be executed frequently and another set of very expensive but very detailed and rigorous tests which will be repeated less often
  
 **Your first objective if you choose to accept the mission:** Mark the TARDIS full test as slow and make it easy to enable it's execution only with a commandline option to `py.test` **Your first objective if you choose to accept the mission:** Mark the TARDIS full test as slow and make it easy to enable it's execution only with a commandline option to `py.test`
Line 72: Line 73:
 **Description:​** ​ **Description:​** ​
  
 +One important piece of TARDIS is the calculation of the plasma state. That means that it is also crucial to ensure that the results from these calculations do not change unexpectedly. For this purpose we use unit tests of isolated parts of the plasma state calculations and compare the results to pre-computed reference data. Naturally, whenever we improve, expand or alter the implemented physics underlying the calculation,​ we have to also modify the reference data. This project aims at making it easy for us to generate and update reference and to automate this process. ​
  
-**Your first objective if you choose to accept the mission:​** ​+ 
 +**Your first objective if you choose to accept the mission:​** ​Look at the function '​test_partition_function.py'​ and try to replace the comparison values there and replace them with one loaded from a file. 
  
 ---- ----
Line 87: Line 90:
 **Programming skills:** Python **Programming skills:** Python
  
-**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​tep014_model_from_file.rst|TEP014]]+**Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​a1661c6b508b5aed341a2627e03a7ad9c3942f12/​tep014_model_from_file.rst|TEP014]]
  
 **GSoC Application Tag:** reading simulation **GSoC Application Tag:** reading simulation
  
-**Description:​** TARDIS studies how light travels through a supernova and how it ultimately appears to us. We are researching this process and thus are interested in analyzing TARDIS outputs in great deal. This means that we aim at capturing the full state of a TARDIS calculation in more detail. TEP002 implemented the functionality to store important data to a file. The next step, TEP014 describes how to restore a fully functional Simulation object from the saved data.+**Description:​** TARDIS studies how light travels through a supernova and how it ultimately appears to us. We are researching this process and thus are interested in analyzing TARDIS outputs in great deal. This means that we aim at capturing the full state of a TARDIS calculation in more detail. TEP002 implemented the functionality to store important data to a HDF5 file. 
  
-**Your first objective if you choose to accept the mission:** Use `tardis_example.yml` to generate a Simulation object and save it to file. Then write a script reading `Radial1DModel.time_explosion`. Hint: Have a look at `pandas.HDFStore`.+The next step, which this project is all about, is to read the data again from the HDF5 and to restore a fully functional TARDIS simulation object.  
 + 
 + 
 +**Your first objective if you choose to accept the mission:** Use `tardis_example.yml` to generate a Simulation object ​(see the Quickstart guide on our documentation) ​and save it to an HDF5 file. Then write a script reading `Radial1DModel.time_explosion`. Hint: Have a look at `pandas.HDFStore`.
  
 **Bonus objective**:​ Read all attributes of `Radial1DModel` and create a model identical to the one from the `tardis_example.yml`. **Bonus objective**:​ Read all attributes of `Radial1DModel` and create a model identical to the one from the `tardis_example.yml`.
Line 107: Line 113:
 **Mentors:​** @lukeshingles,​ @shaching **Mentors:​** @lukeshingles,​ @shaching
  
-**Programming skills**: Python, Parsing, Databases ​(SQLAlchemy ​experience would be great)+**Programming skills**: Python, Parsing, DatabasesSQLAlchemy
  
 **Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP004_tardisatomic_restructure.rst|TEP004]] **Related TEP:** [[https://​github.com/​tardis-sn/​tep/​blob/​master/​TEP004_tardisatomic_restructure.rst|TEP004]]
Line 121: Line 127:
 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. 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.
  
-**Your first objective if you choose to accept the mission:​** ​Write a download function to download ​the atomic weights and symbols and so on from this page  http://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?​ele=&​all=all&​ascii=html. Then build a simple sqlalchemy database with one table and put it in there. "Bonus objective":​ Write a parser for (http://kurucz.harvard.edu/atoms/​1401/​gf1401.gamusing pyparsing.+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. 
 + 
 +**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
  
 ---- ----
Line 129: Line 137:
 **Difficulty:​** Hard **Difficulty:​** Hard
  
-**Astronomy knowledge needed:** Medium+**Astronomy knowledge needed:** Medium/High
  
 **Mentors:​** @unoebauer, @chvogl **Mentors:​** @unoebauer, @chvogl
Line 145: Line 153:
 {{::​lucy1999_formal_vs_mc.png?​600|}} {{::​lucy1999_formal_vs_mc.png?​600|}}
  
-A first implementation of this method ​in TARDIS ​has been performed ​during ​the ESA Summer of Code in Space (SOCIS). ​The goal of this project ​is to extend ​the current scheme to include ​electron scattering and to  +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 firm physics ​or astrophysics background will be advantageous.
-allow the treatment of line interactions ​with the macro atom scheme ​of [[http://​www.aanda.org/​articles/​aa/​ref/​2002/​11/​aa1428/​aa1428.html|Lucy 2002]]. ​The macro atom scheme constitutes a more sophisticated approach to line interactions than the currently used downbranch scheme. +
-This project ​requires ​bit of physics ​knowledge.+
  
-**Your first objective if you choose to accept the mission:** Implement the calculation of the source function in C. The current implementation is done in python with pandas. Assume the following function declaration with att_S_ul as the output:+**Your first objective if you choose to accept the mission:** Implement the calculation of the source function in C. The current implementation is done in python with pandas. Assume the following function declaration with att_S_ul as the output ​and the storage structure as the input:
  
-''​void integrate_source_function (..., double *att_S_ul);''​+''​void integrate_source_function (storage_model_t *storage, double *att_S_ul);''​
  
 **Hints:​** ​   ​ **Hints:​** ​   ​
Line 184: Line 190:
  
  
-**Your first objective if you choose to accept the mission:** Make a Pandas DataFrame with columns atomic_number,​ mass_number,​ mass - then use PYNE [[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. ​+**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. ​
  
  
ideas_page.1485510208.txt.gz · Last modified: 2017/01/27 10:43 by chvogl