Generated: {{ manifest.get('timestamp', 'N/A') }} |
CellTypePilot v{{ manifest.get('celltypepilot_version', '?') }} |
MKG: {{ manifest.get('mkg_version', '?') }}
Overview
{% if narrative %}
{% endif %}
{{ input_filename }}
Input File
{{ total }}
Total Clusters
{{ passed }}
Passed Critic
{{ flagged }}
Flagged for Review
{{ conf_dist.get('high', 0) }}
High Confidence
{{ conf_dist.get('medium', 0) }}
Medium Confidence
{{ conf_dist.get('low', 0) }}
Low Confidence
{{ conf_dist.get('needs_review', 0) }}
Needs Review
Execution Mode: {{ params.get('execution_mode', 'exploratory')|upper }} |
Species: {{ params.get('species', 'N/A') }}{% if params.get('ortholog_provenance') %} (Bridged from {{ params.get('ortholog_provenance', {}).get('source_species') }}){% endif %} |
Tissue: {{ params.get('tissue', 'N/A') }} |
Cluster key: {{ params.get('cluster_key', 'N/A') }}
{% set validation_scope = params.get('validation_scope') %}
{% if validation_scope %}
Validation scope:
{{ validation_scope.get('run_role', 'draft_annotation_for_human_review') }}.
Batch robustness: {{ validation_scope.get('batch_robustness_claim', 'not_assessed') }};
complex-sample robustness: {{ validation_scope.get('complex_sample_robustness_claim', 'not_assessed') }}.
{{ validation_scope.get('required_for_robustness_claims', '') }}
{% endif %}
{% set uncertainty_language = params.get('uncertainty_language') %}
{% if uncertainty_language %}
Score and uncertainty language:
combined_score/evidence_score =
{{ uncertainty_language.get('score_columns', {}).get('evidence_score', 'heuristic_evidence_score_not_probability') }};
critic_confidence =
{{ uncertainty_language.get('confidence_columns', {}).get('critic_confidence', 'rule_based_review_category_not_probability') }}.
Calibrated probability:
{{ uncertainty_language.get('probability_columns', {}).get('calibrated_probability', 'not_available_from_annotation_run') }}.
Unknown = {{ uncertainty_language.get('abstention', {}).get('unknown_label', 'safety_abstention_not_biological_class') }}.
{% endif %}
{% set risk_adaptive = params.get('risk_adaptive') %}
{% if risk_adaptive %}
Risk-adaptive claim ladder:
working hypotheses = {{ risk_adaptive.get('n_working_hypotheses', 0) }};
scientific claims = {{ risk_adaptive.get('n_scientific_claims', 0) }}.
{{ risk_adaptive.get('claim_boundary', risk_adaptive.get('claim_usage_boundary', '')) }}
Status counts: {{ risk_adaptive.get('claim_status_counts', {}) }}.
{{ risk_adaptive.get('n_working_hypotheses', 0) }}
Working Hypotheses
{{ risk_adaptive.get('n_scientific_claims', 0) }}
Scientific Claims
{{ risk_adaptive.get('claim_status_counts', {}).get('review_gated_draft', 0) }}
Review-Gated Drafts
{{ risk_adaptive.get('claim_status_counts', {}).get('blocked_no_hypothesis', 0) }}
Blocked Hypotheses
{% endif %}
{% set novelty_ood = params.get('novelty_ood') %}
{% if novelty_ood %}
Novelty/OOD review axis:
{{ novelty_ood.get('score_semantics', 'review_priority_score_not_discovery_probability') }}.
Decisions: {{ novelty_ood.get('decision_counts', {}) }}.
{{ novelty_ood.get('claim_boundary', '') }}
{% endif %}