From dfb94c6b9acc1e7b4e898a21313b92a507bfe49d Mon Sep 17 00:00:00 2001 From: Andrew Freiburger Date: Wed, 26 Aug 2026 14:49:02 -0500 Subject: [PATCH] Sync modelseedpy/fbapkg/kbasemediapkg.py from freiburgermsu fork File-level sync to the state of this file in freiburgermsu/ModelSEEDpy@971df5d, submitted as an individual PR so each module's divergence can be reviewed independently. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_017rcBA87xipNeaukuFW8N2G --- modelseedpy/fbapkg/kbasemediapkg.py | 32 +++++++++++------------------ 1 file changed, 12 insertions(+), 20 deletions(-) mode change 100644 => 100755 modelseedpy/fbapkg/kbasemediapkg.py diff --git a/modelseedpy/fbapkg/kbasemediapkg.py b/modelseedpy/fbapkg/kbasemediapkg.py old mode 100644 new mode 100755 index 92525b30..edda2889 --- a/modelseedpy/fbapkg/kbasemediapkg.py +++ b/modelseedpy/fbapkg/kbasemediapkg.py @@ -2,18 +2,15 @@ from __future__ import absolute_import -import logging from modelseedpy.fbapkg.basefbapkg import BaseFBAPkg -from modelseedpy.core.fbahelper import FBAHelper # !!! imported but not used +from modelseedpy.core.fbahelper import FBAHelper # !!! imported but not used +from numpy import log as ln +import logging logger = logging.getLogger(__name__) class KBaseMediaPkg(BaseFBAPkg): - """ - Base class for FBA packages - """ - def __init__(self, model): BaseFBAPkg.__init__(self, model, "kbase media", {}, {}) self.current_media = None @@ -46,30 +43,25 @@ def build_package( self.parameters["media"] and self.parameters["media"].name == "Complete" ) and self.parameters["default_uptake"] == 0: self.parameters["default_uptake"] = 100 - - # First initializing all exchanges to default uptake and excretion - exchange_list = self.modelutl.exchange_list() - for reaction in exchange_list: - if -1 * self.parameters["default_uptake"] > reaction.upper_bound: - reaction.upper_bound = self.parameters["default_excretion"] - reaction.lower_bound = -1 * self.parameters["default_uptake"] - else: - reaction.lower_bound = -1 * self.parameters["default_uptake"] - reaction.upper_bound = self.parameters["default_excretion"] + + #First initializing all exchanges to default uptake and excretion + for reaction in self.modelutl.exchange_list(): + reaction.lower_bound = -self.parameters["default_uptake"] + reaction.upper_bound = self.parameters["default_excretion"] # Now constraining exchanges for specific compounds specified in the media if self.parameters["media"]: exchange_hash = self.modelutl.exchange_hash() - self.modelutl.build_metabolite_hash() + # self.modelutl.build_metabolite_hash() for mediacpd in self.parameters["media"].mediacompounds: mets = self.modelutl.find_met(mediacpd.id) if len(mets) > 0: for met in mets: if met in exchange_hash: - exchange_hash[met].lower_bound = -1 * mediacpd.maxFlux - exchange_hash[met].upper_bound = -1 * mediacpd.minFlux + exchange_hash[met].lower_bound = -mediacpd.maxFlux + exchange_hash[met].upper_bound = -mediacpd.minFlux if ( - self.pkgmgr != None + self.pkgmgr is not None and "FullThermoPkg" in self.pkgmgr.packages ): logger.info("FullThermo constrained compound: ", met.id)