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)
通过简单的卷积神经网络直接预测出验证码图片中滑块的位置

使用说明 1. 在本地测试 运行python3 prdict_one.py即可,默认需要预测的图片路径位于testImg文件夹下的test1.png 运行python3 predict_folder.py预测testImg下的所有图片 2. 部署到服务器 运行python3 run_a_server

12 Mar 08, 2022
Configure request params such as text, color, size etc. And then download the image

Configure request params such as text, color, size etc. And then download the image

6 Aug 18, 2022
How to create the game Rock, Paper, Scissors in Python

Rock, Paper, Scissors! If you want to learn how to do interactive games using Python, then this is great start for you. In this code, You will learn h

SplendidSpidey 1 Dec 18, 2021
peace-performance (Rust) binding for python. To calculate star ratings and performance points for all osu! gamemodes

peace-performance-python Fast, To calculate star ratings and performance points for all osu! gamemodes peace-performance (Rust) binding for python bas

9 Sep 19, 2022
Simple dotfile pre-processor with a per-file configuration

ix (eeks) Simple dotfile pre-processor with a per-file configuration Summary (TL;DR) ix.py is all you need config is an ini file. files to be processe

Poly 12 Dec 16, 2021
Used the pyautogui library to automate some processes on the computer

Pyautogui Utilizei a biblioteca pyautogui para automatizar alguns processos no c

Dheovani Xavier 1 Dec 30, 2021
This package tries to emulate the behaviour of syntax proposed in PEP 671 via a decorator

Late-Bound Arguments This package tries to emulate the behaviour of syntax proposed in PEP 671 via a decorator. Usage Mention the names of the argumen

Shakya Majumdar 0 Feb 06, 2022
Feature engineering library that helps you keep track of feature dependencies, documentation and schema

Feature engineering library that helps you keep track of feature dependencies, documentation and schema

28 May 31, 2022
Slimbook Battery 4 is the new version with new features that improves battery control and increases battery duration in laptops.

Slimbookbattery Slimbook Battery 4 is the new version with new features that improves battery control and increases battery duration in laptops. This

SLIMBOOK TEAM 128 Dec 28, 2022
Ikaros is a free financial library built in pure python that can be used to get information for single stocks, generate signals and build prortfolios

Ikaros is a free financial library built in pure python that can be used to get information for single stocks, generate signals and build prortfolios

Salma Saidane 64 Sep 28, 2022
Anki Cards for the HSK vocabulary Chinese-German

Anki-HanyuShuipingKaoshi Anki Cards for the HSK vocabulary Chinese-German Das Deck baut auf folgenden Quellen auf: China Endecken Wortschatz von wohok

1 Jan 07, 2022
Simple programming language built on Python.

Serial Another programming language. Built on Python. Building and running program In order to run the program on serial, unfortunately you still need

Aleksey Demchenkov 1 Dec 09, 2021
Dotfiles & list of programs

dotfiles & list of programs So I wanted to just backup my most used files. I have a bad habit, sometimes I get tired of a distro and do a wipe and sta

2 Sep 04, 2022
Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Nikolaos Avouris 2 Dec 05, 2021
Simple card retirement plugin for Anki

Anki Retirement Addon Allow users to suspend, tag, delete, or move cards that reach a specific retirement interval Supports Anki version 2.1.45 Licens

3 Dec 23, 2022
Custom SLURM wrapper scripts to make finding job histories and system resource usage more easily accessible

SLURM Wrappers Executables job-history A simple wrapper for grabbing data for completed and running jobs. nodes-busy Developed for the HPC systems at

Sara 2 Dec 13, 2021
A wrapper for the apt package manager.

A wrapper for the apt package manager.

531 Jan 04, 2023
Template (v0) do Sistema Chatbot - atividade síncrona - INE5404

ine-5404-sistema-chatbot-template Template (v0) do Sistema Chatbot - atividade síncrona - INE5404 Veja abaixo um exemplo de funcionamento do sistema:

0 Dec 07, 2021
Un script en python qui permet d'automatique bumpée (disboard.org) tout les 2h

auto-bumper Un script en python qui permet d'automatique bumpée (disboard.org) tout les 2h Pour la première utilisation, 1.Lancer Install.bat 2.(faire

!! 1 Jan 09, 2022
BDD base project: Python + Behave

BDD base project: Python + Behave Basic example of using Python with Behave (BDD). This Gherkin example includes: Basic Scenario Scenario Outline Tagg

eccanto 1 Dec 08, 2021