[med-svn] [SCM] aghermann branch, master, updated. 3b87b4f8039ed683022537a0599b7dea069974d2
Andrei Zavada
johnhommer at gmail.com
Sun Sep 30 22:40:55 UTC 2012
The following commit has been merged in the master branch:
commit 3b87b4f8039ed683022537a0599b7dea069974d2
Author: Andrei Zavada <johnhommer at gmail.com>
Date: Mon Oct 1 01:40:16 2012 +0300
fix towards accurate page count (mainly CSCourse issue)
diff --git a/ChangeLog b/ChangeLog
index 0947c4b..35b4b66 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+v. 0.7.2 (2012-..-..)
+ * Tolerate size_t division arith off-by-ones when contructing
+ profiles (just don't crash on this);
+ * Enable omp for mass profile constructions & other heavy
+ operations;
+ * Correctly do status bar updates on tree rescan;
+ * configure: don't require gcc >= 4.7.1;
+ * MF: preserve tunables when reopening a previous model run;
+ *
+
v. 0.7.1 (2012-09-23)
* Apply window to taper edges before taking FFT.
* Fix startup when user has moved last-used dir between sessions.
diff --git a/src/expdesign/recording.cc b/src/expdesign/recording.cc
index 29eb844..1bf0d29 100644
--- a/src/expdesign/recording.cc
+++ b/src/expdesign/recording.cc
@@ -101,7 +101,8 @@ CSCourse (CSubject& J, const string& d, const sigfile::SChannel& h,
}
int pa = (size_t)difftime( F.start_time(), _0at) / _pagesize,
- pz = (size_t)difftime( F.end_time(), _0at) / _pagesize;
+// pz = (size_t)difftime( F.end_time(), _0at) / _pagesize;
+ pz = pa + F.length_in_seconds() / _pagesize;
// anchor zero page, get pagesize from edf^W CBinnedPower^W either goes
printf( "CSCourse::CSCourse(): adding %s of [%s, %s, %s] %zu pages (%d indeed) recorded %s",
sigfile::metric_method(params._profile_type), F.subject(), F.session(), F.episode(),
diff --git a/src/libsigfile/edf.hh b/src/libsigfile/edf.hh
index f802b5c..ed2c76b 100644
--- a/src/libsigfile/edf.hh
+++ b/src/libsigfile/edf.hh
@@ -109,9 +109,9 @@ class CEDFFile
{
return _end_time;
}
- double recording_time() const // in seconds
+ time_t recording_time() const // in seconds
{
- return (double) (n_data_records * data_record_size);
+ return n_data_records * data_record_size;
}
// setters
diff --git a/src/libsigfile/edf.ii b/src/libsigfile/edf.ii
index 4680604..818f722 100644
--- a/src/libsigfile/edf.ii
+++ b/src/libsigfile/edf.ii
@@ -168,7 +168,7 @@ put_region_( A h,
if ( unlikely (offset >= samplerate(h) * recording_time()) )
throw range_error("CEDFFile::put_region_(): offset beyond end of file");
if ( unlikely (offset + src.size() > samplerate(h) * recording_time()) ) {
- fprintf( stderr, "CEDFFile::put_region_(): attempt to write past end of file (%zu + %zu > %zu * %g)\n",
+ fprintf( stderr, "CEDFFile::put_region_(): attempt to write past end of file (%zu + %zu > %zu * %lu)\n",
offset, src.size(), samplerate(h), recording_time());
throw range_error("CEDFFile::put_region_(): attempt to write past end of file");
}
diff --git a/src/libsigfile/source-base.hh b/src/libsigfile/source-base.hh
index a005702..5b3c47f 100644
--- a/src/libsigfile/source-base.hh
+++ b/src/libsigfile/source-base.hh
@@ -201,7 +201,7 @@ class CSource_base {
// recording time and duration
virtual const time_t& start_time() const = 0;
virtual const time_t& end_time() const = 0;
- virtual double recording_time() const = 0;
+ virtual time_t recording_time() const = 0;
// channels
virtual size_t n_channels() const = 0;
diff --git a/src/libsigfile/source.cc b/src/libsigfile/source.cc
index 54a8b72..c2cc556 100644
--- a/src/libsigfile/source.cc
+++ b/src/libsigfile/source.cc
@@ -39,12 +39,12 @@ CSource (const char* fname,
if ( flags | ~no_ancillary_files ) {
// CHypnogram::
CHypnogram::load( sigfile::make_fname_hypnogram(fname, pagesize));
- size_t scorable_pages = _obj->recording_time() / pagesize; // implicit floor
+ size_t scorable_pages = ceil( (double)_obj->recording_time() / pagesize); // implicit floor
if ( CHypnogram::pages() != scorable_pages ) {
- // if ( CHypnogram::length() > 0 )
- // fprintf( stderr, "CEDFFile(\"%s\"): number of scorable pages @pagesize=%zu (%zu) "
- // "differs from the number read from hypnogram file (%zu); discarding hypnogram\n",
- // fname, pagesize, scorable_pages, CHypnogram::length());
+ if ( CHypnogram::pages() > 0 )
+ fprintf( stderr, "CSource(\"%s\"): number of scorable pages @pagesize=%zu (%lu / %zu = %zu) "
+ "differs from the number read from hypnogram file (%zu); adjusting hypnogram size\n",
+ fname, pagesize, _obj->recording_time(), pagesize, scorable_pages, CHypnogram::pages());
CHypnogram::_pages.resize( scorable_pages);
}
}
--
Sleep experiment manager
More information about the debian-med-commit
mailing list