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