[med-svn] [aghermann] 11/85: separate struct SScoringFacility::SChannel into own sf/channel.hh
andrei zavada
hmmr-guest at alioth.debian.org
Thu Sep 26 23:46:23 UTC 2013
This is an automated email from the git hooks/post-receive script.
hmmr-guest pushed a commit to branch master
in repository aghermann.
commit 7dea678d785707947cd6a47f8e99a218632be8ff
Author: Andrei Zavada <johnhommer at gmail.com>
Date: Sat Sep 7 01:46:19 2013 +0300
separate struct SScoringFacility::SChannel into own sf/channel.hh
---
upstream/src/aghermann/patterns/Makefile.am | 1 +
upstream/src/aghermann/patterns/forward-decls.hh | 32 ++
upstream/src/aghermann/patterns/patterns.hh | 30 +-
upstream/src/aghermann/ui/mw/mainmenu_cb.cc | 1 +
upstream/src/aghermann/ui/sf/Makefile.am | 1 +
upstream/src/aghermann/ui/sf/channel.cc | 2 +
upstream/src/aghermann/ui/sf/channel.hh | 374 ++++++++++++++++++++
upstream/src/aghermann/ui/sf/d/artifacts-simple.hh | 2 +-
upstream/src/aghermann/ui/sf/d/artifacts.cc | 1 +
upstream/src/aghermann/ui/sf/d/artifacts_cb.cc | 3 +-
.../src/aghermann/ui/sf/d/filters-construct.cc | 2 +-
upstream/src/aghermann/ui/sf/d/filters.cc | 1 +
upstream/src/aghermann/ui/sf/d/filters_cb.cc | 2 +-
.../src/aghermann/ui/sf/d/patterns-construct.cc | 1 +
upstream/src/aghermann/ui/sf/d/patterns-draw.cc | 3 +-
.../src/aghermann/ui/sf/d/patterns-profiles.cc | 3 +-
.../src/aghermann/ui/sf/d/patterns-profiles_cb.cc | 1 +
upstream/src/aghermann/ui/sf/d/patterns.cc | 2 +-
upstream/src/aghermann/ui/sf/d/patterns_cb.cc | 3 +-
.../src/aghermann/ui/sf/d/phasediff-construct.cc | 2 +-
upstream/src/aghermann/ui/sf/d/phasediff.cc | 3 +-
upstream/src/aghermann/ui/sf/d/phasediff_cb.cc | 3 +-
upstream/src/aghermann/ui/sf/hypnogram.cc | 2 +
upstream/src/aghermann/ui/sf/ica.cc | 1 +
upstream/src/aghermann/ui/sf/mainmenu_cb.cc | 2 +
upstream/src/aghermann/ui/sf/montage-overlays.cc | 3 +-
upstream/src/aghermann/ui/sf/montage.cc | 3 +-
upstream/src/aghermann/ui/sf/montage_cb.cc | 3 +-
upstream/src/aghermann/ui/sf/sf.cc | 22 +-
upstream/src/aghermann/ui/sf/sf.hh | 349 +-----------------
upstream/src/aghermann/ui/sf/sf_cb.cc | 1 +
upstream/src/libsigfile/forward-decls.hh | 4 +
upstream/src/libsigfile/source-base.hh | 13 +-
33 files changed, 509 insertions(+), 367 deletions(-)
diff --git a/upstream/src/aghermann/patterns/Makefile.am b/upstream/src/aghermann/patterns/Makefile.am
index 29e2fe0..a32f72d 100644
--- a/upstream/src/aghermann/patterns/Makefile.am
+++ b/upstream/src/aghermann/patterns/Makefile.am
@@ -5,6 +5,7 @@ AM_CXXFLAGS := \
noinst_LIBRARIES := liba.a
liba_a_SOURCES := \
+ forward-decls.hh \
patterns.cc patterns.hh patterns.ii
# EXTRA_DIST := \
diff --git a/upstream/src/aghermann/patterns/forward-decls.hh b/upstream/src/aghermann/patterns/forward-decls.hh
new file mode 100644
index 0000000..0078781
--- /dev/null
+++ b/upstream/src/aghermann/patterns/forward-decls.hh
@@ -0,0 +1,32 @@
+/*
+ * File name: aghermann/patterns/forward-decls.hh
+ * Project: Aghermann
+ * Author: Andrei Zavada <johnhommer at gmail.com>
+ * Initial version: 2013-09-07
+ *
+ * Purpose:
+ *
+ * License: GPL
+ */
+
+#ifndef SIGPROC_PATTERNS_FORWARD_DECLS_H_
+#define SIGPROC_PATTERNS_FORWARD_DECLS_H_
+
+namespace pattern {
+
+template <typename T> class CMatch;
+template <typename T> struct SPatternPPack;
+template <typename T> class CPatternTool;
+template <typename T> struct SPattern;
+
+} // namespace pattern
+
+
+#endif
+
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: nil
+// tab-width: 8
+// c-basic-offset: 8
+// End:
diff --git a/upstream/src/aghermann/patterns/patterns.hh b/upstream/src/aghermann/patterns/patterns.hh
index 922b44f..87b512d 100644
--- a/upstream/src/aghermann/patterns/patterns.hh
+++ b/upstream/src/aghermann/patterns/patterns.hh
@@ -47,16 +47,16 @@ class CMatch
template <typename T>
struct SPatternPPack {
- double env_scope;
- double bwf_ffrom,
+ double env_scope;
+ double bwf_ffrom,
bwf_fupto;
- int bwf_order;
- double dzcdf_step,
+ int bwf_order;
+ double dzcdf_step,
dzcdf_sigma;
- int dzcdf_smooth;
+ int dzcdf_smooth;
bool operator==( const SPatternPPack<T>& rv) const // cannot be defaulted!
{
- return env_scope == rv.env_scope &&
+ return env_scope == rv.env_scope &&
bwf_ffrom == rv.bwf_ffrom &&
bwf_fupto == rv.bwf_fupto &&
bwf_order == rv.bwf_order &&
@@ -66,7 +66,7 @@ struct SPatternPPack {
}
bool sane() const
{
- return env_scope > 0. && env_scope <= 1. &&
+ return env_scope > 0. && env_scope <= 1. &&
bwf_ffrom < bwf_fupto &&
bwf_ffrom >= 0. && bwf_ffrom <= 50. &&
bwf_fupto >= 0. && bwf_fupto <= 50. &&
@@ -136,12 +136,12 @@ class CPatternTool
sigproc::SCachedDzcdf<T>
pdzcdf;
- size_t samplerate;
- size_t ctx_before,
+ size_t samplerate;
+ size_t ctx_before,
ctx_after;
T crit_linear_unity;
- double crit_dzcdf_unity;
+ double crit_dzcdf_unity;
};
@@ -154,17 +154,17 @@ extern const char*
template <typename T>
struct SPattern {
- string name,
+ string name,
path;
- TOrigin origin;
+ TOrigin origin;
- bool saved:1;
+ bool saved:1;
valarray<T>
thing;
- size_t samplerate;
- size_t context_before,
+ size_t samplerate;
+ size_t context_before,
context_after;
static const size_t
context_pad = 100;
diff --git a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
index b5689db..e0d0a2f 100644
--- a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
+++ b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
@@ -12,6 +12,7 @@
#include "aghermann/ui/misc.hh"
#include "aghermann/ui/sm/sm.hh"
#include "aghermann/ui/sf/sf.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "mw.hh"
#include "mw_cb.hh"
diff --git a/upstream/src/aghermann/ui/sf/Makefile.am b/upstream/src/aghermann/ui/sf/Makefile.am
index b41a578..8f42c13 100644
--- a/upstream/src/aghermann/ui/sf/Makefile.am
+++ b/upstream/src/aghermann/ui/sf/Makefile.am
@@ -9,6 +9,7 @@ noinst_LIBRARIES := liba.a
liba_a_SOURCES := \
channel.cc \
+ channel.hh \
construct.cc \
controls_cb.cc \
hypnogram.cc \
diff --git a/upstream/src/aghermann/ui/sf/channel.cc b/upstream/src/aghermann/ui/sf/channel.cc
index 6cc501a..0828b52 100644
--- a/upstream/src/aghermann/ui/sf/channel.cc
+++ b/upstream/src/aghermann/ui/sf/channel.cc
@@ -17,7 +17,9 @@
#include "libsigproc/exstrom.hh"
#include "libmetrics/bands.hh"
#include "aghermann/ui/globals.hh"
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
#include "d/artifacts.hh"
#include "d/patterns.hh"
diff --git a/upstream/src/aghermann/ui/sf/channel.hh b/upstream/src/aghermann/ui/sf/channel.hh
new file mode 100644
index 0000000..1a581ca
--- /dev/null
+++ b/upstream/src/aghermann/ui/sf/channel.hh
@@ -0,0 +1,374 @@
+/*
+ * File name: aghermann/ui/sf/channel.hh
+ * Project: Aghermann
+ * Author: Andrei Zavada <johnhommer at gmail.com>
+ * Initial version: 2013-09-07
+ *
+ * Purpose: scoring facility channel representation
+ *
+ * License: GPL
+ */
+
+#ifndef AGH_AGHERMANN_UI_SF_CHANNEL_H_
+#define AGH_AGHERMANN_UI_SF_CHANNEL_H_
+
+#include <forward_list>
+#include <list>
+#include <string>
+
+#include <cairo/cairo.h>
+
+#include "common/alg.hh"
+#include "common/config-validate.hh"
+#include "libsigproc/sigproc.hh"
+#include "libsigfile/forward-decls.hh"
+#include "libmetrics/mc-artifacts.hh"
+#include "libmetrics/page-metrics-base.hh"
+#include "libmetrics/bands.hh"
+#include "aghermann/patterns/forward-decls.hh"
+#include "aghermann/expdesign/forward-decls.hh"
+#include "aghermann/expdesign/recording.hh"
+// #include "aghermann/ui/ui++.hh"
+
+#include "sf.hh"
+
+#if HAVE_CONFIG_H && !defined(VERSION)
+# include "config.h"
+#endif
+
+
+using namespace std;
+
+namespace agh {
+namespace ui {
+
+struct SScoringFacility::SChannel {
+
+ DELETE_DEFAULT_METHODS (SChannel);
+
+ bool operator==( const string&) const;
+ bool operator==( const SChannel&) const;
+
+ agh::CRecording&
+ crecording;
+
+ // shortcuts
+ int
+ h() const
+ { return crecording.h(); }
+ const sigfile::SChannel&
+ schannel() const
+ { return crecording.F().channel_by_id( h()); }
+ const char*
+ name() const
+ { return schannel().name(); }
+
+ sigfile::SFilterPack&
+ filters;
+ list<sigfile::SAnnotation>&
+ annotations;
+ sigfile::SArtifacts&
+ artifacts;
+
+ SScoringFacility&
+ _p;
+
+ // signal waveforms, cached here
+ valarray<TFloat>
+ signal_original,
+ signal_filtered,
+ signal_reconstituted; // while it's hot
+ void get_signal_original();
+ void get_signal_filtered();
+
+ // filters
+ bool have_low_pass() const;
+ bool have_high_pass() const;
+ bool have_notch_filter() const;
+ size_t n_samples() const;
+ size_t samplerate() const;
+
+ // artifacts
+ float percent_dirty;
+ float calculate_dirty_percent();
+ void detect_artifacts( const metrics::mc::SArtifactDetectionPP&);
+ pair<double, double>
+ mark_flat_regions_as_artifacts( double at_least_this_long, double pad);
+
+ // annotations
+ list<sigfile::SAnnotation*>
+ in_annotations( double time) const;
+
+ // signal metrics
+ static pattern::SPatternPPack<TFloat>
+ pattern_params;
+ sigproc::SCachedLowPassCourse<TFloat>
+ signal_lowpass;
+ sigproc::SCachedBandPassCourse<TFloat>
+ signal_bandpass;
+ sigproc::SCachedEnvelope<TFloat>
+ signal_envelope;
+ sigproc::SCachedDzcdf<TFloat>
+ signal_dzcdf;
+ void
+ drop_cached_signal_properties()
+ {
+ signal_lowpass.drop();
+ signal_bandpass.drop();
+ signal_envelope.drop();
+ signal_dzcdf.drop();
+ }
+
+ // profiles
+ // psd
+ struct SProfilePSD {
+ valarray<TFloat>
+ course;
+ double from, upto;
+ double display_scale; // saved via libconfig, requiring it to be double
+ array<valarray<TFloat>, metrics::TBand::TBand_total>
+ course_in_bands;
+ size_t focused_band,
+ uppermost_band;
+ };
+ void get_psd_course();
+ void get_psd_in_bands();
+ SProfilePSD
+ psd;
+ // swu
+ struct SProfileSWU {
+ valarray<TFloat>
+ course;
+ double f0;
+ double display_scale;
+ };
+ void get_swu_course();
+ SProfileSWU
+ swu;
+ // mc
+ struct SProfileMC {
+ valarray<TFloat>
+ course;
+ double display_scale;
+ double f0;
+ };
+ SProfileMC
+ mc;
+ void get_mc_course();
+
+ tuple<metrics::TType, valarray<TFloat>&>
+ which_profile( metrics::TType);
+
+ void update_profile_display_scales();
+
+ // spectrum
+ valarray<TFloat>
+ spectrum; // per page, is volatile
+ float spectrum_upper_freq;
+ unsigned
+ spectrum_bins,
+ last_spectrum_bin;
+ void get_spectrum(); // at current page
+ void get_spectrum( size_t p);
+
+ // raw profile
+ valarray<TFloat>
+ raw_profile;
+ void get_raw_profile();
+
+ // region
+ void mark_region_as_artifact( bool do_mark);
+ void mark_region_as_annotation( const string&, sigfile::SAnnotation::TType);
+ void mark_region_as_pattern();
+
+ // ctor, dtor
+ SChannel( agh::CRecording& r, SScoringFacility&, size_t y, int seq);
+
+ double zeroy;
+ bool operator<( const SChannel&) const;
+
+ double signal_display_scale;
+
+ // saved flags
+ bool hidden,
+ draw_zeroline,
+ draw_original_signal,
+ draw_filtered_signal,
+ zeromean_original,
+ zeromean_filtered,
+ draw_psd,
+ draw_swu,
+ draw_mc,
+ draw_emg,
+ draw_psd_bands,
+ autoscale_profile,
+ draw_spectrum,
+ resample_signal,
+ resample_power,
+ draw_selection_course,
+ draw_selection_envelope,
+ draw_selection_dzcdf,
+ draw_phasic_spindle,
+ draw_phasic_Kcomplex,
+ draw_phasic_eyeblink;
+ bool discard_marked,
+ apply_reconstituted;
+
+ forward_list<agh::confval::SValidator<bool>> config_keys_b;
+ forward_list<agh::confval::SValidator<int>> config_keys_d;
+ forward_list<agh::confval::SValidator<double>> config_keys_g;
+
+ void update_channel_menu_items( double x);
+ void update_power_menu_items();
+ void selectively_enable_selection_menu_items();
+
+ // selection and marquee
+ float marquee_mstart,
+ marquee_mend, // in terms of event->x
+ marquee_start,
+ marquee_end; // set on button_release
+ double selection_start_time,
+ selection_end_time; // in seconds
+ size_t selection_start,
+ selection_end; // in samples
+ TFloat selection_SS,
+ selection_SU;
+ size_t marquee_to_selection();
+ void put_selection( size_t a, size_t e);
+ void put_selection( double a, double e);
+ private:
+ void _put_selection();
+
+ public:
+ float spp() const;
+ float fine_line() const;
+ int sample_at_click( double) const;
+
+ GtkMenuItem
+ *menu_item_when_hidden;
+
+ // comprehensive draw
+ void draw_for_montage( const string& fname, int width, int height); // to a file
+ void draw_for_montage( cairo_t*); // to montage
+
+ protected:
+ void draw_page( cairo_t*, int wd, float zeroy, // writers to an svg file override zeroy (with 0)
+ bool draw_marquee) const;
+ void draw_overlays( cairo_t*, int wd, float zeroy) const;
+
+ // strictly draw the signal waveform bare
+ // (also used as such in some child dialogs)
+ void draw_signal_original( size_t width, int vdisp, cairo_t *cr) const
+ {
+ draw_signal( signal_original, width, vdisp, cr);
+ }
+ void draw_signal_filtered( size_t width, int vdisp, cairo_t *cr) const
+ {
+ draw_signal( signal_filtered, width, vdisp, cr);
+ }
+ friend class SScoringFacility;
+ void draw_signal_reconstituted( size_t width, int vdisp, cairo_t *cr) const
+ {
+ draw_signal( signal_reconstituted, width, vdisp, cr);
+ }
+ // generic draw_signal wrapper
+ void draw_signal( const valarray<TFloat>& signal,
+ size_t width, int vdisp, cairo_t *cr) const;
+};
+
+inline bool
+SScoringFacility::SChannel::
+operator==( const string& _name) const
+{
+ return _name == name();
+}
+// inline bool
+// SScoringFacility::SChannel::
+// operator==( const SChannel& rv) const
+// {
+// return name == rv.name;
+// }
+
+
+inline bool
+SScoringFacility::SChannel::
+have_low_pass() const
+{
+ return isfinite(filters.low_pass_cutoff)
+ && filters.low_pass_cutoff > 0.
+ && filters.low_pass_order > 0;
+}
+
+inline bool
+SScoringFacility::SChannel::
+have_high_pass() const
+{
+ return isfinite(filters.high_pass_cutoff)
+ && filters.high_pass_cutoff > 0.
+ && filters.high_pass_order > 0;
+}
+inline bool
+SScoringFacility::SChannel::
+have_notch_filter() const
+{
+ return filters.notch_filter != sigfile::SFilterPack::TNotchFilter::none;
+}
+
+inline size_t
+SScoringFacility::SChannel::
+n_samples() const
+{
+ return signal_filtered.size();
+}
+
+
+inline bool
+SScoringFacility::SChannel::
+operator<( const SChannel& rv) const
+{
+ return zeroy < rv.zeroy;
+}
+
+
+inline float
+SScoringFacility::SChannel::
+spp() const
+{
+ return (float)samplerate() * _p.vpagesize() / _p.da_wd;
+}
+inline float
+SScoringFacility::SChannel::
+fine_line() const
+{
+ return ((not resample_signal) and spp() > 1.)
+ ? agh::alg::value_within( .6 / (spp() + .2), .1, 3.)
+ : .6;
+}
+inline int
+SScoringFacility::SChannel::
+sample_at_click( double x) const
+{
+ return _p.time_at_click( x) * samplerate();
+}
+
+
+
+
+inline size_t
+SScoringFacility::SChannel::
+samplerate() const
+{
+ return crecording.F().samplerate(h());
+}
+
+}
+} // namespace agh::ui
+
+#endif
+
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: nil
+// tab-width: 8
+// c-basic-offset: 8
+// End:
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh b/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
index 72a824f..9347851 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
+++ b/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
@@ -47,7 +47,7 @@ struct SScoringFacility::SArtifactsSimpleDialog
SArtifactsSimpleDialog (SScoringFacility&);
- double min_size,
+ double min_size,
pad;
SUIVarCollection
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts.cc b/upstream/src/aghermann/ui/sf/d/artifacts.cc
index 8e1c173..e39a119 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts.cc
+++ b/upstream/src/aghermann/ui/sf/d/artifacts.cc
@@ -9,6 +9,7 @@
* License: GPL
*/
+#include "aghermann/ui/mw/mw.hh"
#include "artifacts.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc b/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
index 5d02c47..1f5472b 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
@@ -10,7 +10,8 @@
*/
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "artifacts.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters-construct.cc b/upstream/src/aghermann/ui/sf/d/filters-construct.cc
index 6a565fc..05a6ecb 100644
--- a/upstream/src/aghermann/ui/sf/d/filters-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters-construct.cc
@@ -12,7 +12,7 @@
#include <stdexcept>
#include "aghermann/ui/ui.hh"
-
+#include "aghermann/ui/mw/mw.hh"
#include "filters.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters.cc b/upstream/src/aghermann/ui/sf/d/filters.cc
index 2cdc425..f894ae4 100644
--- a/upstream/src/aghermann/ui/sf/d/filters.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters.cc
@@ -10,6 +10,7 @@
*/
+#include "aghermann/ui/mw/mw.hh"
#include "filters.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters_cb.cc b/upstream/src/aghermann/ui/sf/d/filters_cb.cc
index 816c8ac..1934996 100644
--- a/upstream/src/aghermann/ui/sf/d/filters_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters_cb.cc
@@ -11,7 +11,7 @@
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
#include "filters.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-construct.cc b/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
index 7794ca2..3143c2a 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
@@ -11,6 +11,7 @@
#include <stdexcept>
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-draw.cc b/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
index fc40f3f..88597d1 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
@@ -10,7 +10,8 @@
*/
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
index 1b06b24..277db4a 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
@@ -12,7 +12,8 @@
#include <tuple>
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
index 35e7460..3b05808 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
@@ -12,6 +12,7 @@
#include <sys/time.h>
#include "aghermann/ui/misc.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
diff --git a/upstream/src/aghermann/ui/sf/d/patterns.cc b/upstream/src/aghermann/ui/sf/d/patterns.cc
index 090d013..090980c 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns.cc
@@ -10,7 +10,7 @@
*/
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns_cb.cc b/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
index bfc21c3..96b6023 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
@@ -12,7 +12,8 @@
#include <sys/time.h>
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "patterns.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc b/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
index a9eb0b3..51e23a1 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
@@ -10,7 +10,7 @@
*/
#include <stdexcept>
-
+#include "aghermann/ui/sf/channel.hh"
#include "phasediff.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff.cc b/upstream/src/aghermann/ui/sf/d/phasediff.cc
index 899cc74..424f813 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff.cc
@@ -11,7 +11,8 @@
#include "common/lang.hh"
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "phasediff.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc b/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
index 3b2e271..16e76fc 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
@@ -11,7 +11,8 @@
#include "common/lang.hh"
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
#include "phasediff.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/hypnogram.cc b/upstream/src/aghermann/ui/sf/hypnogram.cc
index a03c85f..e7ec6a6 100644
--- a/upstream/src/aghermann/ui/sf/hypnogram.cc
+++ b/upstream/src/aghermann/ui/sf/hypnogram.cc
@@ -14,6 +14,8 @@
#include <cairo/cairo.h>
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/ica.cc b/upstream/src/aghermann/ui/sf/ica.cc
index 0ddbad3..adc5526 100644
--- a/upstream/src/aghermann/ui/sf/ica.cc
+++ b/upstream/src/aghermann/ui/sf/ica.cc
@@ -15,6 +15,7 @@
#include "aghermann/ica/ica.hh"
#include "aghermann/ui/misc.hh"
+#include "channel.hh"
#include "sf.hh"
#include "sf_cb.hh"
diff --git a/upstream/src/aghermann/ui/sf/mainmenu_cb.cc b/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
index 4acd9cf..8171150 100644
--- a/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
+++ b/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
@@ -9,6 +9,8 @@
* License: GPL
*/
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
#include "d/patterns.hh"
#include "d/phasediff.hh"
diff --git a/upstream/src/aghermann/ui/sf/montage-overlays.cc b/upstream/src/aghermann/ui/sf/montage-overlays.cc
index 3572dca..8b184a7 100644
--- a/upstream/src/aghermann/ui/sf/montage-overlays.cc
+++ b/upstream/src/aghermann/ui/sf/montage-overlays.cc
@@ -14,7 +14,8 @@
#include "common/lang.hh"
#include "libmetrics/bands.hh"
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/montage.cc b/upstream/src/aghermann/ui/sf/montage.cc
index 072d1ef..e4fab03 100644
--- a/upstream/src/aghermann/ui/sf/montage.cc
+++ b/upstream/src/aghermann/ui/sf/montage.cc
@@ -13,7 +13,8 @@
#include "common/lang.hh"
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
#include "d/patterns.hh"
diff --git a/upstream/src/aghermann/ui/sf/montage_cb.cc b/upstream/src/aghermann/ui/sf/montage_cb.cc
index d52b70a..bdf9475 100644
--- a/upstream/src/aghermann/ui/sf/montage_cb.cc
+++ b/upstream/src/aghermann/ui/sf/montage_cb.cc
@@ -13,7 +13,8 @@
#include <cairo/cairo.h>
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
#include "sf_cb.hh"
#include "d/artifacts.hh"
diff --git a/upstream/src/aghermann/ui/sf/sf.cc b/upstream/src/aghermann/ui/sf/sf.cc
index c5021a3..861ff73 100644
--- a/upstream/src/aghermann/ui/sf/sf.cc
+++ b/upstream/src/aghermann/ui/sf/sf.cc
@@ -15,8 +15,10 @@
#include "common/config-validate.hh"
#include "common/fs.hh"
#include "libmetrics/bands.hh"
+#include "aghermann/expdesign/subject.hh"
#include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
#include "sf.hh"
#include "sf_cb.hh"
#include "d/artifacts.hh"
@@ -27,7 +29,7 @@
using namespace std;
using namespace agh::ui;
-size_t SScoringFacility::IntersignalSpace = 120,
+size_t SScoringFacility::IntersignalSpace = 120,
SScoringFacility::HypnogramHeight = 40,
SScoringFacility::EMGProfileHeight = 30;
@@ -351,6 +353,22 @@ channel_idx( SChannel* h) const
return -1;
}
+time_t
+SScoringFacility::
+start_time() const
+{
+ return channels.front().crecording.F().start_time();
+}
+
+
+
+size_t
+SScoringFacility::
+pagesize() const
+{
+ return _p.pagesize();
+}
+
diff --git a/upstream/src/aghermann/ui/sf/sf.hh b/upstream/src/aghermann/ui/sf/sf.hh
index 519d560..f698962 100644
--- a/upstream/src/aghermann/ui/sf/sf.hh
+++ b/upstream/src/aghermann/ui/sf/sf.hh
@@ -12,23 +12,23 @@
#ifndef AGH_AGHERMANN_UI_SF_SF_H_
#define AGH_AGHERMANN_UI_SF_SF_H_
-#include <map>
+#include <forward_list>
#include <list>
+#include <string>
#include <cairo/cairo.h>
-#include <gtk/gtk.h>
#include "common/alg.hh"
#include "common/config-validate.hh"
-#include "libsigproc/winfun.hh"
-#include "libsigproc/sigproc.hh"
-#include "libmetrics/mc-artifacts.hh"
-#include "aghermann/patterns/patterns.hh"
+//#include "libsigproc/winfun.hh"
+//#include "libsigproc/sigproc.hh"
+#include "libsigfile/page.hh"
+#include "libsigfile/forward-decls.hh"
#include "aghermann/expdesign/forward-decls.hh"
#include "aghermann/ica/ica.hh"
#include "aghermann/ui/globals.hh"
#include "aghermann/ui/ui++.hh"
-#include "aghermann/ui/mw/mw.hh"
+//#include "aghermann/ui/mw/mw.hh"
#include "widgets.hh"
@@ -42,6 +42,8 @@ using namespace std;
namespace agh {
namespace ui {
+class SExpDesignUI;
+
class SScoringFacility
: public SScoringFacilityWidgets {
@@ -70,239 +72,7 @@ class SScoringFacility
const string& session() const { return _session; }
// channels
- struct SChannel {
-
- DELETE_DEFAULT_METHODS (SChannel);
-
- bool operator==( const string&) const;
- bool operator==( const SChannel&) const;
-
- agh::CRecording&
- crecording;
-
- // shortcuts
- int
- h() const
- { return crecording.h(); }
- const sigfile::SChannel&
- schannel() const
- { return crecording.F().channel_by_id( h()); }
- const char*
- name() const
- { return schannel().name(); }
-
- sigfile::SFilterPack&
- filters;
- list<sigfile::SAnnotation>&
- annotations;
- sigfile::SArtifacts&
- artifacts;
-
- SScoringFacility&
- _p;
-
- // signal waveforms, cached here
- valarray<TFloat>
- signal_original,
- signal_filtered,
- signal_reconstituted; // while it's hot
- void get_signal_original();
- void get_signal_filtered();
-
- // filters
- bool have_low_pass() const;
- bool have_high_pass() const;
- bool have_notch_filter() const;
- size_t n_samples() const;
- size_t samplerate() const;
-
- // artifacts
- float percent_dirty;
- float calculate_dirty_percent();
- void detect_artifacts( const metrics::mc::SArtifactDetectionPP&);
- pair<double, double>
- mark_flat_regions_as_artifacts( double at_least_this_long, double pad);
-
- // annotations
- list<sigfile::SAnnotation*>
- in_annotations( double time) const;
-
- // signal metrics
- static pattern::SPatternPPack<TFloat>
- pattern_params;
- sigproc::SCachedLowPassCourse<TFloat>
- signal_lowpass;
- sigproc::SCachedBandPassCourse<TFloat>
- signal_bandpass;
- sigproc::SCachedEnvelope<TFloat>
- signal_envelope;
- sigproc::SCachedDzcdf<TFloat>
- signal_dzcdf;
- void
- drop_cached_signal_properties()
- {
- signal_lowpass.drop();
- signal_bandpass.drop();
- signal_envelope.drop();
- signal_dzcdf.drop();
- }
-
- // profiles
- // psd
- struct SProfilePSD {
- valarray<TFloat>
- course;
- double from, upto;
- double display_scale; // saved via libconfig, requiring it to be double
- array<valarray<TFloat>, metrics::TBand::TBand_total>
- course_in_bands;
- size_t focused_band,
- uppermost_band;
- };
- void get_psd_course();
- void get_psd_in_bands();
- SProfilePSD
- psd;
- // swu
- struct SProfileSWU {
- valarray<TFloat>
- course;
- double f0;
- double display_scale;
- };
- void get_swu_course();
- SProfileSWU
- swu;
- // mc
- struct SProfileMC {
- valarray<TFloat>
- course;
- double display_scale;
- double f0;
- };
- SProfileMC
- mc;
- void get_mc_course();
-
- tuple<metrics::TType, valarray<TFloat>&>
- which_profile( metrics::TType);
-
- void update_profile_display_scales();
-
- // spectrum
- valarray<TFloat>
- spectrum; // per page, is volatile
- float spectrum_upper_freq;
- unsigned
- spectrum_bins,
- last_spectrum_bin;
- void get_spectrum(); // at current page
- void get_spectrum( size_t p);
-
- // raw profile
- valarray<TFloat>
- raw_profile;
- void get_raw_profile();
-
- // region
- void mark_region_as_artifact( bool do_mark);
- void mark_region_as_annotation( const string&, sigfile::SAnnotation::TType);
- void mark_region_as_pattern();
-
- // ctor, dtor
- SChannel( agh::CRecording& r, SScoringFacility&, size_t y, int seq);
-
- double zeroy;
- bool operator<( const SChannel&) const;
-
- double signal_display_scale;
-
- // saved flags
- bool hidden,
- draw_zeroline,
- draw_original_signal,
- draw_filtered_signal,
- zeromean_original,
- zeromean_filtered,
- draw_psd,
- draw_swu,
- draw_mc,
- draw_emg,
- draw_psd_bands,
- autoscale_profile,
- draw_spectrum,
- resample_signal,
- resample_power,
- draw_selection_course,
- draw_selection_envelope,
- draw_selection_dzcdf,
- draw_phasic_spindle,
- draw_phasic_Kcomplex,
- draw_phasic_eyeblink;
- bool discard_marked,
- apply_reconstituted;
-
- forward_list<agh::confval::SValidator<bool>> config_keys_b;
- forward_list<agh::confval::SValidator<int>> config_keys_d;
- forward_list<agh::confval::SValidator<double>> config_keys_g;
-
- void update_channel_menu_items( double x);
- void update_power_menu_items();
- void selectively_enable_selection_menu_items();
-
- // selection and marquee
- float marquee_mstart,
- marquee_mend, // in terms of event->x
- marquee_start,
- marquee_end; // set on button_release
- double selection_start_time,
- selection_end_time; // in seconds
- size_t selection_start,
- selection_end; // in samples
- TFloat selection_SS,
- selection_SU;
- size_t marquee_to_selection();
- void put_selection( size_t a, size_t e);
- void put_selection( double a, double e);
- private:
- void _put_selection();
-
- public:
- float spp() const;
- float fine_line() const;
- int sample_at_click( double) const;
-
- GtkMenuItem
- *menu_item_when_hidden;
-
- // comprehensive draw
- void draw_for_montage( const string& fname, int width, int height); // to a file
- void draw_for_montage( cairo_t*); // to montage
-
- protected:
- void draw_page( cairo_t*, int wd, float zeroy, // writers to an svg file override zeroy (with 0)
- bool draw_marquee) const;
- void draw_overlays( cairo_t*, int wd, float zeroy) const;
-
- // strictly draw the signal waveform bare
- // (also used as such in some child dialogs)
- void draw_signal_original( size_t width, int vdisp, cairo_t *cr) const
- {
- draw_signal( signal_original, width, vdisp, cr);
- }
- void draw_signal_filtered( size_t width, int vdisp, cairo_t *cr) const
- {
- draw_signal( signal_filtered, width, vdisp, cr);
- }
- friend class SScoringFacility;
- void draw_signal_reconstituted( size_t width, int vdisp, cairo_t *cr) const
- {
- draw_signal( signal_reconstituted, width, vdisp, cr);
- }
- // generic draw_signal wrapper
- void draw_signal( const valarray<TFloat>& signal,
- size_t width, int vdisp, cairo_t *cr) const;
- };
+ struct SChannel;
list<SChannel>
channels;
size_t n_eeg_channels;
@@ -326,8 +96,7 @@ class SScoringFacility
// timeline
time_t
- start_time() const
- { return channels.front().crecording.F().start_time(); }
+ start_time() const;
vector<char>
hypnogram;
@@ -392,9 +161,7 @@ class SScoringFacility
bool page_has_annotations( size_t, const SChannel&) const;
// pagesize
- size_t
- pagesize() const
- { return _p.pagesize(); }
+ size_t pagesize() const;
static const array<unsigned, 9>
DisplayPageSizeValues;
@@ -539,6 +306,10 @@ class SScoringFacility
SArtifactsSimpleDialog&
artifacts_simple_d();
+ struct SRK1968Dialog;
+ SRK1968Dialog&
+ rk1968_d();
+
private:
SPatternsDialog
*_patterns_d;
@@ -550,6 +321,8 @@ class SScoringFacility
*_artifacts_d;
SArtifactsSimpleDialog
*_artifacts_simple_d;
+ SRK1968Dialog
+ *_rk1968_d;
public:
// menu support
@@ -585,92 +358,6 @@ class SScoringFacility
};
-inline bool
-SScoringFacility::SChannel::
-operator==( const string& _name) const
-{
- return _name == name();
-}
-// inline bool
-// SScoringFacility::SChannel::
-// operator==( const SChannel& rv) const
-// {
-// return name == rv.name;
-// }
-
-
-inline bool
-SScoringFacility::SChannel::
-have_low_pass() const
-{
- return isfinite(filters.low_pass_cutoff)
- && filters.low_pass_cutoff > 0.
- && filters.low_pass_order > 0;
-}
-
-inline bool
-SScoringFacility::SChannel::
-have_high_pass() const
-{
- return isfinite(filters.high_pass_cutoff)
- && filters.high_pass_cutoff > 0.
- && filters.high_pass_order > 0;
-}
-inline bool
-SScoringFacility::SChannel::
-have_notch_filter() const
-{
- return filters.notch_filter != sigfile::SFilterPack::TNotchFilter::none;
-}
-
-inline size_t
-SScoringFacility::SChannel::
-n_samples() const
-{
- return signal_filtered.size();
-}
-
-
-inline bool
-SScoringFacility::SChannel::
-operator<( const SChannel& rv) const
-{
- return zeroy < rv.zeroy;
-}
-
-
-inline float
-SScoringFacility::SChannel::
-spp() const
-{
- return (float)samplerate() * _p.vpagesize() / _p.da_wd;
-}
-inline float
-SScoringFacility::SChannel::
-fine_line() const
-{
- return ((not resample_signal) and spp() > 1.)
- ? agh::alg::value_within( .6 / (spp() + .2), .1, 3.)
- : .6;
-}
-inline int
-SScoringFacility::SChannel::
-sample_at_click( double x) const
-{
- return _p.time_at_click( x) * samplerate();
-}
-
-
-
-
-inline size_t
-SScoringFacility::SChannel::
-samplerate() const
-{
- return crecording.F().samplerate(h());
-}
-
-
inline size_t
SScoringFacility::
diff --git a/upstream/src/aghermann/ui/sf/sf_cb.cc b/upstream/src/aghermann/ui/sf/sf_cb.cc
index 18ae60b..ce8ce42 100644
--- a/upstream/src/aghermann/ui/sf/sf_cb.cc
+++ b/upstream/src/aghermann/ui/sf/sf_cb.cc
@@ -9,6 +9,7 @@
* License: GPL
*/
+#include "aghermann/ui/mw/mw.hh"
#include "sf.hh"
using namespace std;
diff --git a/upstream/src/libsigfile/forward-decls.hh b/upstream/src/libsigfile/forward-decls.hh
index d325ed6..7c3c8dc 100644
--- a/upstream/src/libsigfile/forward-decls.hh
+++ b/upstream/src/libsigfile/forward-decls.hh
@@ -20,6 +20,10 @@ struct SPageWithSWA;
struct SPageSimulated;
struct SChannel;
+struct SArtifacts;
+struct SAnnotation;
+struct SFilterPack;
+
class CSource;
class CTypedSource;
class CHypnogram;
diff --git a/upstream/src/libsigfile/source-base.hh b/upstream/src/libsigfile/source-base.hh
index 7edcfaf..34e688b 100644
--- a/upstream/src/libsigfile/source-base.hh
+++ b/upstream/src/libsigfile/source-base.hh
@@ -207,10 +207,13 @@ struct SFilterPack {
notch_filter = TNotchFilter::none;
}
- double low_pass_cutoff;
- unsigned low_pass_order;
- double high_pass_cutoff;
- unsigned high_pass_order;
+ double low_pass_cutoff;
+ unsigned
+ low_pass_order;
+
+ double high_pass_cutoff;
+ unsigned
+ high_pass_order;
TNotchFilter
notch_filter;
@@ -266,7 +269,7 @@ class CSource {
// load_ancillary_files();
/// defer until, at least, n_channels is known
}
- CSource( CSource&&);
+ CSource (CSource&&);
virtual ~CSource()
{
// if ( not (_flags & no_ancillary_files) )
--
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git
More information about the debian-med-commit
mailing list