eva-sub-cli 0.6.2__tar.gz → 0.6.4__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.2 → eva_sub_cli-0.6.4}/.github/workflows/integration-tests.yml +3 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/.github/workflows/publish.yml +5 -2
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/.github/workflows/tests.yml +5 -2
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml +3 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/PKG-INFO +2 -2
- eva_sub_cli-0.6.4/docs/common_vcf_errors.md +455 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/how_to_submit.md +1 -1
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/input_file_overview.md +2 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/__init__.py +1 -1
- eva_sub_cli-0.6.4/eva_sub_cli/_version.py +24 -0
- eva_sub_cli-0.6.4/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
- eva_sub_cli-0.6.4/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
- eva_sub_cli-0.6.4/eva_sub_cli/exceptions.py +40 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/cli.py +28 -29
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/xlsx2json.py +1 -11
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/nextflow/validation.nf +0 -1
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/orchestrator.py +6 -49
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/semantic_metadata.py +7 -3
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/submission_ws.py +4 -4
- eva_sub_cli-0.6.4/eva_sub_cli/utils.py +72 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/validators/docker_validator.py +1 -1
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/validators/native_validator.py +1 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/validators/validator.py +8 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/PKG-INFO +2 -2
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/SOURCES.txt +4 -6
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/requires.txt +1 -1
- eva_sub_cli-0.6.4/eva_sub_cli.egg-info/scm_file_list.json +157 -0
- eva_sub_cli-0.6.4/eva_sub_cli.egg-info/scm_version.json +8 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/pyproject.toml +1 -1
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/requirements.txt +1 -1
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- eva_sub_cli-0.6.4/tests/resources/EVA_Submission_test_with_project_accession.xlsx +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_auth.py +5 -5
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_cli.py +10 -16
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_orchestrator.py +27 -10
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_semantic_metadata.py +10 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_validator.py +6 -2
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_xlsx2json.py +5 -9
- eva_sub_cli-0.6.2/eva_sub_cli/_version.py +0 -34
- eva_sub_cli-0.6.2/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
- eva_sub_cli-0.6.2/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
- eva_sub_cli-0.6.2/eva_sub_cli/exceptions/invalid_file_type_exception.py +0 -4
- eva_sub_cli-0.6.2/eva_sub_cli/exceptions/metadata_template_version_exception.py +0 -10
- eva_sub_cli-0.6.2/eva_sub_cli/exceptions/submission_not_found_exception.py +0 -4
- eva_sub_cli-0.6.2/eva_sub_cli/exceptions/submission_status_exception.py +0 -5
- eva_sub_cli-0.6.2/eva_sub_cli/exceptions/submission_upload_exception.py +0 -5
- eva_sub_cli-0.6.2/eva_sub_cli/utils.py +0 -20
- eva_sub_cli-0.6.2/eva_sub_cli/validators/__init__.py +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- eva_sub_cli-0.6.2/tests/resources/EVA_Submission_test_with_project_accession.xlsx +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/.github/workflows/publish_docs.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/.gitignore +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/LICENSE +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/README.md +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/conda/build.sh +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/conda/meta.yaml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docker/Dockerfile +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/README.md +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/_config.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/installation.md +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/using_nextflow.md +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/docs/validation_overview.md +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/auth.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/call_home.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/date_utils.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/call_home_payload_schema.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/eva-biosamples.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/eva_logo.png +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/eva_schema.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/spreadsheet2json_conf.yaml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/etc/spreadsheet2json_conf_V2.yaml +0 -0
- {eva_sub_cli-0.6.2/eva_sub_cli/exceptions → eva_sub_cli-0.6.4/eva_sub_cli/executables}/__init__.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/check_metadata_semantics.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/format_metadata.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/samples_checker.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/executables/trim_down.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/file_utils.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/fasta_check.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/file_validation.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/metadata_validation.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/project_details.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/report.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/sample_name_check.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/html/shallow_validation.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/fasta_check.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/file_validation.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/metadata_validation.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/project_details.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/report.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/sample_name_check.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/jinja_templates/text/shallow_validation.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/metadata.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/report.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/submit.py +0 -0
- {eva_sub_cli-0.6.2/eva_sub_cli/executables → eva_sub_cli-0.6.4/eva_sub_cli/validators}/__init__.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli/validators/validation_results_parsers.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/dependency_links.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/entry_points.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/eva_sub_cli.egg-info/top_level.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/pytest.ini +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/setup.cfg +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/setup.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/build_and_test_docker_locally.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/ignore_test_nextflow_validation.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/EVA_Submission_test.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/EVA_Submission_test_V2.xlsx +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/EVA_Submission_test_with_asm_report.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/EVA_Submission_test_with_non_vcf_files.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/EVA_Submission_test_with_project_accession.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/assembly_check/invalid.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/assembly_check/invalid.vcf.text_assembly_report.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/assembly_reports/input_passed.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/fasta_files/Saccharomyces_cerevisiae_I.fa +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/fasta_files/input_passed.fa +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/fasta_files/multi_seq.fa +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/metadata_with_filename.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_checker/evidence_type.yaml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_checker/example1.vcf.gz +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_checker/example2.vcf +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_checker/example3.vcf +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_checker/metadata.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/allele_freq.vcf +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/fake_fasta.fa +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/genotype.vcf +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/metadata_af_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/metadata_af_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/metadata_genotype_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/sample_in_vcf_check/metadata_genotype_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_metadata_json_report.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_metadata_json_report.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_metadata_xlsx_report.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_metadata_xlsx_report.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/metadata.json +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/evidence_type_checker.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/file_info.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/input_passed.fa_check.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/input_passed_trim_down.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/metadata_conversion_errors.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/metadata_semantic_check.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/metadata_validation.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/other_validations/sample_checker.yml +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.db +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.txt +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.vcf_format.log +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/vcf_files/example2.vcf.gz +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/vcf_files/example2.vcf.gz.tbi +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/resources/vcf_files/input_passed.vcf +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_call_home.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_docker_validator.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_file_utils.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_format_metadata.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_metadata.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_native_validator_sample_in_vcf.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_report.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_samples_checker.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_submit.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_trim_down.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_utils.py +0 -0
- {eva_sub_cli-0.6.2 → eva_sub_cli-0.6.4}/tests/test_validaton_results_parsers.py +0 -0
|
@@ -5,12 +5,15 @@ on:
|
|
|
5
5
|
tags:
|
|
6
6
|
- '**'
|
|
7
7
|
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
8
11
|
jobs:
|
|
9
12
|
test:
|
|
10
13
|
runs-on: ubuntu-latest
|
|
11
14
|
strategy:
|
|
12
15
|
matrix:
|
|
13
|
-
python-version: ["3.
|
|
16
|
+
python-version: ["3.11"]
|
|
14
17
|
steps:
|
|
15
18
|
- uses: actions/checkout@v4
|
|
16
19
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -38,7 +41,7 @@ jobs:
|
|
|
38
41
|
- name: Set up Python
|
|
39
42
|
uses: actions/setup-python@v5
|
|
40
43
|
with:
|
|
41
|
-
python-version: '3.
|
|
44
|
+
python-version: '3.11'
|
|
42
45
|
cache: pip
|
|
43
46
|
cache-dependency-path: '**/pyproject.toml'
|
|
44
47
|
- name: Install dependencies
|
|
@@ -4,14 +4,17 @@ on:
|
|
|
4
4
|
push:
|
|
5
5
|
branches: [ main ]
|
|
6
6
|
pull_request:
|
|
7
|
-
branches: [ main
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
8
11
|
|
|
9
12
|
jobs:
|
|
10
13
|
build:
|
|
11
14
|
runs-on: ubuntu-latest
|
|
12
15
|
strategy:
|
|
13
16
|
matrix:
|
|
14
|
-
python-version: ["3.
|
|
17
|
+
python-version: ["3.11", "3.12"]
|
|
15
18
|
|
|
16
19
|
steps:
|
|
17
20
|
- uses: actions/checkout@v2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eva_sub_cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
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
|
|
22
|
+
Requires-Dist: ebi_eva_common_pyutils>=0.7.4
|
|
23
23
|
Requires-Dist: jinja2==3.*,>=3.0.0
|
|
24
24
|
Requires-Dist: jsonschema==4.*
|
|
25
25
|
Requires-Dist: openpyxl==3.*
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
# **Frequently encountered VCF validation issues**
|
|
2
|
+
|
|
3
|
+
This section provides a curated overview of some of the common VCF validation errors. Each error is illustrated with a real validation output example, followed by a brief description about the error and the expected resolution for EVA submissions.
|
|
4
|
+
|
|
5
|
+
## 1. Duplicated Variants
|
|
6
|
+
|
|
7
|
+
**Example Validation Error**
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Line 31165: Duplicated variant 10:51781012:A>a found.
|
|
11
|
+
Line 31166: Duplicated variant 10:51781012:A>a found. It occurs in lines 31165 and 31166.
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**Description**
|
|
15
|
+
|
|
16
|
+
This error indicates that the same variant appears more than once in the VCF file. A duplicated variant is defined as multiple records with identical:
|
|
17
|
+
|
|
18
|
+
* Chromosome
|
|
19
|
+
* Position
|
|
20
|
+
* Reference allele
|
|
21
|
+
* Alternate allele
|
|
22
|
+
|
|
23
|
+
**Additional context**
|
|
24
|
+
|
|
25
|
+
When you receive a validation error like Duplicated variant found, it means two lines in your VCF file are describing the exact same genetic change. Let's explore this further with a real-world VCF example.
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
#CHROM POS ID REF ALT QUAL FILTER ...
|
|
29
|
+
4 15112781 . TGGCCAG T 7.71 PASS ...
|
|
30
|
+
4 15112782 . GGCCAGG G 13.18 PASS ...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
At first glance, these look like two distinct variants because their positions and allele sequences are different. However, both vcf lines are trying to describe a 6-base pair deletion as shown below:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
15112781
|
|
37
|
+
|
|
|
38
|
+
TGGCCAGG
|
|
39
|
+
T------G
|
|
40
|
+
|
|
41
|
+
15112782
|
|
42
|
+
|
|
|
43
|
+
TGGCCAGG
|
|
44
|
+
TG------
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Resolution**
|
|
48
|
+
|
|
49
|
+
Duplicate variants are not permitted in EVA submissions. Please ensure all duplicate records are identified and removed prior to submission. One tools that can help in removing duplicate is [bcftools norm](https://samtools.github.io/bcftools/bcftools.html#norm)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
bcftools norm -multiallelics -both --rm-dup all input.vcf > output.vcf
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## 2. Variants not sorted by Genomic Position
|
|
57
|
+
|
|
58
|
+
**Example Validation Error**
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
Line 54: Contig is not sorted by position. Contig chr1 position 666974 found after 1083338.
|
|
62
|
+
Line 98: Contig is not sorted by position. Contig chr1 position 16620664 found after 16624328.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Description**
|
|
66
|
+
|
|
67
|
+
VCF files must be sorted by chromosome/contig and genomic position in ascending order, otherwise validation error will be raised.
|
|
68
|
+
|
|
69
|
+
**Resolution**
|
|
70
|
+
|
|
71
|
+
Ensure the VCF file is sorted by chromosome/contig and genomic position in ascending order prior to submission. Possible ways to achieve this are shown below:
|
|
72
|
+
|
|
73
|
+
Option 1: Using bcftools
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bcftools sort input.vcf > output.vcf
|
|
77
|
+
```
|
|
78
|
+
Option 2: Using awk and sort
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
awk '/^#/ {print; next} {print | "sort -k1,1 -k2,2n"}' input.vcf > output.vcf
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 3. Values Outside Allowed Range
|
|
87
|
+
|
|
88
|
+
**Example Validation Error**
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
Line 4709805: INFO AF value does not lie in the interval [0,1]. AF=1.0005.
|
|
92
|
+
|
|
93
|
+
Line 39098: Sample #1, GP=164.33,0 value does not lie in the interval [0,1].
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Description**
|
|
98
|
+
|
|
99
|
+
This error indicates that one or more numeric values fall outside their permitted range. Certain VCF fields are expected to contain values within a defined interval (commonly \[0,1\]).
|
|
100
|
+
|
|
101
|
+
**Resolution**
|
|
102
|
+
|
|
103
|
+
Ensure that all values in the affected fields fall within their expected range. Any values outside the permitted interval should be corrected or recalculated prior to submission.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
Example 1: Invalid AF value
|
|
107
|
+
|
|
108
|
+
AF represents allele frequency and must not exceed 1.
|
|
109
|
+
|
|
110
|
+
Problematic record:
|
|
111
|
+
1 10583 . G A . PASS AF=1.0005
|
|
112
|
+
|
|
113
|
+
Corrected record:
|
|
114
|
+
1 10583 . G A . PASS AF=1.0
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
Example 2: Invalid GP value
|
|
119
|
+
|
|
120
|
+
GP values represent genotype probabilities and must fall within the range [0,1]
|
|
121
|
+
|
|
122
|
+
Problematic record:
|
|
123
|
+
|
|
124
|
+
1 250321 . C T . PASS . GT:GP 0/1:1.24,0.15,0.03
|
|
125
|
+
|
|
126
|
+
Corrected record:
|
|
127
|
+
|
|
128
|
+
1 250321 . C T . PASS . GT:GP 0/1:0.82,0.15,0.03
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
## 4. Invalid Reference Allele
|
|
134
|
+
|
|
135
|
+
**Example Validation Error**
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
Line 91987: Reference is not a string of bases.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Description**
|
|
142
|
+
|
|
143
|
+
This error indicates that the reference allele contains invalid characters. The REF field in a VCF file must consist only of valid nucleotide bases (A, C, G, T). Any other characters or formats are not permitted and violate VCF specification requirements.
|
|
144
|
+
|
|
145
|
+
**Resolution**
|
|
146
|
+
|
|
147
|
+
Please check the following before submission:
|
|
148
|
+
|
|
149
|
+
- Check that the REF allele contains valid bases
|
|
150
|
+
- Ensure that the VCF was generated against the same reference genome assembly declared in the submission metadata.
|
|
151
|
+
- If the VCF was generated using PLINK, check that the correct reference allele settings were used. When exporting VCF files using PLINK 2.0, use the appropriate reference FASTA option so that REF alleles are taken from the correct reference genome:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
plink2 --vcf input.vcf --ref-from-fa reference.fa --export vcf --out output
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 5. Invalid Fileformat Declaration
|
|
158
|
+
|
|
159
|
+
**Example Validation Error**
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
The fileformat declaration is not valid (the line must start with ##fileformat= and the value must be one of 'VCFv4.1', 'VCFv4.2', 'VCFv4.3' or 'VCFv4.4').
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Description**
|
|
166
|
+
|
|
167
|
+
This error indicates that the VCF header does not contain a valid file format declaration. The fileformat line is a mandatory header field and must follow the required structure and accepted version values.
|
|
168
|
+
|
|
169
|
+
**Resolution**
|
|
170
|
+
|
|
171
|
+
Ensure that the fileformat declaration is correctly defined in the VCF header using a supported version and the required format before submission.
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
Problematic header:
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
##fileformat=VCFv4.5
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Example of a supported header:
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
##fileformat=VCFv4.2
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
## 6. Missing Contig Definition (warning)
|
|
188
|
+
|
|
189
|
+
**Example Validation Error**
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
Chromosome/contig '13' is not described in a 'contig' meta description. (warning)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Description**
|
|
196
|
+
|
|
197
|
+
This warning indicates that a chromosome or contig referenced in the VCF records is not defined in the header. Each contig used in the VCF file should have a corresponding entry in the header describing it as without this there would be errors further down in our submission pipeline.
|
|
198
|
+
|
|
199
|
+
**Resolution**
|
|
200
|
+
|
|
201
|
+
Ensure that all contigs referenced in the VCF file are properly defined in the header using contig meta-information lines before submission.
|
|
202
|
+
|
|
203
|
+
Problematic header:
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
##fileformat=VCFv4.2
|
|
207
|
+
#CHROM POS ID REF ALT QUAL FILTER INFO
|
|
208
|
+
13 32936732 . G A . PASS .
|
|
209
|
+
```
|
|
210
|
+
Header with contig definition added:
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
##fileformat=VCFv4.2
|
|
214
|
+
##contig=<ID=13,length=114364328>
|
|
215
|
+
#CHROM POS ID REF ALT QUAL FILTER INFO
|
|
216
|
+
13 32936732 . G A . PASS .
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## 7. Invalid Genotype Format
|
|
220
|
+
|
|
221
|
+
**Example Validation Error**
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
Critical error: Line 23: Sample #77 does not start with a valid genotype.
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Description**
|
|
228
|
+
|
|
229
|
+
This error indicates that the genotype (GT) field for a sample is not in a valid format. The GT field must follow the standard VCF genotype representation, typically consisting of allele values separated by either / or |
|
|
230
|
+
|
|
231
|
+
**Resolution**
|
|
232
|
+
|
|
233
|
+
Ensure that all genotype values are correctly formatted according to VCF specifications before submission. Example command to inspect genotype fields
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
bcftools query -f '%CHROM\t%POS[\t%GT]\n' input.vcf
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## 8. Invalid INFO Field Format and Cardinality
|
|
240
|
+
|
|
241
|
+
**Example Validation Errors**
|
|
242
|
+
|
|
243
|
+
```text
|
|
244
|
+
Critical error: Line 119: Info field value is not a comma-separated list of valid strings (maybe it contains whitespaces?).
|
|
245
|
+
|
|
246
|
+
Critical error: Line 186: Info key is not a sequence of alphanumeric and/or punctuation characters
|
|
247
|
+
|
|
248
|
+
Critical error: Line 115: INFO ConfidenceInterval does not match the meta specification Number=A (expected 1 value(s)). ConfidenceInterval=0.1554,0.3237.
|
|
249
|
+
|
|
250
|
+
Line 2805: INFO TYPE does not match the meta specification Number=A (expected 2 value(s)). TYPE=snp.
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Description**
|
|
254
|
+
|
|
255
|
+
These errors indicate that the INFO field is not correctly defined or does not match its expected format. INFO field keys must use valid characters, values must be provided as scalar values or simple comma-separated lists, and the number of values must match the corresponding header definition.
|
|
256
|
+
|
|
257
|
+
**Resolution**
|
|
258
|
+
|
|
259
|
+
Ensure that INFO field keys use valid characters, values are formatted as scalar values or simple comma-separated lists, and the number of values matches the corresponding header definition before submission.
|
|
260
|
+
|
|
261
|
+
Example command to inspect INFO header definitions
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
bcftools view -h input.vcf | grep "^##INFO"
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Example command to inspect INFO fields in variant records
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
bcftools query -f '%CHROM\t%POS\t%INFO\n' input.vcf
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
## 9. Identical Reference and Alternate Alleles
|
|
275
|
+
|
|
276
|
+
**Example Validation Error**
|
|
277
|
+
|
|
278
|
+
```text
|
|
279
|
+
Line 25551: Reference and alternate alleles must not be the same.
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Description**
|
|
283
|
+
|
|
284
|
+
This error indicates that the reference (REF) and alternate (ALT) alleles are identical. In a valid VCF record, the REF and ALT fields must represent different alleles.
|
|
285
|
+
|
|
286
|
+
**Resolution**
|
|
287
|
+
|
|
288
|
+
Ensure that the REF and ALT fields contain different allele values before submission.
|
|
289
|
+
|
|
290
|
+
Example command to identify records where REF and ALT are identical
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
awk '!/^#/ && $4 == $5' input.vcf
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
## 10. Invalid Quality Value
|
|
298
|
+
|
|
299
|
+
**Example Validation Error**
|
|
300
|
+
|
|
301
|
+
```text
|
|
302
|
+
Line 29: Quality is not a single dot or a positive number.
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Description**
|
|
306
|
+
|
|
307
|
+
This error indicates that the QUAL field is not correctly formatted.The QUAL field must contain either a positive numeric value or a single dot (.) to indicate a missing value.
|
|
308
|
+
|
|
309
|
+
**Resolution**
|
|
310
|
+
|
|
311
|
+
Ensure that the QUAL field contains either a valid positive number or a dot (.) where the value is missing before submission.
|
|
312
|
+
|
|
313
|
+
Example command to inspect QUAL values
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
bcftools query -f '%CHROM\t%POS\t%QUAL\n' input.vcf
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
## 11. Incorrect SVLEN Value
|
|
321
|
+
|
|
322
|
+
**Example Validation Error**
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
Line 54: INFO SVLEN must be equal to "length of ALT - length of REF" for non-symbolic alternate alleles. SVLEN=6, expected value=-6.
|
|
326
|
+
```
|
|
327
|
+
**Description**
|
|
328
|
+
|
|
329
|
+
This error indicates that the SVLEN value in the INFO field does not match the expected value based on the REF and ALT alleles. For non-symbolic alternate alleles, SVLEN must correspond to the difference in length between the ALT and REF sequences.
|
|
330
|
+
|
|
331
|
+
**Resolution**
|
|
332
|
+
|
|
333
|
+
Ensure that the SVLEN value correctly reflects the difference in length between the ALT and REF alleles before submission.
|
|
334
|
+
|
|
335
|
+
Example command to inspect structural variant annotations
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
bcftools query -f '%CHROM\t%POS\t%INFO/SVTYPE\t%INFO/SVLEN\n' input.vcf
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
## 12 Major allele used as REF allele (Data consistency issue)
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
**Example**
|
|
346
|
+
|
|
347
|
+
```text
|
|
348
|
+
##INFO=<ID=PR,Number=0,Type=Flag,Description="Provisional reference allele, may not be based on real reference genome">
|
|
349
|
+
|
|
350
|
+
Line 51: Chromosome NC_040252.1, position 303453, reference allele 'G' does not match the reference sequence, expected 'T'
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Description**
|
|
354
|
+
|
|
355
|
+
This is a known behaviour of PLINK, which by default may assign the major allele as the reference allele if not explicitly instructed otherwise. As a result, the REF field in the VCF may not correspond to the actual reference genome used for submission.
|
|
356
|
+
|
|
357
|
+
**Resolution**
|
|
358
|
+
|
|
359
|
+
When generating VCF files using PLINK 2.0, use the `--ref-from-fa` option to ensure that reference alleles are derived from the correct FASTA reference genome file.
|
|
360
|
+
|
|
361
|
+
Example command when exporting VCFs with PLINK 2.0
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
plink2 --vcf input.vcf --ref-from-fa reference.fa --export vcf --out output
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## 13. Sample Count Mismatch
|
|
368
|
+
|
|
369
|
+
**Example Validation Error**
|
|
370
|
+
|
|
371
|
+
```text
|
|
372
|
+
Line 124: The number of samples must match those listed in the header line.
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**Description**
|
|
376
|
+
|
|
377
|
+
This error indicates that the number of sample columns in the VCF data does not match the number of samples defined in the header. The header line specifies the sample identifiers, and each record must contain the same number of sample entries.
|
|
378
|
+
|
|
379
|
+
**Resolution**
|
|
380
|
+
|
|
381
|
+
Ensure that the number of sample columns in all records matches the number of samples defined in the header before submission.
|
|
382
|
+
|
|
383
|
+
Example command to detect records with inconsistent sample column counts
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
awk '!/^#/ {print NF}' input.vcf | sort -u
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
This command reports the total number of columns present across variant records in the VCF file. In a correctly formatted VCF, all variant records should contain the same number of columns.
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
## 14. Missing Newline at End of File
|
|
394
|
+
|
|
395
|
+
**Example Validation Error**
|
|
396
|
+
|
|
397
|
+
```text
|
|
398
|
+
Critical error: Line 15: There is no newline at the end of the file.
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**Description**
|
|
402
|
+
|
|
403
|
+
This error indicates that the VCF file does not end with a newline character. VCF files must end with a newline to ensure proper parsing and compliance with file formatting requirements.
|
|
404
|
+
|
|
405
|
+
**Resolution**
|
|
406
|
+
|
|
407
|
+
Ensure that the VCF file ends with a newline character before submission. One way to achieve this is shown below:
|
|
408
|
+
|
|
409
|
+
Example command to add a newline character to the end of the file
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
sed -i -e '$a\' input.vcf
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## 15. INFO and FORMAT Fields not defined in header (warnings)
|
|
416
|
+
|
|
417
|
+
**Example Validation Errors**
|
|
418
|
+
|
|
419
|
+
```text
|
|
420
|
+
INFO 'SVTYPE' is not defined in the header, assuming Type=String
|
|
421
|
+
|
|
422
|
+
INFO 'END' is not defined in the header, assuming Type=String
|
|
423
|
+
|
|
424
|
+
INFO 'SVLEN' is not defined in the header, assuming Type=String
|
|
425
|
+
|
|
426
|
+
INFO 'AF' is not defined in the header, assuming Type=String
|
|
427
|
+
|
|
428
|
+
INFO 'DP' is not defined in the header, assuming Type=String
|
|
429
|
+
|
|
430
|
+
FORMAT 'CN' is not defined in the header, assuming Type=String
|
|
431
|
+
|
|
432
|
+
FORMAT 'GT' is not defined in the header, assuming Type=String
|
|
433
|
+
|
|
434
|
+
FORMAT 'DP' is not defined in the header, assuming Type=String
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Description**
|
|
438
|
+
|
|
439
|
+
These warnings indicate that one or more INFO or FORMAT fields are present in the VCF records but are not defined in the header.
|
|
440
|
+
|
|
441
|
+
**Resolution**
|
|
442
|
+
|
|
443
|
+
All INFO and FORMAT fields used in the VCF must be explicitly defined in the header using \#\#INFO and \#\#FORMAT lines.
|
|
444
|
+
|
|
445
|
+
Example command to inspect INFO field definitions
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
bcftools view -h input.vcf | grep "^##INFO"
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
Example command to inspect FORMAT field definitions
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
bcftools view -h input.vcf | grep "^##FORMAT"
|
|
455
|
+
```
|
|
@@ -28,7 +28,7 @@ The basic command to run validation and submission is as follows:
|
|
|
28
28
|
eva-sub-cli.py --metadata_xlsx <metadata file> --submission_dir <submission directory> --username <webin username> --password <webin password>
|
|
29
29
|
```
|
|
30
30
|
This will run validation and generate a report with the results. The report can be viewed as HTML or plain text. More
|
|
31
|
-
description of the validation checks being performed can be found in the [validation overview](validation_overview.md).
|
|
31
|
+
description of the validation checks being performed can be found in the [validation overview](validation_overview.md). For guidance on frequently encountered VCF validation issues and their resolutions, please see [Common VCF errors](common_vcf_errors.md)
|
|
32
32
|
|
|
33
33
|
**NOTE:** If the validation is successful, this command will automatically submit your data and metadata to EVA. If you
|
|
34
34
|
don't want this, see [below](#running-only-validation-or-only-submission).
|
|
@@ -42,6 +42,8 @@ And here is how allele frequencies would look:
|
|
|
42
42
|
|
|
43
43
|
When using the eva-sub-cli tool, VCF files can be either uncompressed or compressed using bgzip or gzip.
|
|
44
44
|
|
|
45
|
+
For guidance on frequently encountered VCF validation issues and their resolutions, please see [Common VCF errors](common_vcf_errors.md)
|
|
46
|
+
|
|
45
47
|
## FASTA File
|
|
46
48
|
|
|
47
49
|
This is the reference genome that your variants were called against, in uncompressed FASTA format. The EVA uses this to
|
|
@@ -11,7 +11,7 @@ MINIMUM_METADATA_XLSX_TEMPLATE_VERSION = '2.0.0'
|
|
|
11
11
|
SUB_CLI_CONFIG_FILE = ".eva_sub_cli_config.yml"
|
|
12
12
|
|
|
13
13
|
# Environment variable
|
|
14
|
-
|
|
14
|
+
SUBMISSION_WS_URL_VAR = 'SUBMISSION_WS_URL'
|
|
15
15
|
ENA_WEBIN_ACCOUNT_VAR = 'ENA_WEBIN_ACCOUNT'
|
|
16
16
|
ENA_WEBIN_PASSWORD_VAR = 'ENA_WEBIN_PASSWORD'
|
|
17
17
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '0.6.4'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 6, 4)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = 'g1a3c8a4d1'
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
class NoVcfsFoundException(Exception):
|
|
2
|
+
def __init__(self, message):
|
|
3
|
+
self.message = message
|
|
4
|
+
super().__init__(self.message)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class InvalidFileTypeError(Exception):
|
|
8
|
+
def __init__(self, message):
|
|
9
|
+
self.message = message
|
|
10
|
+
super().__init__(self.message)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MetadataTemplateVersionException(Exception):
|
|
14
|
+
def __init__(self, message):
|
|
15
|
+
self.message = message
|
|
16
|
+
super().__init__(self.message)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class MetadataTemplateVersionNotFoundException(Exception):
|
|
20
|
+
def __init__(self, message):
|
|
21
|
+
self.message = message
|
|
22
|
+
super().__init__(self.message)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class SubmissionNotFoundException(Exception):
|
|
26
|
+
def __init__(self, message):
|
|
27
|
+
self.message = message
|
|
28
|
+
super().__init__(self.message)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class SubmissionStatusException(Exception):
|
|
32
|
+
def __init__(self, message):
|
|
33
|
+
self.message = message
|
|
34
|
+
super().__init__(self.message)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class SubmissionUploadException(Exception):
|
|
38
|
+
def __init__(self, message):
|
|
39
|
+
self.message = message
|
|
40
|
+
super().__init__(self.message)
|