123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- # helper functions to get information on available submissions
- # and data reading functions for a given country
- from typing import List, Dict
- from pathlib import Path
- import json
- import pycountry
- from UNFCCC_GHG_data.helper import root_path, downloaded_data_path, extracted_data_path
- from UNFCCC_GHG_data.helper import get_country_code
- code_path = root_path / "UNFCCC_GHG_data" / "UNFCCC_reader"
- def get_possible_inputs(
- country_name: str,
- submission: str,
- print_info: bool = False,
- ) -> List[Path]:
- """
- For given country name and submission find the possible input files
- Parameters
- ----------
- country_name: str
- String containing the country name or ISO 3 letter UNFCCC_GHG_data
- submission: str
- String of the submission
- print_info: bool = False
- If True print information on UNFCCC_GHG_data found
- Returns
- -------
- returns a list pathlib Path objects for the input files
- """
- data_folder = downloaded_data_path
- # obtain country UNFCCC_GHG_data
- country_code = get_country_code(country_name)
- if print_info:
- print(f"Country name {country_name} maps to ISO UNFCCC_GHG_data {country_code}")
- input_files = []
- for item in data_folder.iterdir():
- if item.is_dir():
- with open(item / "folder_mapping.json", "r") as mapping_file:
- folder_mapping = json.load(mapping_file)
- if country_code in folder_mapping:
- country_folders = folder_mapping[country_code]
- if isinstance(country_folders, str):
- # only one folder
- country_folders = [country_folders]
- for country_folder in country_folders:
- input_folder = item / country_folder / submission
- if input_folder.exists():
- for filepath in input_folder.glob("*"):
- input_files.append(filepath.relative_to(root_path))
- if print_info:
- if input_files:
- print(f"Found possible input files:")
- for file in input_files:
- print(file)
- else:
- print(f"No input files found")
- return input_files
- def get_possible_outputs(
- country_name: str,
- submission: str,
- print_info: bool = False,
- )-> List[Path]:
- """
- For given country name and submission find the possible output files
- Parameters
- ----------
- country_name: str
- String containing the country name or ISO 3 letter UNFCCC_GHG_data
- submission: str
- String of the submission
- print_info: bool = False
- If True print information on outputs found
- Returns
- -------
- returns a list pathlib Path objects for the input files
- """
- data_folder = extracted_data_path
- # obtain country UNFCCC_GHG_data
- country_code = get_country_code(country_name)
- if print_info:
- print(f"Country name {country_name} maps to ISO UNFCCC_GHG_data {country_code}")
- output_files = []
- for item in data_folder.iterdir():
- if item.is_dir():
- with open(item / "folder_mapping.json", "r") as mapping_file:
- folder_mapping = json.load(mapping_file)
- if country_code in folder_mapping:
- country_folder = folder_mapping[country_code]
- if not isinstance(country_folder, str):
- raise ValueError("Wrong data type in folder mapping json file. Should be str.")
- output_folder = item / country_folder
- if output_folder.exists():
- for filepath in output_folder.glob(country_code + "_" + submission + "*"):
- output_files.append(filepath.relative_to(root_path))
- if print_info:
- if output_files:
- print(f"Found possible output files:")
- for file in output_files:
- print(file)
- else:
- print(f"No output files found")
- return output_files
|