MAJIS ITL reader#
from majis import read_itl
from majis.itl import save_csv, save_itl, save_xlsm
Load absolute time ITL as EventsDict#
itl_abs = read_itl('absolute_time.itl')
itl_abs
| event | # | t_start | t_stop | |
|---|---|---|---|---|
| 0 | MAJ_JUP_DISK_SCAN | 2 | 2032-09-23 | 2032-09-23 |
Load relative time ITL as EventsList (as a flat list)#
itl_rel = read_itl('relative_time.itl', refs='events.evf', flat=True)
itl_rel
| t_start | t_end | INSTRUMENT | SCENARIO | OBS_NAME | TARGET | CU_TREP | CU_FRAME | BINNING | PPE | START_ROW_VIS | START_ANGLE | STOP_ANGLE | SYNCHRONOUS | START_SCAN_SPEED | STOP_SCAN_SPEED | PRIME | COMMENTS | ITL | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2032-09-23T02:58:11.000 | 2032-09-23T03:01:59.900 | MAJIS | S007_01 | MAJ_JUP_DISK_SCAN_101 | JUPITER | 100ms | 109 | 1 | 64 | 436 | -0.27937 | +0.23385 | +3 | +0.0022421078 | +0.0022421078 | False | relative_time.itl | |
| 1 | 2032-09-23T03:04:34.000 | 2032-09-23T03:08:22.900 | MAJIS | S007_01 | MAJ_JUP_DISK_SCAN_102 | JUPITER | 200ms | 109 | 4 | 64 | 802 | -0.37981 | +0.13341 | +3 | +0.0022421078 | +0.0022421078 | False | relative_time.itl |
Concatenate ITL files into a single file#
save_itl('output.itl', itl_abs, itl_rel)
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_101 TARGET=JUPITER CU_TREP=100ms CU_FRAME=109 BINNING=1 PPE=64 START_ROW_VIS=436
# MAJIS - START_ANGLE=-0.27937 STOP_ANGLE=+0.23385 SYNCHRONOUS=+3 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
2032-09-23T02:58:11.000Z MAJIS OBS_START MAJ_JUP_DISK_SCAN
2032-09-23T03:01:59.900Z MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_102 TARGET=JUPITER CU_TREP=200ms CU_FRAME=109 BINNING=4 PPE=64 START_ROW_VIS=802
# MAJIS - START_ANGLE=-0.37981 STOP_ANGLE=+0.13341 SYNCHRONOUS=+3 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
2032-09-23T03:04:34.000Z MAJIS OBS_START MAJ_JUP_DISK_SCAN
2032-09-23T03:08:22.900Z MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_001 TARGET=JUPITER CU_TREP=500ms CU_FRAME=300 BINNING=1 PPE=400 START_ROW_VIS=100
# MAJIS - START_ANGLE=-1.31051 STOP_ANGLE=+0.10202 SYNCHRONOUS=0 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
# MAJIS - COMMENTS : MULTI WORDS COMMENT with , and ;
# MAJIS - COMMENTS : MULTI LINES COMMENT
2032-09-23T05:15:45.000Z MAJIS OBS_START MAJ_JUP_DISK_SCAN (PRIME=TRUE)
2032-09-23T05:26:15.000Z MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_002 TARGET=JUPITER CU_TREP=2100ms CU_FRAME=300 BINNING=2 PPE=400 START_ROW_VIS=372
# MAJIS - START_ANGLE=+1.32935 STOP_ANGLE=-0.08318 SYNCHRONOUS=+3 START_SCAN_SPEED=-0.0022421078 STOP_SCAN_SPEED=-0.0022421078
2032-09-23T06:09:45.000Z MAJIS OBS_START MAJ_JUP_DISK_SCAN (PRIME=TRUE)
2032-09-23T06:20:15.000Z MAJIS OBS_END MAJ_JUP_DISK_SCAN
Note
When multiple ITL are provided, they will be concatenate and ordered by increasing time.
Absolute and relative ITL are compatible.
Observation block must not overlap (can be by-pass with
overlap=True)If no relative reference is provided, the output will be in absolute time (see below for relative time).
Export ITL with repesct to a relative time reference:#
save_itl('output.itl', itl_abs, itl_rel, ref='01-SEP-2032_00:00:02 EVENT_NAME (COUNT = 1)')
# Relative time reference:
# 2032-09-01T00:00:02 EVENT_NAME (COUNT = 1)
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_101 TARGET=JUPITER CU_TREP=100ms CU_FRAME=109 BINNING=1 PPE=64 START_ROW_VIS=436
# MAJIS - START_ANGLE=-0.27937 STOP_ANGLE=+0.23385 SYNCHRONOUS=+3 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
EVENT_NAME (COUNT = 1) +022.02:58:09.000 MAJIS OBS_START MAJ_JUP_DISK_SCAN
EVENT_NAME (COUNT = 1) +022.03:01:57.900 MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_102 TARGET=JUPITER CU_TREP=200ms CU_FRAME=109 BINNING=4 PPE=64 START_ROW_VIS=802
# MAJIS - START_ANGLE=-0.37981 STOP_ANGLE=+0.13341 SYNCHRONOUS=+3 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
EVENT_NAME (COUNT = 1) +022.03:04:32.000 MAJIS OBS_START MAJ_JUP_DISK_SCAN
EVENT_NAME (COUNT = 1) +022.03:08:20.900 MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_001 TARGET=JUPITER CU_TREP=500ms CU_FRAME=300 BINNING=1 PPE=400 START_ROW_VIS=100
# MAJIS - START_ANGLE=-1.31051 STOP_ANGLE=+0.10202 SYNCHRONOUS=0 START_SCAN_SPEED=+0.0022421078 STOP_SCAN_SPEED=+0.0022421078
# MAJIS - COMMENTS : MULTI WORDS COMMENT with , and ;
# MAJIS - COMMENTS : MULTI LINES COMMENT
EVENT_NAME (COUNT = 1) +022.05:15:43.000 MAJIS OBS_START MAJ_JUP_DISK_SCAN (PRIME=TRUE)
EVENT_NAME (COUNT = 1) +022.05:26:13.000 MAJIS OBS_END MAJ_JUP_DISK_SCAN
# MAJIS - SCENARIO=S007_01 OBS_NAME=MAJ_JUP_DISK_SCAN_002 TARGET=JUPITER CU_TREP=2100ms CU_FRAME=300 BINNING=2 PPE=400 START_ROW_VIS=372
# MAJIS - START_ANGLE=+1.32935 STOP_ANGLE=-0.08318 SYNCHRONOUS=+3 START_SCAN_SPEED=-0.0022421078 STOP_SCAN_SPEED=-0.0022421078
EVENT_NAME (COUNT = 1) +022.06:09:43.000 MAJIS OBS_START MAJ_JUP_DISK_SCAN (PRIME=TRUE)
EVENT_NAME (COUNT = 1) +022.06:20:13.000 MAJIS OBS_END MAJ_JUP_DISK_SCAN
Export ITL to CSV#
save_csv('output.csv', itl_abs)
#OBS_NAME;OBS_START;OBS_END;INSTRUMENT;SCENARIO;TARGET;CU_TREP;CU_FRAME;BINNING;PPE;START_ROW_VIS;START_ANGLE;STOP_ANGLE;SYNCHRONOUS;START_SCAN_SPEED;STOP_SCAN_SPEED;PRIME;ITL;COMMENTS
MAJ_JUP_DISK_SCAN_001;2032-09-23T05:15:45.000Z;2032-09-23T05:26:15.000Z;MAJIS;S007_01;JUPITER;500ms;300;1;400;100;-1.31051;+0.10202;0;+0.0022421078;+0.0022421078;True;absolute_time.itl;"MULTI WORDS COMMENT with , and ; / MULTI LINES COMMENT"
MAJ_JUP_DISK_SCAN_002;2032-09-23T06:09:45.000Z;2032-09-23T06:20:15.000Z;MAJIS;S007_01;JUPITER;2100ms;300;2;400;372;+1.32935;-0.08318;+3;-0.0022421078;-0.0022421078;True;absolute_time.itl;"None"
Export ITL to XLSM timeline#
save_xlsm('output.xlsm', itl_abs, ca_ref='01-SEP-2032_00:00:02 CA_REF (COUNT = 1)')
| Event Name | Phase | block | Comments | OBS_NAME | start_time_relative_ca | stop_time_relative_ca | start_time_utc | stop_time_utc | pointing desc | MAJIS resol | prime | MAJIS ODF name | ITL name | Mirror Flag | start_angle | start_scan_speed | stop_scan_speed | Scanner step per frame | stop_angle | scanner_timetot (ms) | First CU_frame start wrt C/A | Last CU_frame stop wrt C/A | First CU_frame start (UTC) | Last CU_frame stop (UTC) | cu_trep_ms | spatial_binning | obs durat (sec) (w/o borders) | nb_cu_frames_tot | nb_cu_frames_tot (computed) | ppe | Spectral Mapping | Number of spectels after spectral binning | Nb of bits per spectel after compression | datarate (bits/s) | DV (Mbits) | Browse Parameters | Number of browse spectels | Nb of bits per browse spectel after compression | browse datarate (bits/s) | browse DV (Mbits) | Image Mode | Dark Strategy | Dark Subtraction | VI flag | IR flag | VI Readout | IR Readout | Start Row VI | Start Row IR | VI Despiking N | VI Despiking M | VI Despiking K | VI Tint | VI Gain | VI Offset | VI NPE | IR Despiking N | IR Despiking M | IR Despiking K | IR Tint | IR Gain | IR Offset | IR NPE | Power (W) | Science mode (for power estimation) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MULTI WORDS COMMENT with , and ; / MULTI LINES COMMENT | MAJ_JUP_DISK_SCAN_001 | MAJIS | absolute_time.itl | ENABLE | -1.31051 | 0.0022421078 | 0.0022421078 | 0 | 0.10202 | =IF(AND(Mirror_Flag="ENABLE",ABS(Scanner_step_per_frame)<>3), IF(start_scan_speed=stop_scan_speed, ABS( (stop_angle - start_angle) / start_scan_speed ) *1000, ABS( (stop_angle - start_angle) / (stop_scan_speed - start_scan_speed) * LN( stop_scan_speed / start_scan_speed ) ) *1000 ), "N/A") | +022.05:15:43.000 | +022.05:26:13.000 | 2032-09-23T05:15:45.000Z | 2032-09-23T05:26:15.000Z | 500 | No Binning | 300 | =IF(AND(Mirror_Flag="ENABLE",ABS(Scanner_step_per_frame)<>3), INT( (scanner_timetot__ms / cu_trep_ms) + 0.5), "N/A") | 400 | =(VI_flag="ON") * VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,2,FALSE) + (IR_flag="ON") * VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,4,FALSE) | =((VI_flag="ON") * (VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,3,FALSE)*VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,2,FALSE)) + (IR_flag="ON") * (VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,5,FALSE)*VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,4,FALSE)) ) / Number_of_spectels_after_spectral_binning | =DV__Mbits/cu_trep_ms/ IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A, Last_CU_frame_stop_wrt_C_A)/cu_trep_ms,nb_cu_frames_tot)*(1024*1024) | =IF(AND(nb_cu_frames_tot__computed<>"N/A",nb_cu_frames_tot<>nb_cu_frames_tot__computed), "ERROR: nb_cu_frames_tot and nb_cu_frames_tot (computed) are not equal", IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A,Last_CU_frame_stop_wrt_C_A)/cu_trep_ms, nb_cu_frames_tot) * ( ppe / 2^(IF(spatial_binning="No Binning",0,IF(spatial_binning="Binning x2",1,IF(spatial_binning="Binning x4",2,"N/A")))) ) * Number_of_spectels_after_spectral_binning * Nb_of_bits_per_spectel_after_compression / (1024*1024) ) | =(VI_flag="ON") * VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,2,FALSE) + (IR_flag="ON") * VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,4,FALSE) | =IF(Number_of_browse_spectels=0,0, ((VI_flag="ON") * (VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,3,FALSE)*VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,2,FALSE)) + (IR_flag="ON") * (VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,5,FALSE)*VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,4,FALSE)) ) / Number_of_browse_spectels ) | =browse_DV__Mbits / cu_trep_ms / nb_cu_frames_tot * (1024*1024) | =IF(AND(nb_cu_frames_tot__computed<>"N/A",nb_cu_frames_tot<>nb_cu_frames_tot__computed), "ERROR: nb_cu_frames_tot and nb_cu_frames_tot (computed) are not equal", IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A,Last_CU_frame_stop_wrt_C_A)/cu_trep_ms, nb_cu_frames_tot) * ( ppe / 2^(IF(spatial_binning="No Binning",0,IF(spatial_binning="Binning x2",1,IF(spatial_binning="Binning x4",2,"N/A")))) ) * Number_of_browse_spectels * Nb_of_bits_per_browse_spectel_after_compression / (1024*1024) ) | 100 | =IF(AND(VI_flag="ON",IR_flag="ON"), IF( Mirror_Flag = "ENABLE", power_2ch_science_scanning, power_2ch_science_pointing), IF( Mirror_Flag = "ENABLE", power_1ch_science_scanning, power_1ch_science_pointing)) | =IF(AND(VI_flag="ON",IR_flag="ON"), IF( Mirror_Flag = "ENABLE", power_2ch_science_scanning_description, power_2ch_science_pointing_description), IF( Mirror_Flag = "ENABLE", power_1ch_science_scanning_description, power_1ch_science_pointing_description)) | |||||||||||||||||||||||||||||||||||
| MAJ_JUP_DISK_SCAN_002 | MAJIS | absolute_time.itl | ENABLE | 1.32935 | -0.0022421078 | -0.0022421078 | 3 | -0.08318 | =IF(AND(Mirror_Flag="ENABLE",ABS(Scanner_step_per_frame)<>3), IF(start_scan_speed=stop_scan_speed, ABS( (stop_angle - start_angle) / start_scan_speed ) *1000, ABS( (stop_angle - start_angle) / (stop_scan_speed - start_scan_speed) * LN( stop_scan_speed / start_scan_speed ) ) * 1000), "N/A") | +022.06:09:43.000 | +022.06:20:13.000 | 2032-09-23T06:09:45.000Z | 2032-09-23T06:20:15.000Z | 2100 | Binning x2 | 300 | =IF(AND(Mirror_Flag="ENABLE",ABS(Scanner_step_per_frame)<>3), INT( (scanner_timetot__ms / cu_trep_ms) + 0.5), "N/A") | 400 | =(VI_flag="ON") * VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,2,FALSE) + (IR_flag="ON") * VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,4,FALSE) | =((VI_flag="ON") * (VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,3,FALSE)*VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,2,FALSE)) + (IR_flag="ON") * (VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,5,FALSE)*VLOOKUP(SPECTRAL_MASK,list_of_spectral_masks,4,FALSE)) ) / Number_of_spectels_after_spectral_binning | =DV__Mbits/cu_trep_ms/ IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A, Last_CU_frame_stop_wrt_C_A)/cu_trep_ms,nb_cu_frames_tot)*(1024*1024) | =IF(AND(nb_cu_frames_tot__computed<>"N/A",nb_cu_frames_tot<>nb_cu_frames_tot__computed), "ERROR: nb_cu_frames_tot and nb_cu_frames_tot (computed) are not equal", IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A,Last_CU_frame_stop_wrt_C_A)/cu_trep_ms, nb_cu_frames_tot) * ( ppe / 2^(IF(spatial_binning="No Binning",0,IF(spatial_binning="Binning x2",1,IF(spatial_binning="Binning x4",2,"N/A")))) ) * Number_of_spectels_after_spectral_binning * Nb_of_bits_per_spectel_after_compression / (1024*1024) ) | =(VI_flag="ON") * VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,2,FALSE) + (IR_flag="ON") * VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,4,FALSE) | =IF(Number_of_browse_spectels=0,0, ((VI_flag="ON") * (VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,3,FALSE)*VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,2,FALSE)) + (IR_flag="ON") * (VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,5,FALSE)*VLOOKUP(BROWSE_PARAMETERS,list_of_browse_parameters,4,FALSE)) ) / Number_of_browse_spectels) | =browse_DV__Mbits / cu_trep_ms / nb_cu_frames_tot * (1024*1024) | =IF(AND(nb_cu_frames_tot__computed<>"N/A",nb_cu_frames_tot<>nb_cu_frames_tot__computed), "ERROR: nb_cu_frames_tot and nb_cu_frames_tot (computed) are not equal", IF(nb_cu_frames_tot=65535, DIFF_TIME_CA_ms(First_CU_frame_start_wrt_C_A,Last_CU_frame_stop_wrt_C_A)/cu_trep_ms, nb_cu_frames_tot) * ( ppe / 2^(IF(spatial_binning="No Binning",0,IF(spatial_binning="Binning x2",1,IF(spatial_binning="Binning x4",2,"N/A")))) ) * Number_of_browse_spectels * Nb_of_bits_per_browse_spectel_after_compression / (1024*1024) ) | 372 | =IF(AND(VI_flag="ON",IR_flag="ON"), IF( Mirror_Flag = "ENABLE", power_2ch_science_scanning, power_2ch_science_pointing), IF( Mirror_Flag = "ENABLE", power_1ch_science_scanning, power_1ch_science_pointing)) | =IF(AND(VI_flag="ON",IR_flag="ON"), IF( Mirror_Flag = "ENABLE", power_2ch_science_scanning_description, power_2ch_science_pointing_description), IF( Mirror_Flag = "ENABLE", power_1ch_science_scanning_description, power_1ch_science_pointing_description)) |