27constexpr int FAIL = -1;
63 qWarning(
"Field computation function is missing in fwd_comp_field");
79 if (comp->
work.size() == 0)
89 return comp->
set->apply(
true, res, comp->
work);
98 QList<FiffChInfo> chs;
99 QList<FiffChInfo> compchs;
106 if (!coils || coils->
ncoil() <= 0) {
107 qWarning(
"Coil data missing in fwd_make_ctf_comp_coils");
111 for (k = 0; k < coils->
ncoil(); k++) {
114 chs[k].ch_name = coil->
chname;
115 chs[k].chpos.coil_type = coil->
type;
118 nchan = coils->
ncoil();
123 compchs[k].ch_name = coil->
chname;
124 compchs[k].chpos.coil_type = coil->
type;
129 res =
set->make_comp(chs, nchan, compchs, ncomp);
144 auto comp = std::make_unique<FwdCompData>();
147 comp->set = std::make_shared<MNECTFCompDataSet>(*
set);
150 comp->comp_coils =
comp_coils->dup_coil_set();
152 qWarning(
"No coils to duplicate");
170 qWarning(
"Field computation function is missing in fwd_comp_field_vec");
196 for (
int k = 0; k < 3; k++) {
197 Eigen::VectorXf resRow = res.row(k).transpose();
198 Eigen::VectorXf workRow = comp->
vec_work.row(k).transpose();
199 if (comp->
set->apply(
true, resRow, workRow) ==
FAIL)
201 res.row(k) = resRow.transpose();
208int FwdCompData::fwd_comp_field_grad(
const Eigen::Vector3f& rd,
const Eigen::Vector3f& Q,
FwdCoilSet& coils, Eigen::Ref<Eigen::VectorXf> res, Eigen::Ref<Eigen::VectorXf> xgrad, Eigen::Ref<Eigen::VectorXf> ygrad, Eigen::Ref<Eigen::VectorXf> zgrad,
void*
client)
213 qCritical(
"Field and gradient computation function is missing in fwd_comp_field_grad");
229 if (comp->
work.size() == 0)
236 Eigen::VectorXf vw0 = comp->
vec_work.row(0).transpose();
237 Eigen::VectorXf vw1 = comp->
vec_work.row(1).transpose();
238 Eigen::VectorXf vw2 = comp->
vec_work.row(2).transpose();
241 comp->
vec_work.row(0) = vw0.transpose();
242 comp->
vec_work.row(1) = vw1.transpose();
243 comp->
vec_work.row(2) = vw2.transpose();
247 if (comp->
set->apply(
true, res, comp->
work) !=
OK)
250 vw0 = comp->
vec_work.row(0).transpose();
251 if (comp->
set->apply(
true, xgrad, vw0) !=
OK)
254 vw1 = comp->
vec_work.row(1).transpose();
255 if (comp->
set->apply(
true, ygrad, vw1) !=
OK)
258 vw2 = comp->
vec_work.row(2).transpose();
259 if (comp->
set->apply(
true, zgrad, vw2) !=
OK)
Primitive scalar typedefs and forward-compatible aliases backing the FIFF type system.
Software-gradiometer compensation wrapper that subtracts the reference-channel contribution from the ...
std::function< int(const Eigen::Vector3f &rd, FWDLIB::FwdCoilSet &coils, Eigen::Ref< Eigen::MatrixXf > res, void *client)> fwdVecFieldFunc
std::function< int(const Eigen::Vector3f &rd, const Eigen::Vector3f &Q, FWDLIB::FwdCoilSet &coils, Eigen::Ref< Eigen::VectorXf > res, void *client)> fwdFieldFunc
std::function< int(const Eigen::Vector3f &rd, const Eigen::Vector3f &Q, FWDLIB::FwdCoilSet &coils, Eigen::Ref< Eigen::VectorXf > res, Eigen::Ref< Eigen::VectorXf > xgrad, Eigen::Ref< Eigen::VectorXf > ygrad, Eigen::Ref< Eigen::VectorXf > zgrad, void *client)> fwdFieldGradFunc
Set of CTF compensation matrices plus the currently active grade.
Core MNE data structures (source spaces, source estimates, hemispheres).
FIFF file I/O, in-memory data structures and high-level readers/writers.
Forward modelling — BEM solver, spherical models, sensor/coil definitions and the lead-field assembly...
constexpr int FWD_COILC_EEG
Per-channel FIFF descriptor: identifiers, kind, calibration, coil type, channel-frame coil position a...
Single MEG sensor coil or EEG electrode — stores the coil-local frame and the (r_mag,...
Container of FwdCoil instances acting both as the in-memory image of the coil_def....
std::vector< FwdCoil::UPtr > coils
static int fwd_comp_field_grad(const Eigen::Vector3f &rd, const Eigen::Vector3f &Q, FwdCoilSet &coils, Eigen::Ref< Eigen::VectorXf > res, Eigen::Ref< Eigen::VectorXf > xgrad, Eigen::Ref< Eigen::VectorXf > ygrad, Eigen::Ref< Eigen::VectorXf > zgrad, void *client)
std::shared_ptr< FwdCoilSet > comp_coils
static int fwd_comp_field_vec(const Eigen::Vector3f &rd, FwdCoilSet &coils, Eigen::Ref< Eigen::MatrixXf > res, void *client)
fwdVecFieldFunc vec_field
static int fwd_comp_field(const Eigen::Vector3f &rd, const Eigen::Vector3f &Q, FwdCoilSet &coils, Eigen::Ref< Eigen::VectorXf > res, void *client)
fwdFieldGradFunc field_grad
static int fwd_make_ctf_comp_coils(MNELIB::MNECTFCompDataSet *set, FwdCoilSet *coils, FwdCoilSet *comp_coils)
static std::unique_ptr< FwdCompData > fwd_make_comp_data(MNELIB::MNECTFCompDataSet *set, FwdCoilSet *coils, FwdCoilSet *comp_coils, fwdFieldFunc field, fwdVecFieldFunc vec_field, fwdFieldGradFunc field_grad, void *client)
std::shared_ptr< MNELIB::MNECTFCompDataSet > set
Collection of CTF third-order gradient compensation operators.