Common utility functions

Utilities

The module contains some commonly functions and classes.

sapphire.utils.ERR = [-1, -999]

Error values used to indicate missing or bad data. Code -999 is used if the reconstruction of a quantity failed. Code -1 is used if that detector/sensor is not present.

sapphire.utils.c = 0.299792458

Speed of light in vacuum in m / ns.

sapphire.utils.get_publicdb_base()

Get the HiSPARC Public Database base URL

This can be configured by setting the PUBLICDB_BASE environment variable to the desired URL.

sapphire.utils.pbar(iterable, length=None, show=True, **kwargs)

Get a new progressbar with our default widgets

Parameters:
  • iterable – the iterable over which will be looped.

  • length – in case iterable is a generator, this should be its expected length.

  • show – boolean, if False simply return the iterable.

Returns:

a new iterable which iterates over the same elements as the input, but shows a progressbar if possible.

sapphire.utils.ceil_in_base(value, base)

Get nearest multiple of base above the value

sapphire.utils.floor_in_base(value, base)

Get nearest multiple of base below the value

sapphire.utils.round_in_base(value, base)

Get nearest multiple of base to the value

sapphire.utils.closest_in_list(value, items)

Get nearest item from a list of items to the value

sapphire.utils.get_active_index(values, value)

Get the index where the value fits.

Parameters:
  • values – sorted list of values (e.g. list of timestamps).

  • value – value for which to find the position (e.g. a timestamp).

Returns:

index into the values list.

sapphire.utils.gauss(x, n, mu, sigma)

Gaussian distribution

To be used for fitting where the integral is not 1.

sapphire.utils.norm_angle(angle)

Normalize an angle to the range [-pi, pi)

We use the range from -pi upto but not including pi to represent angles.

sapphire.utils.angle_between(zenith1, azimuth1, zenith2, azimuth2)

Calculate the angle between two (zenith, azimuth) coordinates

Using the haversine formula, from: https://www.movable-type.co.uk/scripts/latlong.html

Parameters:
  • zenith# – Zenith parts of the coordinates, in radians (0, pi/2).

  • azimuth# – Azimuth parts of the coordinates, in radians (-pi, pi).

Returns:

Angle between the two coordinates.

sapphire.utils.vector_length(x, y, z=0)

Length of a vector given by (x, y, z) coordinates

Parameters:

x,y,z – vector components.

Returns:

length of vector.

sapphire.utils.distance_between(x1, y1, x2, y2)

Calculate the distance between two (x, y) coordinates

Parameters:
  • x# – x parts of the coordinates.

  • y# – y parts of the coordinates.

Returns:

distance between the two coordinates.

sapphire.utils.make_relative(x)

Make first element the origin and make rest relative to it.

sapphire.utils.which(program)

Check if a command line program is available

An Exception is raised if the program is not available.

Parameters:

program – name or program to check for, e.g. ‘wget’.

sapphire.utils.memoize(method)

Memoisation cache decorator

Source: https://stackoverflow.com/a/29954160/1033535