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)
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
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
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
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
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!')
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!")
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!')