44#include <QSharedDataPointer>
45#include <QSharedPointer>
84 using SPtr = QSharedPointer<FiffCov>;
86 using UPtr = std::unique_ptr<FiffCov>;
88 using SDPtr = QSharedDataPointer<FiffCov>;
102 FiffCov(QIODevice& p_IODevice);
113 static bool read(QIODevice& p_IODevice,
FiffCov& p_cov);
154 FiffCov pick_channels(
const QStringList& p_include = defaultQStringList,
const QStringList& p_exclude = defaultQStringList);
183 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;
206 const Eigen::MatrixXi& events,
207 const QList<int>& eventCodes,
212 bool doBaseline =
false,
213 bool removeMean =
true,
214 unsigned int ignoreMask = 0,
230 bool removeMean =
true);
239 bool save(
const QString& fileName)
const;
292 return this->
dim <= -1;
299 bool t_bIsShort =
true;
300 out <<
"#### Fiff Covariance ####\n";
301 out <<
"\tKind: " << p_FiffCov.
kind << std::endl;
302 out <<
"\tdiag: " << p_FiffCov.
diag << std::endl;
303 out <<
"\tdim: " << p_FiffCov.
dim << std::endl;
304 out <<
"\tnames " << p_FiffCov.
names.size() <<
":\n\t";
307 qint32 nchan = p_FiffCov.
names.size() > 6 ? 6 : p_FiffCov.
names.size();
308 for (qint32 i = 0; i < nchan / 2; ++i)
309 out << p_FiffCov.
names[i].toUtf8().constData() <<
" ";
311 for (qint32 i = p_FiffCov.
names.size() - nchan / 2; i < p_FiffCov.
names.size(); ++i)
312 out << p_FiffCov.
names[i].toUtf8().constData() <<
" ";
316 out <<
"\tdata " << p_FiffCov.
data.rows() <<
" x " << p_FiffCov.
data.cols() <<
":\n\t";
318 qint32 nrows = p_FiffCov.
data.rows() > 6 ? 6 : p_FiffCov.
data.rows();
319 qint32 ncols = p_FiffCov.
data.cols() > 6 ? 6 : p_FiffCov.
data.cols();
320 for (qint32 i = 0; i < nrows / 2; ++i) {
321 for (qint32 j = 0; j < ncols / 2; ++j)
322 out << p_FiffCov.
data(i, j) <<
" ";
324 for (qint32 j = p_FiffCov.
data.cols() - ncols / 2; j < p_FiffCov.
data.cols(); ++j)
325 out << p_FiffCov.
data(i, j) <<
" ";
329 for (qint32 i = p_FiffCov.
data.rows() - nrows / 2; i < p_FiffCov.
data.rows(); ++i) {
330 for (qint32 j = 0; j < ncols / 2; ++j)
331 out << p_FiffCov.
data(i, j) <<
" ";
333 for (qint32 j = p_FiffCov.
data.cols() - ncols / 2; j < p_FiffCov.
data.cols(); ++j)
334 out << p_FiffCov.
data(i, j) <<
" ";
340 out <<
"\tprojectors " << p_FiffCov.
projs.size() <<
":\n";
341 for (qint32 i = 0; i < p_FiffCov.
projs.size(); ++i)
342 out <<
"\t" << p_FiffCov.
projs[i];
345 out <<
"\tbads " << p_FiffCov.
bads.size() <<
":\n\t";
346 for (qint32 i = 0; i < p_FiffCov.
bads.size(); ++i)
347 out << p_FiffCov.
bads[i].toUtf8().constData() <<
" ";
349 out <<
"\n\tfree: " << p_FiffCov.
nfree << std::endl;
351 out <<
"\teig " << p_FiffCov.
eig.size() <<
":\n\t";
353 qint32 nrows = p_FiffCov.
eig.size() > 6 ? 6 : p_FiffCov.
eig.size();
354 for (qint32 i = 0; i < nrows / 2; ++i)
355 out << p_FiffCov.
eig[i] <<
" ";
357 for (qint32 i = p_FiffCov.
eig.size() - nrows / 2; i < p_FiffCov.
eig.size(); ++i)
358 out << p_FiffCov.
eig[i] <<
" ";
362 out <<
"\n\teigvec " << p_FiffCov.
eigvec.rows() <<
" x " << p_FiffCov.
eigvec.cols() <<
":\n\t";
364 qint32 nrows = p_FiffCov.
eigvec.rows() > 6 ? 6 : p_FiffCov.
eigvec.rows();
365 qint32 ncols = p_FiffCov.
eigvec.cols() > 6 ? 6 : p_FiffCov.
eigvec.cols();
366 for (qint32 i = 0; i < nrows / 2; ++i) {
367 for (qint32 j = 0; j < ncols / 2; ++j)
368 out << p_FiffCov.
eigvec(i, j) <<
" ";
370 for (qint32 j = p_FiffCov.
eigvec.cols() - ncols / 2; j < p_FiffCov.
eigvec.cols(); ++j)
371 out << p_FiffCov.
eigvec(i, j) <<
" ";
375 for (qint32 i = p_FiffCov.
eigvec.rows() - nrows / 2; i < p_FiffCov.
eigvec.rows(); ++i) {
376 for (qint32 j = 0; j < ncols / 2; ++j)
377 out << p_FiffCov.
eigvec(i, j) <<
" ";
379 for (qint32 j = p_FiffCov.
eigvec.cols() - ncols / 2; j < p_FiffCov.
eigvec.cols(); ++j)
380 out << p_FiffCov.
eigvec(i, j) <<
" ";
389#ifndef metatype_fiffcovsptr
390#define metatype_fiffcovsptr
394#ifndef metatype_fiffcov
395#define metatype_fiffcov
Full FIFF measurement metadata: everything from FIFFB_MEAS / FIFFB_MEAS_INFO needed to interpret a re...
Export/import macros and build-info accessors for the FIFFLIB shared library.
#define FIFFSHARED_EXPORT
SSP projection item: a named projection vector set with active/desired flags, parsed from FIFFB_PROJ_...
Q_DECLARE_METATYPE(QSharedPointer< FIFFLIB::FiffCov >)
Primitive scalar typedefs and forward-compatible aliases backing the FIFF type system.
FIFF file I/O, in-memory data structures and high-level readers/writers.
std::ostream & operator<<(std::ostream &out, const FIFFLIB::FiffCov &p_FiffCov)
FIFF noise / data covariance: matrix, channel names, kind, applied projectors, bads,...
std::unique_ptr< FiffCov > UPtr
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, const RejectionParams *rej=nullptr)
friend std::ostream & operator<<(std::ostream &out, const FIFFLIB::FiffCov &p_FiffCov)
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
QSharedDataPointer< FiffCov > SDPtr
std::unique_ptr< const FiffCov > ConstUPtr
static FiffCov compute_from_epochs(const QList< QList< Eigen::MatrixXd > > &epochs, const FiffInfo &info, bool removeMean=true)
FiffCov pick_channels(const QStringList &p_include=defaultQStringList, const QStringList &p_exclude=defaultQStringList)
QSharedPointer< FiffCov > SPtr
static FiffCov computeGrandAverage(const QList< FiffCov > &covs)
FiffCov & operator=(const FiffCov &rhs)
static bool read(QIODevice &p_IODevice, FiffCov &p_cov)
FiffCov prepare_noise_cov(const FiffInfo &p_info, const QStringList &p_chNames) const
bool save(const QString &fileName) const
QSharedPointer< const FiffCov > ConstSPtr
Artifact-rejection thresholds for the MNE-C batch averaging pipeline (gradiometer / magnetometer / EE...
Full FIFF measurement info: per-channel descriptors, sampling and filter setup, projectors,...
Continuous FIFF raw recording: FiffInfo plus a random-access directory of FIFF_DATA_BUFFER tags.