Example #1
0
 def __init__(self, parser, db):
     """Initializes the class with families and individuals"""
     self.parser = parser
     self.db = db
     self.errors = []
     self.tables = []
     self.tables.append(TableHelpers.dataframe2table(self.db.individuals, "Individuals"))
     self.tables.append(TableHelpers.dataframe2table(self.db.families, "Families"))
Example #2
0
 def two_pair_twins_two_families(self):
     individuals = {
         'CHILD1': Individual(id='CHILD1',
                              birth=date(2005, 3, 10),
                              famc='FAM1'),
         'CHILD2': Individual(id='CHILD2',
                              birth=date(2006, 2, 23),
                              famc='FAM1'),
         'CHILD3': Individual(id='CHILD3',
                              birth=date(2009, 7, 20),
                              famc='FAM1'),
         'CHILD4': Individual(id='CHILD4',
                              birth=date(2009, 7, 20),
                              famc='FAM1'),
         'CHILD5': Individual(id='CHILD5',
                              birth=date(2007, 5, 5),
                              famc='FAM2'),
         'CHILD6': Individual(id='CHILD6',
                              birth=date(2007, 5, 5),
                              famc='FAM2')
     }
     families = {
         'FAM1':
         Family(id='FAM1',
                child_ids=['CHILD1', 'CHILD2', 'CHILD3', 'CHILD4']),
         'FAM2':
         Family(id='FAM2', child_ids=['CHILD5', 'CHILD6'])
     }
     parser = TestParser(individuals, families)
     db = TestDatabase(individuals, families)
     pt_list = US32.list_multiple_births(parser, db)
     self.assertEqual(len(pt_list), 1)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 2)
Example #3
0
    def living_married(self):
        individuals = {
            "HUSB1": Individual(id="HUSB1", fams="FAM1"),
            "WIFE1": Individual(id="WIFE1", fams="FAM1"),
            "HUSB2": Individual(id="HUSB2", fams="FAM2"),
            "WIFE2": Individual(id="WIFE2", fams="FAM2"),
            "WIFE3": Individual(id="WIFE3", famc="FAM3"),
        }
        families = {
            "FAM1":
            Family(id="FAM1",
                   married=date(2012, 11, 12),
                   divorced=None,
                   husband_id="HUSB1",
                   wife_id="WIFE1"),
            "FAM2":
            Family(id="FAM2",
                   married=date(2012, 10, 16),
                   divorced=None,
                   husband_id="HUSB2",
                   wife_id="WIFE2"),
        }

        parser = TestParser(individuals, families)
        db = TestDatabase(individuals, families)
        pt_list = US30.list_living_married(parser, db)
        #print(pt_list)
        self.assertGreater(TableHelpers.get_row_count(pt_list[0]), 0)
Example #4
0
def list_multiple_births(parser, db):
    tables = []
    multiple_birth_children = db.individuals.groupby(['famc','birth'])
    multiple_births = DataFrame({'Children': multiple_birth_children.size()}).reset_index()
    multiple_births = multiple_births[(multiple_births.Children > 1)].rename(columns={'famc':'FamID','birth':'Birthdate'})
    pt = TableHelpers.dataframe2table(multiple_births, "US32: Multiple Births")
    tables.append(pt)
    return tables
Example #5
0
    def nullDeath(self):
        individuals = {
            "NULLBIRT": Individual(id="NULLBIRT", death=None)
        }

        parser = TestParser(individuals, {})
        db = TestDatabase(individuals, {})
        pt_list = US36.list_recent_deaths(parser, db)
        self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 0)
Example #6
0
    def recent(self):
        individuals = {
            "RECENT": Individual(id="RECENT", death=date.today()),
            "OLD": Individual(id="OLD", death=date(1989,7,31))
        }

        parser = TestParser(individuals, {})
        db = TestDatabase(individuals, {})
        pt_list = US36.list_recent_deaths(parser, db)
        self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 1)
Example #7
0
def list_deceased(parser, db):
    tables = []
    today = date.today()
    individuals = db.individuals
    individuals = individuals.loc[(
        ~individuals["death"].isnull())]  # ~ is the loc equivalent of "not"
    pt = TableHelpers.dataframe2table(individuals,
                                      "US29 - Deceased Individuals")
    tables.append(pt)
    return tables
Example #8
0
    def noneRecent(self):
        individuals = {
            "OLD1": Individual(id="OLD1", death=date(1990,2,22)),
            "OLD2": Individual(id="OLD2", death=date(1991,6,16))
        }

        parser = TestParser(individuals, {})
        db = TestDatabase(individuals, {})
        pt_list = US36.list_recent_deaths(parser, db)
        self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 0)
Example #9
0
 def two_anniversaries(self):
     marriage = date(2001, self.today.month, self.today.day)
     individuals = {}
     families = {
         "FAM1": Family(id="FAM1", married=DateHelpers.add_time(marriage, 15, "days")),
         "FAM2": Family(id="FAM2", married=DateHelpers.add_time(marriage, 16, "days")),
         "FAM3": Family(id="FAM3", married=DateHelpers.add_time(marriage, 100, "days")),
     }
     parser = TestParser(individuals, families)
     pt_list = US39.upcoming_anniversaries(parser)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 2)
Example #10
0
 def all_deceased(self):
     individuals = {
         "PERSON1": Individual(id="PERSON1", death=date(2005, 10, 5)),
         "PERSON2": Individual(id="PERSON2", death=date(2005, 10, 15)),
         "PERSON3": Individual(id="PERSON3", death=date(2006, 9, 5)),
     }
     families = {}
     parser = TestParser(individuals, families)
     db = TestDatabase(individuals, families)
     pt_list = US29.list_deceased(parser, db)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 3)
Example #11
0
 def none_deceased(self):
     individuals = {
         "PERSON1": Individual(id="PERSON1"),
         "PERSON2": Individual(id="PERSON2"),
         "PERSON3": Individual(id="PERSON3"),
     }
     families = {}
     parser = TestParser(individuals, families)
     db = TestDatabase(individuals, families)
     pt_list = US29.list_deceased(parser, db)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 0)
Example #12
0
    def large_age_differences(self):
        individuals = {
            "HUSB1": Individual(id="HUSB1", birth=date(1967,9,30),fams="FAM1"),
            "WIFE1": Individual(id="WIFE1", birth=date(1989,7,31),fams="FAM1")
        }
        families = {
            "FAM1": Family(id="FAM1", married=date(2009,10,31), divorced=None, husband_id="HUSB1", wife_id="WIFE1")
        }

        parser = TestParser(individuals, families)
        db = TestDatabase(individuals, families)
        pt_list = US34.list_large_age_differences(parser, db)
        #print(pt_list[0])
        self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 2)
Example #13
0
def older_siblings_by_age(parser, db):
    tables = []
    for _, row in db.families.iterrows():
        famID = row["ID"]
        children = db.individuals.loc[db.individuals["famc"] == famID]
        children = children.sort_values(
            by=["birth"], ascending=True)  # Ascending birth dates
        if children.shape[0] > 0:  # if there are more than 0 rows
            pt = TableHelpers.dataframe2table(
                children,
                "US28: Children in Family {} Descending - Oldest First".format(
                    famID))
            tables.append(pt)
    return tables
Example #14
0
def list_recent_births(parser, db):
    tables = []
    recents = []
    today = date.today()

    for person in parser.individuals.values():
        if person.birth is not None:
            if (DateHelpers.dates_within(today, person.birth, 30, "days")):
                recents.append(person)

    tables.append(
        TableHelpers.individuals2table(recents, "US35: Recent Births"))

    return tables
Example #15
0
def list_ages(parser, db):
    tables = []
    ages = []
    for indiv in parser.individuals.values():
        if indiv.birth is not None:
            ages.append(DateHelpers.calculate_age(indiv.birth, None))
        else:
            ages.append(None)
    individuals = db.individuals
    individuals["Age"] = pd.Series(ages).values
    newTable = TableHelpers.dataframe2table(individuals,
                                            "US27: Individuals and Ages")
    tables.append(newTable)
    return tables
Example #16
0
    def not_large_age_differences(self):

        individuals = {
            "HUSB2": Individual(id="HUSB2", birth=date(1990,2,22),fams="FAM2"),
            "WIFE2": Individual(id="WIFE2", birth=date(1991,6,16),fams="FAM2")
        }
        families = {
            "FAM2": Family(id="FAM2", married=date(2012,10,16), divorced=None, husband_id="HUSB2", wife_id="WIFE2")
        }

        parser = TestParser(individuals, families)
        db = TestDatabase(individuals, families)
        pt_list = US34.list_large_age_differences(parser, db)
        #print(pt_list[0])
        self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 0)
Example #17
0
def list_orphans(parser):
    '''List all children younger than 18 with both parents deceased'''
    tables = []
    orphans = []
    for id in parser.families:
        family = parser.families[id]
        mother = parser.individuals[family.wife_id]
        father = parser.individuals[family.husband_id]
        if mother.death and father.death:
            for child_id in family.child_ids:
                child = parser.individuals[child_id]
                if DateHelpers.calculate_age(child.birth, None) < 18:
                    orphans.append(child)
    pt = TableHelpers.individuals2table(orphans, "US33: List Orphans")
    tables.append(pt)
    return tables
Example #18
0
    def living_single(self):
        individuals = {
            "HUSB": Individual(id="HUSB", birth=date(1900, 2, 11), famc="FAM1"),
            "WIFE": Individual(id="WIFE", birth=date(1930, 4, 18), famc="FAM2"),
            "HUSB2": Individual(id="HUSB2", birth=date(2000, 8, 17),  fams="FAM2"),
            "WIFE2": Individual(id="WIFE2", birth=date(1990, 9, 26), fams="FAM2"),
        }
        families = {
             "FAM2": Family(id="FAM2", married=date(2012,10,16), divorced=None, husband_id="HUSB2", wife_id="WIFE2")
        }

        parser = TestParser(individuals, families)
        db = TestDatabase(individuals, families)
        pt_list = US31.list_living_single(parser, db)
        #print(pt_list)
        self.assertGreater(TableHelpers.get_row_count(pt_list[0]), 0)
Example #19
0
def upcoming_anniversaries(parser):
    tables = []
    today = date.today()
    upcoming_anniversaries = []
    for family in parser.families.values():
        updated = date(today.year, family.married.month, family.married.day)
        # If we've passed the date, we check the next year
        if updated < today:
            updated = date(today.year + 1, family.married.month,
                           family.married.day)
        if DateHelpers.date_diff(updated, today, "days") <= 30:
            upcoming_anniversaries.append(family)
    tables.append(
        TableHelpers.families2table(upcoming_anniversaries,
                                    "US39: Upcoming Anniversaries"))
    return tables
Example #20
0
def upcoming_birthdays(parser):
    tables = []
    today = date.today()
    upcoming_people = []
    for individual in parser.individuals.values():
        updated = date(today.year, individual.birth.month,
                       individual.birth.day)
        # If we've passed the date, we check the next year
        if updated < today:
            updated = date(today.year + 1, individual.birth.month,
                           individual.birth.day)
        if DateHelpers.date_diff(updated, today, "days") <= 30:
            upcoming_people.append(individual)
    tables.append(
        TableHelpers.individuals2table(upcoming_people,
                                       "US38: Upcoming Birthdays"))
    return tables
Example #21
0
 def two_birthdays(self):
     birthday = date(2001, self.today.month, self.today.day)
     individuals = {
         "PERSON1":
         Individual(id="PERSON1",
                    birth=DateHelpers.add_time(birthday, 25, "days")),
         "PERSON2":
         Individual(id="PERSON2",
                    birth=DateHelpers.add_time(birthday, 70, "days")),
         "PERSON3":
         Individual(id="PERSON3",
                    birth=DateHelpers.add_time(birthday, 15, "days")),
     }
     families = {}
     parser = TestParser(individuals, families)
     pt_list = US38.upcoming_birthdays(parser)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 2)
Example #22
0
 def in_order(self):
     individuals = {
         "WIFE": Individual(id="WIFE", fams="FAM"),
         "HUSB": Individual(id="HUSB", fams="FAM"),
         "CHLD1": Individual(id="CHLD1", famc="FAM", birth=date(2001, 2,
                                                                1)),
         "CHLD2": Individual(id="CHLD2", famc="FAM", birth=date(2001, 2,
                                                                2)),
     }
     families = {"FAM": Family(id="FAM")}
     parser = TestParser(individuals, families)
     db = TestDatabase(individuals, families)
     pt_list = US28.older_siblings_by_age(parser, db)
     for index, row in enumerate(pt_list[0]):
         value = TableHelpers.get_row_field_value(row, "ID")
         if index == 0:
             self.assertEqual(value, "CHLD1")
         elif index == 1:
             self.assertEqual(value, "CHLD2")
Example #23
0
 def one_pair_twins(self):
     individuals = {
         'CHILD1': Individual(id='CHILD1',
                              birth=date(2006, 1, 15),
                              famc='FAM1'),
         'CHILD2': Individual(id='CHILD2',
                              birth=date(2007, 6, 19),
                              famc='FAM1'),
         'CHILD3': Individual(id='CHILD3',
                              birth=date(2007, 6, 19),
                              famc='FAM1')
     }
     families = {
         'FAM1': Family(id='FAM1', child_ids=['CHILD1', 'CHILD2', 'CHILD3'])
     }
     parser = TestParser(individuals, families)
     db = TestDatabase(individuals, families)
     pt_list = US32.list_multiple_births(parser, db)
     self.assertEqual(len(pt_list), 1)
     self.assertEqual(TableHelpers.get_row_count(pt_list[0]), 1)