Subscribe Bookmark RSS Feed

Peak Picking determining the start point of process curve.


Community Member


Feb 28, 2012

I am interested in overlaying process curve plots, but the starting points on my time based curves are not the same run to run.  I need a simple routine to adjust the curve so that the new curve will overlay the old one.  Currently the noisy data is adjusted by hand in text or Excel form and then plotted.  I have found some programs written for MatLab, but none for SAS.  Does any know of this type of routines written for SAS?


Community Trekker


Jun 23, 2011

I do not know if there are pre-developed routines, but determining the start of a process curve can be done in JMP using lag formulas and some manual effort.  If the actions will be done frequently enough to warrant development, it could be scripted.

From the example, it appears that you are trying to align process data from several runs, to compare features of the time trend.   I'll assume from the missing values in the first few rows, that this has already been done by hand, and you are trying to reduce the effort it takes to get the series aligned.

Starting from a series in "absolute time" (date time), in order to mark the rows with "relative time" (seconds since run started)....

The lag function can be used to compare rows, both previous(positive) and subsequent(negative lag) rows

If for example you are interested in aligning the two series on a feature where the point where the trend passes 30, and wish to capture the start of the cycle (assume 20 rows back is enough space)....

starting with

date time                     Temp

1/1/2010 12:00:00     21.3

1/1/2010 12:00:10     21.4

1/1/2010 12:00:20     21.6

long list..

add a formula column for "relative time" with a conditional... if the Temp 20 rows down is >=30 and temp 19 rows down <30, then this is the first row, so relative time=0  else, increment the previous relative time=lag(relative time, 1)+10

formula for column  "Rel_time"

If(Lag(:temp, -20) >= 30 & Lag(:Temp, -19) < 30, 0, Lag(:Rel_time, 1)+10)

through use of the lag function you can make derivatives, apply filtering/ smoothing.....

add another column to label the runs, set marker colors