| criteria_status.rules | length 19 | length 20 |
| criteria_status.rules[16].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 | The pipeline agent's hold/proceed decision from protocol mismatches and inspector anomalies; it chooses no parameter |
| criteria_status.rules[16].expert | cardiac electrophysiologist per species | optical mapping analyst |
| criteria_status.rules[16].location | worker/voltage/physiology.py (RANGES, TOLERANCE_FRAC) | worker/agents/pipeline.py (INSTRUCTIONS, validator) |
| criteria_status.rules[16].values.anomalies | [absent] | ['Pre-deposit processing / raw-data label', 'Event interpretation at frame 3170', 'Baseline and illumination artifact', 'baseline-window rule'] |
| criteria_status.rules[16].values.mismatches | [absent] | [] |
| criteria_status.rules[16].values.model | [absent] | openai:gpt-5.5 |
| criteria_status.rules[16].values.proceed | [absent] | True |
| criteria_status.rules[16].values.ranges | ['mouse_spiral_rotation_hz'] | [absent] |
| criteria_status.rules[16].values.segment_rhythm_rule | expected persistent rotors 'present' -> spiral arrhythmia | [absent] |
| criteria_status.rules[16].values.tolerance_frac | 0.25 | [absent] |
| criteria_status.rules[17].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' | 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[17].expert | biostatistician + optical mapping analyst | cardiac electrophysiologist per species |
| criteria_status.rules[17].location | worker/agents/critic.py (STABLE_FRAC, stability) | worker/voltage/physiology.py (RANGES, TOLERANCE_FRAC) |
| criteria_status.rules[17].values.ranges | [absent] | ['mouse_spiral_rotation_hz'] |
| criteria_status.rules[17].values.segment_rhythm_rule | [absent] | expected persistent rotors 'present' -> spiral arrhythmia |
| criteria_status.rules[17].values.stable_frac | 0.25 | [absent] |
| criteria_status.rules[17].values.tolerance_frac | [absent] | 0.25 |
| criteria_status.rules[17].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] |
| criteria_status.rules[18].description | 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 | 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[18].expert | computational cardiac electrophysiologist (phase mapping) | biostatistician + optical mapping analyst |
| criteria_status.rules[18].location | worker/agents/critic.py (persistence_variants) | worker/agents/critic.py (STABLE_FRAC, stability) |
| criteria_status.rules[18].values.measured_cycle | 52 | [absent] |
| criteria_status.rules[18].values.paper_rotation | 50 | [absent] |
| criteria_status.rules[18].values.stable_frac | [absent] | 0.25 |
| criteria_status.rules[18].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'] |
| pipeline.check | None | {'model': 'openai:gpt-5.5', 'proceed': True, 'anomalies': [{'topic': 'Pre-deposit processing / raw-data label', 'severity': 'warn', 'effect_on_analysis': "The recording should not be treated as raw camera counts; masking, temporal smoothing, spatial smoothing, and normalization affect noise assumptions and add unknown filtering before the protocol's Gaussian phase smoothing."}, {'topic': 'Event interpretation at frame 3170', 'severity': 'warn', 'effect_on_analysis': 'The frame-3170 boundary is an interpreted fluorescence/rhythm event rather than measured light onset; segment interpretation is provisional.'}, {'topic': 'Baseline and illumination artifact', 'severity': 'info', 'effect_on_analysis': 'Illumination crosstalk, normalization to stimulation-light signal, slow fluorescence change, and a fluorescence step affect absolute fluorescence and amplitude interpretation.'}, {'topic': 'baseline-window rule', 'severity': 'info', 'effect_on_analysis': 'The coded rule passes with baseline_frames 901, slowest_cycle_frames 415, required_min_frames 830, and ratio 2.171.'}], 'rationale': 'The fixed protocol is appropriate to run as a provisional analysis because the recording matches the intended mouse whole-heart optical mapping reference data and no recording fact mismatch makes the frame-based parameters wrong. The frame rate is 1000 Hz from the publication with DAQ consistency, and the coded baseline rule passes for the version 3 baseline of 901 frames. Interpretation is qualified by prior processing, the provisional frame-3170 event boundary, and illumination/normalization effects on fluorescence amplitude.', 'mismatches': [], 'hold_reason': None, 'protocol_id': 'f65d786f-f194-4be2-88b8-10d3dd25d674', 'methods_text': 'Using provisional parameter set version 3 for protocol f65d786f-f194-4be2-88b8-10d3dd25d674, the fixed parameters were 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 by 55, frame rate 1000 Hz from publication 10.1371/journal.pcbi.1011660 with DAQ consistency, and pixel size 133 µm from the same publication. The analysed window was frames 500 to 8767, with provisional segment definitions and criteria: illuminated_arrhythmia frames 0 to 3170, illuminated_after_termination frames 3170 to 4977, and light_off frames 4977 to 9267.', 'params_version': 3, 'prompt_version': 'pipeline-v2'} |
| methods_text | Recording Mouse heart, spiral wave and optogenetic termination (M13Rec001) (doi:10.5281/zenodo.10228296; 64x55 px, 9267 frames, 1000 Hz) was analysed over frames 500-8767. Deposit shows signs of prior processing (provisional): negative values, non integer, nan mask all frames, temporal smoothing, spatial smoothing. Each pixel was baseline-corrected by subtracting a 901-frame centered moving average; NaN pixels were set to zero. Dye polarity (inverted) 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 500 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 >= 52 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. Acquisition log (LED trigger channel, provisional interpretation): illumination on over frames 500-4977 of the analysed frames 500-8767. Segments (provisional, project lead (not a domain scientist), following the paper's design): illumination with arrhythmia frames 500-3170 (expected persistent rotors: present); illumination after termination frames 3170-4977 (expected persistent rotors: absent); light off frames 4977-8767 (expected persistent rotors: absent). Sensitivity: baseline 2712, 1356, 678, 901 frames x sigma 0.5, 1.0, 2.0 px, and tracker variants. singularities: across filters holds (provisional). persistent rotors: across filters holds (provisional); across trackers holds (provisional). persistent rotors fraction superseded: across filters does not hold (provisional); across trackers does not hold (provisional). All thresholds and criteria are provisional pending review by a domain scientist. | Using provisional parameter set version 3 for protocol f65d786f-f194-4be2-88b8-10d3dd25d674, the fixed parameters were 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 by 55, frame rate 1000 Hz from publication 10.1371/journal.pcbi.1011660 with DAQ consistency, and pixel size 133 µm from the same publication. The analysed window was frames 500 to 8767, with provisional segment definitions and criteria: illuminated_arrhythmia frames 0 to 3170, illuminated_after_termination frames 3170 to 4977, and light_off frames 4977 to 9267. |