Work through marine-review issues (#21-#28) - #29
Open
mdenolle wants to merge 13 commits into
Open
Conversation
…tracked issues All (REF) citations now point to verified, peer-reviewed sources already in references.bib/survey.bib (or newly added: Kidiwela2026, a co-authored Science Advances paper on causal/acausal dv/v averaging). Every MARINE REVIEW annotation is replaced with a comment linking to the GitHub issue that now tracks it (#21-#28), so review notes survive without cluttering the manuscript.
Replaced the "X, Y, and Z phenomena" placeholder with the actual components of volcano_truth() (seasonal oscillation, pre-eruptive inflation ramp, co-eruptive drop with partial recovery), read directly from synthetic_demo.py rather than guessed. Also verified the "one order of magnitude in standard deviation" claim by running deviations.multiverse(): per-day std across the 108 pipelines actually varies by a factor of ~4-5 (0.4% to 1.7%), not a full order of magnitude -- corrected the text. Separately, RMS-vs-truth across pipelines does span over two orders of magnitude (0.02% to 2.8%), which is now stated explicitly since it's the more striking, and correct, number.
… sensor network (closes #27) Added a paragraph at the top of sec:multiverse stating what the synthetic scenario actually represents, read from deviations.py/synthetic_demo.py rather than invented: a single station pair (not yet a network -- that's covered separately in sec:aggregation/sec:uncertainty), a coda band and window matched to shallow volcanic depths, an SNR=7 per-day correlation sampled every 3 days over 2.5 years, and a synthetic ground truth combining a seasonal cycle, pre-eruptive inflation, and a co-eruptive drop with partial recovery -- in the style of the Piton de la Fournaise deployment already cited in the introduction.
…uantified paragraph (closes #24) Each of the four sec:params choices now has its own paragraph stating the RMS error against the known synthetic ground truth, computed by re-running the actual measurement code behind Fig. fig:params (not estimated/guessed): - frequency band: matched-band RMS ~0.003-0.03%, mismatched ~0.10% (4-30x) - coda window: window adapted to band ~0.01%, mismatched fixed window ~3.8% -- ~400x, since the window then samples pure noise - reference: fixed-stack ~0.03%, Brenguier inversion ~0.04% (both keep the trend), 60-day moving reference ~0.16% (erases it) - stacking: 1-day ~0.044%, 10-day ~0.018% (best), 45-day ~0.031% (worse than 10-day despite more averaging, because it smears the step)
…ee (closes #22) Ran a clean, noiseless sweep of true dv/v (0-5%) through all seven NoisePy estimators (reusing fig_methods' measurement code) to pin down where each family's error crosses meaningful thresholds: - MWCS cycle-skips discontinuously between ~1.2% and ~1.4% true dv/v (error jumps from <0.1% to >0.5%) - stretching family (TS, WTS) stays below 0.01% error out to 5%; WCC stays below 0.1% - DTW/WTDTW develop intermittent large errors from ~3% onward - WCS degrades smoothly, crossing 1% error only beyond ~4%
closes #26) Re-ran fig_aggregation's six-component synthetic (three good, three poor SNR) to compute RMS error against the known truth for each aggregation recipe: unweighted Approach A ~0.31%, coherence-weighted Approach A ~0.08% (~4x better), Approach B (average images, then peak-pick) ~0.03% (~11x better than unweighted, ~3x better than weighted A). Added this where Approach A/B are actually defined (sec:aggregation) rather than at the stray forward-reference in sec:artifacts, which is removed. Drive-by fix: @hobiger14/@deplaen16 were dangling citation keys (no matching bib entry); renamed to the actual existing keys Hobiger2012 and DePlaen2016. Note these are topically imperfect matches for "coherence-based weighting" specifically -- worth a literature check before submission, flagging here rather than silently leaving broken.
…/early/moving-stack reference comparison (closes #25) - Points explicitly to the existing 103-study survey table (Appendix survey) as the literature-grounded range catalogue for frequency band, coda window, estimator, and uncertainty treatment, rather than duplicating it -- it already exists and is the empirical basis for the paper's central claim. - Connects the fixed-vs-adapted coda window result (already quantified in the frequency-band/window paragraphs) explicitly to this literature tension, since it's the fixed-vs-moving-window comparison this issue asked for. Did not add a "Takano et al." citation for this specific claim -- the earlier literature check could not confirm any existing bib entry actually makes this argument, and per the "only peer-reviewed, verified" constraint, an unverified citation was left out rather than guessed. - Added a new quantified comparison of reference *construction*: whole- period stack (~0.03%), early-period stack (~0.04%, ~1.5x worse from fewer averaged days), 60-day moving stack (~0.16%, erases the trend), and Brenguier-style joint inversion (~0.04%, preserves the trend) -- extending the fixed/moving/inversion comparison already in sec:params with the early-stack case.
…loses #23) network_dvv() now also returns the individual per-pair dv/v(t) curves and per-pair SNR (previously discarded after aggregation). New fig_network_pairs() plots those nine pair curves directly, styled after a basin-scale urban deployment like the San Gabriel Valley groundwater network (Clements2018) -- explicitly flagged as an illustrative geometry, not a literal reproduction of that network's station spacing, since the paper's full-text station distances weren't independently verifiable. Quantified the gap this fills: median per-day pair-to-pair range (~0.053%) is ~10x the coherence-weighted network SE (~0.005%) and ~3x the between-pair SD (~0.017%) -- the network aggregate's error bar describes the precision of the mean, not the dispersion of what individual pairs report, which Fig. fig:uncertainty alone doesn't show. New figure saved to literature/figs/demo_14_network_pairs.png and registered in FIGURES for regeneration via build_all().
#21) Added Table tab:results-synthesis right after the section intro, collecting the RMS-against-truth numbers already established and verified in this session's per-axis fixes (issues #22, #23, #24, #25, #26) into one at-a-glance table: estimator family, cross-component aggregation, network aggregation, frequency band, coda window, reference scheme, and stack length, each cross-referenced to the subsection where the number is derived from its own dedicated synthetic scenario. Distinguished explicitly from Table tab:bp-measure (sec:multiverse), which is a qualitative best-practice/deviation table driven by a different, single shared one-at-a-time sweep -- this new table is a quantitative synthesis specific to sec:results's own per-section numbers, not a duplicate.
@Okubo24 -> @Okubo2024 and @hobiger14 -> @Hobiger2012 (the same key-mismatch bug already fixed once in sec:aggregation, evidently not caught there for this second occurrence in the introduction). Confirmed via a real quarto/latexmk build: citation count of undefined references dropped from 4 to 2. Two pre-existing dangling keys remain unresolved and out of scope for this PR: @lobkis01 and @poupinet84 (methods intro, sec:methods-appendix) -- no matching bib entry exists for either, and I did not want to guess real citations for the stretching/WCC method-origin claims under time pressure. Flagging for a follow-up.
Rebuilt via paper/build.py after resolving the marine-review backlog (#21-#28) and the associated citation fixes, so the tracked .tex (synced to codameter-paper/Overleaf) matches the source .qmd. Verified the PDF builds cleanly and visually checked the new/changed pages (Table 2 synthesis table, Figure 4 per-pair network plot, Figure 5 parameter panels).
There was a problem hiding this comment.
Pull request overview
Updates the manuscript and supporting synthetic-demo figure generation to address the marine-review backlog (#21–#28) by adding quantified bias/variance statements, a synthesis table, and a new per-station-pair variability figure, along with bibliography/citation cleanups.
Changes:
- Adds a new “network pairs” figure (
demo_14_network_pairs) and exposes per-pair outputs from the network synthetic so per-pair dv/v spread can be shown alongside network aggregates. - Expands §results/§multiverse prose with quantified RMS/bias/variance statements and adds a synthesis table summarizing best/worst-case error across processing axes.
- Adds several literature references and updates citation keys used in the manuscript.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
src/codameter/synthetic_demo.py |
Returns per-pair network dv/v/SNR and adds fig_network_pairs() plus figure registry entry. |
paper/references.bib |
Adds new bib entries (ambient noise / scattering / paper-specific) to support new citations. |
paper/manuscript_marine.qmd |
Main source updates: synthesis table, quantified parameter impacts, new figure inclusion, multiverse scenario details, citation key updates. |
paper/manuscript_marine.tex |
Regenerated TeX output to keep Overleaf sync consistent with manuscript changes. |
Comments suppressed due to low confidence (7)
paper/manuscript_marine.qmd:296
- Several verb forms are incorrect here (e.g., "cycle-skips", "can alters"), which reads like typos in the manuscript.
coda and remain accurate for high SNR coda waves; the phase methods (MWCS) read a wrapped phase and may
cycle-skips, while the *same* cross-wavelet phase (WCS), once unwrapped in 2-D,
recovers the change. The warping methods (DTW, WTDTW) track but under-shoot the largest
strains. No estimator is simply "right" and choices in the estimators
can alters the \dvv\ measurements for larger strain changes.
paper/manuscript_marine.qmd:326
- This paragraph has multiple typos/grammar issues (e.g., "cross-componet", "a inter-station", "Each carry", "there scattering") that should be corrected to avoid them propagating into the PDF.
Each three-component seismic station (e.g., Z, N, E) carries 6 cross-componet correlations
(ZZ, NN, EE, ZE, ZN, NE), whether they are calculated at the single station or
a inter-station pair. Each carry a signature of the changes in velocity, components
may be dominated by Love or Rayleigh waves [@Lin2008; @Stehly2006], but there scattering and non-straight
ray path induce cross-component leakage between modes [@Hennino2001; @Margerin2019], and thus it is often
paper/manuscript_marine.qmd:331
- This continuation contains typos ("characteristixcs") and citation formatting that may not be parsed as intended by Pandoc (bare
@Keyoutside brackets).
assumed in practice that coda waves of cross-components with multi-scattering characteristixcs
(e.g., no clearly separated phases) are composed of "surface waves" with strong S-wave sensitivity.
Combining them together requires parameter choices, such as averaging them directly [@Liu2014],
or weighted (e.g., using coherence-based weighting @Hobiger2012, @DePlaen2016). Combining is another workflow
choice that can change both the value and the uncertainty
paper/manuscript_marine.qmd:517
- "an researchers' judgement" is ungrammatical and looks like a typo in the manuscript.
(Fig.~\ref{fig:branches}a); here preferring the branch of greatest change is
an researchers' judgement.
When instead both branches share the *same* change,
paper/manuscript_marine.qmd:522
- "both side exhibit" should be "both sides exhibit" (and there is an extra space before "different").
SNR falls (Fig.~\ref{fig:branches}b). When both side exhibit the same change
(sign, coherence) but with different magnitude, it is reasonable to use the
\dvv\ of greatest change given the already low sensitivity in coda waves [@Obermann2013].
paper/manuscript_marine.qmd:562
- "parametic" is a typo and should be "parametric".
The previous sections only identified single choices, but the overall research workflow
involves them all. We now estimate the combined effects of these parametic choices.
Starting from a single **best-practice baseline** (trace stretching, a
paper/manuscript_marine.qmd:622
- There is a sentence boundary/punctuation error here ("...]). are implemented ..."), which will render as a broken sentence in the manuscript. After fixing, regenerate
manuscript_marine.texso the Overleaf sync copy matches.
makes concrete. The baseline and deviation sets are the ones our survey extracts
from the literature (the cross-cutting rules of @Snieder2002 [@Clarke2011;
@Weaver2011; @Brenguier2014; @Wang2017; @Obermann2019]). are implemented in
`codameter.deviations`.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+1398
to
+1400
| sm = plt.cm.ScalarMappable( | ||
| cmap=cmap, norm=plt.Normalize(vmin=pair_snr.min(), vmax=pair_snr.max()) | ||
| ) |
Comment on lines
+243
to
+246
| Each of the parametric component is implemented in a single comprehensive package ``codameter`` | ||
| that borrows from ``msnoise`` [@Lecocq2014] and ``noisepy`` (@Jiang2020) to extract the | ||
| measurement of \dvv\ from the ambient noise monitoring workflow and generalize it | ||
| to any coda wave from repeated source-receiver paths. |
Comment on lines
+565
to
+567
| of @Brenguier2014 [@Weaver2011; @Clarke2011] as distilled in our survey), we change | ||
| every parameter at a time to a deviation from best practice documented in the literature | ||
| and measure the resulting error against the known truth (Fig.~\ref{fig:deviations}). The ranking is unambiguous: relative |
Figure 1 (fig_methods): added a new middle panel (b), a clean +/-5% true-dv/v sweep showing exactly where each estimator family breaks from the 1:1 line (MWCS cycle-skips near +/-1.5%, DTW/WTDTW past +/-3-4%, WCS degrades smoothly). Renumbered the old large-dv/v landslide panel to (c). Wired the existing quantified estimator- threshold paragraph (from #22) to reference this new panel directly. Figure 2 (fig_aggregation), all five reported issues: - unified y-limits between (a) and (b) so they're directly comparable and Approach A's real excursions (+/-1.24%) are no longer clipped/ saturated at the old +/-0.4% window - (b): added a real colorbar, reversed to magma_r so dark = high CC (matching the paper's convention), and changed the truth line from cyan to black to match panel (a) - simplified (a)'s title, dropping "3 defensible recipes" - fixed the B-uncertainty (peak-width) calculation: it was a second moment over the *entire* epsilon search range, which is dominated by the search window's width rather than the peak's actual sharpness -- nearly constant (~0.65-0.89%) regardless of day-to-day coherence. Replaced with a local half-max (FWHM-style) width around the peak, which now visibly varies over time in the shaded band. Updated both figure captions accordingly. Verified: 21/21 tests pass, PDF builds cleanly, both regenerated PNGs visually checked.
Splits the coda-window discussion out of Sec. Frequency band, reference and stacking into its own Sec. Coda window and its covariation with frequency band, per author review: the two parameters covary strongly (high frequency needs a much shorter window) and deserved a dedicated treatment and test, not a shared paragraph. Adds coda_window_from_envelope(): picks the coda window automatically by tracking a reference stack's envelope and stopping where it flattens onto the noise floor for a sustained interval, mirroring the group's practice of visually tracking the envelope rather than hand-tuning a window per band. New figure fig_window_envelope (demo_15) shows the detector applied blind to three bands: it correctly shrinks the window at high frequency (window ~14s vs ~29-37s at low/mid), and recovering dv/v with each band's own detected window beats one universal fixed window everywhere -- comparably at low frequency, ~93x better at high frequency, where the fixed window samples almost pure noise. Verified: 219/219 tests pass (1 unrelated skip), PDF builds cleanly, new section confirmed present in the rendered PDF.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves the full
marine-reviewbacklog (#21-#28), one issue per commit.Closed
volcano_truth()code; corrected the "one order of magnitude" spreadclaim after actually running
multiverse()(real spread: ~4-5x per-daystd, >2 orders of magnitude in RMS-vs-truth).
context and sensor network, read from the actual synthetic parameters.
their own quantified paragraph (RMS vs. truth, computed live).
cycle-skips between ~1.2-1.4% true dv/v; stretching family stays
<0.01% out to 5%).
CC-weighted ~0.08%, image-averaged ~0.03%).
ranges; added a whole/early/moving-stack reference-construction
comparison.
demo_14_network_pairs.png) showingindividual per-pair dv/v curves the network-aggregate view hides
(~10x wider spread than the network SE).
every axis in Section 3, cross-referenced to each subsection.
Also fixed along the way
(REF)placeholders resolved to verified, peer-reviewed citationsalready in the bibliography (or
Kidiwela2026, newly added -- a realco-authored Science Advances paper).
@Okubo24,@hobiger14) renamed to theirreal bib keys.
@lobkis01,@poupinet84) foundduring a full-build QA pass -- no verified bib entry exists for
either, left unresolved rather than guessed.
Verification
pixi run -e test test tests/test_synthetic_demo.py-- 21 passed.python paper/build.py-- builds cleanly to PDF; visually checked thenew/changed pages (synthesis table, new figure, parameter panels).
manuscript_marine.texis included so the Overleaf syncstays consistent.
Test plan