Skip to content

GSOC 2020 Application RADIS Aditya Bharadwaj: (Atmospheric Interface to the RADIS Spectral Code)

aditya edited this page Apr 7, 2020 · 2 revisions

Organization: OpenAstronomy

Sub-Organization: RADIS

Details

Personal Information

  • Name: Aditya Bharadwaj
  • Time-zone: GMT +5:30
  • Github-id / gitter: adityabharadwaj198
  • E-mail: adityabharadwaj198@gmail.com
  • Phone-number: +91-9113955012

Education:

  • Undergraduate College: Manipal Institute of Technology
  • Major: Computer Science
  • Current Year: Fourth Year
  • Expected graduation date: 2020
  • Programme: Bachelor of Technology in Computer Science & Engineering

Work Experience:

  • Research intern at IISc Bangalore. (Jan 2020 - Present)
  • Working on reinforcement learning in non stationary environments.
  • Software Engineering Intern at GatewayVR (May 2018 - June 2018)
  • Worked on web development using php, mySQL, HTML & CSS.

Interest in OpenAstronomy:

I’ve always wanted to work with space related technologies, I’m always on the lookout for projects that lie in that sweet spot of computer science and astrophysics/physics. I've always been curious about discoveries of exoplanets made using telescopes such as Kepler, Hubble and was familiar with the fact that spectroscopy is used to determine the atmospheric composition of those planets, which is how we find habitable earth like planets. To be involved in the community that develops software for facilitating that would be an honor. I believe my greatest skill is being a fast learner which is something I want to capitalize upon by choosing something out of the scope of my bachelor studies. I also would like to continue my involvement after GSoC’s period is over.

Application

Project: Atmospheric Interface to the RADIS spectral code

Summary:

This project aims to take up the RADIS code that’s been developed for characterization of plasmas and flames and use it for exoplanet characterization, because under high-temperature conditions, the synthetic spectra takes a long time to compute. The RADIS code uses a newly developed approach to quickly calculate high-temperature infrared spectra which makes it one of the fastest spectral codes in the world. In the meantime, the exoplanet detection community requires high performances to characterize high-temperature atmospheres. Line databases used for high-temperature synthetic spectra calculations, such as ExoMol [1], contain up to hundreds of millions of lines which require minutes or days of computational time. Therefore, state-of-the-art exoplanet detections codes such as BART [2] need to rely on tabulated data, or approximate models. Adapting RADIS for atmosphere calculations would give the exoplanet detection community the opportunity to calculate fast, on-the-fly spectra while retaining a high accuracy.

Goal

The goal of this project is to provide the RADIS code with an interface suitable for atmosphere calculations, that can be used for high-temperature, high-accuracy synthetic spectra calculations and comparison with astronomical spectroscopy data

I find this project attractive because:

  • It is related to studying atmospheric compositions of exoplanets, something I read about quite curiously.
  • To successfully attempt the project, I would be going through documentation and tons of lines of code, which will make me used to reading documentation and source code for my life as a developer in the future.
  • It will act as a challenge for which I’ll have to constantly skill-up and be productive.
  • It will let me contribute to an open source, for an organization that I will eventually be a part of after GSoC.

I can complete the project because:

  • I’m a fast learner and a dedicated individual.
  • I’m currently a research intern, so I won’t really be having problems reading long research papers.
  • I have good core CS concepts like data structures and algorithms, which allow me to grasp any CS paradigm rather quickly. This will help me with objectives like memory optimisation (After integration of ExoMol)
  • I’m good at writing clean code, with proper documentation.

Description:

This project is mainly based on two feature requests which are https://feathub.com/radis/radis/+1 and https://feathub.com/radis/radis/+4. The first is to calculate atmosphere given standard atmosphere input files like mole fraction, temperature, pressure etc, and the second involves providing ExoMol support. Proper documentation and thorough testing has to be completed after completing the addition of the above.

Deliverables:

  • Support for Atmospheric Calculation
  • Direct integration with memory optimised ExoMol database
  • Well documented code and tests on GitHub repo
  • Python notebook as an example of how to use this Atmosphere module

Secondary Objectives:

  • Document architecture and developer guide when facing unclear points that may appear.
  • Review pull requests from other RADIS contributors
  • Optimized calculation of atmospheres in optically thin configurations (work together with project #Accelerate RADIS)
  • Assemble using the LOS (line-of-sight) module.

Initial contributions

To get started with the codebase, I took opportunity to answer some of the latest Issues raised by the RADIS user. I therefore have also submitted a PR with proper tests to resolve one of these: #83

Afterwards, I started the groundwork for the GSoC project and analysed the code architecture to understand which parts I would need to modify. The flow chart of the Radis spectral code is available on the Developer Guide.

My understanding of the code infrastructure shows that the project can be done with minor modifications to the Radis code project, mostly in the lbl/loader.py file and io/ module to add the interface to the ExoMol database.

The rest of the project can be done creating a new package (could be called Radis-atmosphere) that has the Radis project has a dependency. The structuration of this package is shown in Figure 1. It would require functions that read temperature and profile profiles as input, parse and feed them to the core of the Radis module using the SpectrumFactory class and gather the output spectra. Finally, it would assemble the output spectra to solve the radiative transfer along the different layers of the atmosphere, and produce the resultant spectrum. As I understand it, this last part can be done using the functions defined in the los/ module for the basic cases (ex: plane parallel layers of atmosphere). In the latest weeks of the project I’d like to further improve that part by developing radiative transfer models for more realistic geometries, such as spherical layers.

Fig 1: Suggestion of Architecture for the project

Figure 1. Suggestion of architecture for the project

Timeline:

Community Bonding Period:

  • Talking to the community, understanding the spectroscopy users’ requirements and their motivation.
  • Learning about emission & absorption spectroscopy
  • Setting up a development environment on the local machine. Familiarizing with github and tests.
  • Going through the documentation about RADIS architecture
  • Review this issue : #74
  • Understand community guidelines
  • Clarify any doubts related to the source code

Week 1, 2

  • Explore the ExoMol database
  • Explore the HITRAN format and how it’s used in RADIS
  • Integrate database from ExoMol using a converter to HITRAN format
  • Work on any suggestions made by the mentors

Week 3, 4

  • Go through how RADIS code for characterization of plasmas and flames has been written.
  • Write your code for calculation of atmosphere line-of-sight spectrum with Python hard-coded inputs with the above as a reference.
  • Work on any suggestions made by the mentors
  • Send the report for 1st Evaluation.

Week 5, 6

  • Attempt to directly integrate ExoMol.
  • Suggest and review ideas for memory optimization.
  • Perform memory optimization.

Week 7, 8

  • Calculation of atmosphere with standard atmosphere input files (mole fractions, temperature profile, pressure profile)
  • Submit report for 2nd Evaluation.
  • Start reading about secondary objectives.

Week 9, 10

  • Documentation of the atmosphere module, done for https://github.com/radis/radis-examples. A python notebook is to be written.
  • Work on any suggestions made by the mentors.
  • Push code, tests and documentation to GitHub
  • Attempt to complete secondary goals

Week 11, 12

  • Work on any Bugs that might have escaped notice
  • Attempt secondary goals.
  • Send final evaluation report.

Note: Apart from the monthly evaluation reports, I aim to send a weekly report to keep the mentors updated with my progress.

Schedule Availability:

My current internship ends in early May, after which I’m completely unoccupied. I can put in 6-8 hours per day every week for the rest of the twelve weeks.

References

[1] The ExoMol database: molecular line lists for exoplanet and other hot atmospheres, Tennyson et al., doi/10.1016/j.jms.2016.05.002

[2] BART, Bayesian Atmospheric Radiative Transfer fitting code : https://github.com/exosports/BART