v2.0.0
Loading...
Searching...
No Matches
fiff_sparse_matrix.h
Go to the documentation of this file.
1//=============================================================================================================
36
37#ifndef FIFFSPARSEMATRIX_H
38#define FIFFSPARSEMATRIX_H
39
40//=============================================================================================================
41// INCLUDES
42//=============================================================================================================
43
44#include "fiff_global.h"
45#include "fiff_types.h"
46#include "fiff_tag.h"
47
48//=============================================================================================================
49// EIGEN INCLUDES
50//=============================================================================================================
51
52#include <Eigen/Core>
53#include <Eigen/SparseCore>
54
55//=============================================================================================================
56// STL INCLUDES
57//=============================================================================================================
58
59#include <memory>
60
61//=============================================================================================================
62// QT INCLUDES
63//=============================================================================================================
64
65#include <QSharedPointer>
66#include <QDebug>
67
68//=============================================================================================================
69// DEFINE NAMESPACE FIFFLIB
70//=============================================================================================================
71
72namespace FIFFLIB
73{
74
75//=============================================================================================================
82{
83public:
84 using SPtr = QSharedPointer<FiffSparseMatrix>;
85 using ConstSPtr = QSharedPointer<const FiffSparseMatrix>;
86 using UPtr = std::unique_ptr<FiffSparseMatrix>;
87 using ConstUPtr = std::unique_ptr<const FiffSparseMatrix>;
88
89 //=========================================================================================================
94
95 //=========================================================================================================
99 FiffSparseMatrix(const FiffSparseMatrix& mat) = default;
100
101 //=========================================================================================================
106
107 //=========================================================================================================
112
113 //=========================================================================================================
118
119 //=========================================================================================================
123 ~FiffSparseMatrix() = default;
124
125 //============================= fiff_sparse.c =============================
126
134 static std::vector<int> fiff_get_matrix_sparse_dims(const FIFFLIB::FiffTag::UPtr& tag);
135
144
145 //============================= mne_sparse_matop.c =============================
146
159 int ncol,
160 int *nnz,
161 int **colindex,
162 float **vals);
163
170
177
183 inline bool is_empty() const;
184
191 Eigen::SparseMatrix<double> toEigenSparse() const;
192
201 static FiffSparseMatrix fromEigenSparse(const Eigen::SparseMatrix<double>& mat);
202
203public:
208 Eigen::VectorXf data;
209 Eigen::VectorXi inds;
210 Eigen::VectorXi ptrs;
211
212};
213
214//=============================================================================================================
215// INLINE DEFINITIONS
216//=============================================================================================================
217
218inline bool FiffSparseMatrix::is_empty() const
219{
220 return nz <= 0 || data.size() == 0;
221}
222
223} // NAMESPACE FIFFLIB
224
225#endif // FIFFSPARSEMATRIX_H
FiffTag class declaration, which provides fiff tag I/O and processing methods.
Fiff library export/import macros.
#define FIFFSHARED_EXPORT
Definition fiff_global.h:52
Old fiff_type declarations - replace them.
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
qint32 fiff_int_t
Definition fiff_types.h:89
static FiffSparseMatrix fromEigenSparse(const Eigen::SparseMatrix< double > &mat)
FiffSparseMatrix & operator=(const FiffSparseMatrix &)=default
FiffSparseMatrix(const FiffSparseMatrix &mat)=default
FiffSparseMatrix(FiffSparseMatrix &&mat)=default
QSharedPointer< FiffSparseMatrix > SPtr
static std::vector< int > fiff_get_matrix_sparse_dims(const FIFFLIB::FiffTag::UPtr &tag)
QSharedPointer< const FiffSparseMatrix > ConstSPtr
FiffSparseMatrix::UPtr pickLowerTriangleRcs() const
static FiffSparseMatrix::UPtr create_sparse_rcs(int nrow, int ncol, int *nnz, int **colindex, float **vals)
FiffSparseMatrix & operator=(FiffSparseMatrix &&)=default
static FiffSparseMatrix::UPtr fiff_get_float_sparse_matrix(const FIFFLIB::FiffTag::UPtr &tag)
std::unique_ptr< const FiffSparseMatrix > ConstUPtr
std::unique_ptr< FiffSparseMatrix > UPtr
FiffSparseMatrix::UPtr mne_add_upper_triangle_rcs()
Eigen::SparseMatrix< double > toEigenSparse() const
std::unique_ptr< FiffTag > UPtr
Definition fiff_tag.h:158