Module 08 · Geometric attributes
Dip is the first derivative of structure. Curvature is the second. Aberrancy, which some authors call flexure, is the third. It responds to the asymmetry of a flexure, which lets it place a single anomaly on a fault where curvature places two beside it, and its azimuth says which way the ground dropped. It behaves differently from everything before it: three principal values instead of two, and vectors instead of signed numbers.
The seismic line — click it to move the analysis point
Build the structure — results update as you drag
Work through the five steps in order, then try the exercises. Method and references are there when you want them.
The first two of these have already been built. Dip is how fast the reflector is changing depth. Curvature is how fast the dip is changing. Aberrancy is how fast the curvature is changing, and each further derivative moves the anomaly to a different place on the structure.
Watch the four panels line up. At the middle of a flexure the reflector is steepest, so dip peaks there. Curvature peaks at the two corners, one positive and one negative, where the bed turns into and out of the flexure. And aberrancy peaks between them, right at the middle, because that is where the curvature is changing fastest as it swings from one sign to the other.
That is why aberrancy is useful. A flexure gives curvature a pair of anomalies straddling it, which is awkward to pick, and gives aberrancy a single anomaly sitting exactly on it.
First, the layout of the model, because two faults crossing is easy to say and harder to picture. The map below is the structure the whole module works on: a broad regional fold with two faults cutting across each other at an angle. The teal line marks the seismic line in the header, and the circle marks the point everything is measured at — click the map to move it.
1 The structure in map view two faults, crossing
2 Total aberrancy over the same map both faults, both intact
Now the profile. These four panels run along the seismic line, and each one is the derivative of the one above it.
Module 02 swept the azimuth of a section and found a single dip vector. Module 05 swept it again and found two extremes, k₁ and k₂, always ninety degrees apart. Sweep it once more for aberrancy and you can get three.
The reason is the algebra. Apparent dip varies with azimuth as a first-order expression, apparent curvature as a second-order one, and apparent aberrancy as a third-order one — and a cubic can have three extrema. They are not evenly spaced, and there is no shortcut: where curvature hands you k₁ and k₂ through eigenvalues, no equivalent has been found for aberrancy, so the extrema have to be searched for. That is the same approach module 01 used to find dip.
Up to three, and often fewer. Click around the seismic line in the header and watch the count change. Where the structure is locally one-dimensional — a single fault, a simple flank — the cubic degenerates and you get one dominant direction. All three appear only where two structural trends interfere, such as near the crossing of the two faults, which is where the analysis point starts. On this surface that is genuinely rare: well under one point in a hundred shows three well-separated roots. That is worth knowing before you go looking for the intermediate and minimum volumes in your own data.
The reason is in the sweep below. Sweep the azimuth and plot what each attribute reads. Dip varies as a first-order expression and peaks once. Curvature varies as a second-order one and has two extremes, always ninety degrees apart. Aberrancy varies as a third-order one, and a cubic can turn three times.
Each derivative adds one more turn to the curve, and that is what "three principal aberrancies" refers to.
Now the same sweep on the real model, at the point you have selected. Move the point and watch the number of peaks change.
This is the sharpest break with curvature. k₁ and k₂ are signed numbers that come with a strike: positive for an anticline, negative for a syncline, and the strike is an orientation with no front or back — 10° and 190° are the same line.
Aberrancies are vectors. The magnitude is strictly positive, and the azimuth runs the full −180° to +180° because it is a genuine direction, not an orientation. It points across the flexure, from the up-thrown side toward the down-thrown one, so an aberrancy azimuth map tells you which way a fault drops. No curvature attribute can do that.
Left: what the azimuth means on a flexure. Right: the three principal aberrancies at one point, drawn as vectors from that point, and the single vector you get by adding them.
1 Total aberrancy magnitude always positive
2 Total aberrancy azimuth which way the structure drops
Having three roots raises an obvious question: which one do you look at? The natural answer — sort them by magnitude and display the largest — turns out to break in a way that is worth understanding, because it is a general hazard with any sorted attribute.
This model has two faults crossing each other, one stronger than the other. Wherever both are present, whichever is locally stronger claims the maximum root and the weaker one is demoted to the intermediate. AASPI's documentation names the consequence: a fault that is strongest in one place can be overwhelmed by a fault cutting across it somewhere else, and the maximum-aberrancy image then shows two disjoint faults, with the weaker one having moved onto the intermediate volume.
On this deliberately simple model the two faults are separated enough that the maximum map holds up fairly well — you can push it by setting both throws similar and watching the intermediate panel light up along stretches the maximum panel has dropped. The point stands regardless, and the fix costs nothing.
The fix is to stop sorting. Add the three aberrancy vectors together and display the sum: total aberrancy. Both faults stay continuous, because nothing has been thrown away.
1 Maximum aberrancy sorted by magnitude — faults break up
2 Intermediate aberrancy where the demoted fault went
3 Total aberrancy the vector sum — both faults intact
Module 05 walked a fault down in throw and watched coherence go blind while curvature kept seeing it. Aberrancy continues that sequence. Take the main fault's throw toward zero and compare all three.
A large offset breaks the reflector and coherence finds it. A smaller one only bends the reflector, and curvature finds that. Smaller still and the bend is gentle, but its asymmetry survives — the flexure still leans one way — and that is what aberrancy responds to.
Read the chart carefully, because it does not say what people often assume. Aberrancy does not have a sensitivity that curvature lacks. The two derivative curves sit on top of each other, and they have to: both are linear in the throw, so halving the throw halves both. Any chart of these two against throw is going to show one line. The comparison worth making is against coherence, the teal curve.
Coherence behaves differently at both ends. At large throws it saturates — the reflector is already fully broken, so making the fault bigger cannot break it further. At small throws it does the opposite and gives up completely: once the offset drops under the wavelet's resolution the traces either side of the fault look the same again, coherence returns to its no-fault value, and it reports nothing at all. Watch the teal line flatten off at the top of the chart and dive toward the floor at the left, while the two derivative lines climb in a straight line out of the left-hand corner.
Put the noise slider up to 6% and the gap opens properly. On perfectly clean data coherence never entirely stops responding, because there is nothing to hide a small offset in — given enough precision a semblance window can detect an arbitrarily small break. That limit is set by signal-to-noise rather than by the wavelet alone, so it only appears once there is noise to lose the signal in. At that setting the teal curve reads zero out to several meters of throw while curvature and aberrancy are already well up from the floor. That gap is the case for computing a derivative attribute: not that it is more sensitive at any given throw, but that it keeps working after coherence has stopped. Aberrancy's own advantages over curvature are different ones — where the anomaly sits and which way it points — and they are set out in Why it matters.
The comparison is measured on one fault on a flat regional: the crossing fault and the regional fold are set aside and the main throw is swept from 0 to 60 m, so that what the chart shows is the response to that fault alone. Those three sliders therefore do not move the curves — the vertical marker and the readouts below follow the throw, but the lines do not. Noise and operator length do move them, and are worth sweeping.
A sequence runs through this whole course. Coherence needs the reflector to be broken. Curvature only needs it bent. Aberrancy needs only that the bend be asymmetric — that the flexure leans one way rather than being a symmetric fold — and that is the faintest trace a fault leaves before it disappears entirely.
Compute. Twenty-seven second derivatives taken from the nine first derivatives curvature already needs, so roughly four times the run time of curvature on its own, plus the disk to hold three vector volumes instead of two scalar ones.
Noise, worse than anything else here. A third derivative multiplies the high wavenumbers three times over. Put the noise slider up with a short operator and aberrancy falls apart while curvature is still readable and coherence is barely affected. In practice it demands the cleanest dip volume of any attribute in this course, which is the last and strongest argument for the care modules 01 to 03 spent on getting dip right.
And a habit worth taking from step 4. Sorting components by magnitude breaks features wherever the ranking changes, and the break is an artifact of the sorting rather than the geology. That applies well beyond aberrancy — any time an attribute hands you a "maximum" volume made of several ranked pieces, ask what happened to the components that were not ranked first.
The model is one horizon carrying a broad regional fold, cut by two faults that cross each other at an angle, each with its own throw. Each fault is smeared over a flexure width rather than being a sharp step, because a fault below seismic resolution is imaged as a monoclinal flexure and that is precisely the target aberrancy is aimed at.
What is computed here. Apparent aberrancy along an azimuth φ is the third directional derivative of the surface, a(φ) = z_xxx c³ + 3 z_xxy c²s + 3 z_xyy cs² + z_yyy s³ with c = cos φ and s = sin φ. That is a cubic form, and the three principal aberrancies are its three extrema in azimuth, found here by sampling φ and refining — a search, because as the AASPI documentation notes, no eigenvalue formulation has been found for aberrancy the way it has for curvature. Each root is stored as a vector: magnitude |a| and azimuth φ. Total aberrancy is the vector sum of the three, which is what AASPI outputs by default as ab_tot_mag and ab_tot_azim; the individual roots are available there as the maximum, intermediate and minimum aberrancy magnitude and azimuth.
A note on the name. This attribute travels under two words, and they are not used consistently. Di and Gao (2016) and much of the seismic literature use flexure for the third derivative of structure, treating it as a synonym for aberrancy. A second usage, closer to where the term came from (Schot, 1978), keeps flexure for the bend itself — a second-derivative word, alongside curvature — and uses aberrancy for the rate at which the bend changes, which is the third derivative. This module follows the second usage, which is also the AASPI convention. The distinction is worth carrying: a paper or a software menu offering "flexure" may be offering either quantity, and the two differ by a derivative.
Where this departs from AASPI. This is a single horizon, so the derivatives are taken in map view rather than volumetrically, and the dip normalization that a full treatment carries is omitted. AASPI computes the 27 second derivatives volumetrically by differentiating the nine first derivatives already used for curvature, reflector convergence and reflector rotation, which is why aberrancy costs roughly four times what curvature does. Following Di and Gao (2016), the coordinate system is rotated to align with local reflector dip and azimuth before the extrema are sought, which is what made the search tractable; a fully volumetric version of their horizon-based method would require rotating a large data window about every voxel, so AASPI computes the derivatives in the original unrotated frame first and rotates afterward. The numbers in this module are therefore correct in their behavior and relative magnitudes rather than directly comparable with a production volume.
The step 5 comparison uses the same coherence and curvature machinery as modules 04 and 05, so the three curves are computed on identical data with identical operator lengths and are fair to compare with one another.
Next up
That is the last attribute in this set. Dip was estimated first, coherence asked whether the reflector is broken, curvature whether it is bent, aberrancy whether the bend leans, and amplitude curvature asked the bending question about brightness instead of shape. Every one of them was measured in the coordinate system the dip field defines, and inherits whatever that estimate got wrong. Any module in the set can be reopened from the index.
All modules