The following commit has been merged in the master branch:
commit 004d57ff90777c6630da1656b2277d34c530f7cc
Author: Andrei Zavada <[email protected]>
Date:   Mon Jul 15 01:14:39 2013 +0300

    properly rename metrics::pages() to steps(), correctly compute steps()

diff --git a/src/aghermann/ui/sf/channel.cc b/src/aghermann/ui/sf/channel.cc
index e15cd0d..154c580 100644
--- a/src/aghermann/ui/sf/channel.cc
+++ b/src/aghermann/ui/sf/channel.cc
@@ -227,7 +227,7 @@ get_psd_in_bands()
 {
        crecording.psd_profile.compute();
        if ( resample_power ) {
-               auto xi = vector<size_t> (crecording.psd_profile.pages());
+               auto xi = vector<size_t> (crecording.psd_profile.steps());
                for ( size_t i = 0; i < xi.size(); ++i )
                        xi[i] = i;
                for ( size_t b = 0; b <= psd.uppermost_band; ++b ) {
diff --git a/src/libmetrics/mc.cc b/src/libmetrics/mc.cc
index edf2031..82b3fed 100644
--- a/src/libmetrics/mc.cc
+++ b/src/libmetrics/mc.cc
@@ -75,7 +75,7 @@ int
 metrics::mc::CProfile::
 go_compute()
 {
-       _data.resize( pages() * _bins);
+       _data.resize( steps() * _bins);
        auto S = _using_F().get_signal_filtered( _using_sig_no);
        for ( size_t b = 0; b < bins(); ++b ) {
                auto su_ss = metrics::mc::do_sssu_reduction(
@@ -87,7 +87,7 @@ go_compute()
                        Pp.bandwidth);
                auto suss = su_ss.first - su_ss.second;  // make it positive
 
-               for ( size_t p = 0; p < pages(); ++p )
+               for ( size_t p = 0; p < steps(); ++p )
                        nmth_bin(p, b) =
                                agh::alg::value_within( suss[p], (TFloat)0., 
(TFloat)INFINITY);
        }
@@ -124,12 +124,12 @@ export_tsv( const string& fname) const
                 _using_F().subject().name.c_str(), _using_F().session(), 
_using_F().episode(),
                 (int)strlen(asctime_)-1, asctime_,
                 _using_F().channel_by_id(_using_sig_no).name(),
-                pages(), Pp.pagesize, Pp.step, Pp.freq_from, Pp.freq_from + 
Pp.bandwidth * bins(), Pp.bandwidth);
+                steps(), Pp.pagesize, Pp.step, Pp.freq_from, Pp.freq_from + 
Pp.bandwidth * bins(), Pp.bandwidth);
 
        for ( bin = 0; bin < _bins; ++bin, bum += Pp.bandwidth )
                fprintf( f, "%g%c", bum, bin+1 == _bins ? '\n' : '\t');
 
-       for ( p = 0; p < pages(); ++p ) {
+       for ( p = 0; p < steps(); ++p ) {
                fprintf( f, "%zu", p);
                for ( bin = 0; bin < _bins; ++bin )
                        fprintf( f, "\t%g", nmth_bin( p, bin));
@@ -158,9 +158,9 @@ export_tsv( size_t bin,
                 _using_F().subject().name.c_str(), _using_F().session(), 
_using_F().episode(),
                 (int)strlen(asctime_)-1, asctime_,
                 _using_F().channel_by_id(_using_sig_no).name(),
-                pages(), Pp.pagesize, Pp.step, Pp.freq_from, Pp.freq_from + 
(bin+1) * Pp.bandwidth);
+                steps(), Pp.pagesize, Pp.step, Pp.freq_from, Pp.freq_from + 
(bin+1) * Pp.bandwidth);
 
-       for ( size_t p = 0; p < pages(); ++p )
+       for ( size_t p = 0; p < steps(); ++p )
                fprintf( f, "%zu\t%g\n", p, nmth_bin(p, bin));
 
        fclose( f);
diff --git a/src/libmetrics/page-metrics-base.cc 
b/src/libmetrics/page-metrics-base.cc
index cd2ac81..6de2003 100644
--- a/src/libmetrics/page-metrics-base.cc
+++ b/src/libmetrics/page-metrics-base.cc
@@ -50,9 +50,9 @@ samplerate() const
 
 size_t
 metrics::CProfile::
-pages() const
+steps() const
 {
-       return _using_F().recording_time() / Pp.step;
+       return (_using_F().recording_time() - Pp.pagesize) / Pp.step;
 }
 
 
@@ -187,7 +187,7 @@ mirror_back( const string& fname)
        try {
                if ( (fd = open( fname.c_str(), O_RDONLY)) == -1 )
                        throw -1;
-               _data.resize( pages() * _bins);
+               _data.resize( steps() * _bins);
                if ( read( fd, &_data[0], _data.size() * sizeof(TFloat))
                     != (ssize_t)(_data.size() * sizeof(TFloat)) )
                        throw -2;
@@ -231,7 +231,7 @@ export_tsv( const string& fname) const
        for ( bin = 0; bin < _bins; ++bin )
                fprintf( f, "%zu%c", bin, bin+1 == _bins ? '\n' : '\t');
 
-       for ( p = 0; p < pages(); ++p ) {
+       for ( p = 0; p < steps(); ++p ) {
                fprintf( f, "%zu", p);
                for ( bin = 0; bin < _bins; ++bin )
                        fprintf( f, "\t%g", nmth_bin( p, bin));
diff --git a/src/libmetrics/page-metrics-base.hh 
b/src/libmetrics/page-metrics-base.hh
index 0fffa3d..219ce0a 100644
--- a/src/libmetrics/page-metrics-base.hh
+++ b/src/libmetrics/page-metrics-base.hh
@@ -107,7 +107,7 @@ class CProfile {
                        return _bins;
                }
 
-       size_t pages() const;
+       size_t steps() const; // overlapping pages
        size_t samplerate() const;
 
       // accessors
@@ -136,7 +136,7 @@ class CProfile {
        // in a bin
        valarray<TFloat> course( size_t m) const
                {
-                       return _data[ slice(m, pages(), _bins) ];
+                       return _data[ slice(m, steps(), _bins) ];
                }
 
        valarray<TFloat> spectrum( size_t p) const
diff --git a/src/libmetrics/psd.cc b/src/libmetrics/psd.cc
index 9a1399a..ed45f6f 100644
--- a/src/libmetrics/psd.cc
+++ b/src/libmetrics/psd.cc
@@ -93,7 +93,7 @@ int
 metrics::psd::CProfile::
 go_compute()
 {
-       _data.resize( pages() * _bins);
+       _data.resize( steps() * _bins);
 
        size_t  sr = samplerate();
        size_t  spp = sr * Pp.pagesize,
@@ -165,7 +165,8 @@ go_compute()
                W[ slice(window/2, spp-window, 1) ] = wfun( window/2, window);
        }
 
-       for ( p = 0; p < pages(); ++p ) {
+       for ( p = 0; p < steps(); ++p ) {
+               // assert (p * sps + spp < S.size());
                memcpy( fft_Ti, &S[p * sps], spp * sizeof(double));
                for ( size_t s = 0; s < spp; ++s )
                        fft_Ti[s] *= W[s];
@@ -226,12 +227,12 @@ export_tsv( const string& fname) const
                 _using_F().subject().name.c_str(), _using_F().session(), 
_using_F().episode(),
                 (int)strlen(asctime_)-1, asctime_,
                 _using_F().channel_by_id(_using_sig_no).name(),
-                pages(), Pp.pagesize, Pp.step, _bins*Pp.binsize, Pp.binsize);
+                steps(), Pp.pagesize, Pp.step, _bins*Pp.binsize, Pp.binsize);
 
        for ( bin = 0; bin < _bins; ++bin, bum += Pp.binsize )
                fprintf( f, "%g%c", bum, bin+1 == _bins ? '\n' : '\t');
 
-       for ( p = 0; p < pages(); ++p ) {
+       for ( p = 0; p < steps(); ++p ) {
                fprintf( f, "%zu", p);
                for ( bin = 0; bin < _bins; ++bin )
                        fprintf( f, "\t%g", nmth_bin( p, bin));
@@ -262,10 +263,10 @@ export_tsv( float from, float upto,
                 _using_F().subject().name.c_str(), _using_F().session(), 
_using_F().episode(),
                 (int)strlen(asctime_)-1, asctime_,
                 _using_F().channel_by_id(_using_sig_no).name(),
-                pages(), Pp.pagesize, Pp.step, from, upto);
+                steps(), Pp.pagesize, Pp.step, from, upto);
 
        valarray<TFloat> crs = course( from, upto);
-       for ( size_t p = 0; p < pages(); ++p )
+       for ( size_t p = 0; p < steps(); ++p )
                fprintf( f, "%zu\t%g\n", p, crs[p]);
 
        fclose( f);
diff --git a/src/libmetrics/psd.hh b/src/libmetrics/psd.hh
index b51bba9..76732da 100644
--- a/src/libmetrics/psd.hh
+++ b/src/libmetrics/psd.hh
@@ -146,7 +146,7 @@ class CProfile
        // in a frequency range
        valarray<TFloat> course( double from, double upto) const
                {
-                       valarray<TFloat> acc (0., pages());
+                       valarray<TFloat> acc (0., steps());
                        size_t  bin_a = min( (size_t)(from / Pp.binsize), 
_bins),
                                bin_z = min( (size_t)(upto / Pp.binsize), 
_bins);
                        for ( size_t b = bin_a; b < bin_z; ++b )
diff --git a/src/libmetrics/swu.cc b/src/libmetrics/swu.cc
index bebd01a..a5d7969 100644
--- a/src/libmetrics/swu.cc
+++ b/src/libmetrics/swu.cc
@@ -69,12 +69,12 @@ int
 metrics::swu::CProfile::
 go_compute()
 {
-       _data.resize( pages() * _bins);
+       _data.resize( steps() * _bins);
 
        auto dS = sigproc::derivative(
                _using_F().get_signal_filtered( _using_sig_no));
 
-       for ( size_t p = 0; p < pages(); ++p ) {
+       for ( size_t p = 0; p < steps(); ++p ) {
                auto    a = p * (samplerate() * Pp.step),
                        z = a + (samplerate() * Pp.pagesize);
                auto    la = a, lz = a;
@@ -131,9 +131,9 @@ export_tsv( const string& fname) const
                 _using_F().subject().name.c_str(), _using_F().session(), 
_using_F().episode(),
                 (int)strlen(asctime_)-1, asctime_,
                 _using_F().channel_by_id(_using_sig_no).name(),
-                pages(), Pp.pagesize, Pp.step);
+                steps(), Pp.pagesize, Pp.step);
 
-       for ( size_t p = 0; p < pages(); ++p )
+       for ( size_t p = 0; p < steps(); ++p )
                fprintf( f, "%zu\t%g\n", p, nmth_bin( p, 0));
 
        fclose( f);

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to