Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 2019 SunPy projects #184

Merged
merged 10 commits into from
Jan 29, 2019
61 changes: 61 additions & 0 deletions _projects/2019/sunpy/helioviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
name: HelioViewer Python API Wrapper
desc: Creating a full Python wrapper for https://api.helioviewer.org/docs/v2/.
# add a description of your project
requirements:
- Familiarity with Python
- Some familiarity with Unirest/HTTP requests (ideally)
difficulty: medium
issues:
- https://github.com/sunpy/sunpy/issues/2860
- https://github.com/sunpy/sunpy/issues/2762
- https://github.com/sunpy/sunpy/issues/2878
mentors:
- wafels
- cadair
- TO BE FILLED
initiatives:
- GSOC
- SOCIS
tags:
- python
collaborating_projects:
- sunpy
---

#### Description

This project aims to design and implement a low level Python wrapper around the
unirest API provided by the HelioViewer Project. This would create a new affiliated SunPy package (name up for suggestions).

Currently SunPy has a `HelioviewerClient` that implements only a handful of the available API.
They are `getClosestImage`, `getJP2Image` and `takeScreenshot` from the Helioviewer API and you can see our code [here.](https://github.com/sunpy/sunpy/blob/master/sunpy/net/helioviewer.py)

What we want to do is to create a new Python package that will lightly wrap every aspect of the HelioViewer API allowing anyone to create their own helioviewer.org like GUI in Python (this could be part of the project but will depend on the progress).

To facilitate this, we will need to remove the current code from SunPy and move it to the new affiliated package.
#### Secondary goals

* Start on a GUI-like interface for the new package, if time permits.

#### Milestones

##### Coding starts

* Engaged with the community and understand the motivation and challenges of the project.
* Have set up a development environment.

##### To be completed by the Phase 1 Evaluation Deadline

* Have 33% of the API wrapped.
* Have all code, tests and documentation in GitHub.

##### To be completed by the Phase 2 Evaluation Deadline

* Have 66% of the API wrapped.
* Have all code, tests and documentation in GitHub.

##### To be completed by the end of GSoC

* All of the API is wrapped within the package.
* Have all code, tests and documentation in GitHub.
68 changes: 68 additions & 0 deletions _projects/2019/sunpy/mag_field.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
name: Expand the scope of solarbextrapolation.
desc: Add more numerical models and generalize magnetic field extrapolation to spherical coordinates.
requirements:
- Knowledge of vector calculus and differential equations
- Familiar with numerical methods
- Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
difficulty: intermediate
issues:
- https://groups.google.com/forum/#!topic/sunpy/ZLu_HoX_lbc
- https://github.com/sunpy/solarbextrapolation/issues/12
mentors:
- Alex-Ian-Hamilton
- cadair
initiatives:
- GSOC
- SOCIS
initiatives:
- GSOC
- SOCIS
tags:
- python
- cython
- numpy
- numba
collaborating_projects:
- sunpy
---

#### Description

This project aims to improve the `solarbextrapolation` package by relaxing the small-angle approximation and allowing for extrapolation of global magnetic fields, i.e. 3D vector fields on a scale larger than an active region.
Furthermore, we want to add support for another numerical model called Potential Field Source Surface ([PFSS](https://github.com/antyeates1983/pfss)).

This will involve extensive modifications to the numerical method used to perform the field extrapolation as well as developing methods for coordinate transformations between the magnetogram coordinate system and the spherical coordinate system of the derived vector field.

The main challenge of this project will be creating a general 3D Map class similar to [`Map`](http://docs.sunpy.org/en/stable/code_ref/map.html) in SunPy.
Currently, the `solarbextrapolation` package uses a Map3D class that is limited to Cartesian coordinates and has no support for coordinate transformations. This new Map3D class will have support for 3D coordinates through the use of the [SunPy coordinates module](http://docs.sunpy.org/en/stable/guide/units-coordinates.html#physical-coordinates-in-sunpy)
It is expected that this new object will serve as a prototype for a first-class data type in the core SunPy package.

#### Milestones

##### Coding starts

* Engaged with the community and understand the motivation and challenges of the project.
* Have set up a development environment.

##### To be completed by the Phase 1 Evaluation Deadline

* Add PFSS modelling to the package.
* Have all code, tests and documentation in GitHub.

##### To be completed by the Phase 2 Evaluation Deadline

* Develop a coordinate-aware 3D Map class
* Have all code, tests and documentation in GitHub.

##### To be completed by the end of GSoC

* Use 3D Map class for global field extrapolations
* Have all code, tests and documentation in GitHub.
* Improvements to the documentation and examples

##### Secondary goals

* Performance improvements
* Addition of more advanced extrapolators, e.g. non-linear force-free field
* Better visualization methods
1 change: 1 addition & 0 deletions _projects/2019/sunpy/ndcube_ape14.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ issues:
mentors:
# First person in contact; mentors may change before project starts.
- DanRyanIrish
- Cadair
initiatives:
- GSOC
- SOCIS
Expand Down
6 changes: 3 additions & 3 deletions _projects/2019/sunpy/remote_data.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,17 @@ See [issue #1939](https://github.com/sunpy/sunpy/issues/1939) for more details.

* Engaged with the community and understand the motivation and challenges of the project.

##### Evaluation 1
##### To be completed by the Phase 1 Evaluation Deadline

* Have evaluated and chosen the best approach for storing a local cache of data.
* Have implemented a basic cache and download system, including tests and documentation.

##### Evaluation 2
##### To be completed by the Phase 2 Evaluation Deadline

* Have worked with your mentors and the community to design a simple and functional API.
* Have a working prototype of this API, including tests.

##### Final
##### To be completed by the end of GSoC

* Have finished implementation, testing and documentation.
* Have written examples for the gallery of how to use the functionality.
Expand Down
62 changes: 62 additions & 0 deletions _projects/2019/sunpy/roi_draft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: Region of Interest
desc: Meta-Object creation for holding temporal and spatial features.
# add a description of your project
requirements:
- Familiarity with Python
- Understanding of design patterns
difficulty: High
issues:
- https://github.com/sunpy/sunpy/issues/164
- https://github.com/sunpy/sunkit-image/issues/2
mentors:
- FIND SOMEONE MAYBE
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initiatives:
- GSOC
- SOCIS
tags:
- python
collaborating_projects:
- sunpy
---

#### Description

This project aims to design and implement an object that could be used to define a Region Of Interest (ROI) in any physical dimension (such as spatial area, temporal range or spectral window) and interact with the rest of data types used in SunPy.

For example, a region of interest could be a particular area in the Sun at a particular moment in time.
Therefore, that object should contain the extent of such area, its contour and the time when it was observed.
It also needs other information, such as the coordinate system that it uses, the image from which it was created and the wavelength
in which was observed.

That region of interest should interact with the data types available in sunpy like [`sunpy.Map`](https://github.com/sunpy/sunpy/tree/master/sunpy/map) by plotting the box containing such region and being aware of difference in time or observational point.
So, it needs to be spatial and temporal aware.

Additionally, the object needs to understand (be able to parse in) features and events catalogued in the [HEK](http://www.lmsal.com/hek/hek_isolsearch.html) and [HELIO](http://hfc.helio-vo.eu/) databases.

It is often useful to interactively select a region on an image using a mouse.
For example, a user might want to outline a particular region in an image, extract that region only, or integrate the emission in that region.
It would be interesting if we could supply the capability to interactively select a region and return the co-ordinates of the selected region.
This might be extra work at the end, if time permits.

#### Milestones

##### Coding starts

* Engaged with the community and understand the motivation and challenges of the project.
* Have set up a development environment.

##### To be completed by the Phase 1 Evaluation Deadline

* Fill in.
* Have all code, tests and documentation in GitHub.

##### To be completed by the Phase 2 Evaluation Deadline

* Fill in.
* Have all code, tests and documentation in GitHub.

##### To be completed by the end of GSoC

* Fill in.
* Have all code, tests and documentation in GitHub.
73 changes: 73 additions & 0 deletions _projects/2019/sunpy/sunkit_image.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
name: Develop sunkit-image
desc: Add features to a new package for solar image analysis.
requirements:
- Good understanding of Python.
- Some understanding of mathematics.
- Enthusiasm to learn image processing.
difficulty: medium
issues:
- https://github.com/sunpy/sunkit-image/issues/1
- https://github.com/sunpy/sunkit-image/issues/3
- https://github.com/sunpy/sunkit-image/issues/5
- https://github.com/sunpy/sunkit-image/issues/6
- https://github.com/sunpy/sunkit-image/issues/7
- https://github.com/sunpy/sunkit-image/issues/9
- https://github.com/sunpy/sunkit-image/issues/10
- https://github.com/sunpy/sunkit-image/issues/13
mentors:
- nabobalis
- wafels
initiatives:
- GSOC
- SOCIS
tags:
- python
- numpy
- cython
collaborating_projects:
- sunpy
---

#### Description

There have been various proposals for adding image processing and manipulation code to the SunPy library.
SunPy has decided that this functionality will instead reside in an affiliated package, named [sunkit-image.](https://github.com/sunpy/sunkit-image/)
This project will implement the initial functionality with a broad scope.

We have a range of open issues that form the starting core of the project and contain more concreate steps and information about each feature.

This project should achieve most or all of the following goals (roughly in this order):

1. Implement the [normalizing-radial-graded filter (NRGF)](http://adsabs.harvard.edu/abs/2006SoPh..236..263M).
2. Port the Multi-Scale Gaussian Normalisation (MGN) code from [#1899](https://github.com/sunpy/sunpy/pull/1899).
3. Implement the [OCCULT-2 algorithm](http://arxiv.org/abs/1307.5046) for coronal loop tracing.
4. Implement image re-sampling as described [here](https://link.springer.com/content/pdf/10.1023/B:SOLA.0000021743.24248.b0.pdf) through updating [this pull request](https://github.com/astropy/reproject/pull/52) to the Astropy [image resampling](https://reproject.readthedocs.io/en/stable/) repository.
5. Implement the [soft morphological filtering of solar images](https://www.aanda.org/articles/aa/pdf/2006/38/aa4852-06.pdf)

There are more complex feature we would like but will only be looked at once the previous features have been implemented.

6. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
7. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
8. Have developed an outline of the implementation of the image resampling code in the context of the Astropy [reproject](https://github.com/astropy/reproject) module.

#### Milestones

##### Coding starts

* Have familiarized yourself with the algorithms.
* Have set up a development environment.

##### To be completed by the Phase 1 Evaluation Deadline

* Have implemented, tested and documented the NRGF code.
* Have implemented, tested and documented the MGN code.

##### To be completed by the Phase 2 Evaluation Deadline

* Have successfully merged the NRGF and MGN code.
* Have implemented OCCULT-2.

##### To be completed by the end of GSoC

* Have tested, documented and merged the OCCULT-2 code.