OpenMS
Loading...
Searching...
No Matches
MatrixEigen.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg $
7// --------------------------------------------------------------------------
8
9#pragma once
10
11// NOTE: This is an INTERNAL header file and should NOT be included in public headers.
12// It provides Eigen-based utilities for internal OpenMS algorithms.
13// Users of the public API should use Matrix.h directly.
14
16#include <Eigen/Core>
17
18namespace OpenMS
19{
21 template <typename Value>
22 using EigenMatrixType = Eigen::Matrix<Value, Eigen::Dynamic, Eigen::Dynamic>;
23
25 template <typename Value>
26 using EigenVectorType = Eigen::Matrix<Value, Eigen::Dynamic, 1>;
27
29 template <typename Value>
30 using EigenRowVectorType = Eigen::Matrix<Value, 1, Eigen::Dynamic>;
31
43 template <typename Value>
44 Eigen::Map<EigenMatrixType<Value>> eigenView(Matrix<Value>& mat)
45 {
46 return Eigen::Map<EigenMatrixType<Value>>(mat.data(), mat.rows(), mat.cols());
47 }
48
58 template <typename Value>
59 Eigen::Map<const EigenMatrixType<Value>> eigenView(const Matrix<Value>& mat)
60 {
61 return Eigen::Map<const EigenMatrixType<Value>>(mat.data(), mat.rows(), mat.cols());
62 }
63
72 template <typename Value>
73 Eigen::Map<EigenVectorType<Value>> eigenVectorView(std::vector<Value>& vec)
74 {
75 return Eigen::Map<EigenVectorType<Value>>(vec.data(), vec.size());
76 }
77
81 template <typename Value>
82 Eigen::Map<const EigenVectorType<Value>> eigenVectorView(const std::vector<Value>& vec)
83 {
84 return Eigen::Map<const EigenVectorType<Value>>(vec.data(), vec.size());
85 }
86
94 template <typename Value>
95 Eigen::Map<EigenVectorType<Value>> eigenVectorView(Value* data, size_t size)
96 {
97 return Eigen::Map<EigenVectorType<Value>>(data, size);
98 }
99
103 template <typename Value>
104 Eigen::Map<const EigenVectorType<Value>> eigenVectorView(const Value* data, size_t size)
105 {
106 return Eigen::Map<const EigenVectorType<Value>>(data, size);
107 }
108
117 template <typename Value>
118 Eigen::Map<EigenMatrixType<Value>> eigenMatrixView(Value* data, size_t rows, size_t cols)
119 {
120 return Eigen::Map<EigenMatrixType<Value>>(data, rows, cols);
121 }
122
126 template <typename Value>
127 Eigen::Map<const EigenMatrixType<Value>> eigenMatrixView(const Value* data, size_t rows, size_t cols)
128 {
129 return Eigen::Map<const EigenMatrixType<Value>>(data, rows, cols);
130 }
131
132} // namespace OpenMS
A 2D matrix class with efficient buffer access for NumPy interoperability.
Definition Matrix.h:35
Size cols() const
Number of columns.
Definition Matrix.h:84
Size rows() const
Number of rows.
Definition Matrix.h:81
Value * data()
Pointer to raw data buffer (column-major storage)
Definition Matrix.h:157
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Eigen::Matrix< Value, Eigen::Dynamic, 1 > EigenVectorType
Type alias for Eigen dynamic column vector (internal use only)
Definition MatrixEigen.h:26
Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > EigenMatrixType
Type alias for Eigen dynamic matrix (internal use only)
Definition MatrixEigen.h:22
Eigen::Matrix< Value, 1, Eigen::Dynamic > EigenRowVectorType
Type alias for Eigen dynamic row vector (internal use only)
Definition MatrixEigen.h:30
Eigen::Map< EigenMatrixType< Value > > eigenView(Matrix< Value > &mat)
Create a mutable Eigen::Map view of an OpenMS Matrix.
Definition MatrixEigen.h:44
Eigen::Map< EigenVectorType< Value > > eigenVectorView(std::vector< Value > &vec)
Create an Eigen::Map view of a std::vector as a column vector.
Definition MatrixEigen.h:73
Eigen::Map< EigenMatrixType< Value > > eigenMatrixView(Value *data, size_t rows, size_t cols)
Create an Eigen::Map view of a raw pointer + dimensions as a matrix.
Definition MatrixEigen.h:118