Glad to hear that the add-in works on Mac.
 
You're right, I forgot to add the filter for "sprint" back in after making the add-in as generic as possible. 
 
The following code:
- uses the add-in to get fresh data from Strava
 - filters rows to include only "sprint" names
 - filters columns to match what was posted in "2022_03_28 Strava Sprinting Training Data Set 5 Runs" data set
 - identifies motifs
 - adds script to data table to chart the results
 
 
names default to here(1);
// if add-in is found, get fresh data from Strava, otherwise just use current data table
if( file exists("$ADDIN_HOME(com.caes.ngambles.strava-get-activities)\main.jsl"),
	include("$ADDIN_HOME(com.caes.ngambles.strava-get-activities)\main.jsl");
	wait(0);
);
// get reference to current data table
dt = current data table();
// Clean up data set for specific motif extraction challenge
if( contains( dt << get column names(string), "name"),
	r = dt << get rows where(
		!contains(lower case(:name), "sprint")
	);
	try(dt << delete rows(r));
);
colList = {
	"name",
	"altitude",
	"distance",
	"grade_smooth",
	"lat",
	"lng"
};
for( k = 1, k <= n items(colList), k++,
	try(dt << delete column( colList(k) ));
);
// Find Regions that match target shapes
dt << New Column( "Shape Match",
	Numeric,
	nominal,
	Formula(
		thresh = 12500;
		shapeList = {
			{221, 245, 289, 327, 374, 431, 477, 518, 535, 518, 491, 451, 401, 350, 304, 238, 178, 161, 156, 106,  96,  96,  87,  85,  81,  79,  76,  74,  73, 72, 73, 72, 72, 72, 72, 72, 71, 70, 70, 70}, 
			{306, 321, 347, 384, 429, 476, 515, 546, 579, 582, 576, 542, 489, 442, 375, 348, 295, 275, 242, 185, 152, 121, 106,  98,  93,  89,  89,  85,  84, 83, 82, 82, 81, 80, 79, 79, 78, 78, 78, 78}, 
			{357, 390, 401, 428, 475, 505, 558, 604, 619, 634, 634, 625, 581, 530, 483, 444, 378, 357, 324, 282, 214, 186, 162, 153, 137, 132, 124, 109, 104, 97, 94, 90, 90, 89, 88, 87, 87, 85, 85, 86}		
		};
		minErr = Empty();
		For( k = 1, k <= N Items( shapeList ), k++,
			err = 0;
			For( n = 0, n < N Items( shapeList[k] ), n++,
				For( m = 1, m <= N Items( shapeList[k] ), m++,
					err += (:watts[(Row() + m) - n - 1] - shapeList[k][m]) ^ 2
				);
				err /= N Items( shapeList[k] ) - 1;
				minErr = Minimum( minErr, err );
			);
		);
		If( minErr <= thresh,
			flag = 1,
			flag = 0
		);
		flag;
	)
);
// Run Region
dt << New Column( "Run Region",
	Numeric,
	"Continuous",
	Formula(
		regionCount = Summation( k = 0, 5, Lag( :Shape Match, k ) );
		If( regionCount < 6 & region Count > 0 & :Shape Match == 1,
			nearStart = 1,
			nearStart = 0
		);
		If( nearStart == 0,
			ans = :Shape Match;
			,
			ans = 0;
			If( :watts[row()] > 0 & :watts[row() +1] > 0,
				ans = :Shape Match;
			)
		);
		ans;
	)
);
// motif ID
dt << New Column( "Motif ID",
	Numeric,
	Nominal,
	Formula( 
		mID = 0;
		For( k = 1, k <= Row(), k++,
			If( :Run Region[k - 1] == 0 & :Run Region[k] == 1,
				mID++		
			)
		);
		If( :Run Region == 1, mID );	
	)
);
// row state formula column
dt << New Column("Row State Formula", 
	Row State, 
	Row State, 
	Formula(
		If(
			Is Missing(:Motif ID), 
			Row State() = Combine States(Hidden State(1), Excluded State(1)),
			Row State()		
		)		
	)		
);
// linear interpolation of zero values within motif ID
dt << New Column( "watts modified",
	Numeric,
	Continuous,
	Formula(
		If( Is Missing( :Motif ID ),
			Empty(),
			If( :watts > 0,
				:watts,
				rb = Row();
				ra = Row();
				For( k = Row(), k >= 1, k--,
					If( :watts[k] != 0,
						rb = k;
						Break();
					)
				);
				For( k = Row(), k <= N Rows(), k++,
					If( :watts[k] != 0,
						ra = k;
						Break();
					)
				);
				deltaPower = :watts[rb] - :watts[ra];
				deltaTime = rb - ra;
				:watts[rb] + (deltaPower / deltaTime) * (Row() - rb); 
			)
		)
	)
);
// rank timestamp, Motif ID - x axis values to help graph each motif
dt << New Column( "X",
	Numeric,
	Continuous,
	Formula( Col Rank( :timestamp, :Motif ID ) )
);
// graph results script added to data table
dt << new script(
	"Graph Results",
	names default to here(1);
	dt = current data table();
	
	nw = new window(
		"Motif Extraction Results",
		h list box(
			gb1 = dt << Graph Builder(
				Show Control Panel( 0 ),
				Show Legend( 0 ),
				Show Footer( 0 ),
				Variables(
					X( :Name( "X" ) ),
					Y( :watts modified ),
					Wrap( :Motif ID )
				),
				Elements( Line( X, Y, Legend( 6 ) ), Points( X, Y, Legend( 7 ) ) )
			)
			,
			gb2 = dt << Graph Builder(
				Show Control Panel( 0 ),
				Show Footer( 0 ),
				Variables( X( :X ), Y( :watts modified ), Overlay( :Motif ID ) ),
				Elements(
					Smoother( X, Y, Legend( 5 ), Lambda( 0.0014 ) ),
					Points( X, Y, Legend( 6 ) )
				)
			)
		)
	);
);
// run script to make graphs
// eval( dt << get property("Graph Results") );