| criteria_status.rules | length 20 | length 19 |
| criteria_status.rules[1].description | 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 | Default baseline window (frames) and spatial Gaussian sigma/truncate for phase |
| criteria_status.rules[1].expert | optical mapping analyst | optical mapping analyst (cardiac electrophysiology) |
| criteria_status.rules[1].location | worker/voltage/baseline_rule.py (FACTOR, evaluate) | worker/voltage/preprocess.py (Params) |
| criteria_status.rules[1].values.baseline_frames | [absent] | 901 |
| criteria_status.rules[1].values.factor | 2.0 | [absent] |
| criteria_status.rules[1].values.lowpass | [absent] | None |
| criteria_status.rules[1].values.ok | True | [absent] |
| criteria_status.rules[1].values.required_min_frames | 830 | [absent] |
| criteria_status.rules[1].values.slowest_cycle_frames | 415 | [absent] |
| criteria_status.rules[1].values.source | MAP channel (DAQ log) | [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].description | Default baseline window (frames) and spatial Gaussian sigma/truncate for phase | Tissue = not NaN in frame 0 and nonzero temporal std |
| criteria_status.rules[2].expert | optical mapping analyst (cardiac electrophysiology) | optical mapping analyst |
| criteria_status.rules[2].location | worker/voltage/preprocess.py (Params) | worker/voltage/io.py (tissue_mask) |
| criteria_status.rules[2].values.baseline_frames | 901 | [absent] |
| criteria_status.rules[2].values.lowpass | None | [absent] |
| criteria_status.rules[2].values.rule | [absent] | not NaN in frame 0 and nonzero std |
| criteria_status.rules[2].values.spatial_sigma | 1.0 | [absent] |
| criteria_status.rules[2].values.spatial_truncate | 4.0 | [absent] |
| criteria_status.rules[2].values.tissue_pixels | [absent] | 2332 |
| criteria_status.rules[3].description | Tissue = not NaN in frame 0 and nonzero temporal std | Dye polarity from sign of median per-pixel skew of dV/dt |
| criteria_status.rules[3].expert | optical mapping analyst | optical mapping analyst / voltage dye chemist |
| criteria_status.rules[3].location | worker/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.rule | not NaN in frame 0 and nonzero std | [absent] |
| criteria_status.rules[3].values.tissue_pixels | 2332 | [absent] |
| criteria_status.rules[4].description | Dye polarity from sign of median per-pixel skew of dV/dt | Phase singularity = |winding| > threshold turns, >= erode px from tissue edge |
| criteria_status.rules[4].expert | optical mapping analyst / voltage dye chemist | computational cardiac electrophysiologist (phase mapping) |
| criteria_status.rules[4].location | worker/voltage/preprocess.py (polarity) | worker/voltage/preprocess.py (Params.rotor_threshold, rotor_erode_px) |
| criteria_status.rules[4].values.method | median skew of dV/dt | [absent] |
| criteria_status.rules[4].values.result | -1 | [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].description | Phase singularity = |winding| > threshold turns, >= erode px from tissue edge | Track linking distance/gap and minimum lifetime for a persistent rotor |
| criteria_status.rules[5].location | worker/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] | 52 |
| criteria_status.rules[5].values.rotor_erode_px | 3 | [absent] |
| criteria_status.rules[5].values.rotor_threshold | 0.9 | [absent] |
| criteria_status.rules[6].description | Track linking distance/gap and minimum lifetime for a persistent rotor | Opposite-charge singularities within pair distance are a pair; tracks paired most of their life are excluded from rotors |
| criteria_status.rules[6].location | worker/voltage/rotors.py (TrackParams) | worker/voltage/rotors.py (TrackParams.pair_dist_px, paired_frac) |
| criteria_status.rules[6].values.link_px | 4.0 | [absent] |
| criteria_status.rules[6].values.max_gap | 5 | [absent] |
| criteria_status.rules[6].values.min_cycles | 1.0 | [absent] |
| criteria_status.rules[6].values.min_frames | 52 | [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].description | Opposite-charge singularities within pair distance are a pair; tracks paired most of their life are excluded from rotors | Filter levels tested: spatial sigma and baseline window values |
| criteria_status.rules[7].expert | computational cardiac electrophysiologist (phase mapping) | optical mapping analyst |
| criteria_status.rules[7].location | worker/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': 901, '3x_cycle': 1356, '6x_cycle': 2712, '1.5x_cycle': 678} |
| criteria_status.rules[7].values.pair_dist_px | 3.0 | [absent] |
| criteria_status.rules[7].values.paired_frac | 0.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].description | Filter levels tested: spatial sigma and baseline window values | Frames analysed: whole recording minus one filter pad at each end (unless the plan narrows it) |
| criteria_status.rules[8].expert | optical mapping analyst | cardiac electrophysiologist familiar with the dataset |
| criteria_status.rules[8].location | worker/voltage/sensitivity.py (SIGMAS, BASELINE_MULTIPLES, baseline_levels) | worker/voltage/runs.py (default_window) |
| criteria_status.rules[8].values.baselines | {'run': 901, '3x_cycle': 1356, '6x_cycle': 2712, '1.5x_cycle': 678} | [absent] |
| criteria_status.rules[8].values.f0 | [absent] | 500 |
| criteria_status.rules[8].values.f1 | [absent] | 8767 |
| 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].description | Frames 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].expert | cardiac electrophysiologist familiar with the dataset | imaging scientist (camera acquisition and noise) |
| criteria_status.rules[9].location | worker/voltage/runs.py (default_window) | worker/voltage/inspect.py (prior_processing) |
| criteria_status.rules[9].values.f0 | 500 | [absent] |
| criteria_status.rules[9].values.f1 | 8767 | [absent] |
| criteria_status.rules[9].values.flags | [absent] | ['negative_values', 'non_integer', 'nan_mask_all_frames', '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].description | Thresholds for flagging depositor processing (normalization, masking, temporal/spatial smoothing) | Baseline step = consensus upward step in tissue-mean raw baseline (cause not inferred; first misread as light onset, contradicted by the DAQ) |
| criteria_status.rules[10].expert | imaging scientist (camera acquisition and noise) | optical mapping experimentalist |
| criteria_status.rules[10].location | worker/voltage/inspect.py (prior_processing) | worker/voltage/events.py (detect_baseline_step) |
| criteria_status.rules[10].values.flags | ['negative_values', 'non_integer', 'nan_mask_all_frames', 'temporal_smoothing', 'spatial_smoothing'] | [absent] |
| criteria_status.rules[10].values.thresholds | {'int_frac': 0.5, 'neg_frac': 0.01, 'dv_autocorr': 0.5, 'neighbour_corr': 0.8} | [absent] |
| criteria_status.rules[11].description | Baseline step = consensus upward step in tissue-mean raw baseline (cause not inferred; first misread as light onset, contradicted by the DAQ) | DAQ channel names from depositor notebook; frames = first N triggers of closest burst; midpoint thresholds |
| criteria_status.rules[11].expert | optical mapping experimentalist | experimentalist who recorded the data (or the depositor) |
| criteria_status.rules[11].location | worker/voltage/events.py (detect_baseline_step) | worker/voltage/daq.py |
| criteria_status.rules[11].values.events | [absent] | ['illumination_on@0', 'arrhythmia_termination@3153', 'illumination_off@4977'] |
| criteria_status.rules[12].description | DAQ channel names from depositor notebook; frames = first N triggers of closest burst; midpoint thresholds | Mouse segments bounded by DAQ light events and the baseline step, interpreted as spiral termination under illumination (project lead, from Hussaini et al. 2023) |
| criteria_status.rules[12].expert | experimentalist who recorded the data (or the depositor) | cardiac electrophysiologist (ideally the depositing authors) |
| criteria_status.rules[12].location | worker/voltage/daq.py | worker/voltage/annotations.py (MOUSE_SEGMENTS) |
| criteria_status.rules[12].values.events | ['illumination_on@0', 'arrhythmia_termination@3153', 'illumination_off@4977'] | [absent] |
| criteria_status.rules[12].values.illuminated_after_termination | [absent] | [3170, 4977] |
| criteria_status.rules[12].values.illuminated_arrhythmia | [absent] | [0, 3170] |
| criteria_status.rules[12].values.light_off | [absent] | [4977, 9267] |
| criteria_status.rules[13].description | Mouse segments bounded by DAQ light events and the baseline step, interpreted as spiral termination under illumination (project lead, from Hussaini et al. 2023) | Singularity before/after finding holds if frac(before) >= min_frac and >= min_ratio x frac(after) at every setting (also kept, superseded, for persistent rotors) |
| criteria_status.rules[13].expert | cardiac electrophysiologist (ideally the depositing authors) | cardiac electrophysiologist + biostatistician |
| criteria_status.rules[13].location | worker/voltage/annotations.py (MOUSE_SEGMENTS) | worker/voltage/sensitivity.py (MIN_FRAC, MIN_RATIO) |
| criteria_status.rules[13].values.illuminated_after_termination | [3170, 4977] | [absent] |
| criteria_status.rules[13].values.illuminated_arrhythmia | [0, 3170] | [absent] |
| criteria_status.rules[13].values.light_off | [4977, 9267] | [absent] |
| criteria_status.rules[13].values.min_frac | [absent] | 0.1 |
| criteria_status.rules[13].values.min_ratio | [absent] | 2.0 |
| criteria_status.rules[14].description | Singularity before/after finding holds if frac(before) >= min_frac and >= min_ratio x frac(after) at every setting (also kept, superseded, for persistent rotors) | Persistent-rotor finding holds if every 'present' segment has >= 1 persistent rotor and every 'absent' segment has none, at every setting |
| criteria_status.rules[14].expert | cardiac electrophysiologist + biostatistician | cardiac electrophysiologist |
| criteria_status.rules[14].location | worker/voltage/sensitivity.py (MIN_FRAC, MIN_RATIO) | worker/voltage/sensitivity.py (MIN_ROTORS_PRESENT, MAX_ROTORS_ABSENT) |
| criteria_status.rules[14].values.expect | [absent] | {'light_off': 'absent', 'illuminated_arrhythmia': 'present', 'illuminated_after_termination': 'absent'} |
| criteria_status.rules[14].values.max_absent | [absent] | 0 |
| criteria_status.rules[14].values.min_frac | 0.1 | [absent] |
| criteria_status.rules[14].values.min_lifetime_frames | [absent] | 52 |
| criteria_status.rules[14].values.min_present | [absent] | 1 |
| criteria_status.rules[14].values.min_ratio | 2.0 | [absent] |
| criteria_status.rules[14].values.spanning_rotor | [absent] | counts in every segment it overlaps |
| criteria_status.rules[15].description | Persistent-rotor finding holds if every 'present' segment has >= 1 persistent rotor and every 'absent' segment has none, at every setting | The pipeline agent's hold/proceed decision from protocol mismatches and inspector anomalies; it chooses no parameter |
| criteria_status.rules[15].expert | cardiac electrophysiologist | optical mapping analyst |
| criteria_status.rules[15].location | worker/voltage/sensitivity.py (MIN_ROTORS_PRESENT, MAX_ROTORS_ABSENT) | worker/agents/pipeline.py (INSTRUCTIONS, validator) |
| criteria_status.rules[15].values.anomalies | [absent] | ['Pre-deposit processing / raw-data label', 'Event interpretation at frame 3170', 'Baseline and illumination artifact'] |
| criteria_status.rules[15].values.expect | {'light_off': 'absent', 'illuminated_arrhythmia': 'present', 'illuminated_after_termination': 'absent'} | [absent] |
| criteria_status.rules[15].values.max_absent | 0 | [absent] |
| criteria_status.rules[15].values.min_lifetime_frames | 52 | [absent] |
| criteria_status.rules[15].values.min_present | 1 | [absent] |
| criteria_status.rules[15].values.mismatches | [absent] | [] |
| criteria_status.rules[15].values.model | [absent] | openai:gpt-5.5 |
| criteria_status.rules[15].values.proceed | [absent] | True |
| criteria_status.rules[15].values.spanning_rotor | counts in every segment it overlaps | [absent] |
| criteria_status.rules[16].description | The pipeline agent's hold/proceed decision from protocol mismatches and inspector anomalies; it chooses no parameter | 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 |
| criteria_status.rules[16].expert | optical mapping analyst | cardiac electrophysiologist per species |
| criteria_status.rules[16].location | worker/agents/pipeline.py (INSTRUCTIONS, validator) | worker/voltage/physiology.py (RANGES, TOLERANCE_FRAC) |
| criteria_status.rules[16].values.anomalies | ['Pre-deposit processing / raw-data label', 'Event interpretation at frame 3170', 'Baseline and illumination artifact', 'Baseline-window rule'] | [absent] |
| criteria_status.rules[16].values.mismatches | [] | [absent] |
| criteria_status.rules[16].values.model | openai:gpt-5.5 | [absent] |
| criteria_status.rules[16].values.proceed | True | [absent] |
| criteria_status.rules[16].values.ranges | [absent] | ['mouse_spiral_rotation_hz'] |
| criteria_status.rules[16].values.segment_rhythm_rule | [absent] | expected persistent rotors 'present' -> spiral arrhythmia |
| criteria_status.rules[16].values.tolerance_frac | [absent] | 0.25 |
| criteria_status.rules[17].description | 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 | 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' |
| criteria_status.rules[17].expert | cardiac electrophysiologist per species | biostatistician + optical mapping analyst |
| criteria_status.rules[17].location | worker/voltage/physiology.py (RANGES, TOLERANCE_FRAC) | worker/agents/critic.py (STABLE_FRAC, stability) |
| criteria_status.rules[17].values.ranges | ['mouse_spiral_rotation_hz'] | [absent] |
| criteria_status.rules[17].values.segment_rhythm_rule | expected persistent rotors 'present' -> spiral arrhythmia | [absent] |
| criteria_status.rules[17].values.stable_frac | [absent] | 0.25 |
| criteria_status.rules[17].values.tolerance_frac | 0.25 | [absent] |
| criteria_status.rules[17].values.unstable | [absent] | ['light_off.singularity_frames_frac', 'illuminated_arrhythmia.persistent_rotors', 'illuminated_arrhythmia.persistent_rotor_count_max', 'illuminated_arrhythmia.dominant_freq_hz', 'illuminated_after_termination.singularity_frames_frac', 'persistent_rotor_tracks'] |
| criteria_status.rules[18].description | 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' | 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 |
| criteria_status.rules[18].expert | biostatistician + optical mapping analyst | computational cardiac electrophysiologist (phase mapping) |
| criteria_status.rules[18].location | worker/agents/critic.py (STABLE_FRAC, stability) | worker/agents/critic.py (persistence_variants) |
| criteria_status.rules[18].values.measured_cycle | [absent] | 52 |
| criteria_status.rules[18].values.paper_rotation | [absent] | 50 |
| criteria_status.rules[18].values.stable_frac | 0.25 | [absent] |
| criteria_status.rules[18].values.unstable | ['light_off.singularity_frames_frac', 'illuminated_arrhythmia.persistent_rotors', 'illuminated_arrhythmia.persistent_rotor_count_max', 'illuminated_arrhythmia.dominant_freq_hz', 'illuminated_after_termination.singularity_frames_frac', 'persistent_rotor_tracks'] | [absent] |
| pipeline.baseline_rule | {'ok': True, 'ratio': 2.171, 'cycles': {'light_off': {'cycle_frames': 411, 'n_activations': 10, 'polarity_used': -1, 'median_interval_ms': 410.9}, 'illuminated_arrhythmia': {'cycle_frames': 52, 'n_activations': 53, 'polarity_used': -1, 'median_interval_ms': 52.25}, 'illuminated_after_termination': {'cycle_frames': 415, 'n_activations': 4, 'polarity_used': -1, 'median_interval_ms': 415.0}}, 'factor': 2.0, 'reason': None, 'source': 'MAP channel (DAQ log)', 'status': 'provisional', 'daq_file': '0111210010.txt', 'baseline_frames': 901, 'slowest_segment': 'illuminated_after_termination', 'required_min_frames': 830, 'slowest_cycle_frames': 415} | None |
| pipeline.check.anomalies | length 4 | length 3 |
| pipeline.check.anomalies[0].effect_on_analysis | The deposited movie should not be treated as raw camera counts: depositor documentation and measurements indicate masking, temporal smoothing, spatial smoothing, and normalization. The fixed pipeline may still be run, but its Gaussian phase smoothing is added on top of prior filtering of unknown effective total, and any interpretation requiring independent pixel noise or raw photon-count amplitudes would be misleading. | The deposited movie should not be treated as raw camera counts: documentation and measurements indicate masking, temporal smoothing, spatial smoothing, and normalization before deposit. The fixed pipeline can still be run, but the protocol spatial_sigma = 1.0 Gaussian for phase is applied on top of prior spatial smoothing, so the total filtering is unknown; noise- or amplitude-dependent interpretations, including SNR and fine spatial structure, should be treated cautiously. |
| pipeline.check.anomalies[1].effect_on_analysis | The segment boundary at frame 3170 is based on a provisional termination/baseline-step interpretation, not a directly measured light onset. The fixed segment definitions can be analysed as defined, but results should be described relative to the provisional boundary and not as an illumination-on transition. | The segment boundary at frame 3170 is usable only as a provisional fluorescence baseline/rhythm-change or inferred termination boundary. DAQ and photodiode evidence indicate illumination was already on before frame 0 and turned off at frame 4977, so analyses must not interpret frame 3170 as light onset. |
| pipeline.check.anomalies[2].effect_on_analysis | Blue-light crosstalk, re-normalization by stimulation-light signal, a large slow baseline range, and a baseline step can affect absolute baseline and amplitude. The fixed phase/rotor pipeline can proceed, but baseline- or amplitude-dependent interpretations need caution. | Blue-light crosstalk, re-normalization to the stimulation-light signal, a large slow baseline range, and a baseline step can bias absolute fluorescence baseline and amplitude measures. The fixed high-pass baseline window and phase analysis may proceed, but baseline/amplitude results and event-related changes need caveats. |
| pipeline.check.methods_text | Using the provisional parameter set version 3, with provisional segment definitions and provisional criteria, the recording was checked under the Mouse whole heart optical mapping (Luther lab) protocol 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 recording has 9267 frames in npy format with image size 64 × 55, frame rate 1000 Hz from the publication, and pixel size 133 µm from the publication. The analysed window is frames 500–8767; the provisional segments are illuminated_arrhythmia, frames 0–3170; illuminated_after_termination, frames 3170–4977; and light_off, frames 4977–9267. | For this run, the provisional parameter set and criteria are protocol f65d786f-f194-4be2-88b8-10d3dd25d674 version 3 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 is 1000 Hz from the publication, and the pixel size is 133 µm from the publication. The analysed window is frames 500 to 8767. The provisional segment definitions are illuminated_arrhythmia, frames 0 to 3170; illuminated_after_termination, frames 3170 to 4977; and light_off, frames 4977 to 9267. |
| pipeline.check.rationale | The protocol is the intended mouse whole-heart optical-mapping protocol for this public reference recording, and the recording facts do not conflict with the protocol: the frame rate is 1000 Hz from the publication, the pixel size is 133 µm from the publication, and the 64 × 55 deposited movie is consistent with a cropped version of the 64 × 64 camera acquisition. The fixed version-3 parameters are therefore applicable as provisional pipeline settings, and the coded baseline-window rule passes for the slowest segment. The main limitations are not protocol mismatches but interpretation caveats: the deposited data are already masked, smoothed, and normalized; frame 3170 is a provisional termination/baseline-step boundary rather than light onset; and illumination/crosstalk/normalization affect baseline and amplitude. | The recording fits the mouse whole-heart Luther-lab protocol as available: the species and tissue agree, the publication-supported frame rate is 1000 Hz, and the 64 × 55 deposited image is consistent with a cropped version of the 64 × 64 camera acquisition described in the paper rather than a protocol conflict. The protocol has no fixed indicator, frame-rate, pixel-size, or image-size value that is contradicted by the recording facts. With the fixed version 3 baseline_frames = 901, the baseline window spans more than the caveated minimum cycle coverage in each segment at the measured dominant rhythms, so the frame-based temporal parameters are not made inappropriate by this recording. The main limitations are not blocking mismatches but warnings: prior smoothing/normalization, provisional event interpretation at frame 3170, and illumination-related baseline artifacts affect interpretation of filtered, amplitude, and event-aligned outputs. |
| methods_text | Using the provisional parameter set version 3, with provisional segment definitions and provisional criteria, the recording was checked under the Mouse whole heart optical mapping (Luther lab) protocol 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 recording has 9267 frames in npy format with image size 64 × 55, frame rate 1000 Hz from the publication, and pixel size 133 µm from the publication. The analysed window is frames 500–8767; the provisional segments are illuminated_arrhythmia, frames 0–3170; illuminated_after_termination, frames 3170–4977; and light_off, frames 4977–9267. | For this run, the provisional parameter set and criteria are protocol f65d786f-f194-4be2-88b8-10d3dd25d674 version 3 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 is 1000 Hz from the publication, and the pixel size is 133 µm from the publication. The analysed window is frames 500 to 8767. The provisional segment definitions are illuminated_arrhythmia, frames 0 to 3170; illuminated_after_termination, frames 3170 to 4977; and light_off, frames 4977 to 9267. |