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
Use process-plugin

A.7. Use process-plugin

A.7.1. C Version

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

int main(int argc, char *argv[])
{
    ra_handle ra;
    struct ra_info *inf;
    meas_handle meas;
    eval_handle eval;
    plugin_handle pl;
    struct proc_info *pi;

    /* 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 plugin-handle for hrv-plugin */
    pl = ra_plugin_get_by_name(ra, "hrv", 0);
    if (pl == NULL)
    {
        printf("can't find plugin 'hrv'\n");
        return -1;
    }

    /* calculate hrv-values using the hrv-plugin */
    pi = (struct proc_info *)ra_proc_get(pl);
    pi->mh = meas;
    pi->rh = ra_rec_get_first(meas, 0);
    pi->eh = eval;
    if (ra_proc_do(pi) == 0)
    {
        long num_results, l;
        value_handle vh;

        /* get number of results */
        vh = ra_value_malloc();
        if (ra_info_get(pl, RA_INFO_PL_NUM_RESULTS_L, vh) != 0)
        {
            printf("no results\n");
            return -1;
        }
        num_results = ra_value_get_long(vh);

        for (l = 0; l < num_results; l++)
        {
            char out[200], t[100];

            /* set number of result in which we are interested */
            ra_value_set_number(vh, l);

            /* test if result is a default value (some
               non-default results are arrays which we skip in
               this example) */
            ra_info_get(pl, RA_INFO_PL_RES_DEFAULT_L, vh);
            if (ra_value_get_long(vh) == 0)
                continue;

            out[0] = '\0';
            if (ra_info_get(pl, RA_INFO_PL_RES_NAME_C, vh) == 0)
            {
                strcpy(t, ra_value_get_string(vh));
                strcat(out, t);
            }
            if (ra_info_get(pl, RA_INFO_PL_RES_DESC_C, vh) == 0)
            {
                sprintf(t, " (%s)", ra_value_get_string(vh));
                strcat(out, t);
            }
            if (ra_proc_get_result(pi, vh) == 0)
            {
                sprintf(t, ": %lf", ra_value_get_double(vh));
                strcat(out, t);
            }

            printf("%s\n", out);
        }

        ra_value_free(vh);
    }

    /* close */
    ra_proc_free(pi);
    ra_meas_close(meas);
    ra_lib_close(ra);

    return 0;
}                               /* main() */

//

SDNN (standard deviation of normal-to-normal intervals):
30.876196
HRVI (HRV-Index): 4.800000
SDANN (standard deviation of averaged normal-to-normal
intervals): nan
rmssd (root mean of squared sucsessive differences): 33.839537
pNN50 (): 7.142857
TP (total power): 482.603096
ULF (ultra low frequency power): 0.000000
VLF (very low frequency power of short-term recordings):
32.889150
LF (low frequency power): 157.213726
LF_NORM (normalised low frequency power): 34.958606
HF (high freuqency power): 292.500220
HF_NORM (normalised high frequency power): 65.041394
LF_HF_RATIO (LF/HF ratio): 0.537482
POWER_LAW (power law behavior): 0.000000

A.7.2. Perl Version

#
use strict;
use RASCH;

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

# open measurement and get default evaluation
my $meas = $ra->open_meas($ARGV[0], 0) or
    die "can't open measurement $ARGV[0]\n";
my $eval = $meas->get_default_eval() or
    die "no evaluation in the measurement\n";

# get plugin-handle for hrv-plugin
my $pl = $ra->get_plugin_by_name('hrv') or
    die "can't find plugin 'hrv'\n";

# calculate hrv-values using the hrv-plugin
my $proc = $pl->init_process(eva => $eval) or
    die "can't initialize processing\n";
my $results = $proc->process();
# $results is a reference to an array; each array-element contains
# another array with three elements (value, name, description)
for (@$results)
{
    print $_->name() . ' (' . $_->desc() . ') = ' .
	$_->value() . "\n";
}

exit 0;
#

SDNN (standard deviation of normal-to-normal intervals) =
30.8761964330589
HRVI (HRV-Index) = 4.8
SDANN (standard deviation of averaged normal-to-normal
intervals) = nan
rmssd (root mean of squared sucsessive differences) =
33.8395373153104
pNN50 () = 7.14285714285714
TP (total power) = 482.603095556721
ULF (ultra low frequency power) = 0
VLF (very low frequency power of short-term recordings) =
32.8891498386073
LF (low frequency power) = 157.21372565195
LF_NORM (normalised low frequency power) = 34.9586058312928
HF (high freuqency power) = 292.500220066165
HF_NORM (normalised high frequency power) = 65.0413941687072
LF_HF_RATIO (LF/HF ratio) = 0.537482418359847
POWER_LAW (power law behavior) = 0
TACHO_INDEX (Event numbers used for HRV calculations) =
ARRAY(0x815add8)
USER_BAND (frequency power in a user-selected frequency band) =

A.7.3. Python Version

#
import sys
from RASCH import *

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

# open measurement and get default evaluation
meas = ra.open_meas(sys.argv[1], 0)
if not meas:
    print "can't open measurement", sys.argv[1]
    sys.exit()
eva = meas.get_def_eval()
if not eva:
    print "no evaluation in measurement"
    sys.exit()

# get plugin-handle for hrv-plugin
pl = ra.get_plugin_by_name('hrv')
if not pl:
    print "can't find plugin 'hrv'"
    sys.exit();

# calculate hrv-values using the hrv-plugin
proc = pl.init_process(eva=eva)
if not proc:
    print "can't initialize processing"
    sys.exit()
    
results = proc.process()
for item in results:
    print item[1], "("+item[2]+") =", item[0]

#

SDNN (standard deviation of normal-to-normal intervals) =
30.8761964331
HRVI (HRV-Index) = 4.8
SDANN (standard deviation of averaged normal-to-normal
intervals) = nan
rmssd (root mean of squared sucsessive differences) =
33.8395373153
pNN50 () = 7.14285714286
TP (total power) = 482.603095557
ULF (ultra low frequency power) = 0.0
VLF (very low frequency power of short-term recordings) =
32.8891498386
LF (low frequency power) = 157.213725652
LF_NORM (normalised low frequency power) = 34.9586058313
HF (high freuqency power) = 292.500220066
HF_NORM (normalised high frequency power) = 65.0413941687
LF_HF_RATIO (LF/HF ratio) = 0.53748241836
POWER_LAW (power law behavior) = 0.0
TACHO_INDEX (Event numbers used for HRV calculations) = None
USER_BAND (frequency power in a user-selected frequency band)
= None

A.7.4. Matlab/Octave Version

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

octave:1> ra=ra_lib_init
ra = 145019552
octave:2> meas=ra_meas_open(ra, '/home/rasch/ecgs/AT011030_rdi.ART', 0)
meas = 145245776
octave:3> eva=ra_eval_get_def(meas)
eva = 145613504
octave:4> pl=ra_plugin_get_by_name(ra, 'hrv', 0)
pl = 145340240
octave:5> proc=ra_proc_init(ra, meas, 0, eva, pl, 0, 0)
proc = 146187632
octave:6> ra_proc_do(proc)
ans = 0
octave:7> [v, n, d]=ra_result_get(proc);
octave:8> num=length(v)
num = 16
octave:9> for i=1:num
> printf("%s (%s) = %f\n", n(i,:), d(i,:), v{i});
> endfor
SDNN (standard deviation of normal-to-normal intervals) = 39.136515
HRVI (HRV-Index) = 10.482558
SDANN (standard deviation of averaged normal-to-normal intervals)
      = 11.164071
rmssd (root mean of squared sucsessive differences) = 27.114662
pNN50 () = 6.163243
TP (total power) = 1347.525433
ULF (ultra low frequency power) = 156.680947
VLF (very low frequency power of short-term recordings) = 491.156903
LF (low frequency power) = 513.812519
LF_NORM (normalised low frequency power) = 73.434563
HF (high freuqency power) = 185.875064
HF_NORM (normalised high frequency power) = 26.565437
LF_HF_RATIO (LF/HF ratio) = 2.764290
POWER_LAW (power law behavior) = -0.657030
TACHO_INDEX (Event numbers used for HRV calculations) = 1.000000
octave:9>