I will go with the assumption that you will have lines between each of the markers (based on the graph found from table)
Names Default To Here(1);
dt = Open("$DOWNLOADS/reprex_table.jmp");
m = dt[0, "Smoother(Concentration)"];
peak = Max(m);
threshold = 0.01*peak;
low = Min(Loc(m > threshold));
high = Min(Loc(m[low + 1::N Rows(m)] < threshold) + low);
low_c = m[low-1::low];
low_t = dt[low-1::low, "Time"];
low_i = Interpolate(threshold, low_c, low_t);
high_c = m[high-1::high];
high_t = dt[high-1::high, "Time"];
high_i = Interpolate(threshold, Reverse(high_c), Reverse(high_t));
Show(high_i, low_i);
// Just for visualization
gb = dt << Graph Builder(
Size(528, 454),
Show Control Panel(0),
Variables(X(:Time), Y(:"Smoother(Concentration)"n)),
Elements(Line(X, Y, Legend(6)), Points(X, Y, Legend(7)))
);
rep = Report(gb);
rep[Framebox(1)] << Add Graphics Script(
Pen Color("Red");
Pen Size(1);
H Line(threshold);
Pen Color("Blue");
V Line(dt[low, "Time"]);
V Line(dt[high, "Time"]);
);
Eval(EvalExpr(
rep[AxisBox(1)] << Add Ref Line(
Expr(low_i),
"Dashed",
"Black",
Expr(Char(Round(low_i, 3))),
1,
1
)
));
Eval(EvalExpr(
rep[AxisBox(1)] << Add Ref Line(
Expr(high_i),
"Dashed",
"Black",
Expr(Char(Round(high_i, 3))),
1,
1
)
));
Eval(EvalExpr(
rep[AxisBox(1)] << Add Ref Line(
{Expr(low_i), Expr(high_i)},
"Solid",
"Green",
"FW0.1",
1,
0.25;
)
));
Write();
-Jarmo