Mercurial > repos > siwaa > gama_desc
comparison desc.py @ 0:23b15c0eabff draft default tip
planemo upload for repository https://forgemia.inra.fr/nathalie.rousse/use/-/tree/gama/GAMA_DESC/galaxy-tools commit 6b9b95de1fe709f27a28d83797f81e91469edf79-dirty
author | siwaa |
---|---|
date | Mon, 18 Nov 2024 13:57:51 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:23b15c0eabff |
---|---|
1 #!/usr/bin/env python | |
2 # coding: utf-8 | |
3 | |
4 #----------------------------------------------------------------- | |
5 __author__ = "Nathalie Rousse (nathalie.rousse@inrae.fr)" | |
6 __copyright__ = "Copyright (C) 2024, Inrae (https://www.inrae.fr)" | |
7 __license__ = "MIT" | |
8 #----------------------------------------------------------------- | |
9 | |
10 import json | |
11 | |
12 # Produces a description JSON data from a GAML model file | |
13 | |
14 ############################################################################### | |
15 | |
16 def make_json_experiments_by_types(gaml_file_path): | |
17 | |
18 # experiments contains lists of experiment names, by type | |
19 experiments = { "gui": [], "batch": [], "test": [], "memorize": [] } | |
20 | |
21 with open(gaml_file_path, 'r') as f: | |
22 lines = f.readlines() | |
23 | |
24 for line in lines: | |
25 experiment_name, type = None, None # default | |
26 line_kept = True # default | |
27 if "experiment" not in line : line_kept = False | |
28 if ("type " not in line and "type:" not in line) : line_kept = False | |
29 | |
30 if line_kept : | |
31 words = line.split() | |
32 if words[0] == 'experiment' : | |
33 experiment_name = words[1] | |
34 else: | |
35 line_kept = False | |
36 | |
37 if line_kept : | |
38 while " :" in line: | |
39 line = line.replace(" :", ":") | |
40 line = line.replace(":", ": ") | |
41 words = line.split() | |
42 for i,word in enumerate(words) : | |
43 if word == "type:" : | |
44 if words[i+1] in ("gui", "batch", "test", "memorize"): | |
45 type = words[i+1] | |
46 if line_kept and (experiment_name is not None) and (type is not None): | |
47 experiments[type].append(experiment_name) | |
48 | |
49 return experiments | |
50 | |
51 ############################################################################### | |
52 | |
53 GAML_FILE_PATH = "model.gaml" | |
54 DESC_JSON_FILE_PATH = "desc.json" | |
55 | |
56 try : | |
57 desc = dict() | |
58 experiments = make_json_experiments_by_types(gaml_file_path=GAML_FILE_PATH) | |
59 desc['experiments_by_types'] = experiments | |
60 print(desc) | |
61 with open(DESC_JSON_FILE_PATH, "w") as json_file: | |
62 json_file.write(json.dumps(desc)) | |
63 | |
64 except Exception as e : | |
65 errortype = type(e).__name__ | |
66 errordetails = e.args | |
67 print("ERROR:", errortype, errordetails) | |
68 | |
69 ############################################################################### |