How to start

Import the library and call its methods with ceflib.method-name()

$ python
>>> import ceflib
>>> ceflib.read ("C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030927_V01.cef")
>>> print ceflib.varnames ()

Import all the methods of the library in current environment:

$ python
>>> from ceflib import *
>>> read ("C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030927_V01.cef")
>>> print varnames ()

Librairie Reference

verbosity (level)

Set CEFLIB verbosity level (0..5) that can be useful to debug in case of problem.

You can set level to 0 to suppress unexpected CEFLIB messages.

read (filename) → integer

Read CEF file content and load data in memory.

Return error code (0 if OK)

Example
>>> status = read ("C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030927_V01.cef")
1 : CEF.Clear_descriptor           : Release memory
1 : CEF.Open_CEF_file              : C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030907_V09.cef.gz
1 : CEF.Read_CEF_header            : 20206 records found in 0.03 seconds
1 : CEF.Read_CEF_header            : 24 values per record
1 : CEF.Display_variables          : 12 variables + 0 constants
1 : CEF.Read_CEF_file              : 20206 records physically read in 0.06 seconds
1 : CEF.Read_CEF_file              : STATUS = 0 : OK : Terminaison correcte
>>> print status == 0 and "OK" or "Error"
OK
Note You can open a regular .cef file or a compressed .cef.gz file

read_metadata (filename) → integer

New method (added in v1.8.0) that parse the metadata content of a given CEF header, without reading data records to improve performance.

Any metadata queries will be available, but the content of variables is undefined.

>>> status = read_metadata ("C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030927_V01.cef")
1 : CEF.Clear_descriptor           : Release memory
1 : CEF.Open_CEF_file              : C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030907_V09.cef.gz
1 : CEF.Read_CEF_header            : 24 values per record
1 : CEF.Display_variables          : 12 variables + 0 constants
1 : CEF.Read_CEF_metadata          : STATUS = 0 : OK : Terminaison correcte

close ()

Release allocated ressources.

records () → integer

Return the number of records in the current CEF file.

>>> print records ()
20206
Note Is the file has been opened with read_metadata(), the records() function will return 1, instead of the number of records in the file.

gattributes () → list of strings

Return the list of CEF global attributes

>>> print gattibutes ()
['FILE_NAME', 'FILE_FORMAT_VERSION', 'END_OF_RECORD_MARKER', 'DATA_UNTIL']

gattr (attribute-name) → string

Return value of a global attribute.

>>> print gattr ("FILE_NAME")
C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030907_V09.cef

metanames () → list of strings

Return list of metadata sections names.

>>> print metanames ()[:5]
['Logical_file_ID', 'Generation_date', 'File_time_span', 'Version_number', 'MISSION']

meta (metadata) → list of string

Return values for a given metadata section

>> for m in metanames (): print m, meta (m)
Logical_file_ID ['C1_CP_CIS-HIA_ONBOARD_MOMENTS__20030907_V09']
Generation_date ['2013-09-09T18:01:52Z']
File_time_span ['2003-09-07T00:00:00.000Z/2003-09-07T23:59:59.999Z']
Version_number ['09']
MISSION ['Cluster']
MISSION_TIME_SPAN ['2000-08-16T12:39:00Z/2030-12-31T23:59:59Z']
MISSION_AGENCY ['ESA']
...
Note this function returns allways a list of strings, even there is only one value.

varnames () → list of strings

Return the list of CEF variables defined in the current file

>>> print "\n".join (varnames ())
time_tags
delta_time
sensitivity
cis_mode
density
velocity_isr2
velocity_gse
temperature
temp_par
temp_perp
pressure
pressure_tensor

var (varname) → numpy array of variable data type

Return data content for the specified variable name

>>> print var ("density")
[ 0.01923148  0.03846296  0.01035187 ...,  0.01831131  0.01923148
  0.02668483]

>>> print var ("time_tags")
[  1.44158400e+12   1.44158401e+12   1.44158401e+12 ...,   1.44167035e+12
   1.44167036e+12   1.44167036e+12]

vattributes (varname) → list of strings

Return list of attibutes for a given variable

>>> vattributes ("density")
['CATDESC', 'FIELDNAM', 'PARAMETER_TYPE', 'VALUE_TYPE', 'ENTITY', 'PROPERTY',
'UNITS', 'SI_CONVERSION', 'DEPEND_0', 'QUALITY', 'SIGNIFICANT_DIGITS',
'FILLVAL']

vattr (varname, attribute) → string

Get attribute value for a given variable

>>> vattr ("density", "UNITS")
'particles cm^-3'

>>> for a in vattributes ("density"):
       print "%s = %s" % (a, vattr("density", a))
CATDESC = Density (in cm^-3)
FIELDNAM = Density
PARAMETER_TYPE = Data
VALUE_TYPE = FLOAT
ENTITY = Ion
PROPERTY = Mass_Density
UNITS = particles cm^-3
SI_CONVERSION = 1e6>(particles) m^-3
DEPEND_0 = time_tags
QUALITY = 3
SIGNIFICANT_DIGITS = 6
FILLVAL = -1e31

isotime_to_milli (string) → double

Converts ISOTIME string to internal time-tags

>>> t = isotime _to_milli ("2003-09-07T00:00:03Z")

milli_to_isotime (double, integer) → string

Converts internal time-tags to ISOTIME strings.

The first arguments must be the content of an ISOTIME CEF variable.

The precision represents the number of digits after the dot:

  • 0 for plain seconds

  • 3 for milli-seconds

  • 6 for micro-seconds

>>> t = var("time_tags") [0]
>>> t
1.4415840031e+12
>>> print milli_to_isotime (t, 0)
2003-09-07T00:00:03Z
>>> print milli_to_isotime (t, 3)
2003-09-07T00:00:03.103Z