本文整理汇总了Python中tools.userError函数的典型用法代码示例。如果您正苦于以下问题:Python userError函数的具体用法?Python userError怎么用?Python userError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了userError函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: print_product_reactions_by
def print_product_reactions_by(self,ref_type):
"""
Prints in the output the list of all reactions this metabolite participates in
as a product in the model with the format specified by ref_type
INPUTS:
-------
ref_type: A string indicating the in what format the metabolites should be
printed in the output. Current eligible choices are 'id', 'name'
and formula. If name or id was not provided, id used instead.
"""
if ref_type.lower() not in ['id','name','equation']:
raise userError("**Error! Invalid reference type (eligible choices are 'id' and 'name')")
elif self.reactions == []:
raise userError('**Error! List of the reactions is not defined for this metabolite ...')
for reaction in self.product_reactions:
if ref_type.lower() == 'id':
rxn = reaction.id
elif ref_type.lower() == 'name':
if reaction.name is None:
rxn = reaction.id
userWARNING("Waarning! No name was provided for '" + reaction.id + "'. id is used instead.")
else:
rxn = reaction.name
elif ref_type.lower() == 'equation':
if reaction.equation is None:
rxn = reaction.id
userWARNING("Waarning! No equation was provided for '" + reaction.id + "'. id is used instead.")
else:
rxn = reaction.equation
print rxn
示例2: print_reactions_by
def print_reactions_by(self,ref_type, metab_ref = None):
"""
Prints in the output the list of all reactions this metabolite participates in
as a reactant or product in the model with the format specified by ref_type
INPUTS:
-------
ref_type: A string indicating in what format the reactions should be
printed in the output. Current eligible choices are 'id', 'name'
and formula. If name or id was not provided, id used instead.
metab_ref: A string indicating in what format the metabolites should appear
in a reaciton equation if ref_type = 'equation'. If None, metabolite
ids are used
"""
if ref_type.lower() not in ['id','name','equation']:
raise userError("Invalid reference type (eligible choices are 'id' and 'name')")
elif self.reactions == None:
raise userError('List of the reactions is not defined for this metabolite ...')
for reaction in self.reactions:
if ref_type.lower() == 'id':
rxn = reaction.id
elif ref_type.lower() == 'name':
if reaction.name is None:
rxn = reaction.id
userWARNING("Waarning! No name was not provided for '" + reaction.id + "'. id is used instead.")
else:
rxn = reaction.name
elif ref_type.lower() == 'equation':
if metab_ref != None:
rxn = reaction.get_eqn_by(metab_ref)
else:
rxn = reaction.get_eqn_by('id')
print rxn
示例3: __init__
def __init__(self,model, optSolverName = None, createModel = None, screenOutput = None):
"""
INPUTS (required):
------
model: An instance of class model containing the information
about the metabolic model
INPUTS (optional):
------
optSolverName: Name of the LP solver to be used to solve the LP. Current
allowable choices are cplex and gurobi
screenOutput: By default (on) writes a summary including the solve
status, optimality status (if not optimal), objective
function value and the elapsed time on the screen.
if set to a value of 'off' no resuults are written on
the screen, in which case The user can instead specifiy
an output fiile using the option outputFile, or store
them in the variable runOutput (see the 'run' method for
details)
createModel: A parameter indicating whether a pyomo model should be
created (1) or not. Default is 1. The options is useful
for the cases a model is already created and one just
wants to change some model attributes (e.g., flux bounds)
and rerun FBA. Setting this parameter to zero will save
soem runtime as the model need not to be created again.
"""
# Metabolic model
self.model = model
# Solver name
if optSolverName == None:
self.optSolverName = 'cplex'
else:
if optSolverName.lower() in ['cplex','gurobi']:
self.optSolverName = optSolverName
else:
raise userError('**Error! Invalid solver name (eligible choices are cplex and gurobi)\n')
# Whether to create a pyomo model
if createModel == None:
self.createModel = 1
elif createModel not in [0,1]:
raise userError('**Error! Inalid value for createModel! The allowable values are 0 and 1 ')
else:
self.createModel = createModel
# Output to the screen
if screenOutput == None:
self.screenOutput = 'on'
elif type(screenOutput) is not str:
raise userError("**Error! screenOutput should be a string ('on' or 'off')")
elif screenOutput.lower() not in ['on','off']:
raise userError("**Error! The only eligible values for screenOutput are 'on' and 'off'")
else:
self.screenOutput = screenOutput
示例4: biomass_yield_calc
def biomass_yield_calc(self,fba_model = None):
"""
Calculates the biomass yield of this metabolite (if applicable).
For the yield to be computed this metabolite should particiapte in
in an exchange reaction (EX_m(e): m[e] <==>)
INPUTS:
-------
fba_model: An instance of the class fba containing the fba model for the
wild-type organism under the desired growth condition. If this is
not provided, then the current fba_model of model is used
OUTPUS:
-------
The output is assigned to the global variable self.biomass_yield
"""
# Find the exchange reaction this metabolite participates in
exch_rxn = [r for r in self.reactant_reactions if r.type.lower() == 'exchange']
if len(exch_rxn) == 0:
raise userError('**ERROR! Unable to compute the biomass yield for metabolite ' + self.id +'. The metabolite must have an excange reaction in reactant_reactions ...')
elif len(exch_rxn) > 1:
raise userError('**ERROR! metabolite ' + self.id + ' participates in more than one exchange reaciton ...')
else:
exch_rxn = exch_rxn[0]
# Original LB on reaction flux
exch_rxn_LB = exch_rxn.flux_bounds[0]
# Perform FBA for 10 mole uptake of this metabolite
exch_rxn.flux_bounds[0] = -10
if fba_model == None:
# WARNING! If no fba_model is provided, the current model.fba_model is
# used to compute the biomass yield
self.model.fba(create_model = False,store_opt_fluxes = True, screen_output = 'off')
fba_solution = self.model.fba_model.solution
else:
fba_model.store_opt_fluxes = True
fba_model.screen_output = 'off'
fba_model.run()
fba_solution = fba_model.solution
if fba_solution['exit_flag'] == 'globallyOptimal':
if exch_rxn.flux < 0:
self.biomass_yield = fba_solution['objective_value']/(-exch_rxn.flux)
else:
# if zero (no uptake) or positive (production)
self.biomass_yield = None
print '\n**WARNING! The fba problem to compute the biomass yield for metabolite ' + self.id + ' resulted in a non-negative flux value for the corresponding exchange reaction. No value is assigned to biomass_yield'
else:
self.biomass_yield = None
print '\n**WARNING! The fba problem to compute the biomass yield for metabolite ' + self.id + ' was not solved to optimality. No value is assigned to biomass_yield'
# Set the lower bound on exchange reaction back to what it was before
exch_rxn.flux_bounds[0] = exch_rxn_LB
示例5: get_compounds
def get_compounds(self,ref_type = 'id'):
"""
Reports the list of compounds participating in this reaction in the output
with the format specified by ref_type
INPUTS:
-------
ref_type: A string indicating the in what format the compounds should be
printed in the output. Current eligible choices are 'id', 'name'
and formula. If name or id was not provided, id used instead.
"""
if ref_type.lower() not in ['id','name','formula']:
raise userError("**Error! Invalid reference type (eligible choices are 'id' and 'name')")
for metab in self.compounds:
if ref_type.lower() == 'id':
mm = metab.id
elif ref_type.lower() == 'name':
if metab.name is None:
mm = metab.id
else:
mm = metab.name
elif ref_type.lower() == 'formula':
if metab.formula is None:
mm = metab.id
else:
mm = metab.formula
return mm
示例6: get_products_by
def get_products_by(self,ref_type):
"""
Reports the list of products of this reaciton in the output
with the format specified by ref_type
INPUTS:
-------
ref_type: A string indicating the in what format the metabolites should be
printed in the output. Current eligible choices are 'id', 'name'
and formula. If name or id was not provided, id used instead.
"""
if ref_type.lower() not in ['id','name']:
raise userError("**Error! Invalid reference type (eligible choices are 'id' and 'name')")
for metab in self.products:
if ref_type.lower() == 'id':
mm = metab.id
elif ref_type.lower() == 'name':
if metab.name is None:
mm = metab.id
else:
mm = metab.name
elif ref_type.lower() == 'formula':
if metab.formula is None:
mm = metab.id
else:
mm = metab.formula
print mm
示例7: assign_props
def assign_props(self):
"""
Assigns the properties of reaction
"""
# A list of the form [dGmin,dGmax] containing the min and max values of deltaG
# (Gibbs free energy change) for this reaction
if self.deltaG_range == [] and self.deltaG != None and self.deltaG_uncertainty != None:
self.deltaG_range = [min(self.deltaG - self.deltaG_uncertainty,self.deltaG + self.deltaG_uncertainty),max(self.deltaG - self.deltaG_uncertainty,self.deltaG + self.deltaG_uncertainty)]
# List of compound objects containing all compounds participating in this reaction
self.compounds = sorted(list(set([c for c in self.stoichiometry.keys() if self.stoichiometry[c] < 0] + [c for c in self.stoichiometry.keys() if self.stoichiometry[c] > 0])),key=lambda x:x.id)
# List of compound objects containing all reactants of this reaction
self.reactants = sorted(list(set([m for m in self.stoichiometry.keys() if self.stoichiometry[m] < 0])),key=lambda x:x.id)
# List of compound objects containing all products of this reaction
self.products = sorted(list(set([m for m in self.stoichiometry.keys() if self.stoichiometry[m] > 0])),key=lambda x:x.id)
# This is particularly hepful when a reaction occurs in more than one compartment
# Here, we have a list instead of a single element because different compounds
# in the reaction may participate in different compartment
if self.compartment == []:
self.compartment = list(set([c.compartment for c in self.compounds]))
# model
models = list(set([c.model for c in self.compounds if hasattr(c,'model') and c.model != None]))
if len(models) == 1:
self.model = models[0]
elif len(models) > 1:
raise userError('More than one model assigned to "compounds" of reaction ' + self.id + ': ' + str([m.id for m in models]))
if len(models) == 0:
self.model = None
示例8: get_compounds
def get_compounds(self,ref_type = 'id'):
"""
Reports the list of compounds participating in this reaction in the output
with the format specified by show_cpds_by
INPUTS:
-------
show_cpds_by: A string indicating the in what format the compounds should be
printed in the output. Current eligible choices are 'id', 'name', 'formula',
'ModelSEED_id', 'KEGG_id', 'BiGG_id'. If ModelSEED_id, KEGG_id or BiGG_id ir not
available for any compound participating in the reaction, it is replaced with
its id.
"""
if show_cpds_by.lower() not in ['id','name','formula','ModelSEED_id', 'KEGG_id', 'BiGG_id']:
raise userError("**Error! Invalid reference type (eligible choices are 'id' and 'name')")
for metab in self.compounds:
if show_cpds_by.lower() == 'id':
mm = metab.id
elif show_cpds_by.lower() == 'name':
if metab.name is None:
mm = metab.id
else:
mm = metab.name
elif show_cpds_by.lower() == 'formula':
if metab.formula is None:
mm = metab.id
else:
mm = metab.formula
return mm
示例9: assign_flux_bounds
def assign_flux_bounds(self, assignLB = True, assignUB = True):
"""
Assigns general bounds to fluxes based on the reaction type
assignLB and assignUB indicate whether to assign the computed lower and upper bounds
"""
if len(self.flux_bounds) == 2:
flux_LB = self.flux_bounds[0]
flux_UB = self.flux_bounds[1]
else:
flux_LB = None
flux_UB = None
if (not self.is_exchange) and self.reversibility.lower() in ['irreversible','irreversible_forward']:
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 1000
# An irreversible reaction written in the backward direction, e.g., B <-- A
elif (not self.is_exchange) and self.reversibility.lower() == 'irreversible_backward':
if assignLB:
flux_LB = -1000
if assignUB:
flux_UB = 0
elif (not self.is_exchange) and self.reversibility.lower() == 'reversible':
if assignLB:
flux_LB = -1000
if assignUB:
flux_UB = 1000
elif (not self.is_exchange) and self.reversibility.lower() == 'reversible_forward':
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 1000
# Reverse part of a reversible reaciton wirttein the forward direction. For example, if A <==> B,
# A --> B is reversible_forward and B --> A is reversible_backward
elif (not self.is_exchange) and self.reversibility.lower() == 'reversible_backward':
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 1000
elif self.is_exchange and (self.reversibility.lower() == 'reversible' or self.reversibility.lower() == 'exchange'):
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 1000
elif self.is_exchange and self.reversibility.lower() == 'rversible_forward':
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 1000
elif self.is_exchange and self.reversibility.lower() == 'rversible_backward':
if assignLB:
flux_LB = 0
if assignUB:
flux_UB = 0
else:
raise userError('Unknown reaction reversibility: {} for reaction {} with is_exchange = {}'.format(self.reversibility, self.id, self.is_exchange))
self.flux_bounds = [flux_LB,flux_UB]
示例10: objectiveFunc_rule
def objectiveFunc_rule(self,fbaModel):
# Reactions for which the objective coefficient has not bee assigned
non_obj_rxns = [j.id for j in fbaModel.J if j.objective_coefficient == None]
if len(non_obj_rxns) >= 1:
print("**Error! 'objective_coefficient' has not been defined for the following reacitons:")
print non_obj_rxns
raise userError()
return sum(j.objective_coefficient*fbaModel.v[j] for j in fbaModel.J)
示例11: __init__
def __init__(self, id, name = '', name_aliases = [], domain = '', genus = '', species = '', strain = '', model_id = None, ModelSEED_type = '', gDW_per_cell = None, gWW_per_cell = None, cells_per_ml = None, gDW_per_ml = None, mu = None, random_mortality_rate = None, notes = ''):
# Organism id
self.id = id
# organism complete name (case insensitive string)
self.name = name
# Name aliases
self.name_aliases = name_aliases
# Domain (case insensitive string).Example of choices are:
# bacteria, archaea,Eukaryotes
self.domain = domain
# Genus (case insensitive string). Example: Escherichia
self.genus = genus
# Species ((case insensitive string)). Example: coli
self.species = species
# Strain ((case insensitive string)). Example: MG1655
self.strain = strain
# model id
self.model_id = model_id
# ModelSEED type (bacteria_GramPositive, bacteria_GramNegative, Human and Plant)
self.ModelSEED_type = ModelSEED_type
# Gram of dry weight per (one) cell
self.gDW_per_cell = gDW_per_cell
# Gram of wet weight per (one) cell
self.gWW_per_cell = gWW_per_cell
# Cell mass concnetration in number of cells per ml of the culture
self.cells_per_ml = cells_per_ml
# Cell mass concentration in gram of dry weight per ml of the culture
self.gDW_per_ml = gDW_per_ml
# Specific growth rate (in 1/h)
self.mu = mu
# Mortality rate
if random_mortality_rate > 0:
raise userError('Mortality rate for organism ' + self.id + ' must be non-positive')
else:
self.random_mortality_rate = random_mortality_rate
# Notes and comments
if isinstance(notes,str):
self.notes = notes
else:
self.notes = ''
示例12: find_coopr_exchrxns_fluxRanges
def find_coopr_exchrxns_fluxRanges(results_filename = 'coopr_exchrxns_fluxRanges.py', warnings = True, stdout_msgs = True):
"""
Finds the min and max value of each compound that can be produced by the wild-type strain
"""
from auxoMetabs import auxoMetabsMutants
# Model path
model_path = '/usr2/postdoc/alizom/work/models/Escherichia_coli/iJO1366/'
# Exchange reactions needed for cooperaiton in all pairs
cooperative_exchrxn_ids = list(set([r for m in auxoMetabsMutants.keys() for r_list in auxoMetabsMutants[m] for r in r_list]))
WT = create_model(warnings = warnings, stdout_msgs = stdout_msgs)
# Growth medium
set_specific_bounds(model = WT, file_name = model_path + 'iJO1366_minimal_glucose_anaerobic.py',limiting_nutrients = {'EX_glc(e)':[-10,1000]})
with open(results_filename,'w') as f:
f.write('coopr_exchrxns_fluxRanges = {}\n')
for exchrxn_id in cooperative_exchrxn_ids:
if stdout_msgs:
print '\n------- ',exchrxn_id,' ---------\n'
exchrxn = WT.reactions_by_id[exchrxn_id]
# Find maximum
for rxn in WT.reactions:
rxn.objective_coefficient = 0
exchrxn.objective_coefficient = 1
WT.fba(store_opt_fluxes = False, warnings = warnings, stdout_msgs = stdout_msgs)
if WT.fba_model.solution['exit_flag'] == 'globallyOptimal':
max_exch = WT.fba_model.solution['objective_value']
else:
max_exch = 0
# Find minimum
for rxn in WT.reactions:
rxn.objective_coefficient = 0
exchrxn.objective_coefficient = -1
WT.fba(store_opt_fluxes = False, warnings = warnings, stdout_msgs = stdout_msgs)
if WT.fba_model.solution['exit_flag'] == 'globallyOptimal':
min_exch = -WT.fba_model.solution['objective_value']
else:
min_exch = 0
if min_exch > max_exch:
raise userError('min_exch = {} > max_exch = {}'.format(min_exch,max_exch))
with open(results_filename,'a') as f:
f.write("coopr_exchrxns_fluxRanges['" + exchrxn_id + "'] = (" + str(min_exch) + ',' + str(max_exch) + ')\n')
print '\nResults were written into coopr_exchrxns_fluxRanges.py ...\n'
示例13: integrate_results_files
def integrate_results_files(results_filenames, results_var_name, mutant_pair, output_file_name):
"""
Integrates the results of all scripts (when splitting one job to multiple smaller jobs) inot one sinble file
INPUTS:
-------
results_file_names: A list of strings containing the names of the files containing the results
results_var_name: Name of the variable storing the results
output_file_name: Name of the output file name containing the integration of all results
mutant_pair: A tuple containiing the names of the mutant pairs
"""
from imp import load_source
# sum of the entries in all result files
entries_sum = 0
results = {}
results[mutant_pair] = {}
# Import the data in the module stored in file_name
for file_name in results_filenames:
if type(file_name) == str:
if not os.path.isfile(file_name):
raise IOError("No such file was found :'" + file_name + "'")
else:
# First delete the model dataFile if it already exists. If it is not deleted
# the new module data is merged with the previous ones
try:
del sys.modules['dataFile']
except:
pass
load_source('dataFile',file_name)
import dataFile
exec('results_curr = dataFile.' + results_var_name)
entries_sum += len(results_curr[mutant_pair].keys())
print 'Total # of entries in ', file_name,' = ',len(results_curr[mutant_pair].keys())
results_keys = results[mutant_pair].keys()
for k in results_curr[mutant_pair].keys():
if k in results_keys:
raise userError(str(k) + ' in ' + file_name + ' already in results_keys\n')
else:
results[mutant_pair][k] = results_curr[mutant_pair][k]
print '\nThe total # of entries in results = {}, entries_sum = {} '.format(len(results[mutant_pair].keys()),entries_sum)
# Write the results inot the specified output file
with open(output_file_name,'w') as f:
f.write(results_var_name + ' = {}\n')
f.write(results_var_name + '[' + str(mutant_pair) + '] = {}\n')
for k in results[mutant_pair].keys():
f.write(results_var_name + '[' + str(mutant_pair) + '][' + str(k) + '] = ' + str(results[mutant_pair][k]) + '\n')
print '\nResults were integrated and written into ',output_file_name,'\n'
示例14: create_job_files
def create_job_files(total_comb_num,interval_size, job_filename_base, joboutput_filename_base, max_walltime, coopr_level_m1_str, coopr_level_m2_str, glc_conc, glc_excess, use_DMMM_coopr):
"""
Creates the job files given:
total_comb_num: Total number of combinations
interval_size: The desired of iteration intervals
outfile_base_name: The base name of the output files
task: The task that should be performed ('analyze_games' or 'analyze_cost')
job_filename_base: Base name of the output job file
joboutput_filename_base: The name of the file storing the dynamic output of the job. It is essentially the same as job_filename_base
with the file path deleted (in order to create .out files in the same directory as the job file)
"""
if not glc_excess:
if glc_conc == 111.01:
results_filename_base = 'results/coopr_level_expGlc'
elif glc_conc == 1000:
results_filename_base = 'results/coopr_level_fixedGlc'
else:
raise userError('Unknonw glc_conc:' + str(glc_conc))
else:
results_filename_base = 'results/coopr_level_excessGlc'
coopr_level_m1 = range(0,101,5)
slices = create_intervals(total_comb_num = total_comb_num,interval_size = interval_size)
for slice in slices:
job_filename = job_filename_base + '_' + str(slice[0]) + '_' + str(slice[1]) + '.sh'
joboutput_filename = joboutput_filename_base + '_' + str(slice[0]) + '_' + str(slice[1]) + '.out'
print 'creating file ',job_filename,'...'
with open(job_filename,'w') as outfile:
outfile.write('#!/bin/bash -l\n')
outfile.write('#$-l h_rt=' + str(int(max_walltime))+ ':00:00\n\n')
outfile.write('cd /usr2/postdoc/alizom/work/EcoliPairs\n\n')
# This is to merge the .e[jobid] and .o[jobid] files
outfile.write('#$ -j y\n')
# Set the output file
outfile.write('\n#$ -o ' + joboutput_filename + '\n')
outfile.write('\nsource activate /projectnb/bioinfor/SEGRE/alizom\n\n')
# python -c "import time;print '\n**Job started at ',time.strftime('%c'),'\n'" > job_dynamic_yeast_stsrt_pos_end_pos.out 2>&1
outfile.write("\npython -c \"import time;print '\\n**Job started at ',time.strftime('%c'),'\\n'\"\n")
start_pos = slice[0]
end_pos = slice[1]
outfile.write('\npython -c \"from coopr_level import run_master_func;run_master_func(start_pos_pair = ' + str(start_pos) + ', end_pos_pair = ' + str(end_pos) + ', coopr_level_m1 = ' + coopr_level_m1_str + ', coopr_level_m2 = ' + coopr_level_m2_str + ', glc_conc = ' + str(glc_conc) + ", glc_excess = " + str(glc_excess) + ", use_DMMM_coopr = " + str(use_DMMM_coopr) + ", run_main = True, run_test = False, results_filename_base = '" + results_filename_base + "')\"\n\n")
# python -c "import time;print '\n**Job ended at ',time.strftime('%c'),'\n'" >> job_dynamic_yeast_start_pos_end_pos.out 2>&1
outfile.write("\npython -c \"import time;print '\\n**Job ended at ',time.strftime('%c'),'\\n'\"\n")
示例15: set_products
def set_products(self, products):
"""
Makes modificaitons to attribute reactants
"""
if not isinstance(products,list) and not isinstance(products,list):
raise TypeError("Invalid 'products' format for reaction {}! Compounds must be a list of products but a {} object was provided instead".format(self.id, type(products)))
if len([n for n in products if not isinstance(n,compound.compound)]) > 0:
raise TypeError("Invalid 'products' format for reaction {}! Compounds must be a list of 'compound' object but objects of {} were observed in the list instead. ".format(self.id, list(set([type(n) for n in products if not isinstance(n,compound.compound)]))))
problem_cpds = [cpd.id for cpd in products if cpd not in [c for c in self.stoichiometry.keys() if self.stoichiometry[c] > 0]]
if len(problem_cpds) > 0:
raise userError('The following {} compounds appear in reactants of reaction {} but they do not appear in the reaction stoichiometry: {}'.format(len(problem_cpds), self.id, problem_cpds))
if isinstance(products,tuple):
self.__dict__['products'] = products
elif isinstance(products,list):
self.__dict__['products'] = list(products)