annotate COBRAxy/fromCSVtoCOBRA_beta.py @ 451:a4e8f3188813 draft

Uploaded
author francesco_lapi
date Thu, 11 Sep 2025 20:34:30 +0000
parents
children 51f794fff930
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
451
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
1 import os
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
2 import csv
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
3 import cobra
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
4 import pickle
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
5 import argparse
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
6 import pandas as pd
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
7 import utils.general_utils as utils
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
8 from typing import Optional, Tuple, Union, List, Dict
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
9 import logging
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
10 import utils.rule_parsing as rulesUtils
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
11 import utils.reaction_parsing as reactionUtils
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
12 import utils.model_utils as modelUtils
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
13
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
14 ARGS : argparse.Namespace
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
15 def process_args(args: List[str] = None) -> argparse.Namespace:
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
16 """
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
17 Parse command-line arguments for CustomDataGenerator.
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
18 """
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
19
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
20 parser = argparse.ArgumentParser(
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
21 usage="%(prog)s [options]",
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
22 description="Generate custom data from a given model"
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
23 )
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
24
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
25 parser.add_argument("--out_log", type=str, required=True,
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
26 help="Output log file")
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
27
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
28 parser.add_argument("--input", type=str,
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
29 help="Input tabular file")
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
30
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
31 parser.add_argument("--format", type=str, required=True, choices=["sbml", "json", "mat", "yaml"],
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
32 help="Model format (SBML, JSON, MATLAB, YAML)")
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
33
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
34 parser.add_argument("--output", type=str,
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
35 help="Output model file")
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
36
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
37 parser.add_argument("--tool_dir", type=str, default=os.path.dirname(__file__),
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
38 help="Tool directory (passed from Galaxy as $__tool_directory__)")
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
39
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
40
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
41
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
42 return parser.parse_args(args)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
43
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
44 ###############################- ENTRY POINT -################################
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
45 def main(args:List[str] = None) -> None:
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
46 """
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
47 Initializes everything and sets the program in motion based on the fronted input arguments.
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
48
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
49 Returns:
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
50 None
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
51 """
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
52 # get args from frontend (related xml)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
53 global ARGS
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
54 ARGS = process_args(args)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
55
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
56 model = modelUtils.build_cobra_model_from_csv(ARGS.model_upload)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
57
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
58
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
59 if ARGS.format == "sbml":
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
60 cobra.io.write_sbml_model(model, ARGS.output)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
61 elif ARGS.format == "json":
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
62 cobra.io.save_json_model(model, ARGS.output)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
63 elif ARGS.format == "mat":
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
64 cobra.io.save_matlab_model(model, ARGS.output)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
65 elif ARGS.format == "yaml":
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
66 cobra.io.save_yaml_model(model, ARGS.output)
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
67
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
68 if __name__ == '__main__':
a4e8f3188813 Uploaded
francesco_lapi
parents:
diff changeset
69 main()