def post_install_setup_minimum(args):
    """If not all data are available, this scripts allows to
    create dummy datas (temperature and service sector load profiles)

    """
    path_config_file = args.config_file

    config = data_loader.read_config_file(path_config_file)
    path_local_data = config['PATHS']['path_local_data']

    # ==========================================
    # Post installation setup witout access to non publicy available data
    # ==========================================
    print(
        "... running initialisation scripts with only publicly available data")

    local_paths = data_loader.get_local_paths(path_config_file)

    # Create folders to input data
    raw_folder = os.path.join(path_local_data, '_raw_data')

    basic_functions.create_folder(raw_folder)
    basic_functions.create_folder(config['PATHS']['path_processed_data'])
    basic_functions.create_folder(local_paths['path_post_installation_data'])
    basic_functions.create_folder(local_paths['load_profiles'])
    basic_functions.create_folder(local_paths['rs_load_profile_txt'])
    basic_functions.create_folder(local_paths['ss_load_profile_txt'])

    # Load data
    data = {}

    data['paths'] = data_loader.load_paths(path_config_file)

    data['lookups'] = lookup_tables.basic_lookups()

    data['enduses'], data['sectors'], data[
        'fuels'], lookup_enduses, lookup_sector_enduses = data_loader.load_fuels(
            data['paths'])

    # Assumptions
    data['assumptions'] = general_assumptions.Assumptions(
        lookup_enduses=lookup_enduses,
        lookup_sector_enduses=lookup_sector_enduses,
        base_yr=2015,
        weather_by=config['CONFIG']['user_defined_weather_by'],
        simulation_end_yr=config['CONFIG']['user_defined_simulation_end_yr'],
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'])

    # Read in residential submodel shapes
    run(data['paths'], local_paths, config['CONFIG']['base_yr'])

    # --------
    # Dummy service sector load profiles
    # --------
    dummy_sectoral_load_profiles(local_paths, path_config_file)

    print(
        "Successfully finished post installation setup with open source data")
Exemplo n.º 2
0
def run():
    """Function to write out assumptions
    """
    path_main = os.path.dirname(
        os.path.abspath(__file__))[:-25]  #Remove 'energy_demand'

    data = data_loader.load_paths(path_main,
                                  'Y:\01-Data_NISMOD\data_energy_demand')
    data = data_loader.load_fuels(data)
    data['assumptions'] = load_assumptions(data)

    # Write out temperature assumptions
    '''write_data.write_out_temp_assumptions(
        os.path.join(data['paths']['path_assumptions_db'], "assumptions_climate_change_temp.csv"),
        data['assumptions']['climate_change_temp_diff_month'])

    # Write out sigmoid parameters
    write_data.write_out_sim_param(
        os.path.join(
            path_main,
            'data',
            'data_scripts',
            'assumptions_from_db',
            'assumptions_sim_param.csv'),
        data['sim_param']
    )
    '''

    return
def test_assign_by_fuel_tech_p():
    """
    """
    path_main = resource_filename(Requirement.parse("energy_demand"),
                                  'config_data')

    # Load data
    data = {}
    data['paths'] = data_loader.load_paths(path_main)
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(
        data['paths'], data['lookups'])
    data['local_paths'] = data_loader.load_local_paths(path_main)

    #Load assumptions
    base_yr = 2015

    data['assumptions'] = non_param_assumptions.Assumptions(
        base_yr=base_yr,
        curr_yr=None,
        simulated_yrs=None,
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        fueltypes=data['lookups']['fueltypes'],
        fueltypes_nr=data['lookups']['fueltypes_nr'])

    param_assumptions.load_param_assump(data['paths'], data['local_paths'],
                                        data['assumptions'])

    rs_fuel_tech_p_by, ss_fuel_tech_p_by, is_fuel_tech_p_by = assumptions_fuel_shares.assign_by_fuel_tech_p(
        data['enduses'], data['sectors'], data['lookups']['fueltypes'],
        data['lookups']['fueltypes_nr'])
Exemplo n.º 4
0
def dummy_sectoral_load_profiles(local_paths, path_main):
    """
    """
    create_folders_to_file(os.path.join(local_paths['ss_load_profile_txt'], "dumm"), "_processed_data")

    paths = data_loader.load_paths(path_main)
    lu = lookup_tables.basic_lookups()

    dict_enduses, dict_sectors, dict_fuels = data_loader.load_fuels(paths, lu)

    for enduse in dict_enduses['ss_enduses']:
        for sector in dict_sectors['ss_sectors']:

            joint_string_name = str(sector) + "__" + str(enduse)

            # Flat profiles
            load_peak_shape_dh = np.full((24), 1)
            shape_non_peak_y_dh = np.full((365, 24), 1/24)
            shape_peak_yd_factor = 1.0
            shape_non_peak_yd = np.full((365), 1/365)

            write_data.create_txt_shapes(
                joint_string_name,
                local_paths['ss_load_profile_txt'],
                load_peak_shape_dh,
                shape_non_peak_y_dh,
                shape_peak_yd_factor,
                shape_non_peak_yd)
Exemplo n.º 5
0
def test_assign_by_fuel_tech_p(config_file):
    """
    """
    config = data_loader.read_config_file(config_file)

    # Load data
    data = {}
    data['paths'] = config['CONFIG_DATA']
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data[
        'fuels'], _, _ = data_loader.load_fuels(data['paths'])

    data['local_paths'] = data_loader.get_local_paths(path_main)

    #Load assumptions
    base_yr = 2015

    data['assumptions'] = general_assumptions.Assumptions(
        submodels_names=['a'],
        base_yr=base_yr,
        curr_yr=None,
        sim_yrs=None,
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        fueltypes=data['lookups']['fueltypes'],
        fueltypes_nr=data['lookups']['fueltypes_nr'])

    strategy_vars_def.load_param_assump(data['paths'], data['local_paths'],
                                        data['assumptions'])

    fuel_tech_p_by = fuel_shares.assign_by_fuel_tech_p(
        data['enduses'], data['sectors'], data['lookups']['fueltypes'],
        data['lookups']['fueltypes_nr'])
Exemplo n.º 6
0
def dummy_sectoral_load_profiles(local_paths, path_main):
    """Create dummy sectoral load profiles

    Arguments
    ---------
    local_paths : dict
        Paths
    path_main : str
        Main path
    """
    create_folders_to_file(
        os.path.join(local_paths['ss_load_profile_txt'], "dumm"), "_processed_data")

    paths = data_loader.load_paths(path_main)

    dict_enduses, dict_sectors, _, _, _ = data_loader.load_fuels(paths)

    for enduse in dict_enduses['service']:
        for sector in dict_sectors['service']:

            joint_string_name = str(sector) + "__" + str(enduse)

            # Flat profiles
            load_peak_shape_dh = np.full((24), 1)
            shape_non_peak_y_dh = np.full((365, 24), 1/24)
            shape_non_peak_yd = np.full((365), 1/365)

            write_data.create_txt_shapes(
                joint_string_name,
                local_paths['ss_load_profile_txt'],
                load_peak_shape_dh,
                shape_non_peak_y_dh,
                shape_non_peak_yd)
Exemplo n.º 7
0
def run(path_main, local_data_path):
    """Function to run script
    """
    print("... start script {}".format(os.path.basename(__file__)))

    # Execute assumptions file to write out assumptions
    temperature_data = read_weather_data_script_data(
        os.path.join(path_main, 'data', 'data_scripts', 'weather_data',
                     'weather_data.csv'))

    data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(data)
    data['assumptions'] = assumptions.load_assumptions(data)
    assumptions_temp_change = data['assumptions'][
        'climate_change_temp_diff_month']
    '''assumptions_temp_change = read_assumption(
        os.path.join(
            local_data_path,
            'data',
            'data_scripts',
            'assumptions_from_db',
            'assumptions_climate_change_temp.csv'
        )
    )

    sim_param = s_shared_functions.read_assumption_sim_param(
        os.path.join(
            local_data_path,
            'data',
            'data_scripts',
            'assumptions_from_db',
            'assumptions_sim_param.csv'
        )
    )'''
    sim_param = data['sim_param']
    temp_climate_change = change_temp_climate_change(temperature_data,
                                                     assumptions_temp_change,
                                                     sim_param)

    # Write out temp_climate_change
    write_chanted_temp_data(
        os.path.join(path_main, 'data', 'data_scripts', 'weather_data',
                     'weather_data_changed_climate.csv'), temp_climate_change)

    print("... finished script {}".format(os.path.basename(__file__)))

    return
Exemplo n.º 8
0
def test_load_param_assump():
    """
    """
    path_main = resource_filename(Requirement.parse("energy_demand"), "config_data")

    # Load data
    data = {}
    data['paths'] = data_loader.load_paths(path_main)
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(data['paths'], data['lookups'])

    sim_param_expected = {}
    sim_param_expected['base_yr'] = 2015

    # Dummy test
    assert sim_param_expected['base_yr'] == 2015
    return
Exemplo n.º 9
0
def run(path_main, local_data_path):
    """Function run script
    """
    print("... start script {}".format(os.path.basename(__file__)))

    # Load data and assumptions
    base_data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(base_data)
    base_data['assumptions'] = assumptions.load_assumptions(base_data)
    base_data[
        'weather_stations'], temperature_data = data_loader.load_data_temperatures(
            os.path.join(base_data['paths']['path_scripts_data'],
                         'weather_data'))
    base_data['temperature_data'] = {}
    for weather_station, base_yr_temp in temperature_data.items():
        base_data['temperature_data'][weather_station] = {2015: base_yr_temp}

    # IMPROVE TODO: LOAD FLOOR AREA DATA
    # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    base_data = data_loader.dummy_data_generation(base_data)
    # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    # Disaggregation
    base_data = disaggregate_base_demand(base_data)

    #Write to csv file disaggregated demand
    write_disagg_fuel(
        os.path.join(path_main, 'data', 'data_scripts', 'disaggregated',
                     'rs_fueldata_disagg.csv'),
        base_data['rs_fueldata_disagg'])
    write_disagg_fuel_sector(
        os.path.join(path_main, 'data', 'data_scripts', 'disaggregated',
                     'ss_fueldata_disagg.csv'),
        base_data['ss_fueldata_disagg'])
    write_disagg_fuel_sector(
        os.path.join(path_main, 'data', 'data_scripts', 'disaggregated',
                     'is_fueldata_disagg.csv'),
        base_data['is_fueldata_disagg'])
    write_disagg_fuel_ts(
        os.path.join(path_main, 'data', 'data_scripts', 'disaggregated',
                     'ts_fueldata_disagg.csv'),
        base_data['ts_fueldata_disagg'])

    print("... finished script {}".format(os.path.basename(__file__)))
    return
Exemplo n.º 10
0
def test_load_non_param_assump():
    """
    """
    path_main = resource_filename(Requirement.parse("energy_demand"), "config_data")

    # Load data
    data = {}
    paths = data_loader.load_paths(path_main)
    lu = lookup_tables.basic_lookups()
    enduses, sectors, _ = data_loader.load_fuels(paths, lu)

    non_param_assumptions.Assumptions(
        base_yr=2015,
        curr_yr=None,
        simulated_yrs=None,
        paths=paths,
        enduses=enduses,
        sectors=sectors,
        fueltypes=lu['fueltypes'],
        fueltypes_nr=lu['fueltypes_nr'])
Exemplo n.º 11
0
    return _, model_run_object

if __name__ == "__main__":
    """
    """
    print('Start HIRE')

    instrument_profiler = True

    # Paths
    path_main = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
    local_data_path = r'Y:\01-Data_NISMOD\data_energy_demand'

    # Load data
    base_data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(base_data)
    base_data = data_loader.load_data_tech_profiles(base_data)
    base_data = data_loader.load_data_profiles(base_data)
    base_data['assumptions'] = assumptions.load_assumptions(base_data)
    base_data['weather_stations'], base_data['temperature_data'] = data_loader.load_data_temperatures(
        os.path.join(base_data['paths']['path_scripts_data'], 'weather_data')
        )

    # >>>>>>>>>>>>>>>DUMMY DATA GENERATION
    # Population
    # GVA
    # Floor Area
    # ...
    base_data = data_loader.dummy_data_generation(base_data)
    # <<<<<<<<<<<<<<<<<< FINISHED DUMMY GENERATION DATA
Exemplo n.º 12
0
    # --------------------
    # Load all other paths
    # --------------------
    data['paths'] = config['CONFIG_DATA']
    data['local_paths'] = config['DATA_PATHS']
    data['result_paths'] = basic_functions.get_result_paths(path_new_scenario)

    for folder, folder_path in data['result_paths'].items():
        basic_functions.create_folder(folder_path)

    # ----------------------------------------------------------------------
    # Load data
    # ----------------------------------------------------------------------
    data['scenario_data'] = defaultdict(dict)
    data['enduses'], data['sectors'], data['fuels'], lookup_enduses, lookup_sector_enduses = data_loader.load_fuels(data['paths'])
    data['regions'] = read_data.get_region_names(name_region_set)
    data['reg_coord'] = basic_functions.get_long_lat_decimal_degrees(read_data.get_region_centroids(name_region_set))

    data['scenario_data']['population'] = data_loader.read_scenario_data(name_population_dataset)
    data['scenario_data']['gva_industry'] = data_loader.read_scenario_data_gva(name_gva_dataset, all_dummy_data=False)
    data['scenario_data']['gva_per_head'] = data_loader.read_scenario_data(name_gva_dataset_per_head)

    # -----------------------------
    # Assumptions
    # -----------------------------
    data['assumptions'] = general_assumptions.Assumptions(
        lookup_enduses=lookup_enduses,
        lookup_sector_enduses=lookup_sector_enduses,
        base_yr=config['CONFIG']['base_yr'],
        weather_by=config['CONFIG']['user_defined_weather_by'],
Exemplo n.º 13
0
def run(path_main, local_data_path):
    """Function run script
    """
    print("... start script {}".format(os.path.basename(__file__)))

    path_out = os.path.join(path_main, 'data', 'data_scripts')

    # Load data and assumptions
    base_data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(base_data)
    base_data['assumptions'] = assumptions.load_assumptions(base_data)

    # Read in Services
    rs_service_tech_by_p = read_data.read_service_data_service_tech_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'rs_service_tech_by_p.csv'))
    ss_service_tech_by_p = read_data.read_service_data_service_tech_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'ss_service_tech_by_p.csv'))
    is_service_tech_by_p = read_data.read_service_data_service_tech_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'is_service_tech_by_p.csv'))
    rs_service_fueltype_by_p = read_data.read_service_fueltype_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'rs_service_fueltype_by_p.csv'))
    ss_service_fueltype_by_p = read_data.read_service_fueltype_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'ss_service_fueltype_by_p.csv'))
    is_service_fueltype_by_p = read_data.read_service_fueltype_by_p(
        os.path.join(base_data['paths']['path_scripts_data'], 'services',
                     'is_service_fueltype_by_p.csv'))

    # Calculate technologies with more, less and constant service based on service switch assumptions
    rs_tech_increased_service, rs_tech_decreased_share, rs_tech_constant_share = get_tech_future_service(
        rs_service_tech_by_p,
        base_data['assumptions']['rs_share_service_tech_ey_p'])
    ss_tech_increased_service, ss_tech_decreased_share, ss_tech_constant_share = get_tech_future_service(
        ss_service_tech_by_p,
        base_data['assumptions']['ss_share_service_tech_ey_p'])
    is_tech_increased_service, is_tech_decreased_share, is_tech_constant_share = get_tech_future_service(
        is_service_tech_by_p,
        base_data['assumptions']['is_share_service_tech_ey_p'])

    # Calculate sigmoid diffusion curves based on assumptions about fuel switches

    # --Residential
    rs_installed_tech, rs_sig_param_tech = get_sig_diffusion(
        base_data, base_data['assumptions']['rs_service_switches'],
        base_data['assumptions']['rs_fuel_switches'],
        base_data['rs_all_enduses'], rs_tech_increased_service,
        base_data['assumptions']['rs_share_service_tech_ey_p'],
        base_data['assumptions']['rs_enduse_tech_maxL_by_p'],
        rs_service_fueltype_by_p, rs_service_tech_by_p,
        base_data['assumptions']['rs_fuel_tech_p_by'])

    # --Service
    ss_installed_tech, ss_sig_param_tech = get_sig_diffusion(
        base_data, base_data['assumptions']['ss_service_switches'],
        base_data['assumptions']['ss_fuel_switches'],
        base_data['ss_all_enduses'], ss_tech_increased_service,
        base_data['assumptions']['ss_share_service_tech_ey_p'],
        base_data['assumptions']['ss_enduse_tech_maxL_by_p'],
        ss_service_fueltype_by_p, ss_service_tech_by_p,
        base_data['assumptions']['ss_fuel_tech_p_by'])

    # --Industry
    is_installed_tech, is_sig_param_tech = get_sig_diffusion(
        base_data, base_data['assumptions']['is_service_switches'],
        base_data['assumptions']['is_fuel_switches'],
        base_data['is_all_enduses'], is_tech_increased_service,
        base_data['assumptions']['is_share_service_tech_ey_p'],
        base_data['assumptions']['is_enduse_tech_maxL_by_p'],
        is_service_fueltype_by_p, is_service_tech_by_p,
        base_data['assumptions']['is_fuel_tech_p_by'])

    # Write out to csv
    write_installed_tech(os.path.join(path_out, 'rs_installed_tech.csv'),
                         rs_installed_tech)
    write_installed_tech(os.path.join(path_out, 'ss_installed_tech.csv'),
                         ss_installed_tech)
    write_installed_tech(os.path.join(path_out, 'is_installed_tech.csv'),
                         is_installed_tech)
    write_sig_param_tech(os.path.join(path_out, 'rs_sig_param_tech.csv'),
                         rs_sig_param_tech)
    write_sig_param_tech(os.path.join(path_out, 'ss_sig_param_tech.csv'),
                         ss_sig_param_tech)
    write_sig_param_tech(os.path.join(path_out, 'is_sig_param_tech.csv'),
                         is_sig_param_tech)
    write_installed_tech(
        os.path.join(path_out, 'rs_tech_increased_service.csv'),
        rs_tech_increased_service)
    write_installed_tech(
        os.path.join(path_out, 'ss_tech_increased_service.csv'),
        ss_tech_increased_service)
    write_installed_tech(
        os.path.join(path_out, 'is_tech_increased_service.csv'),
        is_tech_increased_service)
    write_installed_tech(os.path.join(path_out, 'rs_tech_decreased_share.csv'),
                         rs_tech_decreased_share)
    write_installed_tech(os.path.join(path_out, 'ss_tech_decreased_share.csv'),
                         ss_tech_decreased_share)
    write_installed_tech(os.path.join(path_out, 'is_tech_decreased_share.csv'),
                         is_tech_decreased_share)
    write_installed_tech(os.path.join(path_out, 'rs_tech_constant_share.csv'),
                         rs_tech_constant_share)
    write_installed_tech(os.path.join(path_out, 'ss_tech_constant_share.csv'),
                         ss_tech_constant_share)
    write_installed_tech(os.path.join(path_out, 'is_tech_constant_share.csv'),
                         is_tech_constant_share)

    print("... finished script {}".format(os.path.basename(__file__)))
    return
Exemplo n.º 14
0
def run(path_main, local_data_path):
    """Function to run script
    """
    print("... start script {}".format(os.path.basename(__file__)))

    path_out = os.path.join(path_main, 'data', 'data_scripts', 'services')

    # Load data and assumptions
    base_data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(base_data)
    base_data['assumptions'] = assumptions.load_assumptions(base_data)

    # RESIDENTIAL: Convert base year fuel input assumptions to energy service
    rs_service_tech_by_p, rs_service_fueltype_tech_by_p, rs_service_fueltype_by_p = get_service_fueltype_tech(
        base_data['assumptions']['technology_list'],
        base_data['assumptions']['hybrid_technologies'],
        base_data['lu_fueltype'],
        base_data['assumptions']['rs_fuel_tech_p_by'],
        base_data['rs_fuel_raw_data_enduses'],
        base_data['assumptions']['technologies']
        )

    # SERVICE: Convert base year fuel input assumptions to energy service
    fuels_aggregated_across_sectors = ss_sum_fuel_enduse_sectors(
        base_data['ss_fuel_raw_data_enduses'],
        base_data['ss_all_enduses'],
        base_data['nr_of_fueltypes'])
    ss_service_tech_by_p, ss_service_fueltype_tech_by_p, ss_service_fueltype_by_p = get_service_fueltype_tech(
        base_data['assumptions']['technology_list'],
        base_data['assumptions']['hybrid_technologies'],
        base_data['lu_fueltype'],
        base_data['assumptions']['ss_fuel_tech_p_by'],
        fuels_aggregated_across_sectors,
        base_data['assumptions']['technologies']
        )

    # INDUSTRY
    fuels_aggregated_across_sectors = ss_sum_fuel_enduse_sectors(
        base_data['is_fuel_raw_data_enduses'],
        base_data['is_all_enduses'],
        base_data['nr_of_fueltypes'])
    is_service_tech_by_p, is_service_fueltype_tech_by_p, is_service_fueltype_by_p = get_service_fueltype_tech(
        base_data['assumptions']['technology_list'],
        base_data['assumptions']['hybrid_technologies'],
        base_data['lu_fueltype'],
        base_data['assumptions']['is_fuel_tech_p_by'],
        fuels_aggregated_across_sectors,
        base_data['assumptions']['technologies']
        )

    # Write to csv files
    write_service_tech_by_p(
        os.path.join(path_out, 'rs_service_tech_by_p.csv'),
        rs_service_tech_by_p)
    write_service_tech_by_p(
        os.path.join(path_out, 'ss_service_tech_by_p.csv'),
        ss_service_tech_by_p)
    write_service_tech_by_p(
        os.path.join(path_out, 'is_service_tech_by_p.csv'),
        is_service_tech_by_p)
    write_service_fueltype_tech_by_p(
        os.path.join(path_out, 'rs_service_fueltype_tech_by_p.csv'), 
        rs_service_fueltype_tech_by_p)
    write_service_fueltype_tech_by_p(
        os.path.join(path_out, 'ss_service_fueltype_tech_by_p.csv'),
        ss_service_fueltype_tech_by_p)
    write_service_fueltype_tech_by_p(
        os.path.join(path_out, 'is_service_fueltype_tech_by_p.csv'),
        is_service_fueltype_tech_by_p)
    write_service_fueltype_by_p(
        os.path.join(path_out, 'rs_service_fueltype_by_p.csv'),
        rs_service_fueltype_by_p)
    write_service_fueltype_by_p(
        os.path.join(path_out, 'ss_service_fueltype_by_p.csv'),
        ss_service_fueltype_by_p)
    write_service_fueltype_by_p(
        os.path.join(path_out, 'is_service_fueltype_by_p.csv'),
        is_service_fueltype_by_p)

    print("... finished script {}".format(os.path.basename(__file__)))
    return
Exemplo n.º 15
0
def post_install_setup(args):
    """Run this function after installing the energy_demand
    model with smif and putting the data folder with all necessary
    data into a local drive. This scripts only needs to be
    executed once after the energy_demand model has been installed

    Arguments
    ----------
    args : object
        Arguments defined in ``./cli/__init__.py``
    """
    print("... start running initialisation scripts")

    # Paths
    path_main = resource_filename(Requirement.parse("energy_demand"), "config_data")
    path_results = resource_filename(Requirement.parse("energy_demand"), "results")
    local_data_path = args.local_data

    # Initialise logger
    logger_setup.set_up_logger(
        os.path.join(local_data_path, "logging_post_install_setup.log"))
    logging.info("... start local energy demand calculations")

    # Load data
    base_yr = 2015

    data = {}
    data['paths'] = data_loader.load_paths(path_main)
    data['local_paths'] = data_loader.load_local_paths(local_data_path)
    data['result_paths'] = data_loader.load_result_paths(path_results)
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(
        data['paths'], data['lookups'])

    # Assumptions
    data['assumptions'] = non_param_assumptions.Assumptions(
        base_yr=base_yr,
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        fueltypes=data['lookups']['fueltypes'],
        fueltypes_nr=data['lookups']['fueltypes_nr'])

    # Delete all previous data from previous model runs
    basic_functions.del_previous_setup(data['local_paths']['data_processed'])
    basic_functions.del_previous_setup(data['result_paths']['data_results'])

    # Create folders and subfolder for data_processed
    basic_functions.create_folder(data['local_paths']['data_processed'])
    basic_functions.create_folder(data['local_paths']['path_post_installation_data'])
    basic_functions.create_folder(data['local_paths']['dir_raw_weather_data'])
    basic_functions.create_folder(data['local_paths']['dir_changed_weather_station_data'])
    basic_functions.create_folder(data['local_paths']['load_profiles'])
    basic_functions.create_folder(data['local_paths']['rs_load_profile_txt'])
    basic_functions.create_folder(data['local_paths']['ss_load_profile_txt'])
    basic_functions.create_folder(data['local_paths']['dir_disaggregated'])

    print("... Read in temperature data from raw files")
    s_raw_weather_data.run(
        data['local_paths'])

    print("... Read in service submodel load profiles")
    s_ss_raw_shapes.run(
        data['paths'],
        data['local_paths'],
        data['lookups'])

    print("... Read in residential submodel load profiles")
    s_rs_raw_shapes.run(
        data['paths'],
        data['local_paths'],
        base_yr)

    print("... successfully finished setup")
    return
Exemplo n.º 16
0
def post_install_setup_minimum(args):
    """If not all data are available, this scripts allows to
    create dummy datas (temperature and service sector load profiles)

    Arguments
    ---------
    path_local_data : str
        Path to `energy_demand_data` folder
    path_energy_demand : str
        Path to energy demand python files
    """
    path_energy_demand = resource_filename(Requirement.parse("energy_demand"), "config_data")
    path_local_data = args.local_data

    # ==========================================
    # Post installation setup witout access to non publicy available data
    # ==========================================
    print("... running initialisation scripts with only publicly available data")

    # Load paths
    local_paths = data_loader.load_local_paths(path_local_data)

    # Create folders to input data
    raw_folder = os.path.join(path_local_data, '_raw_data')
    processed_folder = os.path.join(path_local_data, '_processed_data')
    basic_functions.create_folder(raw_folder)
    basic_functions.create_folder(processed_folder)

    basic_functions.create_folder(local_paths['path_post_installation_data'])
    basic_functions.create_folder(local_paths['dir_raw_weather_data'])
    basic_functions.create_folder(local_paths['dir_changed_weather_station_data'])
    basic_functions.create_folder(local_paths['load_profiles'])
    basic_functions.create_folder(local_paths['rs_load_profile_txt'])
    basic_functions.create_folder(local_paths['ss_load_profile_txt'])
    basic_functions.create_folder(local_paths['dir_disaggregated'])

    # Load data
    base_yr = 2015
    data = {}

    data['paths'] = data_loader.load_paths(path_energy_demand)
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(
        data['paths'], data['lookups'])

    # Assumptions
    data['assumptions'] = non_param_assumptions.Assumptions(
        base_yr=base_yr,
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        fueltypes=data['lookups']['fueltypes'],
        fueltypes_nr=data['lookups']['fueltypes_nr'])

    # Read in residential submodel shapes
    run(data['paths'], local_paths, base_yr)

    # ==========================================
    # Create not publica available files
    # ==========================================

    # --------
    # Generate dummy weather stations
    # --------
    dummy_raw_weather_station(local_paths)

    # --------
    # Generate dummy temperatures
    # --------
    dummy_raw_weather_data(local_paths)

    # --------
    # Dummy service sector load profiles
    # --------
    dummy_sectoral_load_profiles(local_paths, path_energy_demand)

    print("Successfully finished post installation setup with open source data")
Exemplo n.º 17
0
def load_data_before_simulation(data, sim_yrs, config, curr_yr):
    # ---------
    # Configuration
    # -----------
    base_yr = config['CONFIG']['base_yr']
    weather_yr_scenario = config['CONFIG']['weather_yr_scenario']
    path_new_scenario = config['PATHS']['path_new_scenario']

    data['data_path'] = os.path.normpath(config['PATHS']['path_local_data'])
    data['processed_path'] = os.path.normpath(
        config['PATHS']['path_processed_data'])
    data['result_path'] = os.path.normpath(config['PATHS']['path_result_data'])
    data['paths'] = config['CONFIG_DATA']

    # Downloaded (FTP) data
    data['local_paths'] = config['DATA_PATHS']

    # ------------------------------------------------
    # Load Inputs
    # ------------------------------------------------
    data['enduses'], data['sectors'], data['fuels'], lookup_enduses, \
        lookup_sector_enduses = data_loader.load_fuels(config['CONFIG_DATA'])

    # ------------------------------------------------
    # Load Assumptions
    # ------------------------------------------------
    data['assumptions'] = general_assumptions.Assumptions(
        lookup_enduses=lookup_enduses,
        lookup_sector_enduses=lookup_sector_enduses,
        base_yr=base_yr,
        weather_by=config['CONFIG']['user_defined_weather_by'],
        simulation_end_yr=config['CONFIG']['user_defined_simulation_end_yr'],
        curr_yr=curr_yr,
        sim_yrs=sim_yrs,
        paths=config['CONFIG_DATA'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        reg_nrs=len(data['regions']))

    # ------------------------------------------
    # Make selection of regions to model
    # ------------------------------------------
    if config['CRITERIA']['reg_selection']:

        region_selection = read_data.get_region_selection(
            os.path.join(config['DATA_PATHS']['local_path_datafolder'],
                         "region_definitions",
                         config['CRITERIA']['reg_selection_csv_name']))
        #region_selection = ['E02003237', 'E02003238']
        setattr(data['assumptions'], 'reg_nrs', len(region_selection))
    else:
        region_selection = data['regions']

    # Create .ini file with simulation parameter
    write_data.write_simulation_inifile(path_new_scenario, data,
                                        region_selection)

    # -------------------------------------------
    # Weather year specific initialisations
    # -------------------------------------------
    path_folder_weather_yr = os.path.join(
        os.path.join(path_new_scenario,
                     str(weather_yr_scenario) + "__" + "all_stations"))

    data['weather_result_paths'] = basic_functions.get_result_paths(
        path_folder_weather_yr)

    folders_to_create = [
        path_folder_weather_yr, data['weather_result_paths']['data_results'],
        data['weather_result_paths']['data_results_PDF'],
        data['weather_result_paths']['data_results_validation'],
        data['weather_result_paths']['data_results_model_run_results_txt']
    ]
    for folder in folders_to_create:
        basic_functions.create_folder(folder)

    # ------------------------------------------------
    # Load load profiles of technologies
    # ------------------------------------------------
    data['tech_lp'] = data_loader.load_data_profiles(
        config['CONFIG_DATA'], config['DATA_PATHS'],
        data['assumptions'].model_yeardays,
        data['assumptions'].model_yeardays_daytype)

    # Obtain population data for disaggregation
    if config['CRITERIA']['msoa_crit']:
        name_population_dataset = config['DATA_PATHS'][
            'path_population_data_for_disaggregation_msoa']
    else:
        name_population_dataset = config['DATA_PATHS'][
            'path_population_data_for_disaggregation_lad']

    data['pop_for_disag'] = data_loader.read_scenario_data(
        name_population_dataset, region_name='region', value_name='value')

    # ------------------------------------------------
    # Load building related data
    # ------------------------------------------------
    if config['CRITERIA']['virtual_building_stock_criteria']:
        data['scenario_data']['floor_area']['rs_floorarea'], data[
            'scenario_data']['floor_area']['ss_floorarea'], data[
                'service_building_count'], rs_regions_without_floorarea, ss_regions_without_floorarea = data_loader.floor_area_virtual_dw(
                    data['regions'],
                    data['sectors'],
                    config['DATA_PATHS'],
                    data['scenario_data']['population'][
                        data['assumptions'].base_yr],
                    base_yr=data['assumptions'].base_yr)

        # Add all areas with no floor area data
        data['assumptions'].update("rs_regions_without_floorarea",
                                   rs_regions_without_floorarea)
        data['assumptions'].update("ss_regions_without_floorarea",
                                   ss_regions_without_floorarea)
    else:
        # ------------------------------------------------
        # Load floor area directly from scenario
        # ------------------------------------------------
        data['scenario_data']['floor_area']['rs_floorarea'] = {}
        data['scenario_data']['floor_area']['rs_floorarea'] = data[
            'scenario_data']['rs_floorarea']
        data['scenario_data']['floor_area']['ss_floorarea'] = data[
            'scenario_data']['ss_floorarea']
        data['scenario_data']['service_building_count'][
            data['assumptions'].base_yr] = {}

    return data
Exemplo n.º 18
0
def run(path_main, local_data_path):
    """Function to run script
    """
    print("... start script {}".format(os.path.basename(__file__)))

    base_data = data_loader.load_paths(path_main, local_data_path)
    base_data = data_loader.load_fuels(base_data)
    base_data['assumptions'] = assumptions.load_assumptions(base_data)

    _, ss_sectors, ss_enduses = read_data.read_csv_base_data_service(
        os.path.join(path_main, 'data', 'submodel_service',
                     'data_service_by_fuel_end_uses.csv'),
        base_data['nr_of_fueltypes'])

    # Iterate sectors and read in shape
    for sector in ss_sectors:

        # Match electricity shapes for every sector
        if sector == 'community_arts_leisure':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "Community")
        elif sector == 'education':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "Education")
        elif sector == 'emergency_services':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "_all_elec")
        elif sector == 'health':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "Health")
        elif sector == 'hospitality':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "_all_elec")
        elif sector == 'military':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "_all_elec")
        elif sector == 'offices':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "Offices")
        elif sector == 'retail':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "Retail")
        elif sector == 'storage':
            sector_folder_path_elec = os.path.join(
                base_data['paths']['folder_raw_carbon_trust'], "_all_elec")
        else:
            sys.exit(
                "Error: The sector {} could not be assigned".format(sector))

        # ------------------------------------------------------
        # Assign same shape across all enduse for service sector
        # ------------------------------------------------------
        for enduse in ss_enduses:
            print("Enduse service: {}  in sector '{}'".format(enduse, sector))

            # Select shape depending on enduse
            if enduse in [
                    'ss_water_heating', 'ss_space_heating', 'ss_other_gas'
            ]:  #TODO
                folder_path = os.path.join(
                    base_data['paths']['folder_raw_carbon_trust'], "_all_gas")
            else:
                if enduse == 'ss_other_electricity' or enduse == 'ss_cooling_and_ventilation':
                    folder_path = os.path.join(
                        base_data['paths']['folder_raw_carbon_trust'],
                        "_all_elec")
                else:
                    folder_path = sector_folder_path_elec

            # Read in shape from carbon trust metering trial dataset
            shape_non_peak_y_dh, load_peak_shape_dh, shape_peak_yd_factor, shape_non_peak_yd = read_raw_carbon_trust_data(
                folder_path)

            # Write shapes to txt
            joint_string_name = str(sector) + "__" + str(enduse)

            s_shared_functions.create_txt_shapes(
                joint_string_name,
                os.path.join(path_main, 'data', 'data_scripts',
                             'load_profiles', 'ss_submodel'),
                load_peak_shape_dh, shape_non_peak_y_dh, shape_peak_yd_factor,
                shape_non_peak_yd)

    # ---------------------
    # Compare Jan and Jul
    # ---------------------
    #ss_read_data.compare_jan_jul(main_dict_dayyear_absolute)

    print("... finished script {}".format(os.path.basename(__file__)))
    return
Exemplo n.º 19
0
def post_install_setup(args):
    """Run this function after installing the energy_demand
    model with smif and putting the data folder with all necessary
    data into a local drive. This scripts only needs to be
    executed once after the energy_demand model has been installed

    Arguments
    ----------
    args : object
        Arguments defined in ``./cli/__init__.py``
    """
    print("... start running initialisation scripts", flush=True)

    path_config_file = args.local_data

    config = data_loader.read_config_file(path_config_file)
    local_data_path = config['PATHS']['path_local_data']

    path_results = resource_filename(Requirement.parse("energy_demand"),
                                     "results")
    local_data_path = args.local_data

    path_config = config['PATHS']['path_energy_demand_config']
    base_yr = config['CONFIG']['base_yr']

    data = {}
    data['paths'] = config['CONFIG_DATA']
    data['local_paths'] = config['DATA_PATHS']
    data['result_paths'] = config['RESULT_DATA']
    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'], lookup_enduses, \
        lookup_sector_enduses = data_loader.load_fuels(data['paths'])

    data['assumptions'] = general_assumptions.Assumptions(
        lookup_enduses=lookup_enduses,
        lookup_sector_enduses=lookup_sector_enduses,
        base_yr=base_yr,
        paths=data['paths'],
        enduses=data['enduses'],
        sectors=data['sectors'])

    # Delete all previous data from previous model runs
    basic_functions.del_previous_setup(data['local_paths']['data_processed'])
    basic_functions.del_previous_setup(data['result_paths']['data_results'])
    basic_functions.del_previous_setup(
        data['local_paths']['path_post_installation_data'])

    # Create folders and subfolder for data_processed
    folders_to_create = [
        data['local_paths']['data_processed'],
        data['local_paths']['path_post_installation_data'],
        data['local_paths']['load_profiles'],
        data['local_paths']['rs_load_profile_txt'],
        data['local_paths']['ss_load_profile_txt']
    ]

    for folder in folders_to_create:
        basic_functions.create_folder(folder)

    print("... Read in residential submodel load profiles", flush=True)
    s_rs_raw_shapes.run(data['paths'], data['local_paths'], base_yr)

    print("... Read in service submodel load profiles", flush=True)
    s_ss_raw_shapes.run(data['paths'], data['local_paths'], data['lookups'])

    # Input data preparation
    print("Generate additional data", flush=True)

    # Extract NISMOD population data
    path_to_zip_file = os.path.join(
        local_data_path, "population-economic-smif-csv-from-nismod-db.zip")
    path_extraction = os.path.join(local_data_path, 'scenarios',
                                   "MISTRAL_pop_gva")
    zip_ref = zipfile.ZipFile(path_to_zip_file, 'r')
    zip_ref.extractall(path_extraction)
    zip_ref.close()

    # Complete gva and pop data for every sector
    data_pop = os.path.join(local_data_path, "scenarios", "MISTRAL_pop_gva",
                            "data")
    path_geography = os.path.join(
        local_data_path, "scenarios",
        "uk_pop_principal_2015_2050_MSOA_england.csv")
    geography_name = "region"  # "lad_uk_2016"

    script_data_preparation_MISTRAL_pop_gva.run(
        path_to_folder=data_pop,
        path_MSOA_baseline=path_geography,
        MSOA_calculations=False,
        geography_name="region")  # "lad_uk_2016"

    print("... successfully finished setup")
    return
Exemplo n.º 20
0
config.read(os.path.join(path_config, 'wrapperconfig.ini'))

# --------
# Other configuration
# --------
base_yr = 2015
sim_yrs = [2015, 2050]

paths = data_loader.load_paths(path_main)
data_path = os.path.normpath(config['PATHS']['path_local_data'])

local_paths = data_loader.get_local_paths(data_path)

data = {}

data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(paths)

assumptions = general_assumptions.Assumptions(base_yr=user_defined_base_yr,
                                              curr_yr=2015,
                                              sim_yrs=sim_yrs,
                                              paths=paths,
                                              enduses=data['enduses'],
                                              sectors=data['sectors'])

# Write parameters to YAML file
_, _ = strategy_vars_def.load_param_assump(assumptions)

print("==========")
print("Finishged generating YAML file with scenario parameters")
print("==========")
Exemplo n.º 21
0
    data['criterias'][
        'beyond_supply_outputs'] = True  # Wheater all results besides integraded smif run are calculated
    data['criterias'][
        'plot_tech_lp'] = True  # Wheater all individual load profils are plotted

    # Paths
    data['paths'] = data_loader.load_paths(path_main)
    data['local_paths'] = data_loader.load_local_paths(local_data_path)

    result_path = os.path.dirname(__file__).split(
        "energy_demand\\energy_demand")[0]
    data['result_paths'] = data_loader.load_result_paths(
        os.path.join(result_path, '_result_data'))

    data['lookups'] = lookup_tables.basic_lookups()
    data['enduses'], data['sectors'], data['fuels'] = data_loader.load_fuels(
        data['paths'], data['lookups'])

    # local scrap
    data['regions'] = data_loader.load_LAC_geocodes_info(
        os.path.join(local_data_path, '_raw_data',
                     '_quick_and_dirty_spatial_disaggregation',
                     'infuse_dist_lyr_2011_saved.csv'))

    #reg_new = {}
    #for i in range(NR_OF_MODELLEd_REGIONS):
    #    _entries = list(data['regions'].keys())
    #    reg_new[_entries[i]] = data['regions'][_entries[i]]
    #data['regions'] = reg_new

    # GVA
    gva_data = {}