LoggerPro functions for use in Calculated Columns. I always Google for this information and can never find it online. It is hidden in the “Help” for LoggerPro (who would think to look there!?).
Functions
– Trigonometric functions will use degrees or radians as set in the Settings for (file name) in the File menu.
– For more information about SavitskyGolay methods see Numerical Recipes in C: http://libwww.lanl.gov/numerical/bookcpdf.html chapter 15
Function 
Description 
analysis > 


(“X”, startRow, endRow) Takes all columns named “X” and extracts startRow to endRow for each of those columns, appending the values into a single column. 

datasets(“X”) Appends the dataset names of all datasets that have a column named “X”. Use analysis and datasets together to create a graph (analysis on the vertical axis and datasets on the horizontal). for example, if you had 3 datasets as follows: DS1 DS2 DS3 X X Y 1 11 21 2 12 22and then added analysis(“X”, 1, 1) and datasets(“X”) you would get: datasets analysis 
beats per minute 
BeatsPerMinute(“Signal”, “Time”, intervalInSeconds, minPercent, maxPercent, noise) Returns the number of beats per minute of the values in “Signal” vs. “Time”. This function is similar to the rate function except that the interval given here is always in seconds and the returned value is always in minutes. For example, if “Time” is in seconds then: beatsPerMinute(“Signal”, “Time”, interval, min, max, noise) = 60 * rate(“Signal”, “Time”, interval, min, max, noise) 
blood pressure > 


The measured arterial pressure when the heart is at rest. “Pressure” and a “Time” column as inputs and return a single number. diastolic(“Pressure”, “Time”) “Pressure”: Pressure values from the BPS “Time”: Time the pressure values were recorded Returns the smaller number of blood pressure 

meanArterialPressure(“Pressure”, “Time”)
“Pressure”: Pressure values from the BPS 

Oscillations(“Pressure”, “Time”) “Pressure”: Pressure values from the BPS “Time”: Time the pressure values were recorded Returns the Oscillations of the peaks and valleys used to calculate systolic and other blood pressure values. 

OscillatoryPeaks(“Pressure”, “Time”) “Pressure”: Pressure values from the BPS “Time”: Time the pressure values were recorded Returns the peaks used to calculate systolic, diastolic, and pulse (the “high” values in “Oscillations”). 

pulse(“Pressure”, “Time”) “Pressure”: Pressure values from the BPS “Time”: Time the pressure values were recorded Returns the pulse using the inputs from the Blood Pressure Sensor (similar results, different algorithm as the other beatsperminute functions) 

systolic(“Pressure”, “Time”) “Pressure”: Pressure values from the BPS “Time”: Time the pressure values were recorded The measured arterial pressure when the heart contracts. Returns the larger number of blood pressure 
boolean > 
For the boolean functions a 1 is considered true, 0 false and anything else an invalid input 

AND(X, Y) return 1 if and only if X and Y are both 1 

NOT(X) return 1 if X is 0; 0 if X is 1 

OR(X, Y) return 1 if X or Y is 1 

XOR(X, Y) return 1 if X or Y is 1 but not both 
calculus > 


derivative(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers The numerical derivative is the weighted average of the slope of ‘n’ points around each point. You can set ‘n’ in Settings for (Name). If you don’t supply an “X” column, the program will find one. 

derivativeSG(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers SavitskyGolay derivative. Fits a polynomial to ‘n’ points around each point and computes the derivative of the polynomial at that point. You can set ‘n’ in Settings for (Name). If you don’t supply an “X” column, the program will find one. 

derivativeTimeShift(“Y”, “X”) Returns the derivative of “Y” with respect to “X”. This function is specifically designed to be used with photogate and picket fence data. The derivatives returned are adjusted to estimate values at the start of the timing interval, instead of the midpoint. For details see The Physics Teacher, Vol 35, April 1997, p. 220. The article written by William Leonard is entitled “The Dangers of Automated Data Analysis.” Average velocity during the time interval is equal to the instantaneous velocity at midpoint of the time interval. Where 

integral(“Y”,”X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers The numerical integral is the running sum of the areas of rectangles calculated by the midpoint rule. The i’th rectangle is (Yi – Y(i1)) / (Xi – X(i1)). If you don’t supply an “X” column, the program will find one. 

secondDerivative(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers Calculates the numerical second derivative of “Y” with respect to “X”. If you don’t supply an “X” column, the program will find one. 

secondDerivativeSG(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers SavitskyGolay second derivative. Fits a polynomial to ‘n’ points around each point and computes the second derivative of the polynomial at that point. You can set ‘n’ in Settings for (Name). If you don’t supply an “X” column, the program will find one. 

secondDerivativeTimeShift(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers Numerical timeshifted second derivative. Calculates the second numerical derivative of “Y” with respect to “X”. The values are shifted so that the derivatives are calculated at the midpoints between each two values. If you don’t supply an “X” column, the program will find one. 
collapse 
collapse(“X”) Returns a column with all nonnumerical cells (blanks and text) removed. 
collapseIndirect 
collapseIndirect(X, Y) Returns a column of only the rows in “X” corresponding to rows in “Y” that have valid numerical cells. 
constant 
Constant(x, num) x: A real number num: A real number or a column Generates a constant column filled with the value ‘x’. The number of values in the returned column is num, or if a column was passed in, the size of the passedin column. 
delta 
delta (“X”) “X”: A column of real numbers Returns a column of values where the i’th value is the i’th value in “X” minus the (i1)’th value in “X”. 
digital filtering > 


(“Y”, “X”, “ripple”, “freqCutoff”) “Y”: The data column to be filtered “X”: The associated time column for “Y” “ripple”: The ripple allowed in the passband “freqCutoff”: Cutoff frequency (3dB), in hertz Applies a Chebyshev lowpass filter. For “ripple”, enter a value that is a percent of the passband. To apply a Butterworth lowpass filter, set “ripple” to 0. 

(“Y”, “X”, “ripple”, “freqCutoff”) “Y”: The data column to be filtered “X”: The associated time column for “Y” “ripple”: The ripple allowed in the passband “freqCutoff”: Cutoff frequency (3dB), in hertz Applies a Chebyshev highpass filter. For “ripple”, enter a value that is a percent of the passband. To apply a Butterworth highpass filter, set ripple to 0. 

(“Y”, “X”, “lowFreq”, “highFreq”) “Y”: The data column to be filtered “X”: The associated time column for “Y” “lowFreq”: Low frequency cutoff (3dB), in hertz “highFreq”: High frequency cutoff (3dB), in hertz Ripple is automatically set to zero and is not adjustable. The function returns the signal with the frequencies outside the designated frequency range removed. 

(“Y”, “X”, “lowFreq”, “highFreq”) “Y”: The data column to be filtered “X”: The associated time column for “Y” “lowFreq”: Low frequency cutoff (3dB), in hertz “highFreq”: High frequency cutoff (3dB), in hertz Ripple is automatically set to zero and is not adjustable. The function returns the signal with the frequencies inside the designated frequency range removed. 

(“Y”, “X”, “decayConstant”) “Y”: The data column to be filtered “X”: The associated time column for “Y” “decayConstant”: A value in seconds that determines the decay of “Y” Applies an exponential time decay to the signal. 
ElectrophoresisInterpolate 
ElectrophoresisInterpolate(“Std. Dist”, “Std. BP”, “Dist”) “Std. Dist”: Distances from the standard “Std. BP”: Base Pair Counts from the standard “Dist”: Distances to interpolate Returns a column of base pair counts based on the Electrophoresis curve fit for “Std. Dist” vs. “Std. BP” given “Dist”. Will NOT work if curve fit has been deleted. This function is used automatically when doing a Gel Analysis (Electrophoresis). 
exp 
exp(“X”) “X”: A column of real numbers Returns the exponent, exp(x) = e^x, where e is the natural log base (2.17…). 
integer 
integer(“X”) Extracts the integral part of values in “X”. 
interpolate 
interpolate(“X”) Fills in missing values using linear interpolation. 
ln 
ln(“X”) “X”: A column of real numbers larger than 0 Returns the natural logarithm. If b = ln(a) then e^b = a (Where e is the constant 2.17…). 
log 
log(“X”) “X”: A column of real numbers larger than 0 (Log base 10) If b = log(a) then 10^b = a. 
modulo 
modulo(“X”, n) “X”: A column of integers n: An integer larger than 0 Returns the remainder of each of the numbers in “X” when divided by n. 
photogate > 


BlockedMidTimes(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Calculate the average times between blocked events from Gate 1 to Gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

BlockedToBlocked(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Returns a column of the times between successive blocked events in gate 1 and blocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

BlockedToUnblocked(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Returns a column of the times between successive blocked events in gate 1 and unblocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

Blocked to Unblocked MidTimes “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Calculate the average time between the blocked events in gate 1 and unblocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

DerivativeTimeShift (“Y”, “X”) Returns the derivative of “Y” with respect to “X”. This function is specifically designed to be used with photogate and picket fence data. The derivatives returned are adjusted to estimate values at the start of the timing interval, instead of the midpoint. For details see The Physics Teacher, Vol 35, April 1997, p. 220. Average velocity during the time interval is equal to the instantaneous velocity at midpoint of the time interval. Where 

PendulumPeriod(“Time”, “Gate1”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) Calculate the time between every other blocked event on Gate 1. If you don’t enter a “Time” column, the program will find one. 

secondDerivativeTimeShift(“Y”, “X”) “Y”: A column of real numbers “X”: Optional. A column of real numbers Numerical timeshifted second derivative. Calculates the second numerical derivative of “Y” with respect to “X”. The values are shifted so that the derivatives are calculated at the midpoints between each two values. If you don’t supply an “X” column, the program will find one. 

UnblockedToBlocked(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Returns a column of the times between successive unblocked events in gate 1 and blocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

UnblockedToUnblocked(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Returns a column of the times between successive unblocked events in gate 1 and unblocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

Unblocked to Blocked MidTimes “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Calculate the average time between unblocked events in gate 1 and blocked events in gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 

UnblockedMidTimes(“Time”, “Gate1”, “Gate2”) “Time”: Optional. A column of real numbers (the times of events) “Gate1”: A column of photogate states (1’s and 0’s) “Gate2”: Optional. A column of photogate states (1’s and 0’s) Calculate the average times between unblocked events from Gate 1 to Gate 2. If you don’t enter a “Time” column, the program will find one. If you don’t enter “Gate2”, “Gate1” will be used. 
rate 
rate(“Y”, “X”, t, m1, m2, n) “Y”: A column of real numbers “X”: Optional. A column of real numbers t: Optional. Time interval m1: Optional. Minimum threshold m2: Optional. Maximum threshold n: Optional. Noise threshold Returns the rate of “Y” with respect to “X”, where t is the time interval measured, m1 is min percentage threshold, m2 is max percentage threshold, and n is noise threshold. “X”, t, m1, m2, and noise are all optional with default values “X” is time column, t = 1/10 the range, m1 = 40%, m2 = 60%, and noise = 0. Details 
rotary motion > 


(“Data Column”, “Time Column”, “Min Percent”, “Max Percent”, “Time Interval”) “Data Column”: Data for which you want to calculate amplitude “Time Column”: Associated time column for “Data Column” “Min Percent”: Threshold used to detect valleys “Max Percent”: Threshold used to detect peaks “Time Interval”: Period of time over which amplitude is calculated (in the time units of the experiment) Calculates peak to peak amplitude. For Min and Max Percent, enter values between 0 and 100. Smaller values are more sensitive to noise and thus more sensitive to real cycles. Larger values are less sensitive to noise; too large of a value may filter out real cycles. “Time Interval” ends at the row at which the value is calculated (the current time). 

(“Data Column”, “Time Column”, “Min Percent”, “Max Percent”, “Time Interval”) “Data Column”: Data for which you want to calculate period “Time Column”: Associated time column for “Data Column” “Min Percent”: Threshold used to detect valleys “Max Percent”: Threshold used to detect peaks “Time Interval”: Period of time over which period is calculated (in the time units of the experiment) Calculates the period of an oscillating function. For Min and Max Percent, enter values between 0 and 100. Smaller values are more sensitive to noise and thus more sensitive to real cycles. Larger values are less sensitive to noise; too large of a value may filter out real cycles. “Time Interval” ends at the row at which the value is calculated (the current time). 
round 
round(“X”) “X”: A column of real numbers Round. Returns the closest integer to x. If x is equidistant to two integers, round(x) gives the largest of the two (e.g., round(0.5) = 1). 
smoothAve 
smoothAve(“X”) “X”: A column of real numbers Returns a column of moving averages of the values in “X”. The width of the “window” to use when averaging points can be set in Settings for (Name)… 
statistics > 


abs(“X”) “X”: A column of real numbers Absolute value. If x less than 0, then abs(x) = x. Otherwise, abs(x) = x. 

ceiling(“X”) “X”: A column of real numbers Returns the smallest integer larger than or equal to x. 

floor(“X”) “X”: A column of real numbers Returns the largest integer smaller than or equal to x. 

max(“X”) “X”: A column of real numbers Compares all the values in a single column and returns a single numberthe largest number in the column. 

max2(“X”, “Y”) “X”: column of real numbers “Y”: A column of real numbers or a single number. Compares all the values in a column against a real number (e.g max2(“X”, 5.1)) 

mean(“X”) “X”: A column of real numbers Arithmetic mean. Returns the sum of all the values in “X” divided by the number of values. 

Median(“X”). “X”: A column of real numbers If m = median(“X”), then half the numbers in “X” are greater than (or equal) to m, and half are less than or equal. 

min(“X”) “X”: A column of real numbers Compares all the values in a single column ,and returns a single numberthe smallest number in the column. 

min(“X”, “Y”) “X”: A column of real numbers “Y”: A column of real numbers or a single number Compares all the values in a column against a real number (e.g min2(“X”, 5.1)) 

NumRows(“X”) “X”: A column of real numbers Returns a single valuethe number of rows in the column. 

randInt(min, max, num): min: A real number max: A real number num: A real number or a column Random Integer. Returns a column of random integers between min and max (inclusive). The size of the returned column is num. If num is a column, then the size will be the number of rows in that column. 

randReal(min, max, num) min: A real number max: A real number num: A real number or a column Random Real. Returns a column of random real numbers between min and max (inclusive). The size of the returned column is num. If num is a column, then the size will be the number of rows in that column. 

stddev(“X”) “X”: A column of real numbers Standard Deviation. Returns a column representing the standard deviations of each of the numbers in a column. 
step 
step(start, increment, num, first, skip) start: Start value increment: Increment value num: Number of values to generate first: Optional. First nonempty row skip: Optional. Rows to skip between each value Generates a column “num” rows long starting with “start” and incrementing by “increment”. “num” can be a positive integer or a column name. Optional parameters: “first” is the first nonempty row and “skip” is the number of rows to skip between each value. 
StepColumnBase 
stepColumnBased(“X”, start, increment, first, skip) start: Start value increment: increment value first: Optional. First nonempty row skip: Optional. Row to skip between each value Generates a column based on nonempty values in column “X” starting with “start” and incrementing by “increment.” “First” is the first nonempty row and “skip” is the number of rows to skip between each value. 
subset 
subset(“X”, startRow, step) “X”: A column of real numbers startRow: An integer larger than 0 step: An integer larger than 0 Extract a subset. Returns a column extracted from “X” starting with ‘startRow’ by ‘step’. For example, subset(“X”, 1, 2) will get every second row of “X” starting with row 1. 
sum 
Sum(“X”) “X”: A column of real numbers Returns a column whose n’th value is the sum of the values in “X” from row 1 to n. 
sqrt 
Square root. “X”: A column of nonnegative real numbers. If x is the square root of y, then x*x = y. 
trigonometric > 


sin(“X”) “X”: A column of real numbers In a right triangle with angle between two sides ‘x’, sin(x) is the length of the opposite side divided by the hypotenuse. 

cos(“X”) “X”: A column of real numbers In a right triangle with angle between two sides ‘x’, cos(x) is the length of the adjacent side divided by the hypotenuse. 

tan(“X”) “X”: A column of real numbers In a right triangle with angle between two sides ‘x’, tan(x) is the length of the opposite side divided by the adjacent side. 

asin(“X”) “X”: A column of real numbers between 1 and 1 Arcsine function. asin(x) = the angle whose sine is x. 

acos(“X”) “X”: A column of real numbers between 1 and 1 Arccosine function. acos(x) = the angle whose cosine is x. 

atan(“X”) “X”: A column of real numbers Arctangent function. atan(x) = the angle whose tangent is x. The result will be between pi/2 and pi/2. 

sinh(“X”) “X”: A column of real numbers Hyperbolic sine. 

cosh(“X”) “X”: A column of real numbers Hyperbolic cosine. 

tanh(“X”) “X”: A column of real numbers Hyperbolic tangent. 
Value 
Value(n, “X”) n: Number of rows backwards (when n < 0) or forwards (n >0) in column “X” to extract a value from. “X”: Column from which to extract values . Create a new column from another column by extracting offset values. 
If data are imported from an experiment file, you may want to specify the independent column. For example, if the imported data included “time” in the first column but you wanted to calculate the derivative of pH with respect to volume, you have to define the derivative as derivative(“pH”,”Volume”).
This is very helpful. I have not found Logger Pro help to be at all informative about how these three methods differ.