Пример #1
0
def runui():
#--------------------------------------------------------------------------------------------------
    from animate import launchui
    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 axes(view):
        view.figure.set_size_inches((8,12),forward=True)
        view.make_grid(2,1)
        return view[0,0].make_axes(),view[1,0].make_axes()
    launchui(config,axes=axes,width=600)
Пример #2
0
def runui():
#--------------------------------------------------------------------------------------------------
    from animate import launchui
    from myutil import set_qtbinding; set_qtbinding('pyqt4')  
    datasection = testdatagenerator().configurator
    def config(*animate):
        from myutil import quickui
        GPRegrTypes = (
            ('constant',None),
            ('linear',None),
            ('quadratic',None),
            )
        GPKernels = (
            ('absolute_exponential','exp(-theta|d|)'),
            ('squared_exponential','exp(-theta|d|^2)'),
            #'generalized_exponential',
            ('cubic',None),
            ('linear',None),
            )
        def GPconv(regr=None,corr=None,**ka):
            return GP(regr=GPRegrTypes[regr][0],corr=GPKernels[corr][0],**ka)
        Q = quickui.cbook
        return quickui.configuration(
            Q.Ctransf(partial(dict,logscale=False,nsample=100,clevel=.95,gpmean=False)),
            ('syst',dict(anchor=True),Q.Ctransf(partial(GPconv,regr=2,corr=1,theta0=.1,thetaL_r=.01,thetaU_r=100.,nugget=.01,random_start=1)),
             datasection(),
             ('regr',dict(accept=Q.i,tooltip='Regression type'),Q.Cbase.Set(options=GPRegrTypes)),
             ('corr',dict(accept=Q.i,tooltip='GP kernel'),Q.Cbase.Set(options=GPKernels)),
             ('nugget',dict(accept=Q.i,tooltip='Tychonov regularisation'),Q.Cbase.LogScalar(vmin=.0001,vmax=1000)),
             ('theta0',dict(accept=Q.i,tooltip='Larger means faster decrease of prior correlation when distance increases'),Q.Cbase.LogScalar(vmin=.001,vmax=10.)),
             ('thetaL_r',dict(accept=Q.i,tooltip='Ratio to theta0 of lower bound of parameter space exploration'),Q.Cbase.LogScalar(vmin=.001,vmax=1.)),
             ('thetaU_r',dict(accept=Q.i,tooltip='Ratio to theta0 of upper bound of parameter space exploration'),Q.Cbase.LogScalar(vmin=1.,vmax=1000.)),
             ('random_start',dict(accept=Q.i,tooltip='number of MLE repeats from randomly chosen initialisation'),Q.Cbase.LinScalar(vtype=int,vmin=1,vmax=10)),
             ),
            ('clevel',dict(accept=Q.i,tooltip='Confidence level'),Q.Cbase.LinScalar(vtype=float,vmin=.9,vmax=.9999)),
            ('gpmean',dict(accept=Q.i,sel=None,tooltip='Check to show GP mean (linear combination of basis functions)'),Q.Cbase.Boolean(),),
            ('nsample',dict(accept=Q.i,tooltip='Number of test samples'),Q.Cbase.LinScalar(vtype=int,vmin=50,vmax=500)),
            ('logscale',dict(accept=Q.i,sel=None,tooltip='Check for x-axis in logscale'),Q.Cbase.Boolean(),),
            )
    launchui(config,width=800)
Пример #3
0
def runui():
#--------------------------------------------------------------------------------------------------
    from animate import launchui
    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',
                    ),
                  ),
                )
               ),
            )
    launchui(config,width=600)
Пример #4
0
def runui():
#--------------------------------------------------------------------------------------------------
    from animate import launchui
    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',
                    ),
                  ),
                )
               ),
            )
    launchui(config,width=800)
Пример #5
0
def runui():
    from animate import launchui
    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',
                    ),
                  ),
                )
               ),
            )
    launchui(test,width=600)