CARLsim  6.1.0
CARLsim: a GPU-accelerated SNN simulator
group_monitor.cpp
Go to the documentation of this file.
1 /* * Copyright (c) 2016 Regents of the University of California. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions
5 * are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * 3. The names of its contributors may not be used to endorse or promote
15 * products derived from this software without specific prior written
16 * permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 *
30 * *********************************************************************************************** *
31 * CARLsim
32 * created by: (MDR) Micah Richert, (JN) Jayram M. Nageswaran
33 * maintained by:
34 * (MA) Mike Avery <averym@uci.edu>
35 * (MB) Michael Beyeler <mbeyeler@uci.edu>,
36 * (KDC) Kristofor Carlson <kdcarlso@uci.edu>
37 * (TSC) Ting-Shuo Chou <tingshuc@uci.edu>
38 * (HK) Hirak J Kashyap <kashyaph@uci.edu>
39 *
40 * CARLsim v1.0: JM, MDR
41 * CARLsim v2.0/v2.1/v2.2: JM, MDR, MA, MB, KDC
42 * CARLsim3: MB, KDC, TSC
43 * CARLsim4: TSC, HK
44 * CARLsim5: HK, JX, KC
45 * CARLsim6: LN, JX, KC, KW
46 *
47 * CARLsim available from http://socsci.uci.edu/~jkrichma/CARLsim/
48 * Ver 12/31/2016
49 */
50 #include <group_monitor.h>
51 
52 #include <group_monitor_core.h> // GroupMonitor private implementation
53 #include <user_errors.h> // fancy user error messages
54 #include <carlsim_datastructures.h> // Neuromodulator
55 
56 #include <sstream> // std::stringstream
57 
58 // we aren't using namespace std so pay attention!
60  // make sure the pointer is NULL
61  groupMonitorCorePtr_ = groupMonitorCorePtr;
62 }
63 
65  delete groupMonitorCorePtr_;
66 }
67 
68 // +++++ PUBLIC METHODS: +++++++++++++++++++++++++++++++++++++++++++++++//
69 
71  return groupMonitorCorePtr_->isRecording();
72 }
73 
75  std::string funcName = "startRecording()";
77 
78  groupMonitorCorePtr_->startRecording();
79 }
80 
82  std::string funcName = "stopRecording()";
84 
85  groupMonitorCorePtr_->stopRecording();
86 }
87 
89  std::string funcName = "getRecordingTotalTime()";
91 
92  return groupMonitorCorePtr_->getRecordingTotalTime();
93 }
94 
96  std::string funcName = "getRecordingLastStartTime()";
98 
99  return groupMonitorCorePtr_->getRecordingLastStartTime();
100 }
101 
103  std::string funcName = "getRecordingStartTime()";
104  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
105 
106  return groupMonitorCorePtr_->getRecordingStartTime();
107 }
108 
110  std::string funcName = "getRecordingStopTime()";
111  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
112 
113  return groupMonitorCorePtr_->getRecordingStopTime();
114 }
115 
117  return groupMonitorCorePtr_->getPersistentData();
118 }
119 
120 void GroupMonitor::setPersistentData(bool persistentData) {
121  groupMonitorCorePtr_->setPersistentData(persistentData);
122 }
123 
124 std::vector<float> GroupMonitor::getDataVector(){
125  std::string funcName = "getDataVector()";
126  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
127 
128  return groupMonitorCorePtr_->getDataVector();
129 }
130 
131 std::vector<float> GroupMonitor::getDataVector(int transmitter) {
132  std::string funcName = "getDataVector(int)";
133  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
134 
135  return groupMonitorCorePtr_->getDataVector((GroupMonitorCore::transmitter_t) transmitter);
136 }
137 
138 
139 
140 
141 std::vector<int> GroupMonitor::getTimeVector(){
142  std::string funcName = "getTimeVector()";
143  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
144 
145  return groupMonitorCorePtr_->getTimeVector();
146 }
147 
149  std::string funcName = "getPeakTimeVector()";
150  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
151 
152  return groupMonitorCorePtr_->getPeakTimeVector();
153 }
154 
156  std::string funcName = "getSortedPeakTimeVector()";
157  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
158 
159  return groupMonitorCorePtr_->getSortedPeakTimeVector();
160 }
161 
162 std::vector<float> GroupMonitor::getPeakValueVector() {
163  std::string funcName = "getPeakValueVector()";
164  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
165 
166  return groupMonitorCorePtr_->getPeakValueVector();
167 }
168 
170  std::string funcName = "getSortedPeakValueVector()";
171  UserErrors::assertTrue(!isRecording(), UserErrors::CANNOT_BE_ON, funcName, "Recording");
172 
173  return groupMonitorCorePtr_->getSortedPeakValueVector();
174 }
std::vector< float > getDataVector()
get the group data
int getRecordingLastStartTime()
returns the timestamp of the last startRecording in ms
int getRecordingTotalTime()
Returns the total recording time (ms)
std::vector< int > getSortedPeakTimeVector()
get the sorted timestamps for peak values
bool isRecording()
returns recording status
int getRecordingTotalTime()
returns the total recorded time in ms
int getRecordingLastStartTime()
Returns the simulation time (ms) of the last call to startRecording()
std::vector< int > getTimeVector()
get the timestamps for group data
std::vector< float > getPeakValueVector()
return a vector of peak values in group data
std::vector< float > getPeakValueVector()
get the peak values of group data
void setPersistentData(bool persistentData)
sets status of PersistentData mode
std::vector< int > getTimeVector()
return a vector of the timestamps for group data
int getRecordingStopTime()
returns the timestamp of stopRecording
static void assertTrue(bool statement, errorType errorIfAssertionFails, std::string errorFunc, std::string errorMsgPrefix="", std::string errorMsgSuffix="")
simple wrapper for assert statement
Definition: user_errors.cpp:15
std::vector< int > getSortedPeakTimeVector()
return a vector of the timestamps for peak values in group data (sorted in decending order) ...
void stopRecording()
Ends a recording period.
bool getPersistentData()
Returns a flag that indicates whether PersistentMode is on (true) or off (false)
std::vector< float > getSortedPeakValueVector()
return a vector of peak values in group data (sorted in decending order)
parameter cannot be on
Definition: user_errors.h:40
int getRecordingStopTime()
Returns the simulation time (ms) of the last call to stopRecording()
virtual ~GroupMonitor()
GroupMonitor destructor.
parameter must be on
Definition: user_errors.h:54
std::vector< float > getDataVector()
return the group data vector
void startRecording()
starts recording group data
std::vector< float > getSortedPeakValueVector()
get the sorted peak values of group data
int getRecordingStartTime()
retunrs the timestamp of the first startRecording in ms
GroupMonitor(GroupMonitorCore *groupMonitorCorePtr)
GroupMonitor constructor.
void setPersistentData(bool persistentData)
Sets PersistentMode either on (true) or off (false)
void stopRecording()
stops recording group data
std::vector< int > getPeakTimeVector()
get the timestamps for peak values
GroupMonitor private core implementation.
bool getPersistentData()
returns status of PersistentData mode
std::vector< int > getPeakTimeVector()
return a vector of the timestamps for peak values in group data
int getRecordingStartTime()
Returns the simulation time (ms) of the first call to startRecording()
bool isRecording()
Recording status (true=recording, false=not recording)
void startRecording()
Starts a new recording period.