Metadata-Version: 2.3
Name: SimbioReader
Version: 0.9.0
Summary: Python Reader for the data from SIMBIO-SYS instrument suite on-board the ESA mission BepiColombo
Keywords: data reader,Space Mission,BepiColombo,SIMBIO-SYS
Author: Romolo Politi
Author-email: Romolo Politi <Romolo.Politi@inaf.it>
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Development Status :: 4 - Beta
Requires-Dist: numpy>=2.3.3,<3.0.0
Requires-Dist: pandas>=3.0.1,<4.0.0
Requires-Dist: rich-click>=1.8.9,<2.0.0
Requires-Dist: update-checker>=0.18.0,<0.19.0
Requires-Dist: importlib-metadata>=8.7.0,<9.0.0
Requires-Dist: pillow>=12.0.0,<13.0.0
Requires-Dist: semantic-version-tools>=1.4.1,<2.0.0
Requires-Dist: mystrtools>=0.1.0,<0.2.0
Requires-Python: >=3.14, <4.0
Project-URL: Repository, https://github.com/SIMBIO-SYS/SimbioReader
Description-Content-Type: text/markdown

![Version 0.9.0](https://img.shields.io/badge/version-0.9.0-blue?style=plastic)
![Language Python 3.14](https://img.shields.io/badge/python-3.14-orange?style=plastic&logo=python)
![BepiColombo SIMBIO-SYS](https://img.shields.io/badge/BepiColombo-SIMBIO--SYS-blue?style=plastic)
[![SimbioReader Test](https://github.com/SIMBIO-SYS/SimbioReader/actions/workflows/test.yml/badge.svg)](https://github.com/SIMBIO-SYS/SimbioReader/actions/workflows/test.yml)
[![Documentation Status](https://readthedocs.org/projects/simbioreader/badge/?version=latest)](https://simbioreader.readthedocs.io/en/latest/?badge=latest)

# SimbioReader


SimbioReader is the official Python reader for the data of the Spectrometer And Imagers For Mpo Bepicolombo Integrated Observatory System on board the ESA mission BepiColombo.

For more information about SIMBIO-SYS you can visit the official [ESA SIMBIO-SYS webpage](https://www.cosmos.esa.int/web/bepicolombo/simbio-sys)

## Installation

To install the reader you can use the command:

```console
$ python3 -m pip install SimbioReader
```

or using uv

```console
$ uv add SimbioReader
```

## Development

Install the project and its development dependencies with uv:

```console
uv sync --locked --group test --group devel
uv run pytest
uv run ruff check src test
uv build
uv run --no-project --with-requirements docs/requirements.txt --with . python -m sphinx -b html docs/source docs/build/html
```

## Usage

The package provides a class to read PDS4 labels and decode SIMBIO-SYS products. Python 3.14 or later is required.

```python
from SimbioReader import SimbioReader as SR

dat = SR("sim_raw_sc_vihi_internal_cruise_ico4_2020-12-14_001.dat")
```

Filter display is guarded for product types that do not expose filter metadata,
so requesting filter output on those products no longer raises an attribute
error. See [`FLUSSO_DATI.md`](FLUSSO_DATI.md) for the reader's parsing and data
flow.

## Command line tools

In the package are included two command line tools:

+ **simbioReader** show the info of a specific SIMBIO-SYS data product;
+ **simbioInfo** show the information about phases, subphases and test of SIMBIO-SYS;

### simbioReader

```console
simbioReader sim_raw_sc_vihi_internal_cruise_ico6_2021-11-22_001.dat
```

will show the main information about the product.

Are avalaible some options:

- **--summarize**, **-s** displays product, target and filter summaries for products with filter metadata
- **--debug**, **-d** enables debug output
- **--verbose**, **-v** enables verbose output
- **--all** will display all the avilable information
- **--hk** wil display also the housekeeping
- **--detector** will display all the detector information
- **--data-structure** will display the data structure of the file
- **--filters** will display the information about the used filter if the data come from HRIC or STC, otherwise the option will be ignored

For any details you can use the option **--help**.

Use `simbioReader FILE --version` to display the software and data-model versions. The current CLI requires an existing `FILE` even with this option.

### simbioInfo

***simbioInfo*** tool is a command line interface (cli) with four subcommands:

- **filters** Show the definition of filter(s) of a specific channel
- **phases** Show the past mission phase(s);
- **subphases** Show the past mission subphase(s);
- **tests** Show the past SIMBIO-SYS performed test(s)

#### filters

The subcommand **filters** has an argument, the channel and an option ***--name***.

If the user provides only the channel, all the filters specific to that channel will be shown. 
If the user adds the --name option, only the selected filter will be displayed, if found.

A description of argument and options coul be required using the option ***--help***

##### Examples

```console
simbioInfo filters hric
```

will show all the filters of the channel HRIC

```console
simbioInfo filters hric -n pan-l
```

will show the *HRIC* filter with the name *PAN-L*



#### phases

The subcommand **phases** will display a table of all or filtered past mission phases.

The options are:

- **--all** Show all the past mission phases;
- **--date** Show all the phases for the given date;
- **--name** Show the phase with the given name.

##### Examples

```console
simbioInfo phases --all
```
will show all the past mission phases.


```console
simbioInfo phases --date 2024-04-08
```

will show the phase that include the day *2024-04-08*

```console
simbioInfo phases --name necp
```
will show the phase with the name *necp*

#### subphases

The subcommand **subphases** will display a table of all or filtered past mission subphases.

The options are:

- **--all** Show all the past mission subphases;
- **--date** Show all the subphases for the given date;
- **--name** Show the subphase with the given name.

##### Examples

```console
simbioInfo subphases --all
```
will show all the past mission subphases.

```console
simbioInfo subphases --date 2024-04-08
```

will show the subphase that include the day *2024-04-08*, the **ico11**.

```console
simbioInfo subphases --name ico9
```
will show the phase with the name *ico9*

#### tests

The subcommand **tests** will display a table of all or filtered SIMBIO-SYS tests.

The options are:

- **--all** Show all the past SIMBIO-SYS tests;
- **--date** Show all the SIMBIO-SYS tests for the given date;
- **--name** Show the SIMBIO-SYS tests with the given name;
- **--phase** Show the SIMBIO-SYS tests for the specific phase;
- **--subphase** Show the SIMBIO-SYS tests for the specific subphase.

> [!NOTE] 
> The tests name are not unique. Please use the option **--subphase** togeter the option **--name**

##### Examples

```console
simbioInfo tests --all
```

will show all the SIMBIO-SYS tests.

```console
simbioInfo tests -d 2024-04-08\ 2:00:00  
```

will show the test that SIMBIO-SYS was performing at 2:00:00 on 2024-04-08, the *Interference Test* in the subphase *ico11*

```console
simbioInfo tests --name hric\ functional --subphase ico9
```
will show the test with the name that contain the string *hric functional* performed during the subphase *ico9*


## Mission database

Mission phases may contain multiple non-contiguous intervals. `simbioInfo phases --all`
lists intervals chronologically. The bundled database includes the `fimgs`
subphase (Mercury First Images) and the `first_images` test, both covering
2026-10-18 from 07:00:00 to 21:00:00.

```console
simbioInfo subphases --name fimgs
simbioInfo tests --subphase fimgs
```

## Class Description

### Methods

+ **show()** display the main information related to the data file

```python
from rich import print

print(dat.show())
```
