# Model Data Format reader: `mdf_reader` toolbox

The `mdf_reader` is a [python3](https://www.python.org/) tool designed to read data files compliant with a user specified [data
model](https://cds.climate.copernicus.eu/toolbox/doc/how-to/15_how_to_understand_the_common_data_model/15_how_to_understand_the_common_data_model.html). It was developed to read the [IMMA](https://icoads.noaa.gov/e-doc/imma/R3.0-imma1.pdf) (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of:

- Data that is stored in a human-readable manner: “ASCII” format.
- Data that is organized in single line reports
- Reports that have a coherent internal structure and can be modelised.
- Reports that have a fixed width or field delimited types
- Reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited)

1. Clone the repository

```
git clone git@git.noc.ac.uk:brecinosrivas/mdf_reader.git
```
2. Install requirements (see [requirements.txt](https://git.noc.ac.uk/brecinosrivas/mdf_reader/-/blob/master/requirements.txt)).
   > More information about python environments [here](https://git.noc.ac.uk/brecinosrivas/guide-to-jupyter-notebooks).

3. Run a test:
```
import sys
sys.path.append('/path_to_folder_directory_containing_the_mdf_reader_folder/')
import mdf_reader
import matplotlib.pyplot as plt

data = mdf_reader.tests.read_imma1_buoys_nosupp()
```
4. Read imma data
```
imma_data = mdf_reader.read(filepath, data_model = 'imma1',sections = ['core','c1','c98'])
```

For more details on how to use the `mdf_reader` tool see the following [jupyter notebooks](https://git.noc.ac.uk/brecinosrivas/mdf_reader/-/tree/master/docs/notebooks).