[med-svn] [SCM] aghermann branch, master, updated. 3b8a63cca9e297a548ea6094bd42a016ecec03b8
Andrei Zavada
johnhommer at gmail.com
Thu Dec 20 13:04:53 UTC 2012
The following commit has been merged in the master branch:
commit 72d1a3255ced25be0f485990217e6471417ffb30
Author: Andrei Zavada <johnhommer at gmail.com>
Date: Thu Dec 20 14:34:06 2012 +0200
edfcat: determine from input data and set physical_min/max fields
diff --git a/ChangeLog b/ChangeLog
index daa4acd..fc3cd99 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
-v.0.7.6 (2012-12-xx)
+v.0.7.6 (2012-12-20)
* Don't forget to save some .expdesign.conf settings.
* Purge cached profiles on version upgrade.
+ * Correctly set OMP max threads.
+ * edfcat conv: set physical_min/max.
v.0.7.5.1 (2012-12-04)
* Fix Ububtu build.
diff --git a/data/dialogs.glade b/data/dialogs.glade
index f01e4e8..e330e51 100644
--- a/data/dialogs.glade
+++ b/data/dialogs.glade
@@ -328,7 +328,7 @@
<property name="xalign">0</property>
<property name="xpad">5</property>
<property name="ypad">15</property>
- <property name="label" translatable="yes"><b><big><big>Aghermann 0.7.5.1</big></big></b> Bye-bye StrikeAd
+ <property name="label" translatable="yes"><b><big><big>Aghermann 0.7.6</big></big></b>
<a href="http://johnhommer.com/academic/code/aghermann">johnhommer.com/academic/code/aghermann</a></property>
<property name="use_markup">True</property>
</object>
@@ -424,7 +424,14 @@ With bug reports, either send yours to <a href="mailto:aghermann-users at lists.
<property name="yalign">0</property>
<property name="xpad">10</property>
<property name="ypad">10</property>
- <property name="label"><big><b>v. 0.7.5.1</b></big> (2012-12-04)
+ <property name="label"><big><b>v. 0.7.6</b></big> (2012-12-20)
+<span font="monospace">
+ * Don't forget to save some .expdesign.conf settings.
+ * Purge cached profiles on version upgrade.
+ * Correctly set OMP max threads.
+ * edfcat conv: set physical_min/max.
+</span>
+<big><b>v. 0.7.5.1</b></big> (2012-12-04)
<span font="monospace">
* Fix Ubuntu build.
</span>
@@ -435,10 +442,7 @@ With bug reports, either send yours to <a href="mailto:aghermann-users at lists.
* Fix SF Find dialog wrt search in a changed
field channel.
</span>
-<big><b>v. 0.7.4</b></big>
-<span font="monospace">
- * PSD: don't apply windowing function twice (deeply sorry about that!).
-</span>
+
(for older entries, see <a href="http://johnhommer.com/academic/code/aghermann">full changelog</a>)</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
diff --git a/man/edfcat.1.in b/man/edfcat.1.in
index 2c28f37..097f978 100644
--- a/man/edfcat.1.in
+++ b/man/edfcat.1.in
@@ -14,7 +14,13 @@ samplerate), and (2) channel pruning.
.TP
conv \fBFILE.ascii\fR \fBSAMPLERATE\fR \fBRECORD_SIZE\fR
Convert samples in \fBFILE.ascii\fR into \fBFILE.ascii.edf\fR.
-Multiple columns in the source file will be converted as individual channels.
+Multiple columns in the source file will be converted as individual
+channels.
+
+On success, physical_min/max in each channel will be set to the
+absolute min/max of all channel data, widened symmetrically to
+whichever boundary is farther from 0 (thus, a range of \-2:3 becomes
+\-3:3, as will \-3:2).
.TP
prune \fBFILE.edf\fR \fBN1[,N2,...]\fR
Create a copy of source file (FILE-mod.edf) only keeping channels
diff --git a/src/common/alg.hh b/src/common/alg.hh
index d692698..692ce22 100644
--- a/src/common/alg.hh
+++ b/src/common/alg.hh
@@ -114,7 +114,12 @@ struct SSpan {
-
+template <typename T>
+int
+sign( T x)
+{
+ return (x > 0) ? 1 : (x == 0) ? 0 : -1;
+}
template <typename T>
diff --git a/src/tools/edfcat.cc b/src/tools/edfcat.cc
index b687bd7..c3e14a0 100644
--- a/src/tools/edfcat.cc
+++ b/src/tools/edfcat.cc
@@ -261,16 +261,42 @@ out:
double length = (double)total_samples/obj.samplerate;
printf( "Read %zu samples (%g sec) in %zu channel(s)\n", total_samples, length, columns);
+ // determine physical min/max
+ vector<pair<double, double>> phys_ranges (columns);
+ double grand_min = INFINITY, grand_max = -INFINITY;
+ printf( "Physical min/max in channels:\n");
+ for ( i = 0; i < columns; ++i ) {
+ phys_ranges[i] = {data[i].min(), data[i].max()};
+ printf( "%zu\t%g\t%g\n",
+ i+1, phys_ranges[i].first, phys_ranges[i].second);
+ if ( grand_min > phys_ranges[i].first )
+ grand_min = phys_ranges[i].first;
+ if ( grand_max < phys_ranges[i].second )
+ grand_max = phys_ranges[i].second;
+ }
+ grand_min = (grand_min < 0.) ? floor(grand_min) : ceil(grand_min); // away from 0
+ grand_max = (grand_max < 0.) ? floor(grand_max) : ceil(grand_max);
+ if ( agh::alg::sign(grand_max) != agh::alg::sign(grand_min) ) {
+ if ( -grand_min > grand_max )
+ grand_max = -grand_min;
+ else
+ grand_min = -grand_max;
+ }
+ printf( "Setting physical_min/max to %g:%g\n",
+ grand_min, grand_max);
+
sigfile::CEDFFile F ((obj + ".edf").c_str(),
sigfile::CSource::no_ancillary_files,
make_channel_headers_for_CEDFFile( columns, "channel%zu", obj.samplerate),
obj.record_size,
ceilf(length / obj.record_size));
-// F.resize( data.size() / obj.samplerate / obj.record_size);
- for ( size_t f = 0; f < columns; ++f )
+ for ( size_t f = 0; f < columns; ++f ) {
F.put_signal( f, valarray<TFloat> {data[f][slice (0, total_samples, 1)]});
+ F[f].set_physical_range( grand_min, grand_max);
+ }
+
printf( "Created edf:\n%s\n"
- "\nYou may now want to fill out the header of the newly created EDF file.\n"
+ "You may now want to fill out the header of the newly created EDF file.\n"
"Use edfhed --set ... to do so, or run edfhed-gtk.\n", F.details().c_str());
return 0;
--
Sleep experiment manager
More information about the debian-med-commit
mailing list