---
title: "(03) MNEMOS generated-data"
author: "Ezequiel Toum"
date: "`r Sys.Date()`"
output: 
 rmarkdown::html_vignette:
   toc: true
vignette: >
  %\VignetteIndexEntry{(03) MNEMOS generated-data}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r}
library(hydrotoolbox)
```

## MNEMOS generated data

Esta viñeta ejemplifica el uso del paquete para los datos generados por el software 
MNEMOS. Dichos registros provienen de la base de datos del SNIH, por lo que la única
diferencia radica en el formato de presentación de las series. 

***

This vignette exemplifies the use of the package for the data generated by the software
MNEMOS. These records come from the SNIH database, so the only difference lies 
in the presentation format of the series.

## Reading individual files

El formato de salida del software MNEMOS es el de una planilla excel que en sus pestañas 
contiene las distintas variables que registra una estación hidro-meteorológica. 

***

The output format of the MNEMOS software is that of an excel spreadsheet that in its sheets
it contains the different variables recorded by a hydro-meteorological station.


```{r read_fun, eval=FALSE, fig.width = 6, fig.height = 4}
# set path to file
path <- system.file('extdata', 'mnemos_guido.xlsx', package = 'hydrotoolbox') 

# as we can have multiple sheets, we can get an idea of its content
read_mnemos(path = path, get_sheet = TRUE)

# suppose that we want to read the daily minimum temperature
tmax_guido <- read_mnemos(path = path, by = 'day',
                          out_name = 'tmax(ºC)', sheet = '11413-017')

plot(x = tmax_guido[ , 1], y = tmax_guido[ , 2],
     col = 'dodgerblue', type = 'l', 
     xlab = 'date', ylab = 'Tmin(ºC)')

```

Si bien esta función resulta de gran utilidad, a medida que la cantidad de variables a analizar
crece, cargar estas tablas, ordenarlas y modificarlas, se vuelve tarea complicada. La solución
que ofrece **hydrotoolbox** es la de trabajar con los objetos y métodos que el paquete provee. 
En las siguientes secciones muestro cómo usarlos. 

***
 
Although this function is very useful, as the number of variables to be analyzed
grows, loading these tables, ordering and modifying them becomes a complicated task. 
The solution that **hydrotoolbox** offers is to work with the objects and methods 
that the package provides. In the following sections I will show you how to use them.


## Using classes and methods to build a meteorological station

Como menciono en los principios de diseño de este paquete (`vignette('package_overview', package = 'hydrotoolbox')`), los datos que se registran en las estaciones deben almacenarse en un mismo
objeto. Por ello primero habrá que crear dicho objeto (o estación hidro-meteorológica) y luego
usar `hm_build_generic()`, un método que permite cargar automáticamente al objeto todas las variables
que la estación real registra. 

***

As I mentioned in the design principles of this package (`vignette ('package_overview', package = 'hydrotoolbox')`), the data that is recorded in the stations must be stored in the same
object. For this reason, you must first create the object (or hydro-meteorological station) and
then use `hm_build_generic()`, a method that allows you to automatically load all variables to the object
that the real world station records.

```{r build, eval = FALSE, fig.width = 6, fig.height = 4}
# in this path you will find the raw example data 
path <- system.file('extdata', package = 'hydrotoolbox')

list.files(path)

# we load in a single object (hydromet_station class)
# the streamflow and water height series
guido <- 
  hm_create() %>% # create the met-station
  hm_build_generic(path = path,
                   file_name = 'mnemos_guido.xlsx',
                   slot_name = c('qd', 'evap', 'tair',
                                 'tmax', 'tmin', 'wspd'),
                   by = c('day', 'day', '6 hour', 
                          'day', 'day', '6 hour'), 
                   out_name = list(c('qd(m3/s)', 'flag'),
                                   c('e(mm/d)', 'flag'),
                                   c('tdb(ºC)', 'flag'),
                                   c('tmax(ºC)', 'flag'),
                                   c('tmin(ºC)', 'flag'),
                                   c('w(km/h)', 'flag')), 
                   FUN = read_mnemos, 
                   sheet = 1L:6L) 

# we can explore the data-set inside it by using hm_show
guido %>% hm_show()
```

Dado que la función constructora es la única que difiere de lo desarrollado para 
los datos del SNIH, recomiendo (re)visitar esta viñeta (`vignette('snih_arg', package = 'hydrotoolbox')`)

***

Since the constructor function is the only one that differs from what was developed for
SNIH data, I recommend (re)visiting this vignette (`vignette ('snih_arg', package = 'hydrotoolbox')`)

