Source code for dopo.dash.calculations.calculation

from dopo import Dopo
import bw2data

[docs] def get_projects(): projects = [project for project in bw2data.projects if get_databases(project.name) and project.name != ""] bw2data.projects.set_current(projects[0].name) return projects
[docs] def activate_project(project): bw2data.projects.set_current(project)
[docs] def get_databases(project=None): try: if project: bw2data.projects.set_current(project) return list(bw2data.databases) except: return []
[docs] def get_methods(): return list(bw2data.methods)
[docs] def get_datasets(database): return [ds for ds in bw2data.Database(database)]
[docs] def get_classifications_from_database(database: str, classification="ISIC"): data = [] for ds in bw2data.Database(database): if "classifications" in ds: for c in ds["classifications"]: if classification in c[0].lower(): data.append(c[1].split(":")[-1]) return sorted(list(set(data)))
[docs] def analyze(project, databases, impact_assessments, filters, search_type, exclude_markets=False): bw2data.projects.set_current(project) dopo = Dopo() for method in impact_assessments: dopo.methods.methods.append(eval(method)) dopo.databases = [] for database in databases: dopo.databases.append(database) if search_type == "sectors": dopo.add_sectors(filters) elif search_type == "dataset": dopo.find_datasets_from_names(filters) else: dopo.find_activities_from_classification(search_type, filters) if exclude_markets is True: dopo.exclude_markets() dopo.analyze() return dopo.results