GSoC 2020 Sashank Mishra
-
Name: Sashank Mishra
-
Time Zone : +05:30 GMT
-
IRC Handle: sashank27
-
Github ID: sashank27
-
Blog - Sashank Mishra @Medium
-
LinkedIn : sashank27
-
Website : Github Pages
-
University: Indian Institute of Information Technology, Allahabad, India
-
Major: Information Technology
-
Current Academic Year: Fourth Year
-
Graduation Year: 2020
-
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.
-
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.
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.
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 |
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.
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.
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.
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.
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.
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.
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:
-
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.
-
Extend it to 2D profile selection, so as to view the relationship between two dimensions of the data.
-
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.
-
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
I have not participated in GSoC before. This is the first time that I would be participating in GSoC.
No. This is the only project and SunPy under OpenAstronomy is the only organization that I have applied for.
-
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.
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.