Skip to content

GSoC 2016 Application Kushan Joshi:Gamma sky.net: A web app to explore the gamma ray sky

Kushan Joshi edited this page Mar 25, 2016 · 1 revision

GSOC 2016 Application - Open Astronomy

Gamma-sky.net: A portal to the Gamma-ray sky

Mentors Christoph Deil, Johannes King

1. About Me

Student Information

| | --- | --- | --- | Name | Kushan Joshi | | IRC | kepta | Github | https://github.com/kepta

2. Project Proposal

2.1 Brief

This project will be about implementing http://gamma-sky.net. This is an ambitious project to open up the Gamma sky to the entire world through a web application. For the first time H.E.S.S and Fermi Gamma-ray telescopes will be jointly releasing images to the general public and this web application would act as portal to all the information one would want about Gamma-ray sky, be it an amateur astronomer or a professional scientist.

With the help of beautiful images and interactive user experience we intend to keep the users hooked to the website and make them curious about Gamma Ray astronomy. Unlike other alternatives which either focus too much on raw data or just focus on the interactive experience, we plan to hit the sweet spot with amazing user interaction and informative content.

The goal here is to remove the dreaded feel of information overload when someone thinks about Gamma-ray astronomy and make it a pleasant joyful experience for everyone. We also intend to keep in mind that professional astronomers would also want to use this platform and hence keep the website updated with scholarly references where they can dig for more research information.

2.2 Content

The majority of the time would be spent making images display correctly and calibrating the data points to map correctly to the right source. We will be using Visiomatic for reading the FITS header and converting it into JSON from a proper projection of data onto the imagery.

The major data points on the imagery should show a tooltip when a user hovers over them, showing the necessary information and links to relevant information. The information shown would depend on how much technical details the mentor of this project wants to show the user. We have discussed two options, either show little information and supply with links to relevant websites for in-depth information or show as much information as possible.

The application would make use of Fermi RGB images with Contours from HESS data. Implementing HESS contours on top of fermi would require preprocessing of HESS data to form contours and display them on top of the flat 2d Fermi Image. For this particular use case, the application should use mapbox terrain API, the sample results of this API can be seen here. The example is using terrestrial imagery to show contours, which can be replaced with Fermi tiles to show contours from HESS data.

The Fermi images would have different energy bands or colors like Fermi/3, Fermi/4, Fermi/5, Fermi/Color. The data format of choice would be HiPS for this case. The user should be able to switch between the different energy bands through a simple tabbing mechanism, which should reflect the changes immediately. This is similar to what can be done by using the bottom left switches at thecmb.org. After discussion with the mentor of this project, we plan on making this website static. So there won’t be any server queries, all data with be precooked and browser friendly.

2.3 2D Images

This application would display imagery either in 2d or 3d. This imagery should be able to toggle between 2d or 3d state by a simple button available to the user. Visiomatic would be the library of choice to display the 2d imagery of the data. Visiomatic is a special purpose derivative of LeafletJS* for mapping and navigating large scientific images.

Another use case would be to allow for flexible searching across the application. If the user types Crab Nebula the application’s logic should intelligently be able to decipher the input and redirect user to the said location. We can use Sesame’s API to find out the location of the astronomical object and using this data point the user to correct location. This search field should also be able to parse regular J2000 or GAL coordinates.

(*Note: LeafletJS doesn't allow for continuous/smooth zooming into images and my mentor has suggested me to look into openlayers. So, we will be discussing whether continuous zoom would be an important part of the overall UX of the application and then incorporate openlayers)

2.4 3D Imagery

For the 3d data, we will be using J2000 or GAL format for data. The 3d imagery would not require any sort of projection like the 2d imagery, we will be using HEALPix to correctly display the 3d image. The user would be given an option to pan or zoom the sphere, much like thecmb.org. To implement the rotating 3d sphere, we will use the library threeJS. This library would allow us to have a beautiful 3d imagery of data where user can play around with the sphere. However, we plan to keep the 2d imagery the de facto for more in depth information and 3d to give a nice visual perspective.

2.6 Nice to have

  • The application should be capable of displaying gamma ray spectrum, something similar to this, to accompany the main HESS data visualization.

  • Have more animations, to make the UI and transitions fluid. Timelapse of Fermi-sky. This visualization would show how the Fermi-sky changes with time. The user would be able to enter the timelapse with a play button and can stop or pause anytime. They should also be able to seek or scrub the timeline to see the changes.

  • A guided tour, this tour would be an assisted tour showcasing all the features of the application and help user get familiarized with the application.

2.7 Tools

This application would be a single page application created using modern web development tools. We plan on using Astropy and Gammapy API’s to provide with the input data to the web application.

The web application will be built using ReactJS as the primary UI builder. ReactJS is a powerful library for creating modular UI components. It scales really well for large projects and promotes the use of the powerful ES6 using Babel transpiler. Currently, there are two famous libraries for testing Jest and Enzyme. Both do a wonderful job, however, I plan to discuss with my mentors on which one to use, during the community bonding period.

I plan to use threeJS for drawing the 3D images, one can see an example of a rotating 3D sphere here. For creating 2D images I plan on using Visiomatic to provide the amazing 2D images along with D3.js for graphs and visual representations.

Gulp would be used to provide the need for a task runner to complete various tasks during the build steps.

Timeline

Week Tasks
Before 23rd May: (Community bonding) Community Bonding
• Discuss with mentors about the overall project implementation in depth.
• Discuss on how to prepare 2D and 3D images
• Discuss on how to implement 3D images using threeJS
• Discuss the high-level testing and continuous integration of the application.
23rd May - 29th May: This would be the first week. I would like spend my time setting up the base architecture for the application and finalising on the libraries.
30th May - 5th June: • Create a system test plan.
Discuss the required coverage for tests with mentors.
• Create a system integration plan.
• Create a document which will act as README for the project.
• Create a document which will cover the coding conventions and contribution guidelines.
• Create a document which will introduce the application architecture.
• Work on continuous integration and build process.
• Work with the mentors to make them familiar with the test bench and CI tools used for the application and incorporate any changes suggested by mentors.
6th June - 12th June: Prepare required libraries and data for 3D images.
• Add layers for different energy bands.
• Finalize the 3D imagery component and integrate it with the application.
• Write test cases for this module.
13th June - 19th June • Work with my mentors to setup the preprocessing of 2D images from various data sources. This will mainly be a backend process and will require us to create a proper build process to create the data in the right format which can then be fed to the browser running the application.
• Gather all the relevant information to be displayed along with 3FGL, 2FHL and HGPS images catalogue markers.
• Add various energy layers for each image source.
20th June - 27th June (Mid Term) Mid Term Deliverables
Working web page with Fermi survey images and Fermi catalog markers displayed in 3D and 2D
27th June - 3rd July: • Add HESS contours to FERMI images.
• Add Search feature to the data points in the images.
• Add Planck and ROSAT images.
• Write test cases.
4th July - 10th July: • Finalize the Images module of the application
• Work closely with mentors to make sure it is in tune with the requirements.
11th July - 17th July: • Complete all the documents.
• Do extensive testing
• Add more test cases if required.
18th July - 24th July: • Implement the guided tour.
• Timelapse for the Fermi sky.
25th July - 31st July: • Add animations.
• Do performance tweaking.
1st Aug - 14th Aug: • Finish up any pending work.
• Prepare the final working application and make sure all the requirements have been met.
15th Aug - 23 Aug: * (Final week) Final Evaluation *
• Cleanup the code
• Get feedbacks from the community.
• Prepare for final evaluation.

3. Other Information

3.1 Contributions

Since I come from a Javascript background, I discussed with my mentor very early this year on how to contribute to community and together we developed a working prototype called web-experiments.

Source code: https://github.com/gammapy/web-experiments Live Demo : http://gammapy.github.io/web-experiments

This web-experiments project is a demo application which allows the user to see the catalog for Fermi-LAT high-energy 2FHL data sets. It allows you to directly jump to a source via url query eg. http://gammapy.github.io/web-experiments/?cat=2FHL&source=55 There is also an image section which shows the FITS image. http://gammapy.github.io/web-experiments/#image

3.2 Have you applied for other project ideas/organizations?

Yes, I am also planning to apply at Open Street Maps.

3.3 Are you planning any vacations this summer?

No, I don’t have any plans for vacations this summer.

3.4 How many hours per week do you expect to work on the project?

I plan to work 40-45 hours per week.

Clone this wiki locally