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 typedef QSharedPointer<FiffSparseMatrix> SPtr;
85 typedef QSharedPointer<const FiffSparseMatrix> ConstSPtr;
86 typedef std::unique_ptr<FiffSparseMatrix> UPtr;
87
88 //=========================================================================================================
93
94 //=========================================================================================================
98 FiffSparseMatrix(const FiffSparseMatrix& mat) = default;
99
100 //=========================================================================================================
105
106 //=========================================================================================================
111
112 //=========================================================================================================
117
118 //=========================================================================================================
122 ~FiffSparseMatrix() = default;
123
124 //============================= fiff_sparse.c =============================
125
133 static std::vector<int> fiff_get_matrix_sparse_dims(FIFFLIB::FiffTag::SPtr& tag);
134
143
144 //============================= mne_sparse_matop.c =============================
145
158 int ncol,
159 int *nnz,
160 int **colindex,
161 float **vals);
162
169
175 inline bool is_empty() const;
176
183 Eigen::SparseMatrix<double> toEigenSparse() const;
184
193 static FiffSparseMatrix fromEigenSparse(const Eigen::SparseMatrix<double>& mat);
194
195public:
200 Eigen::VectorXf data;
201 Eigen::VectorXi inds;
202 Eigen::VectorXi ptrs;
203
204};
205
206//=============================================================================================================
207// INLINE DEFINITIONS
208//=============================================================================================================
209
210inline bool FiffSparseMatrix::is_empty() const
211{
212 return nz <= 0 || data.size() == 0;
213}
214
215} // NAMESPACE FIFFLIB
216
217#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
QSharedPointer< FiffSparseMatrix > SPtr
std::unique_ptr< FiffSparseMatrix > UPtr
static FiffSparseMatrix fromEigenSparse(const Eigen::SparseMatrix< double > &mat)
FiffSparseMatrix & operator=(const FiffSparseMatrix &)=default
FiffSparseMatrix(const FiffSparseMatrix &mat)=default
FiffSparseMatrix(FiffSparseMatrix &&mat)=default
static FiffSparseMatrix::UPtr fiff_get_float_sparse_matrix(FIFFLIB::FiffTag::SPtr &tag)
static FiffSparseMatrix::UPtr create_sparse_rcs(int nrow, int ncol, int *nnz, int **colindex, float **vals)
FiffSparseMatrix & operator=(FiffSparseMatrix &&)=default
QSharedPointer< const FiffSparseMatrix > ConstSPtr
static std::vector< int > fiff_get_matrix_sparse_dims(FIFFLIB::FiffTag::SPtr &tag)
FiffSparseMatrix::UPtr mne_add_upper_triangle_rcs()
Eigen::SparseMatrix< double > toEigenSparse() const
QSharedPointer< FiffTag > SPtr
Definition fiff_tag.h:155