EPRV PRIMARY FITS Header
Noteable Extensions & Header Keywords
The Receipt Extension
The EPRV data standard makes use of a receipt extension, inspired by the KPF data reduction pipeline. The receipt is structured as a pandas.Dateframe table and keeps track of the data process history, so that the information stored by this instance can be reproduced from the original data. Each row of the receipt should capture an individual data processing event.
Translators that generate/modify the content of an EPRV standard data product are expected to also write to the receipt. The receipt is inherited from lower order data products (e.g., L2) to higher order data products (e.g., L3) to preserve the data processing history.
Three string inputs are required: name, any relevant parameters, and a status. The receipt will also automatically fill in additional information, such as the time of execution, code release version, current branch, ect.
The Config Extension
This extension contains a two-column dataframe that stores each line of the input configuration file.
This file is based on the configuration language that the Python ConfigPaser class implements for Python programs.
The syntax of the configuration language primarily consists of key = value statements and # comments (or ; comments).
The creation of the key/value pairs, in general, follows the convention as those provided by the ConfigParser classs. As used in the KPF and NEID Pipelines, the keys consists of alphanumerics and underscores (e.g. KPFPIPE_TEST_DATA) while the value is in the form of a string, a number, a boolean, or a list.
PRIMARY Header Keywords
MULTIPLICITY : Keyword in the PRIMARY extension that indicates whether or not an extension can be duplicated to have multiple HDUs based on, e.g., the number of traces.
REQUIRED : Keyword in the PRIMARY extension that indicates whether or not an extension must be present and meaningfully populated in the FITS file in order for the file to be compliant with the EPRV Data Standard.
INSTERA : Tag for the “instrument era” used to track permanent changes to instrument (e.g., 1.1.2). Major changes that result in RV offset are recorded in the first numeral space. Small but permanent changes, (changes in the calibration light sources, etc) that don’t necessarily introduce RV offsets but do represent an ongoing status change in the instrument, are recorded in the second numeral. Anything that could impact the calibration or science outputs goes here. Even smaller changes, or things that you only recognize retrospectively, are recorded in the third numeral.
Note: Each team will place a csv file into the config directory with 1 line per era that has the start and end dates of each timespan. If this file is already maintained elsewhere by the instrument team then link to that instead so the file doesn’t need to be maintained in multiple places.
Keyword Table
Keyword |
Description |
Units |
Data type |
Example Value |
Default |
Required |
Comments |
|---|---|---|---|---|---|---|---|
INSTRUME |
Instrument name |
N/A |
String |
NEID or HARPS |
UNKNOWN |
Y |
|
ORGANIZA |
Organization the data belongs to, for licensing purposes |
N/A |
String |
ESO or CC-0 |
CC-0 |
N |
|
ORIGIN |
Entity that created this file |
N/A |
String |
ESO or NOIRLab |
N |
||
DATALVL |
Data Product Base Level |
N/A |
String |
L2 or L3 |
UNKNOWN |
Y |
|
OBSERVER |
Observer |
N/A |
String |
Bender |
UNKNOWN |
Y |
|
PROGRAM |
Observing program name |
N/A |
String |
Bender01 |
UNKNOWN |
N* |
For data filtering and attribution; default to Unknown if it does not exist |
PINAME |
Program PI Name |
N/A |
String |
Bender |
UNKNOWN |
N* |
For data filtering and attribution; default to Unknown if it does not exist |
OBSTYPE |
Observation type |
N/A |
String |
Sci or Eng |
UNKNOWN |
Y |
|
OBSMODE |
Observing mode |
N/A |
String |
HR or HE |
N |
||
READMODE |
Readout Mode |
N/A |
String |
Fast; Slow; UTR; FowlerN; or CDS |
N |
||
BINNING |
Binning Mode |
N/A |
String |
1x1 or 2x2 |
UNKNOWN |
Y |
|
NUMTRACE |
Iterator for Number of Object related keywords |
N/A |
UInt |
1 |
UNDEFINED |
Y |
|
NUMORDER |
Number of Orders |
N/A |
Uint |
172 |
UNDEFINED |
Y |
|
OBJECT |
Primary Object Name |
N/A |
String |
HD 10700 |
UNKNOWN |
Y |
For multi-object observing this corresponds to center of field object |
ALIASES |
user defined name(s) for the object, ; separated |
N/A |
String |
Tau Ceti; My Favorite Star |
N |
||
FILENAME |
Name of the FITS file |
N/A |
String |
InstL#_YYYYMMDDThhmmss.fits |
UNKNOWN |
Y |
|
DATE |
Last modification date/time of this file |
UTC |
String |
2018-04-26T15:53:13.456 |
UNKNOWN |
Y |
|
DATE-OBS |
Date/time at start of exposure |
UTC |
String |
2018-04-26T15:53:13.456 |
UNKNOWN |
Y |
|
JD_UTC |
Julian date of DATE-OBS |
day |
Double |
2450000 |
UNDEFINED |
Y |
|
EXPTIME |
Exposure time |
s |
Float |
29.43664 |
UNDEFINED |
Y |
|
TRACE1 … TRACE# |
Type of object in trace 1 to # |
N/A |
String |
SCI or CAL or SKY |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CLSRC1 … CLSRC# |
Name of calibration source in trace 1 to # [if used] |
N/A |
String |
LFC or Etalon or UrNe |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CSRC1 … CSRC# |
Catalog source for object in trace 1 to # |
N/A |
String |
GaiaDR2 |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to #; Should define hierarchy of catalogs |
CID1 … CID# |
Catalog name/designation for object in trace 1 to # |
N/A |
String |
DR2 NNNNNNNNNNNNNNNNNNN |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CRA1 … CRA# |
Catalog right ascension for object in trace 1 to # |
sexagesimal |
String |
HH:MM:SS.sss |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CDEC1 … CDEC# |
Catalog declination for object in trace 1 to # |
sexagesimal |
String |
DD.mm.ss.sss |
UNKNOWN |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CEQNX1 … CEQNX# |
Catalog equinox for object in trace 1 to # |
yr |
Float |
2000 |
UNDEFINED |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CEPCH1 … CEPCH# |
Catalog epoch for object in trace 1 to # |
yr |
Float |
2015.5 |
UNDEFINED |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CRV1 … CRV# |
Catalog Systemic RV for for object in trace 1 to # |
km/s |
Float |
45.654 |
UNDEFINED |
Y |
Can be expanded to multiple keywords indexed 1 to # |
CPLX1 … CPLX# |
Catalog parallax for object in trace 1 to # |
mas |
Float |
20.45 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
CPMR1 … CPMR# |
Catalog proper motion RA for object in trace 1 to # |
arcsec/yr |
Float |
0.0345 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
CPMD1 … CPMD# |
Catalog proper motion DEC for object in trace 1 to # |
arcsec/yr |
Float |
0.345 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
CZ1 … CZ# |
Catalog Z for for object in trace 1 to # |
N/A |
Float |
0.00000454 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
CCLRN1 … CCLRN# |
Catalog color 1 - color 2 name for object in trace 1 to # |
N/A |
String |
Gaia B-R |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
CCLR1 … CCLR# |
Catalog color 1 - color 2 for object in trace 1 to # |
mag |
Float |
0.47 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
OBSERVAT |
Observatory name |
N/A |
String |
KPNO |
UNKNOWN |
Y |
|
TELESCOP |
Telescope name |
N/A |
String |
ESO-VLT-U1234 WIYN or NEIDSOLARFEED |
UNKNOWN |
Y |
For solar observations - if solarfeed has its own name use that otherwise use an instrument + solarfeed type entry |
NUMTEL |
Number of telescopes used in the observation |
N/A |
UInt |
1 |
UNDEFINED |
Y |
|
TELEID1 … TELEID# |
Labels for telescopes as indexed in TCS keywords |
N/A |
String |
ESO-VLT-U1 |
UNKNOWN |
Y |
|
GEOSYS |
Coordinate system for observatory / telesccope location |
N/A |
String |
GRS80 |
UNKNOWN |
Y |
|
OBSLON |
Longitude used for barycentric correction |
deg |
Float |
-111.600562 |
UNDEFINED |
Y |
Recommend 6 decimal places which is ~1m accuracy |
OBSLAT |
Latitude used for barycentric correction |
deg |
Float |
31.958092 |
UNDEFINED |
Y |
Recommend 6 decimal places which is ~1m accuracy |
OBSALT |
Altitude used for barycentric correction |
meters |
Float |
2091 |
UNDEFINED |
Y |
Recommend 6 decimal places which is ~1m accuracy |
OBSGEO-X |
Cartesian Coordinate X used for barycentric correction |
meters |
Float |
5327395.964 |
N |
geocentric Cartesian triple incarnation of the traditional lat/lon/alt position on earth |
|
OBSGEO-Y |
Cartesian Coordinate Y used for barycentric correction |
meters |
Float |
-1719170.488 |
N |
geocentric Cartesian triple incarnation of the traditional lat/lon/alt position on earth |
|
OBSGEO-Z |
Cartesian Coordinate Z used for barycentric correction |
meters |
Float |
3051490.766 |
N |
geocentric Cartesian triple incarnation of the traditional lat/lon/alt position on earth |
|
ISSOLAR |
Boolean to indicate if observation is of the sun |
N/A |
Boolean |
FALSE |
UNKNOWN |
Y |
|
SEEING |
Seeing at beginning of exposure |
arcsec |
Float |
1.2 |
N |
||
AIRMASS |
Airmass at center field at beginning of exposure |
secZ |
Float |
1.3 |
N |
||
TTIME |
TCS-data date/time |
UTC |
String |
2018-04-26T15:53:13 |
N |
||
TEQNX |
TCS equinox |
yr |
String |
J2000 |
N |
||
TEPCH |
TCS epoch |
yr |
String |
J2000 |
N |
||
TLST1 … TLST# |
TCS local sidereal time for telescope 1 to # |
sexagesimal |
String |
14:23:43 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
TRA1 … TRA# |
TCS RA for telescope 1 to # |
sexagesimal |
String |
13:43:42.3456 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
TDEC1 … TDEC# |
TCS DEC for telescope 1 to # |
sexagesimal |
String |
-13:34:12.7787 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
TEL1 … TEL# |
TCS elevation angle for telescope 1 to # |
deg |
Float |
43.5 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
TZA1 … TZA# |
TCS zenith angle for telescope 1 to # |
deg |
Float |
35.5435 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
TAZ1 … TAZ# |
TCS azimuth angle for telescope 1 to # |
deg |
Float |
124.3 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
THA1 … THA# |
TCS hour angle for telescope 1 to # |
sexagesimal |
String |
-2:34:43.3455 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
PARST1 … PARST# |
Parallactic angle at exposure start for telescope 1 to # |
deg |
Float |
175.2 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
PAREND1 … PAREND# |
Parallactic angle at exposure end for telescope 1 to # |
deg |
Float |
180.7 |
N |
Can be expanded to multiple keywords indexed 1 to # |
|
ROTANG |
Rotator angle |
deg |
Float |
80.3 |
N |
||
SUNEL |
Sun Elevation Angle |
deg |
Float |
-18.5 |
N |
||
MOONANG |
Target-Moon Angle |
deg |
Float |
34.56 |
N |
||
MOONEL |
Moon Elevation Angle |
deg |
Float |
26.8 |
N |
||
MOONILLU |
Moon illumination |
% |
Float |
23.4 |
N |
||
MOONRV |
RV of reflected sunlight off moon |
km/s |
Float |
1.3 |
N |
||
INHUM |
relative humidity inside dome |
% |
Float |
56.6 |
N |
||
INHUMT |
INHUM timestamp |
UTC |
String |
2024-02-20T03:31:33 |
N |
||
OUTTMP |
Outside temperature |
deg C |
Float |
0.0 |
N |
||
OUTTMPT |
OUTTMP timestamp |
UTC |
String |
2024-02-20T03:31:33 |
N |
||
OUTHUM |
Outside relative humidity |
% |
Float |
56.6 |
N |
||
OUTHUMT |
OUTHUM timestamp |
UTC |
String |
2024-02-20T03:31:33 |
N |
||
ENVWINDS |
Wind speed |
m/s |
Float |
23.4 |
N |
Details are obs specific and not uniform; best effort as available from the observatory |
|
ENVWINDD |
Wind direction |
angle |
Float |
133.5 |
N |
Details on where wind is measured (position of weather station) should be captured in documentation |
|
DRPTAG |
RV DRP version |
N/A |
String |
v1.1.0 |
UNKNOWN |
Y |
|
EPRVTAG |
Version of EPRV standard applied |
N/A |
String |
v1.1.0 |
UNKNOWN |
Y |
|
VOCLASS |
Version of EPRV standard applied |
N/A |
String |
EPRVSTANDARDv1.1.0 |
UNKNOWN |
Y |
|
DRPHASH |
Git commit hash |
N/A |
String |
a1b2c3d4e5f67890abcdef1234567890abcdef12 |
N |
||
INSTERA |
Tag to track permanent changes to instrument |
N/A |
String |
v2.3.0 |
UNKNOWN |
Y |
|
EXTRACT |
Type of 1D extraction |
N/A |
String |
sum or flatrelative or optimal |
N |
||
EXSNR1 … EXSNR# |
Extracted signal-to-noise at EXSNRW1 to EXSNRW# |
SNR/1-D pixel |
FLOAT |
245.35 |
N |
Can be expanded to multiple keywords indexed 1 to #; Meant to be a set of useful SNR checks, not one for every order |
|
EXSNRW1 … EXSNRW# |
Wavelength at which EXTSNR1 to EXTSNR# is measured |
Angstroms |
FLOAT |
5530 |
N |
Can be expanded to multiple keywords indexed 1 to #; Meant to be a set of useful SNR checks, not one for every order |
|
FULLCOMP |
Is this file fully compliant with the RVSTAND EPRV standard? |
N/A |
String |
Yes or No |
UNKNOWN |
Y |
|
TELFLAG |
Issues with observatory or telescope? |
N/A |
String |
Pass or Fail or Warn |
PASS |
N |
Default to Pass. If Fail or Warn then more detail should be provided via the bitfields |
INSTFLAG |
Issues with instrument? |
N/A |
String |
Pass or Fail or Warn |
PASS |
N |
Default to Pass. If Fail or Warn then more detail should be provided via the bitfieldsx |
DRPFLAG |
Issues with pipeline? |
N/A |
String |
Pass or Fail or Warn |
PASS |
N |
Default to Pass. If Fail or Warn then more detail should be provided via the bitfields |
ADDFLAG |
Additional team defined flag |
N/A |
String |
Pass or Fail or Warn |
N |
Note what this corresponds to in documentation |
|
OBSFLAG |
Observer pass/fail for exposure |
N/A |
String |
Pass or Fail |
N |
||
SUMMFLAG |
Summary roll up of other flag keywords |
N/A |
String |
Pass or Fail |
UNKNOWN |
Y |
|
DQLVL0 |
Quality check bitfield of N characters |
N/A |
UInt |
0 |
UNDEFINED |
Y |
see e.g. https://neid.ipac.caltech.edu/docs/NEID-DRP/bitfields.html |
DQLVL1 |
Quality check bitfield of N characters |
N/A |
UInt |
0 |
UNDEFINED |
Y |
see e.g. https://neid.ipac.caltech.edu/docs/NEID-DRP/bitfields.html |
DQLVL2 |
Quality check bitfield of N characters |
N/A |
UInt |
0 |
UNDEFINED |
Y |
Standardize first few bits then leave remaining for instruent specific checks |