Compare runs Export
Figures Sensitivity Report

mouseventricle06062018_A_FLEC_1uM_Paced, Mouse Whole Heart Optical Mapping Data: Mouse Whole Heart.zip/Mouse Whole Heart/06062018 A/mouseventricle06062018 A_FLEC 1uM Paced

51 × 51 px, 5,000 frames, 1 kHz, 156 µm/px

Run 1d65814d, 2026-10-28 19:22 UTC, protocol parameters v3, code 4533745, 4 workers, signature daa60525, run view 1d65814d

Not reportable: range check not passed, code clean, parameters unsigned, reviewer sign-off pending; 16 rules open

Parameters

% Mouse whole heart optical mapping (Luther lab), v3, read-only
% set by developer (not a domain scientist); provisional, REVIEW_NEEDED 16
baseline_frames  = 901;     % >= 2 x slowest cycle (7, images): ok
pad_frames       = 500;     % each side, outside the window
spatial_sigma    = 1.0;     % px, Gaussian, phase only
spatial_truncate = 4.0;     % kernel radius, sigma
lowpass          = [];      % none
polarity         = -1;      % measured, skew of dV/dt
rotor_threshold  = 0.9;     % turns, |winding| per plaquette
rotor_erode_px   = 3;       % px from tissue edge ignored
link_px          = 4.0;     % tracking, max step per frame
max_gap          = 5;       % frames a track may vanish
min_cycles       = 1.0;     % own rotations, min_frames = 108
pair_dist_px     = 3.0;     % opposite-charge pairing
paired_frac      = 0.5;     % max paired fraction of a track
render_step      = 4;       % movie only

Segments

SegmentDefinedAnalysedCycle, framesExpected RotorsBounded By
Whole recording0–5,000500–4,5007 (98% of pixels)not statedrecording start → recording end

Frames at 5,000 total, 1.0 ms per frame. Cycle from the MAP channel of the DAQ log (median interval) when one exists, else from per-pixel dominant frequency. Boundaries, expectations and the segment design are provisional (admission (project lead); no comparison defined).

Metrics

MetricUnitWhole recordingPhysiological Range
Rhythm
Dominant frequencyHz 9.250 none cited
Rotors
Persistent rotorscount 0–13 none cited
Max concurrent persistent rotorscount 0–2 none cited
Frames with a singularityfraction 0.021–0.670 none cited
Beats, where a global rhythm exists
Beatscount 38 none cited
Global amplitude ratioratio 0.78 gate ≥ 0.30 provisional
APD50ms 15 none cited
APD90ms 40 none cited
Conduction velocitycm/s 2.6 none cited

Values at the run setting. Red: range across the sensitivity grid (12 baseline × sigma settings, 3 trackers) where the spread exceeds 25 % of the median; not reportable as a value. Beat metrics are not varied over the grid. Dominant frequency over the whole analysed window: 9.250 Hz.

CriterionRuleResult
Design expectationsnone stated for this recording's segmentsno criterion to test; counts are descriptive provisional

Report

The PDF carries the parameters as run, segments, metrics, criteria, reportable values, every provisional rule, the review items, the opening frame as camera, voltage and phase with the parameter footer, and the provenance block. The JSON carries the same plus the full stored metrics, sensitivity and critic records.

Methods

Using provisional parameter set version 3 for protocol f65d786f-f194-4be2-88b8-10d3dd25d674, the fixed parameters are baseline_frames=901, spatial_sigma=1.0, spatial_truncate=4.0, pad_frames=500, 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 recording has 5000 frames of 51 x 51 MAT data, with frame rate 1000.0 Hz from admission/paper_methods for 10.1038/s41597-022-01253-1 and pixel size 156.0 µm from the same source. The analysed window is frames 500 to 4500. The provisional segment definition is whole_recording, labelled whole recording, spanning frames 0 to 5000, defined at admission with no events detected or logged; the parameter set, segment definitions, and criteria are provisional.

Reportable values

MetricSegmentValueUnitStatus
persistent rotor tracksall0–13countunstable, not reportable
dominant freq (Hz)whole recording9.25Hzno cited range
persistent rotorswhole recording0–13countunstable, not reportable
singularity frames fractionwhole recording0.021–0.67fraction of framesunstable, not reportable
persistent rotor count maxwhole recording0–2countunstable, not reportable

physiology_ok: not decided (no cited range passed or failed); send back: False. Provisional review: the only stable metric is dominant_freq_hz at 9.25 Hz, but it has no applicable cited range for this paced mouse whole-heart recording; the mouse spiral-wave context from DOI 10.1371/journal.pcbi.1011660 gives ≈20 Hz and ≈18.75 Hz, corresponding at 1000 frames/s to 50 and 53 frames, but that is not a population range for this file. The rotor-related outputs are unstable and not reportable: singularity_frames_frac spans 0.021 to 0.6705, persistent_rotors spans 0.0 to 13.0, persistent_rotor_count_max spans 0.0 to 2.0, and persistent_rotor_tracks spans 0.0 to 13.0 across the tested settings. The persistent-rotor threshold variants are not applicable because there are no segment expectations; strict/default/loose trackers found 0, 4, and 13 persistent rotors, so tracking sensitivity needs review rather than serving as proof that the finding is false. Before reporting, review the inspector block on frame-rate provenance, unavailable depositor documentation, tissue annotation/mask, physiology-reference limitations, and baseline drift/bleaching; all ranges, the stability threshold, and the criteria are provisional.

Provisional rules

Rule, LocationDescriptionExpertStatus
protocol_parameter_set
worker/voltage/protocol_params.py (developer_defaults, set_params)
Each protocol's fixed, versioned analysis parameters (version 1 = developer defaults); no run or agent may deviateoptical mapping analystprovisional
baseline_window_rule
worker/voltage/baseline_rule.py (FACTOR, evaluate)
A 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 codeoptical mapping analystprovisional
filter_defaults
worker/voltage/preprocess.py (Params)
Default baseline window (frames) and spatial Gaussian sigma/truncate for phaseoptical mapping analyst (cardiac electrophysiology)provisional
tissue_mask
worker/voltage/io.py (tissue_mask_info, otsu_threshold, largest_component)
Tissue mask from, in order: (1) NaN in frame 0 when the recording has any NaN; (2) a mask or background-image variable shipped in the file whose shape matches the frame (binary as is, an intensity image thresholded with Otsu); (3) Otsu's threshold on the mean image, the class with more temporal signal as tissue, largest connected component kept; source, coverage and threshold recordedoptical mapping analystprovisional
polarity
worker/voltage/preprocess.py (polarity)
Dye polarity from sign of median per-pixel skew of dV/dtoptical mapping analyst / voltage dye chemistprovisional
singularity_detection
worker/voltage/preprocess.py (Params.rotor_threshold, rotor_erode_px)
Phase singularity = |winding| > threshold turns, >= erode px from tissue edgecomputational cardiac electrophysiologist (phase mapping)provisional
rotor_persistence
worker/voltage/rotors.py (TrackParams)
Track linking distance/gap and minimum lifetime for a persistent rotorcomputational cardiac electrophysiologist (phase mapping)provisional
chirality_pairing
worker/voltage/rotors.py (TrackParams.pair_dist_px, paired_frac)
Opposite-charge singularities within pair distance are a pair; tracks paired most of their life are excluded from rotorscomputational cardiac electrophysiologist (phase mapping)provisional
sensitivity_grid
worker/voltage/sensitivity.py (SIGMAS, BASELINE_MULTIPLES, baseline_levels)
Filter levels tested: spatial sigma and baseline window valuesoptical mapping analystprovisional
analysis_window
worker/voltage/runs.py (default_window)
Frames analysed: whole recording minus one filter pad at each end (unless the plan narrows it)cardiac electrophysiologist familiar with the datasetprovisional
prior_processing_flags
worker/voltage/inspect.py (prior_processing)
Thresholds for flagging depositor processing (normalization, masking, temporal/spatial smoothing)imaging scientist (camera acquisition and noise)provisional
pipeline_check
worker/agents/pipeline.py (INSTRUCTIONS, validator)
The pipeline agent's hold/proceed decision from protocol mismatches and inspector anomalies; it chooses no parameteroptical mapping analystprovisional
physiology_reference_rates
worker/voltage/physiology.py (RANGES, TOLERANCE_FRAC)
Cited physiological ranges (single-study values widened by a 25% tolerance), applied to segments by their expected rhythm; used by the critic and for frame-rate sanity checkscardiac electrophysiologist per speciesprovisional
stability_rule
worker/agents/critic.py (STABLE_FRAC, stability)
A metric is reportable only if its spread across all sensitivity settings is <= 25% of its median (zero spread when all values are 0); otherwise 'unstable, not reportable'biostatistician + optical mapping analystprovisional
persistence_threshold_variants
worker/agents/critic.py (persistence_variants)
The persistent-rotor rule is run at two lifetimes, one measured cycle of the fastest segment and the paper's cited rotation period; both verdicts stored, disagreement flaggedcomputational cardiac electrophysiologist (phase mapping)provisional
persistent_rotor_criterion
worker/voltage/sensitivity.py (MIN_ROTORS_PRESENT, MAX_ROTORS_ABSENT)
Persistent-rotor finding holds if every 'present' segment has >= 1 persistent rotor and every 'absent' segment has none, at every settingcardiac electrophysiologistprovisional

Review items

TopicDetailSeverityReviewer
unstable:whole_recording.singularity_frames_fracVaries from 0.021 to 0.6705 across the filter grid, exceeding the provisional stability rule.warnanalysis
unstable:whole_recording.persistent_rotorsVaries from 0.0 to 13.0 across filter and tracker settings, so persistent-rotor count is not reportable.warnanalysis
unstable:whole_recording.persistent_rotor_count_maxVaries from 0.0 to 2.0 across filter and tracker settings, so the maximum simultaneous count is not reportable.warnanalysis
unstable:persistent_rotor_tracksVaries from 0.0 to 13.0 across filter and tracker settings, so track count is not reportable.warnanalysis
Frame rate unavailableInspector reports that no frame-rate source was available from upload/admission, accessible deposit metadata, publication text, or acquisition log, so time conversion for paced data needs review despite the analysis overview listing 1000.0 Hz.blockdata curator
Accessible depositor documentation unavailableFigshare deposit documentation could not be read by the metadata tool, so preprocessing steps and protocol statements were not independently verified.warndata curator
Tissue annotation/maskRecording metadata and path labeling conflict on atrium versus mouseventricle, and the analysis mask covers the full 51 x 51 frame based only on nonzero temporal standard deviation.warnimaging reviewer
Physiology-reference limitationsThe only provisional reference rate is mouse spiral rotation at 14.0625 to 25.0 Hz from a different context, while this filename indicates paced recording.infophysiology reviewer
Baseline drift/bleachingInspector reports slow baseline change nearly one beat amplitude, so detrending and baseline handling may materially affect amplitude-based and rotor-related measurements.warnsignal-processing reviewer
tracker sensitivityStrict/default/loose tracker settings returned 0/4/13 persistent rotors; treat as a tracking-sensitivity review item rather than a false-positive verdict by itself.warnanalysis

Data and code availability

Recording10.6084/m9.figshare.17158742.v1, CC0, Ming Lei
Publication10.1038/s41597-022-01253-1
Analysis code4533745bb9cdd7aab7940336430ca22779950c4f
Stored arraysruns/1d65814d-f982-424e-ae62-1ed747dc6cf7/frames/voltage.npy, runs/1d65814d-f982-424e-ae62-1ed747dc6cf7/frames/phase.npy, runs/1d65814d-f982-424e-ae62-1ed747dc6cf7/frames/maps.npz
Rundone
Review items27 open