Spaces:
GIZ
/
Running on CPU Upgrade

SDSN-demo / utils /ndc_explorer.py
prashant
chnaging coherence model
9dca2b8
raw
history blame
No virus
3.08 kB
import urllib.request
import json
link = "https://klimalog.die-gdi.de/ndc/open-data/dataset.json"
def get_document(country_code: str):
"""
read the country NDC data from
https://klimalog.die-gdi.de/ndc/open-data/dataset.json
using the country code.
Params
-------
country_code:"""
with urllib.request.urlopen(link) as urlfile:
data = json.loads(urlfile.read())
categoriesData = {}
categoriesData['categories']= data['categories']
categoriesData['subcategories']= data['subcategories']
keys_sub = categoriesData['subcategories'].keys()
documentType= 'NDCs'
if documentType in data.keys():
if country_code in data[documentType].keys():
get_dict = {}
for key, value in data[documentType][country_code].items():
if key not in ['country_name','region_id', 'region_name']:
get_dict[key] = value['classification']
else:
get_dict[key] = value
else:
return None
else:
return None
country = {}
for key in categoriesData['categories']:
country[key]= {}
for key,value in categoriesData['subcategories'].items():
country[value['category']][key] = get_dict[key]
return country
def countrySpecificCCA(cca_sent:dict, threshold:int, countryCode:str):
"""
based on the countrycode, reads the country data from
https://klimalog.die-gdi.de/ndc/open-data/dataset.json
using get_documents from utils.ndc_explorer.py
then based on thereshold value filters the Climate Change Adaptation
targets assigned by NDC explorer team to that country. Using the sentences
create by Data services team of GIZ for each target level, tries to find the
relevant passages from the document by doing the semantic search.
Params
-------
cca_sent: dictionary with key as 'target labels' and manufactured sentences
reflecting the target level. Please see the docStore/ndcs/cca.txt
threshold: NDC target have many categoriees ranging from [0-5], with 0
refelcting most relaxed attitude and 5 being most aggrisive towards Climate
change. We select the threshold value beyond which we need to focus on.
countryCode: standard country code to allow us to fetch the country specific
data.
"""
temp = {}
doc = get_document(countryCode)
for key,value in cca_sent.items():
id_ = doc['climate change adaptation'][key]['id']
if id_ >threshold:
temp[key] = value['id'][id_]
return temp
def countrySpecificCCM(ccm_sent, threshold, countryCode):
"""
see the documentation of countrySpecificCCA. This is same instead of
this gets the data pertaining to Adaptation
"""
temp = {}
doc = get_document(countryCode)
for key,value in ccm_sent.items():
id_ = doc['climate change mitigation'][key]['id']
if id_ >threshold:
temp[key] = value['id'][id_]
return temp