v2.0.0
Loading...
Searching...
No Matches
fiff_proj.h
Go to the documentation of this file.
1//=============================================================================================================
27
28#ifndef FIFF_PROJ_H
29#define FIFF_PROJ_H
30
31//=============================================================================================================
32// INCLUDES
33//=============================================================================================================
34
35#include "fiff_global.h"
36#include "fiff_types.h"
37#include "fiff_named_matrix.h"
38
39//=============================================================================================================
40// QT INCLUDES
41//=============================================================================================================
42
43#include <QSharedPointer>
44#include <QString>
45#include <QStringList>
46#include <QMap>
47
48//=============================================================================================================
49// EIGEN INCLUDES
50//=============================================================================================================
51
52#include <Eigen/Core>
53#include <memory>
54
55//=============================================================================================================
56// DEFINE NAMESPACE FIFFLIB
57//=============================================================================================================
58
59namespace FIFFLIB
60{
61
62//=============================================================================================================
63// FORWARD DECLARATIONS
64//=============================================================================================================
65
66class FiffRawData;
67class FiffEvoked;
68
69//=============================================================================================================
82{
83public:
84 using SPtr = QSharedPointer<FiffProj>;
85 using ConstSPtr = QSharedPointer<const FiffProj>;
86 using UPtr = std::unique_ptr<FiffProj>;
87 using ConstUPtr = std::unique_ptr<const FiffProj>;
88
89 //=========================================================================================================
93 FiffProj();
94
95 //=========================================================================================================
101 FiffProj(const FiffProj& p_FiffProj);
102
103 //=========================================================================================================
114 FiffProj& operator=(const FiffProj& other) = default;
115
116 //=========================================================================================================
125 explicit FiffProj(fiff_int_t p_kind,
126 bool p_active,
127 QString p_desc,
128 FiffNamedMatrix& p_data);
129
130 //=========================================================================================================
134 ~FiffProj();
135
136 //=========================================================================================================
142 static void activate_projs(QList<FiffProj>& p_qListFiffProj);
143
144 //=========================================================================================================
160 static fiff_int_t make_projector(const QList<FiffProj>& projs,
161 const QStringList& ch_names,
162 Eigen::MatrixXd& proj,
163 const QStringList& bads = defaultQStringList,
164 Eigen::MatrixXd& U = defaultMatrixXd);
165
166 //=========================================================================================================
185 static QList<FiffProj> compute_from_raw(const FiffRawData& raw,
186 const Eigen::MatrixXi& events,
187 int eventCode,
188 float tmin,
189 float tmax,
190 int nGrad,
191 int nMag,
192 int nEeg,
193 const QMap<QString, double>& mapReject = QMap<QString, double>());
194
195 //=========================================================================================================
210 static QList<FiffProj> compute_from_evoked(const FiffEvoked& evoked, int nGrad = 2, int nMag = 2, int nEeg = 2);
211
212 //=========================================================================================================
221 friend std::ostream& operator<<(std::ostream& out, const FIFFLIB::FiffProj& p_FiffProj);
222
223public:
225 bool active;
226 QString desc;
227
229};
230
231//=============================================================================================================
232// INLINE DEFINITIONS
233//=============================================================================================================
234
235inline std::ostream& operator<<(std::ostream& out, const FIFFLIB::FiffProj& p_FiffProj)
236{
237 out << "#### Fiff Projector ####\n";
238 out << "\tKind: " << p_FiffProj.kind << std::endl;
239 out << "\tactive: " << p_FiffProj.active << std::endl;
240 out << "\tdesc: " << p_FiffProj.desc.toUtf8().constData() << std::endl;
241 out << "\tdata:\n\t" << *p_FiffProj.data.data() << std::endl;
242 return out;
243}
244} // NAMESPACE
245
246#endif // FIFF_PROJ_H
Export/import macros and build-info accessors for the FIFFLIB shared library.
#define FIFFSHARED_EXPORT
Definition fiff_global.h:44
Matrix paired with row and column name lists, the on-disk form of FIFFB_PROJ_ITEM / FIFFB_MNE_NAMED_M...
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)
Definition fiff_cov.h:297
qint32 fiff_int_t
Definition fiff_types.h:86
Single averaged evoked response: time axis, data, baseline, channel info and averaging metadata.
Definition fiff_evoked.h:77
FIFF named matrix: dense / sparse Eigen matrix plus row-name and column-name string lists.
QSharedDataPointer< FiffNamedMatrix > SDPtr
Single SSP projection item: kind, active flag, desired flag and the named projection vector matrix.
Definition fiff_proj.h:82
FiffNamedMatrix::SDPtr data
Definition fiff_proj.h:228
fiff_int_t kind
Definition fiff_proj.h:224
static QList< FiffProj > compute_from_raw(const FiffRawData &raw, const Eigen::MatrixXi &events, int eventCode, float tmin, float tmax, int nGrad, int nMag, int nEeg, const QMap< QString, double > &mapReject=QMap< QString, double >())
std::unique_ptr< FiffProj > UPtr
Definition fiff_proj.h:86
static fiff_int_t make_projector(const QList< FiffProj > &projs, const QStringList &ch_names, Eigen::MatrixXd &proj, const QStringList &bads=defaultQStringList, Eigen::MatrixXd &U=defaultMatrixXd)
static void activate_projs(QList< FiffProj > &p_qListFiffProj)
static QList< FiffProj > compute_from_evoked(const FiffEvoked &evoked, int nGrad=2, int nMag=2, int nEeg=2)
std::unique_ptr< const FiffProj > ConstUPtr
Definition fiff_proj.h:87
FiffProj & operator=(const FiffProj &other)=default
friend std::ostream & operator<<(std::ostream &out, const FIFFLIB::FiffProj &p_FiffProj)
Definition fiff_proj.h:235
QSharedPointer< FiffProj > SPtr
Definition fiff_proj.h:84
QSharedPointer< const FiffProj > ConstSPtr
Definition fiff_proj.h:85
Continuous FIFF raw recording: FiffInfo plus a random-access directory of FIFF_DATA_BUFFER tags.