annotate mzml_validator_wrapper.py @ 1:ada284e51141 draft default tip

planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit b1cc1aebf796f170d93e3dd46ffcdefdc7b8018a
author recetox
date Thu, 12 Oct 2023 13:30:39 +0000
parents 9beb3a276ce3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
1 #!/usr/bin/env python
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
2
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
3
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
4 import argparse
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
5 import logging
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
6 import os
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
7 import sys
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
8
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
9 from lxml import etree
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
10
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
11 XSD_FILENAMES = {'1.1.0': 'mzML1.1.0.xsd',
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
12 '1.1.1': 'mzML1.1.1_idx.xsd'}
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
13
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
14
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
15 def main(args):
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
16 parser = argparse.ArgumentParser(description='Validate mzML files')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
17 parser.add_argument('--input_file', type=str, help='mzML file to validate')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
18 parser.add_argument('--schemas_dir', type=str, help='Directory containing XML Schema Definitions')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
19 parser.add_argument('--xsd_versions', type=lambda version: [v for v in version.split(',')], help='XSD versions to validate against')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
20 parser.add_argument('--log_file', type=str, help='Path to log file')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
21 args = parser.parse_args(args)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
22
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
23 logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s', filename=args.log_file, filemode='w')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
24
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
25 mzml = etree.parse(args.input_file)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
26 validated = False
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
27
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
28 stderrs = set()
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
29 for version in args.xsd_versions:
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
30 xsd = etree.parse(os.path.join(args.schemas_dir, XSD_FILENAMES[version]))
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
31 schema = etree.XMLSchema(xsd)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
32 if schema.validate(mzml):
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
33 validated = True
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
34 logging.info(f'Validated against mzML XML Schema Definition v{version}')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
35 else:
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
36 stderrs.add(f'Failed to validate against mzML XML Schema Definition v{version}\n'
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
37 f'xmllint error message(s):'
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
38 f'{schema.error_log.last_error}\n')
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
39
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
40 if validated:
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
41 sys.exit(0)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
42 else:
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
43 list((logging.error(e), sys.stderr.write(e)) for e in stderrs)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
44 sys.exit(1)
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
45
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
46
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
47 if __name__ == '__main__':
9beb3a276ce3 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff changeset
48 main(sys.argv[1:])