eva-sub-cli 0.6.6__tar.gz → 0.7.0__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.6 → eva_sub_cli-0.7.0}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml +1 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/PKG-INFO +1 -1
- eva_sub_cli-0.7.0/docs/common_metadata_errors.md +116 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/how_to_submit.md +0 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/input_file_overview.md +11 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/_version.py +3 -3
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/auth.py +5 -1
- eva_sub_cli-0.7.0/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
- eva_sub_cli-0.7.0/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/eva_schema.json +114 -88
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/spreadsheet2json_conf.yaml +9 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/exceptions.py +36 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/cli.py +47 -27
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/xlsx2json.py +30 -5
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/file_utils.py +3 -5
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/metadata.py +3 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/orchestrator.py +16 -10
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/semantic_metadata.py +34 -5
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/submit.py +3 -2
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/validators/docker_validator.py +13 -10
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/validators/native_validator.py +3 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/validators/validator.py +28 -7
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/PKG-INFO +1 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/SOURCES.txt +3 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/scm_file_list.json +3 -0
- eva_sub_cli-0.7.0/eva_sub_cli.egg-info/scm_version.json +8 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_with_formula.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_with_project_accession.xlsx +0 -0
- eva_sub_cli-0.7.0/tests/resources/EVA_Submission_test_without_data_acknowledgement_sheet.xlsx +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_cli.py +9 -9
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_metadata.py +2 -1
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_orchestrator.py +3 -3
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_semantic_metadata.py +97 -13
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_validator.py +32 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_xlsx2json.py +105 -7
- eva_sub_cli-0.6.6/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
- eva_sub_cli-0.6.6/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
- eva_sub_cli-0.6.6/eva_sub_cli.egg-info/scm_version.json +0 -8
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
- 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_fails.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_with_links.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_with_non_vcf_files.xlsx +0 -0
- eva_sub_cli-0.6.6/tests/resources/EVA_Submission_test_with_project_accession.xlsx +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.github/workflows/integration-tests.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.github/workflows/publish.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.github/workflows/publish_docs.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.github/workflows/tests.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.gitignore +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/LICENSE +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/README.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/conda/build.sh +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/conda/meta.yaml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docker/Dockerfile +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/README.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/_config.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/common_vcf_errors.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/installation.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/using_nextflow.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/docs/validation_overview.md +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/__init__.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/call_home.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/date_utils.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/call_home_payload_schema.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/eva-biosamples.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/eva_logo.png +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/etc/spreadsheet2json_conf_V2.yaml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/__init__.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/check_metadata_semantics.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/format_metadata.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/samples_checker.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/executables/trim_down.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/fasta_check.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/file_validation.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/metadata_validation.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/project_details.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/report.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/sample_name_check.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/html/shallow_validation.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/fasta_check.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/file_validation.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/metadata_validation.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/project_details.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/report.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/sample_name_check.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/jinja_templates/text/shallow_validation.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/nextflow/validation.nf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/report.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/submission_ws.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/utils.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/validators/__init__.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli/validators/validation_results_parsers.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/dependency_links.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/entry_points.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/requires.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/eva_sub_cli.egg-info/top_level.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/pyproject.toml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/pytest.ini +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/requirements.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/setup.cfg +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/setup.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/build_and_test_docker_locally.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/ignore_test_nextflow_validation.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/EVA_Submission_test.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/EVA_Submission_test_V2.xlsx +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/EVA_Submission_test_with_asm_report.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/EVA_Submission_test_with_non_vcf_files.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/EVA_Submission_test_with_project_accession.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/assembly_check/invalid.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/assembly_check/invalid.vcf.text_assembly_report.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/assembly_reports/input_passed.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/fasta_files/Saccharomyces_cerevisiae_I.fa +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/fasta_files/input_passed.fa +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/fasta_files/multi_seq.fa +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/metadata_with_filename.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_checker/evidence_type.yaml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_checker/example1.vcf.gz +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_checker/example2.vcf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_checker/example3.vcf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_checker/metadata.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/allele_freq.vcf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/fake_fasta.fa +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/genotype.vcf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/metadata_af_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/metadata_af_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/metadata_genotype_no_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/sample_in_vcf_check/metadata_genotype_with_sample_in_vcf.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_metadata_json_report.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_metadata_json_report.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_metadata_xlsx_report.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_metadata_xlsx_report.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_report_metadata_json_crashed.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_report_metadata_json_crashed.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_report_metadata_json_process_not_run.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/metadata.json +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/evidence_type_checker.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/file_info.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/input_passed.fa_check.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/input_passed_trim_down.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/metadata_conversion_errors.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/metadata_semantic_check.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/metadata_validation.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/other_validations/sample_checker.yml +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.db +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.txt +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.vcf_format.log +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/vcf_files/example2.vcf.gz +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/vcf_files/example2.vcf.gz.tbi +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/resources/vcf_files/input_passed.vcf +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_auth.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_call_home.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_check_fasta_insdc.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_docker_validator.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_evidence_type_checker.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_file_utils.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_format_metadata.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_native_validator_sample_in_vcf.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_report.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_samples_checker.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_submit.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_trim_down.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_utils.py +0 -0
- {eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/tests/test_validaton_results_parsers.py +0 -0
{eva_sub_cli-0.6.6 → eva_sub_cli-0.7.0}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml
RENAMED
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
steps:
|
|
14
14
|
- name: Trigger eva sub cli integration tests
|
|
15
|
-
uses: peter-evans/repository-dispatch@
|
|
15
|
+
uses: peter-evans/repository-dispatch@v4
|
|
16
16
|
with:
|
|
17
17
|
token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }}
|
|
18
18
|
repository: EBIvariation/eva-integration-tests
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# **Frequently encountered metadata errors**
|
|
2
|
+
|
|
3
|
+
This section provides a curated overview of some of the common metadata errors. Each error is illustrated with a real validation output example, followed by a brief description of the error and the expected resolution for EVA submissions.
|
|
4
|
+
|
|
5
|
+
## 1. Missing mandatory metadata
|
|
6
|
+
|
|
7
|
+
**Example Validation Error**
|
|
8
|
+
|
|
9
|
+
| **Sheet** | **Row** | **Column** | **Description** |
|
|
10
|
+
|---|---:|---|---|
|
|
11
|
+
| **Submitter Details** | **2** | **Center** | Column "Center" is not populated |
|
|
12
|
+
|
|
13
|
+
**Description**
|
|
14
|
+
|
|
15
|
+
The Center field is required but has been left empty in the Submitter Details sheet.
|
|
16
|
+
|
|
17
|
+
**Resolution**
|
|
18
|
+
|
|
19
|
+
Populate all mandatory fields indicated in bold. EVA expects these fields to contain a valid value and not be left blank.
|
|
20
|
+
|
|
21
|
+
For the Center field, provide the name of the submitting center/institution.
|
|
22
|
+
|
|
23
|
+
## 2. Invalid metadata values
|
|
24
|
+
|
|
25
|
+
**Example Validation Error**
|
|
26
|
+
|
|
27
|
+
| Sheet | Row | Column | Description |
|
|
28
|
+
|---|---:|---|---|
|
|
29
|
+
| **Sample** | **3** | **Scientific Name** | Species *Homo sapens* does not match taxonomy 9606 (*Homo sapiens*). |
|
|
30
|
+
|
|
31
|
+
**Description**
|
|
32
|
+
|
|
33
|
+
The Scientific Name does not match the species associated with the submitted Taxonomy ID. In the above example, taxonomy ID 9606 corresponds to Homo sapiens and not Homo sapens.
|
|
34
|
+
|
|
35
|
+
**Resolution**
|
|
36
|
+
|
|
37
|
+
Check that the metadata value is valid and follows the expected format or controlled vocabulary.
|
|
38
|
+
|
|
39
|
+
## 3. Invalid metadata format
|
|
40
|
+
|
|
41
|
+
**Example Validation Error**
|
|
42
|
+
|
|
43
|
+
| Sheet | Row | Column | Description |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| **Submitter Details** | **2** | **Email Address** | Must match the `email` format. |
|
|
46
|
+
|
|
47
|
+
**Description**
|
|
48
|
+
|
|
49
|
+
The email address provided in the Submitter Details sheet does not match the expected email address format.
|
|
50
|
+
|
|
51
|
+
**Resolution**
|
|
52
|
+
|
|
53
|
+
Enter a valid email address in the Email Address field, for example, name@example.com.
|
|
54
|
+
|
|
55
|
+
For similar metadata validation errors, check the value against the format or allowed values expected by EVA and correct the metadata accordingly.
|
|
56
|
+
|
|
57
|
+
## 4. Project or Sample Not Publicly Accessible
|
|
58
|
+
|
|
59
|
+
**Example Validation Error**
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
Exception: PRJEBXXXXXX does not exist in ENA or is private
|
|
63
|
+
|
|
64
|
+
SAMNXXXXXXXX does not exist or is private
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Description**
|
|
69
|
+
|
|
70
|
+
The submitted project or sample accession cannot be found in ENA or is not publicly accessible. This may occur when the accession is incorrect, does not exist, or the corresponding object is still private.
|
|
71
|
+
|
|
72
|
+
**Resolution**
|
|
73
|
+
|
|
74
|
+
EVA cannot add to, validate, or access private objects. Make sure the project or sample has been released publicly before submitting it to EVA for validation.
|
|
75
|
+
|
|
76
|
+
## 5. BioSamples issued by NCBI : geographic location/collection date issue
|
|
77
|
+
|
|
78
|
+
**Example Validation Error**
|
|
79
|
+
|
|
80
|
+
| Sheet | Row | Column | Description |
|
|
81
|
+
|---|---:|---|---|
|
|
82
|
+
| **Sample** | **4** | **Sample Accession** | Error validating existing sample SAMN47377199: must have required property **'collection date'**. |
|
|
83
|
+
| **Sample** | **4** | **Sample Accession** | Error validating existing sample SAMN47377199: must have required property **'geographic location (country and/or sea)'**. |
|
|
84
|
+
|
|
85
|
+
**Description**
|
|
86
|
+
|
|
87
|
+
This error is due to a difference in reporting geographical location and collection date between NCBI BioSamples and ENA BioSamples. NCBI BioSamples uses property names "geo_loc_name" and "collection_date", whereas ENA uses "geographic location (country and/or sea)" and "collection date". EVA validates BioSamples against ENA's definition, which makes reusing NCBI BioSamples in a submission to EVA difficult to automate at the moment.
|
|
88
|
+
|
|
89
|
+
**Resolution**
|
|
90
|
+
|
|
91
|
+
Once you have validated the rest of the data, contact eva-helpdesk@ebi.ac.uk to submit the data, as this will require manual intervention. Both NCBI and ENA are aware of this issue and we are working towards fixing this.
|
|
92
|
+
|
|
93
|
+
## 6. Either/Or Fields Completed Incorrectly
|
|
94
|
+
|
|
95
|
+
**Description**
|
|
96
|
+
|
|
97
|
+
Some metadata fields are highlighted in green to indicate an either/or requirement. Only one of the specified options should be completed.
|
|
98
|
+
|
|
99
|
+
For example, in the Project tab, the submitter should complete either the Pre-registered Project section or the New Project section. Both sections should not be completed.
|
|
100
|
+
|
|
101
|
+
**Resolution**
|
|
102
|
+
|
|
103
|
+
When fields are highlighted in green, check the available options and complete only the section that applies to the submission. Leave the other option blank.
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 7. Publication Field Not Completed Correctly
|
|
107
|
+
|
|
108
|
+
**Description**
|
|
109
|
+
|
|
110
|
+
The Publication(s) field is optional, but when provided, the publication must be and given in the expected DB format. An example valid entry would be: PubMed:23128226
|
|
111
|
+
|
|
112
|
+
**Resolution**
|
|
113
|
+
|
|
114
|
+
If publications related to the project are available, enter them using the required DB format, for example, PubMed:23128226. Multiple publications should be separated by commas. For example: PubMed:23128226, PubMed:223445.
|
|
115
|
+
|
|
116
|
+
If there are no relevant publications, the field can be left blank and can be added later by contacting the EVA helpdesk team.
|
|
@@ -71,7 +71,6 @@ This can be useful if you want to avoid re-running long-running validations that
|
|
|
71
71
|
Note that all validation tasks must pass in order to submit. The report will aggregate the results of previous runs and new ones.
|
|
72
72
|
The possible tasks are:
|
|
73
73
|
* [`vcf_check`](validation_overview.md#vcf-checks) - includes syntax validation and other checks on VCF files
|
|
74
|
-
${CODE_ROOT}/env/bin/upload_to_gcloud.py --input-file evidence.json.gz --destination-folder pharmacogenomics
|
|
75
74
|
* [`assembly_check`](validation_overview.md#assembly-checks) - includes all checks involving the FASTA file
|
|
76
75
|
* [`metadata_check`](validation_overview.md#metadata-check) - includes syntactic and semantic checks on metadata
|
|
77
76
|
* [`sample_check`](validation_overview.md#sample-name-concordance-check) - includes sample coherence checks between VCF files and metadata
|
|
@@ -87,6 +87,17 @@ One important column to note is the Hold Date, which is the date until which the
|
|
|
87
87
|
release the data automatically after this date. If it is missing, the default value is three days after the date of
|
|
88
88
|
submission.
|
|
89
89
|
|
|
90
|
+
### Statements
|
|
91
|
+
|
|
92
|
+
This sheet contains statements that the submitter must agree to before submitting data. Please read each
|
|
93
|
+
statement carefully and confirm your agreement before submitting.
|
|
94
|
+
|
|
95
|
+
Additional information about the Access and Benefit-Sharing statement is available in our
|
|
96
|
+
[submission FAQs](https://www.ebi.ac.uk/eva/?Help#submissionPanel&link=confirm-data-shared-openly).
|
|
97
|
+
|
|
98
|
+
NOTE: To use your Webin account, you must also log in to your account and do a one time confirmation of the Access and
|
|
99
|
+
Benefit-Sharing acknowledgement there. [Webin login](https://www.ebi.ac.uk/ena/submit/webin/login) => Manage Account => Tick the box => Save.
|
|
100
|
+
|
|
90
101
|
### Analysis
|
|
91
102
|
|
|
92
103
|
For EVA, an analysis is a grouping of samples and data files. This sheet allows us to link VCF files to a project and
|
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (0,
|
|
21
|
+
__version__ = version = '0.7.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 7, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g3d76f3cd1'
|
|
@@ -8,6 +8,7 @@ from ebi_eva_common_pyutils.logger import AppLogger
|
|
|
8
8
|
from urllib3.exceptions import ResponseError
|
|
9
9
|
|
|
10
10
|
from eva_sub_cli import LSRI_CLIENT_ID, ENA_WEBIN_ACCOUNT_VAR, ENA_WEBIN_PASSWORD_VAR
|
|
11
|
+
from eva_sub_cli.exceptions import WebinBadCredentialsException
|
|
11
12
|
|
|
12
13
|
ENA_AUTH_URL = "https://www.ebi.ac.uk/ena/submit/webin/auth/token"
|
|
13
14
|
LSRI_AUTH_URL = "https://www.ebi.ac.uk/eva/v1/submission/auth/lsri"
|
|
@@ -69,8 +70,11 @@ class WebinAuth(AppLogger):
|
|
|
69
70
|
if response.status_code == 200:
|
|
70
71
|
self.info("Webin authentication successful!")
|
|
71
72
|
return response.text
|
|
73
|
+
elif response.status_code == 401:
|
|
74
|
+
raise WebinBadCredentialsException('Could not authenticate with ENA Webin. Please check your credentials '
|
|
75
|
+
'and try again.')
|
|
72
76
|
else:
|
|
73
|
-
raise ResponseError('Webin
|
|
77
|
+
raise ResponseError(f'Could not authenticate with ENA Webin: {response.status_code}, {response.text}')
|
|
74
78
|
|
|
75
79
|
def _get_webin_username_password(self):
|
|
76
80
|
username = self.cmd_line_username
|
|
Binary file
|
|
Binary file
|
|
@@ -63,87 +63,110 @@
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
"statements": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"description": "Submitter acknowledgements of various EVA data statements",
|
|
69
|
+
"items": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"required": ["acknowledgement", "statement"],
|
|
72
|
+
"additionalProperties": false,
|
|
73
|
+
"properties": {
|
|
74
|
+
"acknowledgement": {
|
|
75
|
+
"type": "boolean",
|
|
76
|
+
"description": "Whether the submitter confirmed this statement"
|
|
77
|
+
},
|
|
78
|
+
"statement": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Full text of the statement as presented to the submitter"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
66
85
|
"project": {
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
86
|
+
"type": "object",
|
|
87
|
+
"if": {
|
|
88
|
+
"required": [
|
|
89
|
+
"projectAccession"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"then": {
|
|
93
|
+
"properties": {
|
|
94
|
+
"projectAccession": {
|
|
95
|
+
"$ref": "#/definitions/projectAccession"
|
|
77
96
|
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
"pattern": "^[^:,]+?:[^:,]+?$"
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
"parentProject": {
|
|
117
|
-
"$ref": "#/definitions/projectAccession"
|
|
118
|
-
},
|
|
119
|
-
"childProjects": {
|
|
120
|
-
"type": "array",
|
|
121
|
-
"items": {
|
|
122
|
-
"$ref": "#/definitions/projectAccession"
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
"peerProjects": {
|
|
126
|
-
"type": "array",
|
|
127
|
-
"items": {
|
|
128
|
-
"$ref": "#/definitions/projectAccession"
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
"links": {
|
|
132
|
-
"type": "array",
|
|
133
|
-
"items": {
|
|
134
|
-
"type": "string"
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
"holdDate": {
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"else": {
|
|
100
|
+
"description": "General information about the Project",
|
|
101
|
+
"required": [
|
|
102
|
+
"title",
|
|
103
|
+
"description",
|
|
104
|
+
"taxId",
|
|
105
|
+
"centre"
|
|
106
|
+
],
|
|
107
|
+
"properties": {
|
|
108
|
+
"title": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"description": "Title of the project",
|
|
111
|
+
"minLength": 20,
|
|
112
|
+
"maxLength": 250
|
|
113
|
+
},
|
|
114
|
+
"description": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "Description of the project",
|
|
117
|
+
"minLength": 20,
|
|
118
|
+
"maxLength": 4000
|
|
119
|
+
},
|
|
120
|
+
"centre": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"description": "Centre, institute or company submitting the project"
|
|
123
|
+
},
|
|
124
|
+
"taxId": {
|
|
125
|
+
"type": "number",
|
|
126
|
+
"description": "Taxonomy ID of the species associated with the project (found here: http://www.ncbi.nlm.nih.gov/taxonomy)"
|
|
127
|
+
},
|
|
128
|
+
"publications": {
|
|
129
|
+
"type": "array",
|
|
130
|
+
"description": "Publications associated with the project, each given as <database>:<identifier>",
|
|
131
|
+
"items": {
|
|
138
132
|
"type": "string",
|
|
139
|
-
"
|
|
133
|
+
"pattern": "^[^:,]+?:[^:,]+?$",
|
|
140
134
|
"examples": [
|
|
141
|
-
"
|
|
135
|
+
"DOI:10.1093/nar/gkw1121",
|
|
136
|
+
"PMID:24565421"
|
|
142
137
|
]
|
|
143
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"parentProject": {
|
|
141
|
+
"$ref": "#/definitions/projectAccession"
|
|
142
|
+
},
|
|
143
|
+
"childProjects": {
|
|
144
|
+
"type": "array",
|
|
145
|
+
"items": {
|
|
146
|
+
"$ref": "#/definitions/projectAccession"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"peerProjects": {
|
|
150
|
+
"type": "array",
|
|
151
|
+
"items": {
|
|
152
|
+
"$ref": "#/definitions/projectAccession"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"links": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"items": {
|
|
158
|
+
"type": "string"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"holdDate": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"format": "date",
|
|
164
|
+
"examples": [
|
|
165
|
+
"2018-11-13"
|
|
166
|
+
]
|
|
144
167
|
}
|
|
145
168
|
}
|
|
146
|
-
|
|
169
|
+
}
|
|
147
170
|
},
|
|
148
171
|
"analysis": {
|
|
149
172
|
"type": "array",
|
|
@@ -309,21 +332,24 @@
|
|
|
309
332
|
"minItems": 1,
|
|
310
333
|
"items": {
|
|
311
334
|
"type": "object",
|
|
312
|
-
"
|
|
313
|
-
|
|
314
|
-
"
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
"
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
335
|
+
"if": {
|
|
336
|
+
"required": [
|
|
337
|
+
"bioSampleAccession"
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
"then": {
|
|
341
|
+
"required": [
|
|
342
|
+
"analysisAlias",
|
|
343
|
+
"sampleInVCF",
|
|
344
|
+
"bioSampleAccession"
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
"else": {
|
|
348
|
+
"required": [
|
|
349
|
+
"analysisAlias",
|
|
350
|
+
"bioSampleObject"
|
|
351
|
+
]
|
|
352
|
+
},
|
|
327
353
|
"properties": {
|
|
328
354
|
"analysisAlias": {
|
|
329
355
|
"type": "array",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
# List of worksheets to be parsed.
|
|
12
12
|
worksheets:
|
|
13
13
|
Submitter Details: submitterDetails
|
|
14
|
+
Statements: statements
|
|
14
15
|
Project: project
|
|
15
16
|
Analysis: analysis
|
|
16
17
|
Sample: sample
|
|
@@ -26,6 +27,14 @@ Submitter Details:
|
|
|
26
27
|
optional:
|
|
27
28
|
Address: address
|
|
28
29
|
|
|
30
|
+
Statements:
|
|
31
|
+
header_row: 2
|
|
32
|
+
required:
|
|
33
|
+
Acknowledgement: acknowledgement
|
|
34
|
+
Statement: statement
|
|
35
|
+
cast:
|
|
36
|
+
Acknowledgement: boolean
|
|
37
|
+
|
|
29
38
|
# List of field for Projects
|
|
30
39
|
Project:
|
|
31
40
|
header_row: 3
|
|
@@ -38,3 +38,39 @@ class SubmissionUploadException(Exception):
|
|
|
38
38
|
def __init__(self, message):
|
|
39
39
|
self.message = message
|
|
40
40
|
super().__init__(self.message)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class DirLockError(Exception):
|
|
44
|
+
def __init__(self, message):
|
|
45
|
+
self.message = message
|
|
46
|
+
super().__init__(self.message)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class UserFileNotFoundException(Exception):
|
|
50
|
+
def __init__(self, message):
|
|
51
|
+
self.message = message
|
|
52
|
+
super().__init__(self.message)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class DependencyNotFoundException(Exception):
|
|
56
|
+
def __init__(self, message):
|
|
57
|
+
self.message = message
|
|
58
|
+
super().__init__(self.message)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class WebinBadCredentialsException(Exception):
|
|
62
|
+
def __init__(self, message):
|
|
63
|
+
self.message = message
|
|
64
|
+
super().__init__(self.message)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class InvalidSubmissionException(Exception):
|
|
68
|
+
def __init__(self, message):
|
|
69
|
+
self.message = message
|
|
70
|
+
super().__init__(self.message)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class DockerValidatorException(Exception):
|
|
74
|
+
def __init__(self, message):
|
|
75
|
+
self.message = message
|
|
76
|
+
super().__init__(self.message)
|
|
@@ -15,7 +15,9 @@ import eva_sub_cli
|
|
|
15
15
|
from eva_sub_cli import ENA_WEBIN_ACCOUNT_VAR, ENA_WEBIN_PASSWORD_VAR
|
|
16
16
|
from eva_sub_cli import orchestrator
|
|
17
17
|
from eva_sub_cli.exceptions import MetadataTemplateVersionException, MetadataTemplateVersionNotFoundException, \
|
|
18
|
-
SubmissionStatusException, SubmissionNotFoundException, SubmissionUploadException, NoVcfsFoundException
|
|
18
|
+
SubmissionStatusException, SubmissionNotFoundException, SubmissionUploadException, NoVcfsFoundException, \
|
|
19
|
+
UserFileNotFoundException, DependencyNotFoundException, WebinBadCredentialsException, InvalidFileTypeError, \
|
|
20
|
+
InvalidSubmissionException, DockerValidatorException
|
|
19
21
|
from eva_sub_cli.call_home import CallHomeClient
|
|
20
22
|
from eva_sub_cli.file_utils import is_submission_dir_writable, DirLockError, DirLock
|
|
21
23
|
from eva_sub_cli.orchestrator import VALIDATE, SUBMIT, DOCKER, NATIVE
|
|
@@ -126,51 +128,69 @@ def main():
|
|
|
126
128
|
logging_config.add_file_handler(os.path.join(args.submission_dir, 'eva_submission.log'), logging.DEBUG)
|
|
127
129
|
# Pass on all the arguments to the orchestrator
|
|
128
130
|
orchestrator.orchestrate_process(call_home=call_home, **args.__dict__)
|
|
131
|
+
|
|
132
|
+
# User errors: not displayed as exceptions, call-home records as failure with no exception
|
|
129
133
|
except DirLockError as dle:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
print(f'Could not acquire the lock file for {args.submission_dir} because another process is using this '
|
|
135
|
+
f'directory or a previous process did not terminate correctly. If the problem persists, remove the lock '
|
|
136
|
+
f'file manually.')
|
|
137
|
+
exit_status = 101
|
|
138
|
+
except NoVcfsFoundException as nvfe:
|
|
139
|
+
print(nvfe.message)
|
|
140
|
+
exit_status = 102
|
|
141
|
+
except MetadataTemplateVersionException as mte:
|
|
142
|
+
print(mte.message)
|
|
143
|
+
exit_status = 103
|
|
144
|
+
except MetadataTemplateVersionNotFoundException as mte:
|
|
145
|
+
print(mte.message)
|
|
146
|
+
exit_status = 104
|
|
147
|
+
except UserFileNotFoundException as ufne:
|
|
148
|
+
print(ufne.message)
|
|
149
|
+
exit_status = 105
|
|
150
|
+
except InvalidFileTypeError as ife:
|
|
151
|
+
print(ife.message)
|
|
152
|
+
exit_status = 106
|
|
153
|
+
except DependencyNotFoundException as dnfe:
|
|
154
|
+
print(dnfe.message)
|
|
155
|
+
exit_status = 107
|
|
156
|
+
except WebinBadCredentialsException as wae:
|
|
157
|
+
print(wae.message)
|
|
158
|
+
exit_status = 108
|
|
159
|
+
except InvalidSubmissionException as ise:
|
|
160
|
+
print(ise.message)
|
|
161
|
+
exit_status = 109
|
|
162
|
+
|
|
163
|
+
# Process errors: displayed as exceptions and sent to call-home
|
|
135
164
|
except FileNotFoundError as fne:
|
|
136
165
|
logger.exception(fne)
|
|
137
166
|
caught_exception = fne
|
|
138
|
-
exit_status =
|
|
139
|
-
except NoVcfsFoundException as nvfe:
|
|
140
|
-
logger.exception(f'{nvfe}. Please ensure that you have listed VCF files in the metadata (.vcf or .vcf.gz file '
|
|
141
|
-
f'extension), and that you have not modified the metadata template in any way.')
|
|
142
|
-
caught_exception = nvfe
|
|
143
|
-
exit_status = 67
|
|
167
|
+
exit_status = 201
|
|
144
168
|
except SubmissionNotFoundException as snfe:
|
|
145
|
-
logger.exception(
|
|
169
|
+
logger.exception(snfe)
|
|
146
170
|
caught_exception = snfe
|
|
147
|
-
exit_status =
|
|
171
|
+
exit_status = 202
|
|
148
172
|
except SubmissionStatusException as sse:
|
|
149
|
-
logger.exception(
|
|
173
|
+
logger.exception(sse)
|
|
150
174
|
caught_exception = sse
|
|
151
|
-
exit_status =
|
|
152
|
-
except MetadataTemplateVersionException as mte:
|
|
153
|
-
logger.exception(mte)
|
|
154
|
-
caught_exception = mte
|
|
155
|
-
exit_status = 70
|
|
156
|
-
except MetadataTemplateVersionNotFoundException as mte:
|
|
157
|
-
logger.exception(mte)
|
|
158
|
-
caught_exception = mte
|
|
159
|
-
exit_status = 71
|
|
175
|
+
exit_status = 203
|
|
160
176
|
except SubmissionUploadException as sue:
|
|
161
177
|
logger.exception(sue)
|
|
162
178
|
caught_exception = sue
|
|
163
|
-
exit_status =
|
|
179
|
+
exit_status = 204
|
|
164
180
|
except HTTPError as http_err:
|
|
165
181
|
logger.exception(http_err)
|
|
166
182
|
if http_err.response is not None and http_err.response.text:
|
|
167
183
|
print(http_err.response.text)
|
|
168
184
|
caught_exception = http_err
|
|
169
|
-
exit_status =
|
|
185
|
+
exit_status = 205
|
|
186
|
+
except DockerValidatorException as dve:
|
|
187
|
+
logger.exception(dve)
|
|
188
|
+
caught_exception = dve
|
|
189
|
+
exit_status = 206
|
|
170
190
|
except Exception as ex:
|
|
171
191
|
logger.exception(ex)
|
|
172
192
|
caught_exception = ex
|
|
173
|
-
exit_status =
|
|
193
|
+
exit_status = 299
|
|
174
194
|
|
|
175
195
|
if call_home is not None:
|
|
176
196
|
if exit_status == 0:
|