44 #include <QDataStream>
45 #include <QSharedPointer>
72 , vertices(p_vertices)
83 : data(p_SourceEstimate.data)
84 , vertices(p_SourceEstimate.vertices)
85 , times(p_SourceEstimate.times)
86 , tmin(p_SourceEstimate.tmin)
87 , tstep(p_SourceEstimate.tstep)
99 if(!
read(p_IODevice, *
this))
101 printf(
"\tSource estimation not found.\n");
113 times = RowVectorXf();
125 qint32 rows = this->
data.rows();
127 p_sourceEstimateReduced.
data = MatrixXd::Zero(rows,n);
128 p_sourceEstimateReduced.
data = this->
data.block(0, start, rows, n);
130 p_sourceEstimateReduced.
times = RowVectorXf::Zero(n);
131 p_sourceEstimateReduced.
times = this->
times.block(0,start,1,n);
132 p_sourceEstimateReduced.
tmin = p_sourceEstimateReduced.
times(0);
135 return p_sourceEstimateReduced;
143 QSharedPointer<QDataStream> t_pStream(
new QDataStream(&p_IODevice));
145 t_pStream->setFloatingPointPrecision(QDataStream::SinglePrecision);
146 t_pStream->setByteOrder(QDataStream::BigEndian);
147 t_pStream->setVersion(QDataStream::Qt_5_0);
149 if(!t_pStream->device()->open(QIODevice::ReadOnly))
152 QFile* t_pFile = qobject_cast<QFile*>(&p_IODevice);
154 printf(
"Reading source estimate from %s...", t_pFile->fileName().toUtf8().constData());
156 printf(
"Reading source estimate...");
159 *t_pStream >> p_stc.
tmin;
162 *t_pStream >> p_stc.
tstep;
166 *t_pStream >> t_nVertices;
167 p_stc.
vertices = VectorXi(t_nVertices);
169 for(quint32 i = 0; i < t_nVertices; ++i)
173 *t_pStream >> t_nTimePts;
177 p_stc.
data = MatrixXd(t_nVertices, t_nTimePts);
178 for(qint32 i = 0; i < p_stc.
data.array().size(); ++i)
182 p_stc.
data.array()(i) = value;
186 p_stc.update_times();
189 t_pStream->device()->close();
202 QSharedPointer<QDataStream> t_pStream(
new QDataStream(&p_IODevice));
204 t_pStream->setFloatingPointPrecision(QDataStream::SinglePrecision);
205 t_pStream->setByteOrder(QDataStream::BigEndian);
206 t_pStream->setVersion(QDataStream::Qt_5_0);
208 if(!t_pStream->device()->open(QIODevice::WriteOnly))
210 printf(
"Failed to write source estimate!\n");
214 QFile* t_pFile = qobject_cast<QFile*>(&p_IODevice);
216 printf(
"Write source estimate to %s...", t_pFile->fileName().toUtf8().constData());
218 printf(
"Write source estimate...");
221 *t_pStream << (float)1000*this->
tmin;
223 *t_pStream << (float)1000*this->
tstep;
225 *t_pStream << (quint32)this->
vertices.size();
227 for(qint32 i = 0; i < this->
vertices.size(); ++i)
228 *t_pStream << (quint32)this->
vertices[i];
230 *t_pStream << (quint32)this->
data.cols();
234 for(qint32 i = 0; i < this->
data.array().size(); ++i)
235 *t_pStream << (
float)this->
data.array()(i);
238 t_pStream->device()->close();
247 void MNESourceEstimate::update_times()
253 for(
float i = 1; i < this->times.size(); ++i)
254 this->times[i] = this->times[i-1] + this->
tstep;
257 this->times = RowVectorXf();
MNESourceEstimate reduce(qint32 start, qint32 n)
MNESourceEstimate & operator=(const MNESourceEstimate &rhs)
bool write(QIODevice &p_IODevice)
MNESourceEstimate class declaration.
static bool read(QIODevice &p_IODevice, MNESourceEstimate &p_stc)