Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(app): #70 Add logging #252

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ Imports:
here,
jsonlite,
knitr,
logger,
pacta.executive.summary,
pacta.portfolio.allocate,
pacta.portfolio.audit,
Expand Down
89 changes: 79 additions & 10 deletions web_tool_script_1.R
Original file line number Diff line number Diff line change
@@ -1,74 +1,116 @@
logger::log_threshold(Sys.getenv("LOG_LEVEL", ifelse(interactive(), "FATAL", "INFO")))
logger::log_formatter(logger::formatter_glue)

logger::log_info("Loading libraries")
suppressPackageStartupMessages({
library(pacta.portfolio.utils)
library(pacta.portfolio.import)
library(pacta.portfolio.audit)
library(cli)
library(dplyr)
library(here)
library(glue)
})

cli::cli_h1("web_tool_script_1.R{get_build_version_msg()}")

logger::log_info("web_tool_script_1.R (build: \"{get_build_version_msg()}\").")

if (!exists("portfolio_name_ref_all")) {
portfolio_name_ref_all <- "1234"
logger::log_warn("portfolio_name_ref_all not defined, using default value: {portfolio_name_ref_all}.")
}

portfolio_root_dir <- "working_dir"
logger::log_debug("portfolio_root_dir: \"{portfolio_root_dir}\".")

logger::log_info("Setting up project.")
setup_project()

working_location <- file.path(working_location)
logger::log_debug("working_location: \"{working_location}\".")

logger::log_info("Setting webtool paths.")
set_webtool_paths(portfolio_root_dir)

set_portfolio_parameters(file_path = file.path(par_file_path, paste0(portfolio_name_ref_all, "_PortfolioParameters.yml")))
portfolio_parameters_file <- file.path(
par_file_path,
paste0(portfolio_name_ref_all, "_PortfolioParameters.yml")
)
logger::log_info(
"Setting portfolio parameters from file: \"{portfolio_parameters_file}\"."
)
set_portfolio_parameters(file_path = portfolio_parameters_file)

set_project_parameters(file.path(working_location, "parameter_files", paste0("ProjectParameters_", project_code, ".yml")))
project_parameters_file <- file.path(
working_location,
"parameter_files", paste0("ProjectParameters_", project_code, ".yml")
)
logger::log_info(
"Setting project parameters from file: \"{project_parameters_file}\"."
)
set_project_parameters(project_parameters_file)

# need to define an alternative location for data files
logger::log_info("Setting analysis inputs path to \"{data_location_ext}\".")
analysis_inputs_path <- set_analysis_inputs_path(data_location_ext)

# To save, files need to go in the portfolio specific folder, created here
logger::log_info("Creating portfolio subfolders in \"{project_location}\".")
create_portfolio_subfolders(portfolio_name_ref_all = portfolio_name_ref_all, project_location = project_location)


# load necessary input data ----------------------------------------------------
logger::log_info("Loading input data.")

logger::log_info("Loading currencies data.")
currencies <- readRDS(file.path(analysis_inputs_path, "currencies.rds"))

logger::log_info("Loading fund data.")
fund_data <- readRDS(file.path(analysis_inputs_path, "fund_data.rds"))

logger::log_info("Loading total fund list.")
total_fund_list <- readRDS(file.path(analysis_inputs_path, "total_fund_list.rds"))

logger::log_info("Loading ISIN to fund table.")
isin_to_fund_table <- readRDS(file.path(analysis_inputs_path, "isin_to_fund_table.rds"))

logger::log_info("Loading financial data.")
fin_data <- readRDS(file.path(analysis_inputs_path, "financial_data.rds"))

logger::log_info("Loading entity info.")
entity_info <- get_entity_info(dir = analysis_inputs_path)

logger::log_info("Loading ABCD equity flags.")
abcd_flags_equity <- readRDS(file.path(analysis_inputs_path, "abcd_flags_equity.rds"))

logger::log_info("Loading ABCD bond flags.")
abcd_flags_bonds <- readRDS(file.path(analysis_inputs_path, "abcd_flags_bonds.rds"))

if (inc_emission_factors) {
logger::log_info("Loading entity emission intensity data.")
entity_emission_intensities <- readRDS(
file.path(analysis_inputs_path, "iss_entity_emission_intensities.rds")
)

logger::log_info("Loading average sector emission intensity data.")
average_sector_emission_intensities <- readRDS(
file.path(analysis_inputs_path, "iss_average_sector_emission_intensities.rds")
)
} else {
logger::log_info("Emission intensities not included.")
}

logger::log_info("Input data loaded.")

# Portfolios -------------------------------------------------------------------

logger::log_info("Loading portfolio data.")
abort_if_file_doesnt_exist(
here::here(
"working_dir", "20_Raw_Inputs", glue::glue("{portfolio_name_ref_all}.csv")
)
)
portfolio_raw <- get_input_files(portfolio_name_ref_all, project_location = project_location)

logger::log_info("Processing raw portfolio.")
portfolio <- process_raw_portfolio(
portfolio_raw = portfolio_raw,
fin_data = fin_data,
Expand All @@ -90,43 +132,70 @@ portfolio <-
financial_sector = .data$security_mapped_sector
)

logger::log_info("Creating portfolio ABCD flags.")
portfolio <- create_ald_flag(portfolio, comp_fin_data = abcd_flags_equity, debt_fin_data = abcd_flags_bonds)

logger::log_debug("adding flags to portfolio.")
portfolio_total <- add_portfolio_flags(portfolio)

logger::log_info("Creating portfolio summary.")
portfolio_overview <- portfolio_summary(portfolio_total)

logger::log_info("Creating audit file.")
audit_file <- create_audit_file(portfolio_total, has_revenue)

if (inc_emission_factors) {
logger::log_info("Calculating portfolio financed emissions.")
emissions_totals <- calculate_portfolio_financed_emissions(
portfolio_total,
entity_info,
entity_emission_intensities,
average_sector_emission_intensities
)
} else {
logger::log_info("Bypassing financed emissions calculation.")
}


# Saving -----------------------------------------------------------------------

proc_input_path_ <- file.path(proc_input_path, portfolio_name_ref_all)
logger::log_debug("Processed inputs path: \"{proc_input_path_}\".")

logger::log_info("Exporting audit information to \"{proc_input_path}\".")
export_audit_information_data(
audit_file_ = audit_file %>% filter(portfolio_name == portfolio_name),
portfolio_total_ = portfolio_total %>% filter(portfolio_name == portfolio_name),
folder_path = proc_input_path_
)

save_if_exists(portfolio_total, portfolio_name, file.path(proc_input_path_, "total_portfolio.rds"))
save_if_exists(portfolio_overview, portfolio_name, file.path(proc_input_path_, "overview_portfolio.rds"))
save_if_exists(audit_file, portfolio_name, file.path(proc_input_path_, "audit_file.rds"))
save_if_exists(audit_file, portfolio_name, file.path(proc_input_path_, "audit_file.csv"), csv_or_rds = "csv")
total_portfolio_path <- file.path(proc_input_path_, "total_portfolio.rds")
logger::log_info("Saving portfolio totals to \"{total_portfolio_path}\".")
save_if_exists(portfolio_total, portfolio_name, total_portfolio_path)

overview_portfolio_path <- file.path(proc_input_path_, "overview_portfolio.rds")
logger::log_info("Saving portfolio overview to \"{overview_portfolio_path}\".")
save_if_exists(portfolio_overview, portfolio_name, overview_portfolio_path)

audit_file_rds_path <- file.path(proc_input_path_, "audit_file.rds")
logger::log_info("Saving audit file (rds) to \"{audit_file_rds_path}\".")
save_if_exists(audit_file, portfolio_name, audit_file_rds_path)

audit_file_csv_path <- file.path(proc_input_path_, "audit_file.csv")
logger::log_info("Saving audit file (csv) to \"{audit_file_csv_path}\".")
save_if_exists(audit_file, portfolio_name, audit_file_csv_path, csv_or_rds = "csv")

if (inc_emission_factors) {
save_if_exists(emissions_totals, portfolio_name, file.path(proc_input_path_, "emissions.rds"))
emissions_totals_path <- file.path(proc_input_path_, "emissions.rds")
logger::log_info("Saving emissions totals to \"{emissions_totals_path}\".")
save_if_exists(emissions_totals, portfolio_name, emissions_totals_path)
} else {
logger::log_info("Bypassing saving emissions totals.")
}

logger::log_trace("removing R objects.")
remove_if_exists(portfolio_total)
remove_if_exists(portfolio)
remove_if_exists(audit_file)

logger::log_info("web_tool_script_1.R finished.")
Loading
Loading