Пример #1
0
def pool_function():
    pool_tree = [
        'Lorenz data', [
            dict(name='T', default=50, widget='float',
                help='End time'),
            dict(name='N', default=100000, widget='integer',
                help='Number of time steps'),
            dict(name='video', default=False, widget='checkbox',
                help='Display a video. WARNING: May take several minutes'),
            'Initial condition', [
                dict(name='x0', default=1, widget='float',
                     help='Initial condition in x-direction',
                     symbol='x_0'),
                dict(name='y0', default=0, widget='float',
                     help='Initial condition in y-direction',
                     symbol='y_0'),
                dict(name='z0', default=0, widget='float',
                     help='Initial condition in z-direction',
                     symbol='z_0'),
                ],
            'Lorenz parameters', [
                dict(name='sigma', default=10.,
                     symbol='\\sigma'),
                dict(name='rho', default=28.,
                     symbol='\\rho'),
                dict(name='beta', default='8.0/3', str2type=eval, symbol='\\beta'),
                ],
            ],
        ]
    from parampool.pool.UI import listtree2Pool
    return listtree2Pool(pool_tree)
Пример #2
0
def pool_definition_list():
    """Create and return pool defined through a nested list."""
    pool = [
        'Main',
        [
            'Initial motion data',
            [
                dict(name='Initial velocity', default=5.0),
                dict(name='Initial angle',
                     default=45,
                     widget='range',
                     minmax=[0, 90],
                     range_step=1),
                dict(name=r'Spinrate', default=50, widget='float', unit='1/s'),
            ],
            'Body and environment data',
            [
                dict(name='Wind velocity',
                     default=0.0,
                     help='Wind velocity in positive x direction.',
                     minmax=[-50, 50],
                     number_step=0.5,
                     widget='float',
                     str2type=float),
                dict(name='Mass',
                     default=0.1,
                     unit='kg',
                     validate=lambda data_item, value: value > 0,
                     help='Mass of body.'),
                dict(name='Radius',
                     default=0.11,
                     unit='m',
                     help='Radius of spherical body.'),
            ],
            'Numerical parameters',
            [
                dict(name='Method',
                     default='RK4',
                     widget='select',
                     options=['RK4', 'RK2', 'ForwardEuler'],
                     help='Numerical solution method.'),
                dict(name='Time step',
                     default=None,
                     widget='textline',
                     unit='s'),
            ],
            'Plot parameters',
            [
                dict(name='Plot simplified motion',
                     default=True,
                     help='Plot motion without drag+lift forces.'),
                dict(name='New plot',
                     default=True,
                     help='Erase all old curves.'),
            ],
        ],
    ]
    from parampool.pool.UI import listtree2Pool
    pool = listtree2Pool(pool)
    return pool
Пример #3
0
def define_input():
    pool = [
        'Main', [
            dict(name='initial velocity', default=1.0, unit='m/s'),
            dict(name='acceleration', default=1.0, unit='m/s**2'),
            dict(name='time', default=10.0, unit='s')
            ]
        ]

    from parampool.pool.UI import listtree2Pool
    pool = listtree2Pool(pool)  # convert list to Pool object
    return pool
Пример #4
0
def define_input():
    pool = [
        'Main',
        [
            dict(name='initial velocity', default=1.0, unit='m/s'),
            dict(name='acceleration', default=1.0, unit='m/s**2'),
            dict(name='time', default=10.0, unit='s')
        ]
    ]

    from parampool.pool.UI import listtree2Pool
    pool = listtree2Pool(pool)  # convert list to Pool object
    return pool
Пример #5
0
def pool_function():
    pool_tree = [
        'Lorenz data',
        [
            dict(name='T', default=50, widget='float', help='End time'),
            dict(name='N',
                 default=100000,
                 widget='integer',
                 help='Number of time steps'),
            dict(name='video',
                 default=False,
                 widget='checkbox',
                 help='Display a video. WARNING: May take several minutes'),
            'Initial condition',
            [
                dict(name='x0',
                     default=1,
                     widget='float',
                     help='Initial condition in x-direction',
                     symbol='x_0'),
                dict(name='y0',
                     default=0,
                     widget='float',
                     help='Initial condition in y-direction',
                     symbol='y_0'),
                dict(name='z0',
                     default=0,
                     widget='float',
                     help='Initial condition in z-direction',
                     symbol='z_0'),
            ],
            'Lorenz parameters',
            [
                dict(name='sigma', default=10., symbol='\\sigma'),
                dict(name='rho', default=28., symbol='\\rho'),
                dict(name='beta',
                     default='8.0/3',
                     str2type=eval,
                     symbol='\\beta'),
            ],
        ],
    ]
    from parampool.pool.UI import listtree2Pool
    return listtree2Pool(pool_tree)
Пример #6
0
def pool_definition_list():
    """Create and return pool defined through a nested list."""
    pool = [
        'Main', [
            'Initial motion data', [
                dict(name='Initial velocity', default=5.0),
                dict(name='Initial angle', default=45,
                     widget='range', minmax=[0,90], range_step=1),
                dict(name=r'Spinrate', default=50, widget='float',
                     unit='1/s'),
                ],
            'Body and environment data', [
                dict(name='Wind velocity', default=0.0,
                     help='Wind velocity in positive x direction.',
                     minmax=[-50, 50], number_step=0.5,
                     widget='float', str2type=float),
                dict(name='Mass', default=0.1, unit='kg',
                     validate=lambda data_item, value: value > 0,
                     help='Mass of body.'),
                dict(name='Radius', default=0.11, unit='m',
                     help='Radius of spherical body.'),
                ],
            'Numerical parameters', [
                dict(name='Method', default='RK4',
                     widget='select',
                     options=['RK4', 'RK2', 'ForwardEuler'],
                     help='Numerical solution method.'),
                dict(name='Time step', default=None,
                     widget='textline', unit='s'),
                ],
            'Plot parameters', [
                dict(name='Plot simplified motion', default=True,
                     help='Plot motion without drag+lift forces.'),
                dict(name='New plot', default=True,
                     help='Erase all old curves.'),
                ],
            ],
        ]
    from parampool.pool.UI import listtree2Pool
    pool = listtree2Pool(pool)
    return pool
Пример #7
0
def pool_definition_list2():  # Not used
    pool = [
        'Main pool', [
            'Initial motion data', [
                dict(name='Initial velocity', default=5.0),
                dict(name='Initial angle', default=45,
                     widget='range', minmax=[0,90], unit='deg'),
                dict(name='Spinrate', default=50, widget='float',
                     str2type=float, unit='1/s'),
                ],
            'Body and environment data', [
                dict(name='Wind velocity', default=0.0,
                     help='Wind velocity in positive x direction.'),
                dict(name='Mass', default=0.1,
                     help='Mass of body.', unit='kg'),
                dict(name='Radius', default=0.11,
                     help='Radius of spherical body.', unit='m'),
                ],
            'Numerical parameters', [
                dict(name='Method', default='RK4',
                     widget='select',
                     options=['RK4', 'RK2', 'ForwardEuler'],
                     help='Numerical solution method.'),
                dict(name='Time step', default=None,
                     widget='float', unit='s'),
                ],
            'Plot parameters', [
                dict(name='Plot simplified motion', default=True,
                     help='Plot motion without drag+lift forces.'),
                dict(name='New plot', default=True,
                     help='Erase all old curves.'),
                ],
            ],
        ]
    from parampool.pool.UI import listtree2Pool
    pool = listtree2Pool(pool)
    # from parampool.pool.UI import load_values_from_file, load_values_from_command_line
    #pool = load_values_from_file(pool, command_line_option='--poolfile')
    #pool = load_values_from_command_line(pool)
    return pool
Пример #8
0
def test_pool():
    from math import pi
    from parampool.pool.UI import listtree2Pool

    model_code = """\
import wtforms as wtf
from parampool.html5.flask.fields import FloatField, RangeFloatField

class Test(wtf.Form):
     a     = wtf.IntegerField(u'velocity of body (km/h)',
                        default=120,
                        validators=[wtf.validators.InputRequired()])
     b     = FloatField(u'mass (kg)',
                        default=0.43,
                        validators=[wtf.validators.InputRequired()])
     c     = FloatField(u'volume',
                        default=0.00418146,
                        validators=[wtf.validators.InputRequired()])
     C_D   = FloatField(u'drag coefficient',
                        default=0.2,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test1 = RangeFloatField(u'rangetest',
                        onchange="showValue(this.value)",
                        min=0,
                        max=1,
                        default=0.5,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test2 = wtf.FileField(u'filetest',
                        validators=[wtf.validators.InputRequired())
     test3 = wtf.SelectField(u'choicetest',
                        default='y',
                        validators=[wtf.validators.InputRequired()],
                        choices=[('y', 'y'), ('y3', 'y^3'), ('siny', 'sin(y)')])
     test4 = wtf.TextField(u'texttest',
                        default='Test',
                        validators=[wtf.validators.InputRequired()])
     test5 = wtf.BooleanField(u'booltest', default=True)
"""

    pool_tree = [
        'main',
        [
            dict(name='a',
                 default=120,
                 unit='km/h',
                 help='velocity of body',
                 str2type=eval),
            'test properties1',
            [
                dict(name='b', default=0.43, unit='kg', help='mass'),
                dict(name='c', default=pi * 0.11**3, help='volume'),
                dict(name='C_D',
                     default=0.2,
                     minmax=[0, 1],
                     help='drag coefficient'),
            ],
            'test properties2',
            [
                dict(name='test1',
                     default=0.5,
                     help='rangetest',
                     widget='RangeField',
                     minmax=[0, 1]),
                dict(name='test2',
                     default='',
                     help='filetest',
                     widget='FileField'),
                dict(name='test3',
                     default='y',
                     help='choicetest',
                     options=[('y', 'y'), ('y3', 'y^3'), ('siny', 'sin(y)')]),
                dict(name='test4', default='Test', help='texttest'),
                dict(name='test5', default=True, help='booltest'),
            ],
        ],
    ]

    pool = listtree2Pool(pool_tree)

    def compute_func(a, b, c, C_D, test1, test2, test3, test4):
        return None

    generated_code = generate_model(compute_func,
                                    "Test",
                                    outfile=None,
                                    default_field="FloatField",
                                    pool=pool)
    assert_equal_text(generated_code,
                      model_code,
                      'newly generated',
                      'reference result',
                      msg='Error in generated text!')
Пример #9
0
def test_pool():
    from math import pi
    from parampool.pool.UI import listtree2Pool

    model_code = """\
import wtforms as wtf
from parampool.html5.flask.fields import HTML5FloatField, FloatRangeField, IntegerRangeField
import flask.ext.wtf.html5 as html5

class Test(wtf.Form):
     a     = wtf.TextField(u'velocity of body (km/h)',
                        default='120',
                        validators=[wtf.validators.InputRequired()])
     b     = FloatField(u'mass (kg)',
                        default=0.43,
                        validators=[wtf.validators.InputRequired()])
     c     = FloatField(u'volume',
                        default=0.00418146,
                        validators=[wtf.validators.InputRequired()])
     C_D   = FloatField(u'drag coefficient',
                        default=0.2,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test1 = FloatRangeField(u'rangetest',
                        onchange="showValue(this.value)",
                        min=0,
                        max=1,
                        default=0.5,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test2 = wtf.FileField(u'filetest',
                        validators=[wtf.validators.InputRequired()])
     test3 = wtf.SelectField(u'choicetest',
                        default='y',
                        validators=[wtf.validators.InputRequired()],
                        choices=[('y', 'y'), ('y3', 'y^3'), ('siny', 'sin(y)')])
     test4 = wtf.TextField(u'texttest',
                        default='Test',
                        validators=[wtf.validators.InputRequired()])
     test5 = wtf.BooleanField(u'booltest', default=True)
"""

    pool_tree = [
        "main",
        [
            dict(name="a", default="120", unit="km/h", help="velocity of body", str2type=eval),
            "test properties1",
            [
                dict(name="b", default=0.43, unit="kg", help="mass"),
                dict(name="c", default=pi * 0.11 ** 3, help="volume"),
                dict(name="C_D", default=0.2, minmax=[0, 1], help="drag coefficient"),
            ],
            "test properties2",
            [
                dict(name="test1", default=0.5, help="rangetest", widget="range", minmax=[0, 1]),
                dict(name="test2", default="", help="filetest", widget="file"),
                dict(
                    name="test3",
                    default="y",
                    help="choicetest",
                    widget="select",
                    options=[("y", "y"), ("y3", "y^3"), ("siny", "sin(y)")],
                ),
                dict(name="test4", default="Test", help="texttest"),
                dict(name="test5", default=True, str2type=bool, help="booltest"),
            ],
        ],
    ]

    pool = listtree2Pool(pool_tree)

    def compute_func(a, b, c, C_D, test1, test2, test3, test4):
        return None

    generated_code = generate_model(compute_func, "Test", outfile=None, default_field="FloatField", pool=pool)
    assert_equal_text(generated_code, model_code, "newly generated", "reference result", msg="Error in generated text!")
Пример #10
0
def test_pool():
    from math import pi
    from parampool.pool.UI import listtree2Pool

    model_code = """\
import wtforms as wtf
from parampool.html5.flask.fields import FloatField, RangeFloatField

class Test(wtf.Form):
     a     = wtf.IntegerField(u'velocity of body (km/h)',
                        default=120,
                        validators=[wtf.validators.InputRequired()])
     b     = FloatField(u'mass (kg)',
                        default=0.43,
                        validators=[wtf.validators.InputRequired()])
     c     = FloatField(u'volume',
                        default=0.00418146,
                        validators=[wtf.validators.InputRequired()])
     C_D   = FloatField(u'drag coefficient',
                        default=0.2,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test1 = RangeFloatField(u'rangetest',
                        onchange="showValue(this.value)",
                        min=0,
                        max=1,
                        default=0.5,
                        validators=[wtf.validators.InputRequired(),
                                    wtf.validators.NumberRange(0,
                                                               1)])
     test2 = wtf.FileField(u'filetest',
                        validators=[wtf.validators.InputRequired())
     test3 = wtf.SelectField(u'choicetest',
                        default='y',
                        validators=[wtf.validators.InputRequired()],
                        choices=[('y', 'y'), ('y3', 'y^3'), ('siny', 'sin(y)')])
     test4 = wtf.TextField(u'texttest',
                        default='Test',
                        validators=[wtf.validators.InputRequired()])
     test5 = wtf.BooleanField(u'booltest', default=True)
"""

    pool_tree = [
        'main', [
            dict(name='a', default=120, unit='km/h',
                 help='velocity of body', str2type=eval),
            'test properties1', [
                dict(name='b', default=0.43, unit='kg', help='mass'),
                dict(name='c', default=pi*0.11**3, help='volume'),
                dict(name='C_D', default=0.2, minmax=[0,1],
                     help='drag coefficient'),
                ],
            'test properties2', [
                dict(name='test1', default=0.5, help='rangetest',
                     widget='RangeField', minmax=[0,1]),
                dict(name='test2', default='', help='filetest',
                     widget='FileField'),
                dict(name='test3', default='y', help='choicetest',
                     options=[('y', 'y'), ('y3', 'y^3'), ('siny', 'sin(y)')]),
                dict(name='test4', default='Test', help='texttest'),
                dict(name='test5', default=True, help='booltest'),
                ],
            ],
        ]

    pool = listtree2Pool(pool_tree)
    def compute_func(a, b, c, C_D, test1, test2, test3, test4):
        return None

    generated_code = generate_model(compute_func, "Test", outfile=None,
                                    default_field="FloatField", pool=pool)
    assert_equal_text(generated_code, model_code,
                      'newly generated', 'reference result',
                      msg='Error in generated text!')