Skip to content

Commit

Permalink
completed todo list and unit test updated
Browse files Browse the repository at this point in the history
  • Loading branch information
BixLaw committed Jan 27, 2025
1 parent 5f6a08a commit 00b5c97
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 31 deletions.
37 changes: 13 additions & 24 deletions mbs_results/utilities/constrains.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,18 +141,11 @@ def constrain(
Original dataframe with constrains.
"""

# TODO: Concat of derived and constains df needs to moved up prior to constains
# Currently we are not constaining any derived questions ... Move and refactor
#
# elif statement changed to if (might already be done on main branch - merge main)
# Add a pre-derived column and a post-derived-pre-constain column (again half done
# on main )
# Make unit tests pass and then work on validation function

derive_map = create_derive_map(df, spp_form_id)

df["unadjusted_target"] = df[target]
df[f"pre_derived_{target}"] = df[target]


# pre_derive_df has dimenesions as index, columns the values to be used when derived
# Hard coded columns are from finalsel files,
pre_derive_df = df.set_index(
Expand All @@ -178,29 +171,25 @@ def constrain(
for form_type, derives in derive_map.items()
]
)
unique_q_numbers = df[question_no].unique()
df.set_index([question_no, period, reference], inplace=True)

pre_constrained = pd.concat([df, derived_values])
pre_constrained[f"pre_constrained_{target}"] = pre_constrained[target]

pre_con_col_name = f"pre_con_{target}"
pre_con_vari = {}
unique_q_numbers = pre_constrained[question_no].unique()
pre_constrained.set_index([question_no, period, reference], inplace=True)


if 49 in unique_q_numbers:
if unique_q_numbers > 40:
pre_con_vari[pre_con_col_name] = target.copy()
replace_values_index_based(df, target, 49, ">", 40)
<<<<<<< HEAD
replace_values_index_based(pre_constrained, target, 49, ">", 40)

elif 90 in unique_q_numbers:
=======
if 90 in unique_q_numbers:
>>>>>>> 32e5aca974763866c27b30694bad38415f68e093
replace_values_index_based(df, target, 90, ">=", 40)
replace_values_index_based(pre_constrained, target, 90, ">=", 40)

df.reset_index(inplace=True)

final_constrained = pd.concat([df, derived_values, pre_con_vari])
post_constrained = pre_constrained.copy().reset_index()

return final_constrained

return post_constrained


def derive_questions(
Expand Down
2 changes: 1 addition & 1 deletion tests/data/utilities/constrains/test_constrain.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
period,reference,spp_form_id,question_no,target,unadjusted_target,expected_target,constrain_marker
period,reference,spp_form_id,question_no,target,pre_derived_target,expected_target,constrain_marker
202001,100,15,40,99,99,99,
202001,100,15,49,100,100,99,49 > 40
202001,100,15,90,100,100,99,90 >= 40
Expand Down
12 changes: 6 additions & 6 deletions tests/utilities/test_constrains.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,16 @@ def test_constrain_functionality(filepath):
df[(df["question_no"] == 40) & (df["spp_form_id"].isin([13, 14]))].index
)
.drop(df[(df["question_no"] == 46) & (df["spp_form_id"].isin([15]))].index)
.drop(columns=["unadjusted_target"])
.drop(columns=["pre_derived_target"])
)

df_expected_output = df.drop(
columns=["cell_no", "frotover", "froempment", "frosic2007", "target"]
).rename(columns={"expected_target": "target"})
df_expected_output["target"] = df_expected_output["target"].astype(float)

df_expected_output["unadjusted_target"] = df_expected_output[
"unadjusted_target"
df_expected_output["pre_derived_target"] = df_expected_output[
"pre_derived_target"
].fillna("filled_na")

df_output = constrain(
Expand All @@ -109,20 +109,20 @@ def test_constrain_functionality(filepath):
"spp_form_id",
"question_no",
"target",
"unadjusted_target",
"pre_derived_target",
"constrain_marker",
]

df_output.drop(
columns=["cell_no", "frotover", "froempment", "frosic2007"], inplace=True
)
df_output = df_output[order].sort_values(by=order).reset_index(drop=True)
df_output["unadjusted_target"] = df_output["unadjusted_target"].fillna("filled_na")
df_output["pre_derived_target"] = df_output["pre_derived_target"].fillna("filled_na")

df_expected_output = (
df_expected_output[order].sort_values(by=order).reset_index(drop=True)
)

df_expected_output['spp_form_id'] = df_expected_output['spp_form_id'].astype('int64')
assert_frame_equal(df_output, df_expected_output)


Expand Down

0 comments on commit 00b5c97

Please sign in to comment.