mouseventricle06062018_A_Cool_SR, Mouse Whole Heart Optical Mapping Data: Mouse Whole Heart.zip/Mouse Whole Heart/06062018 A/mouseventricle06062018 A_Cool SR
51 × 51 px, 5,000 frames, 1 kHz, 156 µm/px
Run 59f54d2a, 2026-10-28 19:02 UTC, protocol parameters v3, code 0aee293 (uncommitted changes), 4 workers, signature b65bf0ab, run view 59f54d2a
Not reportable: range check not passed, code uncommitted changes, parameters unsigned, reviewer sign-off pending; 16 rules open
Properties
| Deposit | 10.6084/m9.figshare.17158742.v1 |
| Publication | 10.1038/s41597-022-01253-1 |
| Licence | CC0 (as stated: CC0) |
| Authors | Ming Lei |
| File | uploads/public/5a7107e9/Mouse_Whole_Heart.zip/Mouse_Whole_Heart/06062018_A/mouseventricle06062018_A_Cool_SR.mat, mat, 25,125,468 bytes |
| sha256 | fb2553a4d17c46915a90b8441e6dc956e5d75b982263cc7432493a2fb223a658 |
| Frame rate | 1000.0 Hz, admission 10.1038/s41597-022-01253-1 |
| Pixel size | 156.0 µm, admission 10.1038/s41597-022-01253-1 |
| Polarity | inverted (depolarization downward), measured |
| Segments source | admission (project lead); no comparison defined |
| Protocol | Mouse whole heart optical mapping (Luther lab), mouse, whole heart; parameters v3 set by developer (not a domain scientist): version 3: baseline 901 frames = 2.1 x the 433-frame (2.31 Hz) post-termination cycle resolved under v2; v2's 641 frames was 1.48 cycles, on the 1.5-cycle line, and the pipeline check held one run and passed another on the same inputs. pad 500 >= half the window. Provisional (REVIEW_NEEDED item 16). |
| Run | 59f54d2a-663b-4591-befa-75a5fcb08c8e |
| Started, finished | 2026-10-28 19:02 UTC, 2026-10-28 19:06 UTC |
| Code | 0aee29346248785f557664cd859ddeb50fecd3d5 (uncommitted changes) |
| Workers | 4 |
| Steps | load, deposit_checks, baseline_correct, polarity, spatial_filter(phase only), hilbert_phase, phase_singularities, track_and_pair, beats_apd_cv, sensitivity, render |
| Signature | b65bf0ab-0e52-4c93-8182-b8211c4efb27, 2026-10-28 19:05 UTC |
| Movie | runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/movie.mp4 |
| Lossless frames | runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/voltage.npy, runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/phase.npy, runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/maps.npz; shape 4000 × 51 × 51, <f4 |
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 = 154 pair_dist_px = 3.0; % opposite-charge pairing paired_frac = 0.5; % max paired fraction of a track render_step = 4; % movie only
Segments
| Segment | Defined | Analysed | Cycle, frames | Expected Rotors | Bounded By |
|---|---|---|---|---|---|
| Whole recording | 0–5,000 | 500–4,500 | 7 (96% of pixels) | not stated | recording 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
| Metric | Unit | Whole recording | Physiological Range |
|---|---|---|---|
| Rhythm | |||
| Dominant frequency | Hz | 6.500 | none cited |
| Rotors | |||
| Persistent rotors | count | 0–20 | none cited |
| Max concurrent persistent rotors | count | 0–3 | none cited |
| Frames with a singularity | fraction | 0.027–0.695 | none cited |
| Beats, where a global rhythm exists | |||
| Beats | count | 26 | none cited |
| Global amplitude ratio | ratio | 0.74 | gate ≥ 0.30 provisional |
| APD50 | ms | 10 | none cited |
| APD90 | ms | 47 | none cited |
| Conduction velocity | cm/s | 2.5 | 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: 6.500 Hz.
| Criterion | Rule | Result |
|---|---|---|
| Design expectations | none stated for this recording's segments | no 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 provisional criteria were applied with 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 frame rate was 1000.0 Hz from the admitted paper-methods source, and the pixel size was 156.0 µm from the same source. The recording contained 5000 frames of 51 × 51 pixels, and the analysed frames were 500 to 4500. The provisional segment definition was a single whole_recording segment spanning frames 0 to 5000.
Reportable values
| Metric | Segment | Value | Unit | Status |
|---|---|---|---|---|
| persistent rotor tracks | all | 0–20 | count | unstable, not reportable |
| dominant freq (Hz) | whole recording | 6.5 | Hz | no cited range |
| persistent rotors | whole recording | 0–20 | count | unstable, not reportable |
| singularity frames fraction | whole recording | 0.0272–0.695 | fraction of frames | unstable, not reportable |
| persistent rotor count max | whole recording | 0–3 | count | unstable, not reportable |
physiology_ok: not decided (no cited range passed or failed); send back: True. Verdict: do not report this signature as it stands. Reportable only descriptively is the stable dominant frequency of 6.5 Hz, which has no cited range in the checks; the unstable, not-reportable findings are singularity_frames_frac 0.02725–0.69475, persistent_rotors 0.0–20.0, persistent_rotor_count_max 0.0–3.0, and persistent_rotor_tracks 0.0–20.0. Persistent-rotor threshold variants are not applicable because there are no segment expectations; strict/default/loose trackers found 0/6/20 persistent rotors, so track review is needed even though the tool's rule-verdict agreement flag is true. The frame rate documentation block, rhythm-assumption warning, tissue/chamber metadata conflict, unavailable publication/deposit text, and whole-frame mask should be reviewed before timing-dependent or chamber-specific interpretation. Context for mouse spiral rotation is limited to DOI 10.1371/journal.pcbi.1011660, which reports approximately 20 Hz before illumination and 18.75 Hz during illumination; the ranges, the stability threshold, and the criteria used here are provisional.
Provisional rules
| Rule, Location | Description | Expert | Status |
|---|---|---|---|
| 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 deviate | optical mapping analyst | provisional |
| 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 code | optical mapping analyst | provisional |
| filter_defaults worker/voltage/preprocess.py (Params) | Default baseline window (frames) and spatial Gaussian sigma/truncate for phase | optical 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 recorded | optical mapping analyst | provisional |
| polarity worker/voltage/preprocess.py (polarity) | Dye polarity from sign of median per-pixel skew of dV/dt | optical mapping analyst / voltage dye chemist | provisional |
| singularity_detection worker/voltage/preprocess.py (Params.rotor_threshold, rotor_erode_px) | Phase singularity = |winding| > threshold turns, >= erode px from tissue edge | computational cardiac electrophysiologist (phase mapping) | provisional |
| rotor_persistence worker/voltage/rotors.py (TrackParams) | Track linking distance/gap and minimum lifetime for a persistent rotor | computational 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 rotors | computational cardiac electrophysiologist (phase mapping) | provisional |
| sensitivity_grid worker/voltage/sensitivity.py (SIGMAS, BASELINE_MULTIPLES, baseline_levels) | Filter levels tested: spatial sigma and baseline window values | optical mapping analyst | provisional |
| 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 dataset | provisional |
| 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 parameter | optical mapping analyst | provisional |
| 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 checks | cardiac electrophysiologist per species | provisional |
| 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 analyst | provisional |
| 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 flagged | computational 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 setting | cardiac electrophysiologist | provisional |
Review items
| Topic | Detail | Severity | Reviewer |
|---|---|---|---|
| unstable:whole_recording.singularity_frames_frac | Sensitivity grid range is 0.02725 to 0.69475; unstable metrics are not reportable as single values under the provisional stability rule. | warn | analysis |
| unstable:whole_recording.persistent_rotors | Sensitivity/tracker range is 0.0 to 20.0; review phase-singularity detections and tracks before reporting rotor burden. | warn | analysis |
| unstable:whole_recording.persistent_rotor_count_max | Sensitivity/tracker range is 0.0 to 3.0; maximum concurrent rotor count is not reportable without review. | warn | analysis |
| unstable:persistent_rotor_tracks | Track count range is 0.0 to 20.0; tracker sensitivity should be reviewed and not interpreted as proof the finding is false. | warn | analysis |
| Frame rate not documented | No frame rate was documented on the recording row, deposit metadata could not be fetched, publication text fetch failed, and no acquisition log is present; timing-dependent analysis should treat the frame rate as uncertain. | block | inspector |
| Rhythm assumption is provisional | Frame-rate inference assumes mouse spiral rotation using provisional reference rates that have not been domain-scientist reviewed. | warn | inspector |
| Tissue/chamber metadata conflict | The overview identifies mouse atrium while the file path says mouseventricle06062018 A_Cool SR; chamber-specific interpretation may be misleading until resolved. | warn | inspector |
| Publication/deposit text unavailable | Deposit metadata and linked paper text were unavailable to the tool, so preprocessing documentation, dye identity, and acquisition details could not be verified from text. | warn | inspector |
| Mask covers entire frame | The mask covers the full frame based only on nonzero temporal standard deviation; non-tissue background could affect whole-frame measurements. | info | inspector |
| Tracker sensitivity | Strict/default/loose tracking yielded 0/6/20 persistent rotors in the whole recording; this disagreement in counts requires track review but is not by itself a reason to call the finding false. | warn | analysis |
Data and code availability
| Recording | 10.6084/m9.figshare.17158742.v1, CC0, Ming Lei |
| Publication | 10.1038/s41597-022-01253-1 |
| Analysis code | 0aee29346248785f557664cd859ddeb50fecd3d5 (uncommitted changes) |
| Stored arrays | runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/voltage.npy, runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/phase.npy, runs/59f54d2a-663b-4591-befa-75a5fcb08c8e/frames/maps.npz |