コード例 #1
0
Add --show argument or navigate to:
    http://localhost:5006/interactive
"""
from collections import defaultdict

from chempy import Reaction, ReactionSystem
from chempy.kinetics.rates import MassAction
from chempy.util.bkh import integration_with_sliders


def get_rsys():
    r1 = Reaction({'A'}, {'B'}, MassAction([4./100], unique_keys=['k1']), name='R1: A cons.')
    r2 = Reaction({'B', 'C'}, {'A', 'C'}, MassAction([1e4], unique_keys=['k2']), name='R2: A reform.')
    r3 = Reaction({'B': 2}, {'B', 'C'}, MassAction([3e7], unique_keys=['k3']), name='R3: C form.')
    return ReactionSystem([r1, r2, r3])


if __name__.startswith('bk_'):
    # TODO: better xlim, ylim, ranges for c0
    from bokeh.io import curdoc
    curdoc().add_root(integration_with_sliders(
        get_rsys(), tend=1e3,
        c0=defaultdict(float, {'A': 1}),
        parameters={'k1': 4./100, 'k2': 1e4, 'k3': 3e7},
        x_axis_type='log', y_axis_type='log',
        integrate_kwargs=dict(integrator='cvode')
    ))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #2
0
ファイル: bokeh_interactive.py プロジェクト: adelq/chempy
Start by runing:
    $ bokeh serve interactive.py
Add --show argument or navigate to:
    http://localhost:5006/interactive
"""
from collections import defaultdict

from chempy import Reaction, ReactionSystem
from chempy.kinetics.rates import MassAction
from chempy.util.bkh import integration_with_sliders


def get_rsys(kf, kb):
    rf = MassAction([kf], unique_keys=['kf'])
    rb = MassAction([kb], unique_keys=['kb'])
    fw = Reaction({'Fe+3', 'SCN-'}, {'FeSCN+2'}, rf)
    bw = Reaction({'FeSCN+2'}, {'Fe+3', 'SCN-'}, rb)
    return ReactionSystem([fw, bw], 'Fe+3 SCN- FeSCN+2'.split())


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    curdoc().add_root(integration_with_sliders(
        get_rsys(3, .3), tend=3,
        c0=defaultdict(float, {'Fe+3': .9, 'SCN-': .7}),
        parameters={'kf': 3, 'kb': .3}
    ))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #3
0
    $ bokeh serve interactive.py
Add --show argument or navigate to:
    http://localhost:5006/interactive
"""
from collections import defaultdict
import sys

from chempy import Reaction, ReactionSystem
from chempy.arrhenius import ArrheniusParam
from chempy.util.bkh import integration_with_sliders


def get_rsys(Af=1e16, Ab=1.5e15, Ea=72e3, Er=-12e3):
    fw = Reaction({'Fe+3', 'SCN-'}, {'FeSCN+2'}, ArrheniusParam(Af, Ea))
    bw = Reaction({'FeSCN+2'}, {'Fe+3', 'SCN-'}, ArrheniusParam(Ab, Ea-Er))
    return ReactionSystem([fw, bw], 'Fe+3 SCN- FeSCN+2'.split())


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    curdoc().add_root(integration_with_sliders(
        get_rsys(), tend=3,
        c0=defaultdict(float, {'Fe+3': 3e-3, 'SCN-': 1.5e-3, 'FeSCN+2': .1e-3}),
        parameters={'temperature': 298.15},
        slider_kwargs={'temperature': dict(start=273.15, end=313.15, step=.05)}
    ))
elif __name__ == '__main__':
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)
コード例 #4
0
"""
Interactive kinetics app with sliders (with units).
Start by runing:
    $ bokeh serve interactive.py
Add --show argument or navigate to:
    http://localhost:5006/interactive
"""
from collections import defaultdict

from chempy.util.bkh import integration_with_sliders
from chempy.units import SI_base_registry, default_units as u

from bokeh_interactive import get_rsys


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    kf, kb = 3/u.molar/u.s, .3/u.s
    curdoc().add_root(integration_with_sliders(
        get_rsys(kf, kb), tend=3*u.s,
        c0=defaultdict(lambda: 0*u.molar, {'Fe+3': .9*u.molar, 'SCN-': .7*u.molar}),
        parameters={'kf': kf, 'kb': kb},
        unit_registry=SI_base_registry,
        output_conc_unit=u.molar,
        output_time_unit=u.second
    ))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #5
0
Add --show argument or navigate to:
    http://localhost:5006/interactive
"""
from collections import defaultdict
import sys

from chempy.util.bkh import integration_with_sliders
from chempy.units import SI_base_registry, default_units as u

from bokeh_interactive_arrhenius import get_rsys


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    Af, Ab, Ea, Er = 1e16/u.molar/u.s, 1.5e15/u.s, 72e3*u.J/u.mol, -12e3*u.J/u.mol
    curdoc().add_root(integration_with_sliders(
        get_rsys(Af, Ab, Ea, Er), tend=3*u.s,
        c0=defaultdict(lambda: 0*u.molar, {'Fe+3': 3e-3*u.molar, 'SCN-': 1.5e-3*u.molar}),
        parameters={'temperature': 298.15*u.K},
        slider_kwargs={'temperature': dict(start=273.15*u.K, end=313.15*u.K, step=.05*u.K)},
        get_odesys_kw=dict(
            unit_registry=SI_base_registry,
            output_conc_unit=u.molar,
            output_time_unit=u.second
        )
    ))
elif __name__ == '__main__':
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)
コード例 #6
0
from collections import defaultdict

from chempy import Reaction, ReactionSystem
from chempy.arrhenius import ArrheniusParam
from chempy.util.bkh import integration_with_sliders


def get_rsys(Af=1e16, Ab=1.5e15, Ea=72e3, Er=-12e3):
    fw = Reaction({'Fe+3', 'SCN-'}, {'FeSCN+2'}, ArrheniusParam(Af, Ea))
    bw = Reaction({'FeSCN+2'}, {'Fe+3', 'SCN-'}, ArrheniusParam(Ab, Ea - Er))
    return ReactionSystem([fw, bw], 'Fe+3 SCN- FeSCN+2'.split())


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    curdoc().add_root(
        integration_with_sliders(get_rsys(),
                                 tend=3,
                                 c0=defaultdict(float, {
                                     'Fe+3': 3e-3,
                                     'SCN-': 1.5e-3
                                 }),
                                 parameters={'temperature': 298.15},
                                 slider_kwargs={
                                     'temperature':
                                     dict(start=273.15, end=313.15, step=.05)
                                 }))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #7
0
from chempy.util.bkh import integration_with_sliders
from chempy.units import SI_base_registry, default_units as u

from bokeh_interactive_arrhenius import get_rsys

if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    Af, Ab, Ea, Er = 1e16 / u.molar / u.s, 1.5e15 / u.s, 72e3 * u.J / u.mol, -12e3 * u.J / u.mol
    curdoc().add_root(
        integration_with_sliders(get_rsys(Af, Ab, Ea, Er),
                                 tend=3 * u.s,
                                 c0=defaultdict(
                                     lambda: 0 * u.molar, {
                                         'Fe+3': 3e-3 * u.molar,
                                         'SCN-': 1.5e-3 * u.molar
                                     }),
                                 parameters={'temperature': 298.15 * u.K},
                                 slider_kwargs={
                                     'temperature':
                                     dict(start=273.15 * u.K,
                                          end=313.15 * u.K,
                                          step=.05 * u.K)
                                 },
                                 unit_registry=SI_base_registry,
                                 output_conc_unit=u.molar,
                                 output_time_unit=u.second))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #8
0
from collections import defaultdict
import sys

from chempy.util.bkh import integration_with_sliders
from chempy.units import SI_base_registry, default_units as u

from bokeh_interactive import get_rsys

if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    kf, kb = 3 / u.molar / u.s, .3 / u.s
    curdoc().add_root(
        integration_with_sliders(get_rsys(kf, kb),
                                 tend=3 * u.s,
                                 c0=defaultdict(lambda: 0 * u.molar, {
                                     'Fe+3': .9 * u.molar,
                                     'SCN-': .7 * u.molar
                                 }),
                                 parameters={
                                     'kf': kf,
                                     'kb': kb
                                 },
                                 get_odesys_kw=dict(
                                     unit_registry=SI_base_registry,
                                     output_conc_unit=u.molar,
                                     output_time_unit=u.second)))
elif __name__ == '__main__':
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)
コード例 #9
0
        {"A", "C"},
        MassAction([1e4], unique_keys=["k2"]),
        name="R2: A reform.",
    )
    r3 = Reaction(
        {"B": 2}, {"B", "C"}, MassAction([3e7], unique_keys=["k3"]), name="R3: C form."
    )
    return ReactionSystem([r1, r2, r3])


if __name__.startswith("bk_"):
    # TODO: better xlim, ylim, ranges for c0
    from bokeh.io import curdoc

    curdoc().add_root(
        integration_with_sliders(
            get_rsys(),
            tend=1e3,
            c0=defaultdict(float, {"A": 1}),
            parameters={"k1": 4.0 / 100, "k2": 1e4, "k3": 3e7},
            x_axis_type="log",
            y_axis_type="log",
            integrate_kwargs=dict(integrator="cvode"),
        )
    )
elif __name__ == "__main__":
    import warnings

    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)
コード例 #10
0
                  MassAction([4. / 100], unique_keys=['k1']),
                  name='R1: A cons.')
    r2 = Reaction({'B', 'C'}, {'A', 'C'},
                  MassAction([1e4], unique_keys=['k2']),
                  name='R2: A reform.')
    r3 = Reaction({'B': 2}, {'B', 'C'},
                  MassAction([3e7], unique_keys=['k3']),
                  name='R3: C form.')
    return ReactionSystem([r1, r2, r3])


if __name__.startswith('bk_'):
    # TODO: better xlim, ylim, ranges for c0
    from bokeh.io import curdoc
    curdoc().add_root(
        integration_with_sliders(get_rsys(),
                                 tend=1e3,
                                 c0=defaultdict(float, {'A': 1}),
                                 parameters={
                                     'k1': 4. / 100,
                                     'k2': 1e4,
                                     'k3': 3e7
                                 },
                                 x_axis_type='log',
                                 y_axis_type='log',
                                 integrate_kwargs=dict(integrator='cvode')))
elif __name__ == '__main__':
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)
コード例 #11
0
ファイル: bokeh_interactive.py プロジェクト: yccai/chempy
from chempy import Reaction, ReactionSystem
from chempy.kinetics.rates import MassAction
from chempy.util.bkh import integration_with_sliders


def get_rsys(kf, kb):
    rf = MassAction([kf], unique_keys=['kf'])
    rb = MassAction([kb], unique_keys=['kb'])
    fw = Reaction({'Fe+3', 'SCN-'}, {'FeSCN+2'}, rf)
    bw = Reaction({'FeSCN+2'}, {'Fe+3', 'SCN-'}, rb)
    return ReactionSystem([fw, bw], 'Fe+3 SCN- FeSCN+2'.split())


if __name__.startswith('bk_'):
    from bokeh.io import curdoc
    curdoc().add_root(
        integration_with_sliders(get_rsys(3, .3),
                                 tend=3,
                                 c0=defaultdict(float, {
                                     'Fe+3': .9,
                                     'SCN-': .7
                                 }),
                                 parameters={
                                     'kf': 3,
                                     'kb': .3
                                 }))
else:
    import warnings
    warnings.warn("Run using 'bokeh serve %s'" % __file__)
コード例 #12
0
    Af, Ab, Ea, Er = (
        1e16 / u.molar / u.s,
        1.5e15 / u.s,
        72e3 * u.J / u.mol,
        -12e3 * u.J / u.mol,
    )
    curdoc().add_root(
        integration_with_sliders(
            get_rsys(Af, Ab, Ea, Er),
            tend=3 * u.s,
            c0=defaultdict(
                lambda: 0 * u.molar, {"Fe+3": 3e-3 * u.molar, "SCN-": 1.5e-3 * u.molar}
            ),
            parameters={"temperature": 298.15 * u.K},
            slider_kwargs={
                "temperature": dict(
                    start=273.15 * u.K, end=313.15 * u.K, step=0.05 * u.K
                )
            },
            get_odesys_kw=dict(
                unit_registry=SI_base_registry,
                output_conc_unit=u.molar,
                output_time_unit=u.second,
            ),
        )
    )
elif __name__ == "__main__":
    import warnings

    warnings.warn("Run using 'bokeh serve %s'" % __file__)
    sys.exit(1)