55 #include <QSharedDataPointer>
56 #include <QSharedPointer>
58 #include <QStringList>
85 using namespace Eigen;
97 typedef QSharedPointer<FiffCov>
SPtr;
99 typedef QSharedDataPointer<FiffCov>
SDPtr;
113 FiffCov(QIODevice &p_IODevice);
141 inline bool isEmpty()
const;
154 FiffCov pick_channels(
const QStringList &p_include = defaultQStringList,
const QStringList &p_exclude = defaultQStringList);
165 FiffCov prepare_noise_cov(
const FiffInfo& p_info,
const QStringList& p_chNames)
const;
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;
204 friend std::ostream& operator<<(std::ostream& out,
const FIFFLIB::FiffCov &p_FiffCov);
227 return this->dim <= -1;
235 bool t_bIsShort =
true;
236 out <<
"#### Fiff Covariance ####\n";
237 out <<
"\tKind: " << p_FiffCov.
kind << std::endl;
238 out <<
"\tdiag: " << p_FiffCov.
diag << std::endl;
239 out <<
"\tdim: " << p_FiffCov.
dim << std::endl;
240 out <<
"\tnames " << p_FiffCov.
names.size() <<
":\n\t";
244 qint32 nchan = p_FiffCov.
names.size() > 6 ? 6 : p_FiffCov.
names.size();
245 for(qint32 i = 0; i < nchan/2; ++i)
246 out << p_FiffCov.
names[i].toLatin1().constData() <<
" ";
248 for(qint32 i = p_FiffCov.
names.size() - nchan/2; i < p_FiffCov.
names.size(); ++i)
249 out << p_FiffCov.
names[i].toLatin1().constData() <<
" ";
253 out <<
"\tdata " << p_FiffCov.
data.rows() <<
" x " << p_FiffCov.
data.cols() <<
":\n\t";
256 qint32 nrows = p_FiffCov.
data.rows() > 6 ? 6 : p_FiffCov.
data.rows();
257 qint32 ncols = p_FiffCov.
data.cols() > 6 ? 6 : p_FiffCov.
data.cols();
258 for(qint32 i = 0; i < nrows/2; ++i)
260 for(qint32 j = 0; j < ncols/2; ++j)
261 out << p_FiffCov.
data(i,j) <<
" ";
263 for(qint32 j = p_FiffCov.
data.cols() - ncols/2; j < p_FiffCov.
data.cols(); ++j)
264 out << p_FiffCov.
data(i,j) <<
" ";
268 for(qint32 i = p_FiffCov.
data.rows()-nrows/2; i < p_FiffCov.
data.rows(); ++i)
270 for(qint32 j = 0; j < ncols/2; ++j)
271 out << p_FiffCov.
data(i,j) <<
" ";
273 for(qint32 j = p_FiffCov.
data.cols() - ncols/2; j < p_FiffCov.
data.cols(); ++j)
274 out << p_FiffCov.
data(i,j) <<
" ";
280 out <<
"\tprojectors " << p_FiffCov.
projs.size() <<
":\n";
281 for(qint32 i = 0; i < p_FiffCov.
projs.size(); ++i)
282 out <<
"\t" << p_FiffCov.
projs[i];
285 out <<
"\tbads " << p_FiffCov.
bads.size() <<
":\n\t";
286 for(qint32 i = 0; i < p_FiffCov.
bads.size(); ++i)
287 out << p_FiffCov.
bads[i].toLatin1().constData() <<
" ";
289 out <<
"\n\tfree: " << p_FiffCov.
nfree << std::endl;
291 out <<
"\teig " << p_FiffCov.
eig.size() <<
":\n\t";
294 qint32 nrows = p_FiffCov.
eig.size() > 6 ? 6 : p_FiffCov.
eig.size();
295 for(qint32 i = 0; i < nrows/2; ++i)
296 out << p_FiffCov.
eig[i] <<
" ";
298 for(qint32 i = p_FiffCov.
eig.size() - nrows/2; i < p_FiffCov.
eig.size(); ++i)
299 out << p_FiffCov.
eig[i] <<
" ";
303 out <<
"\n\teigvec " << p_FiffCov.
eigvec.rows() <<
" x " << p_FiffCov.
eigvec.cols() <<
":\n\t";
306 qint32 nrows = p_FiffCov.
eigvec.rows() > 6 ? 6 : p_FiffCov.
eigvec.rows();
307 qint32 ncols = p_FiffCov.
eigvec.cols() > 6 ? 6 : p_FiffCov.
eigvec.cols();
308 for(qint32 i = 0; i < nrows/2; ++i)
310 for(qint32 j = 0; j < ncols/2; ++j)
311 out << p_FiffCov.
eigvec(i,j) <<
" ";
313 for(qint32 j = p_FiffCov.
eigvec.cols() - ncols/2; j < p_FiffCov.
eigvec.cols(); ++j)
314 out << p_FiffCov.
eigvec(i,j) <<
" ";
318 for(qint32 i = p_FiffCov.
eigvec.rows() - nrows/2; i < p_FiffCov.
eigvec.rows(); ++i)
320 for(qint32 j = 0; j < ncols/2; ++j)
321 out << p_FiffCov.
eigvec(i,j) <<
" ";
323 for(qint32 j = p_FiffCov.
eigvec.cols() - ncols/2; j < p_FiffCov.
eigvec.cols(); ++j)
324 out << p_FiffCov.
eigvec(i,j) <<
" ";
QSharedDataPointer< FiffCov > SDPtr
FIFF measurement file information.
QSharedPointer< FiffCov > SPtr
FiffProj class declaration.
Old fiff_type declarations - replace them.
QSharedPointer< const FiffCov > ConstSPtr
FiffInfo class declaration.
#define FIFFSHARED_EXPORT
Fiff library export/import macros.