Complex Orthogonal Decomposition (C.O.D.) using Python

This paper introduces the Complex Orthogonal Decomposition (C.O.D.) method for extracting spatial and temporal modes from oscillatory signals, providing theoretical foundations and Python-based examples to demonstrate its effectiveness in analyzing spatio-temporal data where phase information is critical.

Marc Vacher, Stéphane Perrard, Sophie Ramananarivo

Published 2026-04-16
📖 5 min read🧠 Deep dive

Imagine you are watching a school of fish swim. To the naked eye, they look like a chaotic, wiggly mess. But if you could freeze time and look closely, you'd see that every fish is moving in a very specific, rhythmic pattern. The problem is, their bodies aren't just wiggling back and forth like a simple pendulum; the wave of motion travels down their bodies in complex ways.

Standard tools for analyzing waves (like a standard Fourier transform) are like trying to describe a complex painting using only straight horizontal and vertical lines. They work great for simple, repeating patterns, but they struggle with the messy, organic reality of a swimming fish or a sloshing wave in a tank. They force the data into a box that doesn't fit.

This paper introduces a new, smarter tool called Complex Orthogonal Decomposition (C.O.D.). Think of C.O.D. as a "magic decoder ring" for wiggly, moving things.

Here is how it works, broken down into simple concepts:

1. The "Ghost" Signal (The Hilbert Transform)

Real-world signals (like the height of a water wave) are just numbers going up and down. But waves have two hidden secrets: how big they are (amplitude) and where they are in their cycle (phase).

To see these secrets, C.O.D. creates a "ghost" version of the signal. It takes the real wave and adds a "shadow" version of itself that is shifted by 90 degrees.

  • Analogy: Imagine a dancer spinning. The real signal is the dancer's position. The "ghost" signal is the dancer's shadow on the wall. By looking at the dancer and the shadow together, you can see the full 3D rotation, not just the 2D movement back and forth. This "complex" signal allows the math to understand the direction the wave is moving.

2. The "Unmixing" Process (The Decomposition)

Once the signal is "ghosted," C.O.D. tries to break it apart into its simplest building blocks. It asks: "Can I describe this whole messy movement as a sum of a few simple, independent patterns?"

  • Spatial Modes (The Shape): These are the "frozen" shapes the wave makes. Is it a single bump? A double-hump? A cubic curve?
  • Temporal Coefficients (The Rhythm): These are the "timers" that tell the shapes how to move, grow, or shrink over time.

The Magic Trick: C.O.D. ensures that these shapes are orthogonal.

  • Analogy: Think of a piano. If you press the "C" key and the "E" key, they make a chord, but they are distinct notes. If you press two keys that are exactly the same, you just get a louder version of the same note. C.O.D. finds the "keys" (shapes) that are completely different from each other, so it can separate a complex chord (the fish swimming) back into its individual notes (the specific body waves).

3. The "Traveling Index" (Standing vs. Moving)

One of the coolest features of this method is the Traveling Index. This is a number between 0 and 1 that tells you what kind of wave you are looking at.

  • 0 (Standing Wave): Imagine a jump rope being shaken up and down. The rope goes up and down in place, but the "hump" doesn't move left or right. The index is 0.
  • 1 (Traveling Wave): Imagine a snake slithering. The wave moves from head to tail. The index is 1.
  • 0.5 (The Mix): Most real-world waves are somewhere in between. C.O.D. gives you a precise number to say, "This wave is 70% traveling and 30% standing."

What the Paper Demonstrates

The authors tested this "magic decoder" on three different scenarios to prove it works:

  1. The Fish Tank (Water Waves): They simulated waves in a tank. Even when two different waves were mixed together, C.O.D. instantly separated them, identified their shapes, and told them exactly how much energy each wave had. It was like separating a smoothie back into the original fruit.
  2. The Fading Wave: They looked at a wave that was slowly dying out (damping). Standard tools often get confused when a wave changes speed or size over time. C.O.D. handled it gracefully, correctly identifying that it was a single shape that was just getting quieter.
  3. The Chameleon Wave (Frequency Modulation): They created a wave that changed its rhythm constantly (like a siren going up and down in pitch). Even though the "music" was changing, the "shape" of the wave stayed the same. C.O.D. realized, "Hey, this is just one shape doing a complex dance," and didn't get tricked into thinking there were many different shapes involved.

Why Should You Care?

If you are a scientist studying fish swimming, ocean waves, or even how a bridge vibrates in the wind, you are dealing with signals that are messy and changing.

  • Old Way: You try to force the data into a simple box, and you lose information. You might miss the fact that a fish is swimming more efficiently because of a specific body curve.
  • C.O.D. Way: You let the data tell you its own story. It finds the hidden shapes and rhythms automatically, even if they are changing, fading, or mixing together.

The paper also provides Python code (a set of instructions for computers) so that anyone can use this tool. It's like giving everyone a new pair of glasses that lets them see the hidden structure in the chaos of the physical world.

In short: C.O.D. is a sophisticated way of taking a messy, moving picture and breaking it down into its cleanest, most understandable parts, telling you exactly what is moving, how it's moving, and where it's going.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →