Mercurial > repos > recetox > mzml_validator
annotate mzml_validator_wrapper.py @ 0:5961146e0d1a draft default tip
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
| author | recetox |
|---|---|
| date | Fri, 20 Jan 2023 12:41:59 +0000 |
| parents | |
| children |
| rev | line source |
|---|---|
|
0
5961146e0d1a
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 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
2 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
3 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
4 import argparse |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
5 import logging |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
6 import os |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
7 import sys |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
8 |
|
5961146e0d1a
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 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
10 |
|
5961146e0d1a
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', |
|
5961146e0d1a
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'} |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
13 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
14 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
15 def main(args): |
|
5961146e0d1a
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') |
|
5961146e0d1a
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') |
|
5961146e0d1a
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') |
|
5961146e0d1a
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') |
|
5961146e0d1a
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') |
|
5961146e0d1a
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) |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
22 |
|
5961146e0d1a
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') |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
24 |
|
5961146e0d1a
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) |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
26 validated = False |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
27 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
28 stderrs = set() |
|
5961146e0d1a
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: |
|
5961146e0d1a
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])) |
|
5961146e0d1a
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) |
|
5961146e0d1a
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): |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
33 validated = True |
|
5961146e0d1a
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}') |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
35 else: |
|
5961146e0d1a
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' |
|
5961146e0d1a
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):' |
|
5961146e0d1a
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') |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
39 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
40 if validated: |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
41 sys.exit(0) |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
42 else: |
|
5961146e0d1a
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) |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
44 sys.exit(1) |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
45 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
46 |
|
5961146e0d1a
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/mzml_validator commit d9676cbf7a1f8bd1cf0af742585893459d4861aa
recetox
parents:
diff
changeset
|
47 if __name__ == '__main__': |
|
5961146e0d1a
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:]) |
