This topic aims to describe the specification from a technical point of view.
1.3 Granularity
The following discussion apply to data extraction from individual OIFits files.
Subgrouping must be done in the following order : target(OI_TARGET), instrument(OI_WAVELENGTH), night (OI_DATA rows)
Group by targets
The purpose is to identify different targets within an OIFits file or a file set.
Check and identify a target with Simbad
Function: return id for a target given its description
Inputs: target name (string) and/or coords (ra(deg), dec(deg), equinox(int))
Output: Simbad target identifier
Definitions
Target identifier (integer): OID (integer) from Simbad resolution if success resolving target
Function contents
- if target_name
- do name resolution with Simbad
- no result
- single result: check returned coords against given coords
- no coords: return identifier
- off coords: raise error
- within search radius: report difference, return identifier
- more than one result
- select result with closest to coords (within search radius)
- do resolution with coords (and search radius)
- no result
- single result
- if name = result.name, report warning
- return identifier
- multiple result
- report warning
- return closest result
- return resolution failure
Use cases
- invalid coords
- fancy coords
- resolution of target name close to coords
- target name and coords do not match (big distance)
- unknown target
Impact
- jmcs :
- manage coords with equinox = 2000
- resolve target names with simbad (catalog)
- oiexplorer-core
Notes
- selection of the search radius for coord resolution
- associate resolution timestamp to result in case of reprocessing later?
- any additional information to save from resolution result?
Identify target
Function: return id for a target given its description
Inputs: target name (string) and or coords (ra(deg), dec(deg), equinox(int))
Output: target identifier
This provides an identifier even if the target is unknown by Simbad.
Definitions
temporary id: negative integer (no conflict with Simbad ID)
id cache: an association table between name or coords and identifier
Function contents
- try resolving with Simbad
- success
- failure
- search temporary id cache with coords
- if unknown target
- create a new temporary id
- save association of temporary id with coords in cache
- return id
Identify targets in a OIFitsFile
An OIFits file can contain data for several targets. These targets are represented as rows inside the OI_TARGET table.
There is no guarantee that the targets are correct and unique within the target.
Function: associate ids to targets in a OIFits file
Inputs: OI_TARGET table (TARGET_ID, RAEP0, DECEP0, EQUINOX columns)
Definitions
OI_TARGET identifier: derived column with type integer
temporary id: negative integer (to separate from Simbad identifier) associated with coords
Function contents
- for each row in table
- if fancy/incomplete coords
- run 'identify target'
- success
- set derived column with id
- error
- search temporary id cache with coords
- if unknown target
- create a new temporary id
- save association temporary id with coords
- return temporary id
Use cases
- invalid coords
- resolution of target name close to coords
- target name and coords does not match (big distance)
- unknown target
- set unknown targets
- fancy coords
- missing coords
- missing name
- duplicated targets in rows
Impact
- oitools: add derived columns in OI_TARGET (TargetUUID + CatalogIDs)
- oiexplorer-core: function implementation
Group by instrument mode
Function: retrieve instrument modes
Inputs: OI_WAVELENGTH tables : INSNAME + EFF_WAVE_min/max + NB_EFF_WAVE + EFF_BAND
knowledge instrument_mode database
Outputs: List of instrument modes
Do not presume that every data are sorted properly in OIFits files when searching for min/max values.
Use cases
- same data with epsilon values should retrieve the same instrument mode (may feed INSNAME aliases)
Impact
- oitools : add derived column (InsModeID for each OI_DATA or one per data row?)
- oiexplorer-core : compute instrument signature (insname, wavelengths, resolution)
- oidb :
- use instrument signature to select instrument mode
- insname aliases, knowledge database (aspro-conf)
- instrument configurations
Examples
Questions:
- how to handle data for unknown instrument ?
- how to store an instrument_mode (single string, fields concatenation...)
- How to solve ambiguity for MIDI (and MATISSE) between HIGH_SENS and SCI_PHOT ?
Group by nights
Function: split by observation nights
Inputs: OI_DATA tables : (DATE-OBS + TIME ) or (MJD), ARRNAME
OI_ARRAY tables
Outputs: List of observation nights
Use cases
- handle oifits without OI_ARRAY
Impact
- jmal : date, coords
- oitools : add derived column (NightID for each data line)
- oiexplorer-core : computing NightID
Examples
General
- oiexplorer-core must provide for every table row : the targetId, nightId, targetUuid
- do we have to refresh/compare data retrieved by simbad