Welcome to tabulation’s documentation!

Introduction

tabulation is a Python module that provides the Tabulation class. The Tabulation class represents a mathematical function by a sequence of linear interpolations between points defined by arrays of x and y coordinates.

tabulation is a product of the PDS Ring-Moon Systems Node.

Installation

The tabulation module is available via the rms-tabulation package on PyPI and can be installed with:

pip install rms-tabulation

Getting Started

The Tabulation class models a mathematical function by a series of (x,y) points and performs linear interpolation between them. Although optimized to model filter bandpasses and spectral flux, the class is sufficiently general to be used in a wide range of applications.

The mathematical function is treated as equal to zero outside the domain of the x coordinates, with a step at the provided leading and trailing x coordinates. In general, zero values (either supplied or computed) at either the leading or trailing ends are removed. However, if explicitly supplied, one leading and/or trailing zero value is considered significant because it anchors the interpolation of a ramp at the beginning or end of the domain.

A variety of mathematical operations can be performed on Tabulation objects, including addition, subtraction, multiplication, division, integration, and finding the X mean, FWHM, and square width. See the module documentation for details.

Here are some examples to get you started:

    >>> t2 = Tabulation([0, 2, 4], [0, 5, 5])  # Ramp on leading edge
    >>> t2.domain()
    (0., 4.)
    >>> t2([0,    1,    1.9,  2,    3,    3.9,  4,    5,    6])
>>> from tabulation import Tabulation
>>> t1 = Tabulation([2, 4], [10, 10])  # Leading&trailing step function
>>> t1.domain()
(2., 4.)
>>> r1 = t1([0,   1,   1.9, 2,   3,   3.9, 4,   5,   6])
array([      0.,  0.,  0., 10., 10., 10., 10.,  0.,  0.])
>>> t1.x_mean()
3.0
>>> t1.integral()
20.0

>>> t2 = Tabulation([0, 2, 4], [0, 5, 5])  # Ramp on leading edge
>>> t2.domain()
(0., 4.)
>>> r2 = t2([0,    1,  1.9, 2,  3,  3.9, 4,  5,  6])
array([      0., 2.5, 4.75, 5., 5., 5. , 5., 0., 0.])
>>> t2.x_mean()
2.6666666666666665
>>> t2.integral()
15.0

>>> t3 = t2-t1
>>> t3.domain()
(0.0, 4.0)
>>> r2-r1
array([ 0.  ,  2.5 ,  4.75, -5.  , -5.  , -5.  , -5.  ,  0.  ,  0.  ])
>>> t3([0,       1,   1.9,   2,     3,     3.9,   4,     5,     6])
array([ 0.  ,  2.5 ,  4.75, -5.  , -5.  , -5.  , -5.  ,  0.  ,  0.  ])
>>> t3.integral()
-5.000000000000001

Contributing

Information on contributing to this package can be found in the Contributing Guide.

Licensing

This code is licensed under the Apache License v2.0.

Indices and tables