CARLsim
4.1.0
CARLsim: a GPU-accelerated SNN simulator
neuron_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
*
45
* CARLsim available from http://socsci.uci.edu/~jkrichma/CARLsim/
46
* Ver 05/24/2017
47
*/
48
49
#include <
neuron_monitor.h
>
50
51
#include <
neuron_monitor_core.h
>
// NeuronMonitor private implementation
52
#include <
user_errors.h
>
// fancy user error messages
53
54
#include <sstream>
// std::stringstream
55
#include <algorithm>
// std::transform
56
57
58
// we aren't using namespace std so pay attention!
59
NeuronMonitor::NeuronMonitor
(
NeuronMonitorCore
* neuronMonitorCorePtr){
60
// make sure the pointer is NULL
61
neuronMonitorCorePtr_ = neuronMonitorCorePtr;
62
}
63
64
NeuronMonitor::~NeuronMonitor
() {
65
delete
neuronMonitorCorePtr_;
66
}
67
68
void
NeuronMonitor::clear
(){
69
std::string funcName =
"clear()"
;
70
UserErrors::assertTrue
(!
isRecording
(),
UserErrors::CANNOT_BE_ON
, funcName,
"Recording"
);
71
72
neuronMonitorCorePtr_->
clear
();
73
}
74
75
bool
NeuronMonitor::isRecording
(){
76
return
neuronMonitorCorePtr_->
isRecording
();
77
}
78
79
void
NeuronMonitor::startRecording
() {
80
std::string funcName =
"startRecording()"
;
81
UserErrors::assertTrue
(!
isRecording
(),
UserErrors::CANNOT_BE_ON
, funcName,
"Recording"
);
82
83
neuronMonitorCorePtr_->
startRecording
();
84
}
85
86
void
NeuronMonitor::stopRecording
(){
87
std::string funcName =
"stopRecording()"
;
88
UserErrors::assertTrue
(
isRecording
(),
UserErrors::MUST_BE_ON
, funcName,
"Recording"
);
89
90
neuronMonitorCorePtr_->
stopRecording
();
91
}
92
93
void
NeuronMonitor::setLogFile
(
const
std::string& fileName) {
94
std::string funcName =
"setLogFile"
;
95
96
FILE* fid;
97
std::string fileNameLower = fileName;
98
std::transform(fileNameLower.begin(), fileNameLower.end(), fileNameLower.begin(), ::tolower);
99
100
if
(fileNameLower ==
"null"
) {
101
// user does not want a binary created
102
fid = NULL;
103
}
else
{
104
fid = fopen(fileName.c_str(),
"wb"
);
105
//printf("%s\n", fileName.c_str());
106
if
(fid==NULL) {
107
// default case: print error and exit
108
std::string fileError =
" Double-check file permissions and make sure directory exists."
;
109
UserErrors::assertTrue
(
false
,
UserErrors::FILE_CANNOT_OPEN
, funcName, fileName, fileError);
110
}
111
}
112
113
// tell new file id to core object
114
neuronMonitorCorePtr_->
setNeuronFileId
(fid);
115
}
116
117
void
NeuronMonitor::print
() {
118
std::string funcName =
"print()"
;
119
UserErrors::assertTrue
(!
isRecording
(),
UserErrors::CANNOT_BE_ON
, funcName,
"Recording"
);
120
121
neuronMonitorCorePtr_->
print
();
122
}
NeuronMonitor::~NeuronMonitor
~NeuronMonitor()
NeuronMonitor destructor.
Definition:
neuron_monitor.cpp:64
UserErrors::CANNOT_BE_ON
@ CANNOT_BE_ON
parameter cannot be on
Definition:
user_errors.h:38
user_errors.h
NeuronMonitor::isRecording
bool isRecording()
Definition:
neuron_monitor.cpp:75
NeuronMonitorCore::stopRecording
void stopRecording()
stops recording Neuron state
Definition:
neuron_monitor_core.cpp:155
UserErrors::MUST_BE_ON
@ MUST_BE_ON
parameter must be on
Definition:
user_errors.h:52
NeuronMonitorCore::isRecording
bool isRecording()
returns recording status
Definition:
neuron_monitor_core.h:72
UserErrors::FILE_CANNOT_OPEN
@ FILE_CANNOT_OPEN
could not open file
Definition:
user_errors.h:44
NeuronMonitor::clear
void clear()
Definition:
neuron_monitor.cpp:68
neuron_monitor_core.h
NeuronMonitorCore::setNeuronFileId
void setNeuronFileId(FILE *neuronFileId)
sets pointer to Neuron file
Definition:
neuron_monitor_core.cpp:177
NeuronMonitorCore::print
void print()
prints neuron states in human-readable format
Definition:
neuron_monitor_core.cpp:269
NeuronMonitor::stopRecording
void stopRecording()
Definition:
neuron_monitor.cpp:86
NeuronMonitorCore
Definition:
neuron_monitor_core.h:58
neuron_monitor.h
NeuronMonitor::setLogFile
void setLogFile(const std::string &logFileName)
Definition:
neuron_monitor.cpp:93
NeuronMonitor::NeuronMonitor
NeuronMonitor(NeuronMonitorCore *neuronMonitorCorePtr)
NeuronMonitor constructor.
Definition:
neuron_monitor.cpp:59
NeuronMonitor::print
void print()
Definition:
neuron_monitor.cpp:117
UserErrors::assertTrue
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
NeuronMonitorCore::clear
void clear()
deletes data from the neuron state vector
Definition:
neuron_monitor_core.cpp:100
NeuronMonitorCore::startRecording
void startRecording()
starts recording Neuron state
Definition:
neuron_monitor_core.cpp:125
NeuronMonitor::startRecording
void startRecording()
Definition:
neuron_monitor.cpp:79
carlsim
monitor
neuron_monitor.cpp
Generated on Sat Jul 11 2020 19:24:12 for CARLsim by
1.8.18