Skip to content
5 changes: 3 additions & 2 deletions deploy/taxbrain_server/celery_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,15 @@ def elasticity_gdp_task_async(year, user_mods, first_budget_year, elast_params):


@celery_app.task
def ogusa_async(user_mods, ogusa_params, guid):
def ogusa_async(start_year, user_mods, ogusa_params, guid):
print("user mods: ", user_mods)
user_mods = convert_int_key(user_mods)
user_reform = {'policy': user_mods}
for key in EXPECTED_KEYS:
if key not in user_reform:
user_reform[key] = {}
diff_data = run_ogusa.run_micro_macro(reform=user_reform,
diff_data = run_ogusa.run_micro_macro(start_year=start_year,
reform=user_reform,
user_params=ogusa_params,
guid=guid)

Expand Down
8 changes: 7 additions & 1 deletion deploy/taxbrain_server/flask_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,20 @@ def example():

@app.route('/ogusa_start_job', methods=['POST'])
def ogusa_start_job():
start_year = int(request.form["start_year"])
user_mods = json.loads(request.form['user_mods'])
ogusa_params = json.loads(request.form['ogusa_params'])

user_mods = {int(k): v for k, v in user_mods.iteritems()}

with ticket_lock_context():
guid = uuid.uuid1().hex
job = ogusa_async.delay(user_mods=user_mods, ogusa_params=ogusa_params, guid=guid)
job = ogusa_async.delay(
start_year=start_year,
user_mods=user_mods,
ogusa_params=ogusa_params,
guid=guid
)
RUNNING_JOBS[job.id] = job
print('job_id', job)
print('GUID IS ', guid)
Expand Down
52 changes: 32 additions & 20 deletions deploy/taxbrain_server/run_ogusa.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,16 @@
from ogusa.scripts.execute import runner


def run_micro_macro(reform, user_params, guid):
def run_micro_macro(start_year, reform, user_params, guid):

small_open = user_params if bool(user_params.get("small_open")) else False
budget_balance = bool(user_params.get("budget_balance", False))

start_time = time.time()

REFORM_DIR = "./OUTPUT_REFORM_" + guid
BASELINE_DIR = "./OUTPUT_BASELINE_" + guid

# Add start year from reform to user parameters
if isinstance(reform, tuple):
start_year = sorted(reform[0].keys())[0]
else:
start_year = sorted(reform.keys())[0]
user_params['start_year'] = start_year

with open("log_{}.log".format(guid), 'w') as f:
f.write("guid: {}\n".format(guid))
f.write("reform: {}\n".format(reform))
Expand All @@ -37,12 +33,15 @@ def run_micro_macro(reform, user_params, guid):
Run baseline
------------------------------------------------------------------------
'''

user_params["start_year"] = start_year
output_base = BASELINE_DIR
kwargs={'output_base':output_base, 'baseline_dir':BASELINE_DIR,
'test':False, 'time_path':True, 'baseline':True,
'analytical_mtrs':False, 'age_specific':False,
'user_params':user_params,'guid':guid,
'run_micro':True, 'small_open': False, 'budget_balance':False, 'baseline_spending':False}
'run_micro':True, 'small_open': small_open, 'budget_balance': budget_balance,
'baseline_spending':False}
#p2 = Process(target=runner, kwargs=kwargs)
#p2.start()
runner(**kwargs)
Expand All @@ -58,7 +57,8 @@ def run_micro_macro(reform, user_params, guid):
'test':False, 'time_path':True, 'baseline':False,
'analytical_mtrs':False, 'age_specific':False,
'user_params':user_params,'guid':guid,
'run_micro':True, 'small_open': False, 'budget_balance':False, 'baseline_spending':False}
'run_micro':True, 'small_open': small_open, 'budget_balance': budget_balance,
'baseline_spending':False}
#p1 = Process(target=runner, kwargs=kwargs)
#p1.start()
runner(**kwargs)
Expand All @@ -75,13 +75,25 @@ def run_micro_macro(reform, user_params, guid):
if __name__ == "__main__":

reform = {
2017: {
'_II_rt1': [.09],
'_II_rt2': [.135],
'_II_rt3': [.225],
'_II_rt4': [.252],
'_II_rt5': [.297],
'_II_rt6': [.315],
'_II_rt7': [0.3564],
}, }
run_micro_macro(reform=reform, user_params={'frisch': 0.44}, guid='abc')
u'growdiff_response': {},
u'consumption': {},
u'growdiff_baseline': {},
u'behavior': {},
u'policy': {
2017: {
u'_II_no_em_nu18': [False],
u'_NIIT_PT_taxed': [False],
u'_FICA_ss_trt': [0.1],
u'_ID_BenefitCap_Switch': [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
u'_ALD_InvInc_ec_base_RyanBrady': [False],
u'_EITC_indiv': [False],
u'_ID_BenefitSurtax_Switch': [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
u'_CTC_new_refund_limited': [False],
u'_CG_nodiff': [False]
}
},
u'gdp_elasticity': {}
}
user_params = {u'g_y_annual': 0.04, u'frisch': 0.3}

run_micro_macro(reform=reform, user_params=user_params, guid='abc')
5 changes: 0 additions & 5 deletions templates/dynamic/dynamic_input_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,6 @@ <h2>Tax-Calculator Code Build</h2>
<div class="sidebar-button">
<a href="#" ></a>
<input id="tax-submit" class="btn btn-secondary btn-block btn-animate {{ is_disabled }}" {{ is_disabled }} type="submit" value="Start Dynamic Simulation!">
<div class="construction text-center">
<div class="progress progress-striped" style="width: 100%">
<div class="progress-bar active progress-bar-custom" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
</div>
</div>
</div>
</div> <!-- sidebar -->
</div>
Expand Down
8 changes: 8 additions & 0 deletions templates/dynamic/includes/params/inputs/dynamic.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ <h1>Macroeconomic Parameters</h1>
{% endblock %}
</div>

<h2>Open Economy Assumptions</h2>
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.small_open %}
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.world_int_rate %}

<h2>Budget Closure Parameters</h2>
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.budget_balance %}
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.debt_ratio_ss %}

<h2>Macroeconomic Parameters</h2>
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.g_y_annual %}
{% include 'taxbrain/includes/params/inputs/param.html' with param=params.frisch %}
Expand Down
9 changes: 1 addition & 8 deletions templates/dynamic/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,14 @@ <h1>Choose a Dynamic Simulation Type</h1>
{% flatblock "dynamic_behavioral_blurb" %}
</td>
</tr>
{% if include_ogusa %}
<tr padding="15px">
<td>
<a href="/dynamic/ogusa/{{pk}}/?start_year={{start_year}}" class="text-white btn btn-secondary disabled">Overlapping Generations Simulation</a>
<a href="/dynamic/ogusa/{{pk}}/?start_year={{start_year}}" class="text-white btn btn-secondary">Overlapping Generations Simulation</a>
</td>
<td>
<div class="construction">
<div class="progress progress-striped" style="min-width: 400px; width: 100%">
<div class="progress-bar active progress-bar-custom" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
</div>
</div>
{% flatblock "dynamic_olg_blurb" %}
</td>
</tr>
{% endif %}
<tr padding="15px">
<td padding-bottom="1em">
<a href="/dynamic/macro/{{pk}}/?start_year={{start_year}}" class="text-white btn btn-secondary">Macro Elasticities Simulation</a>
Expand Down
27 changes: 2 additions & 25 deletions webapp/apps/dynamic/compute.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import taxcalc
from ..taxbrain.compute import DropqCompute, MockCompute
from .models import OGUSAWorkerNodesCounter
from .helpers import filter_ogusa_only
from ..constants import START_YEAR

dqversion_info = taxcalc._version.get_versions()
Expand All @@ -33,27 +32,8 @@ def remote_register_job(self, theurl, data, timeout=TIMEOUT_IN_SECONDS):
response = requests.post(theurl, data=data, timeout=timeout)
return response

def submit_json_ogusa_calculation(self, ogusa_mods, first_budget_year,
microsim_data, pack_up_user_mods):
return self.submit_ogusa_calculation(ogusa_mods, first_budget_year,
microsim_data, pack_up_user_mods=False)

def submit_ogusa_calculation(self, ogusa_mods, first_budget_year, microsim_data,
pack_up_user_mods=True):

print "mods is ", ogusa_mods
ogusa_params = filter_ogusa_only(ogusa_mods)
data = {}
if pack_up_user_mods:
microsim_params = package_up_vars(microsim_data, first_budget_year)
microsim_params = {first_budget_year:microsim_params}
print "microsim data is", microsim_params
else:
data['taxio_format'] = True
data['first_budget_year'] = first_budget_year
microsim_params = microsim_data


def submit_ogusa_calculation(self, data):
print "mods is ", data
print "submit dynamic work"

hostnames = OGUSA_WORKERS
Expand All @@ -62,9 +42,6 @@ def submit_ogusa_calculation(self, ogusa_mods, first_budget_year, microsim_data,
'callback': "http://{}/dynamic/dynamic_finished".format(CALLBACK_HOSTNAME),
}

data['ogusa_params'] = json.dumps(ogusa_params)
data['user_mods'] = json.dumps(microsim_params)
data['first_year'] = first_budget_year
job_ids = []
guids = []

Expand Down
10 changes: 8 additions & 2 deletions webapp/apps/dynamic/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,10 @@ class Meta:
exclude = ['creation_date']
widgets = {}
labels = {}
boolean_fields = [
"small_open",
"budget_balance"
]
for param in OGUSA_DEFAULT_PARAMS.values():
for field in param.col_fields:
attrs = {
Expand All @@ -584,8 +588,10 @@ class Meta:

if param.coming_soon:
attrs['disabled'] = True
attrs['checked'] = False
widgets[field.id] = forms.CheckboxInput(attrs=attrs, check_test=bool_like)

if param.tc_id in boolean_fields:
checkbox = forms.CheckboxInput(attrs=attrs, check_test=bool_like)
widgets[field.id] = checkbox
else:
widgets[field.id] = forms.TextInput(attrs=attrs)

Expand Down
2 changes: 1 addition & 1 deletion webapp/apps/dynamic/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ def filter_ogusa_only(user_values):
print "Removing ", k, v
del user_values[k]
else:
user_values[k] = float(v)
user_values[k] = float(v[0]) if isinstance(v, list) else float(v)

return user_values

Expand Down
25 changes: 25 additions & 0 deletions webapp/apps/dynamic/migrations/0016_auto_20171026_1617.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import webapp.apps.taxbrain.models


class Migration(migrations.Migration):

dependencies = [
('dynamic', '0015_auto_20170918_1255'),
]

operations = [
migrations.AddField(
model_name='dynamicsaveinputs',
name='small_open',
field=models.NullBooleanField(default=None),
),
migrations.AddField(
model_name='dynamicsaveinputs',
name='world_int_rate',
field=webapp.apps.taxbrain.models.CommaSeparatedField(default=None, max_length=200, null=True, blank=True),
),
]
25 changes: 25 additions & 0 deletions webapp/apps/dynamic/migrations/0017_auto_20171026_2319.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import webapp.apps.taxbrain.models


class Migration(migrations.Migration):

dependencies = [
('dynamic', '0016_auto_20171026_1617'),
]

operations = [
migrations.AddField(
model_name='dynamicsaveinputs',
name='budget_balance',
field=models.NullBooleanField(default=None),
),
migrations.AddField(
model_name='dynamicsaveinputs',
name='debt_ratio_ss',
field=webapp.apps.taxbrain.models.CommaSeparatedField(default=None, max_length=200, null=True, blank=True),
),
]
6 changes: 5 additions & 1 deletion webapp/apps/dynamic/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@ class DynamicSaveInputs(models.Model):
"""
This model contains all the parameters for the dynamic tax model and the tax
result.
"""

"""
small_open = models.NullBooleanField(default=None, blank=True, null=True)
world_int_rate = CommaSeparatedField(default=None, null=True, blank=True)
budget_balance = models.NullBooleanField(default=None, blank=True, null=True)
debt_ratio_ss = CommaSeparatedField(default=None, null=True, blank=True)

# Parameters used for the dynamic model
g_y_annual = CommaSeparatedField(default=None, null=True, blank=True)
Expand Down
Loading