Some updates to make the collection rdf (aka manifest) pass static validation.
Not all listed resources pass validation with this PR, but now the static errors are more informative.
Following PRs can tackle the individual failing resources individually and once #38 is merged the status of the collection RDF can be monitored continuously.
remaining issues after this PR:
$bioimageio validate manifest.bioimage.io.yaml
bioimageio.spec 0.4.3
implementing:
collection RDF 0.2.2
general RDF 0.2.2
model RDF 0.4.3
bioimageio.core 0.4.10
Error in deepImageJ Collection:
{'collection': {8: {'authors': {0: {'name': ['Not a valid string.']},
1: {'name': ['Not a valid string.']}}},
10: {'authors': {0: {'affiliation': ['Field may not be null.']},
1: {'affiliation': ['Field may not be null.']},
2: {'affiliation': ['Field may not be '
'null.']}},
'cite': ['Field may not be null.'],
'date': ['Unknown field.'],
'framework': ['Must be one of: pytorch, tensorflow.'],
'inputs': {0: {'preprocessing': ['Not a valid list.']}},
'language': ['Must be one of: python, java.'],
'test_inputs': ['Missing data for required field.'],
'test_outputs': ['Missing data for required field.'],
'weights': {'tensorflow_js': {'value': ['Errors in all '
'options for this '
'field. Fix any '
'of the following '
'errors:',
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.']},
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.'],
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_state_dict.']},
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.'],
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_script.']},
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.'],
'weights_format': ['Must '
'be '
'equal '
'to '
'keras_hdf5.']},
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.'],
'weights_format': ['Must '
'be '
'equal '
'to '
'tensorflow_saved_model_bundle.']},
{'format': ['Unknown '
'field.'],
'name': ['Unknown '
'field.'],
'weights_format': ['Must '
'be '
'equal '
'to '
'onnx.']}]}}},
11: {'run_mode': ['Expected dictionary, but got list.'],
'test_inputs': ['Missing data for required field.'],
'test_outputs': ['Missing data for required field.']},
13: {'run_mode': ['Expected dictionary, but got list.']},
19: {'weights': {'tensorflow_saved_model_bundle': {'value': ['Errors '
'in '
'all '
'options '
'for '
'this '
'field. '
'Fix '
'any '
'of '
'the '
'following '
'errors:',
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']}},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_state_dict.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_script.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'keras_hdf5.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'tensorflow_js.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'onnx.']}]}}},
20: {'run_mode': ['Expected dictionary, but got list.']},
21: {'run_mode': ['Expected dictionary, but got list.']},
22: {'inputs': {0: {'data_range': ['Not a valid tuple.'],
'preprocessing': {0: {'name': ['Missing '
'data for '
'required '
'field.'],
'scale_range': ['Unknown '
'field.']}}}},
'language': ['Must be one of: python, java.'],
'outputs': {0: {'data_range': ['Not a valid tuple.']}},
'packaged_by': {0: ['Expected dictionary, but got str.']},
'weights': {'keras_hdf5': {'value': ['Errors in all '
'options for this '
'field. Fix any of '
'the following '
'errors:',
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']}},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_state_dict.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_script.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'tensorflow_js.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'tensorflow_saved_model_bundle.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'onnx.']}]},
'tensorflow_saved_model_bundle': {'value': ['Errors '
'in '
'all '
'options '
'for '
'this '
'field. '
'Fix '
'any '
'of '
'the '
'following '
'errors:',
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']}},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_state_dict.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'pytorch_script.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'keras_hdf5.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'tensorflow_js.']},
{'authors': {0: ['Expected '
'dictionary, '
'but '
'got '
'str.']},
'weights_format': ['Must '
'be '
'equal '
'to '
'onnx.']}]}}}}}
Validation Warnings for deepImageJ Collection:
{'collection': {0: {'type': '(id=deepimagej-web) Unrecognized type '
"'application'. Validating as rdf."},
1: {'type': "(id=deepimagej) Unrecognized type 'application'. "
'Validating as rdf.'},
2: {'type': '(id=unet-pancreaticcellsegmentation) Unrecognized '
"type 'application'. Validating as rdf."},
3: {'type': '(id=smlm-deepimagej) Unrecognized type '
"'application'. Validating as rdf."},
4: {'type': '(id=EVsTEMsegmentationFRUNet) Unrecognized type '
"'application'. Validating as rdf."},
5: {'type': '(id=MoNuSeg_digital_pathology_miccai2018) '
"Unrecognized type 'dataset'. Validating as rdf."},
7: {'license': '(id=UNet2DHeLaSegmentation) BSD-2 is not a '
'recognized SPDX license identifier. See '
'https://spdx.org/licenses/'},
8: {'license': '(id=UNet2DPancreaticSegmentation) BSD-2 is not '
'a recognized SPDX license identifier. See '
'https://spdx.org/licenses/'},
9: {'license': '(id=UNet2DGlioblastomaSegmentation) BSD-2 is '
'not a recognized SPDX license identifier. See '
'https://spdx.org/licenses/'},
10: {'license': '(id=SMLMDensityMapEstimationDEFCoN) BSD-3 is '
'not a recognized SPDX license identifier. See '
'https://spdx.org/licenses/'},
14: {'license': '(id=WidefieldTxredSuperResolution) CC BY 4.0 '
'is not a recognized SPDX license identifier. '
'See https://spdx.org/licenses/'},
17: {'license': '(id=JonesVirtualStaining) CC BY 4.0 is not a '
'recognized SPDX license identifier. See '
'https://spdx.org/licenses/'},
20: {'license': '(id=SkinLesionClassification) BSD2 is not a '
'recognized SPDX license identifier. See '
'https://spdx.org/licenses/'}}}
Some updates to make the collection rdf (aka manifest) pass static validation. Not all listed resources pass validation with this PR, but now the static errors are more informative. Following PRs can tackle the individual failing resources individually and once #38 is merged the status of the collection RDF can be monitored continuously.
remaining issues after this PR: