Skip to content

Commit

Permalink
traits.build v2.0.0 release (#191)
Browse files Browse the repository at this point in the history
-    traits.build paper published in Sep 2024 in Ecological Informatics (DOI: 10.1016/j.ecoinf.2024.102773)
-    Minor updates to ontology, which is now version 1.0.0
-    Added standard error and standard deviation as value types
    Moved functions to austraits package and made austraits package a dependancy
    Renamed some of the functions that are now moved to austraits package
        bind_databases <-- build_combine
        convert_df_to_list <-- util_df_to_list
        convert_list_to_df1 <-- util_list_to_df1
        convert_list_to_df2 <-- util_list_to_df2
    Renamed functions still also assigned their old name, with a deprecation warning indicating the new name
    plot_trait_distribution_beeswarm, trait_pivot_longer and trait_pivot_wider had been in both austraits and traits.build packages and have now been removed from traits.build
    Import new austraits function flatten_database (had been suggested to be database_create_combined_table)
    Refactoring of test functions used by dataset_test
    Added tests using the dataset_test function, so it is checked explicitly by traits.build (run on Example datasets)
    Minor bug fixes

Issues addressed since last traits.build release:

Issue #150 & Issue #154 (error if no contexts)
Issue #179 (incorrect test written that flagged an error if input/output units identical)
Issue #171 (SE required as a value type)
Issue #131 (remove duplicate functions)
Issue #183 (deprecated function still being used)
Issue #185 (context table columns mis-ordered, dataset test failing)
Issue #143 (add dataset_test tests)
---------

Co-authored-by: Daniel Falster <[email protected]>
Co-authored-by: Fonti Kar <[email protected]>
Co-authored-by: Sophie Yang <[email protected]>
  • Loading branch information
4 people authored Dec 19, 2024
1 parent a09dea8 commit e15d2a1
Show file tree
Hide file tree
Showing 224 changed files with 68,012 additions and 2,191 deletions.
14 changes: 9 additions & 5 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Type: Package
Package: traits.build
Title: A workflow for harmonising trait data from diverse sources into a documented standard structure
Version: 1.1.0
Version: 2.0.0
Maintainer: Daniel Falster <[email protected]>
Authors@R: c(
person(given = "Daniel", family = "Falster", role = c("cre", "aut"), email = "[email protected]", comment = c(ORCID = "0000-0002-9814-092X")),
Expand All @@ -22,7 +22,8 @@ Depends:
lubridate,
readr,
stringr,
tidyr
tidyr,
austraits
Imports:
crayon,
git2r,
Expand All @@ -38,7 +39,8 @@ Imports:
testthat,
tibble,
whisker,
yaml
yaml,
lifecycle
Suggests:
furrr,
remake,
Expand All @@ -57,8 +59,10 @@ Suggests:
zip,
covr
Remotes:
richfitz/remake
richfitz/remake,
traitecoevo/austraits
Encoding: UTF-8
VignetteBuilder: knitr
RoxygenNote: 7.2.3
RoxygenNote: 7.3.2
Config/testthat/edition: 3
Roxygen: list(markdown = TRUE)
16 changes: 11 additions & 5 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
# Generated by roxygen2: do not edit by hand

export("%>%")
export(bind_databases)
export(build_add_version)
export(build_combine)
export(build_setup_pipeline)
export(check_pivot_duplicates)
export(convert_df_to_list)
export(convert_list_to_df1)
export(convert_list_to_df2)
export(dataset_build)
export(dataset_configure)
export(dataset_find_taxon)
export(dataset_process)
export(dataset_report)
export(dataset_test)
export(dataset_update_taxonomy)
export(db_traits_pivot_longer)
export(db_traits_pivot_wider)
export(flatten_database)
export(get_schema)
export(get_unit_conversions)
export(metadata_add_contexts)
Expand All @@ -32,7 +35,6 @@ export(metadata_exclude_observations)
export(metadata_find_taxonomic_change)
export(metadata_remove_taxonomic_change)
export(metadata_update_taxonomic_change)
export(plot_trait_distribution_beeswarm)
export(read_csv_char)
export(read_metadata)
export(util_df_to_list)
Expand All @@ -44,6 +46,11 @@ export(util_list_to_df1)
export(util_list_to_df2)
export(write_metadata)
export(write_plaintext)
importFrom(austraits,bind_databases)
importFrom(austraits,convert_df_to_list)
importFrom(austraits,convert_list_to_df1)
importFrom(austraits,convert_list_to_df2)
importFrom(austraits,flatten_database)
importFrom(crayon,"%+%")
importFrom(crayon,blue)
importFrom(crayon,green)
Expand All @@ -59,6 +66,7 @@ importFrom(dplyr,filter)
importFrom(dplyr,full_join)
importFrom(dplyr,mutate)
importFrom(dplyr,select)
importFrom(lifecycle,deprecated)
importFrom(lubridate,dmy)
importFrom(magrittr,"%>%")
importFrom(purrr,map_chr)
Expand All @@ -73,9 +81,7 @@ importFrom(stringr,str_remove_all)
importFrom(stringr,str_replace_all)
importFrom(stringr,str_squish)
importFrom(styler,style_text)
importFrom(testthat,compare)
importFrom(testthat,context)
importFrom(testthat,expect)
importFrom(testthat,expect_silent)
importFrom(testthat,local_edition)
importFrom(testthat,test_that)
Expand Down
18 changes: 18 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
# traits.build 2.0.0

- traits.build paper published in Sep 2024 in Ecological Informatics (DOI: [10.1016/j.ecoinf.2024.102773](https://doi.org/10.1016/j.ecoinf.2024.102773))
- Added standard error and standard deviation as value types
- Moved functions to austraits package and made austraits package a dependancy
- Renamed some of the functions that are now moved to austraits package
* `bind_databases` <-- `build_combine`
* `convert_df_to_list` <-- `util_df_to_list`
* `convert_list_to_df1` <-- `util_list_to_df1`
* `convert_list_to_df2` <-- `util_list_to_df2`
- Renamed functions still *also* assigned their old name, with a deprecation warning indicating the new name
- `plot_trait_distribution_beeswarm`, `trait_pivot_longer` and `trait_pivot_wider` had been in both austraits and traits.build packages and have now been removed from traits.build
- Import new austraits function `flatten_database` (had been suggested to be `database_create_combined_table`)
- Refactoring of test functions used by `dataset_test`
- Added tests using the `dataset_test` function, so it is checked explicitly by traits.build (run on Example datasets)
- Minor bug fixes
- Minor updates to ontology (now version 1.0)

# traits.build 1.1.0

- Small bugfixes in dataset_test
Expand Down
105 changes: 0 additions & 105 deletions R/pivot.R
Original file line number Diff line number Diff line change
Expand Up @@ -30,108 +30,3 @@ check_pivot_wider <- function(dataset) {
}

}


#' @title Pivot long format data into a wide format
#'
#' @description `trait_pivot_wider` "widens" long format data ("tidy data").
#'
#' Databases built with `traits.build` are organised in a long format where observations are on different rows and the
#' type of observation is denoted by various identifying columns (e.g `trait_name`, `dataset_id`,
#' `observation_id`, etc.).
#' This function converts the data into wide format so that each trait in its own column.
#'
#' @param traits The traits table from database (list object)
#' @return A tibble in wide format
#' @details `trait_pivot_wider` will return a single wide tibble; note that some meta-data columns
#' (unit, replicates, measurement_remarks, basis_of_record, basis_of_value) will be excluded to
#' produce a useful wide tibble.
#' @examples
#' \dontrun{
#' data <- austraits$traits %>% filter(dataset_id == "Falster_2003")
#' data # Long format
#' traits_wide <- trait_pivot_wider(data)
#' traits_wide # Wide format
#' }
#' @author Daniel Falster - [email protected]
#' @export
db_traits_pivot_wider <- function(traits) {

metadata_cols <- c("unit", "replicates", "measurement_remarks", "basis_of_value")

# A check for if there are more than 1 value_type for a given taxon_name, observation_id and method
check_value_type <- traits %>%
dplyr::select(dplyr::all_of(c(
"trait_name", "value", "dataset_id", "observation_id", "method_id", "method_context_id",
"repeat_measurements_id", "value_type"))) %>%
dplyr::group_by(
.data$dataset_id, .data$observation_id, .data$method_id,
.data$method_context_id, .data$repeat_measurements_id) %>%
dplyr::summarise(n_value_type = length(unique(.data$value_type))) %>%
dplyr::arrange(.data$observation_id) %>%
dplyr::filter(.data$n_value_type > 1)

if (nrow(check_value_type) > 1) {

traits %>%
tidyr::pivot_wider(
names_from = "trait_name",
values_from = "value",
id_cols = -dplyr::all_of(metadata_cols)
)

} else {

metadata_cols <- c(metadata_cols, "value_type")

traits %>%
tidyr::pivot_wider(
names_from = "trait_name",
values_from = "value",
id_cols = -dplyr::all_of(metadata_cols)
)
}

}


#' @title Pivot wide format data into a long format
#'
#' @description `trait_pivot_longer` "gathers" wide format data into a "tidy" format.
#'
#' This function converts the data into long format where observations are on different rows and the type of
#' observation is denoted by the `trait_name` column.
#' In other words, `trait_pivot_longer` reverts the actions of `trait_pivot_wider`.
#' @param wide_data Output from `trait_pivot_wider` (a tibble of wide data)
#' @return A tibble in long format
#' @details
#' `trait_pivot_longer` will return a tibble with fewer columns than the original traits table
#' The excluded columns include: "unit", "replicates", "measurement_remarks", "basis_of_record",
#' "basis_of_value" # Double check #TODO
#'
#' @examples
#' \dontrun{
#' data <- austraits$traits %>%
#' filter(dataset_id == "Falster_2003")
#' data # Long format
#' traits_wide <- trait_pivot_wider(data)
#' traits_wide # Wide format
#'
#' values_long <- trait_pivot_longer(traits_wide)
#' }
#' @author Daniel Falster - [email protected]
#' @author Fonti Kar - [email protected]
#' @export
db_traits_pivot_longer <- function(wide_data) {

# The start of the trait columns is after `original_name`
start_of_trait_cols <- which(names(wide_data) == "original_name") + 1

wide_data %>%
tidyr::pivot_longer(
cols = start_of_trait_cols:ncol(.),
names_to = "trait_name",
values_drop_na = TRUE
)

}
161 changes: 0 additions & 161 deletions R/plot.R

This file was deleted.

Loading

0 comments on commit e15d2a1

Please sign in to comment.