Skip to content

Vibroseis, record stacking and SNR (Phase 10) - #2

Merged
xrfez merged 10 commits into
mainfrom
feature/vibroseis-snr
Nov 11, 2026
Merged

xrfez merged 10 commits into
mainfrom
feature/vibroseis-snr

Conversation

@xrfez

@xrfez xrfez commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Phase 10 of the plan: vibroseis processing, record stacking and SNR measures, plus a header-description export for stacks. Review gate passed at 9d20b76: nim test, nim testRelease (release, danger) and ASan all green, and nim docs builds.

  • Stack export (D14): stackKeys, stackOverrides and maxFold, so a caller writes a stack through any parseSEG writer; writeStack is rebuilt on them, with unchanged output.
  • vibroseis/taper: sweep-end tapers in 9 window shapes, start and end lengths in ms; overlapping tapers are refused.
  • vibroseis/sweep: linear, dB/octave, dB/Hz, exponential and table sweeps, generated analytically at the data's dt.
  • vibroseis/pilot: one Pilot type for generated and recorded pilots; SEG-Y sweep header overrides; explicit band-limited resampling; instrument-filter matching; sub-sample t0.
  • vibroseis/correlate: FFT correlation and sweep deconvolution, normalized by pilot energy or peak; runs in the pool.
  • vibroseis/vstack: vertical and diversity stacks of repeated records, in any order.
  • continuous/slice: cuts continuous recordings into records at shot times. Gaps are zero-filled and reported; overlaps are trimmed and listed in the plan.
  • qc/snr: windowed per-trace SNR, and coherence SNR per gather. First-break confidence now uses the windowed kernel.
  • Docs: a Vibroseis guide page, the API reference and the README.

🤖 Generated with Claude Code

xrfez and others added 10 commits November 11, 2026 08:43
…built on them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… overlap refused)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e sweeps

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eep headers, resampling, instrument filters

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lized, sub-sample pilot start, pooled

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cords

RecordStack[T] accumulates traces of repeated sweeps into output rows in
any order (add, addRecord with a row map and an optional ChunkMeta), with
float64 sums and per-sample counts. rsDiversity weights each trace per
sample by 1/p or 1/p² of its centred window power (subtraction-free block
sums), with a floor and a clip relative to the trace's median window power.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rstbreak's confidence on the windowed kernel

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ot times

planSlices lays out every (receiver, shot) trace from segment rows
(times from TraceKeys.time or a caller array, receivers grouped per
rcvLine/rcvPoint/channel/component or caller ids), with overlaps (later
segment wins), off-grid timing issues, untimed rows and rowsNeeded.
extractInto stitches into a new tensor, zero-fills and reports gaps,
compares overlapping samples, optionally shifts sub-sample starts
(core/shift), and allocates nothing after reserve. sliceKeys gives the
output TraceKeys (D14); driftCorrectTimes/driftCorrectedTimes do a
linear clock-drift correction before planning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…m docs cannot build moved to tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…le sweep lengths, refuse unreachable pilot start times, workspace asserts; independent instrument-filter test, whole-sample t0 tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@xrfez
xrfez merged commit b46fe87 into main Nov 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant