From 9518205deb8ef7ec1e6dfb87dafe0071e57fac28 Mon Sep 17 00:00:00 2001 From: "martin.holmer@gmail.com" Date: Sun, 27 Oct 2024 15:15:49 -0400 Subject: [PATCH] Make CLI dump output contain high-precision weights when using TMD input data --- taxcalc/data.py | 2 +- taxcalc/taxcalcio.py | 17 +++++++++++++---- taxcalc/tests/benefits_expect.csv | 2 +- taxcalc/tests/puf_var_wght_means_by_year.csv | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/taxcalc/data.py b/taxcalc/data.py index 79523db93..3f2ccf920 100644 --- a/taxcalc/data.py +++ b/taxcalc/data.py @@ -284,7 +284,7 @@ def _read_weights(self, weights): msg = 'weights is not None or a string or a Pandas DataFrame' raise ValueError(msg) assert isinstance(WT, pd.DataFrame) - setattr(self, 'WT', WT.astype(np.float32)) + setattr(self, 'WT', WT.astype(np.float64)) del WT def _extrapolate(self, year): diff --git a/taxcalc/taxcalcio.py b/taxcalc/taxcalcio.py index 19326cc26..a070f1be4 100644 --- a/taxcalc/taxcalcio.py +++ b/taxcalc/taxcalcio.py @@ -550,8 +550,17 @@ def write_output_file(self, output_dump, dump_varset, outdf = self.minimal_output() column_order = outdf.columns assert len(outdf.index) == self.calc.array_len - outdf.to_csv(self._output_filename, columns=column_order, - index=False, float_format='%.2f') + if self.tmd_input_data: + if "s006" in outdf: + weights = outdf["s006"].round(5) + outdf = outdf.round(2) + if "s006" in outdf: + outdf["s006"] = weights + outdf.to_csv(self._output_filename, columns=column_order, + index=False) + else: + outdf.to_csv(self._output_filename, columns=column_order, + index=False, float_format='%.2f') del outdf gc.collect() @@ -788,8 +797,8 @@ def dump_output(self, calcx, dump_varset, mtr_inctax, mtr_paytax): vardata = calcx.array(varname) if varname in recs_vinfo.INTEGER_VARS: odf[varname] = vardata - else: - odf[varname] = vardata.round(2) # rounded to nearest cent + else: # specify precision that can handle small TMD area weights + odf[varname] = vardata.round(5) odf = odf.copy() # specify mtr values in percentage terms if 'mtr_inctax' in varset: diff --git a/taxcalc/tests/benefits_expect.csv b/taxcalc/tests/benefits_expect.csv index 357a470b0..1da97e273 100644 --- a/taxcalc/tests/benefits_expect.csv +++ b/taxcalc/tests/benefits_expect.csv @@ -141,7 +141,7 @@ year,bname,benamt,bencnt,benavg 2031,snap,158.784,81.873,1.9 2031,wic,5.313,23.047,0.2 2031,tanf,36.49,9.639,3.8 -2031,vet,247.79,12.699,19.5 +2031,vet,247.791,12.699,19.5 2031,housing,83.299,14.327,5.8 2032,ssi,79.862,17.902,4.5 2032,mcare,1553.523,95.617,16.2 diff --git a/taxcalc/tests/puf_var_wght_means_by_year.csv b/taxcalc/tests/puf_var_wght_means_by_year.csv index e89c64d49..4f4d61834 100644 --- a/taxcalc/tests/puf_var_wght_means_by_year.csv +++ b/taxcalc/tests/puf_var_wght_means_by_year.csv @@ -3,7 +3,7 @@ c00100,Federal AGI, 50840, 54457, 54942, 55071, 58024, 60318, 6159 c02500,OASDI benefits in AGI, 1295, 1394, 1416, 1479, 1501, 1587, 1690, 1832, 2005, 2129, 2428, 2659, 2844, 3028, 3214, 3413, 3619, 3833, 4055, 4308, 4459, 4698 c04470,Post-phase-out itemized deduction, 5908, 6037, 6150, 6383, 6563, 6803, 7011, 7493, 7881, 8018, 8324, 8672, 8950, 9288, 9614, 9940, 10266, 10611, 10970, 11450, 11641, 12004 c04600,Post-phase-out personal exemption, 7105, 7131, 7163, 7217, 7149, 7247, 7380, 7471, 7481, 7806, 8373, 8834, 9054, 9248, 9434, 9612, 9797, 9988, 10186, 10398, 10579, 10791 -c04800,Federal regular taxable income, 35753, 39297, 39663, 39591, 42568, 44523, 45416, 46475, 55959, 54603, 57321, 58385, 60072, 61575, 63147, 64911, 66831, 68828, 70916, 73686, 74835, 76970 +c04800,Federal regular taxable income, 35753, 39297, 39663, 39591, 42568, 44523, 45416, 46476, 55959, 54603, 57321, 58385, 60072, 61575, 63147, 64911, 66831, 68828, 70916, 73686, 74835, 76970 c05200,Regular tax on taxable income, 7671, 8731, 8725, 8584, 9499, 10001, 10138, 10475, 13361, 12576, 13165, 13230, 13561, 13847, 14165, 14544, 14965, 15398, 15840, 16404, 16816, 17278 c07180,Child care credit, 17, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16 c07220,Child tax credit (adjusted), 158, 155, 147, 143, 139, 134, 129, 124, 359, 116, 107, 101, 97, 94, 91, 88, 85, 82, 80, 77, 74, 72