def test_biomodels_invalid_mirror(): model_from_biomodels('1', mirror='spam')
def test_biomodels_import_with_mock(): model_from_biomodels('1')
def data_to_json(value, widget): """ Generate a json file from the data passed to the widget Parameters ---------- value: pysb.Model, pysb.SimulationResult, str Value passed to the widget that is going to be visualized widget: Widget Widget instance Returns ------- """ if is_pysb_model(value): from pyvipr.pysb_viz.static_viz import PysbStaticViz viz = PysbStaticViz(value) jsondata = static_data(viz, widget) return jsondata elif is_pysb_sim(value): from pyvipr.pysb_viz.dynamic_viz import PysbDynamicViz viz = PysbDynamicViz(value, widget.sim_idx, widget.cmap) jsondata = dynamic_data(viz, widget) return jsondata elif isinstance(value, str): file_extension = os.path.splitext(value)[1] if file_extension in ['.bngl', '.sbml', '.xml'] and widget.type_of_viz != 'sbgn_xml'\ or value.startswith('BIOMD'): try: from pysb.importers.sbml import model_from_sbml, model_from_biomodels from pysb.importers.bngl import model_from_bngl except ImportError: raise Exception( 'PySB must be installed to visualize models from files') from pyvipr.pysb_viz.static_viz import PysbStaticViz if file_extension == '.bngl': model = model_from_bngl(value) elif file_extension in ['.sbml', '.xml']: model = model_from_sbml(value) elif value.startswith('BIOMD'): model = model_from_biomodels(value) viz = PysbStaticViz(model) jsondata = static_data(viz, widget) return jsondata elif file_extension == '.graphml' or widget.type_of_viz == 'sbgn_xml': with open(value, 'r') as file: data = file.read().replace('\n', '') return data elif file_extension == '.json': import json with open(value, 'r') as file: data = file.read().replace('\n', '') jsondata = json.loads(data) return jsondata elif file_extension == '.sif': with open(value, 'r') as file: data = file.read() data = data.rstrip('\n') return data # elif file_extension == '.ka': # subprocess.run(['truml', '-k', value]) # bngl_model_path = re.sub('ka', 'bngl', value) # model = model_from_bngl(bngl_model_path) # os.remove(bngl_model_path) else: raise ValueError('Format not supported') elif is_tellurium_model(value): if widget.type_of_viz.startswith('dynamic'): from pyvipr.tellurium_viz.dynamic_viz import TelluriumDynamicViz viz = TelluriumDynamicViz(value, widget.cmap) jsondata = dynamic_data(viz, widget) else: from pyvipr.tellurium_viz.static_viz import TelluriumStaticViz viz = TelluriumStaticViz(value) jsondata = static_data(viz, widget) return jsondata elif isinstance( value, (nx.DiGraph, nx.Graph, nx.MultiDiGraph, nx.MultiGraph, dict)): from pyvipr.network_viz.network_viz import NetworkViz viz = NetworkViz(value) if widget.type_of_viz: jsondata = getattr(viz, widget.type_of_viz)() else: jsondata = value return jsondata elif is_ecell_model(value): try: from pysb.importers.sbml import model_from_sbml except ImportError: raise Exception( 'PySB must be installed to visualize models from files') from pyvipr.pysb_viz.static_viz import PysbStaticViz import tempfile ecell4 = sys.modules['ecell4'] f_sbml = tempfile.NamedTemporaryFile(suffix='.sbml') # In ecell4 species don't have initial conditions as attributes. Hence, the # initial conditions are passed as a dictionary to the save_sbml function. # If no initial conditions are passed ecell4 sets the initial condition of the # species to 0, and PySB throws an error when the initial condition of all the species # are zero. For visualization purposes we then set the initial conditions to 1. y0 = {sp.serial(): 1 for sp in value.list_species()} ecell4.util.ports.save_sbml(f_sbml.name, value, y0=y0) model = model_from_sbml(f_sbml.name) viz = PysbStaticViz(model) jsondata = static_data(viz, widget) return jsondata elif is_pysces_model(value): try: from pysb.importers.sbml import model_from_sbml except ImportError: raise Exception( 'PySB must be installed to visualize models from files') from pyvipr.pysb_viz.static_viz import PysbStaticViz import tempfile # Note: Importing a pysces model to sbml doesn't work in python 3.7 pysces = sys.modules['pysces'] f_sbml = tempfile.NamedTemporaryFile(suffix='.xml') pysces.interface.writeMod2SBML(value, f_sbml.name) model = model_from_sbml(f_sbml.name) viz = PysbStaticViz(model) jsondata = static_data(viz, widget) return jsondata else: raise TypeError( 'Only pysb Model, pysb SimulationResult, tellurium Model, ' 'PySCeS Model, and networkx graphs are supported')
import pickle import csv # Choose the analysis and sampling methods import SALib.analyze.sobol as analysis_method an_m = 'sobol' import SALib.sample.saltelli as sampling_method smp_m = 'saltelli' # Choose the model # ACC_NO = '261' # 259 is FEdeficient, 260 adequate and 261 loaded ACC_NOs = {'deficient': '259', 'adequate': '260', 'loaded': '261'} models = {key: model_from_biomodels(val) for key, val in ACC_NOs.items()} # Set the simulation time t = list(range(30)) # 30 minutes, as in publication. # Choose species to be analyzed from the model outputs = { key: list(models[key].observables.keys()) for key in ACC_NOs } # all the observables! we need to run the analysis for all of them separately # all three models have the same observables, they only differ in parameter values # View the model # print(model.monomers) # print(models['adequate'].parameters)