Miscellaneous Utilities

class sacc.utils.Namespace(*strings)[source]

This helper class implements a very simple namespace object designed to store strings with the same name as their contents as a kind of simple string enum.

N = Namespace(‘a’, ‘b’, ‘c’)

assert N.a==’a’

assert N[‘a’]==’a’

assert N.index(‘b’)==1

Methods

index

sacc.utils.hide_null_values(table)[source]

Replace None values in an astropy table with a null value, and change the column type to whatever suits the remaining data points

Parameters:
table: astropy table

Table to modify in-place

sacc.utils.invert_spd_matrix(M, strict=True)[source]

Invert a symmetric positive definite matrix.

SPD matrices (for example, covariance matrices) have only positive eigenvalues.

Based on: https://stackoverflow.com/questions/40703042/more-efficient-way-to-invert-a-matrix-knowing-it-is-symmetric-and-positive-semi

Parameters:
M: 2d array

Matrix to invert

strict: bool, default=True

If True, require that the matrix is SPD. If False, use a slower algorithm that will work on other matrices

Returns:
invM: 2d array

Inverse matrix

sacc.utils.remove_dict_null_values(dictionary)[source]

Remove values in a dictionary that correspond to the null values above.

Parameters:
dictionary: dict

Dict (or subclass instance or other mapping) to modify in-place

sacc.utils.unique_list(seq)[source]

Find the unique elements in a list or other sequence while maintaining the order. (i.e., remove any duplicated elements but otherwise leave it the same)

Method from: https://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-whilst-preserving-order

Parameters:
seq: list or sequence

Any input object that can be iterated

Returns:
L: list

a new list of the unique objects