4#include "InfraMed/InfraMed/InfraMed.h"
5#include "InfraMed/InfraMed/MedPidRepository.h"
6#include "MedProcessTools/MedProcessTools/MedSamples.h"
7#include "MedProcessTools/MedProcessTools/MedProcessUtils.h"
10#include <MedMat/MedMat/MedMat.h>
14#define DEFAULT_REP_CLNR_NTHREADS 8
69 virtual void clear() { };
79 vector<pair<string, string>> virtual_signals_generic;
95 virtual int init(
void *params) {
return 0; };
97 virtual int init(map<string, string>& mapper) {
return 0; };
102 virtual void set_signal(
const string& _signalName) {
return; };
118 virtual void add_virtual_signals(map<string, int> &_virtual_signals, map<string, string> &_virtual_signals_generic)
const {
120 for (
auto &v : virtual_signals_generic) _virtual_signals_generic[v.first] = v.second;
147 virtual bool filter(unordered_set<string>& reqSignals);
180 virtual int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_vals) {
return -1; };
182 virtual int _conditional_apply(
PidDynamicRec& rec, vector<int>& time_points, unordered_set<int>& neededSignalIds, vector<vector<float>>& attributes_vals);
185 virtual int _apply_simple(
PidDynamicRec& rec, vector<int>& time_points) {
186 vector<vector<float>> attributes_vals;
187 return _apply(rec, time_points, attributes_vals);
192 int apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_vals) {
return _apply(rec, time_points, attributes_vals); }
208 virtual void dprint(
const string &pref,
int rp_flag);
214 virtual void make_summary() {};
230 virtual void print() { fprintf(stderr,
"No implementation for print()\n"); }
262 void add_virtual_signals(map<string, int> &_virtual_signals, map<string, string> &_virtual_signals_generic)
const;
282 bool filter(unordered_set<string>& reqSignals);
298 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_vals);
299 int _apply_simple(
PidDynamicRec& rec, vector<int>& time_points);
307 void dprint(
const string &pref,
int rp_flag);
321#define DEF_REP_TRIMMING_SD_NUM 7
322#define DEF_REP_REMOVING_SD_NUM 14
326 int total_removed = 0, total_pids_touched = 0;
327 int total_records = 0, total_pids = 0;
333 void print_summary(
const string &cleaner_info,
const string &signal_name,
334 int minimal_pid_cnt,
float print_summary_critical_cleaned,
bool prnt_flg)
const;
346 bool is_categ =
false;
375 params.trimming_sd_num = DEF_REP_TRIMMING_SD_NUM;
params.removing_sd_num = DEF_REP_REMOVING_SD_NUM;
params.nbrs_sd_num = 0;
380 params.missing_value = MED_MAT_MISSING_VALUE;
391 int init(
void *processor_params) {
return MedValueCleaner::init(processor_params); };
394 virtual int init(map<string, string>& mapper);
409 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
415 void dprint(
const string &pref,
int rp_flag);
421 ADD_SERIALIZATION_FUNCS(
processor_type,
signalName,
time_channel,
val_channel,
req_signals,
aff_signals,
params.take_log,
params.missing_value,
params.doTrim,
params.doRemove,
431 double logicalLow, logicalHigh, confirmedLow, confirmedHigh;
432 double trimLow, trimHigh;
433 string distLow, distHigh;
437 distLow, distHigh, trimLow, trimHigh, val_channel)
459 params.trimming_sd_num = DEF_REP_TRIMMING_SD_NUM; params.removing_sd_num = DEF_REP_REMOVING_SD_NUM; params.nbrs_sd_num = 0;
461 params.doTrim = params.doRemove =
true;
464 params.missing_value = MED_MAT_MISSING_VALUE;
473 int init(map<string, string>& mapper);
480 ADD_SERIALIZATION_FUNCS(processor_type, signalName, time_channel, val_channel, req_signals, aff_signals, params.take_log, params.missing_value, params.doTrim, params.doRemove,
481 trimMax, trimMin, removeMax, removeMin, confFileName, cleanMethod, outlierParam, nRem_attr, nTrim_attr, nRem_attr_suffix, nTrim_attr_suffix)
486void learnDistributionBorders(
float& borderHi,
float& borderLo, vector<
float> filteredValues);
529 string nRem_attr =
"";
530 string nRem_attr_suffix =
"";
532 float tolerance = 0.1F;
537 bool print_summary =
false;
538 float print_summary_critical_cleaned = (float)0.05;
541 map <int, vector<string>>rules2Signals = {
542 {1,{
"BMI",
"Weight",
"Height"}},
543 {2,{
"MCH",
"Hemoglobin",
"RBC"}},
544 {3,{
"MCV",
"Hematocrit",
"RBC"} },
545 {4,{
"MCHC-M",
"MCH",
"MCV"}},
546 {5,{
"Eosinophils#",
"Monocytes#",
"Basophils#",
"Lymphocytes#",
"Neutrophils#",
"WBC" }},
547 {6,{
"MPV",
"Platelets_Hematocrit",
"Platelets" }},
548 {7,{
"UrineAlbumin",
"UrineTotalProtein" }},
549 {8,{
"UrineAlbumin_over_Creatinine",
"UrineAlbumin",
"UrineCreatinine" }},
550 {9,{
"LDL",
"HDL",
"Cholesterol"}},
551 {10,{
"NonHDLCholesterol",
"HDL",
"Cholesterol"}},
552 {11,{
"HDL_over_nonHDL",
"HDL",
"NonHDLCholesterol"}},
553 {12,{
"HDL_over_Cholesterol",
"HDL",
"Cholesterol"}},
554 {13,{
"HDL_over_LDL",
"HDL",
"LDL"}},
555 {14,{
"HDL_over_LDL",
"LDL_over_HDL"}},
556 {15,{
"Cholesterol_over_HDL",
"Cholesterol",
"HDL"}},
557 {17,{
"Cholesterol_over_HDL",
"HDL_over_Cholesterol"}},
558 {18,{
"LDL_over_HDL",
"LDL",
"HDL"}},
559 {19,{
"Albumin",
"Protein_Total"}},
560 {20,{
"FreeT4",
"T4"}},
562 {22,{
"CHADS2",
"CHADS2_VASC"}},
568 vector <int> rulesToApply;
574 unordered_map<int, vector<int>> rules_sids;
575 unordered_map<int, vector<bool>> affected_by_rules;
580 void init_defaults();
582 void parse_rules_signals(
const string &path);
583 void parse_sig_channels(
const string &path);
587 int init(
void *processor_params) {
return 0; };
591 int init(map<string, string>& mapper);
594 void init_attributes();
607 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
619 void dprint(
const string &pref,
int rp_flag);
623 ADD_SERIALIZATION_FUNCS(processor_type, time_window, calc_res, rules2Signals, rulesToApply, rules2RemoveSignal, signal_channels, consideredRules, tolerance, req_signals, aff_signals, nRem_attr,
624 nRem_attr_suffix, verbose_file, print_summary, print_summary_critical_cleaned)
629 bool applyRule(
int rule,
const vector<UniversalSigVec> &ruleUsvs,
630 const vector<int> &val_channels,
const vector<int> &sPointer);
633 unordered_map<string, remove_stats> _rmv_stats;
636 void select_rules_to_apply();
640#define DEF_REP_NBRS_NBRS_SD_NUM 5
641#define DEF_REP_NBRS_TRIM_SD_NUM 7
642#define DEF_REP_NBRS_REMOVING_SD_NUM 14
675 params.trimming_sd_num = DEF_REP_NBRS_TRIM_SD_NUM;
params.removing_sd_num = DEF_REP_NBRS_REMOVING_SD_NUM;
params.nbrs_sd_num = DEF_REP_NBRS_NBRS_SD_NUM;
680 params.missing_value = MED_MAT_MISSING_VALUE;
690 int init(
void *processor_params) {
return MedValueCleaner::init(processor_params); };
693 int init(map<string, string>& mapper);
706 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
710 ADD_SERIALIZATION_FUNCS(
processor_type,
signalName,
time_channel,
val_channel,
req_signals,
aff_signals,
params.take_log,
params.missing_value,
params.doTrim,
params.doRemove,
711 trimMax, trimMin,
removeMax, removeMin,
nbr_time_unit,
nbr_time_width,
nbrsMax, nbrsMin,
nRem_attr,
nTrim_attr,
nRem_attr_suffix,
nTrim_attr_suffix)
742 string nHandle_attr =
"";
743 string nHandle_attr_suffix =
"";
751 RepSimValHandler(
const string& _signalName,
string init_string) { init_defaults(); processor_type =
REP_PROCESS_SIM_VAL; signalId = -1; signalName = _signalName; init_from_string(init_string); }
754 void set_signal(
const string& _signalName) { signalId = -1; signalName = _signalName; init_lists(); }
761 virtual int init(map<string, string>& mapper);
770 void init_attributes();
773 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
781 ADD_SERIALIZATION_FUNCS(processor_type, signalName, time_channels, req_signals, aff_signals, nHandle_attr, nHandle_attr_suffix, handler_type)
783 void handle_block(
int start,
int end, UniversalSigVec& usv, vector<int>& remove,
int& nRemove, vector<pair<
int, vector<float>>>& change,
int& nChange,
int& nTimes);
826 WHITE_PNL_EOS_N, WHITE_PNL_EOS_P,
827 WHITE_PNL_NEU_N, WHITE_PNL_NEU_P,
828 WHITE_PNL_LYM_N, WHITE_PNL_LYM_P,
829 WHITE_PNL_MON_N, WHITE_PNL_MON_P,
830 WHITE_PNL_BAS_N, WHITE_PNL_BAS_P,
845 LIPIDS_PNL_HDL_OVER_CHOL,
846 LIPIDS_PNL_CHOL_OVER_HDL,
847 LIPIDS_PNL_HDL_OVER_LDL,
848 LIPIDS_PNL_LDL_OVER_HDL,
849 LIPIDS_PNL_NON_HDL_CHOL,
850 LIPIDS_PNL_HDL_OVER_NON_HDL,
886 vector<vector<string> > panel_signal_names;
887 vector<vector<int> > panel_signal_ids;
890 int bdateId, genderId;
891 string genderSignalName;
894 float missing_val = MED_MAT_MISSING_VALUE;
900 string metadata_file;
901 vector<vector<float> > original_sig_res, final_sig_res, sig_conversion_factors;
906 int init(map<string, string>& mapper);
909 void init_defaults();
912 int update_signal_names(
string panel,
string& names);
915 int update_panels(
string& panels);
930 void read_metadata();
938 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
941 int apply_red_line_completer(
PidDynamicRec& rec, vector<int>& time_points);
942 int apply_white_line_completer(
PidDynamicRec& rec, vector<int>& time_points);
943 int apply_platelets_completer(
PidDynamicRec& rec, vector<int>& time_points);
944 int apply_lipids_completer(
PidDynamicRec& rec, vector<int>& time_points);
945 int apply_eGFR_completer(
PidDynamicRec& rec, vector<int>& time_points);
946 int apply_BMI_completer(
PidDynamicRec& rec, vector<int>& time_points);
947 int apply_GCS_completer(
PidDynamicRec& rec, vector<int>& time_points);
951 int perpare_for_age_and_gender(
PidDynamicRec& rec,
int& age,
int& bYear,
int& gender);
954 inline float completer_round(
float value,
float orig_res,
float final_res,
float factor) {
return set_resolution(set_resolution(value / factor, orig_res) * factor, final_res); }
955 inline float set_resolution(
float value,
float res) {
return res * std::round(value / res); }
958 void get_panels(vector<UniversalSigVec>& usvs, vector<int>& panel_times, vector<vector<float>>& panels,
int time_limit,
int panel_size);
961 int triplet_complete(vector<float>& panel,
float factor,
int x_idx,
int y_idx,
int z_idx, vector<float>& orig_res, vector<float>& final_res, vector<float>& conv, vector<int>& changed);
962 int sum_complete(vector<float>& panel,
int sum, vector<int>& summands, vector<float>& orig_res, vector<float>& final_res, vector<float>& conv, vector<int>& changed);
963 int reciprocal_complete(vector<float>& panel,
float factor,
int x_idx,
int y_idx, vector<float>& orig_res, vector<float>& final_res, vector<float>& conv, vector<int>& changed);
964 int egfr_complete(vector<float>& panel,
float age,
int gender, vector<float>& orig_res, vector<float>& final_res, vector<float>& conv, vector<int>& changed);
967 int update_signals(
PidDynamicRec& rec,
int iver, vector<vector<float>>& panels, vector<int>& panel_times, vector<int>& sigs_ids, vector<int>& changed);
972 ADD_SERIALIZATION_FUNCS(processor_type, panel_signal_names, missing_val, sim_val_handler, original_sig_res, final_sig_res, sig_conversion_factors, metadata_file, req_signals, aff_signals, virtual_signals)
976 map<string, PanelCompleterTypes> panel2type = {
987 map<string, vector<string> > panel2signals = {
988 {
"red_line", {
"MCV",
"Hematocrit",
"RBC",
"MCH",
"MCHC-M",
"Hemoglobin"}},
989 {
"white_line", {
"WBC",
"Eosinophils#",
"Eosinophils%",
"Neutrophils#",
"Neutrophils%",
"Lymphocytes#",
"Lymphocytes%",
"Monocytes#",
"Monocytes%",
"Basophils#",
"Basophils%"}},
990 {
"platelets", {
"Platelets",
"Platelets_Hematocrit",
"MPV"}},
991 {
"lipids",{
"Cholesterol",
"LDL",
"HDL",
"HDL_over_Cholesterol",
"Cholesterol_over_HDL",
"HDL_over_LDL",
"LDL_over_HDL",
"NonHDLCholesterol",
"HDL_over_nonHDL",
"Triglycerides",
"VLDL"}},
992 {
"egfr", {
"Creatinine",
"eGFR_CKD_EPI",
"eGFR_MDRD"}},
993 {
"bmi", {
"BMI",
"Weight",
"Height"}},
994 {
"gcs", {
"GCS",
"GCS_Eye",
"GCS_Motor",
"GCS_Verbal"}}
997 vector<int> white_panel_nums = { WHITE_PNL_EOS_N,WHITE_PNL_NEU_N,WHITE_PNL_LYM_N,WHITE_PNL_MON_N,WHITE_PNL_BAS_N };
998 vector<int> white_panel_precs = { WHITE_PNL_EOS_P,WHITE_PNL_NEU_P,WHITE_PNL_LYM_P,WHITE_PNL_MON_P,WHITE_PNL_BAS_P };
999 vector<int> chol_types1 = { LIPIDS_PNL_NON_HDL_CHOL,LIPIDS_PNL_HDL };
1000 vector<int> chol_types2 = { LIPIDS_PNL_LDL, LIPIDS_PNL_HDL, LIPIDS_PNL_VLDL };
1001 vector<int> gcs_panel_parts = { GCS_PNL_EYE,GCS_PNL_MOTOR,GCS_PNL_VERBAL };
1004 unordered_map<int, int> eye_vals, verbal_vals, motor_vals;
1005 void convert_gcs_signals(vector<float> &panel);
1039 vector<string> output_signal_names;
1040 float missing_value = (float)MED_MAT_MISSING_VALUE;
1041 string calculator_name =
"";
1042 int work_channel = 0;
1043 bool need_time =
false;
1044 bool keep_only_in_range =
false;
1047 virtual int init(map<string, string>& mapper) {
return 0; };
1049 virtual void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const {};
1051 virtual bool do_calc(
const vector<float> &vals,
float &res)
const { HMTHROW_AND_ERR(
"Error %s::do_calc not implemented\n", my_class_name().c_str()); };
1053 virtual void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type) { HMTHROW_AND_ERR(
"Error %s::do_calc not implemented\n", my_class_name().c_str()); };
1057 virtual void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const {};
1059 virtual void fit_for_repository(
MedPidRepository &rep, vector<pair<string, string>> &_virtual_signals) {};
1066 void *new_polymorphic(
string derived_class_name);
1079 EmptyCalculator() { calculator_name =
"empty"; keep_only_in_range =
false; };
1081 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1082 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1083 bool do_calc(
const vector<float> &vals,
float &res)
const;
1096 float power_base = 1;
1097 float power_mone = 1;
1099 RatioCalculator() { calculator_name =
"ratio"; keep_only_in_range =
false; };
1101 int init(map<string, string>& mapper);
1103 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1104 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1105 bool do_calc(
const vector<float> &vals,
float &res)
const;
1108 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, factor, power_base, power_mone)
1119 int n_variables = 4;
1121 int kfre_version = 2;
1122 int prediction_years = 5;
1123 std::string region =
"original";
1125 bool discard_range_check =
false;
1127 std::map<std::string, int> region2id = {
1129 {
"north_american", 1 },
1130 {
"non_north_american", 2 },
1134 KfreCalculator() { calculator_name =
"KFRE"; need_time =
true; keep_only_in_range =
true; };
1135 int init(map<string, string>& mapper);
1136 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1137 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1138 bool do_calc(
const vector<float> &vals,
float &res)
const;
1141 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, n_variables, n_variables, prediction_years, kfre_version, region, discard_range_check)
1150 float ethnicity = 0;
1153 eGFRCalculator() { calculator_name =
"eGFR_CKD_EPI"; need_time =
true; keep_only_in_range =
true; };
1155 int init(map<string, string>& mapper);
1156 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1157 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1158 bool do_calc(
const vector<float> &vals,
float &res)
const;
1161 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, ethnicity, mdrd)
1169 logCalculator() { calculator_name =
"log"; keep_only_in_range =
false; };
1172 int init(map<string, string>& mapper);
1173 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1174 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1176 bool do_calc(
const vector<float> &vals,
float &res)
const;
1193 int init(map<string, string>& mapper);
1194 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1195 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1196 bool do_calc(
const vector<float> &vals,
float &res)
const;
1199 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, factors, b0)
1210 float in_range_val = 1;
1211 float out_range_val = 0;
1213 RangeCalculator() { calculator_name =
"range"; min_range = MED_MAT_MISSING_VALUE; max_range = MED_MAT_MISSING_VALUE; };
1215 int init(map<string, string>& mapper);
1216 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1217 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1218 bool do_calc(
const vector<float> &vals,
float &res)
const;
1221 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, min_range, max_range, in_range_val, out_range_val)
1235 int init(map<string, string>& mapper);
1237 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1238 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1240 bool do_calc(
const vector<float> &vals,
float &res)
const;
1243 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, powers, b0)
1252 vector<string> sets;
1253 float in_range_val = 1;
1254 float out_range_val = 0;
1255 bool regex_on_sets =
false;
1258 int init(map<string, string>& mapper);
1260 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1261 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1264 bool do_calc(
const vector<float> &vals,
float &res)
const;
1266 void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const;
1269 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, input_signal, sets, in_range_val, out_range_val)
1272 string input_signal =
"";
1281 float in_range_val = 1;
1282 float out_range_val = 0;
1284 ExistsCalculator() { calculator_name =
"exists"; keep_only_in_range =
true; need_time =
true; };
1286 int init(map<string, string>& mapper);
1288 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1289 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1291 bool do_calc(
const vector<float> &vals,
float &res)
const;
1294 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, in_range_val, out_range_val)
1303 vector<string> additional_dict_vals;
1305 calculator_name =
"constant_value"; is_numeric =
false; value =
""; numeric_val = 1;
1309 int init(map<string, string>& mapper);
1311 void validate_arguments(
const vector<string> &input_signals,
const vector<string> &output_signals)
const;
1312 void list_output_signals(
const vector<string> &input_signals, vector<pair<string, string>> &_virtual_signals,
const string &output_type);
1314 bool do_calc(
const vector<float> &vals,
float &res)
const;
1316 void fit_for_repository(
MedPidRepository &rep, vector<pair<string, string>> &_virtual_signals);
1319 ADD_SERIALIZATION_FUNCS(calculator_name, missing_value, work_channel, need_time, keep_only_in_range, value, is_numeric, numeric_val, output_signal_names, additional_dict_vals)
1332 int work_channel = 0;
1333 int time_channel = 0;
1336 float missing_value = (float)MED_MAT_MISSING_VALUE;
1343 int max_time_search_range = 0;
1344 string calculator_init_params =
"";
1348 output_signal_type =
"T(i),V(f)";
1353 int init(map<string, string>& mapper);
1366 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1370 void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const;
1376 ADD_SERIALIZATION_FUNCS(processor_type, calculator, calculator_init_params, max_time_search_range, signals_time_unit,
1377 signals, V_names, req_signals, aff_signals, virtual_signals, virtual_signals_generic, work_channel, time_channel, calculator_logic, output_signal_type)
1378 void post_deserialization() {
1380 pass_time_last = p->need_time;
1397 bool pass_time_last =
false;
1399 const map<string, vector<string>> calc2req_sigs = {
1402 {
"calc_eGFR", {
"Creatinine",
"GENDER",
"BDATE"}}
1406 vector<int> sigs_ids;
1407 vector<bool> static_input_signals;
1409 int apply_calc_in_time(
PidDynamicRec& rec, vector<int>& time_points);
1412 int out_n_val_ch, out_n_time_ch;
1436 signal_type =
"T(i,i),V(f,f)";
1442 int init(map<string, string>& mapper);
1451 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1456 unconditional, req_signals, aff_signals, virtual_signals,
1457 virtual_signals_generic, signal_type, factor_channel)
1460 vector<int> sigs_ids;
1461 int v_out_n_time_ch, v_out_n_val_ch;
1488 int init(map<string, string>& mapper);
1492 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1494 void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const;
1499 req_signals, aff_signals, virtual_signals, virtual_signals_generic, val_channel, output_signal_type)
1504 int v_out_n_time_ch, v_out_n_val_ch;
1530 input_name(
""), output_name(
""), period(0), time_unit_sig(global_default_windows_time_unit), time_unit_win(global_default_windows_time_unit), in_sid(-1) {
1538 int init(map<string, string>& mapper);
1542 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1546 void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const;
1549 ADD_SERIALIZATION_FUNCS(processor_type, input_name, output_name, sets, period, req_signals, aff_signals, virtual_signals, virtual_signals_generic, time_unit_win, time_unit_sig, in_sid, V_ids, lut)
1575 int get_values_in_range = 1;
1577 int range_val_channel = -1;
1579 bool regex_on_sets = 0;
1581 bool do_on_last_n =
false;
1585 signal_name(
""), ranges_name(
""), output_name(
""), signal_id(-1), ranges_id(-1),
1586 output_id(-1), time_channel(0), output_type(3) {
1588 range_time_channel = 1;
1596 bool get_last_n_value(
int time,
const UniversalSigVec& range_sig,
float& last_value);
1601 virtual int init(map<string, string>& mapper);
1604 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1611 req_signals, aff_signals, signal_id, ranges_id, output_id, virtual_signals, virtual_signals_generic,
1612 output_type, get_values_in_range, range_operator, range_val_channel, sets, range_time_channel, last_n, do_on_last_n, regex_on_sets)
1631 work_channel = 0; factor = 1;
1632 output_signal_type =
"T(i,i),V(f)";
1636 int init(map<string, string>& mapper);
1644 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1649 work_channel, factor, unconditional, req_signals, aff_signals,
1650 virtual_signals, virtual_signals_generic, output_signal_type)
1654 int v_out_n_time_ch, v_out_n_val_ch;
1665 int start_time_channel;;
1678 start_time_channel = 0;
1679 end_time_channel = 0;
1681 time_unit = global_default_windows_time_unit;
1682 drop_missing_rate = 1;
1684 output_name =
"calc_aggregate";
1686 buffer_first =
true;
1687 output_signal_type =
"T(i),V(f)";
1691 int init(map<string, string>& mapper);
1701 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1705 ADD_SERIALIZATION_FUNCS(processor_type, signalName, output_name, work_channel, factor, time_window, time_unit,
1706 start_time_channel, end_time_channel, drop_missing_rate, buffer_first, unconditional, req_signals, aff_signals, virtual_signals, virtual_signals_generic, output_signal_type)
1710 int v_out_n_time_ch, v_out_n_val_ch;
1717 int first_appearance = 0;
1718 int last_appearance = 0;
1719 int n_appearances = 0;
1723 category_time_interval(
int _first,
int _last,
int _n,
int _last_time) { first_appearance = _first; last_appearance = _last; n_appearances = _n; last_time = _last_time; }
1725 void set(
int _first,
int _last,
int _n,
int _last_time) { first_appearance = _first; last_appearance = _last; n_appearances = _n; last_time = _last_time; }
1730 int appear_time = 0;
1735 category_event_state(
int _time,
int _appear_time,
int _categ,
int _type) { time = _time; appear_time = _appear_time; categ = _categ; type = _type; }
1736 void set(
int _time,
int _appear_time,
int _categ,
int _type) { time = _time; appear_time = _appear_time; categ = _categ; type = _type; }
1740 if (time < c.time)
return true;
1741 if (time > c.time)
return false;
1742 if (type < c.type)
return true;
1755 combination_state(
int time,
int _state,
int N) { start = time; state = _state; last.assign(N, -1); }
1775 string out_virtual =
"";
1778 int duration_chan = 1;
1779 int min_duration = 60;
1780 vector<int> min_durations = {};
1781 int max_duration = 180;
1782 float duration_add = 0;
1783 float duration_mult = 0.1f;
1784 int dont_look_back = 7;
1785 int min_clip_time = 7;
1786 int last_clip_period = 30;
1787 vector<int> min_jitters = { 0,0,0 };
1788 int max_min_jitters;
1793 bool change_at_prescription_mode =
false;
1796 string print_dict =
"";
1797 int time_channels = 1;
1798 vector<char> all_cat_lut;
1799 vector<vector<char>> categories_luts;
1804 int init(map<string, string>& mapper);
1805 void get_min_jitters(
string& jitters_s);
1815 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1817 void get_required_signal_categories(unordered_map<
string, vector<string>> &signal_categories_in_use)
const;
1822 t_chan, c_chan, duration_chan, min_duration, min_durations, max_duration, duration_add, duration_mult, dont_look_back, min_clip_time, last_clip_period, categories_names, categories_sets, time_unit_sig, time_unit_duration, change_at_prescription_mode,
1823 virtual_signals_generic, time_channels, min_jitters)
1828 vector<string> registry_values;
1851 int win_from = 0, win_to = 0;
1854 string attrName =
"MissingReq";
1857 vector<int> sig_time_units;
1863 int init(map<string, string>& mapper);
1881 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1885 ADD_SERIALIZATION_FUNCS(processor_type, signalNames, time_channels, win_from, win_to, window_time_unit, attrName, req_signals)
1896 int time_channel = 0;
1897 int truncate_time_channel = -1;
1898 int win_time_unit = global_default_windows_time_unit;
1899 int rep_time_unit = global_default_time_unit;
1903 int take_last_events = -1;
1917 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1920 int init(map<string, string>& mapper);
1923 int get_sub_usv_data(UniversalSigVec &usv,
int from_time,
int to_time, vector<char> &data,
int &len);
1930 win_from, win_to, delete_sig, take_last_events, req_signals, aff_signals, truncate_time_channel)
1942 bool on_learning =
false;
1947 vector<mt19937> gens;
1954 int val_channel = 0;
1955 int time_channel = 0;
1957 float value_noise = 0;
1959 float drop_probability = (float)0.0;
1968 int N_TH = omp_get_max_threads();
1969 gens.resize(3*N_TH);
1970 for (
size_t i = 0; i < 3*N_TH; ++i)
1971 gens[i] = mt19937(rd());
1981 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
1984 int init(map<string, string>& mapper);
1991 time_noise, value_noise, drop_probability, req_signals, aff_signals, stdev, truncation, apply_in_test)
1999 vector<int> new_order;
2000 string signal_name =
"";
2007 void set_signal(
const string& _signalName) { sid = -1; signal_name = _signalName; }
2010 int init(map<string, string>& mapper);
2014 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
2019 ADD_SERIALIZATION_FUNCS(processor_type, req_signals, aff_signals, virtual_signals, virtual_signals_generic, signal_name, new_order)
2029int get_values(
MedRepository& rep,
MedSamples& samples,
int signalId,
int time_channel,
int val_channel,
float range_min,
float range_max, vector<float>& values,
2030 vector<RepProcessor *>& prev_cleaners);
2032int get_values(
MedRepository& rep,
MedSamples& samples,
int signalId,
int time_channel,
int val_channel,
float range_min,
float range_max, vector<float>& values);
A parent class for single-value cleaners.
@ VAL_CLNR_ITERATIVE
"iterative"
Definition MedValueCleaner.h:12
RepProcessorTypes
Define types of repository processors.
Definition RepProcess.h:21
@ REP_PROCESS_BASIC_RANGE_CLEANER
"basic_range_cleaner" or "range_cln" to activate RepBasicRangeCleaner
Definition RepProcess.h:35
@ REP_PROCESS_COMPLETE
"complete" to activate RepPanelCompleter
Definition RepProcess.h:28
@ REP_PROCESS_CREATE_BIT_SIGNAL
"bit_signal" creates a state of categories (typically drugs) encoded in bits. creates RepCreateBitSig...
Definition RepProcess.h:39
@ REP_PROCESS_REODER_CHANNELS
"reorder_channels" reorder signal channels. Creates RepReoderChannels
Definition RepProcess.h:41
@ REP_PROCESS_CATEGORY_DESCENDERS
"category_descenders" creates all descenders values for each category value. Creates RepCategoryDesce...
Definition RepProcess.h:40
@ REP_PROCESS_HISTORY_LIMIT
"history_limit" chomps the history for a signal to be at a certain given time window relative to the ...
Definition RepProcess.h:37
@ REP_PROCESS_SIM_VAL
"sim_val" or "sim_val_handler" handle multiple simultanous values to activate RepSimValHandler
Definition RepProcess.h:30
@ REP_PROCESS_BASIC_OUTLIER_CLEANER
"basic_outlier_cleaner" or "basic_cln" to activate RepBasicOutlierCleaner
Definition RepProcess.h:23
@ REP_PROCESS_NUMERIC_NOISER
"numeric_noiser" adds gaussian noise to value and uniform noise to time for numeric signal....
Definition RepProcess.h:43
@ REP_PROCESS_SIGNAL_RATE
"signal_rate" combine complition for Drug rate based on Drug amount to activate RepSignalRate
Definition RepProcess.h:31
@ REP_PROCESS_AGGREGATION_PERIOD
"aggregation_period" - creates RepAggregationPeriod
Definition RepProcess.h:34
@ REP_PROCESS_CONFIGURED_OUTLIER_CLEANER
"configured_outlier_cleaner" or "conf_cln" to activate RepConfiguredOutlierCleaner
Definition RepProcess.h:25
@ REP_PROCESS_CREATE_REGISTRY
"create_registry" creates a registry signal (TimeRange to values). creates RepCreateRegistry
Definition RepProcess.h:38
@ REP_PROCESS_SPLIT
"split" split signal to two signals based on set of values - usefull for example to give diffrent rul...
Definition RepProcess.h:33
@ REP_PROCESS_AGGREGATE
"aggregate" - aggregate signal in sliding time window to calc some aggregation function....
Definition RepProcess.h:36
@ REP_PROCESS_FILTER_BY_CHANNELS
"filter_channels" reorder signal channels. Creates RepFilterByChannel
Definition RepProcess.h:42
@ REP_PROCESS_CALC_SIGNALS
"calc_signals" or "calculator" to activate RepCalcSimpleSignals
Definition RepProcess.h:27
@ REP_PROCESS_COMBINE
"combine" flatten signals to 1 signal by dates. if conflict chooses based on order given....
Definition RepProcess.h:32
@ REP_PROCESS_NBRS_OUTLIER_CLEANER
"nbrs_outlier_cleaner" or "nbrs_cln" to activate RepNbrsOutlierCleaner
Definition RepProcess.h:24
@ REP_PROCESS_RULEBASED_OUTLIER_CLEANER
"rulebased_outlier_cleaner" or "rule_cln" to activate RepRuleBasedOutlierCleaner
Definition RepProcess.h:26
@ REP_PROCESS_FILTER_BY_DIAG
"filter_by_diag". Creates RepClearSignalByDiag
Definition RepProcess.h:44
@ REP_PROCESS_CHECK_REQ
"req" or "requirements" check compliance with minimal requirement to activate RepCheckReq
Definition RepProcess.h:29
@ REP_PROCESS_MULTI
"multi_processor" or "multi" to activate RepMultiProcessor
Definition RepProcess.h:22
RepProcessorTypes rep_processor_name_to_type(const string &procesor_name)
get RepProcessorTypes from name
Definition RepProcess.cpp:25
PanelCompleterTypes
RepPanelCompleter fills-in calculatable signal values.
Definition RepProcess.h:803
@ REP_CMPLT_RED_LINE_PANEL
complete values of the red blood line
Definition RepProcess.h:804
@ REP_CMPLT_LAST
Last not in use.
Definition RepProcess.h:811
@ REP_CMPLT_BMI_PANEL
complete BMI/HIGHT/WEIGHT values
Definition RepProcess.h:809
@ REP_CMPLT_WHITE_LINE_PANEL
complete values of the white blood line
Definition RepProcess.h:805
@ REP_CMPLT_GCS
complete Glasgow Coma Score
Definition RepProcess.h:810
@ REP_CMPLT_LIPIDS_PANEL
complete lipd values
Definition RepProcess.h:807
@ REP_CMPLT_EGFR_PANEL
complete eGFR values
Definition RepProcess.h:808
@ REP_CMPLT_PLATELETS_PANEL
complete values of platelets measurements
Definition RepProcess.h:806
SimValHandleTypes
SimValHandler handles multiple values at the same time.
Definition RepProcess.h:722
range_op_type
A filter on signal events using other range signal with time periods.
Definition RepProcess.h:1556
An Abstract class that can be serialized and written/read from file.
#define ADD_SERIALIZATION_FUNCS(...)
Definition SerializableObject.h:121
#define MEDSERIALIZE_SUPPORT(Type)
Definition SerializableObject.h:107
Definition RepProcess.h:1297
Dummy top create empty virtual signal.
Definition RepProcess.h:1077
A is in as exists operation which return binary output res := in_range_val if signal exists otherwise...
Definition RepProcess.h:1279
KFRE calculator based on Age, Gender and eGFR (in that order)
Definition RepProcess.h:1114
Definition MedDictionary.h:87
MedIdSamples represent a collection of samples of a given id Additional (optinal) entries: split
Definition MedSamples.h:90
Definition MedPidRepository.h:87
Definition InfraMed.h:303
MedSamples represent a collection of samples per different id The data is conatined in a vector of ...
Definition MedSamples.h:129
Definition MedSignals.h:719
static const int Undefined
undefined time unit
Definition MedTime.h:24
static const int Days
days since 1900/01/01
Definition MedTime.h:28
static const int Date
dates are in full regular format YYYYMMDD
Definition MedTime.h:25
Definition MedValueCleaner.h:61
float removeMax
Thresholds for removing.
Definition MedValueCleaner.h:71
float trimMax
Thresholds for trimming.
Definition MedValueCleaner.h:68
float nbrsMax
Thresholds for neighbors.
Definition MedValueCleaner.h:74
ValueCleanerParams params
Learning parameters.
Definition MedValueCleaner.h:65
A multiply operation with power on both arguments.
Definition RepProcess.h:1228
vector< float > powers
power for args
Definition RepProcess.h:1230
Definition MedPidRepository.h:127
A simple Range check that return in_range_val if within range and returns out_range_val if outside ra...
Definition RepProcess.h:1206
float max_range
max range check
Definition RepProcess.h:1209
float min_range
min range check
Definition RepProcess.h:1208
Calcs ratio between 2 inputs signals.
Definition RepProcess.h:1093
An Aggregator for signal in sliding time window.
Definition RepProcess.h:1660
string signalName
the name of inout signal
Definition RepProcess.h:1662
void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.h:1694
int time_window
back time window to search for
Definition RepProcess.h:1668
int work_channel
channel for value
Definition RepProcess.h:1664
string output_signal_type
same as input signal - will remove later after change init process of RepProcessor to fetch input sig...
Definition RepProcess.h:1672
void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.h:1695
int end_time_channel
time channel for start time
Definition RepProcess.h:1666
bool buffer_first
If true will wait for first buffer to complete.
Definition RepProcess.h:1671
float drop_missing_rate
If missing time points beyond this threshold will drop measurement.
Definition RepProcess.h:1670
float factor
final factor to multiply
Definition RepProcess.h:1667
int time_unit
time unit
Definition RepProcess.h:1669
string output_name
the name of virtual signal
Definition RepProcess.h:1663
creates a signal of time ranges in which the input signal (usually medication) was active ranges are ...
Definition RepProcess.h:1513
string input_name
name of input signal used by the processor
Definition RepProcess.h:1515
int period
period to consider active after signal in win time units
Definition RepProcess.h:1518
vector< string > sets
the sets to check if signal value is in set
Definition RepProcess.h:1517
string output_name
name of signal created by the processor
Definition RepProcess.h:1516
A simple cleaner considering each value of a certain signal separatley.
Definition RepProcess.h:342
string nRem_attr_suffix
Attribute suffix (name is sample is signalName_suffix) for number of removed. not recorded if empty.
Definition RepProcess.h:356
string nTrim_attr
Attribute name (in sample) for number of trimmed. not recorded if empty.
Definition RepProcess.h:355
int iterativeLearn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
Learning : learn cleaning boundaries using MedValueCleaner's iterative approximation of moments.
Definition RepProcess.cpp:955
string verbose_file
cleaning output_file for debuging
Definition RepProcess.h:358
void init_lists()
Fill req- and aff-signals vectors.
Definition RepProcess.cpp:845
void init_attributes()
Init attributes information : Should be implemented for inheriting classes that have attributes.
Definition RepProcess.cpp:918
int _apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_mat)
Apply cleaning model.
Definition RepProcess.cpp:1004
int signalId
id of signal to clean
Definition RepProcess.h:350
string signalName
name of signal to clean
Definition RepProcess.h:349
bool print_summary
If true will always print clean summary.
Definition RepProcess.h:360
int quantileLearn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
Learning : learn cleaning boundaries using MedValueCleaner's quantile approximation of moments.
Definition RepProcess.cpp:978
int val_channel
value cahnnel to consider in cleaning
Definition RepProcess.h:352
void dprint(const string &pref, int rp_flag)
used for debug prints, each inheriting class can overload this one to get a more precise debug print.
Definition RepProcess.cpp:1184
float print_summary_critical_cleaned
beyond this value will print summary
Definition RepProcess.h:361
string nTrim_attr_suffix
Attribute suffix (name is sample is signalName_suffix) for number of trimmed. not recorded if empty.
Definition RepProcess.h:357
int init(void *processor_params)
Fill required- and affected-signals sets.
Definition RepProcess.h:391
void init_defaults()
Initialize to default values.
Definition RepProcess.h:373
RepBasicOutlierCleaner(const string &_signalName, ValueCleanerParams *_params)
default constructor + setting signal name + initialize from parameters
Definition RepProcess.h:370
virtual void set_signal_ids(MedSignals &sigs)
Set signal id.
Definition RepProcess.cpp:832
RepBasicOutlierCleaner(const string &_signalName)
default constructor + setting signal name
Definition RepProcess.h:366
int time_channel
time channel to consider in cleaning
Definition RepProcess.h:351
string nRem_attr
Attribute name (in sample) for number of removed. not recorded if empty.
Definition RepProcess.h:354
RepBasicOutlierCleaner()
default constructor
Definition RepProcess.h:364
RepBasicOutlierCleaner(const string &_signalName, string init_string)
default constructor + setting signal name + initialize from string
Definition RepProcess.h:368
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
learn cleaning boundaries
Definition RepProcess.cpp:939
void print()
Debug printing.
Definition RepProcess.h:414
void set_signal(const string &_signalName)
Set signal name and fill affected and required signals sets.
Definition RepProcess.h:385
Definition RepProcess.h:1561
string signal_name
name of signal to clean
Definition RepProcess.h:1566
string output_name
name of output virtual signal - defaults to signal_name + "_" + ranges_name
Definition RepProcess.h:1568
int signal_id
id of signal to clean
Definition RepProcess.h:1569
int ranges_id
id of signal the defines ranges
Definition RepProcess.h:1570
int time_channel
time channel to consider in cleaning in the original signal
Definition RepProcess.h:1572
string ranges_name
name of signal that defines ranges
Definition RepProcess.h:1567
vector< string > sets
sets use to filter ranges_name signal on range_val_channel. If empty or range_val_channel,...
Definition RepProcess.h:1578
int output_id
id of output signal
Definition RepProcess.h:1571
RepBasicRangeCleaner()
default constructor
Definition RepProcess.h:1584
int range_time_channel
range time channel to consider in cleaning. this time channel will be used to check we're not using t...
Definition RepProcess.h:1573
int output_type
output signal type - should be identical to input signal type default to range + val type....
Definition RepProcess.h:1574
A simple class for calculating virtual signals.
Definition RepProcess.h:1326
vector< string > signals
it is possible to transfer a vector of required signals, to override default ones.
Definition RepProcess.h:1340
string output_signal_type
a parameter to be pass to list signal to afect output type
Definition RepProcess.h:1334
string calculator
calculator asked for by user
Definition RepProcess.h:1331
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
In this class there's never learning - we return 0 immediately.
Definition RepProcess.h:1362
vector< string > V_names
names of signals created by the calculator (a calculator can create more than a single signal at a ti...
Definition RepProcess.h:1329
RepCheckReq does not actually process the repository but rather check each sample for compliance with...
Definition RepProcess.h:1844
void init_attributes()
Init attributes information : Should be implemented for inheriting classes that have attributes.
Definition RepProcess.h:1875
vector< string > signalNames
Required signals.
Definition RepProcess.h:1847
vector< int > signalIds
Required signals ids.
Definition RepProcess.h:1848
RepCheckReq()
constructor
Definition RepProcess.h:1860
vector< int > time_channels
signals' time channels
Definition RepProcess.h:1850
RepCreateReigsty creates registries (e.g.
Definition RepProcess.h:1424
void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.h:1446
string signal_type
the signal type definition to create
Definition RepProcess.h:1430
vector< string > signals
names of input signals used by the processor
Definition RepProcess.h:1427
string output_name
names of signal created by the processor
Definition RepProcess.h:1426
int factor_channel
the factor_channel_number
Definition RepProcess.h:1429
vector< float > factors
factor for each signal
Definition RepProcess.h:1428
void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.h:1445
Definition RepProcess.h:1772
void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.h:1809
vector< vector< string > > categories_sets
the sets defining each category.
Definition RepProcess.h:1790
void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.h:1808
vector< string > categories_names
the names of the categories to create, categories_names[j] will sit at bit j (1 << j)
Definition RepProcess.h:1789
Definition RepProcess.h:1892
RepHistoryLimit()
It given >0 and delete_sig==0 and win_from==0,win_to==0 will use only last events number in the signa...
Definition RepProcess.h:1905
string signalName
name of signal to clean
Definition RepProcess.h:1894
int signalId
id of signal to clean
Definition RepProcess.h:1895
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
learn processing model on a subset of samples. Apply set of preceeding processors on DynamicPidRec be...
Definition RepProcess.h:1914
void set_signal_ids(MedSignals &sigs)
set signal-ids : Should be implemented for inheriting classes that have signalId
Definition RepProcess.h:1911
void init_defaults()
initialize to default values : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:1908
RepMultiProcessor is a repository processor which contains a vector of simpler processors that can be...
Definition RepProcess.h:242
void register_virtual_section_name_id(MedDictionarySections &dict)
Register section id to section name of new virtual signals.
Definition RepProcess.cpp:826
void add_processors_set(RepProcessorTypes type, vector< string > &signals)
Add processors to set.
Definition RepProcess.cpp:731
void init_attributes()
Init attributes information : Should be implemented for inheriting classes that have attributes.
Definition RepProcess.cpp:757
void set_affected_signal_ids(MedDictionarySections &dict)
Affected Signals : Fill the member set aff_signal_ids.
Definition RepProcess.cpp:473
void init_tables(MedDictionarySections &dict, MedSignals &sigs)
Init required tables : Should be implemented for inheriting classes that have such tables.
Definition RepProcess.h:288
void print()
serialization
Definition RepProcess.h:318
bool filter(unordered_set< string > &reqSignals)
Check if processor (and 'sub'-processors within) should be applied according to set of required signa...
Definition RepProcess.cpp:489
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
learn processors
Definition RepProcess.cpp:584
int _apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_vals)
Apply processors.
Definition RepProcess.cpp:622
void get_required_signal_ids(unordered_set< int > &signalIds)
Required Signals ids : Fill the unordered set signalNames.
Definition RepProcess.cpp:559
void set_required_signal_ids(MedDictionarySections &dict)
Required Signals ids : Fill the member vector - req_signal_ids.
Definition RepProcess.cpp:457
void fit_for_repository(MedPidRepository &rep)
make changes to RepProcessor according to available signals in Repository
Definition RepProcess.cpp:524
void add_virtual_signals(map< string, int > &_virtual_signals, map< string, string > &_virtual_signals_generic) const
Reporting back virtual signals if there are any.
Definition RepProcess.cpp:567
vector< vector< int > > attributes_map
A map from the index of an attribute in the list of attributes of each processor to the index in the ...
Definition RepProcess.h:246
int _conditional_apply(PidDynamicRec &rec, vector< int > &time_points, unordered_set< int > &neededSignals, vector< vector< float > > &attributes_mat)
Apply processors that affect any of the needed signals.
Definition RepProcess.cpp:680
vector< RepProcessor * > processors
Set of processors.
Definition RepProcess.h:244
void get_required_signal_categories(unordered_map< string, vector< string > > &signal_categories_in_use) const
returns for each used signal it's used categories
Definition RepProcess.cpp:801
void dprint(const string &pref, int rp_flag)
debug prints
Definition RepProcess.cpp:781
int _conditional_learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors, unordered_set< int > &neededSignalIds)
learn processing model on a subset of samples only if required. Apply set of preceeding processors on...
Definition RepProcess.cpp:603
void set_signal_ids(MedSignals &sigs)
Set signal-ids for all linked signals.
Definition RepProcess.cpp:533
void get_required_signal_names(unordered_set< string > &signalNames)
Required Signals names : Fill the unordered set signalNames.
Definition RepProcess.cpp:542
RepMultiProcessor()
Constructor.
Definition RepProcess.h:249
RepNbrsOutlierCleaner is cleaner that looks at the neighbourhood of a certain signal value.
Definition RepProcess.h:647
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
learn cleaning boundaries
Definition RepProcess.cpp:2156
int iterativeLearn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
Learning : learn cleaning boundaries using MedValueCleaner's iterative approximation of moments.
Definition RepProcess.cpp:2171
int _apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_mat)
Apply cleaning model.
Definition RepProcess.cpp:2209
int quantileLearn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processor)
Learning : learn cleaning boundaries using MedValueCleaner's quantile approximation of moments.
Definition RepProcess.cpp:2190
int nbr_time_unit
time unit for defining neighboring values
Definition RepProcess.h:656
void init_defaults()
Initialize to default values.
Definition RepProcess.h:673
RepNbrsOutlierCleaner(const string &_signalName, string init_string)
default constructor + setting signal name + initialize from string
Definition RepProcess.h:668
int val_channel
value cahnnel to consider in cleaning
Definition RepProcess.h:653
void set_signal(const string &_signalName)
Set signal name and fill affected and required signals sets.
Definition RepProcess.h:684
int time_channel
time channel to consider in cleaning
Definition RepProcess.h:652
RepNbrsOutlierCleaner(const string &_signalName)
default constructor + setting signal name
Definition RepProcess.h:666
RepNbrsOutlierCleaner(const string &_signalName, ValueCleanerParams *_params)
default constructor + setting signal name + initialize from parameters
Definition RepProcess.h:670
void init_attributes()
Init attributes information : Should be implemented for inheriting classes that have attributes.
Definition RepProcess.cpp:2135
string nTrim_attr
Attribute name (in sample) for number of trimmed. not recorded if empty.
Definition RepProcess.h:659
int nbr_time_width
size of neighborhood for defining neighboring values
Definition RepProcess.h:655
string nRem_attr_suffix
Attribute suffix (name is sample is signalName_suffix) for number of removed. not recorded if empty.
Definition RepProcess.h:660
string signalName
name of signal to clean
Definition RepProcess.h:650
int signalId
id of signal to clean
Definition RepProcess.h:651
void set_signal_ids(MedSignals &sigs)
Set signal id.
Definition RepProcess.h:687
int init(void *processor_params)
Fill required- and affected-signals sets.
Definition RepProcess.h:690
string nTrim_attr_suffix
Attribute suffix (name is sample is signalName_suffix) for number of trimmed. not recorded if empty.
Definition RepProcess.h:661
RepNbrsOutlierCleaner()
default constructor
Definition RepProcess.h:664
string nRem_attr
Attribute name (in sample) for number of removed. not recorded if empty.
Definition RepProcess.h:658
Definition RepProcess.h:1938
void set_signal_ids(MedSignals &sigs)
set signal-ids : Should be implemented for inheriting classes that have signalId
Definition RepProcess.h:1975
void init_defaults()
initialize to default values : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:1966
string signalName
name of signal to clean
Definition RepProcess.h:1952
A Repository panel completer for a complete panel of signals that are dependent and given on same tim...
Definition RepProcess.h:883
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
In this class there's never learning - we init tables and return 0 immediately.
Definition RepProcess.h:934
Definition RepProcess.h:54
static RepProcessor * make_processor(string name)
create a new repository processor from name
Definition RepProcess.cpp:120
size_t get_processor_size()
get size of processor + processor_type
Definition RepProcess.cpp:421
vector< string > attributes
attributes generated by the processor (optional)
Definition RepProcess.h:66
int conditional_apply(PidDynamicRec &rec, vector< int > &time_points, unordered_set< int > &neededSignalIds, vector< vector< float > > &attributes_vals)
apply processing on a single PidDynamicRec at a set of time-points only if required : if any of the s...
Definition RepProcess.h:194
virtual void get_required_signal_names(unordered_set< string > &signalNames)
Append required signal names to set : parent function just uses req_signals.
Definition RepProcess.cpp:339
unordered_set< string > aff_signals
names of signals affected by processing
Definition RepProcess.h:62
bool unconditional
indicated that processor should ALWAYS be applied
Definition RepProcess.h:64
virtual void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.cpp:391
unordered_set< string > req_signals
names of signals required for processsing
Definition RepProcess.h:59
virtual void dprint(const string &pref, int rp_flag)
used for debug prints, each inheriting class can overload this one to get a more precise debug print.
Definition RepProcess.cpp:399
virtual int _apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_vals)
apply processing on a single PidDynamicRec at a set of time-points : Should be implemented for all in...
Definition RepProcess.h:180
virtual void init_defaults()
initialize to default values : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:99
virtual void fit_for_repository(MedPidRepository &rep)
make changes to RepProcessor according to available signals in Repository
Definition RepProcess.h:139
void * new_polymorphic(string derived_class_name)
for polymorphic classes that want to be able to serialize/deserialize a pointer * to the derived clas...
Definition RepProcess.cpp:80
virtual void set_signal(const string &_signalName)
set signal-name : Should be implemented for inheriting classes that have signalName
Definition RepProcess.h:102
int conditional_learn(MedPidRepository &rep, MedSamples &samples, unordered_set< int > &neededSignalIds)
learn processing model on a subset of ids only if required without preceesing processors
Definition RepProcess.h:175
virtual void register_virtual_section_name_id(MedDictionarySections &dict)
Register section id to section name of new virtual signals.
Definition RepProcess.h:142
RepProcessorTypes processor_type
type of repository processor
Definition RepProcess.h:57
virtual void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.cpp:330
virtual void set_signal_ids(MedSignals &sigs)
set signal-ids : Should be implemented for inheriting classes that have signalId
Definition RepProcess.h:105
virtual int _conditional_apply(PidDynamicRec &rec, vector< int > &time_points, unordered_set< int > &neededSignalIds, vector< vector< float > > &attributes_vals)
apply processing on a single PidDynamicRec at a set of time-points only if required : May be implemen...
Definition RepProcess.cpp:313
int apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_vals)
apply processing on a single PidDynamicRec at a set of time-points
Definition RepProcess.h:192
virtual int init(void *params)
initialize from a params object : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:95
virtual void get_required_signal_categories(unordered_map< string, vector< string > > &signal_categories_in_use) const
returns for each used signal it's used categories
Definition RepProcess.h:217
virtual void init_attributes()
Init attributes information : Should be implemented for inheriting classes that have attributes.
Definition RepProcess.h:153
static RepProcessor * create_processor(string ¶ms)
create a new repository processor from parameters string which contains rp_type
Definition RepProcess.cpp:111
unordered_set< int > req_signal_ids
ids of signals required for processing
Definition RepProcess.h:60
virtual void print()
optional printing of processor
Definition RepProcess.h:230
unordered_set< int > aff_signal_ids
ids of signals affected by processing
Definition RepProcess.h:63
int conditional_apply_without_attributes(PidDynamicRec &rec, const MedIdSamples &samples, unordered_set< int > &neededSignalIds)
apply processing on a single PidDynamicRec at a set of time-points given by samples only if required,...
Definition RepProcess.cpp:300
bool is_signal_affected(int signalId)
Check if a signal is affected by processor </summray> true if affected, false if not
Definition RepProcess.h:135
int learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
learn processing model on a subset of ids. Apply set of preceeding processors on DynamicPidRec before...
Definition RepProcess.h:165
virtual int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
learn processing model on a subset of samples. Apply set of preceeding processors on DynamicPidRec be...
Definition RepProcess.h:158
virtual bool filter(unordered_set< string > &reqSignals)
Check if processor (and 'sub'-processors within) should be applied according to set of required signa...
Definition RepProcess.cpp:227
virtual void get_required_signal_ids(unordered_set< int > &signalIds)
Append required signal names to set : parent function just uses req_signals.
Definition RepProcess.cpp:367
virtual int conditional_learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors, unordered_set< int > &neededSignalIds)
learn processing model on a subset of samples only if required. Apply set of preceeding processors on...
Definition RepProcess.h:171
virtual int init(map< string, string > &mapper)
initialize from a map : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:97
virtual void add_virtual_signals(map< string, int > &_virtual_signals, map< string, string > &_virtual_signals_generic) const
rep processors CREATING virtual signals need to implement this: adding their signals to the pile
Definition RepProcess.h:118
virtual void init_tables(MedDictionarySections &dict, MedSignals &sigs)
Init required tables : Should be implemented for inheriting classes that have such tables.
Definition RepProcess.h:150
size_t processor_serialize(unsigned char *blob)
seialize processor + processor_type
Definition RepProcess.cpp:427
int learn(MedPidRepository &rep, MedSamples &samples)
learn on subset of samples without preceesing processors
Definition RepProcess.h:169
vector< pair< string, int > > virtual_signals
virtual signals are created only in rep processors but can be used by any rep processor that comes af...
Definition RepProcess.h:78
virtual int _conditional_learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors, unordered_set< int > &neededSignalIds)
learn processing model on a subset of samples only if required. Apply set of preceeding processors on...
Definition RepProcess.cpp:215
Definition RepProcess.h:1995
void set_signal(const string &_signalName)
set signal-name : Should be implemented for inheriting classes that have signalName
Definition RepProcess.h:2007
A cleaner that is based on rules that describe relations of signal values to each other.
Definition RepProcess.h:520
unordered_map< int, pair< int, int > > signal_id_channels
signal channels (if exists). first is time, second is for val
Definition RepProcess.h:570
string verbose_file
cleaning output_file for debuging
Definition RepProcess.h:534
int init(void *processor_params)
initialize from a params object : Should be implemented for inheriting classes that have parameters
Definition RepProcess.h:587
unordered_map< string, pair< int, int > > signal_channels
signal channels (if exists). first is time, second is for val
Definition RepProcess.h:569
vector< int > consideredRules
only rules in this list will be considered in this cleaner (read list from jason) rule number 0 means...
Definition RepProcess.h:526
map< int, string > rules2RemoveSignal
which signal to remove if contradiction found. If not exists default to remove all
Definition RepProcess.h:566
vector< int > signalIds
Signals to clean.
Definition RepProcess.h:525
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
In this class there's never learning - we init tables and return 0 immediately.
Definition RepProcess.h:604
ADD_SERIALIZATION_FUNCS(processor_type, time_window, calc_res, rules2Signals, rulesToApply, rules2RemoveSignal, signal_channels, consideredRules, tolerance, req_signals, aff_signals, nRem_attr, nRem_attr_suffix, verbose_file, print_summary, print_summary_critical_cleaned) private unordered_map< int, string > affected_ids_to_name
Serialization.
Definition RepProcess.h:623
set< int > reqSignalIds
Helpers.
Definition RepProcess.h:573
Normalize Signal Values by time - divide by time to calculate rate.
Definition RepProcess.h:1621
string output_name
names of signals created by the completer
Definition RepProcess.h:1623
void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.h:1639
string output_signal_type
the output signal type
Definition RepProcess.h:1627
int work_channel
which channel to change and divide by time
Definition RepProcess.h:1625
float factor
additional constant factor
Definition RepProcess.h:1626
string input_name
names of input signals used by the completer
Definition RepProcess.h:1624
void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.h:1640
Definition RepProcess.h:733
RepSimValHandler(const string &_signalName, string init_string)
default constructor + setting signal name + initialize from string
Definition RepProcess.h:751
RepSimValHandler()
default constructor
Definition RepProcess.h:747
int nValChannels
number of value-channels, important for rem-diff and mean modes
Definition RepProcess.h:740
string signalName
name of signal to handle
Definition RepProcess.h:735
SimValHandleTypes handler_type
type of handling multiple-values
Definition RepProcess.h:738
void set_signal(const string &_signalName)
Set signal name and fill affected and required signals sets.
Definition RepProcess.h:754
int signalId
id of signal to handle
Definition RepProcess.h:736
vector< int > time_channels
time channels to consider. All if empty
Definition RepProcess.h:737
RepSimValHandler(const string &_signalName)
default constructor + setting signal name
Definition RepProcess.h:749
void set_signal_ids(MedSignals &sigs)
Set signal id.
Definition RepProcess.h:757
split signal based on set of values.
Definition RepProcess.h:1469
string output_signal_type
same as input signal - will remove later after change init process of RepProcessor to fetch input sig...
Definition RepProcess.h:1476
void set_affected_signal_ids(MedDictionarySections &dict)
Fill aff_signal_ids : parent function just fills from aff_signals.
Definition RepProcess.h:1485
vector< float > factors
factor for each output signal
Definition RepProcess.h:1473
vector< string > names
names of signal created by the processor
Definition RepProcess.h:1472
void set_required_signal_ids(MedDictionarySections &dict)
Fill req_signal_ids : parent function just fills from req_signals.
Definition RepProcess.h:1484
vector< string > sets
the sets to check if signal value is in set
Definition RepProcess.h:1474
int val_channel
the val channel to look for the sets
Definition RepProcess.h:1475
string input_name
names of input signal used by the processor
Definition RepProcess.h:1471
Definition SerializableObject.h:31
int init_from_string(string init_string)
Init from string.
Definition SerializableObject.cpp:121
A is in set operation which return binary output res := in_range_val if is in set otherwise out_range...
Definition RepProcess.h:1250
RepCalcSimpleSignals is a rep processor containing several calculators to calculate new signals.
Definition RepProcess.h:1037
virtual void list_output_signals(const vector< string > &input_signals, vector< pair< string, string > > &_virtual_signals, const string &output_type)
list output signals with default naming
Definition RepProcess.h:1053
virtual bool do_calc(const vector< float > &vals, float &res) const
the calc option
Definition RepProcess.h:1051
static SimpleCalculator * make_calculator(const string &calc_type)
Definition RepProcess.cpp:2948
virtual int init(map< string, string > &mapper)
init function of calculator
Definition RepProcess.h:1047
virtual void validate_arguments(const vector< string > &input_signals, const vector< string > &output_signals) const
validates correctness of inputs
Definition RepProcess.h:1049
virtual void init_tables(MedDictionarySections &dict, MedSignals &sigs, const vector< string > &input_signals)
init operator based on repo if needed
Definition RepProcess.h:1055
does linear sum with factors on vector of input signals, has b0 as constant res := b0 + sum_sigma(i=1...
Definition RepProcess.h:1186
vector< float > factors
the factors given by ","
Definition RepProcess.h:1188
Definition MedValueCleaner.h:17
Parameters for configured outliers cleaner.
Definition RepProcess.h:429
eGFR calculator based on Creatinine, Gender and Age.
Definition RepProcess.h:1148
does log operation
Definition RepProcess.h:1167
Definition RepProcess.h:324
void restart()
restarts stats for new apply
Definition RepProcess.cpp:1141
void print_summary(const string &cleaner_info, const string &signal_name, int minimal_pid_cnt, float print_summary_critical_cleaned, bool prnt_flg) const
prints stats to screen for cleaner
Definition RepProcess.cpp:1149
header to handle OpenMP compatibility issues
Definition RepProcess.h:1728
Definition RepProcess.h:1716
Definition RepProcess.h:1749