SignatureRun

masked_data_RG_80nM, run e41d035d

Status done, stage done; requested by project lead; worker [not recorded]; started 2026-10-27 23:43 UTC, finished 2026-10-27 23:46 UTC, 173 s; signature 4f9dfa16

Stages

StageStartedSeconds
[no stage log; run predates stage timing]

Log

TimeAgentActionDetail
23:43:22runsrun started{"checked_by": "no agent", "protocol_params_version": 1, "recording_id": "73e4ebe2-6b09-4582-a1d6-ded901b7d124", "run_id": "e41d035d-080a-4db2-a665-c4738243cdc3"}
23:46:14runssignature written{"criteria": "provisional", "holds": null, "run_id": "e41d035d-080a-4db2-a665-c4738243cdc3", "signature_id": "4f9dfa16-d81f-4874-be78-8c0a38938b12"}

Entries from the audit log for this run; new rows and stage changes arrive by realtime while the run is open (connecting).

Pipeline check

[no pipeline check stored for this run]

Inspector

This is a preprocessed ex vivo Langendorff rat whole-heart VF optical-mapping recording under 80 nM rotigaptide, recorded at 1000 Hz according to the deposit; that agrees with the value already on record. The 128 × 80 deposited image size matches both the deposit and the linked paper, and the paper also reports 1000 frames/s. The data have documented preprocessing before deposit, including background subtraction, 3 × 3 spatial binning, 100 Hz low-pass filtering, drift removal, and normalization, so analyses should not treat them as raw camera counts. Measured polarity is consistently non-inverted even though RH237 normally dims on depolarization, so use measured polarity for orientation. No acquisition-log or detected event annotations are available for this recording.

MeasurementValueMethod, Caveat
SNR, median (p10–p90)18.8 (13.9–25.9)assumes white noise; on temporally smoothed deposits noise is underestimated and SNR inflated
Mask coverage50.9%, 5216 of 10240 pxdepositor NaN mask (frame 0)
Polarityblocks 7, inverted False, blocks agreeing 7, median dvdt skew 0.08132843673229218sign of median per-pixel skew of dV/dt, baseline-corrected (121 frames)
Drift / bleachingbaseline change -0.0108, vs beat amplitude -0.0979, slow range 0.162, trend, Spearman -0.356running median (381 frames) of the tissue-mean raw signal; steps from events (light, rhythm change) and depositor normalization or drift removal change or erase the baseline; bleaching cannot be separated from them here
Prior processingunit range, non integer, nan mask partial, temporal smoothing, spatial smoothingdeposit checks
Dominant cycle by block, frames0–1000: 29.4, 1000–2000: 28.6, 2000–3000: 28.6, 3000–3800: 25.0
ConcernSeverityDetail
preprocessed depositwarnThe deposit is not raw camera data: it is documented as background-subtracted, spatially binned, low-pass filtered, drift-removed, and the publication says normalized. Analyses requiring raw fluorescence/counts or unfiltered noise statistics would be misleading.
polarity transformed relative to dyewarnRH237 normally dims on depolarization, but measured polarity is non-inverted with 7/7 blocks agreeing. The depositor appears to have flipped or transformed the sign; the pipeline should orient from the measured polarity, so this is not expected to make activation analysis wrong if handled.
SNR depends on preprocessinginfoMedian SNR is high, but documented temporal filtering and detected temporal smoothing can inflate the SNR estimate by reducing apparent frame-to-frame noise.
reference thresholds provisionalinfoNo frame-rate inference was needed because the deposit states 1 kHz. Any conclusions from automated processing flags and provisional rhythm/reference-rate tools should be treated as not yet domain-scientist reviewed.

Inspector report 2026-10-27 20:27 UTC, model openai:gpt-5.5, provisional. Median per-pixel SNR over tissue is 18.818067017408147, with p10 = 13.893293967898506 and p90 = 25.936276941781777 over 3000 frames. The SNR tool cautions that temporal smoothing underestimates noise and inflates SNR; that caveat applies because low-pass filtering is documented and temporal smoothing was detected. The tissue mask contains 5216 pixels out of 10240 total pixels, coverage 0.509375. The mask source is a depositor NaN mask in frame 0; frame 0 has 5024 NaN pixels. No stored events were returned, no acquisition log is present, and no detected light transitions or image baseline-step events were returned. Therefore there are no event frames to interpret for this recording. If events are later added, image-only baseline steps should be treated only as fluorescence changes unless a log shows a light transition at the same frame. The tissue-mean slow baseline, measured with a 381-frame running median, changes from 0.4981755316257477 to 0.48741528391838074, a change of -0.010760247707366943, equal to -0.09788043294092134 of the p5–p95 beat amplitude. Slow baseline range is 0.1622154712677002 and Spearman trend is -0.3557674750723145. Because the deposit documents drift removal and normalization, residual bleaching cannot be separated from preprocessing effects here.

Range checks

MetricSegmentValue at Run SettingCited RangeStatus
persistent rotor tracksall303 countnone citedunstable not reportable
dominant freq (Hz)whole recording40.29 Hznone citedno cited range
persistent rotorswhole recording303 countnone citedunstable not reportable
singularity frames fractionwhole recording1 fraction of framesnone citedno cited range
persistent rotor count maxwhole recording15 countnone citedunstable not reportable

Compare with run 20dfde82

A: this run, code 905d5be (uncommitted changes), None workers. B: run 20dfde82, 2026-10-27 22:15 UTC, code 13d8ceb, None workers. 86 stored values differ.

FileABSameHow
frames/voltage[none][none][not comparable]recorded sha256
frames/phase[none][none][not comparable]recorded sha256
frames/maps[none][none][not comparable]recorded sha256
maps/dominant_frequency.png8c71c54e39408c71c54e3940yessha256 of the stored file
movie.mp41090639710906397yessize in bytes only; frames not compared
Stored ValueAB
criteria_status.rules[1].descriptionA run proceeds only if the protocol's baseline window is >= 2x the slowest segment's cycle, the cycle from the MAP channel when a DAQ log exists, else from per-pixel dominant frequency on linearly detrended pixels; otherwise the run is held by codeDefault baseline window (frames) and spatial Gaussian sigma/truncate for phase
criteria_status.rules[1].expertoptical mapping analystoptical mapping analyst (cardiac electrophysiology)
criteria_status.rules[1].locationworker/voltage/baseline_rule.py (FACTOR, evaluate)worker/voltage/preprocess.py (Params)
criteria_status.rules[1].values.baseline_frames[absent]121
criteria_status.rules[1].values.factor2.0[absent]
criteria_status.rules[1].values.lowpass[absent]None
criteria_status.rules[1].values.okTrue[absent]
criteria_status.rules[1].values.required_min_frames52[absent]
criteria_status.rules[1].values.slowest_cycle_frames26[absent]
criteria_status.rules[1].values.sourceper-pixel dominant frequency (images)[absent]
criteria_status.rules[1].values.spatial_sigma[absent]1.0
criteria_status.rules[1].values.spatial_truncate[absent]4.0
criteria_status.rules[2].descriptionDefault baseline window (frames) and spatial Gaussian sigma/truncate for phaseTissue = not NaN in frame 0 and nonzero temporal std
criteria_status.rules[2].expertoptical mapping analyst (cardiac electrophysiology)optical mapping analyst
criteria_status.rules[2].locationworker/voltage/preprocess.py (Params)worker/voltage/io.py (tissue_mask)
criteria_status.rules[2].values.baseline_frames121[absent]
criteria_status.rules[2].values.lowpassNone[absent]
criteria_status.rules[2].values.rule[absent]not NaN in frame 0 and nonzero std
criteria_status.rules[2].values.spatial_sigma1.0[absent]
criteria_status.rules[2].values.spatial_truncate4.0[absent]
criteria_status.rules[2].values.tissue_pixels[absent]5216
criteria_status.rules[3].descriptionTissue = not NaN in frame 0 and nonzero temporal stdDye polarity from sign of median per-pixel skew of dV/dt
criteria_status.rules[3].expertoptical mapping analystoptical mapping analyst / voltage dye chemist
criteria_status.rules[3].locationworker/voltage/io.py (tissue_mask)worker/voltage/preprocess.py (polarity)
criteria_status.rules[3].values.method[absent]median skew of dV/dt
criteria_status.rules[3].values.result[absent]1
criteria_status.rules[3].values.rulenot NaN in frame 0 and nonzero std[absent]
criteria_status.rules[3].values.tissue_pixels5216[absent]
criteria_status.rules[4].descriptionDye polarity from sign of median per-pixel skew of dV/dtPhase singularity = |winding| > threshold turns, >= erode px from tissue edge
criteria_status.rules[4].expertoptical mapping analyst / voltage dye chemistcomputational cardiac electrophysiologist (phase mapping)
criteria_status.rules[4].locationworker/voltage/preprocess.py (polarity)worker/voltage/preprocess.py (Params.rotor_threshold, rotor_erode_px)
criteria_status.rules[4].values.methodmedian skew of dV/dt[absent]
criteria_status.rules[4].values.result1[absent]
criteria_status.rules[4].values.rotor_erode_px[absent]3
criteria_status.rules[4].values.rotor_threshold[absent]0.9
criteria_status.rules[5].descriptionPhase singularity = |winding| > threshold turns, >= erode px from tissue edgeTrack linking distance/gap and minimum lifetime for a persistent rotor
criteria_status.rules[5].locationworker/voltage/preprocess.py (Params.rotor_threshold, rotor_erode_px)worker/voltage/rotors.py (TrackParams)
criteria_status.rules[5].values.link_px[absent]4.0
criteria_status.rules[5].values.max_gap[absent]5
criteria_status.rules[5].values.min_cycles[absent]1.0
criteria_status.rules[5].values.min_frames[absent]25
criteria_status.rules[5].values.rotor_erode_px3[absent]
criteria_status.rules[5].values.rotor_threshold0.9[absent]
criteria_status.rules[6].descriptionTrack linking distance/gap and minimum lifetime for a persistent rotorOpposite-charge singularities within pair distance are a pair; tracks paired most of their life are excluded from rotors
criteria_status.rules[6].locationworker/voltage/rotors.py (TrackParams)worker/voltage/rotors.py (TrackParams.pair_dist_px, paired_frac)
criteria_status.rules[6].values.link_px4.0[absent]
criteria_status.rules[6].values.max_gap5[absent]
criteria_status.rules[6].values.min_cycles1.0[absent]
criteria_status.rules[6].values.min_frames25[absent]
criteria_status.rules[6].values.pair_dist_px[absent]3.0
criteria_status.rules[6].values.paired_frac[absent]0.5
criteria_status.rules[7].descriptionOpposite-charge singularities within pair distance are a pair; tracks paired most of their life are excluded from rotorsFilter levels tested: spatial sigma and baseline window values
criteria_status.rules[7].expertcomputational cardiac electrophysiologist (phase mapping)optical mapping analyst
criteria_status.rules[7].locationworker/voltage/rotors.py (TrackParams.pair_dist_px, paired_frac)worker/voltage/sensitivity.py (SIGMAS, BASELINE_MULTIPLES, baseline_levels)
criteria_status.rules[7].values.baselines[absent]{'run': 121, '3x_cycle': 75, '6x_cycle': 150, '1.5x_cycle': 38}
criteria_status.rules[7].values.pair_dist_px3.0[absent]
criteria_status.rules[7].values.paired_frac0.5[absent]
criteria_status.rules[7].values.sigmas[absent]{'light': 0.5, 'default': 1.0, 'heavier': 2.0}
criteria_status.rules[7].values.trackers[absent]{'loose': [6.0, 10], 'strict': [2.0, 1], 'default': [4.0, 5]}
criteria_status.rules[8].descriptionFilter levels tested: spatial sigma and baseline window valuesFrames analysed: whole recording minus one filter pad at each end (unless the plan narrows it)
criteria_status.rules[8].expertoptical mapping analystcardiac electrophysiologist familiar with the dataset
criteria_status.rules[8].locationworker/voltage/sensitivity.py (SIGMAS, BASELINE_MULTIPLES, baseline_levels)worker/voltage/runs.py (default_window)
criteria_status.rules[8].values.baselines{'run': 121, '3x_cycle': 75, '6x_cycle': 150, '1.5x_cycle': 38}[absent]
criteria_status.rules[8].values.f0[absent]200
criteria_status.rules[8].values.f1[absent]3600
criteria_status.rules[8].values.sigmas{'light': 0.5, 'default': 1.0, 'heavier': 2.0}[absent]
criteria_status.rules[8].values.trackers{'loose': [6.0, 10], 'strict': [2.0, 1], 'default': [4.0, 5]}[absent]
criteria_status.rules[9].descriptionFrames analysed: whole recording minus one filter pad at each end (unless the plan narrows it)Thresholds for flagging depositor processing (normalization, masking, temporal/spatial smoothing)
criteria_status.rules[9].expertcardiac electrophysiologist familiar with the datasetimaging scientist (camera acquisition and noise)
criteria_status.rules[9].locationworker/voltage/runs.py (default_window)worker/voltage/inspect.py (prior_processing)
criteria_status.rules[9].values.f0200[absent]
criteria_status.rules[9].values.f13600[absent]
criteria_status.rules[9].values.flags[absent]['unit_range', 'non_integer', 'nan_mask_partial', 'temporal_smoothing', 'spatial_smoothing']
criteria_status.rules[9].values.thresholds[absent]{'int_frac': 0.5, 'neg_frac': 0.01, 'dv_autocorr': 0.5, 'neighbour_corr': 0.8}
criteria_status.rules[10].descriptionThresholds for flagging depositor processing (normalization, masking, temporal/spatial smoothing)The pipeline agent's hold/proceed decision from protocol mismatches and inspector anomalies; it chooses no parameter
criteria_status.rules[10].expertimaging scientist (camera acquisition and noise)optical mapping analyst
criteria_status.rules[10].locationworker/voltage/inspect.py (prior_processing)worker/agents/pipeline.py (INSTRUCTIONS, validator)
criteria_status.rules[10].values.anomalies[absent]['preprocessed deposit', 'polarity transformed relative to dye']
criteria_status.rules[10].values.flags['unit_range', 'non_integer', 'nan_mask_partial', 'temporal_smoothing', 'spatial_smoothing'][absent]
criteria_status.rules[10].values.mismatches[absent][]
criteria_status.rules[10].values.model[absent]openai:gpt-5.5
criteria_status.rules[10].values.proceed[absent]True
criteria_status.rules[10].values.thresholds{'int_frac': 0.5, 'neg_frac': 0.01, 'dv_autocorr': 0.5, 'neighbour_corr': 0.8}[absent]
pipeline.baseline_rule{'ok': True, 'ratio': 4.654, 'cycles': {'whole_recording': {'n_frames': 3800, 'cycle_frames': 26, 'pixels_agreeing_frac': 0.8585122699386503, 'pixels_with_rhythm_frac': 1.0, 'interval_quartiles_frames': [25.0, 26.0, 29.0]}}, 'factor': 2.0, 'reason': None, 'source': 'per-pixel dominant frequency (images)', 'status': 'provisional', 'baseline_frames': 121, 'slowest_segment': 'whole_recording', 'required_min_frames': 52, 'slowest_cycle_frames': 26}None
pipeline.checkNone{'model': 'openai:gpt-5.5', 'proceed': True, 'anomalies': [{'topic': 'preprocessed deposit', 'severity': 'warn', 'effect_on_analysis': 'The recording is documented as background-subtracted, 3 × 3 spatially binned, low-pass filtered at 100 Hz, drift-removed, and normalized before deposit. The fixed pipeline can be run, but its Gaussian phase smoothing and baseline removal are being applied on top of prior filtering and drift correction of unknown total effect; amplitude, noise, and SNR-related interpretations should not be treated as raw-camera measurements.'}, {'topic': 'polarity transformed relative to dye', 'severity': 'warn', 'effect_on_analysis': 'RH237 normally decreases fluorescence on depolarization, but the deposited data measure as non-inverted. The pipeline should orient activation from measured polarity rather than dye expectation, so activation analysis is not expected to be made wrong if measured polarity is used.'}], 'rationale': 'The recording matches the protocol at the level needed to use the fixed parameter set: it is a rat whole-heart ventricular-fibrillation optical-mapping recording from the referenced public dataset, and no protocol field conflicts with the recording facts. The recording frame rate is 1000 Hz from deposit metadata; the protocol does not prescribe a different frame rate, and with the fixed baseline window the measured dominant rhythm is not in the caveated regime where the baseline window is shorter than about 1.5 cycles. The run should proceed, but the reader must treat the data as preprocessed rather than raw because prior binning, low-pass filtering, drift removal, and normalization affect the meaning of further smoothing, baseline correction, amplitude, and noise estimates.', 'mismatches': [], 'hold_reason': None, 'protocol_id': 'a0059cf5-fbde-4942-a18f-399ebe70e9ff', 'methods_text': 'Using the provisional protocol parameter set and provisional criteria, version 1, the analysis uses baseline_frames = 121, spatial_sigma = 1.0, spatial_truncate = 4.0, pad_frames = 200, rotor_threshold = 0.9, rotor_erode_px = 3, link_px = 4.0, max_gap = 5, min_cycles = 1.0, pair_dist_px = 3.0, paired_frac = 0.5, and render_step = 4. The frame rate is 1000 Hz from deposit metadata, and the pixel size is 112.5 µm from the deposit metadata midpoint of the stated range. The recording has 3800 frames, with the provisional segment definition whole_recording, labelled ventricular fibrillation (whole recording), spanning frames 0 to 3800; the analysed frames are 200 to 3600.', 'params_version': 1, 'prompt_version': 'pipeline-v2'}
methods_textRecording Rat heart, ventricular fibrillation (RG 80 nM) (doi:10.5281/zenodo.18319102; 128x80 px, 3800 frames, 1000 Hz) was analysed over frames 200-3600. Deposit shows signs of prior processing (provisional): unit range, non integer, nan mask partial, temporal smoothing, spatial smoothing. Each pixel was baseline-corrected by subtracting a 121-frame centered moving average; NaN pixels were set to zero. Dye polarity (upright) was taken from the sign of the median per-pixel skew of dV/dt. For phase only, each frame was spatially filtered with a Gaussian (sigma 1.0 px, truncated at 4.0 sigma); no temporal low-pass was applied. Phase was the angle of the Hilbert transform with 200 frames of padding on each side. Phase singularities were plaquettes with |winding| > 0.9 turns at least 3 px inside the tissue edge; they were tracked across frames (same charge, <= 4.0 px per frame, gaps <= 5 frames), and a persistent rotor was a track lasting >= 25 frames (1 cycle(s) of the fastest segment) within 3.0 px of an opposite-charge singularity in no more than 50% of its frames. Sensitivity: baseline 150, 75, 38, 121 frames x sigma 0.5, 1.0, 2.0 px, and tracker variants. All thresholds and criteria are provisional pending review by a domain scientist.Using the provisional protocol parameter set and provisional criteria, version 1, the analysis uses baseline_frames = 121, spatial_sigma = 1.0, spatial_truncate = 4.0, pad_frames = 200, rotor_threshold = 0.9, rotor_erode_px = 3, link_px = 4.0, max_gap = 5, min_cycles = 1.0, pair_dist_px = 3.0, paired_frac = 0.5, and render_step = 4. The frame rate is 1000 Hz from deposit metadata, and the pixel size is 112.5 µm from the deposit metadata midpoint of the stated range. The recording has 3800 frames, with the provisional segment definition whole_recording, labelled ventricular fibrillation (whole recording), spanning frames 0 to 3800; the analysed frames are 200 to 3600.
Statusdone
Stagedone
Heartbeat–
Log2 entries