eva-sub-cli 0.6.5__tar.gz → 0.6.6__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.
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/PKG-INFO +1 -1
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/_version.py +3 -3
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/eva_schema.json +4 -2
- eva_sub_cli-0.6.6/eva_sub_cli/jinja_templates/html/file_validation.html +89 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/report.html +31 -11
- eva_sub_cli-0.6.6/eva_sub_cli/jinja_templates/text/file_validation.txt +55 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/report.txt +36 -15
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/validators/validator.py +135 -51
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/PKG-INFO +1 -1
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/SOURCES.txt +2 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/scm_file_list.json +130 -128
- eva_sub_cli-0.6.6/eva_sub_cli.egg-info/scm_version.json +8 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test.json +1 -1
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_V2.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test_with_asm_report.json +1 -1
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test_with_non_vcf_files.json +1 -1
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/metadata_with_filename.json +1 -1
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_metadata_json_report.html +49 -49
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_metadata_json_report.txt +20 -20
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_metadata_xlsx_report.html +49 -49
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_metadata_xlsx_report.txt +20 -20
- eva_sub_cli-0.6.6/tests/resources/validation_reports/expected_report_metadata_json_crashed.html +147 -0
- eva_sub_cli-0.6.6/tests/resources/validation_reports/expected_report_metadata_json_crashed.txt +47 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.html +3 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.txt +3 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html +49 -49
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt +20 -20
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/metadata_validation.txt +1 -1
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_orchestrator.py +2 -2
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_report.py +58 -20
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_validator.py +226 -21
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_xlsx2json.py +1 -1
- eva_sub_cli-0.6.5/eva_sub_cli/jinja_templates/html/file_validation.html +0 -93
- eva_sub_cli-0.6.5/eva_sub_cli/jinja_templates/text/file_validation.txt +0 -60
- eva_sub_cli-0.6.5/eva_sub_cli.egg-info/scm_version.json +0 -8
- eva_sub_cli-0.6.5/tests/resources/EVA_Submission_test.xlsx +0 -0
- eva_sub_cli-0.6.5/tests/resources/EVA_Submission_test_V2.xlsx +0 -0
- eva_sub_cli-0.6.5/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
- eva_sub_cli-0.6.5/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- eva_sub_cli-0.6.5/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.github/workflows/integration-tests.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.github/workflows/publish.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.github/workflows/publish_docs.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.github/workflows/tests.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/.gitignore +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/LICENSE +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/README.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/conda/build.sh +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/conda/meta.yaml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docker/Dockerfile +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/README.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/_config.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/common_vcf_errors.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/how_to_submit.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/input_file_overview.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/installation.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/using_nextflow.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/docs/validation_overview.md +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/__init__.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/auth.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/call_home.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/date_utils.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/call_home_payload_schema.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/eva-biosamples.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/eva_logo.png +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/spreadsheet2json_conf.yaml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/etc/spreadsheet2json_conf_V2.yaml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/exceptions.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/__init__.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/check_metadata_semantics.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/cli.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/format_metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/samples_checker.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/trim_down.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/executables/xlsx2json.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/file_utils.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/fasta_check.html +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/metadata_validation.html +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/project_details.html +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/sample_name_check.html +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/html/shallow_validation.html +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/fasta_check.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/metadata_validation.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/project_details.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/sample_name_check.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/jinja_templates/text/shallow_validation.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/nextflow/validation.nf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/orchestrator.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/report.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/semantic_metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/submission_ws.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/submit.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/utils.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/validators/__init__.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/validators/docker_validator.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/validators/native_validator.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli/validators/validation_results_parsers.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/dependency_links.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/entry_points.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/requires.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/eva_sub_cli.egg-info/top_level.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/pyproject.toml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/pytest.ini +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/requirements.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/setup.cfg +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/setup.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/build_and_test_docker_locally.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/ignore_test_nextflow_validation.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test_with_project_accession.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/EVA_Submission_test_with_project_accession.xlsx +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/assembly_check/invalid.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/assembly_check/invalid.vcf.text_assembly_report.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/assembly_reports/input_passed.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/fasta_files/Saccharomyces_cerevisiae_I.fa +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/fasta_files/input_passed.fa +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/fasta_files/multi_seq.fa +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_checker/evidence_type.yaml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_checker/example1.vcf.gz +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_checker/example2.vcf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_checker/example3.vcf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_checker/metadata.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/allele_freq.vcf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/fake_fasta.fa +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/genotype.vcf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/metadata_af_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/metadata_af_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/metadata_genotype_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/sample_in_vcf_check/metadata_genotype_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/metadata.json +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/evidence_type_checker.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/file_info.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/input_passed.fa_check.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/input_passed_trim_down.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/metadata_conversion_errors.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/metadata_semantic_check.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/other_validations/sample_checker.yml +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.db +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.txt +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.vcf_format.log +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/vcf_files/example2.vcf.gz +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/vcf_files/example2.vcf.gz.tbi +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/resources/vcf_files/input_passed.vcf +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_auth.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_call_home.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_cli.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_docker_validator.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_file_utils.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_format_metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_native_validator_sample_in_vcf.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_samples_checker.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_semantic_metadata.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_submit.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_trim_down.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_utils.py +0 -0
- {eva_sub_cli-0.6.5 → eva_sub_cli-0.6.6}/tests/test_validaton_results_parsers.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.6.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 6,
|
|
21
|
+
__version__ = version = '0.6.6'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 6, 6)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gdb6448e77'
|
|
@@ -89,12 +89,14 @@
|
|
|
89
89
|
"title": {
|
|
90
90
|
"type": "string",
|
|
91
91
|
"description": "Title of the project",
|
|
92
|
-
"
|
|
92
|
+
"minLength": 20,
|
|
93
|
+
"maxLength": 250
|
|
93
94
|
},
|
|
94
95
|
"description": {
|
|
95
96
|
"type": "string",
|
|
96
97
|
"description": "Description of the project",
|
|
97
|
-
"
|
|
98
|
+
"minLength": 20,
|
|
99
|
+
"maxLength": 4000
|
|
98
100
|
},
|
|
99
101
|
"centre": {
|
|
100
102
|
"type": "string",
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
{% macro vcf_check_report(vcf_check_result_per_file, vcf_file_names) -%}
|
|
4
|
+
{% for file_name in vcf_file_names %}
|
|
5
|
+
{% set vcf_check_result = vcf_check_result_per_file.get(file_name, {}) %}
|
|
6
|
+
{% set critical_count = vcf_check_result.get("critical_count", 0) %}
|
|
7
|
+
{% set error_count = vcf_check_result.get("error_count", 0) %}
|
|
8
|
+
{% set expand_icon = "" %}
|
|
9
|
+
{% if critical_count > 0 %}
|
|
10
|
+
{% set expand_icon = "▶" %}
|
|
11
|
+
{% set icon = "❌" %}
|
|
12
|
+
{% set row_class = "report-section fail collapsible" %}
|
|
13
|
+
{% elif error_count > 0 %}
|
|
14
|
+
{% set expand_icon = "▶" %}
|
|
15
|
+
{% set icon = "❗" %}
|
|
16
|
+
{% set row_class = "report-section warn collapsible" %}
|
|
17
|
+
{% else %}
|
|
18
|
+
{% set icon = "✔" %}
|
|
19
|
+
{% set row_class = "report-section pass" %}
|
|
20
|
+
{% endif %}
|
|
21
|
+
<div class='{{ row_class }}'><span class="expand_icon">{{ expand_icon }}</span> {{ icon }} {{ file_name }}: {{ critical_count }} critical errors, {{ error_count }} non-critical errors </div>
|
|
22
|
+
{% set critical_list = vcf_check_result.get("critical_list") %}
|
|
23
|
+
{% set error_list = vcf_check_result.get("error_list") %}
|
|
24
|
+
|
|
25
|
+
{% if critical_list or error_list%}
|
|
26
|
+
<div class="error-list">
|
|
27
|
+
<div class="error-description">First 10 errors per category are below. <strong>Full report:</strong> {{ vcf_check_result.get('report_path', '') }}</div>
|
|
28
|
+
<table>
|
|
29
|
+
<tr>
|
|
30
|
+
<th>Category</th><th>Error</th>
|
|
31
|
+
</tr>
|
|
32
|
+
{% for error in critical_list[:10] %}
|
|
33
|
+
<tr>
|
|
34
|
+
<td><strong>critical error</strong></td><td> {{ error }}</td>
|
|
35
|
+
</tr>
|
|
36
|
+
{% endfor %}
|
|
37
|
+
{% for error in error_list[:10] %}
|
|
38
|
+
<tr>
|
|
39
|
+
<td><strong>non-critical error</strong></td><td> {{ error }}</td>
|
|
40
|
+
</tr>
|
|
41
|
+
{% endfor %}
|
|
42
|
+
</table>
|
|
43
|
+
</div>
|
|
44
|
+
{% endif %}
|
|
45
|
+
{% endfor %}
|
|
46
|
+
{%- endmacro %}
|
|
47
|
+
|
|
48
|
+
{% macro assembly_check_report(assembly_check_result_per_file, vcf_file_names) -%}
|
|
49
|
+
{% for file_name in vcf_file_names %}
|
|
50
|
+
{% set assembly_check_result = assembly_check_result_per_file.get(file_name, {}) %}
|
|
51
|
+
{% set nb_match = assembly_check_result.get("match", 0) %}
|
|
52
|
+
{% set nb_total = assembly_check_result.get("total", 0) %}
|
|
53
|
+
{% set match_percentage = nb_match / nb_total * 100 if nb_total else 0 %}
|
|
54
|
+
{% set expand_icon = "" %}
|
|
55
|
+
{% if assembly_check_result.get("nb_mismatch", 0) > 0 or nb_total == 0 %}
|
|
56
|
+
{% set expand_icon = "▶" %}
|
|
57
|
+
{% set icon = "❌" %}
|
|
58
|
+
{% set row_class = "report-section fail collapsible" %}
|
|
59
|
+
{% else %}
|
|
60
|
+
{% set icon = "✔" %}
|
|
61
|
+
{% set row_class = "report-section pass" %}
|
|
62
|
+
{% endif %}
|
|
63
|
+
<div class='{{ row_class }}'><span class="expand_icon">{{ expand_icon }}</span> {{ icon }} {{ file_name }}: {{ nb_match }}/{{ nb_total }} ({{ match_percentage|round(2) }}%)</div>
|
|
64
|
+
{% set mismatch_list = assembly_check_result.get("mismatch_list") %}
|
|
65
|
+
{% set error_list = assembly_check_result.get("error_list") %}
|
|
66
|
+
{% if mismatch_list or error_list %}
|
|
67
|
+
<div class="error-list">
|
|
68
|
+
<div class="error-description">First 10 errors per category are below. <strong>Full report:</strong> {{ assembly_check_result.get('report_path', '') }}</div>
|
|
69
|
+
<table>
|
|
70
|
+
<tr>
|
|
71
|
+
<th>Category</th><th>Error</th>
|
|
72
|
+
</tr>
|
|
73
|
+
{% for error in error_list[:10] %}
|
|
74
|
+
<tr>
|
|
75
|
+
<td><strong>Parsing Error</strong></td><td> {{ error }}</td>
|
|
76
|
+
</tr>
|
|
77
|
+
{% endfor %}
|
|
78
|
+
{% for error in mismatch_list[:10] %}
|
|
79
|
+
<tr>
|
|
80
|
+
<td><strong>mismatch error</strong></td><td> {{ error }}</td>
|
|
81
|
+
</tr>
|
|
82
|
+
{% endfor %}
|
|
83
|
+
</table>
|
|
84
|
+
</div>
|
|
85
|
+
{% endif %}
|
|
86
|
+
{% endfor %}
|
|
87
|
+
{%- endmacro %}
|
|
88
|
+
|
|
89
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
{% from 'project_details.html' import project_details_report %}
|
|
3
|
-
{% from 'file_validation.html' import
|
|
3
|
+
{% from 'file_validation.html' import assembly_check_report, vcf_check_report %}
|
|
4
4
|
{% from 'sample_name_check.html' import sample_name_check_report %}
|
|
5
5
|
{% from 'fasta_check.html' import fasta_check_report %}
|
|
6
6
|
{% from 'metadata_validation.html' import metadata_validation_report %}
|
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
<div class='{{ row_class }}'><span class="expand_icon">{{ expand_icon }}</span> {{ icon }} {{ text }}</div>
|
|
14
14
|
{% endmacro %}
|
|
15
15
|
|
|
16
|
+
{% macro report_crashed_task(task_name) %}
|
|
17
|
+
{% set icon = "❗" %} {# exclamation point ❗#}
|
|
18
|
+
{% set row_class = "report-section info" %}
|
|
19
|
+
{% set expand_icon = "" %}
|
|
20
|
+
<div class='{{ row_class }}'><span class="expand_icon">{{ expand_icon }}</span> {{ icon }} {{ task_name }} did not complete successfully. Check the logs for more information.</div>
|
|
21
|
+
{% endmacro %}
|
|
22
|
+
|
|
16
23
|
<html lang="EN">
|
|
17
24
|
<head>
|
|
18
25
|
<meta charset="UTF-8">
|
|
@@ -73,8 +80,10 @@
|
|
|
73
80
|
For requirements, please refer to the <a href="https://www.ebi.ac.uk/eva/?Submit-Data" target=”_blank”>EVA website</a>.
|
|
74
81
|
</div>
|
|
75
82
|
{% set run_status = validation_results.get('metadata_check', {}).get('run_status', '') %}
|
|
76
|
-
{% if run_status %}
|
|
83
|
+
{% if run_status == 'success' %}
|
|
77
84
|
{{ metadata_validation_report(validation_results) }}
|
|
85
|
+
{% elif run_status == 'crashed' %}
|
|
86
|
+
{{ report_crashed_task('Metadata check') }}
|
|
78
87
|
{% else %}
|
|
79
88
|
{{ validation_not_run_yet_message() }}
|
|
80
89
|
{% endif %}
|
|
@@ -86,14 +95,21 @@
|
|
|
86
95
|
Checks whether each file is compliant with the <a href="http://samtools.github.io/hts-specs/VCFv4.4.pdf" target=”_blank”>VCF specification</a>.
|
|
87
96
|
Also checks whether the variants' reference alleles match against the reference assembly.
|
|
88
97
|
</div>
|
|
98
|
+
<h3>Assembly check</h3>
|
|
99
|
+
{% set run_status = validation_results.get('assembly_check', {}).get('run_status', '') %}
|
|
100
|
+
{% if run_status == 'success' %}
|
|
101
|
+
{{ assembly_check_report(validation_results.get('assembly_check', {}), vcf_files) }}
|
|
102
|
+
{% elif run_status == 'crashed' %}
|
|
103
|
+
{{ report_crashed_task('Assembly check') }}
|
|
104
|
+
{% else %}
|
|
105
|
+
{{ validation_not_run_yet_message() }}
|
|
106
|
+
{% endif %}
|
|
107
|
+
<h3>VCF check</h3>
|
|
89
108
|
{% set run_status = validation_results.get('vcf_check', {}).get('run_status', '') %}
|
|
90
|
-
{% if run_status %}
|
|
91
|
-
{
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
{{ file_validation_report(validation_results, file_name) }}
|
|
95
|
-
{% endif %}
|
|
96
|
-
{% endfor %}
|
|
109
|
+
{% if run_status == 'success' %}
|
|
110
|
+
{{ vcf_check_report(validation_results.get('vcf_check', {}), vcf_files) }}
|
|
111
|
+
{% elif run_status == 'crashed' %}
|
|
112
|
+
{{ report_crashed_task('VCF check') }}
|
|
97
113
|
{% else %}
|
|
98
114
|
{{ validation_not_run_yet_message() }}
|
|
99
115
|
{% endif %}
|
|
@@ -105,8 +121,10 @@
|
|
|
105
121
|
Checks whether information in the metadata is concordant with that contained in the VCF files, in particular sample names.
|
|
106
122
|
</div>
|
|
107
123
|
{% set run_status = validation_results.get('sample_check', {}).get('run_status', '') %}
|
|
108
|
-
{% if run_status %}
|
|
124
|
+
{% if run_status == 'success' %}
|
|
109
125
|
{{ sample_name_check_report(validation_results)}}
|
|
126
|
+
{% elif run_status == 'crashed' %}
|
|
127
|
+
{{ report_crashed_task('Sample name concordance') }}
|
|
110
128
|
{% else %}
|
|
111
129
|
{{ validation_not_run_yet_message() }}
|
|
112
130
|
|
|
@@ -120,13 +138,15 @@
|
|
|
120
138
|
Also checks if the reference assembly accession in the metadata matches the one determined from the FASTA file.
|
|
121
139
|
</div>
|
|
122
140
|
{% set run_status = validation_results.get('fasta_check', {}).get('run_status', '') %}
|
|
123
|
-
{% if run_status %}
|
|
141
|
+
{% if run_status == 'success' %}
|
|
124
142
|
{% for file_name in fasta_files %}
|
|
125
143
|
{% if file_name != "pass"%}
|
|
126
144
|
<h3>{{ file_name }}</h3>
|
|
127
145
|
{{ fasta_check_report(validation_results, file_name) }}
|
|
128
146
|
{% endif %}
|
|
129
147
|
{% endfor %}
|
|
148
|
+
{% elif run_status == 'crashed' %}
|
|
149
|
+
{{ report_crashed_task('INSDC check') }}
|
|
130
150
|
{% else %}
|
|
131
151
|
{{ validation_not_run_yet_message() }}
|
|
132
152
|
{% endif %}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
|
|
2
|
+
{% macro vcf_check_report(vcf_check_result_per_file, vcf_file_names) -%}
|
|
3
|
+
{% for file_name in vcf_file_names %}
|
|
4
|
+
{% set vcf_check_result = vcf_check_result_per_file.get(file_name, {}) %}
|
|
5
|
+
{% set critical_count = vcf_check_result.get("critical_count", 0) %}
|
|
6
|
+
{% set error_count = vcf_check_result.get("error_count", 0) %}
|
|
7
|
+
{% if critical_count > 0 %}
|
|
8
|
+
{% set icon = "\u274C" %}
|
|
9
|
+
{% elif error_count > 0 %}
|
|
10
|
+
{% set icon = "\u26A0" %}
|
|
11
|
+
{% else %}
|
|
12
|
+
{% set icon = "\u2714" %}
|
|
13
|
+
{% endif %}
|
|
14
|
+
{{ icon }} {{ file_name }}: {{ critical_count }} critical errors, {{ error_count }} non-critical errors
|
|
15
|
+
|
|
16
|
+
{% set critical_list = vcf_check_result.get("critical_list") %}
|
|
17
|
+
{% set error_list = vcf_check_result.get("error_list") %}
|
|
18
|
+
{% if critical_list or error_list%}
|
|
19
|
+
First 10 errors per category are below. Full report: {{ vcf_check_result.get('report_path', '') }}
|
|
20
|
+
{% for error in critical_list[:10] %}
|
|
21
|
+
Critical error: {{ error }}
|
|
22
|
+
{% endfor %}
|
|
23
|
+
{% for error in error_list[:10] %}
|
|
24
|
+
Non-critical error: {{ error }}
|
|
25
|
+
{% endfor %}
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endfor %}
|
|
28
|
+
{%- endmacro %}
|
|
29
|
+
|
|
30
|
+
{% macro assembly_check_report(assembly_check_result_per_file, vcf_file_names) -%}
|
|
31
|
+
{% for file_name in vcf_file_names %}
|
|
32
|
+
{% set assembly_check_result = assembly_check_result_per_file.get(file_name, {}) %}
|
|
33
|
+
{% set nb_match = assembly_check_result.get("match", 0) %}
|
|
34
|
+
{% set nb_total = assembly_check_result.get("total", 0) %}
|
|
35
|
+
{% set match_percentage = nb_match / nb_total * 100 if nb_total else 0 %}
|
|
36
|
+
{% if assembly_check_result.get("nb_mismatch", 0) > 0 or nb_total == 0 %}
|
|
37
|
+
{% set icon = "\u274C" %}
|
|
38
|
+
{% else %}
|
|
39
|
+
{% set icon = "\u2714" %}
|
|
40
|
+
{% endif %}
|
|
41
|
+
{{ icon }} {{ file_name }}: {{ nb_match }}/{{ nb_total }} ({{ match_percentage|round(2) }}%)
|
|
42
|
+
|
|
43
|
+
{% set mismatch_list = assembly_check_result.get("mismatch_list") %}
|
|
44
|
+
{% set error_list = assembly_check_result.get("error_list") %}
|
|
45
|
+
{% if mismatch_list or error_list %}
|
|
46
|
+
First 10 errors per category are below. Full report: {{ assembly_check_result.get('report_path', '') }}
|
|
47
|
+
{% for error in error_list[:10] %}
|
|
48
|
+
Parsing error: {{ error }}
|
|
49
|
+
{% endfor %}
|
|
50
|
+
{% for error in mismatch_list[:10] %}
|
|
51
|
+
Mismatch error: {{ error }}
|
|
52
|
+
{% endfor %}
|
|
53
|
+
{% endif %}
|
|
54
|
+
{% endfor %}
|
|
55
|
+
{%- endmacro %}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% from 'project_details.txt' import project_details_report %}
|
|
2
|
-
{% from 'file_validation.txt' import
|
|
2
|
+
{% from 'file_validation.txt' import assembly_check_report, vcf_check_report %}
|
|
3
3
|
{% from 'sample_name_check.txt' import sample_name_check_report %}
|
|
4
4
|
{% from 'fasta_check.txt' import fasta_check_report %}
|
|
5
5
|
{% from 'metadata_validation.txt' import metadata_validation_report %}
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
{{ icon }} {{ text }}
|
|
11
11
|
{%- endmacro %}
|
|
12
12
|
|
|
13
|
+
{% macro report_crashed_task(task_name) -%}
|
|
14
|
+
{% set icon = "\u2757" %} {# exclamation point ❗#}
|
|
15
|
+
{{ icon }} {{ task_name }} did not complete successfully. Check the logs for more information.
|
|
16
|
+
{%- endmacro %}
|
|
17
|
+
|
|
13
18
|
VALIDATION REPORT
|
|
14
19
|
eva-sub-cli v{{cli_version}}
|
|
15
20
|
|
|
@@ -29,25 +34,36 @@ Ensures that required fields are present and values are formatted correctly.
|
|
|
29
34
|
For requirements, please refer to the EVA website (https://www.ebi.ac.uk/eva/?Submit-Data).
|
|
30
35
|
|
|
31
36
|
{% set run_status = validation_results.get('metadata_check', {}).get('run_status', '') %}
|
|
32
|
-
{% if run_status %}
|
|
37
|
+
{% if run_status == 'success' %}
|
|
33
38
|
{{ metadata_validation_report(validation_results) }}
|
|
39
|
+
{% elif run_status == 'crashed' %}
|
|
40
|
+
{{ report_crashed_task('Metadata check') }}
|
|
34
41
|
{% else %}
|
|
35
42
|
{{ validation_not_run_yet_message() }}
|
|
36
43
|
{% endif %}
|
|
44
|
+
|
|
37
45
|
-
|
|
38
46
|
|
|
39
47
|
VCF VALIDATION RESULTS
|
|
40
48
|
Checks whether each file is compliant with the VCF specification (http://samtools.github.io/hts-specs/VCFv4.4.pdf).
|
|
41
49
|
Also checks whether the variants' reference alleles match against the reference assembly.
|
|
42
50
|
|
|
43
|
-
|
|
44
|
-
{%
|
|
45
|
-
{%
|
|
46
|
-
{
|
|
47
|
-
|
|
48
|
-
{{
|
|
51
|
+
ASSEMBLY CHECK
|
|
52
|
+
{% set run_status = validation_results.get('assembly_check', {}).get('run_status', '') %}
|
|
53
|
+
{% if run_status == 'success' %}
|
|
54
|
+
{{ assembly_check_report(validation_results.get('assembly_check', {}), vcf_files) }}
|
|
55
|
+
{% elif run_status == 'crashed' %}
|
|
56
|
+
{{ report_crashed_task('Assembly check') }}
|
|
57
|
+
{% else %}
|
|
58
|
+
{{ validation_not_run_yet_message() }}
|
|
49
59
|
{% endif %}
|
|
50
|
-
|
|
60
|
+
|
|
61
|
+
VCF CHECK
|
|
62
|
+
{% set run_status = validation_results.get('vcf_check', {}).get('run_status', '') %}
|
|
63
|
+
{% if run_status == 'success' %}
|
|
64
|
+
{{ vcf_check_report(validation_results.get('vcf_check', {}), vcf_files) }}
|
|
65
|
+
{% elif run_status == 'crashed' %}
|
|
66
|
+
{{ report_crashed_task('VCF check') }}
|
|
51
67
|
{% else %}
|
|
52
68
|
{{ validation_not_run_yet_message() }}
|
|
53
69
|
{% endif %}
|
|
@@ -58,8 +74,10 @@ SAMPLE NAME CONCORDANCE CHECK
|
|
|
58
74
|
Checks whether information in the metadata is concordant with that contained in the VCF files, in particular sample names.
|
|
59
75
|
|
|
60
76
|
{% set run_status = validation_results.get('sample_check', {}).get('run_status', '') %}
|
|
61
|
-
{% if run_status %}
|
|
77
|
+
{% if run_status == 'success' %}
|
|
62
78
|
{{ sample_name_check_report(validation_results) }}
|
|
79
|
+
{% elif run_status == 'crashed' %}
|
|
80
|
+
{{ report_crashed_task('Sample name concordance') }}
|
|
63
81
|
{% else %}
|
|
64
82
|
{{ validation_not_run_yet_message() }}
|
|
65
83
|
{% endif %}
|
|
@@ -71,13 +89,16 @@ Checks that the reference sequences in the FASTA file used to call the variants
|
|
|
71
89
|
Also checks if the reference assembly accession in the metadata matches the one determined from the FASTA file.
|
|
72
90
|
|
|
73
91
|
{% set run_status = validation_results.get('fasta_check', {}).get('run_status', '') %}
|
|
74
|
-
{% if run_status %}
|
|
75
|
-
{% for file_name in fasta_files %}
|
|
76
|
-
{% if file_name != "pass"%}
|
|
92
|
+
{% if run_status == 'success' %}
|
|
93
|
+
{% for file_name in fasta_files %}
|
|
94
|
+
{% if file_name != "pass"%}
|
|
95
|
+
{# Indentation is important as it impact the report's look#}
|
|
77
96
|
{{ file_name }}
|
|
78
97
|
{{ fasta_check_report(validation_results, file_name) }}
|
|
79
|
-
{% endif %}
|
|
80
|
-
{% endfor %}
|
|
98
|
+
{% endif %}
|
|
99
|
+
{% endfor %}
|
|
100
|
+
{% elif run_status == 'crashed' %}
|
|
101
|
+
{{ report_crashed_task('INSDC check') }}
|
|
81
102
|
{% else %}
|
|
82
103
|
{{ validation_not_run_yet_message() }}
|
|
83
104
|
{% endif %}
|