Adding instances of Dimension class to CSDM object

Create a new empty CSDM object following,

>>> import csdmpy as cp
>>> new_data = cp.new(description='A new test dimension dataset')

Add an instance of the Dimension class using the add_dimension() method of the CSDM instance. There are three subtypes of Dimension objects,

  • LinearDimension

  • MonotonicDimension

  • LabeledDimension

Using an instance of the Dimension class

Please read the topic Generating Dimension objects for details on how to generate an instance of the Dimension class. Once created, use the add_dimension() method of the CSDM object to add the dimension, for example,

>>> linear_dim = cp.LinearDimension(count=10, increment='0.1 C/V')
>>> new_data.add_dimension(linear_dim)
>>> print(new_data)
CSDM(
LinearDimension([0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] C / V)
)

Using Python’s dictionary objects

When using python dictionaries, the key-value pairs of the dictionary must be a valid collection for the given Dimension subtype. For example,

>>> # dictionary representation of a linear dimension.
>>> d0 = {
...     'type': 'linear',
...     'description': 'This is a linear dimension',
...     'count': 5,
...     'increment': '0.1 rad'
... }
>>> # dictionary representation of a monotonic dimension.
>>> d1 = {
...     'type': 'monotonic',
...     'description': 'This is a monotonic dimension',
...     'coordinates': ['1 m/s', '2 cm/s', '4 mm/s'],
... }
>>> # dictionary representation of a labeled dimension.
>>> d2 = {
...     'type': 'labeled',
...     'description': 'This is a labeled dimension',
...     'labels': ['Cu', 'Ag', 'Au'],
... }
>>> # add the dictionaries to the CSDM object.
>>> new_data.add_dimension(d0)
>>> new_data.add_dimension(d1)
>>> new_data.add_dimension(d2)
>>> print(new_data)
CSDM(
LinearDimension([0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] C / V),
LinearDimension([0.  0.1 0.2 0.3 0.4] rad),
MonotonicDimension([1.    0.02  0.004] m / s),
LabeledDimension(['Cu' 'Ag' 'Au'])
)

Attention

When using the Dimension instance as an argument of the add_dimension() method, one must be aware that instances in Python are passed by reference. Therefore, any changes to the instance linear_dim, in the above example, will affect the corresponding dimension instance in the new_data instance. To avoid this, you may pass a copy of the instance, linear_dim.copy(), as the argument to the add_dimension() method.