Plotting example from `RasterSequence` documentation fails

Open
#240 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
documentation

Research direction

Start with the RasterSequence example at the linked sunraster documentation page and compare its plot_as_sns() call with the ndcube plotting guidance named in the traceback. Reproduce the example in the reported environment, then update the documentation so the example no longer fails and verify the revised example runs successfully.

Written by the indexing model from the issue text.

Description

Describe the bug

I was working through the documentation trying the examples. When I ran this one, from here

my_rasters.plot_as_sns() 

I got back

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[22], line 1
----> 1 my_rasters.plot_as_sns() 

File ~/mambaforge/envs/sunraster-dev/lib/python3.11/site-packages/ndcube/ndcube_sequence.py:441, in NDCubeSequence.plot_as_cube(self, *args, **kwargs)
    440 def plot_as_cube(self, *args, **kwargs):
--> 441     raise NotImplementedError(
    442         "NDCubeSequence plot_as_cube is no longer supported.\n"
    443         "To learn why or to tell us why it should be re-instated, "
    444         "read and comment on issue #315:\n\nhttps://github.com/sunpy/ndcube/issues/315\n\n"
    445         "To see a introductory guide on how to make your own NDCubeSequence plots, "
    446         "see the docs:\n\n"
    447         "https://docs.sunpy.org/projects/ndcube/en/stable/ndcubesequence.html#plotting")

NotImplementedError: NDCubeSequence plot_as_cube is no longer supported.
To learn why or to tell us why it should be re-instated, read and comment on issue #315:

https://github.com/sunpy/ndcube/issues/315

To see a introductory guide on how to make your own NDCubeSequence plots, see the docs:

https://docs.sunpy.org/projects/ndcube/en/stable/ndcubesequence.html#plotting
To Reproduce

Just for completeness, here is what I copied/pasted to produce the error, running in Jupyter Lab:

import numpy as np
import astropy.wcs
import astropy.units as u
from astropy.nddata import StdDevUncertainty
from datetime import datetime, timedelta
from astropy.time import Time
from sunraster import SpectrogramCube
from sunraster.meta import Meta

# Define primary data array and WCS object.
data = np.ones((3, 4, 5))
wcs_input_dict = {
    'CTYPE1': 'WAVE    ', 'CUNIT1': 'Angstrom', 'CDELT1': 0.2, 'CRPIX1': 0, 'CRVAL1': 10, 'NAXIS1': 5,
    'CTYPE2': 'HPLT-TAN', 'CUNIT2': 'deg', 'CDELT2': 0.5, 'CRPIX2': 2, 'CRVAL2': 0.5, 'NAXIS2': 4,
    'CTYPE3': 'HPLN-TAN', 'CUNIT3': 'deg', 'CDELT3': 0.4, 'CRPIX3': 2, 'CRVAL3': 1, 'NAXIS3': 3}
input_wcs = astropy.wcs.WCS(wcs_input_dict)
# Define a mask with all pixel unmasked, i.e. mask values = False
mask = np.zeros(data.shape, dtype=bool)
# Define some RasterSequence metadata.
exposure_times = np.ones(data.shape[0])/2 * u.s
scan_meta = Meta({"exposure time": exposure_times}, axes={"exposure time": 0},
                 data_shape=data.shape)
seq_meta = {"description": "This is a RasterSequence.", "exposure time" : exposure_times}

# Define uncertainties for data, 2*data and data/2.
uncertainties = StdDevUncertainty(np.sqrt(data))
uncertainties2 = StdDevUncertainty(np.sqrt(data * 2))
uncertainties05 = StdDevUncertainty(np.sqrt(data * 0.5))

# Create 1st raster
axis_length = int(data.shape[0])
timestamps0 = Time([datetime(2000, 1, 1) + timedelta(minutes=i)
                    for i in range(axis_length)], format='datetime', scale='utc')
extra_coords_input0 = [("time", 0, timestamps0)]
raster0 = SpectrogramCube(data, input_wcs, uncertainty=uncertainties, mask=mask,
                          meta=scan_meta, unit=u.ct)
for extra in extra_coords_input0:
    raster0.extra_coords.add(*extra)
# Create 2nd raster
timestamps1 = Time([timestamps0[-1].to_datetime() + timedelta(minutes=i)
                    for i in range(1, axis_length+1)], format='datetime', scale='utc')
extra_coords_input1 = [("time", 0, timestamps1)]
raster1 = SpectrogramCube(data*2, input_wcs, uncertainty=uncertainties, mask=mask,
                 meta=scan_meta, unit=u.ct)
for extra in extra_coords_input1:
    raster1.extra_coords.add(*extra)
# Create 3rd raster
timestamps2 = Time([timestamps1[-1].to_datetime() + timedelta(minutes=i)
                    for i in range(1, axis_length+1)], format='datetime', scale='utc')
extra_coords_input2 = [("time", 0, timestamps2)]
raster2 = SpectrogramCube(data*0.5, input_wcs, uncertainty=uncertainties, mask=mask,
                 meta=scan_meta, unit=u.ct)
for extra in extra_coords_input2:
    raster2.extra_coords.add(*extra)


from sunraster import RasterSequence
my_rasters = RasterSequence([raster0, raster1, raster2], common_axis=0, meta=seq_meta)


my_rasters.plot_as_sns() 
Screenshots

No response

System Details

sunpy Installation Information

General

OS: Mac OS 13.3.1
Arch: 64bit, (arm)
sunpy: 4.1.6
Installation path: /Users/mattcraig/mambaforge/envs/sunraster-dev/lib/python3.11/site-packages/sunpy-4.1.6.dist-info
python: 3.11.3

Required Dependencies

astropy: 5.2.2
numpy: 1.24.3
packaging: 23.1
parfive: 2.0.2

Optional Dependencies

asdf: 2.15.0
asdf-astropy: 0.4.0
beautifulsoup4: 4.12.2
cdflib: Missing cdflib!=0.4.0,>=0.3.19; extra == "timeseries"
dask: Missing dask[array]>=2.0.0; extra == "dask"
drms: Missing drms>=0.6.1; extra == "net"
glymur: Missing glymur!=0.9.0,!=0.9.5,>=0.8.18; extra == "jpeg2000"
h5netcdf: Missing h5netcdf>=0.8.1; extra == "timeseries"
h5py: Missing h5py>=3.1.0; extra == "timeseries"
lxml: Missing lxml>=4.8.0; extra == "jpeg2000"
matplotlib: 3.7.1
mpl-animators: 1.1.0
pandas: Missing pandas>=1.0.0; extra == "timeseries"
python-dateutil: 2.8.2
reproject: Missing reproject; extra == "docs" or "map"
scikit-image: Missing scikit-image>=0.16.0; extra == "image"
scipy: 1.10.1
sqlalchemy: Missing sqlalchemy>=1.3.4; extra == "database"
tqdm: 4.65.0
zeep: Missing zeep>=3.4.0; extra == "net"

Other

ndcube: 2.1.1

Installation method

git checkout

Dominant language
Python
Stars
21
Forks
25
Avg merge
15h 30m
Merged PRs (30d)
3

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sunpy/sunraster

All issues in sunpy/sunraster

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.