eva-sub-cli 0.4.12__tar.gz → 0.4.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/PKG-INFO +1 -1
  2. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/_version.py +16 -3
  3. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/spreadsheet2json_conf.yaml +23 -21
  4. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/xlsx2json.py +12 -1
  5. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/orchestrator.py +5 -2
  6. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/PKG-INFO +1 -1
  7. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_check_fasta_insdc.py +1 -1
  8. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_orchestrator.py +1 -1
  9. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_xlsx2json.py +6 -5
  10. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.github/workflows/publish.yml +0 -0
  11. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.github/workflows/publish_docs.yml +0 -0
  12. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.github/workflows/publish_packages.yml +0 -0
  13. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.github/workflows/tests.yml +0 -0
  14. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.github/workflows/trigger-eva-sub-cli-integration-tests.yml +0 -0
  15. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/.gitignore +0 -0
  16. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/LICENSE +0 -0
  17. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/README.md +0 -0
  18. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/conda/build.sh +0 -0
  19. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/conda/meta.yaml +0 -0
  20. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docker/Dockerfile +0 -0
  21. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/README.md +0 -0
  22. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/_config.yml +0 -0
  23. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/how_to_submit.md +0 -0
  24. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/input_file_overview.md +0 -0
  25. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/installation.md +0 -0
  26. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/using_nextflow.md +0 -0
  27. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/docs/validation_overview.md +0 -0
  28. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/__init__.py +0 -0
  29. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/auth.py +0 -0
  30. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/date_utils.py +0 -0
  31. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/EVA_Submission_Example.xlsx +0 -0
  32. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/EVA_Submission_template.xlsx +0 -0
  33. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/eva-biosamples.json +0 -0
  34. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/eva_logo.png +0 -0
  35. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/etc/eva_schema.json +0 -0
  36. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/exceptions/__init__.py +0 -0
  37. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/exceptions/invalid_file_type_exception.py +0 -0
  38. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/exceptions/metadata_template_version_exception.py +0 -0
  39. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/exceptions/submission_not_found_exception.py +0 -0
  40. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/exceptions/submission_status_exception.py +0 -0
  41. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/__init__.py +0 -0
  42. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/check_fasta_insdc.py +0 -0
  43. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/check_metadata_semantics.py +0 -0
  44. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/cli.py +0 -0
  45. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/evidence_type_checker.py +0 -0
  46. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/samples_checker.py +0 -0
  47. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/executables/trim_down.py +0 -0
  48. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/file_utils.py +0 -0
  49. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/fasta_check.html +0 -0
  50. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/file_validation.html +0 -0
  51. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/metadata_validation.html +0 -0
  52. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/project_details.html +0 -0
  53. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/report.html +0 -0
  54. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/sample_name_check.html +0 -0
  55. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/html/shallow_validation.html +0 -0
  56. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/fasta_check.txt +0 -0
  57. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/file_validation.txt +0 -0
  58. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/metadata_validation.txt +0 -0
  59. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/project_details.txt +0 -0
  60. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/report.txt +0 -0
  61. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/sample_name_check.txt +0 -0
  62. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/jinja_templates/text/shallow_validation.txt +0 -0
  63. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/metadata.py +0 -0
  64. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/nextflow/validation.nf +0 -0
  65. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/report.py +0 -0
  66. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/semantic_metadata.py +0 -0
  67. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/submission_ws.py +0 -0
  68. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/submit.py +0 -0
  69. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/validators/__init__.py +0 -0
  70. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/validators/docker_validator.py +0 -0
  71. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/validators/native_validator.py +0 -0
  72. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/validators/validation_results_parsers.py +0 -0
  73. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli/validators/validator.py +0 -0
  74. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/SOURCES.txt +0 -0
  75. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/dependency_links.txt +0 -0
  76. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/entry_points.txt +0 -0
  77. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/requires.txt +0 -0
  78. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/eva_sub_cli.egg-info/top_level.txt +0 -0
  79. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/pyproject.toml +0 -0
  80. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/pytest.ini +0 -0
  81. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/requirements.txt +0 -0
  82. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/setup.cfg +0 -0
  83. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/setup.py +0 -0
  84. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/build_and_test_docker_locally.py +0 -0
  85. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/ignore_test_nextflow_validation.yml +0 -0
  86. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_Docker_Test.xlsx +0 -0
  87. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_test.json +0 -0
  88. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_test.xlsx +0 -0
  89. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_test_fails.xlsx +0 -0
  90. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_test_version_missing.xlsx +0 -0
  91. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/EVA_Submission_test_with_asm_report.json +0 -0
  92. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/assembly_check/invalid.vcf.assembly_check.log +0 -0
  93. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/assembly_check/invalid.vcf.text_assembly_report.txt +0 -0
  94. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/assembly_reports/input_passed.txt +0 -0
  95. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/fasta_files/Saccharomyces_cerevisiae_I.fa +0 -0
  96. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/fasta_files/input_passed.fa +0 -0
  97. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/fasta_files/multi_seq.fa +0 -0
  98. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/metadata_with_filename.json +0 -0
  99. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/sample_checker/example1.vcf.gz +0 -0
  100. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/sample_checker/example2.vcf +0 -0
  101. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/sample_checker/example3.vcf +0 -0
  102. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/sample_checker/metadata.json +0 -0
  103. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_report_metadata_json.html +0 -0
  104. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_report_metadata_json.txt +0 -0
  105. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_report_metadata_xlsx.html +0 -0
  106. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_report_metadata_xlsx.txt +0 -0
  107. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.html +0 -0
  108. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/expected_shallow_metadata_xlsx_report.txt +0 -0
  109. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.assembly_check.log +0 -0
  110. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.text_assembly_report.1680102476700.txt +0 -0
  111. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/assembly_check/input_passed.vcf.valid_assembly_report.1680102476700.txt +0 -0
  112. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/evidence_type_checker.yml +0 -0
  113. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/input_passed.fa_check.yml +0 -0
  114. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/metadata_conversion_errors.yml +0 -0
  115. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/metadata_semantic_check.yml +0 -0
  116. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/metadata_validation.txt +0 -0
  117. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/other_validations/sample_checker.yml +0 -0
  118. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.db +0 -0
  119. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.errors.1680102476854.txt +0 -0
  120. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/validation_reports/validation_output/vcf_format/input_passed.vcf.vcf_format.log +0 -0
  121. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/vcf_files/example2.vcf.gz +0 -0
  122. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/resources/vcf_files/input_passed.vcf +0 -0
  123. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_auth.py +0 -0
  124. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_cli.py +0 -0
  125. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_docker_validator.py +0 -0
  126. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_evidence_type_checker.py +0 -0
  127. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_file_utils.py +0 -0
  128. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_metadata.py +0 -0
  129. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_report.py +0 -0
  130. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_samples_checker.py +0 -0
  131. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_semantic_metadata.py +0 -0
  132. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_submit.py +0 -0
  133. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_trim_down.py +0 -0
  134. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_utils.py +0 -0
  135. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_validaton_results_parsers.py +0 -0
  136. {eva_sub_cli-0.4.12 → eva_sub_cli-0.4.13}/tests/test_validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eva_sub_cli
3
- Version: 0.4.12
3
+ Version: 0.4.13
4
4
  Summary: EBI EVA - validation and submission command line tool
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.4.12'
21
- __version_tuple__ = version_tuple = (0, 4, 12)
31
+ __version__ = version = '0.4.13'
32
+ __version_tuple__ = version_tuple = (0, 4, 13)
33
+
34
+ __commit_id__ = commit_id = 'gc6e52eaa9'
@@ -81,6 +81,8 @@ Sample:
81
81
  required:
82
82
  Analysis Alias: analysisAlias
83
83
  Sample Name in VCF: sampleInVCF
84
+ # Sample property names taken from ERC000011 where present
85
+ # See https://www.ebi.ac.uk/biosamples/schema-store/registry/schemas/ERC000011
84
86
  optional:
85
87
  Sample Accession: bioSampleAccession
86
88
  BioSample Name: bioSampleName
@@ -91,37 +93,37 @@ Sample:
91
93
  Subject: subject
92
94
  Derived From: derivedFrom
93
95
  Taxonomy ID: taxId
94
- Scientific Name: scientificName
96
+ Scientific Name: scientific name
95
97
  Common Name: commonName
96
- mating_type: matingType
98
+ mating_type: mating_type
97
99
  sex: sex
98
100
  population: population
99
- cell_type: cellType
100
- dev_stage: devStage
101
+ cell_type: cell_type
102
+ dev_stage: dev_stage
101
103
  germline: germline
102
- tissue_lib: tissueLib
103
- tissue_type: tissueType
104
- bio_material: BioMaterial
105
- culture_collection: cultureCollection
106
- specimen_voucher: specimenVoucher
107
- collected_by: collectedBy
108
- collection_date: collectionDate
109
- geographic location (country and/or sea): geographicLocationCountrySea
110
- geographic location (region and locality): geographicLocationRegion
104
+ tissue_lib: tissue_lib
105
+ tissue_type: tissue_type
106
+ bio_material: bio_material
107
+ culture_collection: culture_collection
108
+ specimen_voucher: specimen_voucher
109
+ collected_by: collected_by
110
+ collection_date: collection date
111
+ geographic location (country and/or sea): geographic location (country and/or sea)
112
+ geographic location (region and locality): geographic location (region and locality)
111
113
  host: host
112
- identified_by: identifiedBy
113
- isolation_source: isolationSource
114
- lat_lon: latLon
115
- lab_host: LabHost
116
- environmental_sample: environmentalSample
114
+ identified_by: identified_by
115
+ isolation_source: isolation_source
116
+ lat_lon: lat_lon
117
+ lab_host: lab_host
118
+ environmental_sample: environmental_sample
117
119
  cultivar: cultivar
118
120
  ecotype: ecotype
119
121
  isolate: isolate
120
122
  strain: strain
121
- sub_species: subSpecies
123
+ sub_species: sub_species
122
124
  variety: variety
123
- sub_strain: subStrain
124
- cell_line: cellType
125
+ sub_strain: sub_strain
126
+ cell_line: cell_line
125
127
  serotype: serotype
126
128
  serovar: serovar
127
129
  cast:
@@ -9,6 +9,8 @@ from ebi_eva_common_pyutils.logger import logging_config
9
9
  from openpyxl.reader.excel import load_workbook
10
10
  from openpyxl.workbook import Workbook
11
11
 
12
+ from eva_sub_cli.orchestrator import get_sub_cli_version, get_sub_cli_github_tags
13
+
12
14
  WORKSHEETS_KEY_NAME = 'worksheets'
13
15
  REQUIRED_HEADERS_KEY_NAME = 'required'
14
16
  OPTIONAL_HEADERS_KEY_NAME = 'optional'
@@ -249,7 +251,8 @@ class XlsxParser:
249
251
  # If the file could not be loaded at all, return without generating JSON.
250
252
  if not self.file_loaded:
251
253
  return
252
- json_data = {}
254
+ # Include which version of the EVA schema we are using
255
+ json_data = {'$schema': self.get_json_schema_link()}
253
256
  for title in self.xlsx_conf[WORKSHEETS_KEY_NAME]:
254
257
  self.active_worksheet = title
255
258
  if title == PROJECT:
@@ -270,6 +273,14 @@ class XlsxParser:
270
273
  with open(output_json_file, 'w') as open_file:
271
274
  json.dump(json_data, open_file, cls=DateTimeEncoder)
272
275
 
276
+ def get_json_schema_link(self):
277
+ sub_cli_version = get_sub_cli_version()
278
+ sub_cli_tags = get_sub_cli_github_tags()
279
+ if sub_cli_version in sub_cli_tags:
280
+ return f'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/refs/tags/v{sub_cli_version}/eva_sub_cli/etc/eva_schema.json'
281
+ else:
282
+ return 'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/main/eva_sub_cli/etc/eva_schema.json'
283
+
273
284
  def translate_header(self, title, header):
274
285
  if header in self.xlsx_conf[title].get(REQUIRED_HEADERS_KEY_NAME, {}):
275
286
  return self.xlsx_conf[title][REQUIRED_HEADERS_KEY_NAME][header]
@@ -130,7 +130,10 @@ def get_project_and_vcf_fasta_mapping_from_metadata_json(metadata_json, mapping_
130
130
 
131
131
  def get_sub_cli_version():
132
132
  if version.parse(eva_sub_cli.__version__).is_devrelease:
133
- major, minor, patch = map(int, version.parse(eva_sub_cli.__version__).base_version.split('.'))
133
+ version_values = [int(v) for v in version.parse(eva_sub_cli.__version__).base_version.split('.')]
134
+ major = version_values[0]
135
+ minor = version_values[1] if len(version_values) > 1 else 0
136
+ patch = version_values[2] if len(version_values) > 2 else 0
134
137
  if patch > 0:
135
138
  patch -= 1
136
139
  elif minor > 0:
@@ -160,7 +163,7 @@ def get_metadata_xlsx_template_link():
160
163
  sub_cli_version = get_sub_cli_version()
161
164
  sub_cli_tags = get_sub_cli_github_tags()
162
165
  if sub_cli_version in sub_cli_tags:
163
- return f'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/v{sub_cli_version}/eva-sub-cli/eva_sub_cli/etc/EVA_Submission_template.xlsx'
166
+ return f'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/refs/tags/v{sub_cli_version}/eva_sub_cli/etc/EVA_Submission_template.xlsx'
164
167
  else:
165
168
  return 'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/main/eva_sub_cli/etc/EVA_Submission_template.xlsx'
166
169
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eva_sub_cli
3
- Version: 0.4.12
3
+ Version: 0.4.13
4
4
  Summary: EBI EVA - validation and submission command line tool
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -132,5 +132,5 @@ class TestFastaChecker(TestCase):
132
132
  @pytest.mark.integration
133
133
  def test_get_containing_assemblies(self):
134
134
  results = get_containing_assemblies('6ac8f815bf8e845bb3031b73f812c012')
135
- assert len(results) == 14
135
+ assert len(results) == 15
136
136
  assert 'GCA_000001405.29' in results
@@ -306,7 +306,7 @@ class TestOrchestrator(unittest.TestCase):
306
306
  patch('eva_sub_cli.orchestrator.get_sub_cli_github_tags') as sub_cli_tags:
307
307
  sub_cli_version.return_value = '1.1.6'
308
308
  sub_cli_tags.return_value = ['1.1.6']
309
- assert get_metadata_xlsx_template_link() == 'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/v1.1.6/eva-sub-cli/eva_sub_cli/etc/EVA_Submission_template.xlsx'
309
+ assert get_metadata_xlsx_template_link() == 'https://raw.githubusercontent.com/EBIvariation/eva-sub-cli/refs/tags/v1.1.6/eva_sub_cli/etc/EVA_Submission_template.xlsx'
310
310
 
311
311
  sub_cli_version.return_value = '1.1.5'
312
312
  sub_cli_tags.return_value = ['1.1.6']
@@ -55,7 +55,8 @@ class TestXlsReader(TestCase):
55
55
  with open(output_json) as open_file:
56
56
  json_data = json.load(open_file)
57
57
  # assert json file is created with expected data
58
- assert sorted(json_data.keys()) == ['analysis', 'files', 'project', 'sample', 'submitterDetails']
58
+ assert sorted(json_data.keys()) == ['$schema', 'analysis', 'files', 'project', 'sample', 'submitterDetails']
59
+ json_data.pop('$schema', None)
59
60
  self.assertEqual(self.get_expected_json(), json_data)
60
61
 
61
62
  # assert json schema
@@ -94,7 +95,7 @@ class TestXlsReader(TestCase):
94
95
  assert os.path.exists(output_json)
95
96
  with open(output_json) as open_file:
96
97
  json_data = json.load(open_file)
97
- assert sorted(json_data.keys()) == ['analysis', 'files', 'project', 'sample', 'submitterDetails']
98
+ assert sorted(json_data.keys()) == ['$schema', 'analysis', 'files', 'project', 'sample', 'submitterDetails']
98
99
  # required field taxId is missing
99
100
  assert 'taxId' not in json_data['project']
100
101
  # novel sample is missing scientific name in characteristics and sample name
@@ -220,19 +221,19 @@ class TestXlsReader(TestCase):
220
221
  "taxId": [
221
222
  {"text": "9447"}
222
223
  ],
223
- "scientificName": [
224
+ "scientific name": [
224
225
  {"text": "Lemur catta"}
225
226
  ],
226
227
  "sex": [
227
228
  {"text": "Female"}
228
229
  ],
229
- "tissueType": [
230
+ "tissue_type": [
230
231
  {"text": "skin"}
231
232
  ],
232
233
  "species": [
233
234
  {"text": "Lemur catta"}
234
235
  ],
235
- 'collectionDate': [
236
+ 'collection date': [
236
237
  {'text': '2021-03-12'}
237
238
  ]
238
239
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes