ConSciR

ConSciR is an R package that provides data science tools for conservation science.

It includes functions for environmental applications, humidity calculations, sustainability metrics, engineering calculations, and data visualisations such as psychrometric charts. The toolkit is designed to assist conservators, scientists, and engineers in performing calculations, analysing data, and streamlining common tasks in cultural heritage conservation.

ConSciR is intended for:
- Conservators working in museums, galleries, and heritage sites
- Conservation scientists, engineers, and researchers
- Data scientists developing applications for conservation
- Cultural heritage professionals involved in preventive conservation
- Students and educators in conservation and heritage science programmes

The package is also designed to be:
- FAIR: Findable, Accessible, Interoperable, and Reusable
- Collaborative: enabling contributions, feature requests, bug reports, and
additions from the wider community

If using R for the first time, read an article here: Using R for the first time

Tools

Installation

You can install the development version of ConSciR from GitHub with:

install.packages("pak")
pak::pak("BhavShah01/ConSciR")

-or-

# install.packages("devtools")
devtools::install_github("BhavShah01/ConSciR")

Examples

This section demonstrates some common tasks you can perform with the ConSciR package.

library(ConSciR)
library(dplyr)
library(ggplot2)
# My TRH data
filepath <- data_file_path("mydata.xlsx")
mydata <- readxl::read_excel(filepath, sheet = "mydata")
mydata <- mydata |> filter(Sensor == "Room 1")

head(mydata)
#> # A tibble: 6 × 5
#>   Site   Sensor Date                 Temp    RH
#>   <chr>  <chr>  <dttm>              <dbl> <dbl>
#> 1 London Room 1 2024-01-01 00:00:00  21.8  36.8
#> 2 London Room 1 2024-01-01 00:15:00  21.8  36.7
#> 3 London Room 1 2024-01-01 00:29:59  21.8  36.6
#> 4 London Room 1 2024-01-01 00:44:59  21.7  36.6
#> 5 London Room 1 2024-01-01 00:59:59  21.7  36.5
#> 6 London Room 1 2024-01-01 01:14:59  21.7  36.2
# Peform calculations
head(mydata) |>
  mutate(
    DewP = calcDP(Temp, RH), 
    Abs = calcAH(Temp, RH), 
    LifeTime = calcLM(Temp, RH, EA = 100), 
    PI = calcPI(Temp, RH)
    )
#> # A tibble: 6 × 9
#>   Site   Sensor Date                 Temp    RH  DewP   Abs LifeTime    PI
#>   <chr>  <chr>  <dttm>              <dbl> <dbl> <dbl> <dbl>    <dbl> <dbl>
#> 1 London Room 1 2024-01-01 00:00:00  21.8  36.8  6.38  7.05     1.11  45.3
#> 2 London Room 1 2024-01-01 00:15:00  21.8  36.7  6.34  7.03     1.11  45.4
#> 3 London Room 1 2024-01-01 00:29:59  21.8  36.6  6.30  7.01     1.11  45.5
#> 4 London Room 1 2024-01-01 00:44:59  21.7  36.6  6.22  6.97     1.11  46.1
#> 5 London Room 1 2024-01-01 00:59:59  21.7  36.5  6.18  6.95     1.11  46.2
#> 6 London Room 1 2024-01-01 01:14:59  21.7  36.2  6.06  6.90     1.11  46.6
mydata |>
  mutate(DewPoint = calcDP(Temp, RH)) |>
  graph_TRH() + 
  geom_line(aes(Date, DewPoint), col = "cyan4") + # add dew point
  labs(title = "Room 1") +
  theme_bw()

graphTRH

mydata |>
  mutate(Mould = calcMould_Zeng(Temp, RH)) |>
  ggplot() +
  geom_line(aes(Date, RH), col = "royalblue3") +
  geom_line(aes(Date, Mould), col = "darkorchid", size = 1) +
  labs(title = "Mould Growth Rate Limits", 
       subtitle = "Mould growth initiates when RH goes above threshold",
       x = NULL, y = "%rh") + 
  theme_classic(base_size = 14)

mould


# Basic
mydata |>
  graph_psychrometric() 

psych_chart


# Customise 
mydata |>
  graph_psychrometric(
    data_alpha = 0.2,
    LowT = 8, 
    HighT = 28,
    LowRH = 30,
    HighRH = 70,
    y_func = calcAH
    ) +
  theme_classic()

psych_chart