CF_categories[impact_method+"-dammages"] = [] CF_units[impact_method+"-dammages"] = [] endpoint_category = line[1] endpoint_unit=line[2] CF_categories[impact_method+"-dammages"].append(endpoint_category) CF_units[impact_method+"-dammages"].append(endpoint_unit) dammage_factors[endpoint_category] = {} while 1: line = next(reader) if len(line) == 0: break else: midpoint_category = line[0] factor = line[1] dammage_factors[endpoint_category][midpoint_category] = float(factor.replace(',','.')) return version, CF_categories,CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category if __name__=="__main__": from read_unit_conversion_info import read_unit_conversion_info import csv system_filename = "ecoinvent_v22.CSV" CF_categories={} CF_units={} unit_converter = read_unit_conversion_info(system_filename) reader = csv.reader(open("IMPACT2002 update 2011.csv",'U'), delimiter=';') read_CF_IMPACT2002(reader, unit_converter, CF_categories, CF_units)
def SimaPro_reader(system_filename, impact_method): import csv from capture_UP import capture_UP from read_unit_conversion_info import read_unit_conversion_info from read_system_meta_info import read_system_meta_info from dispatch_meta_info import dispatch_meta_info from dispatch_flows import dispatch_flows from build_matrices import build_matrices from read_CF_IMPACT2002 import read_CF_IMPACT2002 from build_CF_matrix_IMPACT2002 import build_CF_matrix_IMPACT2002 from read_CF_Recipe import read_CF_Recipe from read_CF_Ecodex import read_CF_Ecodex from build_CF_matrix import build_CF_matrix from print_CFs import print_CFs from read_CF_IMPACT_World import read_CF_IMPACT_World from read_CF_IMPACT_World_endpoint import read_CF_IMPACT_World_endpoint from read_CF_export import read_CF_export from build_CF_matrix_IMPACT_World_endpoint import build_CF_matrix_IMPACT_World_endpoint from read_CF_IMPACT_World_terrestrial_acidification import read_CF_IMPACT_World_terrestrial_acidification from build_CF_matrix_World_terrestrial_acidification import build_CF_matrix_World_terrestrial_acidification import os infrastructure_rescale = 1e6 #Read information about unit conversion unit_converter = read_unit_conversion_info(system_filename) #reading the few useful meta_informations reader = csv.reader(open(system_filename, 'U'), delimiter=';') system_meta_info = read_system_meta_info(reader) #Initializing a few variables UP_list = [] EF_list = [] EF_unit = {} all_flow = {} A = {} B = {} uncertainty_info = {} uncertainty_info['technology'] = {} uncertainty_info['intervention'] = {} UP_meta_info = {} while 1: #scaning the whole file, UP by UP. #the loop stops if the function capture_UP captured something else than a UP all_UP_info = capture_UP(reader) if all_UP_info == 'STOP': break else: #the information of each UP is then passed to dispatch_meta_info and #dispatch_flows, to be added to the pre-existing variables UP_meta_info, UP_name, all_UP_info = dispatch_meta_info( all_UP_info, UP_meta_info, UP_list, unit_converter) UP_list, EF_list, flow_list, A, B, uncertainty_info, EF_unit = dispatch_flows( all_UP_info, UP_name, UP_list, EF_list, all_flow, A, B, uncertainty_info, EF_unit, unit_converter, infrastructure_rescale, UP_meta_info) technology_matrix, intervention_matrix = build_matrices( A, UP_list, B, EF_list) CF_matrices = {} CF_categories = {} CF_units = {} if impact_method == 'IMPACT World endpoint': filename = 'IW+_EndPt_aggreges_v0.01_no water quality.csv' reader = csv.reader(open( os.path.join("..", "databases", "impactMethods", impact_method), 'U'), delimiter=';') (CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category) = read_CF_IMPACT_World_endpoint( reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix_IMPACT_World_endpoint( CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category) elif impact_method == 'IMPACT World midpoint': filename = 'IW+_MidPt_aggreges_v0.01_no water quality.csv' reader = csv.reader(open( os.path.join("..", "databases", "impactMethods", impact_method), 'U'), delimiter=';') (CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category) = read_CF_IMPACT_World( reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix(CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category, impact_method) elif impact_method == 'IMPACT2002+ midpoint' or impact_method == 'IMPACT2002+ endpoint': filename = os.path.join("..", "databases", "impactMethods", "impact2002+.csv") reader = csv.reader(open(filename, 'U'), delimiter=';') (CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category) = read_CF_IMPACT2002( reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix_IMPACT2002(CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category) else: reader = csv.reader(open( os.path.join("..", "databases", "impactMethods", impact_method), 'U'), delimiter=';') (version, CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category) = read_CF_export(reader, unit_converter, CF_categories, CF_units, impact_method) CF_matrices = build_CF_matrix(CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category, impact_method) if 0: print_EF_list(EF_list) print_CFs(CF_matrices, EF_list, CF_categories) print_UP_list(UP_list, UP_meta_info, 0) #adjusting the unit for infrastructures (they have been rescaled by 1e6) for UP_name in UP_meta_info: if UP_meta_info[UP_name]['Infrastructure'] == 'Yes': UP_meta_info[UP_name][ 'unit'] = 'micro_' + UP_meta_info[UP_name]['unit'] return system_meta_info, UP_meta_info, UP_list, EF_list, all_flow, technology_matrix, intervention_matrix, CF_matrices, CF_categories, CF_units, EF_unit, unit_converter, infrastructure_rescale, uncertainty_info
CF_categories[impact_method + "-dammages"].append(endpoint_category) CF_units[impact_method + "-dammages"].append(endpoint_unit) dammage_factors[endpoint_category] = {} while 1: line = next(reader) if len(line) == 0: break else: midpoint_category = line[0] factor = line[1] dammage_factors[endpoint_category][ midpoint_category] = float( factor.replace(',', '.')) return version, CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category if __name__ == "__main__": from read_unit_conversion_info import read_unit_conversion_info import csv system_filename = "ecoinvent_v22.CSV" CF_categories = {} CF_units = {} unit_converter = read_unit_conversion_info(system_filename) reader = csv.reader(open("IMPACT2002 update 2011.csv", 'U'), delimiter=';') read_CF_IMPACT2002(reader, unit_converter, CF_categories, CF_units)
def SimaPro_reader(system_filename, impact_method): import csv from capture_UP import capture_UP from read_unit_conversion_info import read_unit_conversion_info from read_system_meta_info import read_system_meta_info from dispatch_meta_info import dispatch_meta_info from dispatch_flows import dispatch_flows from build_matrices import build_matrices from read_CF_IMPACT2002 import read_CF_IMPACT2002 from build_CF_matrix_IMPACT2002 import build_CF_matrix_IMPACT2002 from read_CF_Recipe import read_CF_Recipe from read_CF_Ecodex import read_CF_Ecodex from build_CF_matrix import build_CF_matrix from print_CFs import print_CFs from read_CF_IMPACT_World import read_CF_IMPACT_World from read_CF_IMPACT_World_endpoint import read_CF_IMPACT_World_endpoint from read_CF_export import read_CF_export from build_CF_matrix_IMPACT_World_endpoint import build_CF_matrix_IMPACT_World_endpoint from read_CF_IMPACT_World_terrestrial_acidification import read_CF_IMPACT_World_terrestrial_acidification from build_CF_matrix_World_terrestrial_acidification import build_CF_matrix_World_terrestrial_acidification import os infrastructure_rescale = 1e6 # Read information about unit conversion unit_converter = read_unit_conversion_info(system_filename) # reading the few useful meta_informations reader = csv.reader(open(system_filename, "U"), delimiter=";") system_meta_info = read_system_meta_info(reader) # Initializing a few variables UP_list = [] EF_list = [] EF_unit = {} all_flow = {} A = {} B = {} uncertainty_info = {} uncertainty_info["technology"] = {} uncertainty_info["intervention"] = {} UP_meta_info = {} while 1: # scaning the whole file, UP by UP. # the loop stops if the function capture_UP captured something else than a UP all_UP_info = capture_UP(reader) if all_UP_info == "STOP": break else: # the information of each UP is then passed to dispatch_meta_info and # dispatch_flows, to be added to the pre-existing variables UP_meta_info, UP_name, all_UP_info = dispatch_meta_info(all_UP_info, UP_meta_info, UP_list, unit_converter) UP_list, EF_list, flow_list, A, B, uncertainty_info, EF_unit = dispatch_flows( all_UP_info, UP_name, UP_list, EF_list, all_flow, A, B, uncertainty_info, EF_unit, unit_converter, infrastructure_rescale, UP_meta_info, ) technology_matrix, intervention_matrix = build_matrices(A, UP_list, B, EF_list) CF_matrices = {} CF_categories = {} CF_units = {} if impact_method == "IMPACT World endpoint": filename = "IW+_EndPt_aggreges_v0.01_no water quality.csv" reader = csv.reader(open(os.path.join("..", "databases", "impactMethods", impact_method), "U"), delimiter=";") ( CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category, ) = read_CF_IMPACT_World_endpoint(reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix_IMPACT_World_endpoint( CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category ) elif impact_method == "IMPACT World midpoint": filename = "IW+_MidPt_aggreges_v0.01_no water quality.csv" reader = csv.reader(open(os.path.join("..", "databases", "impactMethods", impact_method), "U"), delimiter=";") ( CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category, ) = read_CF_IMPACT_World(reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix( CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category, impact_method, ) elif impact_method == "IMPACT2002+ midpoint" or impact_method == "IMPACT2002+ endpoint": filename = os.path.join("..", "databases", "impactMethods", "impact2002+.csv") reader = csv.reader(open(filename, "U"), delimiter=";") ( CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category, ) = read_CF_IMPACT2002(reader, unit_converter, CF_categories, CF_units) CF_matrices = build_CF_matrix_IMPACT2002( CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category ) else: reader = csv.reader(open(os.path.join("..", "databases", "impactMethods", impact_method), "U"), delimiter=";") ( version, CF_categories, CF_units, dammage_factors, H, EF_list_for_CF_global, EF_list_for_CF_per_category, ) = read_CF_export(reader, unit_converter, CF_categories, CF_units, impact_method) CF_matrices = build_CF_matrix( CF_categories, dammage_factors, H, EF_list_for_CF_global, EF_list, CF_matrices, EF_list_for_CF_per_category, impact_method, ) if 0: print_EF_list(EF_list) print_CFs(CF_matrices, EF_list, CF_categories) print_UP_list(UP_list, UP_meta_info, 0) # adjusting the unit for infrastructures (they have been rescaled by 1e6) for UP_name in UP_meta_info: if UP_meta_info[UP_name]["Infrastructure"] == "Yes": UP_meta_info[UP_name]["unit"] = "micro_" + UP_meta_info[UP_name]["unit"] return ( system_meta_info, UP_meta_info, UP_list, EF_list, all_flow, technology_matrix, intervention_matrix, CF_matrices, CF_categories, CF_units, EF_unit, unit_converter, infrastructure_rescale, uncertainty_info, )