{% macro file_validation_report(validation_results, file_name) -%}
{% for check_type, check_per_file in validation_results.items() %}
{% set result = check_per_file.get(file_name, {}) %}
{% if check_type == "assembly_check" %}
{{ assembly_check(result) }}
{% elif check_type == "vcf_check" %}
{{ vcf_check(result) }}
{% endif %}
{% endfor %}
{%- endmacro %}
{% macro vcf_check(vcf_check_result) %}
{% set critical_count = vcf_check_result.get("critical_count", 0) %}
{% set error_count = vcf_check_result.get("error_count", 0) %}
{% set expand_icon = "" %}
{% if critical_count > 0 %}
{% set expand_icon = "▶" %}
{% set icon = "❌" %}
{% set row_class = "report-section fail collapsible" %}
{% elif error_count > 0 %}
{% set expand_icon = "▶" %}
{% set icon = "❌" %}
{% set row_class = "report-section warn collapsible" %}
{% else %}
{% set icon = "✔" %}
{% set row_class = "report-section pass" %}
{% endif %}
{{ expand_icon }} {{ icon }} VCF check: {{ critical_count }} critical errors, {{ error_count }} non-critical errors
{% set critical_list = vcf_check_result.get("critical_list") %}
{% set error_list = vcf_check_result.get("error_list") %}
{% if critical_list or error_list%}
First 10 errors per category are below. Full report: {{ vcf_check_result.get('report_path', '') }}
Category | Error |
{% for error in critical_list[:10] %}
critical error | {{ error }} |
{% endfor %}
{% for error in error_list[:10] %}
non-critical error | {{ error }} |
{% endfor %}
{% endif %}
{%- endmacro %}
{% macro assembly_check(assembly_check_result) %}
{% set nb_match = assembly_check_result.get("match", 0) %}
{% set nb_total = assembly_check_result.get("total", 0) %}
{% set match_percentage = nb_match / nb_total * 100 if nb_total else 0 %}
{% set expand_icon = "" %}
{% if assembly_check_result.get("nb_mismatch", 0) > 0 or nb_total == 0 %}
{% set expand_icon = "▶" %}
{% set icon = "❌" %}
{% set row_class = "report-section fail collapsible" %}
{% else %}
{% set icon = "✔" %}
{% set row_class = "report-section pass" %}
{% endif %}
{{ expand_icon }} {{ icon }} Assembly check: {{ nb_match }}/{{ nb_total }} ({{ match_percentage|round(2) }}%)
{% set mismatch_list = assembly_check_result.get("mismatch_list") %}
{% set error_list = assembly_check_result.get("error_list") %}
{% if mismatch_list or error_list %}
First 10 errors per category are below. Full report: {{ assembly_check_result.get('report_path', '') }}
Category | Error |
{% for error in error_list[:10] %}
Parsing Error | {{ error }} |
{% endfor %}
{% for error in mismatch_list[:10] %}
mismatch error | {{ error }} |
{% endfor %}
{% endif %}
{%- endmacro %}