eva-sub-cli 0.4.8__tar.gz → 0.4.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. {eva_sub_cli-0.4.8/eva_sub_cli.egg-info → eva_sub_cli-0.4.9}/PKG-INFO +2 -2
  2. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/_version.py +2 -2
  3. eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates/html_report.html → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html/report.html +3 -3
  4. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/fasta_check.txt +46 -0
  5. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/file_validation.txt +58 -0
  6. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/metadata_validation.txt +33 -0
  7. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/project_details.txt +21 -0
  8. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/report.txt +59 -0
  9. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/sample_name_check.txt +24 -0
  10. eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/text/shallow_validation.txt +16 -0
  11. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/report.py +13 -4
  12. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/validators/validator.py +14 -6
  13. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9/eva_sub_cli.egg-info}/PKG-INFO +2 -2
  14. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli.egg-info/SOURCES.txt +17 -7
  15. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli.egg-info/requires.txt +1 -1
  16. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/requirements.txt +1 -1
  17. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/expected_report_metadata_json.html +1 -1
  18. eva_sub_cli-0.4.9/tests/resources/validation_reports/expected_report_metadata_json.txt +132 -0
  19. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/expected_report_metadata_xlsx.html +1 -1
  20. eva_sub_cli-0.4.9/tests/resources/validation_reports/expected_report_metadata_xlsx.txt +126 -0
  21. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html +1 -1
  22. eva_sub_cli-0.4.9/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt +135 -0
  23. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_report.py +96 -30
  24. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_validator.py +5 -3
  25. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/.github/workflows/publish.yml +0 -0
  26. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/.github/workflows/publish_packages.yml +0 -0
  27. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/.github/workflows/tests.yml +0 -0
  28. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml +0 -0
  29. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/.gitignore +0 -0
  30. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/LICENSE +0 -0
  31. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/README.md +0 -0
  32. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/conda/build.sh +0 -0
  33. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/conda/meta.yaml +0 -0
  34. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/docker/Dockerfile +0 -0
  35. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/docs/Getting_Started_with_eva_sub_cli.md +0 -0
  36. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/__init__.py +0 -0
  37. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/auth.py +0 -0
  38. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/date_utils.py +0 -0
  39. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
  40. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
  41. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/eva-biosamples.json +0 -0
  42. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/eva_logo.png +0 -0
  43. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/eva_schema.json +0 -0
  44. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/etc/spreadsheet2json_conf.yaml +0 -0
  45. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/exceptions/__init__.py +0 -0
  46. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/exceptions/invalid_file_type_exception.py +0 -0
  47. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/exceptions/metadata_template_version_exception.py +0 -0
  48. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/exceptions/submission_not_found_exception.py +0 -0
  49. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/exceptions/submission_status_exception.py +0 -0
  50. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/__init__.py +0 -0
  51. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/check_fasta_insdc.py +0 -0
  52. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/check_metadata_semantics.py +0 -0
  53. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/cli.py +0 -0
  54. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/samples_checker.py +0 -0
  55. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/trim_down.py +0 -0
  56. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/executables/xlsx2json.py +0 -0
  57. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/file_utils.py +0 -0
  58. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/fasta_check.html +0 -0
  59. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/file_validation.html +0 -0
  60. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/metadata_validation.html +0 -0
  61. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/project_details.html +0 -0
  62. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/sample_name_check.html +0 -0
  63. {eva_sub_cli-0.4.8/eva_sub_cli/jinja_templates → eva_sub_cli-0.4.9/eva_sub_cli/jinja_templates/html}/shallow_validation.html +0 -0
  64. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/metadata.py +0 -0
  65. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/nextflow/validation.nf +0 -0
  66. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/orchestrator.py +0 -0
  67. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/semantic_metadata.py +0 -0
  68. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/submission_ws.py +0 -0
  69. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/submit.py +0 -0
  70. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/validators/__init__.py +0 -0
  71. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/validators/docker_validator.py +0 -0
  72. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/validators/native_validator.py +0 -0
  73. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli/validators/validation_results_parsers.py +0 -0
  74. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli.egg-info/dependency_links.txt +0 -0
  75. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli.egg-info/entry_points.txt +0 -0
  76. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/eva_sub_cli.egg-info/top_level.txt +0 -0
  77. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/pyproject.toml +0 -0
  78. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/pytest.ini +0 -0
  79. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/setup.cfg +0 -0
  80. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/setup.py +0 -0
  81. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/build_and_test_docker_locally.py +0 -0
  82. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/ignore_test_nextflow_validation.yml +0 -0
  83. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
  84. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_test.json +0 -0
  85. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_test.xlsx +0 -0
  86. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
  87. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
  88. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/EVA_Submission_test_with_asm_report.json +0 -0
  89. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/assembly_check/invalid.vcf.assembly_check.log +0 -0
  90. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/assembly_check/invalid.vcf.text_assembly_report.txt +0 -0
  91. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/assembly_reports/input_passed.txt +0 -0
  92. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/fasta_files/Saccharomyces_cerevisiae_I.fa +0 -0
  93. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/fasta_files/input_passed.fa +0 -0
  94. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/fasta_files/multi_seq.fa +0 -0
  95. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/metadata_with_filename.json +0 -0
  96. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/sample_checker/example1.vcf.gz +0 -0
  97. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/sample_checker/example2.vcf +0 -0
  98. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/sample_checker/example3.vcf +0 -0
  99. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/sample_checker/metadata.json +0 -0
  100. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log +0 -0
  101. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt +0 -0
  102. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt +0 -0
  103. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/other_validations/input_passed.fa_check.yml +0 -0
  104. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/other_validations/metadata_conversion_errors.yml +0 -0
  105. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/other_validations/metadata_semantic_check.yml +0 -0
  106. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/other_validations/metadata_validation.txt +0 -0
  107. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/other_validations/sample_checker.yml +0 -0
  108. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.db +0 -0
  109. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.txt +0 -0
  110. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.vcf_format.log +0 -0
  111. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/vcf_files/example2.vcf.gz +0 -0
  112. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/resources/vcf_files/input_passed.vcf +0 -0
  113. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_auth.py +0 -0
  114. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_check_fasta_insdc.py +0 -0
  115. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_cli.py +0 -0
  116. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_docker_validator.py +0 -0
  117. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_file_utils.py +0 -0
  118. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_metadata.py +0 -0
  119. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_orchestrator.py +0 -0
  120. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_samples_checker.py +0 -0
  121. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_semantic_metadata.py +0 -0
  122. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_submit.py +0 -0
  123. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_trim_down.py +0 -0
  124. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_utils.py +0 -0
  125. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_validaton_results_parsers.py +0 -0
  126. {eva_sub_cli-0.4.8 → eva_sub_cli-0.4.9}/tests/test_xlsx2json.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eva_sub_cli
3
- Version: 0.4.8
3
+ Version: 0.4.9
4
4
  Summary: EBI EVA - validation and submission command line tool
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -19,7 +19,7 @@ Classifier: License :: OSI Approved :: Apache Software License
19
19
  Requires-Python: >=3.6
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: ebi_eva_common_pyutils==0.*,>=0.7.1
22
+ Requires-Dist: ebi_eva_common_pyutils==0.*,>=0.7.3
23
23
  Requires-Dist: jinja2==3.*,>=3.0.0
24
24
  Requires-Dist: jsonschema==4.*
25
25
  Requires-Dist: openpyxl==3.*
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.4.8'
21
- __version_tuple__ = version_tuple = (0, 4, 8)
20
+ __version__ = version = '0.4.9'
21
+ __version_tuple__ = version_tuple = (0, 4, 9)
@@ -69,11 +69,11 @@
69
69
  <section>
70
70
  <h2>VCF validation results</h2>
71
71
  <div class="description">
72
- Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.3.pdf" target=”_blank”>VCF specification</a>.
72
+ Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.4.pdf" target=”_blank”>VCF specification</a>.
73
73
  Also checks whether the variants' reference alleles match against the reference assembly.
74
74
  </div>
75
75
  {% for file_name in vcf_files %}
76
- {% if file_name!= "pass"%}
76
+ {% if file_name != "pass"%}
77
77
  <h3>{{ file_name }}</h3>
78
78
  {{ file_validation_report(validation_results, file_name) }}
79
79
  {% endif %}
@@ -95,7 +95,7 @@
95
95
  Also checks if the reference assembly accession in the metadata matches the one determined from the FASTA file.
96
96
  </div>
97
97
  {% for file_name in fasta_files %}
98
- {% if file_name!= "pass"%}
98
+ {% if file_name != "pass"%}
99
99
  <h3>{{ file_name }}</h3>
100
100
  {{ fasta_check_report(validation_results, file_name) }}
101
101
  {% endif %}
@@ -0,0 +1,46 @@
1
+ {% macro fasta_check_report(validation_results, file_name) -%}
2
+
3
+ {% set results_for_fasta = validation_results['fasta_check'][file_name] %}
4
+
5
+ {% if results_for_fasta.get('connection_error') %}
6
+ Warning: The following results may be incomplete due to problems with external services.
7
+ Please try again later for complete results.
8
+ Error message: {{ results_for_fasta.get('connection_error') }}
9
+ {% endif %}
10
+
11
+ {% if results_for_fasta.get('all_insdc') %}
12
+ {{ "\u2714" }} All sequences are INSDC accessioned.
13
+ {% else %}
14
+ {{ "\u274C" }} Some sequences are not INSDC accessioned
15
+ First 10 sequences not in INSDC. Full report: {{ results_for_fasta.get('report_path', '') }}
16
+ {% set sequence_info_list = results_for_fasta.get('sequences', [])|rejectattr("insdc")|list %}
17
+ {% for sequence_info in sequence_info_list[:10] %}
18
+ Sequence name: {{ sequence_info.get('sequence_name') }}
19
+ Refget md5: {{ sequence_info.get('sequence_md5') }}
20
+ ---
21
+ {% endfor %}
22
+ {% endif %}
23
+
24
+ {% if 'possible_assemblies' in results_for_fasta %}
25
+ {% if 'metadata_assembly_compatible' in results_for_fasta %}
26
+ {% set analysis_text = results_for_fasta.get('associated_analyses')|join(", ") %}
27
+ {% if results_for_fasta.get('metadata_assembly_compatible') %}
28
+ {% set icon = "\u2714" %}
29
+ {% set text = analysis_text + ": Assembly accession in metadata is compatible" %}
30
+ {% else %}
31
+ {% set icon = "\u274C" %}
32
+ {% set text = analysis_text + ": Assembly accession in metadata is not compatible" %}
33
+ {% endif %}
34
+ {% else %}
35
+ {% set icon = "\u274C" %}
36
+ {% set text = "No assembly accession found in metadata" %}
37
+ {% endif %}
38
+ {{ icon }} {{ text }}
39
+ {% if 'metadata_assembly_compatible' not in results_for_fasta or not results_for_fasta['metadata_assembly_compatible'] %}
40
+ Full report: {{ results_for_fasta.get('report_path', '') }}
41
+ Assembly accession found in metadata: {{ results_for_fasta.get('assembly_in_metadata', 'Not found') }}
42
+ Assembly accession(s) compatible with FASTA: {{ results_for_fasta.get('possible_assemblies')|join(", ") }}
43
+ {% endif %}
44
+ {% endif %}
45
+
46
+ {%- endmacro %}
@@ -0,0 +1,58 @@
1
+
2
+ {% macro file_validation_report(validation_results, file_name) -%}
3
+ {% for check_type, check_per_file in validation_results.items() %}
4
+ {% set result = check_per_file.get(file_name, {}) %}
5
+ {% if check_type == "assembly_check" %}
6
+ {{ assembly_check(result) }}
7
+ {% elif check_type == "vcf_check" %}
8
+ {{ vcf_check(result) }}
9
+ {% endif %}
10
+ {% endfor %}
11
+ {%- endmacro %}
12
+
13
+ {% macro vcf_check(vcf_check_result) %}
14
+ {% set critical_count = vcf_check_result.get("critical_count", 0) %}
15
+ {% set error_count = vcf_check_result.get("error_count", 0) %}
16
+ {% if critical_count > 0 or error_count > 0 %}
17
+ {% set icon = "\u274C" %}
18
+ {% else %}
19
+ {% set icon = "\u2714" %}
20
+ {% endif %}
21
+ {{ icon }} VCF check: {{ critical_count }} critical errors, {{ error_count }} non-critical errors
22
+
23
+ {% set critical_list = vcf_check_result.get("critical_list") %}
24
+ {% set error_list = vcf_check_result.get("error_list") %}
25
+ {% if critical_list or error_list%}
26
+ First 10 errors per category are below. Full report: {{ vcf_check_result.get('report_path', '') }}
27
+ {% for error in critical_list[:10] %}
28
+ Critical error: {{ error }}
29
+ {% endfor %}
30
+ {% for error in error_list[:10] %}
31
+ Non-critical error: {{ error }}
32
+ {% endfor %}
33
+ {% endif %}
34
+ {%- endmacro %}
35
+
36
+ {% macro assembly_check(assembly_check_result) %}
37
+ {% set nb_match = assembly_check_result.get("match", 0) %}
38
+ {% set nb_total = assembly_check_result.get("total", 0) %}
39
+ {% set match_percentage = nb_match / nb_total * 100 if nb_total else 0 %}
40
+ {% if assembly_check_result.get("nb_mismatch", 0) > 0 or nb_total == 0 %}
41
+ {% set icon = "\u274C" %}
42
+ {% else %}
43
+ {% set icon = "\u2714" %}
44
+ {% endif %}
45
+ {{ icon }} Assembly check: {{ nb_match }}/{{ nb_total }} ({{ match_percentage|round(2) }}%)
46
+
47
+ {% set mismatch_list = assembly_check_result.get("mismatch_list") %}
48
+ {% set error_list = assembly_check_result.get("error_list") %}
49
+ {% if mismatch_list or error_list %}
50
+ First 10 errors per category are below. Full report: {{ assembly_check_result.get('report_path', '') }}
51
+ {% for error in error_list[:10] %}
52
+ Parsing error: {{ error }}
53
+ {% endfor %}
54
+ {% for error in mismatch_list[:10] %}
55
+ Mismatch error: {{ error }}
56
+ {% endfor %}
57
+ {% endif %}
58
+ {%- endmacro %}
@@ -0,0 +1,33 @@
1
+
2
+ {% macro metadata_validation_report(validation_results) -%}
3
+
4
+ {% set results = validation_results.get('metadata_check', {}) %}
5
+ {% set spreadsheet_errors = results.get('spreadsheet_errors', []) %}
6
+ {% set json_errors = results.get('json_errors', []) %}
7
+ {% set has_errors = spreadsheet_errors or json_errors %}
8
+ {% if has_errors %}
9
+ {% set icon = "\u274C" %}
10
+ {% else %}
11
+ {% set icon = "\u2714" %}
12
+ {% endif %}
13
+ {{ icon }} Metadata validation check
14
+
15
+ {% if spreadsheet_errors %}
16
+ Full report: {{ results.get('spreadsheet_report_path', '') }}
17
+ {% for error in spreadsheet_errors %}
18
+ Sheet: {{ error.get('sheet') }} | Row: {{ error.get('row') }} | Column: {{ error.get('column') }}
19
+ Error: {{ error.get('description') }}
20
+ ---
21
+ {% endfor %}
22
+ {% endif %}
23
+
24
+ {% if json_errors %}
25
+ Full report: {{ results.get('json_report_path', '') }}
26
+ {% for error in json_errors %}
27
+ JSON Property: {{ error.get('property') }}
28
+ Error: {{ error.get('description') }}
29
+ ---
30
+ {% endfor %}
31
+ {% endif %}
32
+
33
+ {%- endmacro %}
@@ -0,0 +1,21 @@
1
+ {% macro project_details_report(project_title, validation_date, submission_dir, vcf_fasta_analysis_mapping) -%}
2
+
3
+ {% if project_title %}
4
+ Project Title: {{ project_title }}
5
+ {% else %}
6
+ Project Title: Not Found
7
+ {% endif %}
8
+ Validation Date: {{ validation_date }}
9
+ Submission Directory: {{ submission_dir }}
10
+
11
+ {% if vcf_fasta_analysis_mapping %}
12
+ Files mapping:
13
+ {% for mapping in vcf_fasta_analysis_mapping %}
14
+ ---
15
+ VCF File: {{ mapping.vcf_file }}
16
+ Fasta File: {{ mapping.fasta_file }}
17
+ Analysis: {{ mapping.analysis }}
18
+ {% endfor %}
19
+ {% endif %}
20
+
21
+ {%- endmacro %}
@@ -0,0 +1,59 @@
1
+ {% from 'project_details.txt' import project_details_report %}
2
+ {% from 'file_validation.txt' import file_validation_report %}
3
+ {% from 'sample_name_check.txt' import sample_name_check_report %}
4
+ {% from 'fasta_check.txt' import fasta_check_report %}
5
+ {% from 'metadata_validation.txt' import metadata_validation_report %}
6
+ {% from 'shallow_validation.txt' import optional_shallow_validation_report %}
7
+
8
+ VALIDATION REPORT
9
+ eva-sub-cli v{{cli_version}}
10
+
11
+ {{ optional_shallow_validation_report(validation_results) }}
12
+
13
+ -
14
+
15
+ PROJECT SUMMARY
16
+ General details about the project
17
+
18
+ {{ project_details_report(project_title, validation_date, submission_dir, vcf_fasta_analysis_mapping) }}
19
+
20
+ -
21
+
22
+ METADATA VALIDATION RESULTS
23
+ Ensures that required fields are present and values are formatted correctly.
24
+ For requirements, please refer to the EVA website (https://www.ebi.ac.uk/eva/?Submit-Data).
25
+
26
+ {{ metadata_validation_report(validation_results) }}
27
+
28
+ -
29
+
30
+ VCF VALIDATION RESULTS
31
+ Checks whether each file is compliant with the VCF specification (http://samtools.github.io/hts-specs/VCFv4.4.pdf).
32
+ Also checks whether the variants' reference alleles match against the reference assembly.
33
+
34
+ {% for file_name in vcf_files %}
35
+ {% if file_name != "pass"%}
36
+ {{ file_name }}
37
+ {{ file_validation_report(validation_results, file_name) }}
38
+ {% endif %}
39
+ {% endfor %}
40
+
41
+ -
42
+
43
+ SAMPLE NAME CONCORDANCE CHECK
44
+ Checks whether information in the metadata is concordant with that contained in the VCF files, in particular sample names.
45
+
46
+ {{ sample_name_check_report(validation_results)}}
47
+
48
+ -
49
+
50
+ REFERENCE GENOME INSDC CHECK
51
+ Checks that the reference sequences in the FASTA file used to call the variants are accessioned in INSDC.
52
+ Also checks if the reference assembly accession in the metadata matches the one determined from the FASTA file.
53
+
54
+ {% for file_name in fasta_files %}
55
+ {% if file_name != "pass"%}
56
+ {{ file_name }}
57
+ {{ fasta_check_report(validation_results, file_name) }}
58
+ {% endif %}
59
+ {% endfor %}
@@ -0,0 +1,24 @@
1
+
2
+ {% macro sample_name_check_report(validation_results) -%}
3
+ {% set results = validation_results.get('sample_check', {}) %}
4
+ {% macro format_error(error) %}
5
+ {{ error | replace(' ', '•') }}
6
+ {% endmacro %}
7
+
8
+ {% for analysis, results_for_analysis in results.get('results_per_analysis', {}).items() %}
9
+ {% if results_for_analysis.get('difference') %}
10
+ {% set icon = "\u274C" %}
11
+ {% set text = "Sample names in metadata do not match with those in VCF files" %}
12
+ {% else %}
13
+ {% set icon = "\u2714" %}
14
+ {% set text = "Sample names in metadata match with those in VCF files" %}
15
+ {% endif %}
16
+ {{ icon }} {{ analysis }}: {{ text }}
17
+
18
+ {% if results_for_analysis.get('difference') %}
19
+ First 10 errors per category are below. Full report: {{ results.get('report_path', '') }}
20
+ Samples described in the metadata but not in the VCF files: {{ results_for_analysis.get('more_metadata_submitted_files')[:10]|join(", ") }}
21
+ Samples in the VCF files but not described in the metadata: {{ results_for_analysis.get('more_submitted_files_metadata')[:10]|join(", ") }}
22
+ {% endif %}
23
+ {% endfor %}
24
+ {%- endmacro %}
@@ -0,0 +1,16 @@
1
+ {% macro optional_shallow_validation_report(validation_results) -%}
2
+
3
+ {% set results = validation_results.get('shallow_validation', {}) %}
4
+ {% if results.get('required') %}
5
+
6
+ {{ "\u274C" }} You requested to run the shallow validation, please run full validation before submitting the data
7
+ {% for vcf_file in results.get('metrics') %}
8
+ ---
9
+ VCF File: {{ vcf_file }}
10
+ Variant lines validated in VCF: {{ results.get('metrics').get(vcf_file).get('trim_down_vcf_record') }}
11
+ Entries used in Fasta: {{ results.get('metrics').get(vcf_file).get('number_sequence_found') }}
12
+ {% endfor %}
13
+
14
+ {% endif %}
15
+
16
+ {%- endmacro %}
@@ -15,16 +15,16 @@ def get_logo_data():
15
15
  return logo_data
16
16
 
17
17
 
18
- def generate_html_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping,
19
- project_title=None):
18
+ def generate_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping, project_title,
19
+ subdir, template_file):
20
20
  vcf_files = sorted(set([file_name
21
21
  for check in validation_results if check in ["vcf_check", "assembly_check"]
22
22
  for file_name in validation_results[check]
23
23
  ]))
24
24
  fasta_files = sorted([file_name for file_name in validation_results['fasta_check']])
25
25
  template = Environment(
26
- loader=FileSystemLoader(os.path.join(current_dir, 'jinja_templates'))
27
- ).get_template('html_report.html')
26
+ loader=FileSystemLoader(os.path.join(current_dir, 'jinja_templates', subdir))
27
+ ).get_template(template_file)
28
28
  rendered_template = template.render(
29
29
  cli_version=eva_sub_cli.__version__,
30
30
  logo_data=get_logo_data(),
@@ -38,3 +38,12 @@ def generate_html_report(validation_results, validation_date, submission_dir, vc
38
38
  )
39
39
  return re.sub('\s+\n', '\n', rendered_template)
40
40
 
41
+
42
+ def generate_html_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping, project_title):
43
+ return generate_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping, project_title,
44
+ subdir='html', template_file='report.html')
45
+
46
+
47
+ def generate_text_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping, project_title):
48
+ return generate_report(validation_results, validation_date, submission_dir, vcf_fasta_analysis_mapping, project_title,
49
+ subdir='text', template_file='report.txt')
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env python
2
2
  import csv
3
3
  import datetime
4
- import json
5
4
  import logging
6
5
  import os
7
6
  from functools import lru_cache, cached_property
@@ -13,7 +12,7 @@ from ebi_eva_common_pyutils.config import WritableConfig
13
12
  from eva_sub_cli import ETC_DIR, SUB_CLI_CONFIG_FILE, __version__
14
13
  from eva_sub_cli.file_utils import backup_file_or_directory, resolve_single_file_path
15
14
  from eva_sub_cli.metadata import EvaMetadataJson
16
- from eva_sub_cli.report import generate_html_report
15
+ from eva_sub_cli.report import generate_html_report, generate_text_report
17
16
  from ebi_eva_common_pyutils.logger import logging_config, AppLogger
18
17
 
19
18
  from eva_sub_cli.validators.validation_results_parsers import parse_assembly_check_log, parse_assembly_check_report, \
@@ -501,9 +500,18 @@ class Validator(AppLogger):
501
500
  report_html = generate_html_report(self.results, self.validation_date, self.submission_dir,
502
501
  self.get_vcf_fasta_analysis_mapping(),
503
502
  self.project_title)
504
- file_path = os.path.join(self.output_dir, 'report.html')
505
- with open(file_path, "w") as f:
503
+ html_path = os.path.join(self.output_dir, 'report.html')
504
+ with open(html_path, "w") as f:
506
505
  f.write(report_html)
506
+
507
+ report_text = generate_text_report(self.results, self.validation_date, self.submission_dir,
508
+ self.get_vcf_fasta_analysis_mapping(),
509
+ self.project_title)
510
+ text_path = os.path.join(self.output_dir, 'report.txt')
511
+ with open(text_path, "w") as f:
512
+ f.write(report_text)
513
+
507
514
  self.info(f'Validation result: {"SUCCESS" if self.verify_ready_for_submission_to_eva() else "FAILURE"}')
508
- self.info(f'View the full report in your browser: {file_path}')
509
- return file_path
515
+ self.info(f'View the full report in your browser: {html_path}')
516
+ self.info(f'Or view a text version: {text_path}')
517
+ return html_path, text_path
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eva_sub_cli
3
- Version: 0.4.8
3
+ Version: 0.4.9
4
4
  Summary: EBI EVA - validation and submission command line tool
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -19,7 +19,7 @@ Classifier: License :: OSI Approved :: Apache Software License
19
19
  Requires-Python: >=3.6
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: ebi_eva_common_pyutils==0.*,>=0.7.1
22
+ Requires-Dist: ebi_eva_common_pyutils==0.*,>=0.7.3
23
23
  Requires-Dist: jinja2==3.*,>=3.0.0
24
24
  Requires-Dist: jsonschema==4.*
25
25
  Requires-Dist: openpyxl==3.*
@@ -49,13 +49,20 @@ eva_sub_cli/executables/cli.py
49
49
  eva_sub_cli/executables/samples_checker.py
50
50
  eva_sub_cli/executables/trim_down.py
51
51
  eva_sub_cli/executables/xlsx2json.py
52
- eva_sub_cli/jinja_templates/fasta_check.html
53
- eva_sub_cli/jinja_templates/file_validation.html
54
- eva_sub_cli/jinja_templates/html_report.html
55
- eva_sub_cli/jinja_templates/metadata_validation.html
56
- eva_sub_cli/jinja_templates/project_details.html
57
- eva_sub_cli/jinja_templates/sample_name_check.html
58
- eva_sub_cli/jinja_templates/shallow_validation.html
52
+ eva_sub_cli/jinja_templates/html/fasta_check.html
53
+ eva_sub_cli/jinja_templates/html/file_validation.html
54
+ eva_sub_cli/jinja_templates/html/metadata_validation.html
55
+ eva_sub_cli/jinja_templates/html/project_details.html
56
+ eva_sub_cli/jinja_templates/html/report.html
57
+ eva_sub_cli/jinja_templates/html/sample_name_check.html
58
+ eva_sub_cli/jinja_templates/html/shallow_validation.html
59
+ eva_sub_cli/jinja_templates/text/fasta_check.txt
60
+ eva_sub_cli/jinja_templates/text/file_validation.txt
61
+ eva_sub_cli/jinja_templates/text/metadata_validation.txt
62
+ eva_sub_cli/jinja_templates/text/project_details.txt
63
+ eva_sub_cli/jinja_templates/text/report.txt
64
+ eva_sub_cli/jinja_templates/text/sample_name_check.txt
65
+ eva_sub_cli/jinja_templates/text/shallow_validation.txt
59
66
  eva_sub_cli/nextflow/validation.nf
60
67
  eva_sub_cli/validators/__init__.py
61
68
  eva_sub_cli/validators/docker_validator.py
@@ -98,8 +105,11 @@ tests/resources/sample_checker/example2.vcf
98
105
  tests/resources/sample_checker/example3.vcf
99
106
  tests/resources/sample_checker/metadata.json
100
107
  tests/resources/validation_reports/expected_report_metadata_json.html
108
+ tests/resources/validation_reports/expected_report_metadata_json.txt
101
109
  tests/resources/validation_reports/expected_report_metadata_xlsx.html
110
+ tests/resources/validation_reports/expected_report_metadata_xlsx.txt
102
111
  tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html
112
+ tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt
103
113
  tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log
104
114
  tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt
105
115
  tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt
@@ -1,4 +1,4 @@
1
- ebi_eva_common_pyutils==0.*,>=0.7.1
1
+ ebi_eva_common_pyutils==0.*,>=0.7.3
2
2
  jinja2==3.*,>=3.0.0
3
3
  jsonschema==4.*
4
4
  openpyxl==3.*
@@ -1,4 +1,4 @@
1
- ebi_eva_common_pyutils >= 0.7.1, == 0.*
1
+ ebi_eva_common_pyutils >= 0.7.3, == 0.*
2
2
  jinja2 >= 3.0.0, ==3.*
3
3
  jsonschema == 4.*
4
4
  openpyxl == 3.*
@@ -138,7 +138,7 @@
138
138
  <section>
139
139
  <h2>VCF validation results</h2>
140
140
  <div class="description">
141
- Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.3.pdf" target=”_blank”>VCF specification</a>.
141
+ Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.4.pdf" target=”_blank”>VCF specification</a>.
142
142
  Also checks whether the variants' reference alleles match against the reference assembly.
143
143
  </div>
144
144
  <h3>input_fail.vcf</h3>
@@ -0,0 +1,132 @@
1
+
2
+ VALIDATION REPORT
3
+ eva-sub-cli vcligeneratedversion
4
+ -
5
+ PROJECT SUMMARY
6
+ General details about the project
7
+ Project Title: My cool project
8
+ Validation Date: 2023-08-31 12:34:56
9
+ Submission Directory: /test/submission/dir
10
+ Files mapping:
11
+ ---
12
+ VCF File: input_fail.vcf
13
+ Fasta File: input_fail.fa
14
+ Analysis: A
15
+ ---
16
+ VCF File: input_pass.vcf
17
+ Fasta File: input_pass.fa
18
+ Analysis: B
19
+ ---
20
+ VCF File: input_test.vcf
21
+ Fasta File: input_test.fa
22
+ Analysis: could not be linked
23
+ -
24
+ METADATA VALIDATION RESULTS
25
+ Ensures that required fields are present and values are formatted correctly.
26
+ For requirements, please refer to the EVA website (https://www.ebi.ac.uk/eva/?Submit-Data).
27
+ ❌ Metadata validation check
28
+ Full report: /path/to/json/metadata/report
29
+ JSON Property: .files
30
+ Error: should have required property 'files'
31
+ ---
32
+ JSON Property: /project.title
33
+ Error: should have required property 'title'
34
+ ---
35
+ JSON Property: /project.description
36
+ Error: should have required property 'description'
37
+ ---
38
+ JSON Property: /project.taxId
39
+ Error: should have required property 'taxId'
40
+ ---
41
+ JSON Property: /project.centre
42
+ Error: should have required property 'centre'
43
+ ---
44
+ JSON Property: /analysis/0.analysisTitle
45
+ Error: should have required property 'analysisTitle'
46
+ ---
47
+ JSON Property: /analysis/0.description
48
+ Error: should have required property 'description'
49
+ ---
50
+ JSON Property: /analysis/0.experimentType
51
+ Error: should have required property 'experimentType'
52
+ ---
53
+ JSON Property: /analysis/0.referenceGenome
54
+ Error: should have required property 'referenceGenome'
55
+ ---
56
+ JSON Property: /sample/0.bioSampleAccession
57
+ Error: should have required property 'bioSampleAccession'
58
+ ---
59
+ JSON Property: /sample/0.bioSampleObject
60
+ Error: should have required property 'bioSampleObject'
61
+ ---
62
+ JSON Property: /sample/0
63
+ Error: should match exactly one schema in oneOf
64
+ ---
65
+ -
66
+ VCF VALIDATION RESULTS
67
+ Checks whether each file is compliant with the VCF specification (http://samtools.github.io/hts-specs/VCFv4.4.pdf).
68
+ Also checks whether the variants' reference alleles match against the reference assembly.
69
+ input_fail.vcf
70
+ ❌ Assembly check: 26/36 (72.22%)
71
+ First 10 errors per category are below. Full report: /path/to/assembly_failed/report
72
+ Parsing error: The assembly checking could not be completed: Contig 'chr23' not found in assembly report
73
+ Mismatch error: Chromosome 1, position 35549, reference allele 'G' does not match the reference sequence, expected 'c'
74
+ Mismatch error: Chromosome 1, position 35595, reference allele 'G' does not match the reference sequence, expected 'a'
75
+ Mismatch error: Chromosome 1, position 35618, reference allele 'G' does not match the reference sequence, expected 'c'
76
+ Mismatch error: Chromosome 1, position 35626, reference allele 'A' does not match the reference sequence, expected 'g'
77
+ Mismatch error: Chromosome 1, position 35639, reference allele 'T' does not match the reference sequence, expected 'c'
78
+ Mismatch error: Chromosome 1, position 35643, reference allele 'T' does not match the reference sequence, expected 'g'
79
+ Mismatch error: Chromosome 1, position 35717, reference allele 'T' does not match the reference sequence, expected 'g'
80
+ Mismatch error: Chromosome 1, position 35819, reference allele 'T' does not match the reference sequence, expected 'a'
81
+ Mismatch error: Chromosome 1, position 35822, reference allele 'T' does not match the reference sequence, expected 'c'
82
+ ❌ VCF check: 1 critical errors, 1 non-critical errors
83
+ First 10 errors per category are below. Full report: /path/to/vcf_failed/report
84
+ Critical error: Line 4: Error in meta-data section.
85
+ Non-critical error: Sample #11, field AD does not match the meta specification Number=R (expected 2 value(s)). AD=..
86
+ input_passed.vcf
87
+ ✔ Assembly check: 247/247 (100.0%)
88
+ ✔ VCF check: 0 critical errors, 0 non-critical errors
89
+ -
90
+ SAMPLE NAME CONCORDANCE CHECK
91
+ Checks whether information in the metadata is concordant with that contained in the VCF files, in particular sample names.
92
+ ❌ Analysis A: Sample names in metadata do not match with those in VCF files
93
+ First 10 errors per category are below. Full report: /path/to/sample/report
94
+ Samples described in the metadata but not in the VCF files: SampleA1, SampleA2 , SampleA3, SampleA4, SampleA5, SampleA6, SampleA7, SampleA8, SampleA9, SampleA10
95
+ Samples in the VCF files but not described in the metadata: A1Sample , A2Sample, A3Sample, A4Sample, A5Sample, A6Sample, A7Sample, A8Sample, A9Sample, A10Sample
96
+ ✔ Analysis B: Sample names in metadata match with those in VCF files
97
+ ❌ Analysis C: Sample names in metadata do not match with those in VCF files
98
+ First 10 errors per category are below. Full report: /path/to/sample/report
99
+ Samples described in the metadata but not in the VCF files: SampleC1 , SampleC2, SampleC3, SampleC4
100
+ Samples in the VCF files but not described in the metadata: C1Sample , C2Sample, C3Sample, C4Sample
101
+ -
102
+ REFERENCE GENOME INSDC CHECK
103
+ Checks that the reference sequences in the FASTA file used to call the variants are accessioned in INSDC.
104
+ Also checks if the reference assembly accession in the metadata matches the one determined from the FASTA file.
105
+ metadata_asm_match.fa
106
+ ✔ All sequences are INSDC accessioned.
107
+ ✔ Analysis A: Assembly accession in metadata is compatible
108
+ metadata_asm_not_found.fa
109
+ ✔ All sequences are INSDC accessioned.
110
+ ❌ No assembly accession found in metadata
111
+ Full report: /path/to/metadata_asm_not_found.yml
112
+ Assembly accession found in metadata: Not found
113
+ Assembly accession(s) compatible with FASTA: GCA_1
114
+ metadata_asm_not_match.fa
115
+ ✔ All sequences are INSDC accessioned.
116
+ ❌ Analysis B: Assembly accession in metadata is not compatible
117
+ Full report: /path/to/metadata_asm_not_match.yml
118
+ Assembly accession found in metadata: GCA_2
119
+ Assembly accession(s) compatible with FASTA: GCA_1
120
+ metadata_error.fa
121
+ Warning: The following results may be incomplete due to problems with external services.
122
+ Please try again later for complete results.
123
+ Error message: 500 Server Error: Internal Server Error for url: https://www.ebi.ac.uk/eva/webservices/contig-alias/v1/chromosomes/md5checksum/hjfdoijsfc47hfg0gh9qwjrve
124
+ ✔ All sequences are INSDC accessioned.
125
+ ✔ Analysis C: Assembly accession in metadata is compatible
126
+ not_all_insdc.fa
127
+ ❌ Some sequences are not INSDC accessioned
128
+ First 10 sequences not in INSDC. Full report: /path/to/not_all_insdc_check.yml
129
+ Sequence name: 2
130
+ Refget md5: hjfdoijsfc47hfg0gh9qwjrve
131
+ ---
132
+ ✔ Analysis A: Assembly accession in metadata is compatible
@@ -150,7 +150,7 @@
150
150
  <section>
151
151
  <h2>VCF validation results</h2>
152
152
  <div class="description">
153
- Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.3.pdf" target=”_blank”>VCF specification</a>.
153
+ Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.4.pdf" target=”_blank”>VCF specification</a>.
154
154
  Also checks whether the variants' reference alleles match against the reference assembly.
155
155
  </div>
156
156
  <h3>input_fail.vcf</h3>