Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
    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):
Example #6
0
 def get_age_category(self):
     return split_age(self.age)
Example #7
0
        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: