You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.0 KiB
R
55 lines
2.0 KiB
R
source("/home/taha/chepec/chetex/common/R/common/ProvideSampleId.R")
|
|
|
|
Raman2df <- function(datafilename) {
|
|
## Description:
|
|
## Reads Raman data in ASCII format
|
|
## (wavenumber, counts)
|
|
## and returns a dataframe with the original data,
|
|
## as well as interpolated wavenumber and counts values
|
|
## (interpolated data is evenly spaced along x-axis)
|
|
## Usage:
|
|
## Raman2df(datafilename)
|
|
## Arguments:
|
|
## datafilename: text string with full path to experimental file
|
|
## Value:
|
|
## Dataframe with the following columns (and no extra attributes):
|
|
## $ sampleid : chr (id)
|
|
## $ wavenum : num (measure)
|
|
## $ counts : num (measure)
|
|
## $ wnum.interp : num (measure)
|
|
## $ cts.interp : num (measure)
|
|
## Note:
|
|
##
|
|
#
|
|
datafile <- file(datafilename, "r")
|
|
chifile <- readLines(datafile, n = -1) #read all lines of input file
|
|
close(datafile)
|
|
#
|
|
#####
|
|
sampleid <- ProvideSampleId(datafilename)
|
|
#
|
|
ff <- data.frame(NULL)
|
|
zz <- textConnection(chifile, "r")
|
|
ff <- rbind(ff, data.frame(stringsAsFactors = FALSE,
|
|
sampleid,
|
|
matrix(scan(zz, what = numeric(), sep = "\t"),
|
|
ncol = 2, byrow = T)))
|
|
close(zz)
|
|
names(ff) <- c("sampleid", "wavenum", "counts")
|
|
# Sort dataframe by increasing wavenumbers
|
|
ff <- ff[order(ff$wavenum), ]
|
|
# ... sort the rownames as well
|
|
row.names(ff) <- seq(1, dim(ff)[1])
|
|
# Add interpolated, evenly spaced data to dataframe
|
|
ff <- cbind(ff,
|
|
wnum.interp = approx(x = ff$wavenum,
|
|
y = ff$counts,
|
|
method = "linear",
|
|
n = length(ff$wavenum))$x,
|
|
cts.interp = approx(x = ff$wavenum,
|
|
y = ff$counts,
|
|
method = "linear",
|
|
n = length(ff$wavenum))$y)
|
|
##
|
|
return(ff)
|
|
} |