File: StatUtils.hpp

package info (click to toggle)
pbseqlib 5.3.5%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,020 kB
  • sloc: cpp: 77,250; python: 331; sh: 103; makefile: 41
file content (128 lines) | stat: -rw-r--r-- 7,177 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#ifndef _BLASR_STAT_UTILS_HPP_
#define _BLASR_STAT_UTILS_HPP_

#include <algorithm>
#include <cassert>
#include <climits>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <vector>

static const long FactorialTableLength = 21;

static const long long FactorialTable[] = {
    1L,                    //0
    1L,                    //1
    2L,                    //2
    6L,                    //3
    24L,                   //4
    120L,                  //5
    720L,                  //6
    5040L,                 //7
    40320L,                //8
    362880L,               //9
    3628800L,              //10
    39916800L,             //11
    479001600L,            //12
    6227020800LL,          //13
    87178291200LL,         //14
    1307674368000LL,       //15
    20922789888000LL,      //16
    355687428096000LL,     //17
    6402373705728000LL,    //18
    121645100408832000LL,  //19
    2432902008176640000LL  //20
};

static const float qnorm[] = {
    0.00,      0.00250,   0.00501,   0.00751,   0.0100248, 0.0125393, 0.0150457, 0.0175408,
    0.0200506, 0.0225647, 0.0250611, 0.0275717, 0.0300891, 0.0325931, 0.0351088, 0.0376059,
    0.0401181, 0.0426244, 0.0451313, 0.0476466, 0.0501537, 0.0526685, 0.0551768, 0.0576842,
    0.0601966, 0.0627038, 0.0652137, 0.0677392, 0.0702467, 0.0727575, 0.0752699, 0.0777852,
    0.080295,  0.0828113, 0.0853292, 0.0878418, 0.0903688, 0.0928765, 0.095392,  0.0979195,
    0.10043,   0.102954,  0.105478,  0.107994,  0.110512,  0.113035,  0.115563,  0.118083,
    0.120607,  0.123137,  0.125664,  0.128186,  0.130713,  0.133244,  0.135772,  0.138305,
    0.140837,  0.143367,  0.145904,  0.14843,   0.150967,  0.153507,  0.15604,   0.158573,
    0.161116,  0.163651,  0.166199,  0.168748,  0.171287,  0.173822,  0.176371,  0.178922,
    0.181467,  0.184019,  0.186569,  0.189112,  0.19167,   0.194223,  0.196777,  0.199337,
    0.201891,  0.204451,  0.207017,  0.209579,  0.212134,  0.214704,  0.217263,  0.219839,
    0.222406,  0.224971,  0.227549,  0.230116,  0.232695,  0.235260,  0.237849,  0.240428,
    0.243002,  0.245581,  0.248173,  0.250756,  0.25334,   0.255933,  0.258520,  0.261118,
    0.26371,   0.266315,  0.268900,  0.271509,  0.274117,  0.276717,  0.279314,  0.281921,
    0.284532,  0.287145,  0.289754,  0.292374,  0.294996,  0.29761,   0.300232,  0.302859,
    0.305487,  0.308105,  0.310732,  0.313366,  0.316003,  0.318635,  0.321276,  0.323913,
    0.326563,  0.329201,  0.331857,  0.334502,  0.337157,  0.339807,  0.342461,  0.345122,
    0.347787,  0.350451,  0.353119,  0.355785,  0.358454,  0.361132,  0.363806,  0.366484,
    0.36917,   0.371855,  0.374543,  0.377232,  0.379927,  0.382624,  0.385328,  0.388027,
    0.39072,   0.393437,  0.396148,  0.398857,  0.401579,  0.404289,  0.407016,  0.409731,
    0.412465,  0.415197,  0.417922,  0.420666,  0.423403,  0.426148,  0.428892,  0.431646,
    0.434391,  0.437152,  0.439914,  0.442672,  0.44544,   0.448219,  0.450981,  0.45376,
    0.45654,   0.459323,  0.462117,  0.464905,  0.467698,  0.470491,  0.473297,  0.476105,
    0.478915,  0.48172,   0.484549,  0.487361,  0.490189,  0.493015,  0.495853,  0.498682,
    0.501528,  0.504372,  0.507226,  0.510075,  0.512938,  0.515798,  0.518651,  0.521522,
    0.524401,  0.527279,  0.530169,  0.533049,  0.53594,   0.53883,   0.541737,  0.544649,
    0.547551,  0.550462,  0.553383,  0.556308,  0.559237,  0.562176,  0.565104,  0.568053,
    0.570997,  0.573953,  0.576911,  0.579874,  0.582846,  0.585819,  0.588790,  0.591776,
    0.594768,  0.597768,  0.600759,  0.60376,   0.606775,  0.60979,   0.612817,  0.615842,
    0.618879,  0.621914,  0.624957,  0.62800,   0.631069,  0.63412,   0.637195,  0.640264,
    0.643347,  0.646437,  0.649525,  0.652621,  0.655723,  0.658838,  0.661952,  0.665073,
    0.668203,  0.671345,  0.674482,  0.677636,  0.680795,  0.683962,  0.68713,   0.690304,
    0.69349,   0.696681,  0.699881,  0.703089,  0.706308,  0.709528,  0.712753,  0.715985,
    0.719224,  0.722473,  0.725735,  0.729009,  0.73227,   0.73555,   0.738844,  0.74214,
    0.745449,  0.748769,  0.752081,  0.75541,   0.758751,  0.762107,  0.765458,  0.768822,
    0.772195,  0.775574,  0.778965,  0.782367,  0.785774,  0.789192,  0.792612,  0.796053,
    0.799507,  0.802953,  0.80642,   0.809898,  0.813384,  0.816873,  0.820371,  0.823897,
    0.827412,  0.830958,  0.83449,   0.838056,  0.841624,  0.84519,   0.848787,  0.852385,
    0.855992,  0.859611,  0.86325,   0.866898,  0.870544,  0.874213,  0.877899,  0.881584,
    0.885292,  0.889005,  0.892736,  0.896476,  0.900224,  0.903991,  0.907766,  0.91156,
    0.915364,  0.91918,   0.92301,   0.926854,  0.93071,   0.93458,   0.938479,  0.94237,
    0.946296,  0.950225,  0.954165,  0.958123,  0.962092,  0.966083,  0.970097,  0.97411,
    0.978152,  0.98220,   0.986279,  0.990355,  0.994453,  0.99857,   1.00271,   1.00686,
    1.01103,   1.01522,   1.01942,   1.02365,   1.02789,   1.03215,   1.03643,   1.04073,
    1.04504,   1.04938,   1.05374,   1.05812,   1.06251,   1.06693,   1.07137,   1.07583,
    1.08031,   1.08482,   1.08934,   1.09389,   1.09846,   1.10306,   1.10768,   1.11232,
    1.11698,   1.12167,   1.12639,   1.13113,   1.13589,   1.14068,   1.14550,   1.15034,
    1.15522,   1.16011,   1.16504,   1.17000,   1.17498,   1.18000,   1.18504,   1.19011,
    1.19522,   1.20035,   1.20552,   1.21072,   1.21596,   1.22122,   1.22652,   1.23186,
    1.23723,   1.24264,   1.24808,   1.25356,   1.25908,   1.26464,   1.27023,   1.27587,
    1.28155,   1.28727,   1.29303,   1.29883,   1.30468,   1.31057,   1.31651,   1.32250,
    1.32853,   1.33462,   1.34075,   1.34693,   1.35317,   1.35946,   1.36580,   1.37220,
    1.37865,   1.38517,   1.39174,   1.39837,   1.40507,   1.41183,   1.41865,   1.42554,
    1.43250,   1.43953,   1.44663,   1.45380,   1.46105,   1.46838,   1.47579,   1.48328,
    1.49085,   1.49851,   1.50626,   1.51410,   1.52203,   1.53006,   1.53819,   1.54643,
    1.55477,   1.56322,   1.57178,   1.58046,   1.58926,   1.59819,   1.60724,   1.61643,
    1.62576,   1.63523,   1.64485,   1.65462,   1.66456,   1.67466,   1.68494,   1.69539,
    1.70604,   1.71688,   1.72793,   1.73919,   1.75068,   1.76241,   1.77438,   1.78661,
    1.79911,   1.81191,   1.82500,   1.83842,   1.85217,   1.86629,   1.88079,   1.89569,
    1.91103,   1.92683,   1.94313,   1.95996,   1.97736,   1.99539,   2.01409,   2.03352,
    2.05374,   2.07485,   2.09692,   2.12007,   2.14441,   2.17009,   2.19728,   2.22621,
    2.25712,   2.29036,   2.32634,   2.36561,   2.40891,   2.45726,   2.51214,   2.57582,
    2.65206,   2.74778,   2.87816,   3.09023,   10000};

inline int Choose(int a, int b);

void InitializeRandomGenerator(int value);

template <typename T>
void MeanVar(std::vector<T> &values, float &mean, float &var);

inline void InitializeRandomGeneratorWithTime()
{
    time_t t;
    srandom((unsigned)time(&t));
}

unsigned int RandomUnsignedInt(unsigned int randMax);

unsigned int RandomInt(int randMax);

unsigned int RandomInt(unsigned int min, unsigned int max);

float Random();

bool FindQNorm(float prob, float &nStdDev);

#include "StatUtilsImpl.hpp"

#endif