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)
Esempio n. 2
0
	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)
Esempio n. 3
0
    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, 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 = []
Esempio n. 6
0
    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
Esempio n. 8
0
	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
Esempio n. 9
0
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()
Esempio n. 10
0
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()