IDL user manual
===============
:toc:
== Open/close a CEF file
=== cef_read (<filename>) -> integer
Reads a CEF file, loads all data and metadata in memory.
Returns the number of records in the file
.Example
------------------------------------------------------------------------------
IDL> n = CEF_READ("C1_CP_FGM_FULL__20050101_000000_20050102_000000_V070906.cef")
% Loaded DLM: CEF.
1 : CEF.Open_CEF_file :
C1_CP_FGM_FULL__20050101_000000_20050102_000000_V070906.cef
1 : CEF.Read_CEF_header : 2167422 records found in 3.48 seconds
1 : CEF.Read_CEF_header : 11 values per record
1 : CEF.Display_variables : 7 variables + 0 constants
1 : CEF.Read_CEF_file : 2167422 records physically read in 2.74
seconds
1 : CEF.Read_CEF_file : STATUS = 0 : OK : Terminaison correcte
------------------------------------------------------------------------------
=== cef_close
Will release all memory used to handle the file and its data
=== cef_verbosity, <level>
will change the verbosity level of the CEFLIB, which can be usefull to debug
problems while reading CEF files
Defaut <level> is 1, and can be increased up to 5
== Global metadata
=== cef_metanames () -> array of stings
Returns the list of metadata sections
------------------------------------------------------------
IDL> print, CEF_METANAMES()
MISSION MISSION_TIME_SPAN MISSION_AGENCY MISSION_DESCRIPTION
MISSION_KEY_PERSONNEL MISSION_REFERENCES MISSION_REGION MISSION_CAVEATS
OBSERVATORY OBSERVATORY_CAVEATS OBSERVATORY_DESCRIPTION OBSERVATORY_TIME_SPAN
OBSERVATORY_REGION EXPERIMENT EXPERIMENT_DESCRIPTION INVESTIGATOR_COORDINATES
EXPERIMENT_REFERENCES EXPERIMENT_KEY_PERSONNEL EXPERIMENT_CAVEATS
INSTRUMENT_NAME INSTRUMENT_DESCRIPTION INSTRUMENT_TYPE MEASUREMENT_TYPE
INSTRUMENT_CAVEATS DATASET_ID DATA_TYPE DATASET_TITLE DATASET_DESCRIPTION
CONTACT_COORDINATES TIME_RESOLUTION MIN_TIME_RESOLUTION MAX_TIME_RESOLUTION
PROCESSING_LEVEL ACKNOWLEDGEMENT DATASET_CAVEATS LOGICAL_FILE_ID
VERSION_NUMBER DATASET_VERSION FILE_CAVEATS FILE_TYPE METADATA_TYPE
METADATA_VERSION FILE_TIME_SPAN GENERATION_DATE
------------------------------------------------------------
=== cef_meta (<section>) -> array of strings
Returns the list of string entries for this metadata section
------------------------------------------------------------
IDL> print, CEF_META("DATASET_DESCRIPTION")
This dataset contains full resolution measurements of the magnetic field
vector from the FGM experiment on the Cluster C1 spacecraft
------------------------------------------------------------
=== cef_gattributes () -> array of strings
Returns the list of global attributes names
------------------------------------------------------------
IDL> print, CEF_GATTRIBUTES()
FILE_NAME FILE_FORMAT_VERSION END_OF_RECORD_MARKER DATA_UNTIL
------------------------------------------------------------
=== cef_gattr (<attribute>) -> string or array of strings
Returns value of a global attribute:
- result should be a string if the attribute has an unique value
- or a list of strings for multi-valued attributes
------------------------------------------------------------
IDL> print, CEF_GATTR("FILE_NAME")
C1_CP_FGM_FULL__20050101_000000_20050102_000000_V070906.cef
------------------------------------------------------------
== CEF variables
=== cef_varnames () -> array
Return the list of CEF variables found in the file
------------------------------------------------------------
IDL> print, CEF_VARNAMES()
time_tags half_interval B_vec_xyz_gse B_mag sc_pos_xyz_gse range tm
------------------------------------------------------------
=== cef_var (<var-name>) -> IDL array
Creates an IDL variable, with the content of a given CEF-variable.
It should be an array of 1 to 6 dimensions of string, integer, float,
depending on type of the CEF variable.
.Exemple
----
filename = "C1_CP_FGM_FULL__20050101_000000_20050102_000000_V070906.cef"
n = CEF_READ (filename)
t = CEF_VAR ("time_tags")
b = CEF_VAR ("b_vec_xyz_gse")
----
=== cef_vattributes (<cef-varname>) -> array of strings
Returns the list of attributes names for a given variable
------------------------------------------------------------
IDL> print, CEF_VATTRIBUTES("B_vec_xyz_gse")
PARAMETER_TYPE ENTITY PROPERTY FLUCTUATIONS CATDESC UNITS SI_CONVERSION
TENSOR_ORDER COORDINATE_SYSTEM REPRESENTATION_1 SIZES VALUE_TYPE
SIGNIFICANT_DIGITS FILLVAL QUALITY FIELDNAM LABLAXIS DEPEND_0 LABEL_1
------------------------------------------------------------
=== cef_vattr (<cef-varname>, <attribute>) -> string ot array of strings
Returns attribute value for a given CEF variable attribute:
- result should be a string if the attribute has an unique value
- or a list of strings for multi-valued attributes
------------------------------------------------------------
IDL> print, CEF_VATTR("B_vec_xyz_gse", "SI_CONVERSION")
1.0E-9>T
------------------------------------------------------------
=== cef_depends (<cef-varname>) -> array of strings
Returns a list of DEPEND_i variables names for a given CEF variable
The first one corresponds to the DEPEND_0, then DEPEND_1, DEPEND_2, ...
Values can be empty strings if DEPEND_i attribute is not set.
------------------------------------------------------------
IDL> print, CEF_DEPENDS("B_vec_xyz_gse")
time_tags
------------------------------------------------------------
== Time-tags functions
=== milli_to_julian (<time-tag-variable>) -> array of double
CEFLIB time-tags are coded internally in milli-seconds from 1958
This function converts these time-tags into corresponding Julian days
Input can be a scalar or an array, of ISO_TIME or ISO_TIME_RANGE data
=== milli_to_epoch (<time-tag-variable>) -> array of double
CEFLIB time-tags are coded internally in milli-seconds from 1958
This function converts these time-tags into corresponding CEF Epoch time
Input can be a scalar or an array, of ISO_TIME or ISO_TIME_RANGE data
=== milli_to_isotime (<time-tag-variable>,<number-of-digits>) -> array of strings
This function will convert internal time-tags in ISOTIME strings.
The first argument could be an ISO_TIME or ISO_TIME_RANGE CEF variable
The second arguments give the number of digits expected for fractional seconds:
(0: seconds, 3: milli-seconds, 6: micro-seconds)
.Exemple
How to open a CEF file and print time-tags with micro-seconds resolution :
nrec = CEF_READ ("some-cef-file.cef")
print, MILLI_TO_ISOTIME (CEF_VAR ("time_tags"), 6)
== Examples of use
------------------------------------------------------------------------------------
PRO fgm
filename = "C1_CP_FGM_FULL__20050101_000000_20050102_000000_V070906.cef"
n = CEF_READ (filename)
t = CEF_VAR ("time_tags")
b = CEF_VAR ("b_vec_xyz_gse")
tt = MILLI_TO_JULIAN (t)
bx = b [0,*]
by = b [1,*]
bz = b [2,*]
temp = LABEL_DATE (date_format = "%H:%I")
PLOT, tt, bx, COLOR = 'ff0000'x, $
TITLE = "FGM DATA", $
xtickformat = "LABEL_DATE", $
BACKGROUND = 'ffffff'x
OPLOT, tt, by, COLOR = '00ff00'x
OPLOT, tt, bz, COLOR = '0000ff'x
END
------------------------------------------------------------------------------------