Skip to content

GSoC 2017 prateekiiest

Nabil Freij edited this page Feb 28, 2023 · 3 revisions

Table of Contents

Organization: SunPy in OpenAstronomy

SunPy Website Improvements



Student Information


University Information

  •     University: Indian Institute of Engineering Science and Technology, Shibpur
  •     Major: Computer Science and Engineering
  •     Current Academic Year : Second Year
  •     Graduate Year: 2019

Experience In Programming

  • I am currently working on a Project to create a high altitude experimental probe which would gather data about the atmosphere at a height of 50 km and also send live feed data about the horizon and the earth from that height.The Project is currently being funded by University of Boston. Project Horizon
  • Intermediate knowledge of Python for Data Science and Statistical Analysis.
  •  I have contributed to some projects on Algorithms. Hence I am comfortable in working with Git and using Github.
  • An active coder on Hackerrank and HackerEarth.
  • I am comfortable in doing programs in Python. I did two major projects on Machine Learning in Python which majorly uses statistical analysis (pandas, numpy) and the use of Jupyter Notebook. These were project works for Udacity Machine Learning Nanodegree:
Experience in Website Development

Hackathons and Open Source experience

  • Go-Hack Idea 2016: I participated in Go-Hack Idea in 2016 where I proposed an idea on smart home security systems along with some small implementations using Adruino, Raspberry Pi.
  • Contributing to Organisations like The Algorithms: I had been contributing to some open source organisations and repositories for the past two years.
Some of them include:

Interest In OpenAstronomy

OpenAstronomy consisting of 8 sub-organisations is a collaboration between open source astronomy and astrophysics projects that are being used by researchers around the world to study our universe. The analysis of data obtained from observatories like SDO , Hubble Space Telescope helps multiple types of research from being able to forecast a solar storm to detect planets in other stars.

Astronomy is at the frontier of science. There are new discoveries made all the time.

I had always a love for the sky and a kind of childhood fascination in the field astronomy and to me its feels amazing to see real time data of the Sun , captured just a few hours back, in my computer screen and I am able to analyse those data obtained. The organisation is inspiring new developers like me to join the open source community and build the project code base together with lead developers and that is where I find the joy of Open Source. It has been really a great experience contributing to Sunpy since I joined the Sunpy community.

OpenAstronomy along with Google Summer of Code has given me this opportunity to be a part of these huge project work on Solar Data Analysis and I feel it as a privilege to contribute to such an open-source software in the field of astronomy.

Project Proposal

Project: Improvements to the Sunpy Website and Documentation with a new look and new features. Mentors: Stuart Mumford , David Perez-Suarez

Abstract

Sunpy Website The Sunpy Website is the main gateway through which users get to know about the software , its versions, installation procedures, its features and many more. So for any big software, it is really essential for the users have easy access to all the resources - (guides and how to use the software package). It is therefore required to have a new design for it using HTML/CSS. It is also ensured that the theme for the website developed can be used by the current Jekyll website and also in the future by Drupal, Joomla or Medium.

Sunpy Documentation The Sunpy Documentation contains all the relevant information related to the software package. The design for the website is now used to create a corresponding Sphinx theme. This theme will then be used for the Sunpy documentation and also for the Sunpy affiliated packages.

The website and the documentation needs much improvement in terms of design and content.


Project Goals

  • Design a new look for the website using HTML/CSS which can be used by the current jekyll website and in future any other technologies like Drupal, Medium.
  • Develop a sphinx theme that has the same design as the Sunpy website.
  • The new sphinx theme will then be used by the Sunpy documentation and any Sunpy affiliated packages.
Extensions to the project I plan to work on
  • To improve the content of the website.
  • To implement a registry of Sunpy affiliated packages on the website.

 

Detailed Description of the Project

The Sunpy Website is in its naive stage. The website is like a window to new users and developers who would like to learn about the software, its core features and also use it for their project_works. So I believe the website is a core part of the organisation which plays a vital role in conveying about the software, the organisation's work to the users outside.

It is therefore required to have a new design for the website, create a completely new look for the website with some additional features.

It is also a necessity to have the same design for the documentation as in the website. The documentation holds all the relevant information and guides pertaining to the software and it currently uses the Read the docs theme. It would be much better if the documentation is made to have the same theme as that of the website.

Improvement in the current website and the documentation

While working on with the code and also for the installation procedures, I had to consult the documentation and in some cases the website. So I came up with some of the shortcomings which I want to improve.

Flaws in the Website Flaws in the Documentation
  • First of all, the website needs a much improvement in the design. It needs improvement in terms of style.
  • The Sunpy Docs has many areas lacking proper documentation like for ROI, some parts of the Lightcurve Section. Some of the functions have not been documented. So it is really important to update them.
  • The website does not have a FAQ section, which is really necessary to seek answers to common questions. Hence members of the organisation need not have to answer such frequent questions.
  • The documentation should have more details for the installation procedure.
  • The gallery of the website only contains tutorial on Lightcurve using IPython Notebook. It should also contain some tutorials on map resampling, submaps and solar cycle using IPython Notebook. The website gallery have a possibility to get removed as said by my mentors.
  • Also, the website doesn't contain presentations and video tutorials and research paper links.
  • The documentation currently does not contain the corresponding issues related to the details under the API reference. So new developers can get more acquainted with the issues faced corresponding to the given module.

Milestones/Deliverable

  • Have created a new design for the Sunpy Website.
  • Have included more content in the website.
  • Have developed the sphinx theme for the Sunpy Documentation having same design as that of the website.
  • Have implemented a registry of Sunpy affiliated packages.
Dividing the project into two parts
First part of the project
The first part of the project deals with the design of the website and creating the sphinx theme having the same design to be used by the Sunpy documentation and the affiliated packages.
  • The tools required for the website design is chalked out in this part.
  • The design of the website is sketched out - The design will give a completely new look for the website with some additional new features.
  • The design is implemented using HTML/CSS.
Second part of the project
  • Since when I started knowing about the Sunpy codebase and started working on the issues - package_novice and package_medium ones mostly, I would always go through the documentation and try to understand exactly why the issue was brought up, before going to the coding part. So the documentation part is really crucial for beginners to understand such a huge code-work and get a better flavor about the software. Hence, I would devote my time to working on some new features to make the documentation more better.
  •  I remember some of topics where I faced issues. I will thus try to clear those issues by giving more examples and also links to some extra resources which are not present in the current documentation, so that beginners don't have to face those issues again.
  • I also saw that there were some modules which were not defined, or the documentation for that part was not added. For example sunpy.net.vso.attrs.Time :collides, pad. So I would like to work on them and give appropriate documentation for better understanding of the modules.
Extensions to this project I would work on
Improve the content of the SunPy website
  • The website does not contain much description on some of the core functionality of Sunpy. I plan to add some feature section where there will be bulleted list on some of the main modules of Sunpy along with their functionality (their description, what is their function in the Sunpy code base) and their corresponding links to the Sunpy Documentation.
  • I also want to create a FAQ (Frequently Asked Questions) section in order to address some common questions from the beginners.
  • I plan to add some links to some of the presentations SunPy - Python for Solar Physicists; SciPy 2013 Presentation and video talks done by Sunpy like PyAstro16 - Steven Christe - SunPy, the solar data analysis package and Stuart Mumford - SunPy: Python for Solar Physics on the website.
  • I would also want to add some more content about the instruments used here, and also some links for resources related to various issues. I would also add more about some of the core features of the latest version, so that new users can get a better understanding of the software.
  • Lastly, I want to give links to some of the latest research papers associated with the Sunpy Organisation and also some of the research papers that beginners may need in order to implement some algorithm for usage in a module.
Research papers example I would like to add include:
Why this extension?
The Sunpy Website is in still in its initial stage and there is much to improve in the website and improving its content is one of the important things that needs to be done. Users will only get to know about the software package through the Sunpy Website and hence it is essential that get to know about it in detail, and if any confusion they may leave a question at the matrix channel. The website should include the details of some of the core libraries of Sunpy, the data sources used for the project , the description or some link to the instruments used for gathering data for Sunpy. Likewise it will be a much better outreach for Sunpy to the users interested in working on Solar Project.
Implement a registry of SunPy Affiliated packages on the website.
  • Add more about some of the core features of the latest version, so that new users can get a better understanding of the software.
  • Create a registry of Sunpy dependencies and the affiliated packages on the website in a prescribed format under a separate section.
    • A list of the affiliated packages will be kept in a publicly available location. This list shall contain links to the source code, any website associated with the package and contact details of the maintainer of the package. There will be a list of packages maintained on the www.sunpy.org website, which shall provide information to users about the affiliated packages.
  • Give description as to how to register an affiliated package
    • To register an affiliated package it is needed to contact the chair of the SunPy board, or another board member, who will propose the package to the board who will then make a decision on that package.
  • Packaging Affiliated Packages
    • To make it easier for developers to maintain affiliated packages a package template will be provided. This will allow package maintainers to not have to worry about Python packaging and documentation / testing infrastructure, and concentrate on the development of their package. This template will provide a package which is laid out and behaves much like the core SunPy library.
Why this extension?
The Affiliated Packages are registered with the SunPy Project to benefit from the publicity and support available within the SunPy community, while maintaining their independence and control over the package. As a community-driven project SunPy encourages contributions from a diverse group of people on a wide range of software. Not all solar physics software falls within the remit of the core SunPy library, and some software developers may wish to maintain a degree of control over their software than it being part of the core library would afford them. Both of these reasons provide motivation for software which is associated with SunPy but not contained within the core library. Having an association with SunPy will provide advantages to these packages, such as the knowledge of the SunPy community and the publicity provided by SunPy, while also allowing the whole SunPy community to grow and provide useful tools to a larger audience.

 

Lastly,

  • The sphinx theme is developed having the same design as that of the website. I have already read about the Sphinx documentation, particularly on how to create a customized sphinx theme.
  • This theme is now used for the Sunpy Documentation and for other affiliated packages for Sunpy.

Work Schedule

Time Period My Work Plan
Community Bonding Period '
4 May - 29 May
First Week
  • Dedicate this time to knowing more about the project, the project code base and the Documentation.
  • Discuss with mentors about the design of the website and what tools that will be required for this.
Second Week
  • Discuss with mentors which particular features they want me to include the website and the documentation.
Third Week
  • Finalize the design of the website.
  • Go through the code work of the Sunpy website, and clear my doubts from mentors regarding how the website can be used by any static site generator like Jekyll, or any future technologies.
First Part of the Project starts Work Period
30 May - 25 June
First Week
  • Start building the website with the finalized design.
  • Implement the design for the Home Page using CSS, HTML and build the page locally.
  • Update Pull Request for the new home page designed.
Second Week
  • Implement the design for the About and the Blog section of the page and see the page build it locally.
  • Discuss with mentors about the format of the Blog section and also what should be the corresponding style of writing under each blog writing.
Third Week
  • Submit patches for issues or new features proposed under the the website code_base.
Fourth Week
  • Include the new features like FAQ under a separate page.
  • Test and ensure that the website design is completely done by using local installation through WAMP or creating a new test domain using cPanel . Any remaining work is addressed to in this period. Prevailing issues are addressed to in this period.
  • Finalize Part 1 of the project after reviewing it with mentors.
26 June -30 June Phase 1 Evaluation
First part of the Project ends. Second part of the Project starts
31 June - 12 July Work Period
First Week
  • The Sphinx theme is developed having the same design as the website.
Second Week
  • Discuss with mentors about the customization of Sphinx theme.
  • Implement this theme for the Sunpy Documentation and other Sunpy packages.
13 July - 23 July Work on the extensions to the project.
First Week
  • Discuss with mentors in what way I can improve the content and under which section more content needs to be added.
  • Add more gallery examples related to maps, ROI and submaps along with some short code snippets using Jupyter Notebook.
Second Week
  • Add presentations and Sunpy conference talks under Blog Section.
  • Work on the FAQ section to include more questions.
Third Week
  • Add corresponding issues related to each of the tutorials so that beginners can understand the problem much better.
  • Implement a registry of Sunpy affiliated packages.
  • Create a separate section where a registry of the packages will be shown.
  • Discuss with mentors regarding the format of the registry.
Fourth Week
  • Give a detailed description of each of the affiliated packages along with their current versions and some of their important features.
  • Update Pull Requests corresponding to documentation issues under the documentation section.
  • Add documentation to the modules under the Sunpy API Reference that has not yet been documented.
25 July - 28 July Phase 2 Evaluation
29 July - August 21
  • Buffer Period
Any remaining amount of work is finished during this period.
  • Any issues remaining is addressed to during this time.
Second phase of project completed.
Final week: Students submit their final work product and their final mentor evaluation.
August 21 - August 28
Final Week
  • Improve documentation.
  • Fix some typing errors under documentation.
  • Give documentation to some attributes under API Reference which were not addressed to.
  • Give a more detailed description to Installation Procedures specially for installing Sunpy on top of Anaconda related to issues - #1704 and #1618
  • Resolve merge conflicts (if any).
August 29 - September 5 Mentors submit final student evaluations
September 6 Final results of Google Summer of Code 2017 announced

Benefits to the Community

The website of SunPy is still in its initial state. I believe that by the time I complete this project I would be able to give a complete new look to the website along with improved content and features which will be beneficial to all users who want to use Sunpy for knowing about the software and also using it for their research work. As a community-driven project SunPy encourages contributions from a diverse group of people on a wide range of software. By implementing a registry of the affiliated packages, Sunpy will provide advantages to these packages,such as the knowledge of the SunPy community and the publicity provided by SunPy, while also allowing the whole SunPy community to evolve and provide useful tools to a larger audience.


My Contribution to Sunpy so far

Pull Requests Corresponding Issues Status
#1870 Update dimensions metadata when resampling a map Closed
#732 database tests depend on data/tests dir Open
#2024 Remove extract_time function Merged
#2020 reshape_image_to_4d_superpixel array seems broken Merged
database tests depend on data/tests dir #732 Open
Issue opened up in Matrix Channel Merged
Small codework alongwith documentation Open
Some documentation added Merged
database tests depend on data/tests dir #732 Closed
show_colormaps() should check how much display room is available #1781 Closed
VSOClient.query returns no result in Python 3.5 #1912 Closed
README badges broken #2053 Merged
Issue opened up in matrix channel Merged
Issues Opened

My Design for the Website

I have already started with the design by preparing a slide. My work for the site so far:


Home Page1

Home Page2

Its Design


About Page

Its Design


Blog Section

Its Design


Implementation of the registry.

Featured Packages


Registry

Implements the design of the registry of Affiliated Packages.

The Website design PDF

Design Slide PDF

The design is not final and is bound to change upon mentor's decision.

Recently I tried implementing the website design here Sunpy Website at prateekiiest.github.io


Software Packages to be used

  • Sphinx : Sphinx is a tool that allows us to create as many restructured documents as we want and then it merges them together into a single website or a book. It uses HTML, LaTeX as its output format.
  • Jekyll : Jekyll is a tool to transform any plain text into static websites and blogs. The current Sunpy website uses Jekyll.
  • Graphviz : Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks.

Extra plans

Recently, I proposed this idea to Cadair (Stuart Mumford) on the #sunpy matrix channel. What I proposed is that I want to include Jupyter Notebook tutorials under Sunpy Documentation using mybinder for displaying the gallery tutorials, so that users can get a hand-on experience with some of the tutorials and it will be really be beneficial for them. If I get time by finishing the project early, I am eager to implement this plan.

How I wish to complete the project

I am confident of completing this project because this project interests me a lot and also fits my current skill sets. I have read much about the Sphinx documentation since the last few weeks. I will work on the project regularly and give regular updates to my mentors about my progress and seek guidance if I face any problem. I would try to adhere to the timetable proposed for weekly progress and try my best to complete the project before time. I will also push code regularly so that the mentors can keep track of my progress. Also I'll try to make the commit messages and documentation clear and concise to help anyone who works with the code in the future. At the end of the project, I would still like to be inside the Sunpy channel as a contributor to make new improvements to the software.


References

Webpages

Videos

GSoC

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.

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

  • I don't have any other internships or work for the summer. I don't have any plans to go on vacation either.
  • My classes for the new semester will begin around October 5th, but I would still be able to give sufficient time for the project as academic load is very less during the initial few weeks of the semester. I will be able to spare 35-40 hours for the project per week easily.
  • Also, because my summer vacation starts on May 7, I will start working on the project early so that I can try to complete the project well before the deadline ( around 2-3 weeks before the deadline ).
  • I have my semester exams from 22nd of April to 1 May. So I will not be able to contribute much time to the project work during this time. Still I will try to devote 2-3 hours everyday to do my work.
  • SunPy is the only organization and this project is the only project that I have applied for.

Eligibility

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


Clone this wiki locally