def get_rehabilitation_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") rehabilitation_data = dbmgr.demo_data(self.city_data, "rehabilitation") dbmgr.__del__() options = { True: rehabilitation_data[0]['rehabilitation_true'], False: rehabilitation_data[0]['rehabilitation_false'] } return self.randomizer.get_random_dict_key(options)
def get_breakup_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") breakup_data = dbmgr.demo_data("default", "breakup") dbmgr.__del__() options = { True: breakup_data[0]['breakup_true'], False: breakup_data[0]['breakup_false'] } return self.randomizer.get_random_dict_key(options)
def get_alcohol_addiction_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") alcohol_addiction_data = dbmgr.demo_data("default", "alcohol_addiction") dbmgr.__del__() options = { True: alcohol_addiction_data[0]['addict_true'], False: alcohol_addiction_data[0]['addict_false'] } return self.randomizer.get_random_dict_key(options)
def get_relapse_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") relapse_data = dbmgr.demo_data("default", "relapse") dbmgr.__del__() options = { True: relapse_data[0]['relapse_true'], False: relapse_data[0]['relapse_false'] } return self.randomizer.get_random_dict_key(options)
def get_overdose_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") overdose_data = dbmgr.demo_data(self.city_data, "overdose") dbmgr.__del__() options = { True: overdose_data[0]['overdose_true'], False: overdose_data[0]['overdose_false'] } return self.randomizer.get_random_dict_key(options)
def get_relapse_chance(self): """Statistical chance of relapsing""" dbmgr = sql_connect.DatabaseManager("testdb.db") relapse_data = dbmgr.demo_data(self.city_data, "relapse") dbmgr.__del__() options = { True: relapse_data[0]['relapse_true'], False: relapse_data[0]['relapse_false'] } return self.randomizer.get_random_dict_key(options)
def get_drug_addiction_chance(self): """Statistical chance for drug addiction.""" dbmgr = sql_connect.DatabaseManager("testdb.db") drug_addiction_data = dbmgr.demo_data(self.city_data, "drug_addiction") dbmgr.__del__() options = { True: drug_addiction_data[0]['addict_true'], False: drug_addiction_data[0]['addict_false'] } return self.randomizer.get_random_dict_key(options)
def get_desired_num_of_children(self): dbmgr = sql_connect.DatabaseManager("testdb.db") children_data = dbmgr.demo_data("default", "desired_num_of_children") dbmgr.__del__() options = { Traits.ONE_CHILD: children_data[0]['one_child'], Traits.TWO_CHILDREN: children_data[0]['two_children'], Traits.THREE_CHILDREN: children_data[0]['three_children'], Traits.FOUR_CHILDREN: children_data[0]['four_children'] } return self.randomizer.get_random_dict_key(options)
def get_pregnancy_num_of_children(self): """Random number of children for pregnancy: singleton/twins/triplets""" dbmgr = sql_connect.DatabaseManager("testdb.db") pregnancy_data = dbmgr.demo_data("default", "pregnancy") dbmgr.__del__() options = { Traits.SINGLETON: pregnancy_data[0]['singlton'], Traits.TWINS: pregnancy_data[0]['twins'], Traits.TRIPLETS: pregnancy_data[0]['triplets'] } return self.randomizer.get_random_dict_key(options)
def get_social_class(self): """Statistical chance for social class.""" dbmgr = sql_connect.DatabaseManager("testdb.db") social_class_data = dbmgr.demo_data(self.city_data, "social_class") dbmgr.__del__() options = { Traits.UPPER_CLASS: social_class_data[0]['lower_class'], Traits.MIDDLE_CLASS: social_class_data[0]['middle_class'], Traits.LOWER_CLASS: social_class_data[0]['upper_class'] } selected = self.randomizer.get_random_dict_key(options) self.validate_selected(selected, Traits.SOCIAL_CLASSES) return selected
def get_employment_chance(self): """Statistical chance of employment.""" # Link: https://tradingeconomics.com/united-states/unemployment-rate # To insert into DB: Employed: 95.9. Unemployed: 4.1. dbmgr = sql_connect.DatabaseManager("testdb.db") employment_data = dbmgr.demo_data(self.city_data, "employment") dbmgr.__del__() options = { Traits.EMPLOYED: employment_data[0]['employed'], Traits.UNEMPLOYED: employment_data[0]['unemployed'] } selected = self.randomizer.get_random_dict_key(options) self.validate_selected(selected, Traits.EMPLOYMENT) return selected
def get_employment_chance(self): dbmgr = sql_connect.DatabaseManager("testdb.db") employment_data = dbmgr.demo_data("default", "employment") dbmgr.__del__() options = { Traits.EMPLOYED: employment_data[0]['employed'], Traits.UNEMPLOYED: employment_data[0]['unemployed'] } selected = self.randomizer.get_random_dict_key(options) if selected not in Traits.EMPLOYMENT: raise Exception("Wrong employment attribute.") return selected
def get_death_cause(self, person): dbmgr = sql_connect.DatabaseManager("testdb.db") death_cause_data = dbmgr.demo_data("default", "death_cause") dbmgr.__del__() if person.death_date is False: return Traits.OLD_AGE if person.death_date < self.stages.TEEN.start: return Traits.ILLNESS options_teen = { Traits.ILLNESS: death_cause_data[0]['teen_illness'], Traits.SUICIDE: death_cause_data[0]['teen_suicide'] } options_young_adult = { Traits.ILLNESS: death_cause_data[0]['young_adult_illness'], Traits.SUICIDE: death_cause_data[0]['young_adult_suicide'], Traits.ACCIDENT: death_cause_data[0]['young_adult_accident'] } options_adult = { Traits.ILLNESS: death_cause_data[0]['adult_illness'], Traits.SUICIDE: death_cause_data[0]['adult_suicide'], Traits.ACCIDENT: death_cause_data[0]['adult_accident'] } options_senior = { Traits.ILLNESS: death_cause_data[0]['senior_illness'], Traits.SUICIDE: death_cause_data[0]['senior_suicide'], Traits.ACCIDENT: death_cause_data[0]['senior_accident'] } if person.death_date in self.stages.TEEN.span: selected = self.randomizer.get_random_dict_key(options_teen) elif person.death_date in self.stages.YOUNGADULT.span: selected = self.randomizer.get_random_dict_key(options_young_adult) elif person.death_date in self.stages.ADULT.span: selected = self.randomizer.get_random_dict_key(options_adult) elif person.death_date in self.stages.SENIOR.span: selected = self.randomizer.get_random_dict_key(options_senior) else: raise Exception("Wrong death date.") if selected not in Traits.DEATH_CAUSES: raise Exception("Wrong death cause.") return selected
def get_pregnancy_num_of_children(self): """Statistical chance of having singleton/twins/triplets.""" # Link: https://en.wikipedia.org/wiki/Multiple_birth dbmgr = sql_connect.DatabaseManager("testdb.db") pregnancy_data = dbmgr.demo_data(self.city_data, "pregnancy") dbmgr.__del__() options = { Traits.SINGLETON: pregnancy_data[0]['singlton'], Traits.TWINS: pregnancy_data[0]['twins'], Traits.TRIPLETS: pregnancy_data[0]['triplets'] } selected = self.randomizer.get_random_dict_key(options) self.validate_selected(selected, Traits.ALLOWED_NUM_OF_CHILDREN_PER_PREGNANCY) return selected
def get_race(self): """Statistical chance for race.""" # Link: https://www.census.gov/quickfacts/fact/table/US/PST045216 dbmgr = sql_connect.DatabaseManager("testdb.db") race_data = dbmgr.demo_data(self.city_data, "race") dbmgr.__del__() options = { Traits.WHITE: race_data[0]['white'], Traits.BLACK: race_data[0]['black'], Traits.LATINO: race_data[0]['latino'], Traits.ASIAN: race_data[0]['asian'] } selected = self.randomizer.get_random_dict_key(options) self.validate_selected(selected, Traits.RACES) return selected
def get_death_cause(self, person): """Statistical chance for death cause.""" dbmgr = sql_connect.DatabaseManager("testdb.db") death_cause_data = dbmgr.demo_data(self.city_data, "death_cause") dbmgr.__del__() # If death date is False = Old Age if person.death_date is False: return Traits.OLD_AGE # If baby or child = Illness if person.death_date < Traits.TEEN.start: return Traits.ILLNESS options_teen = { Traits.ILLNESS: death_cause_data[0]['teen_illness'], Traits.SUICIDE: death_cause_data[0]['teen_suicide'] } options_young_adult = { Traits.ILLNESS: death_cause_data[0]['young_adult_illness'], Traits.SUICIDE: death_cause_data[0]['young_adult_suicide'], Traits.ACCIDENT: death_cause_data[0]['young_adult_accident'] } options_adult = { Traits.ILLNESS: death_cause_data[0]['adult_illness'], Traits.SUICIDE: death_cause_data[0]['adult_suicide'], Traits.ACCIDENT: death_cause_data[0]['adult_accident'] } options_senior = { Traits.ILLNESS: death_cause_data[0]['senior_illness'], Traits.SUICIDE: death_cause_data[0]['senior_suicide'], Traits.ACCIDENT: death_cause_data[0]['senior_accident'] } if person.death_date in Traits.TEEN.span: selected = self.randomizer.get_random_dict_key(options_teen) elif person.death_date in Traits.YOUNGADULT.span: selected = self.randomizer.get_random_dict_key(options_young_adult) elif person.death_date in Traits.ADULT.span: selected = self.randomizer.get_random_dict_key(options_adult) elif person.death_date in Traits.SENIOR.span: selected = self.randomizer.get_random_dict_key(options_senior) else: raise Exception("Wrong death date.") self.validate_selected(selected, Traits.DEATH_CAUSES) return selected
def get_desired_num_of_children(self): """Statistical chance for desired number of children per couple.""" dbmgr = sql_connect.DatabaseManager("testdb.db") children_data = dbmgr.demo_data(self.city_data, "desired_num_of_children") dbmgr.__del__() options = { Traits.ONE_CHILD: children_data[0]['one_child'], Traits.TWO_CHILDREN: children_data[0]['two_children'], Traits.THREE_CHILDREN: children_data[0]['three_children'], Traits.FOUR_CHILDREN: children_data[0]['four_children'] } selected = self.randomizer.get_random_dict_key(options) self.validate_selected(selected, Traits.ALLOWED_NUM_OF_CHILDREN_PER_COUPLE) return selected
def get_race(self): dbmgr = sql_connect.DatabaseManager("testdb.db") race_data = dbmgr.demo_data("default", "race") dbmgr.__del__() options = { Traits.WHITE: race_data[0]['white'], Traits.BLACK: race_data[0]['black'], Traits.LATINO: race_data[0]['latino'], Traits.ASIAN: race_data[0]['asian'] } selected = self.randomizer.get_random_dict_key(options) if selected not in Traits.RACES: raise Exception("Wrong race.") return selected
def get_breakup_chance(self, couple): """Statistical chance of breaking up.""" # Link: http://stories.avvo.com/relationships/divorce/numbers-breakdown-divorce-generation.html # Link: https://psychcentral.com/blog/is-my-marriage-doomed-if-my-parents-got-divorced-when-i-was-a-kid/ # Insert to DB: True: 52.7. False: 48.3. If divorced parents: True: 79. False: 21. dbmgr = sql_connect.DatabaseManager("testdb.db") breakup_data = dbmgr.demo_data(self.city_data, "breakup") dbmgr.__del__() options_for_married_parents = { True: breakup_data[0]['breakup_true'], False: breakup_data[0]['breakup_false'] } options_for_divorced_parents = {True: 79, False: 21} if all(p.has_divorced_parents for p in couple.persons): return self.randomizer.get_random_dict_key( options_for_divorced_parents) return self.randomizer.get_random_dict_key(options_for_married_parents)
def get_social_class(self): # The database connection, and the city variable probably need doing somewhere once rather than for # every function, every time # Start the db connection dbmgr = sql_connect.DatabaseManager("testdb.db") # Get the data, passing the city social_class_data = dbmgr.demo_data("default", "social_class") # Close the connection dbmgr.__del__() options = { Traits.LOWERCLASS: social_class_data[0]['lower_class'], Traits.MIDDLECLASS: social_class_data[0]['middle_class'], Traits.UPPERCLASS: social_class_data[0]['upper_class'] } selected = self.randomizer.get_random_dict_key(options) if selected not in Traits.SOCIAL_CLASSES: raise Exception("Wrong social class.") return selected