sdss_specobjid

pydl.pydlutils.sdss.sdss_specobjid(plate, fiber, mjd, run2d, line=None, index=None)[source]

Convert SDSS spectrum identifiers into CAS-style specObjID.

Bits are assigned in specObjID thus:

Bits

Name

Comment

50-63

Plate ID

14 bits

38-49

Fiber ID

12 bits

24-37

MJD

Date plate was observed minus 50000 (14 bits)

10-23

run2d

Spectroscopic reduction version

0-9

line/index

0 for use in SpecObj files see below for other uses (10 bits)

Parameters:
plate, fiber, mjdint or array of int

Plate, fiber ID, and MJD for a spectrum. If arrays are passed, all must have the same length. The MJD value must be greater than 50000.

run2dint, str or array of int or str

The run2d value must be an integer or a string of the form ‘vN_M_P’. If an array is passed, it must have the same length as the other inputs listed above. If the string form is used, the values are restricted to \(5 \le N \le 6\), \(0 \le M \le 99\), \(0 \le P \le 99\).

lineint, optional

A line index, only used for defining specObjID for SpecLine files. line and index cannot both be non-zero.

indexint, optional

An index measure, only used for defining specObjID for SpecLineIndex files. line and index cannot both be non-zero.

Returns:
numpy.ndarray of numpy.uint64

The specObjIDs of the objects.

Raises:
ValueError

If the sizes of the arrays don’t match or if the array values are out of bounds.

Notes

  • On 32-bit systems, makes sure to explicitly declare all inputs as 64-bit integers.

  • This function defines the SDSS-III/IV version of specObjID, used for SDSS DR8 and subsequent data releases. It is not compatible with SDSS DR7 or earlier.

  • If the string form of run2d is used, the bits are assigned by the formula \((N - 5) \times 10000 + M \times 100 + P\).

Examples

>>> from pydl.pydlutils.sdss import sdss_specobjid
>>> print(sdss_specobjid(4055,408,55359,'v5_7_0'))
[4565636362342690816]