a MATLAB toolbox for accountable and reproducible data ... · Introduction LTPDA is a MATLAB toolbox that offers an object-oriented approach to data analysis. The user creates and

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

  • Introduction

    LTPDA is a MATLAB toolbox that offers an object-oriented approach to data analysis. The user creates and modifies different types of user objects in order to build up a signal processing pipeline. Each user object keeps a full record of all processing steps it goes through. Because of this, the full processing history of each object can be viewed at any time, and used to reproduce the object, or the processing pipeline that created it.

    Implementation

    The toolbox is implemented as a set of classes programmed in standard MATLAB. There are a number of user classes which represent objects intended to be manipulated by the user. The methods of these user classes provide the user the ability to do:

    • Signal-conditioning• Spectral-analysis• Curve-fitting and parameter

    estimation• Pole/zero modelling• State-space modelling• Dimensional analysis• Digital filtering• ... and much more.

    Due to the object-oriented design of the toolbox, script writing is vastly simplified and typically only requires the application of class methods to the objects created by the user. For example, the following code extract creates a synthetic time-series signal and then computes and plots an estimate of the power spectral density:

    a = ao(plist('waveform', 'sine wave', 'fs', 10, 'nsecs', 100));a.psda.iplot

    Running these commands yields the plot shown here:

    As well as the user objects, there are many other object classes implemented which provide the infrastructure used by the user classes.

    Centralised Data Access

    In order to provide concurrent storage and retrieval of LTPDA user objects, the toolbox has a built in client that can talk to an LTPDA server. The server is a database system that stores the LTPDA objects and a wealth of meta-data which can be used to search for specific objects.

    MySQL server

    database 1 database 2 database 3

    MATLAB client MATLAB client MATLAB client

    Tracking History

    One of the main features of the toolbox is the ability to track the full processing history of each user object. At every step of the analysis a record of the algorithm and the parameters used is attached to the processing history of each input object. In this way, a full history tree is built up. This can be used to, for example,• view the history of the object• recreate the object• produce a script/pipeline based on this

    history

    History trees can be viewed either directly in MATLAB, or using the well-known graphing application, Graphviz (http://www.graphviz.org/):

    ao

    name

    history

    version

    data

    name

    input

    histories

    version

    params

    name

    input

    histories

    version

    params

    name

    input

    histories

    version

    params

    END

    +

    +

    +

    +

    *

    set(YUNITS=

    m^2/Hz)

    set(XUNITS=

    Hz)

    set(NAME=o_nxx)

    ao(FSFCN=(3.5e-12)^...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    *

    ./

    *

    power

    abs

    -

    power

    set(NAME=omega_{d...)

    sqrt

    -

    mpower

    set(NAME=omega_3)

    ao(VALS=-0.001414213562373095)

    ao(VALS=2)

    mpower

    set(NAME=omega_1)

    ao(VALS=-0.001140175425099138)

    ao(VALS=2)

    ao(VALS=2)

    *

    set(NAME=delta)

    ao(VALS=-0.0001)

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=S_{sus})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w1)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    -

    +

    ao(VALS=1) power

    abs

    set(NAME=S_{df})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    .*

    ao(VALS=2) real

    set(NAME=S_{df})

    resp(F=[1.0000000000000001e-05

    2 ...])

    *

    set(YUNITS=

    m^2/Hz)

    set(XUNITS=

    Hz)

    set(NAME=o_nxx)

    ao(FSFCN=(3.5e-12)^...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    power

    abs

    set(NAME=S_{sus})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    ./

    *

    set(YUNITS=

    m^2s^{-4}/...)

    set(XUNITS=

    Hz)

    set(NAME=A_1xx)

    *

    ao(VALS=8.9999999999999996e-28) ./

    +

    ./

    ao(VALS=1)

    ao(FSFCN=(1

    + (f./1...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    *

    ./

    ao(VALS=9000001)

    ao(FSFCN=(1

    + (f./1...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    +

    ao(VALS=1) ./

    ao(VALS=1000001.0000000002)

    ao(FSFCN=(1

    + (f./0...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    ao(VALS=10.089992009007998)

    power

    abs

    set(NAME=S_{sus})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    *

    set(YUNITS=

    m^2s^{-4}/...)

    set(XUNITS=

    Hz)

    set(NAME=A_1xx)

    *

    ao(VALS=8.9999999999999996e-28) ./

    +

    ./

    ao(VALS=1)

    ao(FSFCN=(1

    + (f./1...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    *

    ./

    ao(VALS=9000001)

    ao(FSFCN=(1

    + (f./1...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    +

    ao(VALS=1) ./

    ao(VALS=1000001.0000000002)

    ao(FSFCN=(1

    + (f./0...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    ao(VALS=10.089992009007998)

    *

    ./

    power

    abs

    set(NAME=S_{sus})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    +

    +

    ./

    *

    power

    abs

    -

    power

    set(NAME=omega_{d...)

    sqrt

    -

    mpower

    set(NAME=omega_3)

    ao(VALS=-0.001414213562373095)

    ao(VALS=2)

    mpower

    set(NAME=omega_1)

    ao(VALS=-0.001140175425099138)

    ao(VALS=2)

    ao(VALS=2)

    *

    set(NAME=delta)

    ao(VALS=-0.0001)

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=S_{df})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w1)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    .*

    ao(VALS=2) real

    ./

    *

    -

    power

    set(NAME=omega_{d...)

    sqrt

    -

    mpower

    set(NAME=omega_3)

    ao(VALS=-0.001414213562373095)

    ao(VALS=2)

    mpower

    set(NAME=omega_1)

    ao(VALS=-0.001140175425099138)

    ao(VALS=2)

    ao(VALS=2)

    *

    set(NAME=delta)

    ao(VALS=-0.0001)

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    set(NAME=S_{df})

    resp(F=[1.0000000000000001e-05

    2 ...])

    set(NAME=w1)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=1)

    *

    set(YUNITS=

    m^2s^{-4}/...)

    set(XUNITS=

    Hz)

    set(NAME=A_nxx)

    *

    ao(VALS=5.2604999579159996e-20) +

    ./

    ao(VALS=1)

    ao(FSFCN=1

    + (f./10...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    *

    ./

    ao(VALS=100000001)

    ao(FSFCN=1

    + (f/1e-...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    +

    ao(VALS=1) ./

    ao(VALS=1000001.0000000002)

    ao(FSFCN=1

    + (f/0.1...,

    F=[1.0000000000000001e-05;2

    ...], F1=1.0000000000000001e-09,

    F2=100, NF=

    1000, SCALE=

    log)

    ./

    ./

    *

    *

    power

    abs

    -

    power

    set(NAME=omega_{d...)

    sqrt

    -

    mpower

    set(NAME=omega_3)

    ao(VALS=-0.001414213562373095)

    ao(VALS=2)

    mpower

    set(NAME=omega_1)

    ao(VALS=-0.001140175425099138)

    ao(VALS=2)

    ao(VALS=2)

    *

    set(NAME=delta)

    ao(VALS=-0.0001)

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=S_{df})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=S_{sus})

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w1)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    power

    abs

    set(NAME=w3)

    resp(F=[1.0000000000000001e-05

    2 ...])

    ao(VALS=2)

    User Objects

    The user objects form the core of the toolbox’s capabilities. The following classes of user object are implemented:

    Each user object can be saved and loaded from disk in an XML format, and submitted and retrieved to/from and LTPDA repository.

    l tpda_obj

    ltpda_uoltpda_nuo

    his toryt ime provenance p l i s tparamdata

    data2D

    data3D

    xyzdata

    fsdatatsdataxydata

    p z

    t imespan

    m f i rm i i r

    specwin

    pzmodel

    m in fo

    aof i l t e r

    l tpda_uoh

    ssm

    LTPDAa MATLAB toolbox for accountable and reproducible data analysis

    M Hewitson for the LTP team

    class description

    ao Analysis objects containing time-series, frequency-series, x-y data series, vectors or matrices

    plist Parameter lists for configuring algorithms.

    ssm State-space model objects

    miir IIR digital filter representation

    mfir FIR digital filter representation

    pzmodel Transfer function representation as S-domain poles and zeros

    rational Transfer function represented as a rational function of S

    parfrac Partial fraction representation of transfer functions

    timespan Representation of an interval of time

    http://www.lisa.aei-hannover.de/ltpda/

    !"#$#"%&'(#)#(*+,$*,#-./,#!#&00#123+*40#5,4/.63789,/6*,/

    :(#9,4/.63#/,04;,/

    :$40

    "%&'(#*.??4$/

    -@(89,/6*,/

    "%&'(#*.??4$/

    %#?27

    A-&*3643+.$#B*2089,/6*,/

    "%&'(#*.??4$/

    "+73#%#A-&*3

    %#A-&*3

    C@%#";$4?+*789,/6*,/

    %#?27

    "+73#%#-@(

    %#A-&*3

    "+73#%#7.049

    "+73#%#+$