mangadap.util.datatable module

Light-weight class for handling data tables using numpy record arrays.


License

Copyright © 2019, SDSS-IV/MaNGA Pipeline Group


class mangadap.util.datatable.DataTable(keys, types, element_shapes=None, descr=None, shape=None)[source]

Bases: object

A light-weight class that wraps a numpy record array.

Parameters
  • keys (str, list) – Table column keys. Must be a single string or a list of strings.

  • types (type, list) – Column data type. Must be a single type or a list of types. Supported types are limited to integers and floating point values. If a single type and more than one key is provided, all columns will have the same type.

  • element_shapes (tuple, list, optional) – Shape of each column element. If None, all elements are assumed to be single values. If a list is provided, the elements of the list must be either None (for a single value) or a tuple with the shape of each element. If a single shape and more than one key is provided, all columns will have the same element shape.

  • descr (str, list, optional) – Human-readable description of each column. If None, no descriptions are available. If a list, each element must be a string or None. If not None, must provide a description or a None element for each key.

  • shape (int, tuple) – Shape of the data table to instantiate. If None, data will be None and instantiation of the array will require a call to init().

Raises
  • TypeError – Raised if any of the provided arguments or list item have an incorrect type.

  • ValueError – Raised if any of the provided arguments do not provide the same number of columns as determined by the column keys.

keys

See argument list.

Type

list

types

See argument list.

Type

list

element_shapes

See argument list.

Type

list

descr

See argument list.

Type

list

data

Array with the table data.

Type

numpy.recarray

_dtype

List of tuples with the data type of the record array.

Type

list

append(rhs)[source]

Append the data in the provided datatable to this one.

Both objects (self and rhs) must have the same derived class. This instance is directly modified.

Parameters

rhs (DataTable) –

The instance with the data to append. The derived class of this object must be the same as the object to which you want to append the data. I.e.:

assert isinstance(rhs, self.__class__)

property dtype

Return the data type of the record array.

If data has been initialized, this is identically:

self.data.dtype
Returns

Table data type.

Return type

numpy.dtype

init(shape)[source]

(Re)Initialize data.

Note that this always re-initializes the array, regardless of whether or not there was a pre-existing data array.

Parameters

shape (tuple) – The shape of the array to construct.

property shape

Return the shape of the data array.

Returns

Returns the shape of the data array. If the data has not been instantiated, returns None.

Return type

tuple

property size

Return the size of the data array.

Returns

Returns the number of elements in the array. If the data has not been instantiated, returns 0.

Return type

int

to_hdu(name=None, add_dim=False)[source]

Use the data table to build an astropy.io.fits.BinTableHDU.

Todo

  • add_dim shouldn’t be optional; the code should just do this always or know when it needs to.

Parameters
  • name (str, optional) – HDU extension name.

  • add_dim (bool, optional) – Include the dimensionality of the column in the construction of the astropy.io.fits.Column.

Returns

FITS binary table with the data.

Return type

astropy.io.fits.BinTableHDU

to_rst_table(header=True, class_link=True)[source]

Construct a reStructuredText table describing the data table.

Parameters
  • header (bool, optional) – Include a section header

  • class_link (bool, optional) – Include an rst-style link to the class instantiation documentation.

Returns

Returns a list of lines that can be written to an *.rst file.

Return type

list