knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The following R code is illustrative of how to use this software on our data to reproduce calculations. In essence, data and annotations are read in using the read_epg data function. The label_ana function is used to combine the raw data and annotation files. Then wave_topfreq and wave_volts are used to calculate frequency and relative amplitude of volts respectively.
library(epgminer) # The time needed to run this script is dependent on the number of datasets # load necessary packages library(tidyverse) library(epgminer) # Set working directory to folder containing dataset folders and ANA files folder <- "insert_here" setwd(folder) # list out ANA files label <- list.files(pattern = ".ANA") # Read all datasets into a list raw_dat <- list() lab_dat <- list() for (i in 1:length(label)) { # find specified raw hourly files set <- str_sub(label[i], end = -5) # read in the specified dataset raw_dat[[i]] <- paste(set, "/", list.files(paste(set, "/", sep = "")), sep = "") %>% map_df(~epgminer::read_epg(.)) } # for each dataset, combine raw and ANA for (i in 1:length(label)) { ana <- epgminer::read_epg(label[i], extension = "ANA") # lab dat contains fully labeled tibble - time, volts, wavform # to be used for metrics lab_dat[[i]] <- epgminer::label_ana(raw_dat[[i]], ana) # track when data has been labeled print(i) } # Now calculate top frequencies for each waveform for (i in 1:length(lab_dat)) { set <- str_sub(label[i], end = -5) # returns tibble with waveform, frequency columns # pds (subform independent) are on bottom out <- epgminer::wave_topfreq(lab_dat[[i]]) # save frequency results in a csv write.table(out, file = paste(set, "_frequencies.csv", sep = ""), row.names = FALSE, col.names = TRUE, sep = ",") # track table writing print(paste(set, "_frequencies.csv", sep = "")) } # voltage metrics ---- for (i in 1:length(lab_dat)) { set <- str_sub(label[i], end = -5) # returns tibble with waveform, duration columns # pds (subform independent) are on bottom out <- epgminer::wave_volts(lab_dat[[i]]) # save results in a csv write.table(out, file = paste(set, "_volts.csv", sep = ""), row.names = FALSE, col.names = TRUE, sep = ",") # track table writing print(paste(set, "_volts.csv", sep = "")) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.