def __init__(self, creation_date, host, num_segments=2, \ burst_size_range=(10, 20), replication_time=30): """ Initiailize the virus with 2 segments, with default segment length. """ super(Virus, self).__init__() self.id = generate_id() self.parent = None self.creation_date = creation_date self.segments = self.generate_segments(num_segments=num_segments) if type(host) != Host: raise TypeError('A Host object must be specified!') else: self.host = host host.add_virus(self) self.burst_size_range = None self.set_burst_size_range(burst_size_range) self.replication_time = None self.set_replication_time(replication_time)
def __init__(self, creation_date, host, num_segments=2, \ burst_size_range=(5, 10), replication_time=30): """ Initiailize the virus with 2 segments, with default segment length. """ super(Virus, self).__init__() self.id = generate_id() self.parent = None self.creation_date = creation_date self.segments = self.generate_segments(num_segments=num_segments) if type(host) != Host: raise TypeError('A Host object must be specified!') else: self.host = host host.add_virus(self) self.burst_size_range = None self.set_burst_size_range(burst_size_range) self.replication_time = None self.set_replication_time(replication_time)
def __init__(self, num_hosts=0): """Initialize the environment.""" super(Environment, self).__init__() self.current_time = 0 self.id = generate_id() self.hosts = [] for i in range(num_hosts): self.create_host()
def __init__(self, environment, immune_halftime=2): super(Host, self).__init__() self.id = generate_id() self.environment = None self.set_environment(environment) self.infection_history = dict() self.immune_halftime = immune_halftime self.max_viruses = 5000 self.viruses = []
def replicate(self): """ This method returns a deep copy of the virus chosen to replicate. mutate is guaranteed to be called, but not guaranteed to happen. Whether a mutation occurs or not depends on the mutation rate of the virus. The virus is not automatically added to the host. replicate() is called on by the generate_progeny() function, which returns a list of progeny. This list of progeny is then passed into the hosts's add_viruses() function, which then officially adds them to the host. """ new_virus = copy(self) new_virus.creation_date = self.host.environment.current_time new_virus.parent = self.id new_virus.id = generate_id() new_virus.segments = deepcopy(self.segments) new_virus.mutate() return new_virus
def start(): full_data = pd.read_excel(input_excel_file, sheet_name=input_tab) # --------------- FIRST PART - START -------------------- # range of rows (first part) df_1 = full_data.iloc[starting_first_part:ending_first_part] # print number of rows print("Total rows first Part: {0}".format(len(df_1))) last_folder_id = None first_co_le_id = None first_co_le_with_page = None last_cover_letter_id = None # Iterates through the rows for index, row in df_1.iterrows(): # Evaluates the properties for cover letter addressor = None if pd.isna(row[4]) else row[4] addressee = None if pd.isna(row[5]) else row[5] date_hicri = None if pd.isna(row[6]) else row[6] date_greg = None if pd.isna(row[7]) else row[7] rel_detail = None if pd.isna(row[39]) else row[39] ministry_fa = None if pd.isna(row[49]) else row[49] match_beo = None if pd.isna(row[53]) else row[53] match_a_mkt = None if pd.isna(row[54]) else row[54] photo_police = None if pd.isna(row[98]) else row[98] # print(addressor, addressee, rel_detail, match_beo, match_a_mkt) # Checks if cell in column B is not nan (= has folder name) if not pd.isna(row[1]): last_folder_id = id.generate_id(row[1]) # Creates new folder if name does not exist if last_folder_id not in folders: create_folder(last_folder_id, row[1]) # Sometimes when there is a folder name, the page number occurs in the same line. # In that case it must be indicated. So when later in a row without a folder name and a visible page number # it is clear if the addressor/addressee/date information must be added to a new cover letter or must be # added to the first cover letter. if pd.isna(row[3]): page_number = None first_co_le_with_page = False else: page_number = row[3] first_co_le_with_page = True first_co_le_id = id.generate_random_id() last_cover_letter_id = first_co_le_id create_cover_letter(first_co_le_id, page_number, addressor, addressee, date_greg, date_hicri, photo_police, ministry_fa, rel_detail, match_beo, match_a_mkt) update_folder(last_folder_id, first_co_le_id) else: # Checks if there is a page number (= cover letter starts) if not pd.isna(row[3]): # Checks if first cover letter was created without a page number if not first_co_le_with_page: update_cover_letter(last_cover_letter_id, row[3], addressor, addressee, date_greg, date_hicri, photo_police, ministry_fa, rel_detail, match_beo, match_a_mkt, None) first_co_le_with_page = True else: last_cover_letter_id = id.generate_random_id() create_cover_letter(last_cover_letter_id, row[3], addressor, addressee, date_greg, date_hicri, photo_police, ministry_fa, rel_detail, match_beo, match_a_mkt) update_folder(last_folder_id, last_cover_letter_id) else: update_cover_letter(last_cover_letter_id, None, addressor, addressee, date_greg, date_hicri, photo_police, ministry_fa, rel_detail, match_beo, match_a_mkt, None) if not pd.isna(row[11]): # Property for photograph leffen = "False" if pd.isna(row[8]) else "True" firar = "False" if pd.isna(row[12]) else "True" last_photo_id = id.generate_random_id() create_photograph(last_photo_id, row[11], leffen, firar) update_cover_letter(last_cover_letter_id, None, None, None, None, None, None, None, None, None, None, last_photo_id) # Checks if there is a first name if not pd.isna(row[19]): person_id = id.generate_random_id() gender = None if pd.isna(row[15]) else row[15] turk_last_name = None if pd.isna(row[20]) else row[20] arm_last_name = None if pd.isna(row[21]) else row[21] husband_name = None if pd.isna(row[22]) else row[22] fathers_name = None if pd.isna(row[23]) else row[23] mothers_name = None if pd.isna(row[24]) else row[24] grand_fathers_name = None if pd.isna(row[25]) else row[25] kin_relation = None if pd.isna(row[26]) else row[26] house = None if pd.isna(row[31]) else row[31] destination_country = None if pd.isna(row[32]) else row[32] destination_city = None if pd.isna(row[33]) else row[33] name_appear = None if pd.isna(row[56]) else row[56] profession = None if pd.isna(row[78]) else row[78] religion = None if pd.isna(row[79]) else row[79] eye_color = None if pd.isna(row[80]) else row[80] complexion = None if pd.isna(row[81]) else row[81] mouth_nose = None if pd.isna(row[82]) else row[82] hair_color = None if pd.isna(row[83]) else row[83] mustache = None if pd.isna(row[84]) else row[84] beard = None if pd.isna(row[85]) else row[85] face = None if pd.isna(row[86]) else row[86] height = None if pd.isna(row[87]) else row[87] create_person(person_id, gender, row[19], turk_last_name, arm_last_name, husband_name, fathers_name, mothers_name, grand_fathers_name, kin_relation, house, destination_country, destination_city, name_appear, profession, religion, eye_color, complexion, mouth_nose, hair_color, mustache, beard, face, height) # --------------- TESTING CODE -------------------- # Test: Folder name occurs at least twice # if not pd.isna(row[1]): # last_folder_id = id.generate_id(row[1]) # if last_folder_id in folders: # print("Folder name in {0} appeared before".format(index + 2)) # Test: Cover Letter without Photograph # if not pd.isna(row[3]) and pd.isna(row[7]): # print("Cover Letter without Photograph", index + 2) # Test: Folder name and a new Photo in the same line # if not pd.isna(row[1]) and not pd.isna(row[7]): # print("Folder name and new Photo", index + 2) # Test: Photograph without person # if not pd.isna(row[7]) and pd.isna(row[12]) and pd.isna(row[13]): # print("No person on photograph: ({0})".format(index + 2), row[7], row[12], row[13]) # Test: Person without first name but has Turkish last name # --------------- FIRST PART - END -------------------- # --------------- SECOND PART - START -------------------- # range of rows (first part) df2 = full_data.iloc[starting_second_part:ending_second_part] # print number of rows print("Total rows second Part: {0}".format(len(df2))) # Iterates through the rows for index, row in df2.iterrows(): # Checks if cell in column B is not nan (= has folder name) if not pd.isna(row[1]): fold_obj = fold.get_name(row[1]) fold_id = id.generate_id(fold_obj["name"]) # Creates new folder if name does not exist if fold_id not in folders: create_folder(fold_id, fold_obj["name"]) # Checks if there is a first name if not pd.isna(row[19]): person_id = id.generate_random_id() gender = None if pd.isna(row[15]) else row[15] turk_last_name = None if pd.isna(row[20]) else row[20] arm_last_name = None if pd.isna(row[21]) else row[21] husband_name = None if pd.isna(row[22]) else row[22] fathers_name = None if pd.isna(row[23]) else row[23] mothers_name = None if pd.isna(row[24]) else row[24] grand_fathers_name = None if pd.isna(row[25]) else row[25] kin_relation = None if pd.isna(row[26]) else row[26] house = None if pd.isna(row[31]) else row[31] destination_country = None if pd.isna(row[32]) else row[32] destination_city = None if pd.isna(row[33]) else row[33] name_appear = None if pd.isna(row[56]) else row[56] profession = None if pd.isna(row[78]) else row[78] religion = None if pd.isna(row[79]) else row[79] eye_color = None if pd.isna(row[80]) else row[80] complexion = None if pd.isna(row[81]) else row[81] mouth_nose = None if pd.isna(row[82]) else row[82] hair_color = None if pd.isna(row[83]) else row[83] mustache = None if pd.isna(row[84]) else row[84] beard = None if pd.isna(row[85]) else row[85] face = None if pd.isna(row[86]) else row[86] height = None if pd.isna(row[87]) else row[87] create_person(person_id, gender, row[19], turk_last_name, arm_last_name, husband_name, fathers_name, mothers_name, grand_fathers_name, kin_relation, house, destination_country, destination_city, name_appear, profession, religion, eye_color, complexion, mouth_nose, hair_color, mustache, beard, face, height) # --------------- SECOND PART - END -------------------- df_folder = get_df_folder() df_cover_letter = get_df_cover_letter() df_physical_copy = get_df_physical_copy() df_photograph = get_df_photograph() df_person = get_df_person() # Create a Pandas Excel writer using XlsxWriter as the engine. writer_folder = pd.ExcelWriter(output_path + "folder.xlsx", engine='xlsxwriter') writer_cover_letter = pd.ExcelWriter(output_path + "cover_letter.xlsx", engine='xlsxwriter') writer_physical_copy = pd.ExcelWriter(output_path + "physical_copy.xlsx", engine='xlsxwriter') writer_photograph = pd.ExcelWriter(output_path + "photograph.xlsx", engine='xlsxwriter') writer_person = pd.ExcelWriter(output_path + "person.xlsx", engine='xlsxwriter') # Convert the dataframe to an XlsxWriter Excel object. df_folder.to_excel(writer_folder, sheet_name='Folder') df_cover_letter.to_excel(writer_cover_letter, sheet_name='Cover Letter') df_physical_copy.to_excel(writer_physical_copy, sheet_name='Physical Copy') df_photograph.to_excel(writer_photograph, sheet_name='Photograph') df_person.to_excel(writer_person, sheet_name='Person') # Close the Pandas Excel writer and output the Excel file. writer_folder.save() writer_cover_letter.save() writer_physical_copy.save() writer_photograph.save() writer_person.save()
def start(): full_data = pd.read_excel(input_excel_file, sheet_name=input_tab) # range of rows (first part) df1 = full_data.iloc[starting_first_part:ending_first_part] # range of rows (first part) df2 = full_data.iloc[starting_second_part:ending_second_part] frames = [df1, df2] full_df = pd.concat(frames) # print number of rows print("Total rows second Part: {0}".format(len(full_df))) last_folder_id = None first_co_le_id = None first_co_le_with_page = None last_cover_letter_id = None # Iterates through the rows for index, row in full_df.iterrows(): # Evaluates the properties for cover letter addressor = None if pd.isna(row[29]) else row[29] addressee = None if pd.isna(row[30]) else row[30] date = None if pd.isna(row[32]) else row[32] police_department = not pd.isna(row[33]) ministry_fa = not pd.isna(row[34]) special_commission = not pd.isna(row[35]) rel_detail = None if pd.isna(row[36]) else row[36] match_beo = None if pd.isna(row[52]) else row[52] match_a_mkt = None if pd.isna(row[55]) else row[55] # Checks if cell in column B is not nan (= has folder name) if not pd.isna(row[1]): last_folder_id = id.generate_id(row[1]) # Creates new folder if name does not exist if last_folder_id not in folders: create_folder(last_folder_id, row[1]) # Sometimes when there is a folder name, the page number occurs in the same line. # In that case it must be indicated. So when later in a row without a folder name and a visible page number # it is clear if the addressor/addressee/date information must be added to a new cover letter or must be # added to the first cover letter. if pd.isna(row[3]): page_number = None first_co_le_with_page = False else: page_number = row[3] first_co_le_with_page = True first_co_le_id = id.generate_random_id() last_cover_letter_id = first_co_le_id create_cover_letter(first_co_le_id, page_number, addressor, addressee, date, police_department, ministry_fa, special_commission, rel_detail, match_beo, match_a_mkt) update_folder(last_folder_id, first_co_le_id) else: # Checks if there is a page number (= cover letter starts) if not pd.isna(row[3]): # Checks if first cover letter was created without a page number if not first_co_le_with_page: update_cover_letter(last_cover_letter_id, row[3], addressor, addressee, date, police_department, ministry_fa, special_commission, rel_detail, match_beo, match_a_mkt, None) first_co_le_with_page = True else: last_cover_letter_id = id.generate_random_id() create_cover_letter(last_cover_letter_id, row[3], addressor, addressee, date, police_department, ministry_fa, special_commission, rel_detail, match_beo, match_a_mkt) update_folder(last_folder_id, last_cover_letter_id) else: update_cover_letter(last_cover_letter_id, None, addressor, addressee, date, police_department, ministry_fa, special_commission, rel_detail, match_beo, match_a_mkt, None) if not pd.isna(row[7]): last_photo_id = id.generate_random_id() create_photograph(last_photo_id, row[7]) update_cover_letter(last_cover_letter_id, None, None, None, None, None, None, None, None, None, None, last_photo_id) # Checks if there is a first name if not pd.isna(row[12]): person_id = id.generate_random_id() gender = None if pd.isna(row[11]) else row[11] turk_last_name = None if pd.isna(row[13]) else row[13] arm_last_name = None if pd.isna(row[14]) else row[14] husband_name = None if pd.isna(row[15]) else row[15] fathers_name = None if pd.isna(row[16]) else row[16] mothers_name = None if pd.isna(row[17]) else row[17] grand_fathers_name = None if pd.isna(row[18]) else row[18] birth_place = None if pd.isna(row[23]) else row[23] origin_town = None if pd.isna(row[24]) else row[24] origin_kaza = None if pd.isna(row[25]) else row[25] destination_country = None if pd.isna(row[27]) else row[27] destination_city = None if pd.isna(row[28]) else row[28] name_appear = None if pd.isna(row[57]) else row[57] profession = None if pd.isna(row[84]) else row[84] religion = None if pd.isna(row[85]) else row[85] eye_color = None if pd.isna(row[86]) else row[86] complexion = None if pd.isna(row[87]) else row[87] mouth_nose = None if pd.isna(row[88]) else row[88] hair_color = None if pd.isna(row[89]) else row[89] mustache = None if pd.isna(row[90]) else row[90] beard = None if pd.isna(row[91]) else row[91] face = None if pd.isna(row[92]) else row[92] height = None if pd.isna(row[93]) else row[93] house = None if pd.isna(row[99]) else row[99] create_person(person_id, gender, row[12], turk_last_name, arm_last_name, husband_name, fathers_name, mothers_name, grand_fathers_name, birth_place, origin_town, origin_kaza, destination_country, destination_city, name_appear, profession, religion, eye_color, complexion, mouth_nose, hair_color, mustache, beard, face, height, house) # --------------- SECOND PART - START -------------------- # # range of rows (first part) # df2 = full_data.iloc[starting_second_part:ending_second_part] # # print number of rows # print("Total rows second Part: {0}".format(len(df2))) # # # Iterates through the rows # for index, row in df2.iterrows(): # # # Checks if cell in column B is not nan (= has folder name) # if not pd.isna(row[1]): # fold_obj = fold.get_name(row[1]) # fold_id = id.generate_id(fold_obj["name"]) # # # Creates new folder if name does not exist # if fold_id not in folders: # create_folder(fold_id, fold_obj["name"]) # --------------- SECOND PART - END -------------------- df_folder = get_df_folder() df_cover_letter = get_df_cover_letter() df_photograph = get_df_photograph() df_physical_copy = get_df_physical_copy() df_person = get_df_person() # Create a Pandas Excel writer using XlsxWriter as the engine. writer = pd.ExcelWriter(output_excel_file, engine='xlsxwriter') # Convert the dataframe to an XlsxWriter Excel object. df_folder.to_excel(writer, sheet_name='Folder', index=False) df_cover_letter.to_excel(writer, sheet_name='Cover Letter', index=False) df_photograph.to_excel(writer, sheet_name='Photograph', index=False) df_physical_copy.to_excel(writer, sheet_name='Physical Copy', index=False) df_person.to_excel(writer, sheet_name='Person', index=False) # Close the Pandas Excel writer and output the Excel file. writer.save()