Skip to content

Commit

Permalink
add wavenumber adjustments
Browse files Browse the repository at this point in the history
  • Loading branch information
wincowgerDEV committed May 29, 2024
1 parent 5d7d51b commit b3e16cc
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 0 deletions.
3 changes: 3 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

S3method(adj_intens,OpenSpecy)
S3method(adj_intens,default)
S3method(adj_wave,OpenSpecy)
S3method(adj_wave,default)
S3method(ai_classify,OpenSpecy)
S3method(ai_classify,default)
S3method(as.data.frame,OpenSpecy)
Expand Down Expand Up @@ -76,6 +78,7 @@ export(OpenSpecy)
export(adj_intens)
export(adj_neg)
export(adj_res)
export(adj_wave)
export(ai_classify)
export(as_OpenSpecy)
export(as_hyperSpec)
Expand Down
44 changes: 44 additions & 0 deletions R/adj_wave.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#' @rdname adj_wave
#' @title Adjust wavelength to wavenumbers for Raman
#'
#' @description
#' Functions for converting between wave* units.
#'
#' @return
#' An \code{OpenSpecy} object with new units converted from wavelength
#' to wavenumbers or a vector with the same conversion.
#'
#' @examples
#' data("raman_hdpe")
#' raman_wavelength <- raman_hdpe
#' raman_wavelength$wavenumber <- (-1*(raman_wavelength$wavenumber/10^7-1/530))^(-1)
#' adj_wave(raman_wavelength, laser = 530)
#' adj_wave(raman_wavelength$wavenumber, laser = 530)
#'
#' @param x an \code{OpenSpecy} object with wavenumber units specified as
#' wavelength in nm or a wavelength vector.
#' @param laser the wavelength in nm of the Raman laser.
#' @param \ldots additional arguments passed to submethods.
#'
#' @author
#' Win Cowger, Zacharias Steinmetz
#'
#' @export
adj_wave <- function(x, ...) {
UseMethod("adj_wave")
}

#' @rdname adj_wave
#'
#' @export
adj_wave.default <- function(x, laser, ...) {
10^7*(1/laser - 1/x)
}

#' @rdname adj_wave
#'
#' @export
adj_wave.OpenSpecy <- function(x, laser, ...) {
x$wavenumber <- adj_wave(x$wavenumber, laser)
return(x)
}
40 changes: 40 additions & 0 deletions man/adj_wave.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions tests/testthat/test-adj_wave.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
data("raman_hdpe")
raman_wavelength <- raman_hdpe
raman_wavelength$wavenumber <- (-1*(raman_wavelength$wavenumber/10^7-1/530))^(-1)

test_that("adj_wave() handles input errors and inputs correctly", {
adj_wave(1:1000) |> expect_error()
adj_wave(raman_wavelength, laser = 530) |> expect_silent()
adj_wave(raman_wavelength$wavenumber, laser = 530) |> expect_silent()
#identical with different structured inputs.
expect_identical(adj_wave(raman_wavelength, laser = 530)$wavenumber,
adj_wave(raman_wavelength$wavenumber, laser = 530))
#expected values.
expect_identical(round(adj_wave(raman_wavelength, laser = 530)$wavenumber)[1:2], c(301,305))
#minimal shifts in wavenumbers
expect_true(all(abs(round(adj_wave(raman_wavelength, laser = 530)$wavenumber) - round(raman_hdpe$wavenumber))<=1))
})

0 comments on commit b3e16cc

Please sign in to comment.