def test_age_sex(): contingency_table = {} for tup in all_data: age = split_age(int(tup[9])) sex = int(tup[10]) contingency_table.setdefault(age, {2: 0, 3: 0}) contingency_table[age][sex] += 1 show_contingency_table(contingency_table)
def test_age(): contingency_table = {} for tup in all_data: sline = tup[14] age = split_age(int(tup[9])) if sline is None: continue contingency_table.setdefault(sline, {2: 0, 3: 0, 4: 0, 5: 0}) contingency_table[sline][age] += 1 show_contingency_table(contingency_table)
def test_age_month(): contingency_table = {} for tup in all_data: admit_date = tup[2] age = split_age(int(tup[9])) if len(admit_date) == 0: continue month = get_month(admit_date) contingency_table.setdefault(month, {2: 0, 3: 0, 4: 0, 5: 0}) contingency_table[month][age] += 1 show_contingency_table(contingency_table)
def test_rlos_age(): contingency_table = {} for tup in all_data: admit_date = tup[2] rlos = tup[5] age = split_age(int(tup[9])) if len(admit_date) == 0: continue if len(rlos) == 0: continue contingency_table.setdefault(age, dict([(x, 0) for x in xrange(6)])) contingency_table[age][get_los_category(int(rlos))] += 1 show_contingency_table(contingency_table)
plt.show() def add_zeros(data): zero_count = 365 - len(data) if zero_count<0: zero_count = 0 result=[] result.extend([0 for x in xrange(zero_count)]) result.extend(data) return result def filter_data(data, (sexf, agef, slinef)): result = [] for tup in data: age = split_age(int(tup[9])) sex = int(tup[10]) admit_date = tup[2] sline = tup[14] if sline is None: continue if len(admit_date) == 0: continue if age == agef and sex == sexf and sline == slinef: result.append(tup) return result def analyze_hist(sline_code, data, bins=7):
def get_age_category(self): return split_age(self.age)
if (sex, age, sline) not in self.patients_count_distr: raise NotImplementedError( "Patient flow for selection: sex %d, age %d, sline %s is not implemented" % (sex, age, sline) ) if sline not in self.age_distr: raise NotImplementedError("Age distribution for sline %s is not implemented" % sline) if (sex, age, sline) not in self.rlos_distr: raise NotImplementedError( "RLos distribution for selection: sex %d, age %d, sline %s is not implemented" % (sex, age, sline) ) rlos_flow_func = lambda: self.rlos_distr[(sex, age, sline)](100) rlos_flow = rlos_flow_func() age_flow_func = lambda: [a for a in self.age_distr[sline](500) if split_age(a) == age] age_flow = self.recall_if_empty(age_flow_func) sline_distr_info = self.patients_count_distr[(sex, age, sline)] patients_flow = sline_distr_info.rvs(days).tolist() result = [] for iday in range(days): if sline_distr_info.prob == 1.0 or random.random() <= sline_distr_info.prob: pat_count = patients_flow.pop() admits = [] # todo: move convertion from 0 to 1 to rvs function for p in xrange(1 if pat_count == 0 else pat_count): admits.append(AdmitInfo(str(iday + 1), sex, age_flow.pop(), sline, rlos_flow.pop())) if len(rlos_flow) == 0: rlos_flow = rlos_flow_func() if len(age_flow) == 0: