cobra.manipulation.delete
=========================

.. py:module:: cobra.manipulation.delete

.. autoapi-nested-parse::

   Provide functions for pruning reactions, metabolites and genes.



Attributes
----------

.. autoapisummary::

   cobra.manipulation.delete.logger


Classes
-------

.. autoapisummary::

   cobra.manipulation.delete._GeneRemover


Functions
---------

.. autoapisummary::

   cobra.manipulation.delete.prune_unused_metabolites
   cobra.manipulation.delete.prune_unused_reactions
   cobra.manipulation.delete.knock_out_model_genes
   cobra.manipulation.delete.delete_model_genes
   cobra.manipulation.delete.remove_genes


Module Contents
---------------

.. py:data:: logger

.. py:function:: prune_unused_metabolites(model: cobra.Model) -> Tuple[cobra.Model, List[cobra.Metabolite]]

   Remove metabolites not involved in any reactions.

   :param model: The model to remove unused metabolites from.
   :type model: cobra.Model

   :returns: * *cobra.Model* -- Input model with unused metabolites removed.
             * *list of cobra.Metabolite* -- List of metabolites that were removed.


.. py:function:: prune_unused_reactions(model: cobra.Model) -> Tuple[cobra.Model, List[cobra.Reaction]]

   Remove reactions with no assigned metabolites, returns pruned model.

   :param model: The model to remove unused reactions from.
   :type model: cobra.Model

   :returns: * *cobra.Model* -- Input model with unused reactions removed.
             * *list of cobra.Reaction* -- List of reactions that were removed.


.. py:function:: knock_out_model_genes(model: cobra.Model, gene_list: Iterable[Union[cobra.Gene, int, str]]) -> List[cobra.Reaction]

   Disable the genes in `gene_list`.

   It sets the bounds to "zero" for reactions catalysed by the genes in
   `gene_list` if deleting the genes would stop the reactions from proceeding.

   The changes are reverted upon exit if executed within the model as context.

   :param model: The model whose reaction bounds are to be set.
   :type model: cobra.Model
   :param gene_list: The list of genes to knock-out.
   :type gene_list: list of cobra.Gene

   :returns: A list of cobra.Reactions that had the bounds turned to zero.
   :rtype: list[cobra.Reaction]


.. py:function:: delete_model_genes(model: cobra.Model, gene_list: Union[List[cobra.Gene], Set[cobra.Gene], List[str], Set[str]], cumulative_deletions: bool = True, disable_orphans: bool = False) -> None

   Temporarily remove the effect of genes in `gene_list`.

   It sets the bounds to "zero" for reactions catalysed by the genes in
   `gene_list` if deleting the genes stops the reactions from proceeding.

   :param model: The model whose reaction bounds are to be set.
   :type model: cobra.Model
   :param gene_list: The list of genes to knock-out.
   :type gene_list: list of cobra.Gene
   :param cumulative_deletions: If True, then any previous deletions will be maintained in the
                                model (default True). Unused, ignored.
   :type cumulative_deletions: bool, optional
   :param disable_orphans: If True, then orphan reactions will be disabled. Currently, this
                           is not implemented (default False). Unused, ignored.
   :type disable_orphans: bool, optional
   :param .. deprecated :: 0.25: Use cobra.manipulation.knock_out_model_genes to simulate knockouts
                                 and cobra.manipulation.remove_genes to remove genes from
                                 the model.

   .. seealso:: :py:obj:`knock_out_model_genes`, :py:obj:`remove_model_genes`


.. py:class:: _GeneRemover(target_genes: Set[cobra.Gene], **kwargs)

   Bases: :py:obj:`ast.NodeTransformer`


   Class to represent a gene set remover.

   :param target_genes: A set of genes to be removed.
   :type target_genes: list or set of cobra.Gene


   .. py:attribute:: target_genes


   .. py:method:: visit_Name(node: ast.Name) -> Optional[ast.Name]

      Remove a gene.

      :param node: The gene to remove.
      :type node: ast.Name

      :returns: None if gene object is in `target_genes`.
      :rtype: cobra.Gene or None



   .. py:method:: visit_BoolOp(node: ast.BoolOp) -> Optional[Union[ast.BoolOp, ast.Name]]

      Rules for boolean operations.

      :param node: The gene to apply rules to.
      :type node: ast.Name

      :returns: None if size of Or node values is zero after applying rule,
                or size of And node values is lower after applying rule.
      :rtype: ast.Name or None



.. py:function:: remove_genes(model: cobra.Model, gene_list: Union[List[cobra.Gene], Set[cobra.Gene], List[str], Union[str]], remove_reactions: bool = True) -> None

   Remove genes entirely from the model.

   This will also simplify all gene-reaction rules with the genes
   inactivated.

   :param model: The model to remove genes from.
   :type model: cobra.Model
   :param gene_list: The list of gene objects to remove.
   :type gene_list: list of cobra.Gene or gene ids
   :param remove_reactions: Whether to remove reactions associated with genes in `gene_list`
                            (default True).
   :type remove_reactions: bool, optional


