Source code for padmet.utils.management.padmet_compart

# -*- coding: utf-8 -*-
"""
Description:
    For a given padmet file, check and update compartment.
    
    1./ Get all compartment with 1st usage
    
    2./ Remove a compartment with 2nd usage.
    Remove all reactions acting in the given compartment
    
    3./ change compartment id with 3rd usage

::

    usage:
        padmet padmet_compart --padmet=FILE
        padmet padmet_compart --padmet=FILE --remove=STR [--output=FILE] [-v]
        padmet padmet_compart --padmet=FILE --old=STR --new=STR [--output=FILE] [-v]

    options:
        -h --help     Show help.
        --padmet=FILE    pathname of the padmet file
        --remove=STR    compartment id to remove
        --old=STR    compartment id to change to new id
        --new=STR    new compartment id
        --output=FILE    new padmet pathname, if none, overwritting the original padmet
        -v   print info
"""
import docopt

from padmet.classes import PadmetSpec


[docs] def command_help(): """ Show help for analysis command. """ print(docopt.docopt(__doc__))
[docs] def padmet_compart_cli(command_args): #parsing args args = docopt.docopt(__doc__, argv=command_args) padmet_file = args["--padmet"] old_compart = args["--old"] new_compart = args["--new"] new_padmet = args["--output"] to_remove = args["--remove"] verbose = args["-v"] if new_padmet is None: new_padmet = args["--padmet"] padmet = PadmetSpec(padmet_file) if to_remove: padmet = remove_compart(padmet, to_remove, verbose = False) padmet.generateFile(new_padmet) elif old_compart and new_compart: padmet = replace_compart(padmet, old_compart, new_compart, verbose) padmet.generateFile(new_padmet) else: print("List of compartments:") print(list(padmet.get_all_compart()))
[docs] def remove_compart(padmet, to_remove, verbose = False): """ Remove all reaction associated to a compound in the compartment to remove. Parameters ---------- padmet: padmet.classes.PadmetSpec padmet to udpate to_remove: str compartment id to remove, if many separate compartment id by ',' verbose: bool if True print information Returns ------- padmet.classes.PadmetSpec: New padmet after removing compartment(s) """ if "," in to_remove: to_remove = to_remove.split(",") else: to_remove = [to_remove] for compart in to_remove: if verbose: print("removing reaction(s) in compartment %s" %compart) padmet.delCompart(compart, verbose) return padmet
[docs] def replace_compart(padmet, old_compart, new_compart, verbose = False): """ Replace compartment 'old_compart' by 'new_compart'. Parameters ---------- padmet: padmet.classes.PadmetSpec padmet to udpate old_comaprt: str compartment id to remplace new_compart: str new compartment id verbose: bool if True print information Returns ------- padmet.classes.PadmetSpec: New padmet after remplacing compartment """ if verbose: print("Converting compartment %s to %s" %(old_compart, new_compart)) padmet.change_compart(old_compart, new_compart, verbose) return padmet