Skip to content

Commit

Permalink
Import cookbook final version
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveViss committed Sep 5, 2024
1 parent 4e6aaef commit 5ce0bbf
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 13 deletions.
1 change: 1 addition & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Imports:
tidyselect (>= 1.2.1)
Suggests:
knitr,
readxl (>= 1.4.3),
mockery (>= 0.4.4),
rmarkdown,
testthat (>= 3.0.0),
Expand Down
122 changes: 109 additions & 13 deletions vignettes/articles/import-MET-THg-23-19.Rmd
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Importation des résultats de laboratoire dans la base de données intégrée"
title: "FR - Importation des résultats de laboratoire MET-THg-23-19"
author: "Steve Vissault"
date: "2024-08-01"
output:
Expand All @@ -10,8 +10,6 @@ output:

# Faire une sauvegarde de la base de données

Ca pourrait être utile si une erreur est faite.

```{r}
db_path <- "Z:/07-Données BD/Database/contaminants-rlavoie-eccc.sqlite"
Expand All @@ -27,7 +25,7 @@ file.copy(db_path, db_bak)
# Chargements des résultats du laboratoire

```{r}
lab_results_file <- "Z:/07-Données BD/DBs-to-integrate/MET-THg-23-19 - RALA01-2023.xlsx"
lab_results_file <- "Z:/03-Labo/Results Reports/À entrer dans la BD/MET-THg-23-19 - RALA01-2023.xlsx"
# Informations sur les échantillons
sampleInfoLab <- readxl::read_xlsx(lab_results_file, "SampleInfo")
Expand All @@ -42,6 +40,29 @@ measurementsLab <- readxl::read_xlsx(lab_results_file, "SampleData")
con <- toxbox::init_con()
```

# Injection des métadonnées sur le rapport et le projet

```{r}
report <- data.frame(
id_report = "MET-Thg-23-19",
id_project = "RALA01-2023",
report_date = "2024-07-31",
report_access_path = stringr::str_replace("Z:/03-Labo/Results Reports/À entrer dans la BD/MET-THg-23-19 - RALA01-2023.xlsx", "À entrer dans la BD", "Saisie dans la BD")
)
```

On valide si le projet existe déjà dans la base de données

```{r}
toxbox::search_tbl(con, "project", id_project = "RALA01-2023")
```

Il existe déjà dans la base de données. On peut donc importer les métadonnées du rapport qui seront attaché à ce projet.

```{r}
DBI::dbWriteTable(con, "report", report, append = TRUE)
```

# Préparation des données sur les échantillons

```{r}
Expand Down Expand Up @@ -69,14 +90,14 @@ measurements <- measurementsLab |> dplyr::select(
)
```

# Établir la correspondance avec les sites existants dans la base de données
# Établir la correspondance avec les sites existants

On valide si le ou les site(s) de collecte des échantillons existent dans la base de données

On isole dans un premier temps les sites présent dans les résultats envoyés par le laboratoire.

```{r}
(sitesLab <- dplyr::distinct(sampleInfo, Location, Latitude, Longitude))
(sitesLab <- dplyr::distinct(sampleInfoLab, Location, Latitude, Longitude))
```

On recherche dans la base de données les sites à l'aide de mots clés.
Expand Down Expand Up @@ -107,7 +128,7 @@ DBI::dbWriteTable(con, "sites", add_site, append = TRUE)
On vérifie que le site a bel et bien été ajouté dans la base de données.

```{r}
search_tbl(con, "sites", id_site = "Longue-Pointe-de-Mingan")
toxbox::search_tbl(con, "sites", id_site = "Longue-Pointe-de-Mingan")
```

```{r}
Expand All @@ -125,15 +146,90 @@ field_sample <- field_sample |>
On liste les espèces en premier les espèces présente dans les résultats de laboratoire.

```{r}
species <- data.frame(org_species = unique(field_sample$id_species)) |>
dplyr::mutate(
species_id = dplyr::case_when(
stringr::str_detect(id_site, "Ile a Calculot des Betchouanes") == TRUE ~ betchouanes_site_db$id_site,
.default = id_site
)
unique(field_sample$id_species)
```

On compare avec la liste des espèces présentes dans la base de données.

```{r}
DBI::dbReadTable(con, "species")
```

On créé un tableau avec les espèces qui ne sont pas présentes dans la base de données.

```{r}
new_species <- tibble::tribble(
~org_species, ~id_species, ~organism, ~genus, ~species, ~vernacular_fr, ~vernacular_en,
"Alose sp.", "SHSP", "Fish", "Alosa", "Alosa sp.", "Alose", "Shad",
"Gadidae sp.", "COSP", "Fish", "Gadidae", "Gadidae sp.", "Morue", "Cod",
"Lompenie tachete", "DASH", "Fish", "Gadidae", "Leptoclinus maculatus", "Lompénie tachetée", "Daubed shanny"
)
```

On ajoute ces espèces dans la base de données

```{r}
DBI::dbWriteTable(con, "species", dplyr::select(new_species, -org_species)
, append = TRUE)
```

On valide visuellement que les nouvelles espèces se retrouvent bien dans la base de données

```{r}
DBI::dbReadTable(con, "species")
```

On effectue la correspondance entre les codes espèces du rapport de laboratoire et ceux de la base de données.

```{r}
field_sample <- field_sample |> dplyr::mutate(
id_species = dplyr::case_when(
id_species == "Alose sp." ~ "SHSP",
id_species == "Capelan" ~ "CAPE",
id_species == "Gadidae sp." ~ "COSP",
id_species == "Lancon" ~ "SAND",
id_species == "Lompenie tachete" ~ "DASH",
.default = NA
)
) |> dplyr::filter(!is.na(id_species))
```

# Injection des mesures du laboratoire

Les étapes précédentes ont permis de mettre à jour les tables de références pour les sites et les espèces.

On peut maintenant procéder à importer les données sur les échantillons et les mesures.

## Field samples

```{r}
dplyr::select(field_sample, id_field_sample, collection_date, id_site, id_species, age, tissue) |>
dplyr::distinct() |>
(\(data) DBI::dbWriteTable(con, "field_sample", data, append = TRUE))()
```

## Lab samples

```{R}
dplyr::select(field_sample, id_lab_sample) |>
dplyr::distinct() |>
(\(data) DBI::dbWriteTable(con, "lab_sample", data, append = TRUE))()
```

## Lab field samples

Cette table effectue la liaison entre les échantillons de laboratoire et les échantillons de terrain.

```{R}
dplyr::select(field_sample, id_lab_sample, id_field_sample) |>
dplyr::distinct() |>
(\(data) DBI::dbWriteTable(con, "lab_field_sample", data, append = TRUE))()
```

## Lab measurements

```{R}
dplyr::select(measurements, id_lab_sample, id_analyte, value, is_censored = 0, percent_moisture = pmoisture) |>
dplyr::mutate(id_report = report$id_report) |>
(\(data) DBI::dbWriteTable(con, "lab_measurement", data, append = TRUE))()
```

0 comments on commit 5ce0bbf

Please sign in to comment.