# ACTRIS ACSM converter

Tool to convert PTRMS level 0 data to ACTRIS NASA Ames level 1 and 2 files. Supports regular annual lev1/2 products and NRT lev1b, lev2b automatically qualified products

## Informations

* dev repository: https://git.icare.univ-lille1.fr/dev/actris_ptrms_concentration_converter
* version: 0.0.0

## Copyright (©) 2024

* Université de Lille
* Centre national de la recherche scientifique (CNRS)

## Authors

* Scientific development : Valerie Gros, Lorna Foliot (LSCE/IPSL)
* Convertion algorithm development : Marc-Antoine Drouin, Christophe Boitel (LMD/IPSL)
* Software development : Nicolas Pascal, Aurélien Chauvigné (AERIS/ICARE)

## License

This project is licensed under the GNU AFFERO General Public License v3 - see the [LICENSE](LICENSE) file for details

## Prerequisites

- Python3
- numpy
- pandas
- scipy
- pysftp-extension
- click
- matplotlib
- pycurl
- toml
- tomli

## Install

### Environment

Code should be working with any python >= 3.8

- pip

    ```bash
    pip install -r requirements.txt
    ```

- conda

    ```bash
    conda create --name ptrms -c conda-forge --file requirements.txt python
    ```

### Configuration

Each station/instrument setup needs to be configured in instrument_configuration/<STATION>_PTRMS.json file.


## Running

### NRT submissions

#### raw -> lev0: runs at stations

```
* All under the hood

Usage: python3 src/uploader/uploader.py [options]

Options:
  -h, --help            show this help message and exit
  -a, --all-days        Reprocess the whole time serie
  -p PROD_ID, --prod-id=PROD_ID
                        Process only this product. All by default
  -v, --verbose         Print out processing informations
  -x, --overwrite       Overwrite existing files

* For a given hour

Usage: python3 src/uploader/hourly_uploader.py [options] <prod-id> <hour-id>

Args:
  <prod-id> : ID of the product to process, see product.cfg file for supported ones
  <hour-id> : hour to process, using the format YYYY-MM-DDThh

Options:
  -h, --help            show this help message and exit
  -o OUT_DIR, --out_dir=OUT_DIR
                        force a specific output directory
  -v, --verbose         Print out processing informations
  -x, --overwrite       Overwrite existing files

* For a a list of files

Usage: python3 src/converter/PtrmsConverter.py [options] <infiles>

Args:
  <infiles> : list of files to process

Options:
  -h, --help            show this help message and exit
  -p PROD_ID, --prod-id=PROD_ID
                        Process only this product. All by default
  -o OUT_DIR, --out_dir=OUT_DIR
                        force a specific output directory

```

### Input/Output format

* Inputs

PTR-MS measurements in CSV format with column names as shown in tests/SIRTA/inputs/

Valve status in CSV format with column names as shown in tests/SIRTA/inputs/

* Outputs

NASA Ames level 0 files as shown in tests/SIRTA/results

### NRT submissions

To enable NASA Ames file submission to NILU's server, an access to NILU's ftp is required.

User has to be defined in upload.cfg and corresponding private key added to .ssh/id_rsa.

File submission can be enable by setting enable_upload to 1.

#### RAW -> lev0

* Inputs

A lev0 ACTRIS NASA-AMES files, as shown in tests/SIRTA/results/

* Outputs

A lev0b ACTRIS NASA-AMES files, as shown in tests/SIRTA/results/