Skip to content

GSoC 2020 Sashank Mishra

Nabil Freij edited this page Feb 22, 2024 · 3 revisions

glue-solar: Glue Plugin for Solar Physics

Mentors: @cadair, @nabobalis, @astrofrog

Student Information


University Information

  • University: Indian Institute of Information Technology, Allahabad, India

  • Major: Information Technology

  • Current Academic Year: Fourth Year

  • Graduation Year: 2020


Experience In Programming

  • I have been involved in open source for the past 2.5 years and have been contributing to different open source projects, which include Android-based applications, Python-based packages, and ML-based projects.

  • I have worked on a Machine-Learning based project in my summer internship at Inter-University Centre for Astronomy and Astrophysics(IUCAA), Pune, India, the details of which are available here. Besides that, I have worked on various projects based on Machine Learning and Deep Learning.

  • I have intermediate experience in Java and Python, having been extensively working with them for the past 2.5 years. Besides that, I know C, C++, MATLAB, Bash, and Kotlin. I have also worked on tools and technologies such as Hadoop, Tensorflow, Keras, OpenCV, Django, Qt and I am always willing to learn more.

Open Source Experience

  • I have been contributing to various open-source organizations for the past 2.5 years. I have contributed to Mifos, OpenDataKit, Astropy, Astroquery, Stingray and other organizations.

  • I was the Google Code-In 2019 mentor for the TensorFlow organization. I mentored school children to start open-source contributions and introduced them to Machine Learning.

  • I have been one of the heads of the Technical Club of my college and gave various workshops discussing the importance of open source development, usage of Git, and other topics.

RELEVANT PULL REQUESTS

Organization Pull Requests
AstroQuery https://github.com/astropy/astroquery/pull/1606
AstroPy https://github.com/astropy/astropy/pull/9833
Stingray https://github.com/StingraySoftware/stingray/pull/450
OpenDataKit https://github.com/opendatakit/collect/pull/1874 https://github.com/opendatakit/collect/pull/1943 https://github.com/opendatakit/collect/pull/1968
Mifos https://github.com/openMF/mifos-mobile/pull/544 https://github.com/openMF/android-client/pull/803

Interest In OpenAstronomy

I developed a strong interest in the field of Astrophysics and High Energy Physics, ever since I went to do my internship at IUCAA, Pune, India, and interacted with the community there. By attending the introductory summer school on Astrophysics, I have a basic theoretical understanding as well.

OpenAstronomy provides an opportunity to explore the domain of Astronomy, which lines up my passion in the field of Astronomy and interest in Computer Science together. With the advent of increased precision and sensitivity of astronomical interests and better storage options, Astronomy is now one of the domains which are highly data-intensive and is getting more and more data. Therefore, it invites the creation of a community that can effectively handle, manipulate and provides all the resources as required, and OpenAstronomy does that job by the creation of various community-led packages like AstroPy, SunPy, HelioPy, and many others.

Solar Astronomy is what excites me the most in the field of Astronomy, and SunPy provides me the platform of working in that domain. Also, the usage of Python invites a larger community of astronomers and software developers alike, as it is the most sought-after and supported language in the open-source community. Therefore, SunPy provides me to explore my domain of interest, while working with an awesome community of developers and scientists.

Contribution to SunPy

I have been involved with the SunPy project for the 3 months, contributing since December 2019.

Pull Requests Corresponding Issue Status
fix indexing of QueryResponse for fetch #3852 Slicing a JSOC UnifiedResponse object causes Fido.fetch to fail #2781 Merged
Fix issue with 'as-is' protocol and add support for pathlib in JSOCClient #3838 JSOC Client errors with `Protocol("as-is")` #2631 Merged
Create .data property so as to encourage cleaner API #3746 Timeseries should encourage users to not use .data to get a dataframe #2917 Merged
Add property to access QueryResponse as Table #3675 make it easy to access the UnifiedResponse table #3279 Merged
Add __repr__ for mapsequence objects #3636 MapSequence doesn't have `__repr__()` #3506 Merged
Add .cmap and .norm property to plot_settings #3624 Replace plot_settings with .cmap and .norm properties #3415 Open
Add helper function to sample at coordinates #3592 Add map.sample_at_coords() #3494 Merged

Abstract

SunPy provides an excellent module for someone who is interested in solar physical analysis. It includes the feature to get required FITS files from various data sources, plot them in a script and perform certain manipulations. But for users, who have no experience with python code-development, viewing and manipulation become tough. Also, when we have linked up data, visualization becomes difficult. To deal with all these scenarios, a new GUI is to be developed on top of the Glue framework, known as glue-solar.

Glue-solar is an application developed on top of Glue, which is to be built on the lines of glue-astronomy, to provide an interactive and user-friendly platform for solar-physical data. Currently, the glue-solar is not actively maintained, has just the basic implementation and no official release. Also, it has no documentation for the users.

This project will focus on the development of features and documentation of glue-solar in such a way that it easily provides an interface for the users to load their FITS files, provides links between different types of data, and displays various visualizations.

Proposed Methodology

Glue provides an option to modify the existing Glue environment by the creation of custom plugins, which can be developed according to the requirements of the user. There are many existing custom glue plugins already created. Glue-solar would make use of these plugins to develop a custom environment for handling solar-physical data from various sources such as AIA, SDO, IRIS, and others. Also, different plugins would be created to handle and visualize the data.

Documentation

Currently, the glue-solar is not well-maintained, having no active release, and almost no documentation. Therefore, it would be necessary to develop the documentation using Sphinx, with all necessary images, and screencasts. This would provide a baseline for future developers and other astronomers to work on this project. Also, a release would be done for the users to download the plugin from PyPi itself. So, one of the major aims would be the proper documentation so that we can involve a large community of developers to get started on the extension of this project in the future.

Custom Data Loader Using NDCube

Currently, glue-solar supports stacking up of IRIS raster in a single NDCube object. The NDCube is chosen as it preserves the WCS while slicing operations. Therefore, we would extend the glue-solar such that all the basic instrument data such as that of AIA, SDO is also loaded up as an NDCube object. For data from IRIS, it should ideally support both raster and SJI data and should provide linking between them. Also, custom methods from IRISPy, such as extraction of level-2 fits from raster, and the combination would be used to manipulate data.

Extension of the custom pixel selector tool

As of now, glue-solar has a tool to select a particular pixel from the map. The pixel data is then created in the form of a subset. Since we would be using NDCube to load data, we will ensure that in extraction the WCS properties are preserved, by using relevant tools. Also, the UX would be improved. Also, there would be a new feature added to select the pixels lying under a custom line drawn by the user. I will also try to explore the possibility to link up various subsets created using these two methods and the vanilla method of glue.

Automatic Colormap Selection

There are different custom colormaps for plotting in SunPy. Mostly they are created for AIA maps, by the selection of instrument and/or wavelength. We will create a helper function that will try to load up the colormap by the metadata. The exact method to do this would be discussed with the mentors before the implementation.

Custom 1D profile selection

Glue has a feature of 1D profile extraction from a subset. Currently, the 1D profile viewer extracts profile from one of the axes, while summing up all the values among other axes. This functionality would be extended so as to provide the following options:

  1. It would be a great feature to extend this functionality so as to incorporate any other custom function, such as mean, to be used instead of sum for values of an axis in other dimensions.

  2. Extend it to 2D profile selection, so as to view the relationship between two dimensions of the data.

Timeline

May 5 - June 1: Community Bonding

  • I will spend my time exploring the Glue framework and its API, mainly focusing on its extension and creation of various customizable plugins.

  • I will also understand the workflow and usage of NDCube and IRISPy and how it can be easily implemented in the plugin.

  • I will remain in constant touch with mentors so as to discuss and finalize on any modifications in the roadmap for the project.

  • Meanwhile, I will continue my contribution to SunPy and will also start contributing to NDCube.

June 1 - June 29: Phase 1 Coding

June 1 - June 8
  • The docs would be created for the API that is present currently in glue-solar, and appropriate screenshots and screencasts would be created.

  • The README would be updated so as any user can install it easily in development mode.

June 8 - June 20
  • I would start with the modification of the existing data loader plugin, which would use the existing NDCube framework so as to load the FITS data from various sources. The framework would be able to support basic data loading from simple sources such as AIA, HMI, and others, as an NDCube object.
  • All the relevant tests and documentation would be created.
June 20 - June 29
  • Currently, glue-solar supports the loading up of IRIS data in both raster and SJI. We would verify this functionality, and also allow linking between both of the types of the data.
  • Also, we would verify the subset creation and automatic linking of data in created NDCubes.

June 29 - July 3: Phase 1 Evaluations

July 3 - July 27: Phase 2 Coding

July 3 - July 15
  • I will work on the automatic selection of colormaps.
  • In the SunPy core module, all the maps are automatically created as separate objects and then the colormaps are decided. One way would be to extend that functionality, but that would be unnecessary. Therefore, I will discuss with mentors to decide an optimal approach to the problem.
  • Also, Relevant tests and documentation would be created for this functionality.
July 15 - July 27
  • I will work on the extension of the pixel selection tool as discussed beforehand. This will include UX improvement, creation of tests to verify the WCS, and pixels in a line selection.
  • All the relevant tests and documentation would be created.

July 27 - July 31: Phase 2 Evaluations

July 31 - August 31: Phase 3 Coding

July 31 - August 15
  • In this phase, I would work on the extension of 1D and 2D profile selection, as discussed beforehand.
  • All relevant tests and documentation would be created.
August 15 - August 24
  • In this phase, we would create the first official release, so that the package would be available for installation through PyPi.
  • Any leftover work (in terms of documentation and/or coding) would be completed.
  • Bugs (if any) would be solved.

August 24 -August 31: Phase 3 Evaluations

Miscellaneous

Q. Have you participated previously in GSoC? When? With which project?

I have not participated in GSoC before. This is the first time that I would be participating in GSoC.

Q. Are you also applying to other projects?

No. This is the only project and SunPy under OpenAstronomy is the only organization that I have applied for.

Commitment

  • Currently I'm doing an internship as well, which is now remote because of the ongoing COVID-19 pandemic. The internship commenced in January 2020 and will end in June 2020. Therefore, I will be able to only give at most 5 hours during the weekdays. But I will cover up for that during the weekends, by working around 9 hours on those days. In this way, I would be able to spare 35-40 hours for the project per week.

  • I might have to go to college for 2-3 days in July regarding project evaluations and other formalities; the dates are not finalized yet. But, will let the mentors know about that beforehand, and will cover up the lost hours before or after the formalities are done.

Eligibility

Yes, I am eligible to receive payments from Google. For any queries, clarifications or further explanations, feel free to contact me at sashankmishra27@gmail.com.

Clone this wiki locally