5#ifndef __MED_GEN_UTILS_H__
6#define __MED_GEN_UTILS_H__
11#include <MedUtils/MedUtils/MedGlobalRNG.h>
14#include <boost/algorithm/string/classification.hpp>
15#include <boost/algorithm/string/split.hpp>
25inline int date_to_days(
int date);
26inline int year_to_days(
int year) {
return date_to_days(year*10000+0701);}
27inline float get_age(
int date,
int byear) {
return ((
float)(date_to_days(date) - year_to_days(byear))/365.0f);}
33#define VEC_DATA(v) ((v).size()>0 ? &((v)[0]) : NULL)
37template <
class T>
void get_zero_inds(T *v,
int len, vector<int> &inds);
39template <
class T>
void get_nonzero_inds(T *v,
int len, vector<int> &inds);
41template <
class T>
void get_zero_inds(vector<T> &v, vector<int> &inds) {get_zero_inds(&v[0],(
int)v.size(),inds);}
43template <
class T>
void get_nonzero_inds(vector<T> &v, vector<int> &inds) {get_nonzero_inds(&v[0],(
int)v.size(),inds);}
45template <
class T>
void get_vec_from_vecvec(vector<vector<T>> &v_in, vector<T> &v_out);
47template <
class T>
int get_vec_ndiff_vals(vector<T> &v);
52template<
typename T>
int sequence(T start, T finish, T step, vector<T>& seq,
bool isForward =
true);
55void categorize_vec(vector<float> &in, vector<float> &bounds, vector<float> &out);
57void get_probs_vec(vector<float> &v);
67void set_rand_seed(
int seed);
69void get_rand_splits(vector<int> &split,
int nsplits,
int size);
72void get_rand_vector_no_repetitions(vector<int> &v,
int N,
int size);
75void get_rand_vector_with_repetitions(vector<int> &v,
int N,
int size);
83inline int date_to_days(
int date)
88 m = (date - y*10000)/100;
89 d = date - y*10000 - m*100;
91 return (y*365 + (m-1)*30 + d);
96int get_day_approximate(
int val);
97int get_date(
int days);
110bool is_windows_os(
void);
113#include "MedGenUtils_imp.h"
Logger.h - allowing logs with more control.