A simplified python interface to COPASI.

Overview

Python package Documentation Status Quality Gate Status Binder DOI codecov

BasiCO

This project hosts a simplified python interface to COPASI. While all functionality from COPASI is exposed via automatically generated SWIG wrappers, this package aims to add a layer on top of that, to hide most of the complexity away when calling COPASI functions.

COPASI Logo

Installation

The package works with python 2.x and python 3.x, provided the following packages are installed:

  • python-copasi
  • pandas

pandas and python-copasi are freely available on pypi. Once done, just have the basico directory in the PYTHONPATH or sys.path.

Or you could directly install everything you need right from pypi

pip install copasi-basico

from this git repo:

pip install git+https://github.com/copasi/basico.git

Usage

The following modules are available:

  • model_io: functionality, for creating / loading / saving models.
  • model_info: functionality to getting / setting model elements from pandas dataframes
  • task_timecourse: a wrapper for running time course simulations
  • array_tools: utility for plotting and the like

Documentation is work in progress, but you can find the start under: https://basico.readthedocs.org/

Acknowledgements

This project has been possible thanks to the BMBF funded de.NBI initiative (031L0104A):

de.NBI logo

License

The packages available on this page are provided under the Artistic License 2.0, which is an OSI approved license. This license allows non-commercial and commercial use free of charge.

Comments
  • Segfault in basico when simulating BIOMD0000000516 after BIOMD0000000513.

    Segfault in basico when simulating BIOMD0000000516 after BIOMD0000000513.

    Hello, I've been trying to load and simulate the curated section of biomodels using basico. It seems there is a segfault when trying to simulate model 516 after 513 has already been loaded/simulated. Here's the code:

    from basico import *
    import os
    import glob
    import time
    try:
        from roadrunner.tests.download_biomodels import download_biomodels
    except ImportError:
        raise ImportError("Do a `pip install libroadrunner==2.2.0`")
    
    biomodels_folder = os.path.join(os.path.dirname(__file__), "biomodels")
    
    if not os.path.isdir(biomodels_folder):
        biomodels_folder = download_biomodels(os.path.dirname(__file__))
    
    if not os.path.isdir(biomodels_folder):
        raise NotADirectoryError(biomodels_folder)
    
    biomodels_files = glob.glob(os.path.join(biomodels_folder, "*.xml"))
    
    print(len(biomodels_files))
    
    start = time.time()
    for model_file in [biomodels_files[512], biomodels_files[515]]:
        try:
            print(model_file)
            model = load_model(model_file)
            result = run_time_course(duration=100)
        except Exception:
            print(f"Model {model_file} failed")
    
    end = time.time() - start
    

    output:

    1036
    D:\roadrunner\roadrunner\docs\source\parallel\roadrunner_map\biomodels\BIOMD0000000513.xml
    D:\roadrunner\roadrunner\docs\source\parallel\roadrunner_map\biomodels\BIOMD0000000516.xml
    
    Process finished with exit code -1073740791 (0xC0000409)
    
    
    opened by CiaranWelsh 10
  • File path issue with add_experiment()

    File path issue with add_experiment()

    Hello,

    When doing parameter estimation, one loads data with the add_experiment() function which takes a parameter "file_name" to chose a specific storage location for the preprocessed file.

    If i want my model and experiment files to be in a subfolder compared to the current directory i am running my script in, i would typically do:

    from basico import *
    import pandas as pd
    
    model_io.load_model("copasi\\example.cps")
    data = pd.read_csv("copasi\\example.txt", header=0, sep='\t')
    add_experiment("example", data, file_name="copasi\\exp_example.tsv")
    
    result = run_parameter_estimation()   # raises file not found (from C code ?)
    

    The experiment saving works fine, but when run_parameter_estimation() looks for the file, it looks at a wrong path:

    ERROR:root:Error while initializing the simulation: >ERROR 2022-01-14T10:00:09<
      CFitting (8): Failure reading file 'C:/Users/lbecquey/Desktop/minimal_example/copasi/copasi/exp_example.tsv'.
    

    Notice the duplicated name of the subfolder in the path.

    Note that using an absolute path everywhere does not change the problem.

    bug 
    opened by persalteas 8
  • Unexpected EXCEPTION 2022-02-22T11:21:58< CTrajectoryMethod (12): Internal step limit exceeded." when setting large stepsize">

    Unexpected "ERROR:root:Error while running the simulation: >EXCEPTION 2022-02-22T11:21:58< CTrajectoryMethod (12): Internal step limit exceeded." when setting large stepsize

    Hello, I have a model which I can simulate without problem using the direct method:

    from basico import *
    load_model('mymodel.txt');
    run_time_course(duration=1000.0, method='directMethod')
    

    Next, I want to set stepsize=1000.0, to ensure that only the final datapoint is saved:

    run_time_course(duration=1000.0, stepsize=1000.0, method='directMethod')
    

    however, this gives an error:

    ERROR:root:Error while running the simulation: >EXCEPTION 2022-02-22T11:21:58<
      CTrajectoryMethod (12): Internal step limit exceeded.
    

    and an altered output (final timepoint is around t=775), see image: image

    This seems unexpected to me, as I only change when we save the output, I am uncertain why this causes an error.

    Thie file is attached (originally had the .XML extension, but changed to .txt so that GitHub would accept it): mymodel.txt

    opened by TorkelE 6
  • Retrieving information of <Problem> section in tasks.

    Retrieving information of section in tasks.

    Hi,

    Following is the description of task (sensitivities) which has been extracted from a copasi model file. I want to retrieve the information enclosed in <problem> section.

    <Task key="Task_16" name="Sensitivities" type="sensitivities" scheduled="false" updateModel="false"> <Report reference="Report_3" target="" append="1" confirmOverwrite="0"/> <Problem> <Parameter name="SubtaskType" type="unsignedInteger" value="1"/> <ParameterGroup name="TargetFunctions"> <Parameter name="SingleObject" type="cn" value="CN=Root,Model=MAPK cascade,Vector=Compartments[compartment],Vector=Metabolites[PP-MAPK],Reference=Concentration"/> <Parameter name="ObjectListType" type="unsignedInteger" value="1"/> </ParameterGroup> <ParameterGroup name="ListOfVariables"> <ParameterGroup name="Variables"> <Parameter name="SingleObject" type="cn" value="CN=Root,Model=MAPK cascade,Vector=Reactions[binding of MAPKKK activator],ParameterGroup=Parameters,Parameter=k1,Reference=Value"/> <Parameter name="ObjectListType" type="unsignedInteger" value="1"/> </ParameterGroup> <ParameterGroup name="Variables"> <Parameter name="SingleObject" type="cn" value=""/> <Parameter name="ObjectListType" type="unsignedInteger" value="0"/> </ParameterGroup> </ParameterGroup> </Problem> <Method name="Sensitivities Method" type="SensitivitiesMethod"> <Parameter name="Delta factor" type="unsignedFloat" value="0.001"/> <Parameter name="Delta minimum" type="unsignedFloat" value="9.9999999999999998e-13"/> </Method> </Task>

    I used the function get_task_settings('Sensitivities', basic_only=False) with and without setting "basic_only" flag to False, but it gives the same following results:

    {'scheduled': False, 'update_model': False, 'problem': {'SubtaskType': 1}, 'method': {'Delta factor': 0.001, 'Delta minimum': 1e-12, 'name': 'Sensitivities Method'}, 'report': {'filename': '', 'report_definition': 'Sensitivities', 'append': True, 'confirm_overwrite': True}}

    Here you can see, the above function is returning only the name and value attributes of the sub-section (<Parameter >) within the <Problem> section.

    Can you please suggest how can I retrieve all the required information within <Problem> section?

    Thanks

    enhancement 
    opened by hasanbaig 5
  • How to get SBML identifiers in timecourse results? How to get amount/concentrations for species?

    How to get SBML identifiers in timecourse results? How to get amount/concentrations for species?

    Hi all, great library. I want to have timecourse results with SBML identifiers and be able to access either amount/concentration of species.

    Currently there is the function

    def __build_result_from_ts(time_series, use_concentrations=True):
        # type: (COPASI.CTimeSeries) -> pandas.DataFrame
        col_count = time_series.getNumVariables()
        row_count = time_series.getRecordedSteps()
    
        column_names = []
        column_keys = []
        for i in range(col_count):
            column_keys.append(time_series.getKey(i))
            column_names.append(time_series.getTitle(i))
            # FIXME: SBML ids for comparison
            column_names.append(time_series.getSBMLId(i))
    
        concentrations = np.empty([row_count, col_count])
        for i in range(row_count):
            for j in range(col_count):
                if use_concentrations:
                    concentrations[i, j] = time_series.getConcentrationData(i, j)
                else:
                    concentrations[i, j] = time_series.getData(i, j)
    
        df = pd.DataFrame(data=concentrations, columns=column_names)
        df = df.set_index('Time')
    
        return df
    

    I tried to get the SBML identifiers but need a CDataModel for that in time_serices.getSBMLId(i). How would I do this? Is there some documention for the python-copasi API? Are there some examples and use cases?

    How would I get amounts/concentrations for species?

    Best Matthias

    opened by matthiaskoenig 5
  • Custom selection with parameter does not work

    Custom selection with parameter does not work

    Based on the example in #17 I tried to set a custom selection to include the things I want to see in the results via

    tc = run_time_course_with_output(['Time', '[S1]', '[S2]', 'Values[k1]'], 0, 5, 5)
    

    But this results in the following error due to the Values[k1] in the selection.

    --- c1 ---
    ERROR:root:Error while initializing the simulation: >WARNING 2022-04-05T12:44:44<
      CCopasiTask (7): Problems compiling output.
    Empty DataFrame
    Columns: [Time, [S1], [S2], Values[k1]]
    Index: []
    
    opened by matthiaskoenig 4
  • Retrieving Method details.

    Retrieving Method details.

    Hi,

    I want to retrieve complete information of methods used in any specific task. For example, copasi model with optimization task has the following method details:

    <Method name="Genetic Algorithm" type="GeneticAlgorithm"> <Parameter name="Log Verbosity" type="unsignedInteger" value="0"/> <Parameter name="Number of Generations" type="unsignedInteger" value="200"/> <Parameter name="Population Size" type="unsignedInteger" value="20"/> <Parameter name="Random Number Generator" type="unsignedInteger" value="1"/> <Parameter name="Seed" type="unsignedInteger" value="0"/> <Parameter name="Mutation Variance" type="float" value="0.10000000000000001"/> <Parameter name="Stop after # Stalled Generations" type="unsignedInteger" value="0"/> </Method>

    I want to retrieve/set all the information including the "type" of the method. I tried to use get_opt_settings() but i returns on the following information related to method: 'method': {'Number of Generations': 200, 'Population Size': 20, 'name': 'Genetic Algorithm'}

    opened by hasanbaig 4
  • set_species failing to set initial concentration

    set_species failing to set initial concentration

    I tried this code:

    add_species('B');
    set_species('B', exact=True,  initial_concentration=0.4, status='fixed');
    
    

    and the result is that species 'B' ends up with initial concentration of 1 (default value, set by the add_species), not 0.4 as should have been changed by set_species ...

    I had to write:

    add_species('B', initial_concentration=0.4);
    set_species('B', exact=True, status='fixed');
    

    to have 'B' actually get the initial concentration of 0.4.

    opened by pmendes 3
  • Names appear different in  exp_data and sim_data dataframes

    Names appear different in exp_data and sim_data dataframes

    Hi @fbergmann ,

    Square brackets are missing in the columns names of sim_data returned by the function get_simulation_results for time course data.

    e.g.

    sim_data>
    Index(['ADP', 'fructose 6-phosphate', 'NAD', 'glyceraldehyde 3-phosphate',
           'pyruvate{cytosol}', 'dihydroxyacetone phosphate', '2-phosphoglycerate',
           dtype='object')
    
    exp_data>
    Index(['Time', '[d-glucose{"external compartment (blood)"}]_0', '[ATP]',
           '[dihydroxyacetone phosphate]', '[fructose 6-phosphate]',
           dtype='object')
    

    For steady-state data both sim_data and exp_data have brackets for the concentration of species in the column names.

    Could you please have a look?

    opened by DeepaMahm 3
  • AttributeError: 'CDataObject' object has no attribute 'setDblValue' when running plot_per_dependent_variable()

    AttributeError: 'CDataObject' object has no attribute 'setDblValue' when running plot_per_dependent_variable()

    Hello basiCO team,

    when I'm running the function 'plot_per_dependent_variable()' I get the following error:

    'AttributeError: 'CDataObject' object has no attribute 'setDblValue'' with the following traceback:

    (Environment: Anaconda 3; Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]; IPython 7.16.1)

    AttributeError                            Traceback (most recent call last)
    <ipython-input-12-0f3cf678761d> in <module>
    ----> 1 plot_per_dependent_variable();
    
    C:\anaconda3\lib\site-packages\basico\task_parameterestimation.py in plot_per_dependent_variable(**kwargs)
       1176         return result
       1177
    -> 1178     exp_data, sim_data = get_simulation_results(**kwargs)
       1179
       1180     dependent_variables = {}
    
    C:\anaconda3\lib\site-packages\basico\task_parameterestimation.py in get_simulation_results(values_only, **kwargs)
       1027             model.updateInitialValues(change_set)
       1028
    -> 1029         _update_fit_parameters_from(dm, solution, exp_name)
       1030
       1031         if experiment.getExperimentType() == COPASI.CTaskEnum.Task_steadyState:
    
    C:\anaconda3\lib\site-packages\basico\task_parameterestimation.py in _update_fit_parameters_from(dm, solution, exp_name)
       1078                 obj.getObjectParent().setInitialConcentration(value)
       1079             elif type(obj.getObjectParent()) is COPASI.CCopasiParameter:
    -> 1080                 obj.setDblValue(value)
       1081                 model.updateInitialValues(obj)
       1082             else:
    
    C:\anaconda3\lib\site-packages\COPASI\__init__.py in <lambda>(self, name)
       3235     for _s in [CObjectInterface, CUndoObjectInterface]:
       3236         __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    -> 3237     __getattr__ = lambda self, name: _swig_getattr(self, CDataObject, name)
       3238     __repr__ = _swig_repr
       3239     Container = _COPASI.CDataObject_Container
    
    C:\anaconda3\lib\site-packages\COPASI\__init__.py in _swig_getattr(self, class_type, name)
         83     if method:
         84         return method(self)
    ---> 85     raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
         86
         87
    

    I'm using the example model 'LM' and I'm following the steps of the parameter estimation as listed in the documentation here: https://basico.readthedocs.io/en/latest/notebooks/Parameter_Estimation_Example.html Input lines 1 - 11 all work without any issue.

    opened by nicolas-huber 3
  • setting a function that requires modifiers, should map them if specified

    setting a function that requires modifiers, should map them if specified

    When changing a function on a reaction, it should automatically add modifiers to the reaction scheme.

    • currently, when a reaction r1 with scheme A -> B is assigned a kinetic using modifiers this fails

    In the gui, this is allowed, however, this results in an invalid function, since no mapping is specified at that point. I would rather want to avoid creating invalid states, as it would be hard to track down later.

    So i propose to silently add modifiers to the reaction scheme, iff a mapping for modifier to species is defined. that means:

    • set_reaction('r1', function='function with modifier') would still fail, however
    • set_reaction('r1', function='function with modifier', mapping={'formulaTokenUsedAsModifier', 'speciesName' }) would work

    @pmendes would that work for you?

    opened by fbergmann 2
  • Plots of steady-state experiments

    Plots of steady-state experiments

    Hello @fbergmann ,

    I tried to make a few changes in the function def plot_per_dependent_variable to create plots for the steady-state data and I would like to share the modified function (please see below) with you.

    Thanks so much for the new release, this helps me a lot in obtaining the steady-state data in the required format.

    def plot_per_dependent_variable_ss(**kwargs):
        """
        This function creates a figure for each dependent variable, with traces for all experiments.
    
        :param kwargs:
    
        - | `model`: to specify the data model to be used (if not specified
          | the one from :func:`.get_current_model` will be taken)
    
        :return: array of tuples (fig, ax) for each figure created
        """
        dm = model_io.get_model_from_dict_or_default(kwargs)
    
        task = dm.getTask(TASK_PARAMETER_ESTIMATION)
        assert (isinstance(task, COPASI.CFitTask))
    
        problem = task.getProblem()
        assert (isinstance(problem, COPASI.CFitProblem))
    
        experiments = problem.getExperimentSet()
        assert (isinstance(experiments, COPASI.CExperimentSet))
    
        result = []
        num_experiments = experiments.getExperimentCount()
        if num_experiments == 0:
            return result
    
        data = get_simulation_results(**kwargs)
        exp_data = data[0]  # experimental data
        sim_data = data[1]  # simulation data
    
        dependent_variables = {}
    
        for i in range(num_experiments):
            experiment = experiments.getExperiment(i)
            mapping = get_experiment_mapping(experiment)
    
            # set independent values for that experiment
            independent = mapping[mapping.type == 'independent']
            xname = independent.iloc[0].mapping
    
            # set dependent values for that experiment
            dependent = mapping[mapping.type == 'dependent']
            num_dependent = dependent.shape[0]
            for j in range(num_dependent):
                name = dependent.iloc[j].mapping
                if name not in dependent_variables:
                    dependent_variables[name] = []
                dependent_variables[name].append(i)
    
        for dependent in dependent_variables:
            fig, ax = plt.subplots()
            cycler = plt.cycler("color", plt.cm.tab20c.colors)()
            ax.set_title(dependent)
            experiment_indices = dependent_variables[dependent]
    
            for i in experiment_indices:
                experiment = experiments.getExperiment(i)
                exp_name = experiment.getObjectName()
                nextval = next(cycler)['color']
                name = dependent
                if name not in sim_data[i].columns:
                    name = name[1:-1]
    
                sim_data[i][xname] = exp_data[i][xname]
                # print(sim_data[i])
    
                sim_data[i].reset_index().plot(x=xname, y=name,
                                               label="{0} Fit".format(exp_name), ax=ax, color=nextval)
                exp_data[i].plot.scatter(x=xname, y=dependent, ax=ax, color=nextval,
                                         label='{0} Measured'.format(exp_name))
            # plt.savefig('ss.png')
            result.append((fig, ax))
    
        return result
    
    
    opened by DeepaMahm 3
Releases(v0.40)
  • v0.40(Dec 21, 2022)

    Basico is a simplified python interface to COPASI. While all functionality from COPASI is exposed via automatically generated SWIG wrappers, this package aims to add a layer on top of that, to hide most of the complexity away when calling COPASI functions.

    This release adds an overload to reset the default handler, that can be used to display status information during long running operations. There is now also an example showing how to use the default handler (that will work of tqdm is installed).

    Source code(tar.gz)
    Source code(zip)
  • v0.39(Dec 20, 2022)

    Basico is a simplified python interface to COPASI. While all functionality from COPASI is exposed via automatically generated SWIG wrappers, this package aims to add a layer on top of that, to hide most of the complexity away when calling COPASI functions.

    This release changes the model editing so that the model is not compiled as often. Especially when creating big models, this reduces the runtime of scripts drastically.

    Source code(tar.gz)
    Source code(zip)
  • v0.38(Dec 13, 2022)

    Basico is a simplified python interface to COPASI. While all functionality from COPASI is exposed via automatically generated SWIG wrappers, this package aims to add a layer on top of that, to hide most of the complexity away when calling COPASI functions.

    This release changes the behavior of add_reaction / set_reaction, when it comes to assigning a function definition to it. Previously, the reaction scheme would already have to have all modifiers of the function listed, before a function could be assigned. Now this is no longer necessary and modifiers will be automatically added to the reaction scheme, as long as the mapping to all modifiers is specified. See also the Editing reaction kinetics example in the documentation. ( fixes #29 )

    Source code(tar.gz)
    Source code(zip)
  • v0.37(Dec 12, 2022)

    Basico is a simplified python interface to COPASI. While all functionality from COPASI is exposed via automatically generated SWIG wrappers, this package aims to add a layer on top of that, to hide most of the complexity away when calling COPASI functions.

    This release fixes an issue, where initial_concentrations would be lost when also setting additional properties using either add_species or get_species. (Issue #28)

    Source code(tar.gz)
    Source code(zip)
  • v0.36(Oct 6, 2022)

  • v0.35(Oct 4, 2022)

  • v0.34(Sep 30, 2022)

    This release adds the option to return the fit statistic for each experiment when get_fit_statistic is called with include_experiments=True . The python-copasi package will have to be version 2.37.263 or higher for this to work.

    Source code(tar.gz)
    Source code(zip)
  • v0.33(Aug 31, 2022)

  • v0.32(Aug 29, 2022)

    This release adds an optional parameter new_name to set_compartments / events / parameters, to allow them being renamed in the same way as species and reactions were.

    It also fixes an issue when adding experiments, which sometimes could fail. It also provides more information from the fit statistic.

    Source code(tar.gz)
    Source code(zip)
  • v0.31(Aug 5, 2022)

  • v0.30(Aug 4, 2022)

  • v0.29(Jul 27, 2022)

    This release adds a generic set_value function, that makes it easy to change values directly by their display name. For example:

    • set_value('(R1).k1', 10) to set a local parameter
    • set_value('S', 10, initial=True) to set an initial concentration of a species S
    Source code(tar.gz)
    Source code(zip)
  • v0.28(Jul 27, 2022)

    This release fixes an issue, where it was possible to define fit parameters (parameters to be estimated by parameter estimation), that referred to transient values, rather than initial one.

    Source code(tar.gz)
    Source code(zip)
  • v0.27(Jul 26, 2022)

    This release adds an optional parameter to get_simulation_results, that allows to not update the model parameters. So the simulation results will be generated for the current model state, rather than the solution from the last parameter estimation run if update_parameters=False.

    Full Changelog: https://github.com/copasi/basico/compare/v0.26...v0.27

    Source code(tar.gz)
    Source code(zip)
  • v0.26(Jul 19, 2022)

  • v0.25(Jun 30, 2022)

    This version adds the capability of directly manipulating python dictionaries for export / import of parameter estimation setups. Skipping the step of YAML serialization / deserialization if needed. Also full filenames to the export of experimental data files will be returned, so that the setting can be easier applied to new files, without the need to copy files.

    Source code(tar.gz)
    Source code(zip)
  • v0.24(Jun 30, 2022)

    This release makes it possible to export / import the mapping to experimental data files from a COPASI file. The format chosen is YAML:

    that way you can quickly transfer mappings from one COPASI file to another one, adjusting just the couple of parameters you like to modify.

    Source code(tar.gz)
    Source code(zip)
  • v0.23(Jun 28, 2022)

  • v0.22(Jun 28, 2022)

    This release fixes an issue, with get_data_from_experiment, for the case when the default renaming is not being used. Here, the original headers defined in the data file, would only be returned for the first experiment in the file, not in the remaining ones.

    Source code(tar.gz)
    Source code(zip)
  • v0.21(Jun 22, 2022)

  • v0.20(Jun 22, 2022)

    This release adds loading COMBINE archives, and SED-ML file. Additionally, when loading experimental data from files where there is a mismatch between the mapped number of columns, and the number of columns in the data file, no longer fail.

    Source code(tar.gz)
    Source code(zip)
  • v0.19(May 19, 2022)

    This release fixes an issue when using add_equation with an expression that ends on a species. Additionally an issue was resolved when setting model units, where now all unit expressions are converted to str.

    Source code(tar.gz)
    Source code(zip)
  • v0.18(Apr 5, 2022)

    This release adds changing transient values. So you can set:

    • concentrations / particle_numbers
    • compartment size
    • parameter value

    for those values not to be overwritten by their initial value, remember to set use_initial_values=False when continuing from a previous state with some minor changes.

    Source code(tar.gz)
    Source code(zip)
  • v0.17(Apr 5, 2022)

    New bugfix release, fixes an issue where global parameters could not be selected for custom output. (#18), thank you to Matthias for filing.

    Source code(tar.gz)
    Source code(zip)
  • v0.16(Feb 8, 2022)

    This release adds the capabilities to run the sensitivity task (and change their settings). Here an example of how that would look.

    Full Changelog: https://github.com/copasi/basico/compare/v0.15...v0.16

    Source code(tar.gz)
    Source code(zip)
  • v0.15(Feb 3, 2022)

    This release changes the get_reactions function, such that it now also returns the mappings of the function expression to the model elements. Additionally this function is available separately using get_reaction_mapping and set_reaction_mapping .

    Additionally this release fixes an issue, where the python runtime would crash when setting an invalid expression (either for initial assignments, or ODE / assignment expressions).

    Full Changelog: https://github.com/copasi/basico/compare/v0.14...v0.15

    Source code(tar.gz)
    Source code(zip)
  • v0.14(Jan 27, 2022)

    This release enhances the modification of plot curves, in that now the channels can also use CN's, which is necessary for plotting results of tasks. Also added a utility function get_cn to retrieve cns for display names, that could be used, when specifying fit parameters, and wanting that the lower bound for example is the value of another model element. Additionally it is now possible to generate the default plots as they are available in COPASI.

    Full Changelog: https://github.com/copasi/basico/compare/v0.13...v0.14

    Source code(tar.gz)
    Source code(zip)
  • v0.13(Jan 26, 2022)

    This release fixes a number of issues. Mainly, when getting / setting model elements, by passing in a boolean argument exact=True the name given has to match exactly. Additionally, new methods are available to remove all fit items, and experiments. A new get_value method retrieves values from reference names passed in.

    Full Changelog: https://github.com/copasi/basico/compare/v0.12...v0.13

    Source code(tar.gz)
    Source code(zip)
  • v0.12(Jan 25, 2022)

    This release adds members to retrieve all method names, and to convert between method names and their enum values if needed. Additionally the basic_only parameter on get_opt_settings can be passed along to retrieve advanced parameters.

    Full Changelog: https://github.com/copasi/basico/compare/v0.11...v0.12

    Source code(tar.gz)
    Source code(zip)
  • v0.11(Jan 17, 2022)

    This release fixes an issue in save_model_and_data so that absolute names for experiments are being used, thanks to Louis Becquey for reporting.

    The parameter mapping of reaction parameters can now also be changed by set_reaction_parameters using the mapped_to argument.

    Source code(tar.gz)
    Source code(zip)
Just another sentiment wrapper.

sentimany Just a simple sentiment tool. It just grabs a set of pre-made sentiment models that you can quickly use to attach sentiment scores to text.

vincent d warmerdam 15 Dec 27, 2022
NCAR/UCAR virtual Python Tutorial Seminar Series lesson on MetPy.

The Project Pythia Python Tutorial Seminar Series continues with a lesson on MetPy on Wednesday, 2 February 2022 at 1 PM Mountain Standard Time.

Project Pythia Tutorials 6 Oct 09, 2022
Secret santa is a fun and easy way to get together with your friends and/or family with a gift for them.

Vaccine Validator Tool to validate domestic New Zealand vaccine passes Create a new virtual environment: python3 -m venv ./venv Activate virtual envi

2 Dec 06, 2021
API Rate Limit Decorator

ratelimit APIs are a very common way to interact with web services. As the need to consume data grows, so does the number of API calls necessary to re

Tomas Basham 574 Dec 26, 2022
Repo created for the purpose of adding any kind of programs and projects

Programs and Project Repository A repository for adding programs and projects of any kind starting from beginners level to expert ones Contributing to

Unicorn Dev Community 3 Nov 02, 2022
Build your own Etherscan with web3.py

Build your own Etherscan with web3.py Video Tutorial: Run it pip3 install -r requirements.txt export FLASK_APP=app export FLASK_ENV=development flask

35 Jan 02, 2023
Keep your company's passwords behind the firewall

TeamVault TeamVault is an open-source web-based shared password manager for behind-the-firewall installation. It requires Python 3.3+ and Postgres (wi

//SEIBERT/MEDIA GmbH 38 Feb 20, 2022
Runtime profiler for Streamlit, powered by pyinstrument

streamlit-profiler 🏄🏼 Runtime profiler for Streamlit, powered by pyinstrument. streamlit-profiler is a Streamlit component that helps you find out w

Johannes Rieke 23 Nov 30, 2022
Howell County, Missouri, COVID-19 data and (unofficial) estimates

COVID-19 in Howell County, Missouri This repository contains the daily data files used to generate my COVID-19 dashboard for Howell County, Missouri,

Jonathan Thornton 0 Jun 18, 2022
Python script to preprocess images of all Pokémon to finetune ruDALL-E

ai-generated-pokemon-rudalle Python script to preprocess images of all Pokémon (the "official artwork" of each Pokémon via PokéAPI) into a format such

Max Woolf 132 Dec 11, 2022
pspsps(1) is a compyuter software to call an online catgirl to the Linux terminyal.

pspsps(1): call a catgirl from the Internyet to the Linux terminyal show processes: ps show catgirls: pspsps —@ Melissa Boiko 32 Dec 19, 2022

OpenSea NFT API App using Python and Streamlit

opensea-nft-api-tutorial OpenSea NFT API App using Python and Streamlit Tutorial Video Walkthrough https://www.youtube.com/watch?v=49SupvcFC1M Instruc

64 Oct 28, 2022
Blender-miHoYo-Shaders - Shaders for Blender attempting to replicate the shading of games developed by miHoYo

Blender-miHoYo-Shaders - Shaders for Blender attempting to replicate the shading of games developed by miHoYo

Matsuri 449 Jan 07, 2023
☘️ Projet Voltaire Solver in Python3

☘️ Projet Voltaire Solver in Python3

Bidouffe 8 Dec 02, 2022
Some shitty programs just to brush up on my understanding of binary conversions.

Binary Converters Some shitty programs just to brush up on my understanding of binary conversions. Supported conversions formats = "unsigned-binary" |

Tim 2 Jan 09, 2022
Cisco IOS-XE Operations Program. Shows operational data using restconf and yang

XE-Ops View operational and config data from devices running Cisco IOS-XE software. NoteS The build folder is the latest build. All other files are fo

18 Jul 23, 2022
Script to quickly get the metrics from Github repos to analyze.

commit-prefix-analysis Script to quickly get the metrics from Github repos to analyze. Setup Install the Github CLI. You'll know its working when runn

David Carpenter 1 Dec 17, 2022
Python script to automate the change of desktop background

wallomator Python script to automate the change of desktop background A python script that automates the process of changing the desktop background. I

Mohammed Haaris Javed 10 Jun 16, 2022
A simple package for interacting with the 9kw.eu anti-captcha service.

Welcome to captcha9kw’s documentation! captcha9kw is a smallish Python package for making use of the 9kw.eu services, including solving of interactive

2 Feb 26, 2022
This is collection of Managementsystem programs: Hospital Management, Student Managemen, etc

Contribute in this repository and help other students with their assignment by adding python scripts for various management system programs.

GDSC BVP DET - Navi Mumbai 3 Mar 20, 2022