forked from openfisca/tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathframework.py
69 lines (52 loc) · 2.41 KB
/
framework.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-
####### Importez OpenFisca ###########
from openfisca_core.simulations import Simulation
import openfisca_france
import reformes
from periods import allMonths
from situations import situations
import csv
'''
Générer un fichier CSV qui indique pour chaque contexte législatif choisi,
la valeur de chaque calcul défini pour une période et une liste de situations.
'''
####### Listez les contextes législatifs à évaluer (modèle courant, réformes) ###########
legislation_france = openfisca_france.FranceTaxBenefitSystem()
al_reforms = [
{'name': 'Base', 'legislation': legislation_france},
{'name': 'AL_MM01', 'legislation': reformes.reforme_al01M(legislation_france)},
{'name': 'AL_MM03', 'legislation': reformes.reforme_al03M(legislation_france)},
{'name': 'AL_MM12', 'legislation': reformes.reforme_al12M(legislation_france)},
]
####### Listez les calculs à effectuer et les periodes sur lequelles les calculer ###########
calculs = {
'aide_logement_base_ressources': allMonths,
'aide_logement': allMonths,
'salaire_net': allMonths,
'loyer': allMonths,
# 'proportion_ressource_logement': allMonths,
# 'taux_effort_logement': allMonths,
'ppa': allMonths
}
fieldnames = ['Situation', 'Reform', 'Period', 'Variable', 'Value']
with open('resultats-levels-.csv', 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for (name, situation) in situations.iteritems():
results = {'Situation': name}
for reform in al_reforms:
####### Initialisez la simulation (rencontre des situations avec la legislation) ##############
simulation_actuelle = Simulation(
tax_benefit_system=reform['legislation'], # Législation actuelle ou législation réformée.
simulation_json=situation)
results['Reform'] = reform['name']
##### Demandez l'ensemble des calculs #####
for calcul, periods in calculs.iteritems():
results['Variable'] = calcul
for period in periods:
results['Period'] = period
data = simulation_actuelle.calculate(calcul, period)
print(reform['name'] + ' - ' + calcul + ' - ' + str(data))
results['Value'] = data[0]
writer.writerow(results)
print 'le calcul est terminé'