# Code by Rob Kass, revised by Patrick Foley # # Data from Ryan Kelly --- average of # 96 LFPs taken from Utah array in V1 # of anesthetized monkey while shown # blank screen (baseline condition). # Data are sampled at 1KHz for 30 seconds. # Figure 18.1 shows the spline-averaged trend of the first and # thirtieth seconds of data. We first read in the data and set up a # jpeg. lfp <- read.table("data/lfp-ryan.dat")[,1] jpeg("figure18.1.jpeg") time <- 1:1000 lfp.1stSecond <- lfp[1:1000] lfp.30thSecond <- lfp[29001:30000] # Fit a spline model with four knots, evenly spaced. library("splines") knotTimes <- c(200, 400, 600, 800) splineModel1 <- lm(lfp.1stSecond ~ ns(time, knots = knotTimes)) splineModel30 <- lm(lfp.30thSecond ~ ns(time, knots = knotTimes)) # Pull the fits, giving fit values for LFP at each time. splineFit1 <- splineModel1$fit splineFit30 <- splineModel30$fit # Set graphical parameters (the size of "labal" and "axis", and then # the style of the axis). par(cex.lab = 1.75) par(cex.axis = 1.5) par(las = 1) # Now set the graphical parameter to allow for two rows of graphs. par(mfrow = c(2,1)) par(mar = c(5, 5, 2, 2)) # For the first second, plot the data and then add lines at the spline fits. plot(time, lfp.1stSecond, type = "l", lwd = 2, xlab = "Time (ms)", ylab = "Relative Potential (mV)", main = "1st second") lines(time, splineFit1, col = "blue", lwd = 3) # And do the same for the 30th second. par(cex.lab=1.75) par(cex.axis=1.5) par(las=1) plot(time, lfp.30thSecond, type = "l", lwd = 2, xlab = "Time (ms)", ylab = "Relative Potential (mV)", main = "30th second") lines(time, splineFit30, col = "blue", lwd = 3) # With the jpeg finished, we close the graphical device. dev.off()