# HG changeset patch # User luca_milaz # Date 1721491629 0 # Node ID ae7c3113305957f11ad2aae4380508644012d98b # Parent f860e30318f0d0eef753584b664f381ae9f37e9f Uploaded diff -r f860e30318f0 -r ae7c31133059 marea_2/ras_to_bounds.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marea_2/ras_to_bounds.py Sat Jul 20 16:07:09 2024 +0000 @@ -0,0 +1,123 @@ +import argparse +import utils.general_utils as utils +from typing import Optional, List +import os +import numpy as np +import pandas as pd +import cobra +from joblib import Parallel, delayed, cpu_count +import sys + +################################# process args ############################### +def process_args(args :List[str]) -> argparse.Namespace: + """ + Processes command-line arguments. + + Args: + args (list): List of command-line arguments. + + Returns: + Namespace: An object containing parsed arguments. + """ + parser = argparse.ArgumentParser(usage = '%(prog)s [options]', + description = 'process some value\'s') + + parser.add_argument( + '-ms', '--model_selector', + type = utils.Model, default = utils.Model.ENGRO2, choices = [utils.Model.ENGRO2, utils.Model.Custom], + help = 'chose which type of model you want use') + + parser.add_argument("-mo", "--model", type = str, + help = "path to input file with custom rules, if provided") + + parser.add_argument("-mn", "--model_name", type = str, help = "custom mode name") + + parser.add_argument( + '-mes', '--medium_selector', + default = "Open", choices = ["Open", "Custom"], + help = 'chose which type of medium you want use') + + parser.add_argument("-meo", "--medium", type = str, + help = "path to input file with custom medium, if provided") + + parser.add_argument("-men", "--medium_name", type = str, help = "custom medium name") + + parser.add_argument('-ol', '--out_log', + help = "Output log") + + parser.add_argument('-td', '--tool_dir', + type = str, + required = True, + help = 'your tool directory') + + parser.add_argument('-ir', '--input_ras', + required = True, + type=str, + help = 'input ras') + + ARGS = parser.parse_args() + return ARGS + +########################### warning ########################################### +def warning(s :str) -> None: + """ + Log a warning message to an output log file and print it to the console. + + Args: + s (str): The warning message to be logged and printed. + + Returns: + None + """ + with open(ARGS.out_log, 'a') as log: + log.write(s + "\n\n") + print(s) + + +def write_to_file(dataset: pd.DataFrame, name: str, keep_index:bool=False)->None: + dataset.to_csv(ARGS.output_folder + name + ".csv", sep = '\t', index = keep_index) + + + +############################# main ########################################### +def main() -> None: + """ + Initializes everything and sets the program in motion based on the fronted input arguments. + + Returns: + None + """ + if not os.path.exists('model_generator'): + os.makedirs('model_generator') + + num_processors = cpu_count() + + global ARGS + ARGS = process_args(sys.argv) + + ARGS.output_folder = 'model_generator/' + + ARGS.output_types = ARGS.output_type.split(",") + + ras = pd.read_table(ARGS.input_ras, header=0, sep=r'\s+', index_col = 0).T + ras.replace("None", None, inplace=True) + ras = ras.astype(float) + + #medium has rows cells and columns medium reactions, not common reactions set to None + medium = pd.read_csv(ARGS.input_medium, sep = '\t', header = 0, engine='python', index_col = 0) + medium = ras.astype(float) + + model_type :utils.Model = ARGS.model_selector + if model_type is utils.Model.Custom: + model = model_type.getCOBRAmodel(customPath = utils.FilePath.fromStrPath(ARGS.model), customExtension = utils.FilePath.fromStrPath(ARGS.model_name).ext) + else: + model = model_type.getCOBRAmodel(toolDir=ARGS.tool_dir) + + '''for index, row in ras.iterrows(): #iterate over cells RAS + generate_model(model, index, row, medium.loc[index], ARGS.output_model_format)''' + + pass + +############################################################################## +if __name__ == "__main__": + main() \ No newline at end of file