Skip to content
Merged
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
25 changes: 25 additions & 0 deletions policyengine_uk/data/dataset_schema.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import pandas as pd
from policyengine_uk import Microsimulation


class UKDataset:
Expand All @@ -19,6 +20,7 @@ def __init__(
self.person = f["person"]
self.benunit = f["benunit"]
self.household = f["household"]
self.time_period = f["time_period"].iloc[0]
else:
if person is None or benunit is None or household is None:
raise ValueError(
Expand All @@ -39,6 +41,7 @@ def save(self, file_path: str):
f.put(
"household", self.household, format="table", data_columns=True
)
f.put("time_period", pd.Series([self.time_period]), format="table")

def load(self):
data = {}
Expand All @@ -54,3 +57,25 @@ def copy(self):
benunit=self.benunit.copy(),
household=self.household.copy(),
)

@staticmethod
def from_simulation(simulation: Microsimulation, fiscal_year: int = 2025):
entity_dfs = {}

for entity in ["person", "benunit", "household"]:
input_variables = [
variable
for variable in simulation.input_variables
if simulation.tax_benefit_system.variables[variable].entity.key
== entity
]
entity_dfs[entity] = simulation.calculate_dataframe(
input_variables, period=fiscal_year
)

return UKDataset(
person=entity_dfs["person"],
benunit=entity_dfs["benunit"],
household=entity_dfs["household"],
fiscal_year=fiscal_year,
)
9 changes: 9 additions & 0 deletions policyengine_uk/variables/gov/dfe/free_school_fruit_veg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from policyengine_uk.model_api import *


class free_school_fruit_veg(Variable):
label = "free school fruit and vegetables"
entity = Person
definition_period = YEAR
value_type = float
unit = GBP
9 changes: 9 additions & 0 deletions policyengine_uk/variables/gov/dfe/free_school_meals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from policyengine_uk.model_api import *


class free_school_meals(Variable):
label = "free school meals"
entity = Person
definition_period = YEAR
value_type = float
unit = GBP
9 changes: 9 additions & 0 deletions policyengine_uk/variables/gov/dfe/free_school_milk.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from policyengine_uk.model_api import *


class free_school_milk(Variable):
label = "free school milk"
entity = Person
definition_period = YEAR
value_type = float
unit = GBP
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@ class hbai_household_net_income(Variable):
definition_period = YEAR

adds = [
"household_market_income",
"employment_income",
"self_employment_income",
"savings_interest_income",
"dividend_income",
"miscellaneous_income",
"property_income",
"private_pension_income",
"private_transfer_income",
"maintenance_income",
"child_benefit",
"esa_income",
"esa_contrib",
Expand Down Expand Up @@ -43,6 +51,10 @@ class hbai_household_net_income(Variable):
"cost_of_living_support_payment",
"winter_fuel_allowance",
"tax_free_childcare",
"free_school_meals",
"free_school_fruit_veg",
"free_school_milk",
"tv_licence_discount",
# Reference for tax-free-childcare: https://assets.publishing.service.gov.uk/media/5e7b191886650c744175d08b/households-below-average-income-1994-1995-2018-2019.pdf
]
subtracts = [
Expand Down
Loading