tatami_stats
Matrix statistics for tatami
Loading...
Searching...
No Matches
tatami_stats::grouped_sums Namespace Reference

Functions for computing dimension-wise grouped sums. More...

Classes

struct  Options
 Grouped summation options. More...
 

Functions

template<typename Value_ , typename Index_ , typename Group_ , typename Output_ >
void apply (bool row, const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, std::size_t num_groups, Output_ **output, const Options &sopt)
 
template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ >
std::vector< std::vector< Output_ > > by_row (const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, const Options &sopt)
 
template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ >
std::vector< std::vector< Output_ > > by_column (const tatami::Matrix< Value_, Index_ > &mat, const Group_ *group, const Options &sopt)
 

Detailed Description

Functions for computing dimension-wise grouped sums.

Function Documentation

◆ apply()

template<typename Value_ , typename Index_ , typename Group_ , typename Output_ >
void tatami_stats::grouped_sums::apply ( bool row,
const tatami::Matrix< Value_, Index_ > & mat,
const Group_ * group,
std::size_t num_groups,
Output_ ** output,
const Options & sopt )

Compute per-group sums for each element of a chosen dimension of a tatami::Matrix.

Template Parameters
Value_Numeric type of the matrix value.
Index_Integer type of the row/column indices.
Group_Integer type of the group assignments for each row.
Output_Numeric type of the output value. It is assumed that this is large enough to store the sums.
Parameters
rowWhether to compute group-wise sums within each row. If false, sums are computed within the column instead.
matInstance of a tatami::Matrix.
[in]groupPointer to an array of length equal to the number of columns (if row = true) or rows (otherwise). Each value should be an integer that specifies the group assignment. Values should lie in \([0, N)\) where \(N\) is the number of unique groups.
num_groupsNumber of groups, i.e., \(N\). This can be determined by calling tatami_stats::total_groups() on group.
[out]outputPointer to an array of pointers of length equal to the number of groups. Each inner pointer should reference an array of length equal to the number of rows (if row = true) or columns (otherwise). On output, this will contain the row/column sums for each group (indexed according to the assignment in group).
soptSummation options.

◆ by_row()

template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ >
std::vector< std::vector< Output_ > > tatami_stats::grouped_sums::by_row ( const tatami::Matrix< Value_, Index_ > & mat,
const Group_ * group,
const Options & sopt )

Wrapper around apply() for row-wise grouped sums.

Template Parameters
Output_Numeric type of the output value. It is assumed that this is large enough to store the sums.
Value_Numeric type of the matrix value.
Index_Integer type of the row/column indices.
Group_Integer type of the group assignments for each row.
Parameters
matInstance of a tatami::Matrix.
[in]groupPointer to an array of length equal to the number of columns. Each value should be an integer that specifies the group assignment. Values should lie in \([0, N)\) where \(N\) is the number of unique groups.
soptSummation options.
Returns
Vector of length equal to the number of groups. Each entry is a vector of length equal to the number of rows, containing the row-wise sums for the corresponding group.

◆ by_column()

template<typename Output_ = double, typename Value_ , typename Index_ , typename Group_ >
std::vector< std::vector< Output_ > > tatami_stats::grouped_sums::by_column ( const tatami::Matrix< Value_, Index_ > & mat,
const Group_ * group,
const Options & sopt )

Wrapper around apply() for column-wise grouped sums.

Template Parameters
Output_Numeric type of the output value. It is assumed that this is large enough to store the sums.
Value_Numeric type of the matrix value.
Index_Integer type of the row/column indices.
Group_Integer type of the group assignments for each row.
Parameters
matInstance of a tatami::Matrix.
[in]groupPointer to an array of length equal to the number of rows. Each value should be an integer that specifies the group assignment. Values should lie in \([0, N)\) where \(N\) is the number of unique groups.
soptSummation options.
Returns
Vector of length equal to the number of groups. Each entry is a vector of length equal to the number of columns, containing the column-wise sums for the corresponding group.