Added the function Raman2df().
Note: There should be a possibility to supply (as an argument to Raman2df()) a custom sampleid which should then override the regexp- based algorithm (only if that argument was supplied).master
parent
3483065be8
commit
64774c079e
@ -0,0 +1,48 @@
|
|||||||
|
# Renishaw.R
|
||||||
|
# Functions to read data from the Renishaw Raman spectrometer
|
||||||
|
# Taha Ahmed, Feb 2011
|
||||||
|
|
||||||
|
# CONTENTS
|
||||||
|
# >>>> Raman2df
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
################### Raman2df #######################
|
||||||
|
##################################################
|
||||||
|
Raman2df <- function(datafilename) {
|
||||||
|
# Function description: for reading Raman spectrum into dataframe
|
||||||
|
#
|
||||||
|
datafile <- file(datafilename, "r")
|
||||||
|
chifile <- readLines(datafile, n = -1) #read all lines of input file
|
||||||
|
close(datafile)
|
||||||
|
#
|
||||||
|
#####
|
||||||
|
# A nice algorithm that extracts the filename from the datafilename argument
|
||||||
|
# and uses that as a sampleid in the returned dataframe
|
||||||
|
#####
|
||||||
|
rgxp.sampleid <- "[^/]*(?=\\.\\w*)" ## THIS REQUIRES perl=TRUE
|
||||||
|
# Regular expression that extracts the filename out of a full path.
|
||||||
|
# Matches and extracts everything from the last forward slash (assuming Unix slashes)
|
||||||
|
# up until a dot folllowed by an arbitrary number of alphanumeric characters.
|
||||||
|
sampleidmtch <- regexpr(rgxp.sampleid, datafilename, perl=TRUE)
|
||||||
|
# Check that there was a match
|
||||||
|
if (sampleidmtch < 0) {
|
||||||
|
# -1 means no match
|
||||||
|
sampleid <- datafilename
|
||||||
|
# If match was unsuccessful we use the argument as passed to this function as sampleid
|
||||||
|
}
|
||||||
|
sampleid <- substr(datafilename, sampleidmtch, (sampleidmtch + attr(sampleidmtch, "match.length") - 1))
|
||||||
|
#
|
||||||
|
ff <- data.frame(NULL)
|
||||||
|
zz <- textConnection(chifile, "r")
|
||||||
|
ff <- rbind(ff, data.frame(sampleid,
|
||||||
|
matrix(scan(zz, what = numeric(), sep = "\t"),
|
||||||
|
ncol = 2, byrow = T)))
|
||||||
|
close(zz)
|
||||||
|
names(ff) <- c("sampleid", "shift", "counts")
|
||||||
|
#
|
||||||
|
return(ff)
|
||||||
|
}
|
Loading…
Reference in New Issue