Welcome back to Basics of Biomechanics, a series of blog posts covering foundational topics in the field using practical, data-driven examples. This post gives an introduction to batch analysis of signals using a technique called time normalisation.
Biomechanical testing often involve protocols with repeated movement activities. For example, in a test involving running or walking, signals are often recorded for multiple gait cycles. In some cases, there may also be multiple participants and multiple tests per participant e.g., dozens or hundreds of gait cycles. A question naturally arises about how to best aggregate and visualise data containing many time segments of interest. In our ongoing example of countermovement jump analysis, we have recorded three consecutive jumps and have tagged the timeline with some events. We may want to visually compare the force signal segments for the jumps, but what is the best approach? The simplest way is to plot the signal as it was measured, with annotations for events to provide context.
The plot above is helpful in that one can get any easy sense of what happened “when” in the jump test e.g. there he third jump had a notably higher peak force after landing. However, time series plots have some drawbacks. Firstly, it is difficult to compare the shapes of force curves when they are side by side. Secondly, there is often a lot of “dead space” between the segments of interest (preparation before each jump and recovery after). Lastly, this approach is not practical or efficient when you have multiple recordings (files) to analyse. One way to improve the situation would be to crop the signal(s) into the relevant segments (i.e. starting at jump initiation and ending with landing) and then to overlay them on a new horizontal axis representing jump time instead of recording time.
Challenge #1: how would you go about cropping signals within a dataset in order to produce a plot like the one above? Which software tools would you use to do this efficiently?
With each force segment starting with jump initiation and ending with jump landing, it now becomes much more convenient to visually compare the shapes of the three force-time profiles. We can see that the curves have a similar shape, while it also becomes clear that Jump 3 has the highest peak value as well as the lowest minimum value between initiation and takeoff (the loading phase). We can also see that there are some shifts in the timing of the curves. Jump 2 in particular appears to have a temporal lag, with takeoff and landing occurring later than the other two jumps. However, when it comes to these horizontal (x-axis) differences between the curves, it is not clear whether they are due to real differences in the movement patterns or simply differences in movement speed. We can see that the jump durations were not identical (offsets between vertical red lines). In biomechanics, we attempt to reduce the effect of this problem using a mathematical resampling technique called time normalisation. Time normalisation involves creating a near-identical copy of each signal segment that is resampled to a normalised length of 100% (all segments are stretched/compressed to the same length). Each normalised curve is made up of a fixed number of points that we choose, irrespective of how many points each original segment contains. Time-normalised curves often contain 101 samples (0 – 100% time in increments of one). For longer movement phases or more rapidly changing signals, more samples can be used to avoid undersampling (loss of shape). For example, you may choose to use 1001 samples (still 0 – 100% time, but in increments of 0.1).
Challenge #2: when comparing the time-normalised curve above with the time segments in the previous plot, we see that the relative difference in takeoff timing has been significantly reduced. However, the timing differences of the minimum force values before takeoff have not significantly reduced. How would you explain that?
In the plot above, we can see that the three segments now begin and end at exactly the same points in the movement (all landings are now at 100%). In comparison to the absolute time segments, the time shifts between jumps are reduced. Interestingly, the takeoff points (vertical green lines) – which also need to be converted to normalised percentage values – are still slightly desynchronised. This makes sense, because the ratio between loading time and flight time can differ between jumps. However, if we are not interested in this ratio and want to focus on shape differences only during the loading phase, we can instead time-normalise the segments just for that sub-phase.
We can see that in the case of the plot above the force profiles demonstrate minimal phase shift in the final 10-15% of loading time. However, some notable timing differences still remain in the force profiles in the first 75% of the loading phase. This confirms that there are relative timing differences in the force-time curves during loading. It may be that the countermovement phase of the jump was performed at different speeds, or that the depth of the countermovements differed. Further analysis would be needed to discover the causes, either by including additional events (e.g. the Turn event) or by plotting the normalised displacement or velocity curves. The temporal differences could even be normalised by plotting the curves for sub-phases of loading time e.g. concentric or eccentric phase.
In some cases, it may be interesting to plot or analyse the average shapes of signal segments as well as the intra- or inter-participant variability at different points. Time normalisation also makes this possible because all the curves are exactly the same length, so we can calculate an average and standard deviation for each sample of normalised time. In the graph below, we see a common representation of this (mean ± 2SD) for the three jumps in our example.
Challenge #3: At 0%, 100% and approximately 25% of loading time in the curve above, the shaded area of the curve collapses down to negligible size. How would you explain this? Clue: each instance might be for a different reason
In some biomechanical analyses, multiple signals are time-normalised and plotted together in arrays of plots. The plot below shows a portion of a typical array of kinematics plots for a clinical gait analysis. Here the grey shaded curves are reference values (2 standard deviations about a mean curve) from a database of typically developed children. The red lines represent the left leg during left side gait cycles, and the green lines represent the right leg during right side gait cycles. The vertical lines represent the time normalised foot off event during the respective gait cycles.
There are many ways that one can use time-normalisation for biomechanical visualisations. The graph above illustrates how time-normalised curves can be used to compare left and right side asymmetries, as well as deviations from reference data of other people. Similarly, it is possible to plot two test sessions together to compare changes over time. In some cases, you may want to plot one time-normalised signal relative to another (coordination plots instead of signal-time plots), or to plot all the individual curves for multiple participants in an entire research study to visually identify outliers (very helpful when cleaning and/or checking data).
Time normalised signals can also be used for numerical analysis. With time-normalisation it becomes possible to perform calculations with signals which were measured at different frequencies, at different times (left vs right gait cycles) or even in different sub-phases. Besides performing basic element-wise arithmetics with time-normalised signals (addition, subtraction, multiplication etc), it has also become quite common to perform statistical comparisons of time-normalised signals in biomechanics. This topic is beyond the scope of this post, but the interested reader is encouraged to investigate Statistical Parametric Mapping (SPM analysis) for more details.
Signal segmentation is very commonly used in biomechanical analysis for analysing and comparing signals during a particular movement phase. This technique is particularly useful when visually inspecting multiple test sessions and/or participants for trends or outliers. It reduces time-shift when comparing movements performed at different speeds and makes it possible to calculate average segment signals, as well as signal variability at different points in the movement phase. As shown in this post, the choice of movement sub-phase for time-normalisation is very important because it can over- or under-emphasise temporal shifts.