TUM-Logo

libRASCH

 

Home
 

General

About libRASCH/News
Design
Screen shots
Sample programs (with source code)
License
 

Download

libRASCH
Tools
 

Documentation

User
Developer
 

Resources

Mailing list
Supported Formats
Plugins
Status
Links
 
Contact
About this site
 
Last updated
Tue Mar 27 23:03:50 2007
Access events

A.6. Access events

A.6.1. C Version

//
#include <stdlib.h>
#include <ra.h>

int main(int argc, char *argv[])
{
    ra_handle ra;
    meas_handle meas;
    eval_handle eval;
    prop_handle prop_rri, prop_qrs_pos;
    evset_handle evset;
    long l, num_events;
    double *rri = NULL;
    double *qrs_pos = NULL;

    /* initialize libRASCH */
    ra = ra_lib_init();
    if (ra == NULL)
    {
        printf("error initializing libRASCH\n");
        return -1;
    }

    /* open measurement */
    meas = ra_meas_open(ra, argv[1], 0);
    if (meas == NULL)
    {
        printf("can't open measurement %s\n", argv[1]);
        return -1;
    }

    /* get default evaluation */
    eval = ra_eval_get_def(meas);
    if (eval == NULL)
    {
        printf("no evaluation in measurement %s\n", argv[1]);
        return -1;
    }

    /* get event-properties for RR-intervals and position of
       QRS-complex */
    prop_rri = ra_prop_get_by_name(eval, "rri");
    if (prop_rri == NULL)
    {
        printf("no event-property 'rri' in evaluation\n");
        return -1;
    }
    prop_qrs_pos = ra_prop_get_by_name(eval, "qrs-pos");
    if (prop_qrs_pos == NULL)
    {
        printf("no event-property 'qrs-pos' in evaluation\n");
        return -1;
    }

    /* get values for all RR-intervals and QRS-complexes */
    evset = ra_evset_get_by_prop(prop_rri);
    /* number of events are the same for rri and qrs-pos, because
       both belongs to the same event-set ('heartbeat') */
    num_events = ra_evset_get_num_events(evset);
    rri = malloc(sizeof(double) * num_events);
    qrs_pos = malloc(sizeof(double) * num_events);
    for (l = 0; l < num_events; l++)
    {
        rri[l] = ra_ev_get_value(prop_rri, l);
        qrs_pos[l] = ra_ev_get_value(prop_qrs_pos, l);
    }

    /* now do something with the RR-intervals and QRS-complex
       positions */

    /* clean up */
    if (rri)
        free(rri);
    if (qrs_pos)
        free(rri);

    ra_meas_close(meas);
    ra_lib_close(ra);

    return 0;
}                               /* main() */

//

A.6.2. Perl Version

#
use strict;
use RASCH;

# initialize libRASCH
my $ra = new RASCH or die "error initializing libRASCH\n";

# open measurement
my $meas = $ra->open_meas($ARGV[0], 0) or
    die "can't open measurement $ARGV[0]\n";

# get default evaluation
my $eval = $meas->get_def_eval() or
    die "no evaluation in the measurement\n";

# get event-properties for RR-intervals and position of QRS-complex
my $prop_rri = $eval->get_evprop_by_name('rri') or
    die "no event-property 'rri' in the evaluation\n";
my $prop_qrs_pos = $eval->get_evprop_by_name('qrs-pos') or
    die "no event-property 'qrs-pos' in the evaluation\n";

# get values for all RR-intervals and QRS-complexes
my $rri_ref = $prop_rri->get_events();
my $qrs_pos_ref = $prop_qrs_pos->get_events();

# now do something with the RR-intervals and QRS-complex-positions

exit 0;
#

A.6.3. Python Version

#
import sys
from RASCH import *

# initialize libRASCH
ra = RASCH()
if not ra:
    print "can't initialize libRASCH"
    sys.exit()

# open measurement
meas = ra.open_meas(sys.argv[1], 0)
if not meas:
    print "can't open measurement", sys.argv[1]
    sys.exit()

# get default evaluation
eva = meas.get_def_eval()
if not eva:
    print "no evaluation in measurement"
    sys.exit()

# get event-properties for RR-intervals and position of QRS-complexs
prop_rri = eva.get_evprop_by_name('rri')
if not prop_rri:
    print "no event-property 'rri' in the evaluation"
    sys.exit()

prop_qrs_pos = eva.get_evprop_by_name('qrs-pos')
if not prop_qrs_pos:
    print "no event-property 'qrs-pos' in the evaluation"
    sys.exit()

# get values for all RR-intervals and QRS-complexes
rri = prop_rri.get_events()
qrs_pos_ref = prop_qrs_pos.get_events()

# now do something with the RR-intervals and QRS-complex-positions

#

A.6.4. Matlab/Octave Version

rasch@rasch:~> octave
GNU Octave, version 2.1.50 (i686-pc-linux-gnu).
...

octave:1> ra=ra_lib_init
ra = 145018424
octave:2> meas=ra_meas_open(ra, '/home/rasch/ecgs/AT011030_rdi.ART', 0)
meas = 145245184
octave:3> eva=ra_eval_get_def(meas)
eva = 145612904
octave:4> prop_rri=ra_prop_get_by_name(eva, 'rri')
prop_rri = 145667632
octave:5> rri=ra_ev_get_values(prop_rri, 0, -1);
octave:6> whos rri

*** local user variables:

prot  type                       rows   cols  name
====  ====                       ====   ====  ====
 rwd  matrix                        1   1807  rri

octave:7> prop_qrs=ra_prop_get_by_name(eva, 'qrs-pos')
prop_qrs = 145613912
octave:8> qrs_pos=ra_ev_get_values(prop_qrs, 0, -1);
octave:9> whos qrs_pos

*** local user variables:

prot  type                       rows   cols  name
====  ====                       ====   ====  ====
 rwd  matrix                        1   1807  qrs_pos

octave:10> samplerate=ra_meas_get_info(meas, 'max_samplerate')
samplerate = 1600
octave:11> x=(qrs_pos/samplerate) / 60;
octave:12> plot(x, rri)
octave:13>