OpenMS
Loading...
Searching...
No Matches
RankData Struct Reference

Rank items (1-based) with SciPy-like tie handling. More...

#include <OpenMS/MATH/STATISTICS/RankData.h>

Public Types

enum class  Method {
  Average , Min , Max , Dense ,
  Ordinal
}
 
enum class  NaNPolicy { Propagate , Omit , Raise }
 

Static Public Member Functions

template<class T >
static std::vector< double > rankdata (const std::vector< T > &a, Method method=Method::Average, NaNPolicy nan_policy=NaNPolicy::Propagate)
 
static std::vector< double > rankdata_double (const std::vector< double > &a, Method m=Method::Average, NaNPolicy p=NaNPolicy::Propagate)
 
static std::vector< double > rankdata_float (const std::vector< float > &a, Method m=Method::Average, NaNPolicy p=NaNPolicy::Propagate)
 
static std::vector< double > rankdata_int (const std::vector< int > &a, Method m=Method::Average, NaNPolicy p=NaNPolicy::Propagate)
 

Detailed Description

Rank items (1-based) with SciPy-like tie handling.

Replicates scipy.stats.rankdata(a, method=..., nan_policy=...), flattened/1D semantics. Tie methods:

  • average: average of ranks for ties
  • min: minimum rank for ties (aka "competition")
  • max: maximum rank for ties
  • dense: like "min" but next unique value increases rank by 1
  • ordinal: break ties by original order (stable), all ranks distinct

NaN handling:

  • propagate: if any NaN in input, every output is NaN (matches SciPy 1.16.2 docs)
  • omit: ignore NaNs when ranking; NaN positions in output remain NaN
  • raise: throw std::invalid_argument if any NaN is present

Ranks start at 1, matching SciPy.

Template Parameters
TNumeric type (float/double/integers supported; integers are internally promoted).

Member Enumeration Documentation

◆ Method

enum class Method
strong
Enumerator
Average 
Min 
Max 
Dense 
Ordinal 

◆ NaNPolicy

enum class NaNPolicy
strong
Enumerator
Propagate 
Omit 
Raise 

Member Function Documentation

◆ rankdata()

template<class T >
static std::vector< double > rankdata ( const std::vector< T > &  a,
Method  method = Method::Average,
NaNPolicy  nan_policy = NaNPolicy::Propagate 
)
inlinestatic

◆ rankdata_double()

static std::vector< double > rankdata_double ( const std::vector< double > &  a,
Method  m = Method::Average,
NaNPolicy  p = NaNPolicy::Propagate 
)
inlinestatic

◆ rankdata_float()

static std::vector< double > rankdata_float ( const std::vector< float > &  a,
Method  m = Method::Average,
NaNPolicy  p = NaNPolicy::Propagate 
)
inlinestatic

◆ rankdata_int()

static std::vector< double > rankdata_int ( const std::vector< int > &  a,
Method  m = Method::Average,
NaNPolicy  p = NaNPolicy::Propagate 
)
inlinestatic