def config(*animate): from animate import cfg_anim from myutil import quickui ffmt = '{0:.3f}'.format Q = quickui.cbook return quickui.configuration( Q.Ctransf(dict,multi=True), ('syst',dict(sel=None), Q.Ctransf( partial( RandomWalk, N=400, ) ), ('stepg',dict(tooltip='Specification of the normal 0-mean random step'), Q.Ctransf( partial( bvn, vx=3.1, vy=2.8, cor=.5 ) ), ('vx',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=.1,vmax=1.,nval=1000,vtype=float,fmt=ffmt) ), ('vy',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=.1,vmax=1.,nval=1000,vtype=float,fmt=ffmt) ), ('cor',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=0.,vmax=1.,nval=1000,vtype=float,fmt=ffmt) ) ), ('N',dict(accept=Q.i), Q.Cbase.LinScalar(step=1,vmin=100,vmax=1000,vtype=int) ), ), ('animate',dict(sel=False))+ cfg_anim( *animate, modifier=dict( save=dict( filename='randwalk.mp4', metadata=dict( title='A random walk', ), ), ) ), )
def config(*animate): from animate import cfg_anim from myutil import quickui ffmt = '{:.1f}'.format Q = quickui.cbook return quickui.configuration( Q.Ctransf( partial( dict, srate=25., taild=1., maxtime=infty, ), multi=True, ), ('srate',dict(sel=None,accept=Q.i,tooltip='sample rate in Hz'), Q.Cbase.LinScalar(vmin=10,vmax=50,nval=1000,vtype=float,fmt=ffmt) ), ('taild',dict(sel=None,accept=Q.i,tooltip='shadow length in s'), Q.Cbase.LinScalar(step=1,vmin=0,vmax=10,vtype=float,fmt=ffmt) ), ('syst',dict(sel=None), Q.Ctransf( partial( Pendulum, L=1., G=9.81, ) ), ('G',dict(accept=Q.i,tooltip='gravity acceleration in m/s^2'), Q.Cbase.LinScalar(vmin=1.,vmax=20.,nval=1000,vtype=float,fmt=ffmt) ), ('L',dict(accept=Q.i,tooltip='length of pendulum in m'), Q.Cbase.LinScalar(vmin=.1,vmax=10.,nval=1000,vtype=float,fmt=ffmt) ), ), ('ini',dict(), Q.Ctransf( partial( Pendulum.makestate, theta=179., ) ), ('theta',dict(accept=Q.i,tooltip='initial angle of pendulum in deg'), Q.Cbase.LinScalar(vmin=-180.,vmax=180.,nval=1000,vtype=float,fmt=ffmt) ), ), ('maxtime',dict(accept=Q.i,tooltip='duration of simulation in s'), Q.Cbase.LinScalar(step=1.,vmin=10.,vmax=3600.,vtype=float,fmt=ffmt) ), ('animate',dict(sel=False))+ cfg_anim( *animate, modifier=dict( timer=dict( interval=40., ), save=dict( filename='pendulum1.mp4', metadata=dict( title='A simple pendulum simulation', ), ), ) ), )
def config(*animate): from animate import cfg_anim from myutil import quickui krange = range(1,4) ffmt = '{0:.2f}'.format Q = quickui.cbook def normalise(a): return a/sum(a) def c_component(): return ( Q.Ctransf( partial( bvn, mx=10*rand(), my=10*rand(), vx=10*rand(), vy=10*rand(), cor=rand(), ) ), ('mx',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=0.,vmax=10.,nval=100,vtype=float,fmt=ffmt) ), ('my',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=0.,vmax=10.,nval=100,vtype=float,fmt=ffmt) ), ('vx',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=0.,vmax=10.,nval=100,vtype=float,fmt=ffmt) ), ('vy',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=0.,vmax=10.,nval=100,vtype=float,fmt=ffmt) ), ('cor',dict(accept=Q.i), Q.Cbase.LinScalar(vmin=-1.,vmax=1.,nval=100,vtype=float,fmt=ffmt) ), ) def c_weight(): return ( Q.Cbase.LinScalar(vmin=0.,vmax=10.,nval=100,vtype=float,fmt=ffmt), ) return quickui.configuration( Q.Ctransf(dict,multi=True), ('syst',dict(sel=None), Q.Ctransf( partial( Kmeans, K=5, ) ), ('data',dict(sel=None), Q.Ctransf( partial( mixture, N=1000, ) ), ('N',dict(accept=Q.i,tooltip='Number of points'), Q.Cbase.LinScalar(vmin=50,vmax=20000,nval=1000,vtype=int) ), ('weights',dict(tooltip='Weights of the generating mixture'), Q.Ccomp(lambda l: normalise(array(Q.selectv(l))), defaultdict(lambda: 10*uniform()) ) )+tuple(('w'+str(k),dict(accept=Q.i))+c_weight() for k in krange), ('comp',dict(tooltip='Components of the generating mixture'), Q.Ccomp(Q.selectv,None) )+tuple(('c'+str(k),dict(anchor=True))+c_component() for k in krange), ), ('K',dict(accept=Q.i,tooltip='Number of clusters'), Q.Cbase.LinScalar(vmin=2,vmax=20,step=1,vtype=int) ), ), ('animate',dict(sel=False))+ cfg_anim( *animate, modifier=dict( save=dict( filename='kmeans.mp4', metadata=dict( title='An execution of the kmeans algorithm', ), ), ) ), )
def test(*animate): from animate import cfg_anim from myutil import quickui ffmt = '{:.1f}'.format Q = quickui.cbook return quickui.configuration( Q.Ctransf( partial( dict, srate=25., taild=1., maxtime=infty, ), multi=True, ), ('srate',dict(sel=None,accept=Q.i,tooltip='sample rate in Hz'), Q.Cbase.LinScalar(vmin=10,vmax=50,nval=1000,vtype=float,fmt=ffmt) ), ('taild',dict(sel=None,accept=Q.i,tooltip='shadow length in s'), Q.Cbase.LinScalar(step=1,vmin=0,vmax=10,vtype=float) ), ('syst',dict(sel=None), Q.Ctransf( partial( DoublePendulum, M1=5., L1=2., M2=.1, L2=1., G=9.81, ) ), ('G',dict(accept=Q.i,tooltip='acceleration due to gravity in m/s^2'), Q.Cbase.LinScalar(vmin=1.,vmax=20.,nval=1000,vtype=float,fmt=ffmt) ), ('M1',dict(accept=Q.i,tooltip='mass of pendulum 1 in kg'), Q.Cbase.LinScalar(vmin=.05,vmax=20.,nval=1000,vtype=float,fmt=ffmt) ), ('L1',dict(accept=Q.i,tooltip='length of pendulum 1 in m'), Q.Cbase.LinScalar(vmin=.1,vmax=10.,nval=1000,vtype=float,fmt=ffmt) ), ('M2',dict(accept=Q.i,tooltip='mass of pendulum 2 in kg'), Q.Cbase.LinScalar(vmin=.05,vmax=20.,nval=1000,vtype=float,fmt=ffmt) ), ('L2',dict(accept=Q.i,tooltip='length of pendulum 2 in m'), Q.Cbase.LinScalar(vmin=.1,vmax=10.,nval=1000,vtype=float,fmt=ffmt) ), ), ('ini',dict(), Q.Ctransf( partial( DoublePendulum.makestate, theta1=180., theta2=1., ) ), ('theta1',dict(accept=Q.i,tooltip='initial angle of pendulum 1 in deg'), Q.Cbase.LinScalar(vmin=-180.,vmax=180.,nval=1000,vtype=float,fmt=ffmt) ), ('theta2',dict(accept=Q.i,tooltip='initial angle of pendulum 2 in deg'), Q.Cbase.LinScalar(vmin=-180.,vmax=180.,nval=1000,vtype=float,fmt=ffmt) ), ), ('maxtime',dict(accept=Q.i,tooltip='duration of simulation in s'), Q.Cbase.LinScalar(step=1.,vmin=10.,vmax=3600.,vtype=float,fmt=ffmt) ), ('animate',dict(sel=False))+ cfg_anim( *animate, modifier=dict( timer=dict( interval=40., ), save=dict( filename='pendulum2.mp4', extra_args = ('-cache','1000000'), metadata=dict( title='A double pendulum simulation', ), ), ) ), )