# Looking for clues on a possible method or approach for clustering particle data in the form of pulse shapes

I'm a biologist by origin, and I'm asking this question to the math community to learn from the vast knowledge that I don't posses myself but is out there in the math field.

Edit: This question was originally posted on mathoverflow but moved to CrossValidated based on suggestions in the comments: enter link description here

This is a very general question, I know, but I'm also mostly seeking general, inspirational answers and clues to steer me in a new direction. (I'm pretty sure the moderators will have comments about this post, let's hope they are constructive, and perhaps suggestions on what tags to add).

Perhaps this is a bit of a wide net that I'm throwing, but I am not sure in what other way to start a thought process towards possible tracking down existing knowledge on the topic described below. Looking around on google and scientific literature has left me a bit lost as I stumble into too many information that is not what I'm actually looking for.

The question is the following: I am wondering if there are effective ways to compare particle data in the form of signal pulse scans, specifically to separate them into groups of particle types.

• For each particle, the full pulse of 6 channels is recorded.

• Pulses have a wide range in length (nr of datapoints) as particles can be between 0.2 and 2000 um, and pulses are recorded at a speed that comes down to ~10 points + 1 point for every 0.5 um length

• Pulses have a wide range in amplitude. Of the 6 signals, all can vary over several orders of magnitude in maximum value, and high values in 1 signal don't necessarily mean high values in others.

To give some visual information, pulseshapes can look like this:

or pretty much anything in between.

Currently I have done extensive work on clustering algorithms working on derived summary parameters of the pulses such as: Maximum (height) Total (area under the curve) length inertia centre of gravity etc.

This gives quite decent results, but looking at the pulses grouped within one cluster, very often there is still variation in pulses present in the clusters, such as the image below, and hence I wonder if there are ways to do cluster analysis on the actual full pulse shapes.

One approach which takes the full pulse into consideration is principal component analysis (PCA). In your case, you could form a single signal for each particle (by stacking the 6 pulses). Now you do PCA on your whole dataset of signals to find the principal directions, after that you can project each of your signals onto those directions. As part of the PCA process, you may discard directions in which there is very low variance, leading to dimensionality reduction, although this is not your main interest here. The components of the projected signals are the new features you are looking for.

Note that when you do PCA, the new features have no longer a simple meaning such as "maximum height" of "total area under the curve" because they have been obtained as projections onto uncorrelated directions which maximize the variance of your data.

One final thing: the directions found in PCA are not necessarily the best directions regarding class separation, you may want to look for linear discriminant analysis (LDA) for that.

• Wouldnt stacking them into 1 signal mean we loose the relevant differences between signals? I.e. high signal one plus low signal 5 would become the same as low signal 1 + high signal 5
– Mark
Mar 15, 2019 at 23:22
• @Mark I don't get your point, it's the same information contained in a single array instead of 6. Perhaps I was not clear, what I meant was to concatenate the 6 pulses to form 1 long signal (i.e. if each pulse has length N, then your new signal will have length 6*N). Clearly all the information is kept.
– Javi
Mar 16, 2019 at 14:26
• Ah ok, yes appending them to each other makes a lot more sense then stacking
– Mark
Mar 16, 2019 at 15:37

Of course there are approaches.

For example dynamic time warping can be used to measure the similarity of pulses.

Then you can use hierarchical clustering. You can cut the tree at different thresholds if a cluster is still too diverse.

• I'll look for reads on these approaches. If you have any good links, feel free to post them
– Mark
Mar 16, 2019 at 15:37