simplify_network: Refactor clustering for readability
This commit is contained in:
parent
39cb17a7a1
commit
7ba6fefd67
@ -234,6 +234,24 @@ def remove_stubs(n):
|
|||||||
|
|
||||||
return n, busmap
|
return n, busmap
|
||||||
|
|
||||||
|
def cluster(n, n_clusters):
|
||||||
|
logger.info("Clustering to {} buses".format(n_clusters))
|
||||||
|
|
||||||
|
renewable_carriers = pd.Index([tech
|
||||||
|
for tech in n.generators.carrier.unique()
|
||||||
|
if tech.split('-', 2)[0] in snakemake.config['renewable']])
|
||||||
|
def consense(x):
|
||||||
|
v = x.iat[0]
|
||||||
|
assert ((x == v).all() or x.isnull().all()), (
|
||||||
|
"The `potential` configuration option must agree for all renewable carriers, for now!"
|
||||||
|
)
|
||||||
|
return v
|
||||||
|
potential_mode = (consense(pd.Series([snakemake.config['renewable'][tech]['potential']
|
||||||
|
for tech in renewable_carriers]))
|
||||||
|
if len(renewable_carriers) > 0 else 'conservative')
|
||||||
|
clustering = clustering_for_n_clusters(n, n_clusters, potential_mode=potential_mode)
|
||||||
|
|
||||||
|
return clustering.network, clustering.busmap
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Detect running outside of snakemake and mock snakemake for testing
|
# Detect running outside of snakemake and mock snakemake for testing
|
||||||
@ -269,25 +287,8 @@ if __name__ == "__main__":
|
|||||||
busmaps = [trafo_map, simplify_links_map, stub_map]
|
busmaps = [trafo_map, simplify_links_map, stub_map]
|
||||||
|
|
||||||
if snakemake.wildcards.simpl:
|
if snakemake.wildcards.simpl:
|
||||||
n_clusters = int(snakemake.wildcards.simpl)
|
n, cluster_map = cluster(n, int(snakemake.wildcards.simpl))
|
||||||
logger.info("Clustering to {} buses".format(n_clusters))
|
busmaps.append(cluster_map)
|
||||||
|
|
||||||
renewable_carriers = pd.Index([tech
|
|
||||||
for tech in n.generators.carrier.unique()
|
|
||||||
if tech.split('-', 2)[0] in snakemake.config['renewable']])
|
|
||||||
def consense(x):
|
|
||||||
v = x.iat[0]
|
|
||||||
assert ((x == v).all() or x.isnull().all()), (
|
|
||||||
"The `potential` configuration option must agree for all renewable carriers, for now!"
|
|
||||||
)
|
|
||||||
return v
|
|
||||||
potential_mode = (consense(pd.Series([snakemake.config['renewable'][tech]['potential']
|
|
||||||
for tech in renewable_carriers]))
|
|
||||||
if len(renewable_carriers) > 0 else 'conservative')
|
|
||||||
clustering = clustering_for_n_clusters(n, n_clusters, potential_mode=potential_mode)
|
|
||||||
|
|
||||||
n = clustering.network
|
|
||||||
busmaps.append(clustering.busmap)
|
|
||||||
|
|
||||||
n.export_to_netcdf(snakemake.output.network)
|
n.export_to_netcdf(snakemake.output.network)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user