This week we finally came to the part for which I was eagerly waiting, i.e. developing analytical web interfaces (web app stuff) so that users can easily interact with the data to get the visualizations & results they need. 🙃 I played around with visualization stuff and dived into researching the technologies present around Jupyter to make web apps from interactive notebooks. This way the developed interfaces can be accessed both locally as well as on web. 😍
What did I do this week?
- I apparently fixed the problem that I shared in last week's blog (PR builds failing since I made pipeline to access filter data from artifacts for executing notebooks). I experimented & found that when I manually build the PR commits (being a member of my Org), the build passes which was failing when getting triggered as a PR build (from me as a contributor). So this made it clear that we can merge the PR in our codebase. And PR build failure was due to a problem of authorization when calling REST API for which, I also opened an issue (called as feedback there) in Azure DevOps Developer Community. I followed up with their team, need to try some things but in future since it's not so prior when more important things are ahead!
- Since all major work to make wsynphot stable to use is done, I finally got chance to do the work I wanted to do: creating analytical web interfaces for our packages (major part of my proposed project)! Our main aim is to build a web app for calculating photometry of stars, which lies at the intersection of both of our packages: starkit & wsyphot. So I started using starkit to plot star's spectrum from grids (HDF5 files that contain relevant data of star) and played around with it.
- I created a table in starkit docs, listing all test grids created by mentors that are available at Zenodo for open access. I also needed to find out the bound values of each grid's characteristics in the table, which improved my understanding how starkit works with grids.
- Then I followed up documentation of bqplot & ipywidgets to create an interactive plot of the spectrum by using sliders for changing the values of grid characteristics.
- Now before advancing in plotting, my mentor told me to try converting this simple interactive plot (a prototypical interface) into a web app. So I researched about possible ways to convert an interactive Jupyter notebook into a web app, and found out about several interesting things to implement. 😮
What is coming up next?
Now I'll start implementing the several ways I found to create web app from Jupyter notebook. Then we will compare & decide which one should we use, before I continue developing more interactive interfaces.
Did I get stuck anywhere?
Not any such, this week was more about exploration & experimentation.
What was something new I learned?
📊 Bqplot: It is a 2-D plotting for Jupyter, based on Grammar of Graphics. Thus it is a perfect choice for integrating visualizations with other Jupyter interactive widgets to create integrated GUIs - which is what we want to develop at StarKit.
🚀 Variety of services Project Jupyter provides: From interactive UI controls to a tool for running notebooks in the cloud, it is really powerful & amazing!
- IPyWidgets are used to interactively visualize and control changes in the data to instantly see how it affects the results.
- Binder allows us to create custom computing environments on cloud that can be used to run & share notebooks with remote users on web. Popularly used is mybinder.org which is a pre-existing deployment of BinderHub that is built on JupyterHub.
- JupyterLab is the next generation of notebooks interface providing an IDE for data science workflow!
Thank you for reading. Stay tuned to learn about my upcoming experiences!