69 const MatrixXi& matEvents,
74 float fTBaselineFromS,
76 const QMap<QString,double>& mapReject,
77 const QStringList& lExcludeChs,
78 const RowVectorXi& picks)
91 QPair<float, float> baselinePair(fTBaselineFromS, fTBaselineToS);
95 if(!mapReject.isEmpty()){
101 lstEpochDataList.first()->epoch.cols());
107 const MatrixXi& matEvents,
112 float fTBaselineFromS,
114 const QMap<QString,double>& mapReject,
115 const FilterKernel& filterKernel,
116 const QStringList& lExcludeChs,
117 const RowVectorXi& picks)
124 MatrixXi selected = MatrixXi::Zero(1, matEvents.rows());
125 for (p = 0; p < matEvents.rows(); ++p)
127 if (matEvents(p,1) == 0 && matEvents(p,2) == eventType)
129 selected(0,count) = p;
133 selected.conservativeResize(1, count);
135 qInfo(
"[RTPROCESSINGLIB::computeFilteredAverage] %d matching events found",count);
139 RowVectorXi picksNew = picks;
140 if(picks.cols() <= 0) {
141 picksNew.resize(raw.
info.
chs.size());
142 for(
int i = 0; i < raw.
info.
chs.size(); ++i) {
152 std::unique_ptr<MNEEpochData> epoch;
153 int iFilterDelay = filterKernel.getFilterOrder()/2;
155 for (p = 0; p < count; ++p) {
157 event_samp = matEvents(selected(p),0);
158 from = event_samp + fTMinS*raw.
info.
sfreq;
159 to = event_samp + floor(fTMaxS*raw.
info.
sfreq + 0.5);
161 epoch = std::make_unique<MNEEpochData>();
163 if(raw.
read_raw_segment(epoch->epoch, timesDummy, from - iFilterDelay, to + iFilterDelay, picksNew)) {
168 times.resize(1, to-from+1);
169 for (qint32 i = 0; i < times.cols(); ++i)
170 times(0, i) = ((float)(from-event_samp+i)) / raw.
info.
sfreq;
173 epoch->event = eventType;
174 epoch->tmin = fTMinS;
175 epoch->tmax = fTMaxS;
182 if (epoch->bReject) {
187 if(!lstEpochDataList.isEmpty()) {
188 if(epoch->epoch.size() == lstEpochDataList.last()->epoch.size()) {
195 qWarning(
"[MNEEpochDataList::readEpochs] Can't read the event data segments.");
199 qInfo().noquote() <<
"[MNEEpochDataList::readEpochs] Read a total of"<< lstEpochDataList.size() <<
"epochs of type" << eventType <<
"and marked"<< dropCount <<
"for rejection.";
202 QPair<float, float> baselinePair(fTBaselineFromS, fTBaselineToS);
206 if(!mapReject.isEmpty()){
212 lstEpochDataList.first()->epoch.cols());
The FilterKernel class represents a filter object that generates the FIR filter coefficients using Pa...
MNEEpochDataList class declaration.
Core MNE data structures (source spaces, source estimates, hemispheres).
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
FIFFLIB::FiffEvoked computeAverage(const FIFFLIB::FiffRawData &raw, const Eigen::MatrixXi &matEvents, float fTMinS, float fTMaxS, qint32 eventType, bool bApplyBaseline, float fTBaselineFromS, float fTBaselineToS, const QMap< QString, double > &mapReject, const QStringList &lExcludeChs=QStringList(), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi())
FIFFLIB::FiffEvoked computeFilteredAverage(const FIFFLIB::FiffRawData &raw, const Eigen::MatrixXi &matEvents, float fTMinS, float fTMaxS, qint32 eventType, bool bApplyBaseline, float fTBaselineFromS, float fTBaselineToS, const QMap< QString, double > &mapReject, const FilterKernel &filterKernel, const QStringList &lExcludeChs=QStringList(), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi())
Eigen::MatrixXd filterData(const Eigen::MatrixXd &matData, int type, double dCenterfreq, double dBandwidth, double dTransition, double dSFreq, int iOrder=1024, int designMethod=FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi(), bool bUseThreads=true, bool bKeepOverhead=false)
FIFF raw measurement data.
bool read_raw_segment(Eigen::MatrixXd &data, Eigen::MatrixXd ×, fiff_int_t from=-1, fiff_int_t to=-1, const Eigen::RowVectorXi &sel=defaultRowVectorXi, bool do_debug=false) const
QSharedPointer< MNEEpochData > SPtr
FIFFLIB::FiffEvoked average(const FIFFLIB::FiffInfo &p_info, FIFFLIB::fiff_int_t first, FIFFLIB::fiff_int_t last, Eigen::VectorXi sel=FIFFLIB::defaultVectorXi, bool proj=false)
void applyBaselineCorrection(const QPair< float, float > &baseline)
static MNEEpochDataList readEpochs(const FIFFLIB::FiffRawData &raw, const Eigen::MatrixXi &events, float tmin, float tmax, qint32 event, const QMap< QString, double > &mapReject, const QStringList &lExcludeChs=QStringList(), const Eigen::RowVectorXi &picks=Eigen::RowVectorXi())
static bool checkForArtifact(const Eigen::MatrixXd &data, const FIFFLIB::FiffInfo &pFiffInfo, const QMap< QString, double > &mapReject, const QStringList &lExcludeChs=QStringList())