This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository aghermann.

commit c2bf856ce8547501c185e1778eae756ddc82cf5b
Author: Andrei Zavada <[email protected]>
Date:   Mon Aug 19 00:00:10 2013 +0300

    split aghermann/expdesign/primaries.hh, streamline #includes
---
 upstream/src/aghermann/expdesign/Makefile.am       |    5 +-
 upstream/src/aghermann/expdesign/expdesign.cc      |   52 ++++-
 .../expdesign/{primaries.hh => expdesign.hh}       |  185 +---------------
 upstream/src/aghermann/expdesign/forward-decls.hh  |    2 +
 upstream/src/aghermann/expdesign/loadsave.cc       |    3 +-
 upstream/src/aghermann/expdesign/recording.cc      |    6 +-
 upstream/src/aghermann/expdesign/subject.cc        |   23 +-
 upstream/src/aghermann/expdesign/subject.hh        |  223 ++++++++++++++++++++
 upstream/src/aghermann/expdesign/tree-scanner.cc   |    8 +-
 upstream/src/aghermann/main.cc                     |    2 +-
 upstream/src/aghermann/model/achermann.cc          |   45 ----
 upstream/src/aghermann/rk1968/rk1968.cc            |    7 +-
 upstream/src/aghermann/rk1968/rk1968.hh            |   13 +-
 upstream/src/aghermann/ui/mw/mainmenu_cb.cc        |    8 +-
 upstream/src/aghermann/ui/mw/measurements_cb.cc    |    2 +-
 upstream/src/aghermann/ui/mw/mw.cc                 |    2 +-
 upstream/src/aghermann/ui/mw/mw.hh                 |   16 +-
 upstream/src/aghermann/ui/mw/populate.cc           |    2 +-
 upstream/src/aghermann/ui/sf/sf.hh                 |    8 +-
 19 files changed, 338 insertions(+), 274 deletions(-)

diff --git a/upstream/src/aghermann/expdesign/Makefile.am 
b/upstream/src/aghermann/expdesign/Makefile.am
index 355905d..cde7b3d 100644
--- a/upstream/src/aghermann/expdesign/Makefile.am
+++ b/upstream/src/aghermann/expdesign/Makefile.am
@@ -7,7 +7,7 @@ noinst_LIBRARIES := liba.a
 
 liba_a_SOURCES := \
        forward-decls.hh \
-       primaries.hh \
+       expdesign.hh \
        profile.hh \
        expdesign.cc \
        loadsave.cc \
@@ -21,7 +21,8 @@ BUILT_SOURCES := \
        forward-decls.hh.gch \
        profile.hh.gch \
        recording.hh.gch \
-       primaries.hh.gch
+       subject.hh.gch \
+       expdesign.hh.gch
 %.hh.gch: %.hh
        $(CXXCOMPILE) -c $<
 CLEANFILES = \
diff --git a/upstream/src/aghermann/expdesign/expdesign.cc 
b/upstream/src/aghermann/expdesign/expdesign.cc
index d807de3..c6e5f07 100644
--- a/upstream/src/aghermann/expdesign/expdesign.cc
+++ b/upstream/src/aghermann/expdesign/expdesign.cc
@@ -19,7 +19,7 @@
 
 #include "aghermann/globals.hh"
 #include "common/config-validate.hh"
-#include "primaries.hh"
+#include "expdesign.hh"
 
 
 using namespace std;
@@ -209,7 +209,7 @@ for_all_episodes( const TEpisodeOpFun& F, const 
TEpisodeReportFun& report, const
        vector<tuple<CJGroup*,
                     CSubject*,
                     const string*,
-                    CSubject::SEpisode*>> v;
+                    SEpisode*>> v;
        for ( auto& G : groups )
                for ( auto& J : G.second )
                        for ( auto& M : J.measurements )
@@ -240,7 +240,7 @@ for_all_recordings( const TRecordingOpFun& F, const 
TRecordingReportFun& report,
        vector<tuple<CJGroup*,
                     CSubject*,
                     const string*,
-                    CSubject::SEpisode*,
+                    SEpisode*,
                     CRecording*>> v;
        for ( auto& G : groups )
                for ( auto& J : G.second )
@@ -428,6 +428,52 @@ used_samplerates( sigfile::SChannel::TType type) const
 
 
 
+
+
+
+int
+agh::CExpDesign::
+setup_modrun( const string& j, const string& d, const string& h,
+             const SProfileParamSet& profile_params0,
+             agh::ach::CModelRun** Rpp)
+{
+       try {
+               CSubject& J = subject_by_x(j);
+
+               if ( J.measurements[d].size() == 1 && ctl_params0.DBAmendment2 )
+                       return CProfile::TFlags::eamendments_ineffective;
+
+               if ( J.measurements[d].size() == 1 && tstep[ach::TTunable::rs] 
> 0. )
+                       return CProfile::TFlags::ers_nonsensical;
+
+               J.measurements[d].modrun_sets[profile_params0].insert(
+                       pair<string, ach::CModelRun> (
+                               h,
+                               ach::CModelRun (
+                                       J, d, h,
+                                       profile_params0,
+                                       ctl_params0,
+                                       tunables0))
+                       );
+               if ( Rpp )
+                       *Rpp = &J.measurements[d]
+                               . modrun_sets[profile_params0][h];
+
+       } catch (invalid_argument ex) { // thrown by CProfile ctor
+               fprintf( stderr, "CExpDesign::setup_modrun( %s, %s, %s): %s\n", 
j.c_str(), d.c_str(), h.c_str(), ex.what());
+               return -1;
+       } catch (out_of_range ex) {
+               fprintf( stderr, "CExpDesign::setup_modrun( %s, %s, %s): %s\n", 
j.c_str(), d.c_str(), h.c_str(), ex.what());
+               return -1;
+       } catch (int ex) { // thrown by CModelRun ctor
+               log_message( "CExpDesign::setup_modrun( %s, %s, %s): %s", 
j.c_str(), d.c_str(), h.c_str(), CProfile::explain_status(ex).c_str());
+               return ex;
+       }
+
+       return 0;
+}
+
+
 void
 agh::CExpDesign::
 prune_untried_modruns()
diff --git a/upstream/src/aghermann/expdesign/primaries.hh 
b/upstream/src/aghermann/expdesign/expdesign.hh
similarity index 63%
rename from upstream/src/aghermann/expdesign/primaries.hh
rename to upstream/src/aghermann/expdesign/expdesign.hh
index 186082b..cf06a36 100644
--- a/upstream/src/aghermann/expdesign/primaries.hh
+++ b/upstream/src/aghermann/expdesign/expdesign.hh
@@ -1,10 +1,10 @@
 /*
- *       File name:  aghermann/expdesign/primaries.hh
+ *       File name:  aghermann/expdesign/expdesign.hh
  *         Project:  Aghermann
  *          Author:  Andrei Zavada <[email protected]>
  * Initial version:  2010-05-01
  *
- *         Purpose:  experimental design primary classes: CSubject & CExpDesign
+ *         Purpose:  experimental design primary classes: CExpDesign
  *
  *         License:  GPL
  */
@@ -27,6 +27,7 @@
 #include "aghermann/model/achermann.hh"
 
 #include "forward-decls.hh"
+#include "subject.hh"
 
 #if HAVE_CONFIG_H && !defined(VERSION)
 #  include "config.h"
@@ -38,178 +39,6 @@ namespace agh {
 using namespace std;
 
 
-typedef size_t sid_t;
-
-
-class CSubject : public SSubjectId {
-
-       void operator=( const CSubject&) = delete;
-       CSubject () = delete;
-
-    public:
-       CSubject (const CSubject& rv)
-             : agh::SSubjectId (rv),
-               _status (rv._status),
-               _id (rv._id),
-               _dir (rv._dir)
-               {}
-
-       CSubject (const string& dir, sid_t id)
-             : agh::SSubjectId (dir.substr( dir.rfind('/')+1)),
-               _status (0),
-               _id (id),
-               _dir (dir)
-               {}
-
-      // identification
-       const char*
-       dir() const
-               { return _dir.c_str(); }
-
-       int try_update_subject_details( const agh::SSubjectId& j)
-               { return SSubjectId::update_from( j); }
-
-       float age( const string& d) const; // age when recordings in this 
session were made
-       float age() const; // now
-       float age_rel( time_t) const;
-
-       bool operator==( const CSubject &o) const
-               { return id == o.id; }
-       bool operator==( const string& n) const
-               { return SSubjectId::id == n; }
-       bool operator==( sid_t id) const
-               { return _id == id; }
-
-      // contents
-       struct SEpisodeSequence;
-       struct SEpisode {
-               SEpisode (sigfile::CTypedSource&&,
-                         const metrics::psd::SPPack&,
-                         const metrics::swu::SPPack&,
-                         const metrics::mc::SPPack&);
-
-               time_t start_time() const       { return 
sources.front()().start_time(); }
-               time_t end_time() const         { return 
sources.front()().end_time();   }
-               time_t start_time()             { return 
sources.front()().start_time(); }
-               time_t end_time()               { return 
sources.front()().end_time();   }
-               time_t  // relative to start_time
-                       start_rel,
-                       end_rel;
-
-               typedef map<sigfile::SChannel, CRecording> TRecordingSet;
-               TRecordingSet
-                       recordings; // one per channel, naturally
-
-               const char*
-               name() const
-                       { return sources.front()().episode(); }
-               bool
-               operator==( const string& e) const
-                       { return e == name(); }
-               bool
-               operator<( const SEpisode& rv) const
-                       {
-                               return sources.front()().end_time()
-                                       < rv.sources.front()().start_time();
-                       }
-
-               struct SAnnotation
-                 : public sigfile::SAnnotation {
-                       SAnnotation (const sigfile::CSource& _si, int _hi,
-                                    const sigfile::SAnnotation& _a)
-                             : sigfile::SAnnotation (_a),
-                               _source (_si), _h (_hi)
-                               {}
-                       SAnnotation( const SAnnotation&) = default;
-
-                       const sigfile::CSource& _source;
-                       int _h;
-
-                       bool
-                       operator<( const SAnnotation& rv) const
-                               { return span < rv.span; }
-
-                       const char*
-                       channel() const
-                               { return (_h == -1) ? "(embedded)" : 
_source.channel_by_id(_h).name(); }
-                       agh::alg::SSpan<float>
-                       page_span( size_t pagesize) const
-                               { return span / (float)pagesize; }
-               };
-               list<SAnnotation>
-               get_annotations() const;
-
-           // private:
-           //  friend class agh::CSubject;
-           //  friend class agh::ui::SScoringFacility;
-             // allow multiple sources (possibly supplying different channels)
-               list<sigfile::CTypedSource>
-                       sources;
-       };
-
-       class SEpisodeSequence {
-               friend class agh::CExpDesign;
-               friend class agh::CProfile;
-           public:
-               list<SEpisode> episodes;
-               size_t
-               size() const
-                       { return episodes.size(); }
-
-               list<SEpisode>::const_iterator
-               episode_iter_by_name( const string& e) const
-                       { return find( episodes.begin(), episodes.end(), e); }
-               bool
-               have_episode( const string& e) const
-                       { return episode_iter_by_name(e) != episodes.cend(); }
-
-               const SEpisode&
-               operator[]( const string& e) const;
-               SEpisode&
-               operator[]( const string& e);
-
-             // either construct a new episode from F, or update an
-             // existing one (add F to its sources)
-               int
-               add_one( sigfile::CTypedSource&&,
-                        const metrics::psd::SPPack&,
-                        const metrics::swu::SPPack&,
-                        const metrics::mc::SPPack&,
-                        float max_hours_apart = 7*24.);
-
-             // simulations rather belong here
-               typedef map<SProfileParamSet,
-                           map<string, // channel
-                               ach::CModelRun>>
-                       TModrunSetMap;
-               TModrunSetMap
-                       modrun_sets;  // a bunch (from, to) per each fftable 
channel
-       };
-       // all episode sequences, all channels forming a session
-       // using CMSessionSet = map<string, // session name
-       //                       SEpisodeSequence>;
-       typedef map<string, // session name
-                   SEpisodeSequence>
-               CMSessionSet;
-       CMSessionSet
-               measurements;
-
-       bool
-       have_session( const string& d) const
-               {
-                       return measurements.find(d) != measurements.end();
-               }
-
-    private:
-       int     _status;
-       sid_t   _id; // eventually to allow distinctly identifiable namesakes 
in different groups
-
-       string  _dir;
-};
-
-
-
-
 class CJGroup
       : public list<CSubject> {
 
@@ -337,15 +166,15 @@ class CExpDesign {
        void
        for_all_subjects( const TSubjectOpFun&, const TSubjectReportFun&, const 
TSubjectFilterFun&);
 
-       typedef function<void(CSubject::SEpisode&)>
+       typedef function<void(SEpisode&)>
                TEpisodeOpFun;
        typedef function<void(const CJGroup&,
                              const CSubject&,
                              const string&,
-                             const CSubject::SEpisode&,
+                             const SEpisode&,
                              size_t, size_t)>
                TEpisodeReportFun;
-       typedef function<bool(CSubject::SEpisode&)>
+       typedef function<bool(SEpisode&)>
                TEpisodeFilterFun;
        void
        for_all_episodes( const TEpisodeOpFun&, const TEpisodeReportFun&, const 
TEpisodeFilterFun&);
@@ -355,7 +184,7 @@ class CExpDesign {
        typedef function<void(const CJGroup&,
                              const CSubject&,
                              const string&,
-                             const CSubject::SEpisode&,
+                             const SEpisode&,
                              const CRecording&,
                              size_t, size_t)>
                TRecordingReportFun;
diff --git a/upstream/src/aghermann/expdesign/forward-decls.hh 
b/upstream/src/aghermann/expdesign/forward-decls.hh
index 4f50367..88af537 100644
--- a/upstream/src/aghermann/expdesign/forward-decls.hh
+++ b/upstream/src/aghermann/expdesign/forward-decls.hh
@@ -16,6 +16,8 @@
 namespace agh {
 
 class CSubject;
+struct SEpisode;
+struct SEpisodeSequence;
 class CJGroup;
 class CExpDesign;
 
diff --git a/upstream/src/aghermann/expdesign/loadsave.cc 
b/upstream/src/aghermann/expdesign/loadsave.cc
index 5a35b40..00227a4 100644
--- a/upstream/src/aghermann/expdesign/loadsave.cc
+++ b/upstream/src/aghermann/expdesign/loadsave.cc
@@ -9,9 +9,8 @@
  *         License:  GPL
  */
 
-#include "common/config-validate.hh"
 #include "aghermann/model/achermann.hh"
-#include "primaries.hh"
+#include "expdesign.hh"
 
 
 using namespace std;
diff --git a/upstream/src/aghermann/expdesign/recording.cc 
b/upstream/src/aghermann/expdesign/recording.cc
index 6c578ed..13021db 100644
--- a/upstream/src/aghermann/expdesign/recording.cc
+++ b/upstream/src/aghermann/expdesign/recording.cc
@@ -15,7 +15,7 @@
 #include "aghermann/model/beersma.hh"
 
 #include "recording.hh"
-#include "primaries.hh"
+#include "subject.hh"
 
 using namespace std;
 
@@ -138,7 +138,7 @@ CProfile (CSubject& J, const string& d, const 
sigfile::SChannel& h,
                        _status |= TFlags::enegoffset;
                        return;
                }
-               // this condition is checked against already in 
CSubject::SEpisodeSequence::add_one()
+               // this condition is checked against already in 
SEpisodeSequence::add_one()
                // if ( _mm_bounds.size() > 0  &&  pa - 
_mm_bounds.back().second > 4 * 24 * 3600 ) {
                //      _status |= (int)TSimPrepError::efarapart;
                //      return;
@@ -193,7 +193,7 @@ CProfile (CRecording& M,
                _status |= TFlags::enegoffset;
                return;
        }
-       // this condition is checked against already in 
CSubject::SEpisodeSequence::add_one()
+       // this condition is checked against already in 
SEpisodeSequence::add_one()
        // if ( _mm_bounds.size() > 0  &&  pa - _mm_bounds.back().second > 4 * 
24 * 3600 ) {
        //      _status |= (int)TSimPrepError::efarapart;
        //      return;
diff --git a/upstream/src/aghermann/expdesign/subject.cc 
b/upstream/src/aghermann/expdesign/subject.cc
index 8577753..c142bdb 100644
--- a/upstream/src/aghermann/expdesign/subject.cc
+++ b/upstream/src/aghermann/expdesign/subject.cc
@@ -10,7 +10,10 @@
  */
 
 
-#include "primaries.hh"
+#include "common/containers.hh"
+#include "aghermann/model/achermann.hh"
+#include "recording.hh"
+#include "subject.hh"
 
 
 using namespace std;
@@ -56,7 +59,7 @@ age_rel( time_t rel) const
 
 
 
-CSubject::SEpisode::
+SEpisode::
 SEpisode (sigfile::CTypedSource&& F_,
          const metrics::psd::SPPack& fft_params,
          const metrics::swu::SPPack& swu_params,
@@ -66,7 +69,7 @@ SEpisode (sigfile::CTypedSource&& F_,
        sources.emplace_back( move(F_));
        auto& F = sources.back();
        auto HH = F().channel_list();
-       printf( "CSubject::SEpisode::SEpisode( \"%s\"): %s\n",
+       printf( "SEpisode::SEpisode( \"%s\"): %s\n",
                F().filename(), sigfile::join_channel_names(HH, ", ").c_str());
        int h = 0;
        for ( auto& H : HH )
@@ -74,11 +77,11 @@ SEpisode (sigfile::CTypedSource&& F_,
 }
 
 
-list<CSubject::SEpisode::SAnnotation>
-CSubject::SEpisode::
+list<SEpisode::SAnnotation>
+SEpisode::
 get_annotations() const
 {
-       list<agh::CSubject::SEpisode::SAnnotation>
+       list<agh::SEpisode::SAnnotation>
                ret;
        for ( auto &F : sources ) {
                auto HH = F().channel_list();
@@ -96,8 +99,8 @@ get_annotations() const
 
 
 
-const CSubject::SEpisode&
-CSubject::SEpisodeSequence::
+const SEpisode&
+SEpisodeSequence::
 operator[]( const string& e) const
 {
        auto E = find( episodes.begin(), episodes.end(), e);
@@ -107,8 +110,8 @@ operator[]( const string& e) const
                throw invalid_argument( string("no such episode: ") + e);
 }
 
-CSubject::SEpisode&
-CSubject::SEpisodeSequence::
+SEpisode&
+SEpisodeSequence::
 operator[]( const string& e)
 {
        auto E = find( episodes.begin(), episodes.end(), e);
diff --git a/upstream/src/aghermann/expdesign/subject.hh 
b/upstream/src/aghermann/expdesign/subject.hh
new file mode 100644
index 0000000..40e360f
--- /dev/null
+++ b/upstream/src/aghermann/expdesign/subject.hh
@@ -0,0 +1,223 @@
+/*
+ *       File name:  aghermann/expdesign/subject.hh
+ *         Project:  Aghermann
+ *          Author:  Andrei Zavada <[email protected]>
+ * Initial version:  2010-05-01
+ *
+ *         Purpose:  experimental design primary classes: CSubject
+ *
+ *         License:  GPL
+ */
+
+
+#ifndef AGH_AGHERMANN_EXPDESIGN_SUBJECT_H_
+#define AGH_AGHERMANN_EXPDESIGN_SUBJECT_H_
+
+
+#include <string>
+#include <list>
+#include <map>
+
+#include "common/subject_id.hh"
+#include "libsigfile/forward-decls.hh"
+#include "libsigfile/typed-source.hh"
+#include "libmetrics/forward-decls.hh"
+//#include "aghermann/model/forward-decls.hh" // map needs it full
+#include "aghermann/model/achermann.hh"
+
+#include "forward-decls.hh"
+
+#if HAVE_CONFIG_H && !defined(VERSION)
+#  include "config.h"
+#endif
+
+
+namespace agh {
+
+using namespace std;
+
+
+struct SEpisode {
+
+       SEpisode (sigfile::CTypedSource&&,
+                 const metrics::psd::SPPack&,
+                 const metrics::swu::SPPack&,
+                 const metrics::mc::SPPack&);
+
+       time_t start_time() const       { return 
sources.front()().start_time(); }
+       time_t end_time() const         { return sources.front()().end_time();  
 }
+       time_t start_time()             { return 
sources.front()().start_time(); }
+       time_t end_time()               { return sources.front()().end_time();  
 }
+       time_t  // relative to start_time
+               start_rel,
+               end_rel;
+
+       typedef map<sigfile::SChannel, CRecording> TRecordingSet;
+       TRecordingSet
+               recordings; // one per channel, naturally
+
+       const char*
+       name() const
+               { return sources.front()().episode(); }
+       bool
+       operator==( const string& e) const
+               { return e == name(); }
+       bool
+       operator<( const SEpisode& rv) const
+               {
+                       return sources.front()().end_time()
+                               < rv.sources.front()().start_time();
+               }
+
+       struct SAnnotation
+         : public sigfile::SAnnotation {
+               SAnnotation (const sigfile::CSource& _si, int _hi,
+                            const sigfile::SAnnotation& _a)
+                     : sigfile::SAnnotation (_a),
+                       _source (_si), _h (_hi)
+                       {}
+               SAnnotation( const SAnnotation&) = default;
+
+               const sigfile::CSource& _source;
+               int _h;
+
+               bool
+               operator<( const SAnnotation& rv) const
+                       { return span < rv.span; }
+
+               const char*
+               channel() const
+                       { return (_h == -1) ? "(embedded)" : 
_source.channel_by_id(_h).name(); }
+               agh::alg::SSpan<float>
+               page_span( size_t pagesize) const
+                       { return span / (float)pagesize; }
+       };
+       list<SAnnotation>
+       get_annotations() const;
+
+    // private:
+    //         friend class agh::CSubject;
+    //         friend class agh::ui::SScoringFacility;
+      // allow multiple sources (possibly supplying different channels)
+       list<sigfile::CTypedSource>
+               sources;
+};
+
+
+struct SEpisodeSequence {
+       friend class agh::CExpDesign;
+       friend class agh::CProfile;
+    public:
+       list<SEpisode> episodes;
+       size_t
+       size() const
+               { return episodes.size(); }
+
+       list<SEpisode>::const_iterator
+       episode_iter_by_name( const string& e) const
+               { return find( episodes.begin(), episodes.end(), e); }
+       bool
+       have_episode( const string& e) const
+               { return episode_iter_by_name(e) != episodes.cend(); }
+
+       const SEpisode&
+       operator[]( const string& e) const;
+       SEpisode&
+       operator[]( const string& e);
+
+      // either construct a new episode from F, or update an
+      // existing one (add F to its sources)
+       int
+       add_one( sigfile::CTypedSource&&,
+                const metrics::psd::SPPack&,
+                const metrics::swu::SPPack&,
+                const metrics::mc::SPPack&,
+                float max_hours_apart = 7*24.);
+
+      // simulations rather belong here
+       typedef map<SProfileParamSet,
+                   map<string, // channel
+                       ach::CModelRun>>
+               TModrunSetMap;
+       TModrunSetMap
+               modrun_sets;  // a bunch (from, to) per each fftable channel
+};
+
+
+
+
+
+typedef size_t sid_t;
+
+
+class CSubject : public SSubjectId {
+
+       void operator=( const CSubject&) = delete;
+       CSubject () = delete;
+
+    public:
+       CSubject (const CSubject& rv)
+             : agh::SSubjectId (rv),
+               _status (rv._status),
+               _id (rv._id),
+               _dir (rv._dir)
+               {}
+
+       CSubject (const string& dir, sid_t id)
+             : agh::SSubjectId (dir.substr( dir.rfind('/')+1)),
+               _status (0),
+               _id (id),
+               _dir (dir)
+               {}
+
+      // identification
+       const char*
+       dir() const
+               { return _dir.c_str(); }
+
+       int try_update_subject_details( const agh::SSubjectId& j)
+               { return SSubjectId::update_from( j); }
+
+       float age( const string& d) const; // age when recordings in this 
session were made
+       float age() const; // now
+       float age_rel( time_t) const;
+
+       bool operator==( const CSubject &o) const
+               { return id == o.id; }
+       bool operator==( const string& n) const
+               { return SSubjectId::id == n; }
+       bool operator==( sid_t id) const
+               { return _id == id; }
+
+       // all episode sequences, all channels forming a session
+       // using CMSessionSet = map<string, // session name
+       //                       SEpisodeSequence>;
+       typedef map<string, // session name
+                   SEpisodeSequence>
+               CMSessionSet;
+       CMSessionSet
+               measurements;
+
+       bool
+       have_session( const string& d) const
+               {
+                       return measurements.find(d) != measurements.end();
+               }
+
+    private:
+       int     _status;
+       sid_t   _id; // eventually to allow distinctly identifiable namesakes 
in different groups
+
+       string  _dir;
+};
+
+} // namespace agh
+
+#endif
+
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: 8
+// tab-width: 8
+// c-basic-offset: 8
+// End:
diff --git a/upstream/src/aghermann/expdesign/tree-scanner.cc 
b/upstream/src/aghermann/expdesign/tree-scanner.cc
index 6d9f99a..70eee13 100644
--- a/upstream/src/aghermann/expdesign/tree-scanner.cc
+++ b/upstream/src/aghermann/expdesign/tree-scanner.cc
@@ -16,7 +16,7 @@
 
 #include "common/alg.hh"
 #include "libsigfile/all.hh"
-#include "primaries.hh"
+#include "expdesign.hh"
 
 
 using namespace std;
@@ -42,7 +42,7 @@ agh::CExpDesign::TMsmtCollectProgressIndicatorFun
 // let them be
 
 int
-agh::CSubject::SEpisodeSequence::
+agh::SEpisodeSequence::
 add_one( sigfile::CTypedSource&& Fmc,
         const metrics::psd::SPPack& fft_params,
         const metrics::swu::SPPack& swu_params,
@@ -72,7 +72,7 @@ add_one( sigfile::CTypedSource&& Fmc,
 
        } else { // same as SEpisode() but done on an existing one
              // check that the edf source being added has exactly the same 
timestamp and duration
-               printf( "CSubject::SEpisodeSequence::add_one( \"%s\") try 
in-place\n",
+               printf( "SEpisodeSequence::add_one( \"%s\") try in-place\n",
                        Fmc().filename());
                if ( fabs( difftime( Ei->start_time(), Fmc().start_time())) > 1 
)
                        return AGH_EPSEQADD_TOOFAR;
@@ -405,7 +405,7 @@ compute_profiles()
                        R.mc_profile.compute();
                };
        TRecordingReportFun G =
-               [&]( const CJGroup&, const CSubject&, const string&, const 
CSubject::SEpisode&, const CRecording& R,
+               [&]( const CJGroup&, const CSubject&, const string&, const 
SEpisode&, const CRecording& R,
                     size_t i, size_t total)
                {
                        only_progress_fun(
diff --git a/upstream/src/aghermann/main.cc b/upstream/src/aghermann/main.cc
index 2d410f6..ae6c419 100644
--- a/upstream/src/aghermann/main.cc
+++ b/upstream/src/aghermann/main.cc
@@ -19,7 +19,7 @@
 #include <unique/unique.h>
 
 #include "globals.hh"
-#include "expdesign/primaries.hh"
+#include "expdesign/expdesign.hh"
 #include "ui/globals.hh"
 #include "ui/ui.hh"
 #include "ui/sm/sm.hh"
diff --git a/upstream/src/aghermann/model/achermann.cc 
b/upstream/src/aghermann/model/achermann.cc
index fa7489c..622c95f 100644
--- a/upstream/src/aghermann/model/achermann.cc
+++ b/upstream/src/aghermann/model/achermann.cc
@@ -11,8 +11,6 @@
 
 #include <list>
 
-#include "aghermann/expdesign/profile.hh"
-#include "aghermann/expdesign/primaries.hh"
 #include "achermann-tunable.hh"
 #include "achermann.hh"
 
@@ -70,49 +68,6 @@ operator==( const SControlParamSet &rv) const
 
 
 
-int
-agh::CExpDesign::
-setup_modrun( const string& j, const string& d, const string& h,
-             const SProfileParamSet& profile_params0,
-             agh::ach::CModelRun** Rpp)
-{
-       try {
-               CSubject& J = subject_by_x(j);
-
-               if ( J.measurements[d].size() == 1 && ctl_params0.DBAmendment2 )
-                       return CProfile::TFlags::eamendments_ineffective;
-
-               if ( J.measurements[d].size() == 1 && tstep[ach::TTunable::rs] 
> 0. )
-                       return CProfile::TFlags::ers_nonsensical;
-
-               J.measurements[d].modrun_sets[profile_params0].insert(
-                       pair<string, ach::CModelRun> (
-                               h,
-                               ach::CModelRun (
-                                       J, d, h,
-                                       profile_params0,
-                                       ctl_params0,
-                                       tunables0))
-                       );
-               if ( Rpp )
-                       *Rpp = &J.measurements[d]
-                               . modrun_sets[profile_params0][h];
-
-       } catch (invalid_argument ex) { // thrown by CProfile ctor
-               fprintf( stderr, "CExpDesign::setup_modrun( %s, %s, %s): %s\n", 
j.c_str(), d.c_str(), h.c_str(), ex.what());
-               return -1;
-       } catch (out_of_range ex) {
-               fprintf( stderr, "CExpDesign::setup_modrun( %s, %s, %s): %s\n", 
j.c_str(), d.c_str(), h.c_str(), ex.what());
-               return -1;
-       } catch (int ex) { // thrown by CModelRun ctor
-               log_message( "CExpDesign::setup_modrun( %s, %s, %s): %s", 
j.c_str(), d.c_str(), h.c_str(), CProfile::explain_status(ex).c_str());
-               return ex;
-       }
-
-       return 0;
-}
-
-
 
 
 agh::ach::CModelRun::
diff --git a/upstream/src/aghermann/rk1968/rk1968.cc 
b/upstream/src/aghermann/rk1968/rk1968.cc
index 6a351de..70809e3 100644
--- a/upstream/src/aghermann/rk1968/rk1968.cc
+++ b/upstream/src/aghermann/rk1968/rk1968.cc
@@ -15,7 +15,8 @@
 #include "libsigfile/page.hh"
 #include "libsigfile/typed-source.hh"
 #include "aghermann/expdesign/recording.hh"
-#include "aghermann/expdesign/primaries.hh"
+#include "aghermann/expdesign/subject.hh"
+#include "aghermann/expdesign/expdesign.hh"
 #include "libmetrics/bands.hh"
 
 #include "rk1968.hh"
@@ -26,7 +27,7 @@ using namespace agh::rk1968;
 
 int
 CScoreAssistant::
-score( agh::CSubject::SEpisode& E)
+score( agh::SEpisode& E)
 {
        forward_list<agh::CRecording*> HH;
        for ( auto &R : E.recordings )
@@ -54,7 +55,7 @@ score( agh::CSubject::SEpisode& E)
                int decision = 0;
                for ( ; Di != courses_delta.end(); ++Di, ++Ti )
                        decision +=
-                               ( (*Di)[p] > (*Ti)[p] * 1.5 );
+                               ( (*Di)[p] > (*Ti)[p] * nrem3_delta_theta_ratio 
);
                if ( decision > 0 )
                        firstsource[p].mark( sigfile::SPage::TScore::nrem3);
        }
diff --git a/upstream/src/aghermann/rk1968/rk1968.hh 
b/upstream/src/aghermann/rk1968/rk1968.hh
index 228602c..070c3af 100644
--- a/upstream/src/aghermann/rk1968/rk1968.hh
+++ b/upstream/src/aghermann/rk1968/rk1968.hh
@@ -12,19 +12,24 @@
 #ifndef _AGH_RK1968_H
 #define _AGH_RK1968_H
 
-#include "aghermann/expdesign/primaries.hh"
+#include "aghermann/expdesign/forward-decls.hh"
 
 namespace agh {
 namespace rk1968 {
 
 struct SScoreAssistantPPack {
+       double  nrem3_delta_theta_ratio;
+
+       SScoreAssistantPPack ()
+             : nrem3_delta_theta_ratio (1.5)
+               {}
 };
 
-class CScoreAssistant {
+class CScoreAssistant
+  : public SScoreAssistantPPack {
 
     public:
-       int score( agh::CSubject::SEpisode&);
-
+       int score( agh::SEpisode&);
 };
 
 
diff --git a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc 
b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
index 4b0e6cb..27aec76 100644
--- a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
+++ b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
@@ -179,17 +179,17 @@ iExpBasicSADetectUltradianCycles_activate_cb(
 
        using namespace agh;
        CExpDesign::TEpisodeFilterFun filter =
-               [&ED]( agh::CSubject::SEpisode& E) -> bool
+               [&ED]( agh::SEpisode& E) -> bool
                {
                        return E.recordings.find( *ED._AghHi) != 
E.recordings.end();
                };
        CExpDesign::TEpisodeOpFun F =
-               [&ED]( agh::CSubject::SEpisode& E)
+               [&ED]( agh::SEpisode& E)
                {
                        ED.do_detect_ultradian_cycle( E.recordings.at( 
*ED._AghHi));
                };
        CExpDesign::TEpisodeReportFun reporter =
-               [&ED]( const agh::CJGroup&, const agh::CSubject& J, const 
string&, const agh::CSubject::SEpisode& E,
+               [&ED]( const agh::CJGroup&, const agh::CSubject& J, const 
string&, const agh::SEpisode& E,
                       size_t i, size_t n)
                {
                        ED.sb_main_progress_indicator(
@@ -249,7 +249,7 @@ iExpGloballyDetectArtifacts_activate_cb(
        CExpDesign::TRecordingOpFun op;
        CExpDesign::TRecordingFilterFun filter;
        CExpDesign::TRecordingReportFun reporter =
-               [&]( const CJGroup&, const CSubject& J, const string& D, const 
CSubject::SEpisode& E, const CRecording& R,
+               [&]( const CJGroup&, const CSubject& J, const string& D, const 
SEpisode& E, const CRecording& R,
                     size_t i, size_t total)
                {
                        ED.sb_main_progress_indicator(
diff --git a/upstream/src/aghermann/ui/mw/measurements_cb.cc 
b/upstream/src/aghermann/ui/mw/measurements_cb.cc
index 0b95d03..f1a82ad 100644
--- a/upstream/src/aghermann/ui/mw/measurements_cb.cc
+++ b/upstream/src/aghermann/ui/mw/measurements_cb.cc
@@ -200,7 +200,7 @@ iSubjectTimelineDetectUltradianCycle_activate_cb(
        const gpointer userdata)
 {
        auto& ED = *(SExpDesignUI*)userdata;
-       agh::CSubject::SEpisode *Ep;
+       agh::SEpisode *Ep;
        if ( ED.using_subject && (Ep = ED.using_subject->using_episode) ) {
                auto& R = Ep->recordings.at(*ED._AghHi);
                SBusyBlock bb (ED.wMainWindow);
diff --git a/upstream/src/aghermann/ui/mw/mw.cc 
b/upstream/src/aghermann/ui/mw/mw.cc
index d551253..e1a1f6e 100644
--- a/upstream/src/aghermann/ui/mw/mw.cc
+++ b/upstream/src/aghermann/ui/mw/mw.cc
@@ -18,7 +18,7 @@
 #include "libmetrics/page-metrics-base.hh"
 #include "libmetrics/mc-artifacts.hh"
 #include "libmetrics/bands.hh"
-#include "aghermann/expdesign/primaries.hh"
+//#include "aghermann/expdesign/expdesign.hh"
 #include "aghermann/model/beersma.hh"
 #include "aghermann/ui/misc.hh"
 #include "aghermann/ui/sf/sf.hh"
diff --git a/upstream/src/aghermann/ui/mw/mw.hh 
b/upstream/src/aghermann/ui/mw/mw.hh
index 6321a56..ee35837 100644
--- a/upstream/src/aghermann/ui/mw/mw.hh
+++ b/upstream/src/aghermann/ui/mw/mw.hh
@@ -24,7 +24,7 @@
 #include "common/config-validate.hh"
 #include "libmetrics/mc-artifacts.hh"
 #include "aghermann/model/forward-decls.hh"
-#include "aghermann/expdesign/primaries.hh"
+#include "aghermann/expdesign/expdesign.hh"
 #include "aghermann/ui/ui.hh"
 #include "aghermann/ui/ui++.hh"
 #include "aghermann/ui/forward-decls.hh"
@@ -67,11 +67,11 @@ class SExpDesignUI
                        *cprofile;
                void create_cprofile();
 
-               list<agh::CSubject::SEpisode>&
+               list<agh::SEpisode>&
                sepisodesequence() const
                        { return csubject.measurements[*_p._p._AghDi].episodes; 
}
 
-               agh::CSubject::SEpisode
+               agh::SEpisode
                        *using_episode;
                bool is_episode_focused() const
                        { return using_episode != nullptr; }
@@ -186,13 +186,13 @@ class SExpDesignUI
       // inventory
        // full-path annotations
        struct SAnnotation
-             : public agh::CSubject::SEpisode::SAnnotation {
+             : public agh::SEpisode::SAnnotation {
                agh::CSubject& csubject;
                const string& session;
-               agh::CSubject::SEpisode& sepisode;
-               SAnnotation (agh::CSubject& j, const string& d, 
agh::CSubject::SEpisode& e,
-                            agh::CSubject::SEpisode::SAnnotation& a)
-                     : agh::CSubject::SEpisode::SAnnotation (a),
+               agh::SEpisode& sepisode;
+               SAnnotation (agh::CSubject& j, const string& d, agh::SEpisode& 
e,
+                            agh::SEpisode::SAnnotation& a)
+                     : agh::SEpisode::SAnnotation (a),
                        csubject (j), session (d), sepisode (e)
                        {}
        };
diff --git a/upstream/src/aghermann/ui/mw/populate.cc 
b/upstream/src/aghermann/ui/mw/populate.cc
index 3045c13..9372f08 100644
--- a/upstream/src/aghermann/ui/mw/populate.cc
+++ b/upstream/src/aghermann/ui/mw/populate.cc
@@ -13,7 +13,7 @@
 #include <cstring>
 #include <sstream>
 
-#include "aghermann/expdesign/primaries.hh"
+#include "aghermann/expdesign/expdesign.hh"
 #include "aghermann/model/beersma.hh"
 #include "aghermann/ui/misc.hh"
 #include "mw.hh"
diff --git a/upstream/src/aghermann/ui/sf/sf.hh 
b/upstream/src/aghermann/ui/sf/sf.hh
index 7620da7..6a908d6 100644
--- a/upstream/src/aghermann/ui/sf/sf.hh
+++ b/upstream/src/aghermann/ui/sf/sf.hh
@@ -22,9 +22,9 @@
 #include "common/config-validate.hh"
 #include "libsigproc/winfun.hh"
 #include "libsigproc/sigproc.hh"
-#include "aghermann/patterns/patterns.hh"
 #include "libmetrics/mc-artifacts.hh"
-#include "aghermann/expdesign/primaries.hh"
+#include "aghermann/patterns/patterns.hh"
+#include "aghermann/expdesign/forward-decls.hh"
 #include "aghermann/ica/ica.hh"
 #include "aghermann/ui/globals.hh"
 #include "aghermann/ui/ui++.hh"
@@ -62,11 +62,11 @@ class SScoringFacility
        agh::CSubject&
                _csubject;
        string  _session;
-       agh::CSubject::SEpisode&
+       agh::SEpisode&
                _sepisode;
     public:
        agh::CSubject&                  csubject() const { return _csubject; }
-       agh::CSubject::SEpisode&        sepisode() const { return _sepisode; }
+       agh::SEpisode&  sepisode() const { return _sepisode; }
        const string&                   session()  const { return _session;  }
 
       // channels

-- 
Alioth's /git/debian-med/git-commit-notice on 
/srv/git.debian.org/git/debian-med/aghermann.git

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

Reply via email to