Skip to main content

Juice/MAJIS operations toolbox

Project description

MAJIS Operations Toolbox

Majis operations toolbox logo

Pipeline Status Test coverage Documentation Status Latest release

This toolbox aims to collect MAJIS Operations scripts in a common python package.

The full documentation of the package can be found in majis-ops.readthedocs.io

🚀 Installation

python -m pip install majis-ops

🛰️ Basic examples

🐍 As python package

  • Read a ITL file:
from majis import read_itl

# Load absolute time ITL as EventsDict object
itl_abs = read_itl('absolute_time.itl')

# Load relative time ITL as EventsList object
itl_rel = read_itl('relative_time.itl', refs='events.evf', flat=True)

Note: Relative datetime can be provided either with a EVF file or inline with one or multiple strings: DATETIME REF_NAME (COUNT = N)

  • Export one (or multiple) ITL blocks:
from majis import save_itl

# Export as absolute ITL
save_itl('output.itl', itl_abs, itl_rel, )

# Export as relative ITL
save_itl('output.itl', itl_abs, itl_rel, , ref='DATETIME  REF_NAME (COUNT = N)')

# Export as CSV
save_itl('output.csv', itl_abs, itl_rel, )

# Export as XLSM timeline w.r.t. C/A reference (based on default template)
save_itl('output.xlsm', itl_abs, ca_ref='DATETIME  REF_CA (COUNT = N)')

# Append to an existing XLSM timeline
save_itl(None, itl_abs, timeline='timeline.xlsm')

Notes:

  • When multiple ITL are provided, they will be concatenate and ordered by date.

  • Absolute and relative ITL are compatible.

  • Export can be either absolute or relative to a reference.

  • Observation block must not overlap.

  • Manipulate MAJIS timeline (.xlsm file):

>>> from majis import Timeline

>>> timeline = Timeline(timeline='timeline.xlsm')

# Get template version
>>> template.version
<Version('2.5')>

# Get template changelog
>>> template.log
'>>>    2.5 | 2025-11-20 | Cydalise Dumesnil'
'Add the new spectral mask MAJIS_NOPROCESS_SPECTRAL_MASK_IR_256'
'...'
'>>>    1.0 | 2022-11-08 | François Poulet'
'creation'

# Get science changelog
>>> template.science
''  # Empty by default

# Get the number of observations
>>> len(timeline)
10

# Get the list of observations
>>> timeline['OBS_NAME']
['OBS_001', ...]

# Get an observation details
>>> timeline[1]
{'OBS_NAME': 'OBS_001', 'start_angle': 1.5, ...}

# Get an observation property
>>> timeline['start_angle', 1]
1.5

# Append new observations from ITL file
>>> timeline.append('absolute_time.itl')

# Edit a single field
>>> timeline['start_angle', 1] = -1.5
>>> timeline['start_angle', 1]
-1.5

# Save to the same XLSM timeline
>>> timeline.save()

# Create a new timeline from the default template and a relative ITL file
>>> timeline = Timeline('relative_time.itl', refs='events.evf')

# Compute all relative time w.r.t. to a C/A reference
>>> timeline.ca_ref = '2032-09-24T21:33:36 PERIJOVE_12PJ (COUNT = 1)'
>>> timeline['First CU_frame start wrt C/A', 1]
'-001.18:35:25'

# Export the timeline to a new file
>>> timeline.save('new_timeline.xlsm')

👾 As command line interface

$ majis-itl --help

usage: majis-itl [-h] [-o output.[itl|csv|xlsm]] [-f]
                 [-t "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)"]
                 [-r "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)"]
                 [--timeline timeline.xlsm] [--header "# my-custom-header"]
                 [--overlap] [--csv] [--csv-sep separator]
                 [input.itl ...]

MAJIS ITL toolbox

positional arguments:
  input.itl             Input ITL filename(s). If multiple files are provided
                        they will be concatenated.

options:
  -h, --help            show this help message and exit
  -o output.[itl|csv|xlsm], --output output.[itl|csv|xlsm]
                        Output filename, it could be either ITL, CSV or XLSM.
                        If none provided, the results will be displayed (only
                        for ITL and CSV).
  -f, --force           Overwrite the output file if already exists.
  -t "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)", --time-ref "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)"
                        Input events time reference(s). If multiple values are
                        required use an `events.evf` file.
  -r "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)", --relative-to "YYYY-MM-DDTHH:MM:SS REF_NAME (COUNT = N)"
                        Reference time to be used for relative time output.
  --timeline timeline.xlsm
                        Original timeline to append. If no explicit `--output`
                        is provided new observations will be append in this
                        file.
  --header "# my-custom-header"
                        ITL custom file header.
  --overlap             Allow blocks overlap.
  --csv                 Display the ITL as CSV.
  --csv-sep separator   CSV separator (default: ";")

Examples:

  • Convert a single ITL with relative time as an absolute CSV ITL file:
majis-itl relative_time.itl --time-ref "2032-09-24T21:33:36 PERIJOVE_12PJ (COUNT = 1)" --output output.csv
  • Concatenate two ITL with absolute and relative times as an relative ITL file:
majis-itl absolute_time.itl relative_time.itl --ref-time events.evf --relative-to "2032-09-24T21:33:36 PERIJOVE_12PJ (COUNT = 1)" --output output.itl

Note: If no --output flag is present, the output is display in the console.

  • Create a new MAJIS timeline (.xlsm) from a ITL the default template.
majis-itl absolute_time.itl --output output.xlsm
  • Edit an existing MAJIS timeline to compute relative time w.r.t. C/A reference.
majis-itl --timeline timeline.xlsm --relative-to "2032-09-24T21:33:36 PERIJOVE_12PJ (COUNT = 1)"

Note: If no --output flag is present, the output will be save in the original template.

👐 Contribution

If you want to contribute to this project, you need to install hatch on your system, then clone the depot and install de default env:

git clone https://git.ias.u-psud.fr/majis_sgs/operations/majis-ops-toolbox.git
cd majis-ops-toolbox

# Install dev dependencies
hatch env create

# Setup pre-commit hook
hatch -e linter run pre-commit install

To lint and format the source code:

hatch -e linter run check
hatch -e linter run format

To test the module:

hatch -e tests run tests

To build the docs:

hatch -e docs run build

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

majis_ops-1.2.6.tar.gz (158.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

majis_ops-1.2.6-py3-none-any.whl (92.5 kB view details)

Uploaded Python 3

File details

Details for the file majis_ops-1.2.6.tar.gz.

File metadata

  • Download URL: majis_ops-1.2.6.tar.gz
  • Upload date:
  • Size: 158.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.10.20 HTTPX/0.28.1

File hashes

Hashes for majis_ops-1.2.6.tar.gz
Algorithm Hash digest
SHA256 cf54f4abfc8dbf01001100f255b4dc1b78c26ff02ecab54166909cac937207ad
MD5 5eeb5a24fd13fd05c7898944815a508b
BLAKE2b-256 0f5efe233acbdb63a244ee371fb19cd3b108db089df31fe4fed84453ccbd931b

See more details on using hashes here.

File details

Details for the file majis_ops-1.2.6-py3-none-any.whl.

File metadata

  • Download URL: majis_ops-1.2.6-py3-none-any.whl
  • Upload date:
  • Size: 92.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.10.20 HTTPX/0.28.1

File hashes

Hashes for majis_ops-1.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 20e1860a636d72576664277fd11d8869ca0ccca16bdfee5d3a06fd3f20ec2f9e
MD5 56e86814fd99612e9b170ffd8c60fdb1
BLAKE2b-256 8fd79ead8994596c7e22b26e127eadd283ece45570fd5a417edf62874aef315f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page