Skip to main content
`Ctrl`+`K`

# NDCubeSequence

class ndcube.NDCubeSequence(data_list, meta=None, common_axis=None, **kwargs)

  Bases: `NDCubeSequenceBase`

  Class representing a sequence of `NDCube`-like objects.

  The cubes are assumed to have the same dimensionality and axis physical types.

  Parameters:

    - data_list (`list`) – List of `ndcube.NDCube`-like objects.

    - meta (`dict` or None) – Meta data relevant to the sequence as a whole.

    - common_axis (`int` or None) – The array axis of the cubes along which the cubes are ordered. For example, if the cubes are sequenced in chronological order and time is the 1st axis of each Cube, then common_axis should be set to 0. This enables the “cube_like” methods to be used, e.g. `ndcube.NDCubeSequence.index_as_cube` which slices the sequence as though it were a single cube concatenated along the common axis.

  common_axis_extra_coords
  array_axis_physical_axis_types
  cube_like_world_axis_physical_axis_types

  Attributes Summary

  `array_axis_physical_types` | The physical types associated with each array axis, including the sequence axis.
  `common_axis_coords` | The coordinate values at each location along the common axis across all cubes.
  `cube_like_array_axis_physical_types` | The physical types associated with each array axis, omitting the sequence axis.
  `cube_like_dimensions` | The length of each array axis as if all cubes were concatenated along the common axis.
  `cube_like_shape` | The length of each array axis as if all cubes were concatenated along the common axis.
  `dimensions` | The length of each axis including the sequence axis.
  `index_as_cube` | Slice the NDCubesequence instance as a single cube concatenated along the common axis.
  `plotter` |
  `sequence_axis_coords` | Return the coordinate values along the sequence axis.
  `shape` |

  Methods Summary

  `crop`(*points[, wcses]) | Crop cubes in sequence to smallest pixel-space bounding box containing the input points.
  `crop_by_values`(*points[, units, wcses]) | Crop cubes in sequence to smallest pixel-space bounding box containing the input points.
  `explode_along_axis`(axis) | Separates slices of N-D cubes along a given cube axis into (N-1)D cubes.
  `plot`([sequence_axis_coords, sequence_axis_unit]) | Visualize the `NDCubeSequence`.
  `plot_as_cube`(*args, **kwargs) |

  Attributes Documentation

  array_axis_physical_types

    The physical types associated with each array axis, including the sequence axis.

  common_axis_coords

    The coordinate values at each location along the common axis across all cubes.

    Only coordinates associated with the common axis in all cubes in the sequence are returned. Coordinates from different cubes are concatenated along the common axis. They thus represent the coordinate values at each location as if all cubes in the sequence were concatenated along the common axis.

  cube_like_array_axis_physical_types

    The physical types associated with each array axis, omitting the sequence axis.

  cube_like_dimensions

    The length of each array axis as if all cubes were concatenated along the common axis.

  cube_like_shape

    The length of each array axis as if all cubes were concatenated along the common axis.

  dimensions

    The length of each axis including the sequence axis.

  index_as_cube

    Slice the NDCubesequence instance as a single cube concatenated along the common axis.

    Example

        >>> # Say we have three Cubes each cube has common_axis=0 is time and shape=(3,3,3)
        >>> data_list = [cubeA, cubeB, cubeC]
        >>> cs = NDCubeSequence(data_list, meta=None, common_axis=0)
        >>> # return zeroth time slice of cubeB in via normal NDCubeSequence indexing.
        >>> cs[1,:,0,:]
        >>> # Return same slice using this function
        >>> cs.index_as_cube[3:6, 0, :]

  plotter = None
  sequence_axis_coords

    Return the coordinate values along the sequence axis.

    These are compiled from the `GlobalCoords` objects attached to each `NDCube` where each cube represents a location along the sequence axis. Only coordinates that are common to all cubes are returned.

  shape

  Methods Documentation

  crop(*points, wcses=None)

    Crop cubes in sequence to smallest pixel-space bounding box containing the input points.

    Each input point is given as a tuple of high-level world coordinate objects. This method does not crop the sequence axis. Instead input points are passed to the crop method of cubes in sequence. Note, therefore, that the input points do not include an entry for world coords only associated with the sequence axis. For a description of how the bounding box is defined, see the docstring of the `ndcube.NDCube.crop()` method. In cases where the cubes are not aligned, all cubes are cropped to the same region in pixel space. This region will be the smallest that encompasses the input points in all cubes while maintaining consistent array shape between the cubes.

    Parameters:

      - points – Passed to `ndcube.NDCube.crop()` as the points arg without checking.

      - wcses (iterable of WCS objects or `str`, optional) – The WCS objects to be used to crop the cubes. There must by one WCS per cube. Alternatively, can be a string giving the name of the cube wcs attribute to be used, namely, ‘wcs’, ‘combined_wcs’, or ‘extra_coords’. Default=None is equivalent to ‘wcs’.

    Returns:

      The cropped sequence.

    Return type:

      `NDCubeSequence`

  crop_by_values(*points, units=None, wcses=None)

    Crop cubes in sequence to smallest pixel-space bounding box containing the input points.

    Each input point is given as a tuple of low-level world coordinate objects. This method does not crop the sequence axis. Instead input points are passed to the `ndcube.NDCube.crop_by_values()` method of cubes in sequence. Note, therefore, that the input points do not include an entry for world coords only associated with the sequence axis. For a description of how the bounding box is defined, see the docstring of the NDCube.crop_by_values method. In cases where the cubes are not aligned, all cubes are cropped to the same region in pixel space. This region will be the smallest that encompasses the input points in all cubes while maintaining consistent array shape between the cubes.

    Parameters:

      - points – Passed to `ndcube.NDCube.crop()` as the points arg without checking.

      - units – Passed to `ndcube.NDCube.crop_by_values()` as the `units` kwarg.

      - wcses (iterable of WCS objects or `str`, optional) – The WCS objects to be used to crop the cubes. There must by one WCS per cube. Alternatively, can be a string giving the name of the cube wcs attribute to be used, namely, ‘wcs’, ‘combined_wcs’, or ‘extra_coords’. Default=None is equivalent to ‘wcs’.

    Returns:

      The cropped sequence.

    Return type:

      `NDCubeSequence`

  explode_along_axis(axis)

    Separates slices of N-D cubes along a given cube axis into (N-1)D cubes.

    Parameters:

      axis (`int`) – The axis along which the data is to be changed.

    Returns:

      New sequence of (N-1)D cubes broken up along given axis.

    Return type:

      `ndcube.NDCubeSequence`

  plot(
    sequence_axis_coords=None,
    sequence_axis_unit=None,
    **kwargs,
  )

    Visualize the `NDCubeSequence`.

    Parameters:

      - sequence_axis_coords (`str` or array-like, optional) – The real world value of each step along the sequence axis. If `str`, the values are taken from `ndcube.NDCubeSequence.sequence_axis_coords`.

      - sequence_axis_unit (`str` or `astropy.units.Unit`, optional) – The unit in which to display the sequence_axis_coords.

  plot_as_cube(*args, **kwargs)