87 using SPtr = QSharedPointer<FiffCov>;
89 using UPtr = std::unique_ptr<FiffCov>;
91 using SDPtr = QSharedDataPointer<FiffCov>;
105 FiffCov(QIODevice &p_IODevice);
146 FiffCov pick_channels(
const QStringList &p_include = defaultQStringList,
const QStringList &p_exclude = defaultQStringList);
175 FiffCov regularize(
const FiffInfo& p_info,
double p_fMag = 0.1,
double p_fGrad = 0.1,
double p_fEeg = 0.1,
bool p_bProj =
true, QStringList p_exclude = defaultQStringList)
const;
197 const Eigen::MatrixXi &events,
198 const QList<int> &eventCodes,
203 bool doBaseline =
false,
204 bool removeMean =
true,
205 unsigned int ignoreMask = 0,
215 bool save(
const QString &fileName)
const;
276 bool t_bIsShort =
true;
277 out <<
"#### Fiff Covariance ####\n";
278 out <<
"\tKind: " << p_FiffCov.
kind << std::endl;
279 out <<
"\tdiag: " << p_FiffCov.
diag << std::endl;
280 out <<
"\tdim: " << p_FiffCov.
dim << std::endl;
281 out <<
"\tnames " << p_FiffCov.
names.size() <<
":\n\t";
285 qint32 nchan = p_FiffCov.
names.size() > 6 ? 6 : p_FiffCov.
names.size();
286 for(qint32 i = 0; i < nchan/2; ++i)
287 out << p_FiffCov.
names[i].toUtf8().constData() <<
" ";
289 for(qint32 i = p_FiffCov.
names.size() - nchan/2; i < p_FiffCov.
names.size(); ++i)
290 out << p_FiffCov.
names[i].toUtf8().constData() <<
" ";
294 out <<
"\tdata " << p_FiffCov.
data.rows() <<
" x " << p_FiffCov.
data.cols() <<
":\n\t";
297 qint32 nrows = p_FiffCov.
data.rows() > 6 ? 6 : p_FiffCov.
data.rows();
298 qint32 ncols = p_FiffCov.
data.cols() > 6 ? 6 : p_FiffCov.
data.cols();
299 for(qint32 i = 0; i < nrows/2; ++i)
301 for(qint32 j = 0; j < ncols/2; ++j)
302 out << p_FiffCov.
data(i,j) <<
" ";
304 for(qint32 j = p_FiffCov.
data.cols() - ncols/2; j < p_FiffCov.
data.cols(); ++j)
305 out << p_FiffCov.
data(i,j) <<
" ";
309 for(qint32 i = p_FiffCov.
data.rows()-nrows/2; i < p_FiffCov.
data.rows(); ++i)
311 for(qint32 j = 0; j < ncols/2; ++j)
312 out << p_FiffCov.
data(i,j) <<
" ";
314 for(qint32 j = p_FiffCov.
data.cols() - ncols/2; j < p_FiffCov.
data.cols(); ++j)
315 out << p_FiffCov.
data(i,j) <<
" ";
321 out <<
"\tprojectors " << p_FiffCov.
projs.size() <<
":\n";
322 for(qint32 i = 0; i < p_FiffCov.
projs.size(); ++i)
323 out <<
"\t" << p_FiffCov.
projs[i];
326 out <<
"\tbads " << p_FiffCov.
bads.size() <<
":\n\t";
327 for(qint32 i = 0; i < p_FiffCov.
bads.size(); ++i)
328 out << p_FiffCov.
bads[i].toUtf8().constData() <<
" ";
330 out <<
"\n\tfree: " << p_FiffCov.
nfree << std::endl;
332 out <<
"\teig " << p_FiffCov.
eig.size() <<
":\n\t";
335 qint32 nrows = p_FiffCov.
eig.size() > 6 ? 6 : p_FiffCov.
eig.size();
336 for(qint32 i = 0; i < nrows/2; ++i)
337 out << p_FiffCov.
eig[i] <<
" ";
339 for(qint32 i = p_FiffCov.
eig.size() - nrows/2; i < p_FiffCov.
eig.size(); ++i)
340 out << p_FiffCov.
eig[i] <<
" ";
344 out <<
"\n\teigvec " << p_FiffCov.
eigvec.rows() <<
" x " << p_FiffCov.
eigvec.cols() <<
":\n\t";
347 qint32 nrows = p_FiffCov.
eigvec.rows() > 6 ? 6 : p_FiffCov.
eigvec.rows();
348 qint32 ncols = p_FiffCov.
eigvec.cols() > 6 ? 6 : p_FiffCov.
eigvec.cols();
349 for(qint32 i = 0; i < nrows/2; ++i)
351 for(qint32 j = 0; j < ncols/2; ++j)
352 out << p_FiffCov.
eigvec(i,j) <<
" ";
354 for(qint32 j = p_FiffCov.
eigvec.cols() - ncols/2; j < p_FiffCov.
eigvec.cols(); ++j)
355 out << p_FiffCov.
eigvec(i,j) <<
" ";
359 for(qint32 i = p_FiffCov.
eigvec.rows() - nrows/2; i < p_FiffCov.
eigvec.rows(); ++i)
361 for(qint32 j = 0; j < ncols/2; ++j)
362 out << p_FiffCov.
eigvec(i,j) <<
" ";
364 for(qint32 j = p_FiffCov.
eigvec.cols() - ncols/2; j < p_FiffCov.
eigvec.cols(); ++j)
365 out << p_FiffCov.
eigvec(i,j) <<
" ";
FiffCov regularize(const FiffInfo &p_info, double p_fMag=0.1, double p_fGrad=0.1, double p_fEeg=0.1, bool p_bProj=true, QStringList p_exclude=defaultQStringList) const
static FiffCov compute_from_epochs(const FiffRawData &raw, const Eigen::MatrixXi &events, const QList< int > &eventCodes, float tmin, float tmax, float bmin=0.0f, float bmax=0.0f, bool doBaseline=false, bool removeMean=true, unsigned int ignoreMask=0, float delay=0.0f)