Stack Method Comparison — linear / pws / tf-PWS Reference Stacks

This notebook builds a minimal MSNoise project and compares three stacking methods for the reference (REF) cross-correlation functions:

Refstack

stack_method

Reference

refstack_1

linear

arithmetic mean

refstack_2

pws

Schimmel & Paulssen (1997)

refstack_3

tfpws

Schimmel & Gallart (2007)

Both inter-station CC (classical cross-correlation between station pairs, ZZ component) and single-station AC (autocorrelation of each station’s Z component, using PCC to suppress the zero-lag spike) are computed through a single shared cc_1 step.

The final figures compare the three REF stacks:

  1. Time domain — normalised waveforms overlaid (one panel per pair)

  2. Frequency domain — amplitude spectrum (one panel per pair)

Prerequisites

  • MSNoise installed with tf-PWS support.

  • A one-day MiniSEED dataset for at least two stations. The classic MSNoise tutorial dataset (network YA, stations UV05, UV06, UV10, day 2010-09-01, PDF archive layout) is used by default.

0 · Imports

[1]:
%matplotlib inline
import os
import logging
import tempfile

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

from msnoise.core.db import connect, create_database_inifile
from msnoise.core.config import create_config_set, update_config
from msnoise.core.stations import update_station
from msnoise.core.workflow import (
    create_workflow_steps_from_config_sets,
    create_workflow_links_from_steps,
    get_workflow_steps,
)
from msnoise.msnoise_table_def import declare_tables, DataAvailability
from msnoise.results import MSNoiseResult

from msnoise.s01_scan_archive import main as scan_archive
from msnoise.s02_new_jobs import main as new_jobs
from msnoise.s02_preprocessing import main as preprocess
from msnoise.s03_compute_no_rotation import main as compute_cc
from msnoise.s04_stack_refstack import main as stack_refstack

logging.basicConfig(level=logging.WARNING)

1 · User Settings

[2]:
# ── Waveform archive ─────────────────────────────────────────────────────────
DATA_PATH      = r"C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data"
DATA_STRUCTURE = "PDF"          # "SDS" or "PDF"
NETWORK_CODE   = "YA"
CHANNELS       = "HHZ"

# ── Date range ───────────────────────────────────────────────────────────────
STARTDATE = "2010-09-01"
ENDDATE   = "2010-09-01"

# ── Stations (net, sta, lon°E, lat°N, elev_m) ────────────────────────────────
STATIONS = [
    ("YA", "UV05",  29.735,  -17.817, 1174.0),
    ("YA", "UV06",  29.785,  -17.827, 1162.0),
    ("YA", "UV10",  29.790,  -17.847, 1180.0),
]

# ── Signal processing ────────────────────────────────────────────────────────
CC_SAMPLING_RATE = 20.0   # Hz — resample target
MAXLAG           = 50.0   # s — short lag: captures AC reflections at 1–5 Hz
                           #     and near-station surface waves for CC pairs
CORR_DURATION    = 1800.0 # s — 30-min windows

# ── Filter ───────────────────────────────────────────────────────────────────
FREQMIN = 1.0   # Hz
FREQMAX = 5.0   # Hz

# ── PWS / tf-PWS parameters (shared by refstack_2 and refstack_3) ────────────
PWS_TIMEGATE   = 5.0   # s  — smoothing window for pws (< MAXLAG)
PWS_POWER      = 2.0   # exponent for coherence weight
TFPWS_NSCALES  = 20    # CWT scales spanning [FREQMIN, FREQMAX]

# ── Working directory ────────────────────────────────────────────────────────
WORK_DIR = None   # None → auto temp dir

2 · Create Project Directory and Database

[3]:
if WORK_DIR is None:
    WORK_DIR = tempfile.mkdtemp(prefix="msnoise_stackmethods_")
    print(f"Created temporary project directory: {WORK_DIR}")
else:
    os.makedirs(WORK_DIR, exist_ok=True)
    print(f"Using project directory: {WORK_DIR}")

os.chdir(WORK_DIR)

create_database_inifile(
    tech=1,
    hostname=os.path.join(WORK_DIR, "msnoise.sqlite"),
    database="", username="", password="", prefix="",
)

db = connect()
declare_tables().Base.metadata.create_all(db.get_bind())
print("Database created:", os.path.join(WORK_DIR, "msnoise.sqlite"))
Created temporary project directory: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm
Database created: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\msnoise.sqlite

3 · Create Config Sets

One configset per category. For refstack we create three — one per stack_method.

[4]:
SINGLE_CONFIGSET_CATEGORIES = [
    "global", "preprocess", "cc", "filter"
]

for cat in SINGLE_CONFIGSET_CATEGORIES:
    sn = create_config_set(db, cat)
    print(f"  {cat}_{sn} created")

# Three refstack configsets
ref_sn_linear = create_config_set(db, "refstack")
ref_sn_pws    = create_config_set(db, "refstack")
ref_sn_tfpws  = create_config_set(db, "refstack")

print(f"  refstack_{ref_sn_linear} ← linear")
print(f"  refstack_{ref_sn_pws}    ← pws")
print(f"  refstack_{ref_sn_tfpws}  ← tfpws")

db.commit()
  global_1 created
  preprocess_1 created
  cc_1 created
  filter_1 created
  refstack_1 ← linear
  refstack_2    ← pws
  refstack_3  ← tfpws

4 · Configure Global Parameters

[5]:
OUTPUT_FOLDER = os.path.join(WORK_DIR, "OUTPUT")

for k, v in {
    "output_folder": OUTPUT_FOLDER,
    "startdate":     STARTDATE,
    "enddate":       ENDDATE,
    "hpc":           "N",
}.items():
    update_config(db, k, v, category="global", set_number=1)
    print(f"  global.{k} = {v!r}")
  global.output_folder = 'C:\\Users\\tlecocq\\AppData\\Local\\Temp\\msnoise_stackmethods_7qiov6mm\\OUTPUT'
  global.startdate = '2010-09-01'
  global.enddate = '2010-09-01'
  global.hpc = 'N'

5 · Configure CC Step

A single cc_1 step computes both:

  • Inter-station CC (components_to_compute = "ZZ", cc_type = "CC")

  • Single-station AC (components_to_compute_single_station = "ZZ", cc_type_single_station_AC = "PCC")

whitening = "A" (auto) applies spectral whitening to inter-station CC but not to AC — the AC branch in s03 always starts from the bandpassed (_data_bp) copy of the data, never the whitened one. This is enforced by design in the code (lines 866–903 of s03_compute_no_rotation).

PCC for AC suppresses the zero-lag spike without whitening, making it the preferred AC algorithm for basin-depth imaging (Romero & Schimmel 2018; De Plaen et al. 2019).

[6]:
cc_params = {
    "cc_sampling_rate":  str(CC_SAMPLING_RATE),
    "maxlag":            str(MAXLAG),
    "corr_duration":     str(CORR_DURATION),
    # Inter-station CC: classical ZZ
    "components_to_compute": "ZZ",
    "cc_type":           "CC",
    "whitening":         "A",   # "A" = apply to CC/SC, skip AC by design
    "winsorizing":       "3.0",
    # Single-station AC: PCC on Z autocorrelation
    "components_to_compute_single_station": "ZZ",
    "cc_type_single_station_AC": "PCC",
    "keep_all":  "Y",
    "keep_days": "Y",
    "stack_method": "linear",
}

for k, v in cc_params.items():
    update_config(db, k, v, category="cc", set_number=1)

print("cc_1 configured:")
print(f"  CC  inter-station  ZZ  (whitening=A: spectral whitening applied)")
print(f"  AC  single-station ZZ  (PCC — zero-lag spike suppressed)")
db.commit()
cc_1 configured:
  CC  inter-station  ZZ  (whitening=A: spectral whitening applied)
  AC  single-station ZZ  (PCC — zero-lag spike suppressed)

6 · Configure Filter

[7]:
# Filter: enable both CC and AC bands
for k, v in {
    "freqmin": str(FREQMIN),
    "freqmax": str(FREQMAX),
    "CC": "Y",
    "SC": "N",
    "AC": "Y",
}.items():
    update_config(db, k, v, category="filter", set_number=1)

db.commit()
print(f"filter_1: {FREQMIN}{FREQMAX} Hz  (CC=Y, AC=Y)")
filter_1: 1.0–5.0 Hz  (CC=Y, AC=Y)

7 · Configure the Three Refstack Sets

[8]:
# Common to all three: full date range → use all available data
for sn in (ref_sn_linear, ref_sn_pws, ref_sn_tfpws):
    update_config(db, "ref_begin", STARTDATE, category="refstack", set_number=sn)
    update_config(db, "ref_end",   ENDDATE,   category="refstack", set_number=sn)
    update_config(db, "pws_power", str(PWS_POWER), category="refstack", set_number=sn)

# refstack_1 — linear mean
update_config(db, "stack_method", "linear", category="refstack", set_number=ref_sn_linear)
print(f"refstack_{ref_sn_linear}: linear  (arithmetic mean)")

# refstack_2 — phase-weighted stack (Schimmel & Paulssen 1997)
update_config(db, "stack_method",  "pws",        category="refstack", set_number=ref_sn_pws)
update_config(db, "pws_timegate",  str(PWS_TIMEGATE), category="refstack", set_number=ref_sn_pws)
print(f"refstack_{ref_sn_pws}: pws     (timegate={PWS_TIMEGATE}s, power={PWS_POWER})")

# refstack_3 — time-frequency phase-weighted stack (Schimmel & Gallart 2007)
update_config(db, "stack_method",  "tfpws",          category="refstack", set_number=ref_sn_tfpws)
update_config(db, "tfpws_nscales", str(TFPWS_NSCALES), category="refstack", set_number=ref_sn_tfpws)
print(f"refstack_{ref_sn_tfpws}: tfpws   (nscales={TFPWS_NSCALES}, power={PWS_POWER})")

db.commit()
refstack_1: linear  (arithmetic mean)
refstack_2: pws     (timegate=5.0s, power=2.0)
refstack_3: tfpws   (nscales=20, power=2.0)

8 · Configure DataSource and Stations

[9]:
DataSource = declare_tables().DataSource
ds = DataSource(
    name="local",
    uri=os.path.realpath(DATA_PATH),
    data_structure=DATA_STRUCTURE,
    auth_env="MSNOISE",
    network_code=NETWORK_CODE,
    channels=CHANNELS,
)
db.add(ds)
db.commit()

for net, sta, lon, lat, elev in STATIONS:
    update_station(db, net=net, sta=sta, X=lon, Y=lat, altitude=elev,
                   coordinates="DEG", used=1)
    print(f"  {net}.{sta}  ({lon:.3f}°E  {lat:.3f}°N)")

db.commit()
  YA.UV05  (29.735°E  -17.817°N)
  YA.UV06  (29.785°E  -17.827°N)
  YA.UV10  (29.790°E  -17.847°N)

9 · Build Workflow Graph

Topology: preprocess_1 cc_1 filter_1 refstack_1/2/3 stack and refstack are siblings (both children of filter), so no stack_1 is needed for this REF-only workflow.

[10]:
created, existing, err = create_workflow_steps_from_config_sets(db)
assert err is None, f"Steps error: {err}"
print(f"Workflow steps: {created} created, {existing} existing")

created_links, existing_links, err = create_workflow_links_from_steps(db)
assert err is None, f"Links error: {err}"
print(f"Workflow links: {created_links} created, {existing_links} existing")

steps = {s.step_name: s for s in get_workflow_steps(db)}
print("Steps:", sorted(steps.keys()))
Workflow steps: 7 created, 0 existing
Workflow links: 6 created, 0 existing
Steps: ['cc_1', 'filter_1', 'global_1', 'preprocess_1', 'refstack_1', 'refstack_2', 'refstack_3']

10 · Scan Archive and Seed Jobs

[11]:
scan_archive(init=True, threads=1)

# Update loc/chan on Station rows from DataAvailability
from sqlalchemy import text as _text
_db2 = connect()
for sta in _db2.query(declare_tables().Station):
    data = _db2.query(DataAvailability) \
        .filter(_text("net=:net")).filter(_text("sta=:sta")) \
        .group_by(DataAvailability.net, DataAvailability.sta,
                  DataAvailability.loc,  DataAvailability.chan) \
        .params(net=sta.net, sta=sta.sta).all()
    sta.used_location_codes = ",".join(sorted({d.loc  for d in data}))
    sta.used_channel_names  = ",".join(sorted({d.chan for d in data}))
_db2.commit(); _db2.close()

_db3 = connect()
n_da = _db3.query(DataAvailability).count()
print(f"DataAvailability rows: {n_da}")
_db3.close()

new_jobs(init=True)
2026-04-29 22:13:47.777165 msnoise [INFO]: *** Starting: Scan Archive ***
2026-04-29 22:13:47.779284 msnoise [INFO]: Will work on 1 thread(s)
2026-04-29 22:13:47.779284 msnoise [INFO]: Initializing: updating availability using the whole archive (should be run only once)
2026-04-29 22:13:47.784411 msnoise [INFO]: Will search for files between 2010-09-01 and 2010-09-01.
2026-04-29 22:13:47.791411 msnoise [INFO]: DataSource 'local' (C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data): 3 directories to scan
2026-04-29 22:13:47.791411 msnoise [INFO]: Scanning DataSource 'local' ...
2026-04-29 22:13:47.792856 msnoise [INFO]: Scanning 3 directories...
2026-04-29 22:13:47.796965 msnoise [pid 10336][DEBUG]: scanning dir C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV05/HHZ.D
2026-04-29 22:13:47.798010 msnoise [pid 10336][DEBUG]: Found 1 files in C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV05/HHZ.D
2026-04-29 22:13:47.965552 msnoise [pid 10336][DEBUG]: read file C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV05/HHZ.D\YA.UV05.00.HHZ.D.2010.244, id: YA.UV05.00.HHZ
2026-04-29 22:13:47.974918 msnoise [pid 10336][INFO]: C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV05/HHZ.D: Added 1 | Modified 0 | Unchanged 0
2026-04-29 22:13:47.974918 msnoise [pid 10336][DEBUG]: scanning dir C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV06/HHZ.D
2026-04-29 22:13:47.975951 msnoise [pid 10336][DEBUG]: Found 1 files in C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV06/HHZ.D
2026-04-29 22:13:47.988932 msnoise [pid 10336][DEBUG]: read file C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV06/HHZ.D\YA.UV06.00.HHZ.D.2010.244, id: YA.UV06.00.HHZ
2026-04-29 22:13:48.001659 msnoise [pid 10336][INFO]: C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV06/HHZ.D: Added 1 | Modified 0 | Unchanged 0
2026-04-29 22:13:48.002671 msnoise [pid 10336][DEBUG]: scanning dir C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV10/HHZ.D
2026-04-29 22:13:48.003682 msnoise [pid 10336][DEBUG]: Found 1 files in C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV10/HHZ.D
2026-04-29 22:13:48.015571 msnoise [pid 10336][DEBUG]: read file C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV10/HHZ.D\YA.UV10.00.HHZ.D.2010.244, id: YA.UV10.00.HHZ
2026-04-29 22:13:48.023722 msnoise [pid 10336][INFO]: C:\Users\tlecocq\AppData\Local\msnoise-testdata\msnoise-testdata\Cache\1.1\classic\data\2010/UV10/HHZ.D: Added 1 | Modified 0 | Unchanged 0
2026-04-29 22:13:48.024725 msnoise [pid 10336][INFO]: *** Finished: Scan Archive ***
2026-04-29 22:13:48.025732 msnoise [pid 10336][INFO]: It took 0.25 seconds
DataAvailability rows: 3
2026-04-29 22:13:48.077663 msnoise [pid 10336][INFO]: *** Starting: New Jobs (Workflow-aware) ***
2026-04-29 22:13:48.079660 msnoise [pid 10336][DEBUG]: Checking plugins' entry points
2026-04-29 22:13:48.084646 msnoise [pid 10336][INFO]: Found 1 preprocess workflow steps
2026-04-29 22:13:48.085644 msnoise [pid 10336][DEBUG]:   - preprocess_1 (ID: 2)
2026-04-29 22:13:48.086641 msnoise [pid 10336][INFO]: Scanning New/Modified files
2026-04-29 22:13:48.095757 msnoise [pid 10336][DEBUG]: Inserting/Updating 3 jobs
2026-04-29 22:13:48.131210 msnoise [pid 10336][INFO]: Inserted 6 jobs
2026-04-29 22:13:48.132213 msnoise [pid 10336][INFO]: *** Finished: New Jobs (Workflow-aware) ***
2026-04-29 22:13:48.137333 msnoise [pid 10336][DEBUG]: hpc=False: preprocess→cc propagation handled by propagate_downstream()
[11]:
6

11 · Run the Pipeline

No moving-stack step — stack_refstack reads directly from the daily CCFs written by compute_cc (when keep_days = Y).

[12]:
print("── preprocess ─────────────────────────────────────────────────────────")
preprocess()

print("── new_jobs (after preprocess) ────────────────────────────────────────")
new_jobs(after="preprocess")

print("── compute_cc (CC inter-station + PCC autocorrelation) ────────────────")
compute_cc()

print("── new_jobs (after cc) ────────────────────────────────────────────────")
new_jobs(after="cc")

print("── stack_refstack: linear ─────────────────────────────────────────────")
stack_refstack()

print("Done.")
── preprocess ─────────────────────────────────────────────────────────
2026-04-29 22:13:48.157122 msnoise [pid 10336][INFO]: *** Starting: Preprocessing Step ***
2026-04-29 22:13:48.208367 msnoise [INFO]: New PREPROCESS batch: pair=YA.UV05.00 n=3 group_by=day_lineage lineage=preprocess_1
2026-04-29 22:13:48.208367 msnoise [INFO]: Processing 3 jobs for step 'preprocess_1' on 2010-09-01
2026-04-29 22:13:48.225746 msnoise [pid 10336][DEBUG]: Processing stations (local, DataSource 'local'): ['YA.UV05.00', 'YA.UV06.00', 'YA.UV10.00']
2026-04-29 22:13:48.226750 msnoise [pid 10336][DEBUG]: *** Starting: preprocessing ***
2026-04-29 22:13:48.236596 msnoise [pid 10336][DEBUG]: YA.UV05.00.Z Reading 1 Files
2026-04-29 22:13:49.505097 msnoise [pid 10336][DEBUG]: YA.UV06.00.Z Reading 1 Files
2026-04-29 22:13:50.484331 msnoise [pid 10336][DEBUG]: YA.UV10.00.Z Reading 1 Files
2026-04-29 22:13:51.391050 msnoise [pid 10336][INFO]: Finished preprocessing
2026-04-29 22:13:51.555090 msnoise [pid 10336][INFO]: Saved 3 preprocessed file(s)
2026-04-29 22:13:51.561369 msnoise [pid 10336][INFO]: Creating CC jobs from completed preprocess jobs
2026-04-29 22:13:51.577091 msnoise [pid 10336][DEBUG]: Processing preprocess step: preprocess_1
2026-04-29 22:13:51.582316 msnoise [pid 10336][DEBUG]: Creating jobs for CC step: cc_1
2026-04-29 22:13:51.621439 msnoise [pid 10336][INFO]: *** Finished: Preprocessing Step ***
── new_jobs (after preprocess) ────────────────────────────────────────
2026-04-29 22:13:51.623517 msnoise [pid 10336][INFO]: *** Starting: New Jobs (Workflow-aware) ***
2026-04-29 22:13:51.627945 msnoise [pid 10336][DEBUG]: new_jobs --after preprocess: hpc=False, propagation is normally handled inline by worker scripts via propagate_downstream(). Running anyway for compatibility (e.g. manual re-runs, tests).
d:\pythonforsource\msnoise_stack\obspy\obspy\io\mseed\core.py:1034: UserWarning: The encoding specified in trace.stats.mseed.encoding does not match the dtype of the data.
A suitable encoding will be chosen.
  warnings.warn(msg, UserWarning)
2026-04-29 22:13:51.696565 msnoise [pid 10336][INFO]: Creating CC jobs from completed preprocess jobs
2026-04-29 22:13:51.698579 msnoise [pid 10336][DEBUG]: Processing preprocess step: preprocess_1
2026-04-29 22:13:51.703596 msnoise [pid 10336][DEBUG]: Creating jobs for CC step: cc_1
2026-04-29 22:13:51.728564 msnoise [pid 10336][INFO]: Propagation from category "preprocess" created 0 CC job(s)
── compute_cc (CC inter-station + PCC autocorrelation) ────────────────
2026-04-29 22:13:51.729598 msnoise [pid 10336][INFO]: *** Starting: Compute CC ***
2026-04-29 22:13:51.730602 msnoise [pid 10336][DEBUG]: Checking if there are jobs to do
2026-04-29 22:13:51.808528 msnoise [INFO]: New CC batch: pair=YA.UV05.00:YA.UV05.00 n=6 group_by=day_lineage lineage=preprocess_1/cc_1
2026-04-29 22:13:51.819902 msnoise [INFO]: New CC Job: 2010-09-01 (6 pairs with 3 stations)
2026-04-29 22:13:51.912768 msnoise [pid 10336][DEBUG]: Starting slides
2026-04-29 22:13:51.915894 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T00:00:00.000000Z - 2010-09-01T00:30:00.000000Z
2026-04-29 22:13:52.008701 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.008701 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.009733 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.020751 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T00:30:00.000000Z - 2010-09-01T01:00:00.000000Z
2026-04-29 22:13:52.046803 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.048119 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.048119 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.060433 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T01:00:00.000000Z - 2010-09-01T01:30:00.000000Z
2026-04-29 22:13:52.086603 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.087604 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.087604 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.100008 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T01:30:00.000000Z - 2010-09-01T02:00:00.000000Z
2026-04-29 22:13:52.125519 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.126526 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.126526 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.137263 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T02:00:00.000000Z - 2010-09-01T02:30:00.000000Z
2026-04-29 22:13:52.164874 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.165876 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.165876 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.178584 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T02:30:00.000000Z - 2010-09-01T03:00:00.000000Z
2026-04-29 22:13:52.206458 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.207776 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.207776 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.220279 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T03:00:00.000000Z - 2010-09-01T03:30:00.000000Z
2026-04-29 22:13:52.248299 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.248299 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.249303 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.260284 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T03:30:00.000000Z - 2010-09-01T04:00:00.000000Z
2026-04-29 22:13:52.287725 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.288723 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.288723 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.304296 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T04:00:00.000000Z - 2010-09-01T04:30:00.000000Z
2026-04-29 22:13:52.330725 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.331958 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.332963 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.344510 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T04:30:00.000000Z - 2010-09-01T05:00:00.000000Z
2026-04-29 22:13:52.372363 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.373444 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.374447 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.385918 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T05:00:00.000000Z - 2010-09-01T05:30:00.000000Z
2026-04-29 22:13:52.413445 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.413445 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.414524 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.427052 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T05:30:00.000000Z - 2010-09-01T06:00:00.000000Z
2026-04-29 22:13:52.453472 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.453472 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.454508 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.466951 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T06:00:00.000000Z - 2010-09-01T06:30:00.000000Z
2026-04-29 22:13:52.493536 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.494573 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.494573 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.505050 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T06:30:00.000000Z - 2010-09-01T07:00:00.000000Z
2026-04-29 22:13:52.531797 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.532829 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.532829 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.544778 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T07:00:00.000000Z - 2010-09-01T07:30:00.000000Z
2026-04-29 22:13:52.574814 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.574814 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.575848 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.588626 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T07:30:00.000000Z - 2010-09-01T08:00:00.000000Z
2026-04-29 22:13:52.616685 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.617886 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.617886 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.629343 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T08:00:00.000000Z - 2010-09-01T08:30:00.000000Z
2026-04-29 22:13:52.656968 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.657966 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.659107 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.671824 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T08:30:00.000000Z - 2010-09-01T09:00:00.000000Z
2026-04-29 22:13:52.701066 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.702061 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.702569 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.715854 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T09:00:00.000000Z - 2010-09-01T09:30:00.000000Z
2026-04-29 22:13:52.741333 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.742338 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.742338 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.753010 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T09:30:00.000000Z - 2010-09-01T10:00:00.000000Z
2026-04-29 22:13:52.779292 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.780296 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.781332 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.793657 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T10:00:00.000000Z - 2010-09-01T10:30:00.000000Z
2026-04-29 22:13:52.819908 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.819908 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.821003 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.833199 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T10:30:00.000000Z - 2010-09-01T11:00:00.000000Z
2026-04-29 22:13:52.860312 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.861321 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.862534 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.873253 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T11:00:00.000000Z - 2010-09-01T11:30:00.000000Z
2026-04-29 22:13:52.898627 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.899661 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.900707 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.911098 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T11:30:00.000000Z - 2010-09-01T12:00:00.000000Z
2026-04-29 22:13:52.937186 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.938343 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.939430 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.950186 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T12:00:00.000000Z - 2010-09-01T12:30:00.000000Z
2026-04-29 22:13:52.976558 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.977684 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.977684 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:52.988522 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T12:30:00.000000Z - 2010-09-01T13:00:00.000000Z
2026-04-29 22:13:53.015584 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.015584 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.016617 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.026827 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T13:00:00.000000Z - 2010-09-01T13:30:00.000000Z
2026-04-29 22:13:53.053616 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.054647 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.054647 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.065573 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T13:30:00.000000Z - 2010-09-01T14:00:00.000000Z
2026-04-29 22:13:53.091719 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.092756 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.092756 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.103434 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T14:00:00.000000Z - 2010-09-01T14:30:00.000000Z
2026-04-29 22:13:53.129519 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.130551 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.130551 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.140943 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T14:30:00.000000Z - 2010-09-01T15:00:00.000000Z
2026-04-29 22:13:53.167704 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.168749 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.168749 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.179546 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T15:00:00.000000Z - 2010-09-01T15:30:00.000000Z
2026-04-29 22:13:53.206047 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.207334 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.207334 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.218677 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T15:30:00.000000Z - 2010-09-01T16:00:00.000000Z
2026-04-29 22:13:53.246434 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.246434 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.247517 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.259616 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T16:00:00.000000Z - 2010-09-01T16:30:00.000000Z
2026-04-29 22:13:53.285576 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.286609 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.287811 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.299459 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T16:30:00.000000Z - 2010-09-01T17:00:00.000000Z
2026-04-29 22:13:53.325969 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.326966 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.327500 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.337008 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T17:00:00.000000Z - 2010-09-01T17:30:00.000000Z
2026-04-29 22:13:53.363633 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.364792 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.364792 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.376589 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T17:30:00.000000Z - 2010-09-01T18:00:00.000000Z
2026-04-29 22:13:53.402298 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.403586 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.403586 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.413989 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T18:00:00.000000Z - 2010-09-01T18:30:00.000000Z
2026-04-29 22:13:53.441000 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.442007 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.443011 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.452854 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T18:30:00.000000Z - 2010-09-01T19:00:00.000000Z
2026-04-29 22:13:53.479257 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.480597 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.480597 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.492613 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T19:00:00.000000Z - 2010-09-01T19:30:00.000000Z
2026-04-29 22:13:53.519260 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.519260 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.520263 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.530326 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T19:30:00.000000Z - 2010-09-01T20:00:00.000000Z
2026-04-29 22:13:53.556691 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.557698 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.557698 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.569626 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T20:00:00.000000Z - 2010-09-01T20:30:00.000000Z
2026-04-29 22:13:53.596396 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.597425 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.597425 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.608394 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T20:30:00.000000Z - 2010-09-01T21:00:00.000000Z
2026-04-29 22:13:53.635497 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.635497 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.636533 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.647273 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T21:00:00.000000Z - 2010-09-01T21:30:00.000000Z
2026-04-29 22:13:53.673314 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.674346 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.674346 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.684820 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T21:30:00.000000Z - 2010-09-01T22:00:00.000000Z
2026-04-29 22:13:53.711612 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.711612 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.712643 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.724539 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T22:00:00.000000Z - 2010-09-01T22:30:00.000000Z
2026-04-29 22:13:53.751601 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.752606 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.752606 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.763086 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T22:30:00.000000Z - 2010-09-01T23:00:00.000000Z
2026-04-29 22:13:53.789161 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.790513 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.790513 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.802015 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T23:00:00.000000Z - 2010-09-01T23:30:00.000000Z
2026-04-29 22:13:53.828789 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.828789 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.829825 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.841463 msnoise [pid 10336][DEBUG]: Processing 2010-09-01T23:30:00.000000Z - 2010-09-01T23:59:59.950000Z
2026-04-29 22:13:53.861796 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV05.00+YA.UV05.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.863112 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV06.00+YA.UV06.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:53.863112 msnoise [pid 10336][DEBUG]: CCF ID: YA.UV10.00+YA.UV10.00+ZZ+filter_1+2010-09-01
2026-04-29 22:13:54.068460 msnoise [INFO]: [--after cc] active cc_steps=1 active stack_steps=0
2026-04-29 22:13:54.068460 msnoise [WARNING]: [--after cc] No active STACK steps found. Check WorkflowStep.category values (stack vs stacking).
2026-04-29 22:13:54.094461 msnoise [INFO]: [--after cc] desired REFSTACK REF jobs: 18
2026-04-29 22:13:54.099561 msnoise [INFO]: [--after cc] REFSTACK jobs: created=18, bumped_to_T=0
2026-04-29 22:13:54.100599 msnoise [INFO]: Job Finished. It took 2.28 seconds (preprocess: 0.09 s & process 2.19 s)
2026-04-29 22:13:54.104087 msnoise [INFO]: *** Finished: Compute CC ***
── new_jobs (after cc) ────────────────────────────────────────────────
2026-04-29 22:13:54.106396 msnoise [INFO]: *** Starting: New Jobs (Workflow-aware) ***
2026-04-29 22:13:54.109965 msnoise [pid 10336][DEBUG]: new_jobs --after cc: hpc=False, propagation is normally handled inline by worker scripts via propagate_downstream(). Running anyway for compatibility (e.g. manual re-runs, tests).
2026-04-29 22:13:54.178213 msnoise [INFO]: [--after cc] active cc_steps=1 active stack_steps=0
2026-04-29 22:13:54.178213 msnoise [WARNING]: [--after cc] No active STACK steps found. Check WorkflowStep.category values (stack vs stacking).
2026-04-29 22:13:54.204197 msnoise [INFO]: [--after cc] desired REFSTACK REF jobs: 18
2026-04-29 22:13:54.206392 msnoise [INFO]: [--after cc] REFSTACK jobs: created=0, bumped_to_T=0
2026-04-29 22:13:54.207518 msnoise [INFO]: Propagation from category "cc" created/updated 0 STACK+REFSTACK job(s)
── stack_refstack: linear ─────────────────────────────────────────────
2026-04-29 22:13:54.207518 msnoise [pid 10336][INFO]: *** Starting: Compute REF Stack (refstack) ***
2026-04-29 22:13:54.212652 msnoise [pid 10336][INFO]: Getting the next refstack job
2026-04-29 22:13:54.285058 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.286062 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.288130 msnoise [INFO]: Processing YA.UV05.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.419286 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV05.00_YA.UV06.00.nc
2026-04-29 22:13:54.427313 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.427313 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV06.00
2026-04-29 22:13:54.428590 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:54.497268 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.498364 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.500377 msnoise [INFO]: Processing YA.UV05.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.524879 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV05.00_YA.UV10.00.nc
2026-04-29 22:13:54.532749 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.532749 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV10.00
2026-04-29 22:13:54.533750 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:54.601043 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.601043 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.604207 msnoise [INFO]: Processing YA.UV06.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.627994 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV06.00_YA.UV10.00.nc
2026-04-29 22:13:54.634887 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.635888 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV10.00
2026-04-29 22:13:54.637076 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:54.704318 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV05.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.704318 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV05.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.706743 msnoise [INFO]: Processing YA.UV05.00:YA.UV05.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.731648 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV05.00_YA.UV05.00.nc
2026-04-29 22:13:54.738657 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.739692 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV05.00
2026-04-29 22:13:54.740730 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:54.810201 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.810201 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.812196 msnoise [INFO]: Processing YA.UV06.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.840267 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV06.00_YA.UV06.00.nc
2026-04-29 22:13:54.848500 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.849506 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV06.00
2026-04-29 22:13:54.851596 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:54.930151 msnoise [INFO]: New REFSTACK batch: pair=YA.UV10.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.931152 msnoise [INFO]: New REFSTACK Job: pair=YA.UV10.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_1
2026-04-29 22:13:54.933176 msnoise [INFO]: Processing YA.UV10.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:54.959314 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_1/_output/REF/ZZ/YA.UV10.00_YA.UV10.00.nc
2026-04-29 22:13:54.967901 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:54.967901 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV10.00:YA.UV10.00
2026-04-29 22:13:54.970948 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.044221 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.044221 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.047739 msnoise [INFO]: Processing YA.UV05.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.079213 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV05.00_YA.UV06.00.nc
2026-04-29 22:13:55.086728 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.086728 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV06.00
2026-04-29 22:13:55.089759 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.166283 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.167357 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.169385 msnoise [INFO]: Processing YA.UV05.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.198833 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV05.00_YA.UV10.00.nc
2026-04-29 22:13:55.205437 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.206443 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV10.00
2026-04-29 22:13:55.208477 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.280222 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.281227 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.283241 msnoise [INFO]: Processing YA.UV06.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.312250 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV06.00_YA.UV10.00.nc
2026-04-29 22:13:55.319847 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.319847 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV10.00
2026-04-29 22:13:55.322032 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.388610 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV05.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.389608 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV05.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.391874 msnoise [INFO]: Processing YA.UV05.00:YA.UV05.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.418009 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV05.00_YA.UV05.00.nc
2026-04-29 22:13:55.424766 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.425800 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV05.00
2026-04-29 22:13:55.427055 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.495232 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.495232 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.498004 msnoise [INFO]: Processing YA.UV06.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.525516 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV06.00_YA.UV06.00.nc
2026-04-29 22:13:55.532511 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.532511 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV06.00
2026-04-29 22:13:55.534588 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.601076 msnoise [INFO]: New REFSTACK batch: pair=YA.UV10.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.602111 msnoise [INFO]: New REFSTACK Job: pair=YA.UV10.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_2
2026-04-29 22:13:55.604295 msnoise [INFO]: Processing YA.UV10.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:55.630619 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_2/_output/REF/ZZ/YA.UV10.00_YA.UV10.00.nc
2026-04-29 22:13:55.636950 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:55.637982 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV10.00:YA.UV10.00
2026-04-29 22:13:55.639528 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:55.705354 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:55.706385 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:55.708420 msnoise [INFO]: Processing YA.UV05.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:56.207141 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV05.00_YA.UV06.00.nc
2026-04-29 22:13:56.215875 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:56.215875 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV06.00
2026-04-29 22:13:56.218050 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:56.287932 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:56.287932 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:56.290256 msnoise [INFO]: Processing YA.UV05.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:56.695974 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV05.00_YA.UV10.00.nc
2026-04-29 22:13:56.707487 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:56.708567 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV10.00
2026-04-29 22:13:56.710723 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:56.786619 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:56.787621 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:56.789756 msnoise [INFO]: Processing YA.UV06.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:57.217078 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV06.00_YA.UV10.00.nc
2026-04-29 22:13:57.224845 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:57.224845 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV10.00
2026-04-29 22:13:57.227185 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:57.297845 msnoise [INFO]: New REFSTACK batch: pair=YA.UV05.00:YA.UV05.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:57.297845 msnoise [INFO]: New REFSTACK Job: pair=YA.UV05.00:YA.UV05.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:57.300978 msnoise [INFO]: Processing YA.UV05.00:YA.UV05.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:57.699096 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV05.00_YA.UV05.00.nc
2026-04-29 22:13:57.707222 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:57.707222 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV05.00:YA.UV05.00
2026-04-29 22:13:57.709557 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:57.778637 msnoise [INFO]: New REFSTACK batch: pair=YA.UV06.00:YA.UV06.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:57.778637 msnoise [INFO]: New REFSTACK Job: pair=YA.UV06.00:YA.UV06.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:57.781647 msnoise [INFO]: Processing YA.UV06.00:YA.UV06.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:58.177868 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV06.00_YA.UV06.00.nc
2026-04-29 22:13:58.186254 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:58.187252 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV06.00:YA.UV06.00
2026-04-29 22:13:58.189349 msnoise [INFO]: Getting the next refstack job
2026-04-29 22:13:58.255726 msnoise [INFO]: New REFSTACK batch: pair=YA.UV10.00:YA.UV10.00 n=1 group_by=pair_lineage lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:58.256757 msnoise [INFO]: New REFSTACK Job: pair=YA.UV10.00:YA.UV10.00 lineage=preprocess_1/cc_1/filter_1/refstack_3
2026-04-29 22:13:58.259039 msnoise [INFO]: Processing YA.UV10.00:YA.UV10.00-ZZ REF stack (Mode A, ref_begin=2010-09-01, ref_end=2010-09-01)
2026-04-29 22:13:58.653798 msnoise [INFO]: REF stack written: C:\Users\tlecocq\AppData\Local\Temp\msnoise_stackmethods_7qiov6mm\OUTPUT/preprocess_1/cc_1/filter_1/refstack_3/_output/REF/ZZ/YA.UV10.00_YA.UV10.00.nc
2026-04-29 22:13:58.662618 msnoise [WARNING]: [--after refstack] No active stack steps found.
2026-04-29 22:13:58.663664 msnoise [INFO]: Marked 1 refstack job(s) as Done for pair=YA.UV10.00:YA.UV10.00
Done.

12 · Gather MSNoiseResult Objects

[13]:
db = connect()

# Base lineage through the daily stack (shared by all three refstacks)
base_ids = dict(preprocess=1, cc=1, filter=1)

result_linear = MSNoiseResult.from_ids(db, **base_ids, refstack=ref_sn_linear)
result_pws    = MSNoiseResult.from_ids(db, **base_ids, refstack=ref_sn_pws)
result_tfpws  = MSNoiseResult.from_ids(db, **base_ids, refstack=ref_sn_tfpws)

print("linear  lineage:", result_linear.lineage_names)
print("pws     lineage:", result_pws.lineage_names)
print("tfpws   lineage:", result_tfpws.lineage_names)
linear  lineage: ['preprocess_1', 'cc_1', 'filter_1', 'refstack_1']
pws     lineage: ['preprocess_1', 'cc_1', 'filter_1', 'refstack_2']
tfpws   lineage: ['preprocess_1', 'cc_1', 'filter_1', 'refstack_3']

13 · Retrieve Reference Stacks

[14]:
ref_linear = result_linear.get_ref()
ref_pws    = result_pws.get_ref()
ref_tfpws  = result_tfpws.get_ref()

print(f"linear : {len(ref_linear)} REF(s) found")
print(f"pws    : {len(ref_pws)}    REF(s) found")
print(f"tfpws  : {len(ref_tfpws)}  REF(s) found")

common_keys = sorted(set(ref_linear) & set(ref_pws) & set(ref_tfpws))
print(f"\nCommon pairs across all three methods: {len(common_keys)}")
for key in common_keys:
    pair, comp = key
    print(f"  {pair}  {comp}")

# Separate CC pairs (two distinct stations) from AC pairs (same station)
cc_keys = [(p, c) for p, c in common_keys if p.split(":")[0] != p.split(":")[1]]
ac_keys = [(p, c) for p, c in common_keys if p.split(":")[0] == p.split(":")[1]]

print(f"\nCC pairs: {len(cc_keys)}   AC pairs: {len(ac_keys)}")
linear : 6 REF(s) found
pws    : 6    REF(s) found
tfpws  : 6  REF(s) found

Common pairs across all three methods: 6
  YA.UV05.00:YA.UV05.00  ZZ
  YA.UV05.00:YA.UV06.00  ZZ
  YA.UV05.00:YA.UV10.00  ZZ
  YA.UV06.00:YA.UV06.00  ZZ
  YA.UV06.00:YA.UV10.00  ZZ
  YA.UV10.00:YA.UV10.00  ZZ

CC pairs: 3   AC pairs: 3

14 · Helper: extract taxis and normalised waveform

[15]:
def _get_waveform(ref_dict, key):
    """Return (taxis, waveform) from a get_ref() dict entry."""
    da = ref_dict[key]
    taxis = da.coords["taxis"].values if "taxis" in da.coords else np.arange(len(da))
    arr = da.values
    if arr.ndim > 1:
        arr = arr.squeeze()
    return taxis, arr


def _norm(arr):
    """Normalise to absolute maximum (returns unchanged if all-zero)."""
    m = np.abs(arr).max()
    return arr / m if m > 0 else arr


def _amplitude_spectrum(arr, fs):
    """One-sided amplitude spectrum up to Nyquist."""
    N = len(arr)
    A = np.abs(np.fft.rfft(arr))
    f = np.fft.rfftfreq(N, d=1.0 / fs)
    return f, A / A.max() if A.max() > 0 else A

15 · Figure 1 — Time Domain Comparison

Each row is one pair (CC or AC). The three REF stacks are built directly from the daily CCFs (keep_days=Y) without an intermediate moving stack. Waveforms are normalised to their absolute maximum.

[16]:
COLORS  = {"linear": "#1f77b4", "pws": "#ff7f0e", "tfpws": "#2ca02c"}
LABELS  = {"linear": "Linear",  "pws": "PWS",     "tfpws": "tf-PWS"}

all_keys   = cc_keys + ac_keys
n_rows     = max(1, len(all_keys))
fig1, axes1 = plt.subplots(n_rows, 1, figsize=(12, 3.2 * n_rows), squeeze=False)

fig1.suptitle(
    f"Reference Stack Comparison — Time Domain\n"
    f"Filter {FREQMIN}{FREQMAX} Hz  |  {STARTDATE}",
    fontsize=13, y=1.01,
)

for row, key in enumerate(all_keys):
    pair, comp = key
    ax = axes1[row, 0]

    for method, ref_dict in [
        ("linear", ref_linear),
        ("pws",    ref_pws),
        ("tfpws",  ref_tfpws),
    ]:
        if key not in ref_dict:
            continue
        taxis, arr = _get_waveform(ref_dict, key)
        ax.plot(taxis, _norm(arr),
                color=COLORS[method], lw=1.1, alpha=0.85,
                label=LABELS[method])

    kind = "AC" if pair.split(":")[0] == pair.split(":")[1] else "CC"
    ax.set_title(f"{pair}  [{comp}]  — {kind}", fontsize=11)
    ax.axvline(0, color="k", lw=0.7, ls="--", alpha=0.4)
    ax.set_xlabel("Lag (s)")
    ax.set_ylabel("Norm. amplitude")
    ax.set_xlim(-MAXLAG, MAXLAG)
    ax.legend(loc="upper right", fontsize=9)
    ax.grid(True, alpha=0.25)

plt.tight_layout()
plt.show()
../_images/notebooks_nb_stack_methods_32_0.svg

16 · Figure 2 — Frequency Domain Comparison

Amplitude spectra of the three REF stacks for each pair. The passband of filter_1 is shaded in grey. Differences reflect the coherence weighting applied by PWS and tf-PWS within the band.

[17]:
FS = CC_SAMPLING_RATE   # sampling rate of the stacked CCFs

fig2, axes2 = plt.subplots(n_rows, 1, figsize=(12, 3.2 * n_rows), squeeze=False)

fig2.suptitle(
    f"Reference Stack Comparison — Frequency Domain\n"
    f"Filter {FREQMIN}{FREQMAX} Hz  |  {STARTDATE}",
    fontsize=13, y=1.01,
)

F_PLOT_MAX = FREQMAX * 2.0   # show up to 2× freqmax

for row, key in enumerate(all_keys):
    pair, comp = key
    ax = axes2[row, 0]

    for method, ref_dict in [
        ("linear", ref_linear),
        ("pws",    ref_pws),
        ("tfpws",  ref_tfpws),
    ]:
        if key not in ref_dict:
            continue
        _, arr = _get_waveform(ref_dict, key)
        f, A = _amplitude_spectrum(arr, FS)
        ax.plot(f, A, color=COLORS[method], lw=1.1, alpha=0.85,
                label=LABELS[method])

    # Shade the filter passband
    ax.axvspan(FREQMIN, FREQMAX, alpha=0.08, color="grey", label="Passband")

    kind = "AC" if pair.split(":")[0] == pair.split(":")[1] else "CC"
    ax.set_title(f"{pair}  [{comp}]  — {kind}", fontsize=11)
    ax.set_xlabel("Frequency (Hz)")
    ax.set_ylabel("Norm. amplitude")
    ax.set_xlim(0, F_PLOT_MAX)
    ax.set_ylim(0, None)
    ax.legend(loc="upper right", fontsize=9)
    ax.grid(True, alpha=0.25)

plt.tight_layout()
plt.show()
../_images/notebooks_nb_stack_methods_34_0.svg

17 · Figure 3 — Side-by-side CC vs AC (one method per column)

A compact overview: rows = stack method, columns = CC / AC. Waveforms are normalised; the zero-lag line is marked.

[18]:
if cc_keys and ac_keys:
    n_methods = 3
    methods   = [("linear", ref_linear), ("pws", ref_pws), ("tfpws", ref_tfpws)]

    # Pick the first CC pair and the first AC pair for the overview
    cc_key0 = cc_keys[0]
    ac_key0 = ac_keys[0]

    fig3, axes3 = plt.subplots(
        n_methods, 2,
        figsize=(13, 3.0 * n_methods),
        squeeze=False,
        sharex="col",
    )
    fig3.suptitle(
        "REF stack by method: CC (left) vs AC (right)\n"
        f"Filter {FREQMIN}{FREQMAX} Hz  |  {STARTDATE}",
        fontsize=13, y=1.01,
    )

    for row, (method, ref_dict) in enumerate(methods):

        # ── CC ────────────────────────────────────────────────────────────
        ax = axes3[row, 0]
        if cc_key0 in ref_dict:
            taxis, arr = _get_waveform(ref_dict, cc_key0)
            ax.plot(taxis, _norm(arr), color=COLORS[method], lw=1.0)
        ax.axvline(0, color="k", lw=0.6, ls="--", alpha=0.4)
        ax.set_ylabel(LABELS[method], fontsize=11)
        ax.set_xlim(-MAXLAG, MAXLAG)
        ax.grid(True, alpha=0.2)
        if row == 0:
            ax.set_title(f"CC  |  {cc_key0[0]}  [{cc_key0[1]}]", fontsize=10)
        if row == n_methods - 1:
            ax.set_xlabel("Lag (s)")

        # ── AC ────────────────────────────────────────────────────────────
        ax = axes3[row, 1]
        if ac_key0 in ref_dict:
            taxis, arr = _get_waveform(ref_dict, ac_key0)
            ax.plot(taxis, _norm(arr), color=COLORS[method], lw=1.0)
        ax.axvline(0, color="k", lw=0.6, ls="--", alpha=0.4)
        ax.set_xlim(0, MAXLAG)   # AC is symmetric; show positive lags only
        ax.grid(True, alpha=0.2)
        if row == 0:
            ax.set_title(f"AC  |  {ac_key0[0]}  [{ac_key0[1]}]", fontsize=10)
        if row == n_methods - 1:
            ax.set_xlabel("Lag (s)")

    plt.tight_layout()
    plt.show()

else:
    print("Skipping Figure 3: need at least one CC pair and one AC pair.")
../_images/notebooks_nb_stack_methods_36_0.svg

Notes

Interpreting the differences between stack methods

  • Linear — arithmetic mean of all window CCFs. Fast and transparent. In the frequency domain the spectrum reflects the raw energy distribution of the ambient noise field within the passband.

  • PWS (pws) — time-domain phase coherence weights downweight windows whose instantaneous phase is inconsistent with the ensemble. Transient signals (earthquakes, cultural noise) contribute random phases and are attenuated. The result is often cleaner in the time domain but may suppress weak coherent arrivals if pws_power is too large.

  • tf-PWS (tfpws) — same idea but the coherence is evaluated at each CWT scale independently. This gives frequency-selective suppression: narrow-band transients are attenuated only in the frequency bands where they are incoherent. For AC studies (Romero & Schimmel 2018) the advantage of tf-PWS over PWS is most visible when the target reflection is narrow-band (e.g. a basement reflection at 3–12 Hz embedded in broadband cultural noise).

Why AC uses PCC instead of CC

cc_type_single_station_AC = "PCC" engages the PCC2 algorithm for the autocorrelation. PCC operates on instantaneous phase only, which eliminates the dominant zero-lag spike inherent to the classical autocorrelogram without requiring explicit muting or spectral division. This is essential for detecting shallow reflections at lags < 1 s.

Whitening behaviour with whitening = "A"

whitening = "A" (auto) means spectral whitening is applied to inter-station CC and SC but skipped for AC by design: the AC branch in s03_compute_no_rotation unconditionally starts from _data_bp (the bandpassed, non-whitened copy of the traces). There is therefore no risk of collapsing the ACF to a sinc function regardless of the whitening setting — "A" is the correct and recommended value when computing both CC and AC in the same step.