Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add data generator folder #200

Merged
merged 21 commits into from
May 12, 2022
Merged

Add data generator folder #200

merged 21 commits into from
May 12, 2022

Conversation

Ultramarin95
Copy link
Collaborator

@Ultramarin95 Ultramarin95 commented Mar 23, 2022

this adds a data generator folder in the data folder. You should look into this @bgrundmann if this structure is okay for you. We can also talk about this towmorrow (Donnerstag).

in principle we are ready to rock :)

D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core>python devtool.py ready_to_rock
No configuration file found.
pyproject.toml file found at D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core.
Loading pyproject.toml file at D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core\pyproject.toml
Assuming Python platform Windows
Auto-excluding **/node_modules
Auto-excluding **/__pycache__
Auto-excluding **/.*
stubPath D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core\typings is not a valid directory.
Searching for source files
Found 66 source files
0 errors, 0 warnings, 0 informations
Completed in 8.773sec
================================================= test session starts =================================================
platform win32 -- Python 3.10.2, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core
plugins: cov-3.0.0, typeguard-2.13.3
collected 16 items

tests\test_end_to_end.py ...........                                                                             [ 68%]
tests\test_entries.py .                                                                                          [ 75%]
tests\test_refdata.py ....                                                                                       [100%]

================================================= 16 passed in 9.09s ==================================================
Trim Trailing Whitespace.................................................Passed
Mixed line ending........................................................Passed
Check for case conflicts.................................................Passed
Check Yaml...............................................................Passed
Check for added large files..............................................Passed
Don't commit to branch...................................................Passed
black....................................................................Passed
You are ready to rock and save the climate at 8ca4e0d567cb67a6ff3fdc7b38ae22ba5606d131, but don't forget to copy paste the above into your pull request

@Ultramarin95 Ultramarin95 changed the title WIP: Add data generator folder Add data generator folder Mar 31, 2022
Comment on lines 58 to 59
if enddate is not None and int(enddate[:4]) < 2019: #filter out "stillgelegt vor 2019"
continue
Copy link
Contributor

@curiousleo curiousleo Apr 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One check that I believe is missing here is whether a unit was temporarily out of order on 2018-12-31. There are a few:

sqlite3 --readonly --table --header Marktstammdatenregister.db <temp.sql 
+--------------------+--------------------+---------------------+---------------------+-----------------------------+---------------------------------------+----------------------------+
| EinheitMastrNummer | Gemeindeschluessel | Registrierungsdatum | Inbetriebnahmedatum | DatumEndgueltigeStilllegung | DatumBeginnVoruebergehendeStilllegung | DatumWiederaufnahmeBetrieb |
+--------------------+--------------------+---------------------+---------------------+-----------------------------+---------------------------------------+----------------------------+
| SEE940917235426    | 06431003           | 2021-06-11          | 1992-07-13          |                             | 2013-01-01                            |                            |
| SEE970950685179    | 09471208           | 2021-02-22          | 1998-01-01          |                             | 2018-07-01                            |                            |
| SEE908579456740    | 14521180           | 2019-12-30          | 2000-11-27          |                             | 2018-05-28                            |                            |
| SEE946498391087    | 06435021           | 2021-06-21          | 2001-05-09          | 2016-12-03                  | 2016-12-02                            |                            |
| SEE924641851886    | 08435057           | 2021-03-02          | 2001-12-01          |                             | 2013-10-15                            |                            |
| SEE963007354166    | 08222000           | 2020-08-05          | 2002-12-17          |                             | 2015-08-03                            | 2020-08-04                 |
| SEE953246223538    | 08222000           | 2020-08-04          | 2004-07-26          |                             | 2015-08-03                            |                            |
| SEE984820500431    | 08222000           | 2020-08-04          | 2004-07-26          |                             | 2015-08-04                            |                            |
| SEE985573680722    | 08222000           | 2020-08-18          | 2004-07-26          |                             | 2015-01-01                            |                            |
| SEE988733115041    | 06635018           | 2019-03-02          | 2006-09-08          | 2016-01-01                  | 2015-12-31                            |                            |
| SEE936191315770    | 08119018           | 2020-09-23          | 2006-12-15          |                             | 2015-02-23                            | 2020-05-09                 |
| SEE933515647708    | 03360001           | 2021-02-07          | 2008-04-30          |                             | 2016-12-12                            |                            |
| SEE907763705213    | 09180117           | 2020-11-30          | 2009-05-19          |                             | 2017-11-27                            |                            |
| SEE995170337905    | 05911000           | 2021-01-28          | 2009-11-05          |                             | 2018-03-12                            |                            |
| SEE934689600001    | 05154036           | 2021-01-31          | 2010-06-01          |                             | 2018-12-28                            |                            |
| SEE937282159198    | 03360001           | 2021-02-07          | 2010-06-30          |                             | 2016-12-12                            |                            |
| SEE929943807784    | 08435057           | 2021-03-02          | 2010-12-13          |                             | 2013-10-15                            |                            |
| SEE986230459743    | 13071096           | 2020-01-14          | 2011-09-30          |                             | 2012-10-06                            |                            |
| SEE947572090827    | 08336014           | 2020-08-11          | 2011-12-15          |                             | 2011-12-16                            |                            |
| SEE914810546941    | 08326052           | 2019-05-23          | 2011-12-19          |                             | 2011-12-20                            |                            |
| SEE987563779416    | 05758004           | 2020-11-30          | 2011-12-29          |                             | 2013-12-29                            |                            |
| SEE974929724524    | 08426013           | 2021-09-03          | 2011-12-31          |                             | 2018-08-01                            | 2021-02-24                 |
| SEE966845109103    | 02000000           | 2019-08-09          | 2012-03-05          |                             | 2018-02-16                            |                            |
| SEE948748543444    | 16051000           | 2021-01-31          | 2012-06-05          |                             | 2016-12-13                            |                            |
| SEE933708173960    | 07315000           | 2021-02-12          | 2013-03-28          |                             | 2017-12-06                            |                            |
| SEE942263936569    | 07337070           | 2020-07-05          | 2014-07-31          |                             | 2018-01-01                            | 2020-06-24                 |
| SEE959082082117    | 06440017           | 2021-02-11          | 2014-10-31          |                             | 2018-07-25                            | 2020-12-07                 |
| SEE981269470325    | 01057077           | 2019-03-03          | 2017-05-15          | 2017-05-17                  | 2017-05-16                            |                            |
| SEE964966236203    | 05112000           | 2020-12-31          | 2017-09-18          |                             | 2017-09-24                            | 2019-06-30                 |
| SEE921772502595    | 05112000           | 2020-12-31          | 2017-09-25          |                             | 2017-10-04                            |                            |
| SEE967773395460    | 12063142           | 2019-03-14          | 2018-12-08          |                             | 2018-12-09                            | 2019-03-14                 |
+--------------------+--------------------+---------------------+---------------------+-----------------------------+---------------------------------------+----------------------------+

Generated with

select
  EinheitMastrNummer,
  Gemeindeschluessel,
  Registrierungsdatum,
  Inbetriebnahmedatum,
  DatumEndgueltigeStilllegung,
  DatumBeginnVoruebergehendeStilllegung,
  DatumWiederaufnahmeBetrieb
from
  EinheitSolar
where
  Inbetriebnahmedatum <= "2018-12-31"
  and DatumBeginnVoruebergehendeStilllegung <= "2018-12-31"
  and (DatumWiederaufnahmeBetrieb is null or DatumWiederaufnahmeBetrieb > "2018-12-31")

To be fair, their total Nettonennleistung is only ~369 kW.

temp.sql
How to obtain DB: GermanZero-de/localzero-data-public#29

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ja das stimmt. Das sollte wahrscheinlich noch hinzugefügt werden. Obwohl 369 kW eigentlich vernachlässigbar über die ~30 kommunen ist.

Aber füge ich noch hinzu! Danke für das Feedback :)

Comment on lines 15 to 21
"09478444":"Neuensorger Forst ist ein gemeindefreies gebiet",
"01053105":"Sachsenwald ist ein gemeindefreies Gebiet",
"06435200":"Gutsbezirk Spessart ist ist ein gemeindefreies Gebiet",
"01060014":"BuchholzerForstist ist ein gemeindefreies Gebiet",
"09572444":"Gdefr. Geb. (Lkr Erlangen-Höchstadt) ist ein gemeindefreies Gebiet",
"03155501":"Solling (Landkreis Northeim) ist ein gemeindefreies Gebiet",
"03153504":"Harz (Landkreis Goslar), gemfr. Gebiet ist ein gemeindefreies Gebiet"}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you explain the process by which you reduced the AGS history to the short list here in exceptionDict?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@curiousleo wir berechnen mit local zero ja nur die AGS-Schlüssel in unserer Master Liste mit dem stand 31.12.2018. (siehe localzero-data-public/ags/master.csv)
Dort haben wir keine gemeindefreien Gebiete mit aufgenommen, weil wir für die AGS-Schlüssel auch in anderen Daten-Tabellen noch Datenlücken haben. (Gemeindefreie Gebiete sind meistens Naturflächen/Wälder/Seen etc., die keine eigene Verwaltung haben und wo sonst auch nicht sonderlich viel passiert).
Ich prüfe in dem Skript, nachdem ich alle Markstammdatenregister Einheiten, den bei ihnen eingetragenen Ags-Schlüsseln zugeordnet habe, ob alle hieraus resultierenden AGS-Schlüssel auch in der Master Liste sind. Ist das nicht der Fall gibt es verschiedene Optionen:

  • Der Ags-Schlüssel ist ein alter Schlüssel einer kommune, die vor Ende 2018 ihren Ags geändert hat.
  • Der Ags-Schlüssel ist ein neuer Schlüssel einer kommune, die nach Ende 2018 ihren Ags geändert hat.
  • Der Ags-Schlüssel gehört zu einem gemeindefreien Gebiet und ist deswegen nicht in der Masterliste.

Aktuell frage ich für alle diese Fälle die json, die man unter https://www.xrepository.de/api/xrepository/urn:xoev-de:bund:destatis:bevoelkerungsstatistik:codeliste:ags.historie_2021-12-31/download/Destatis.AGS.Historie_2021-12-31.json findet, ob es für die jeweiligen Schlüssel Änderungen vor oder nach 2018 gab und passe diese an (wie genau ich das mache ist hier vielleicht erstmal nicht relevant, aber können wir auch gerne nochmal drüber reden).
Danach überprüfe ich nochmal, ob die nun angepassten Schlüssel in der Masterliste sind.
Dies war selbstverständlich nicht der Fall bei den 7 gemeindefreien Gebieten in meiner Exception list. Die habe ich manuell erstellt mit mehreren Script-Durchläufen. Das Script stoppt, wenn der Fall auftritt, dass ein angepasster AGS nicht in der Master liste enthalten ist.

Hilft dir das? :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ultramarin95 danke für die ausführliche Erklärung.

Verstehe ich es richtig, dass die Werte in dem markierten dictionary quasi den Grund angeben, warum dieser AGS ignoriert wird? (Konkret zum Beispiel: "AGS 01053105 wird ignoriert, weil Sachsenwald ein gemeindefreies Gebiet ist".)

Dann halte ich es für eine gute Idee, das dictionary kurz zu kommentieren, etwa mit "Diese AGS werden ignoriert, zum Beispiel weil wir zurzeit für gemeindefreie Gebiete keine Daten aufbereiten. Die den AGS zugeordneten Werte geben den Grund an, warum der jeweilige AGS ignoriert wird."

@Ultramarin95
Copy link
Collaborator Author

Danke für deine Kommentare @curiousleo. Man sieht vielleicht, dass ich noch nicht so lange mit Python arbeite und diese sinnvollen Module noch nicht so kenne :D Baue ich ein!

Comment on lines 180 to 195
def handle_not_in_master(
input_dict: defaultdict,
master: list,
data_list,
look_up_dict,
population_dict: dict,
*,
print_details: bool = False,
):
"""
This deals with all ags entries in input_dict that are not contained in the master list. It adds the power values of the missing ags keys to their
successors or predecessors.

So far the powers are distributes over sevreal ags keys proportional to their population.
The EE-unit is disregarded/deleted if the ags corresponds to a gemeindefreie Gebiet.
"""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diese Funktion ist der komplizierteste Teil dieses PRs. So wie ich das sehe, ist das zum Teil, weil die Logik selbst komplex ist, aber die Implementierung macht es einem auch nicht einfach, die Logik zu verstehen.

In der ags-historie.json steht folgendes:

Änderungsart: 1=Auflösung (AGS wird ungültig); 2=Teilausgliederung (Gemeinde gibt einen Teil ab, AGS bleibt weiterhin gültig); 3=Schlüsseländerung (AGS wird ungültig, Gemeinde bekommt einen neuen AGS, z.B. bei Kreiszugehörigkeitsänderungen); 4=Namensänderung (AGS bleibt bestehen, Gemeinde bekommt einen neuen Namen oder eine Zusatzbezeichnung wie z.B. ", Stadt"

Idealerweise gäbe es hier doctest oder Dokumentation, um zu zeigen, wie input_dict in den folgenden Fällen verändert wird:

  • Gemeinde1 wird aufgelöst (Änderungsart = 1) und Teil von Gemeinde2.
  • Gemeinde1 wird aufgelöst und Teil von Gemeinde2, dann wird Gemeinde2 aufgelöst und Teil von Gemeinde3.
  • Gemeinde1 gibt einen Teil an Gemeinde2 ab (Änderungsart = 2).
  • Gemeinde1 wird aufgelöst (Änderungsart = 1) und Teil von Gemeinde2 und außerdem gibt Gemeinde3 einen Teil an Gemeinde2 ab (Änderungsart = 2).
  • Gemeinde1 ändert ihren AGS (Änderungsart = 3).
  • Gemeinde1 ändert ihren Namen (Änderungsart = 4) und gleichzeitig ihren AGS -- einziges Beispiel, das ich finden konnte: Pulsnitz, Stadt (14625450) -> Puschwitz / Bóšicy (14625460).

@curiousleo
Copy link
Contributor

(Damit GitHub das verlinkt: GermanZero-de/localzero-data-public#30 wird mit diesem Code generiert.)

@bgrundmann bgrundmann marked this pull request as draft April 5, 2022 10:53
@bgrundmann
Copy link
Collaborator

It looks like this currently needs some coding work. (If some of the things are done hitting the corresponding Resolve Conversation is a nice way to clean up). Anyway I've set this to Draft so that I don't have to actively check if this is ready now or not. @Ultramarin95 Set it to Ready for review when you have done your outstanding changes (or if I misunderstood what's going on).

Also remember that your ready to rock output is now outdated so update that when you want to be merged.

@curiousleo
Copy link
Contributor

curiousleo commented Apr 15, 2022

I tried to really understand how this works by reading the code and trying different approaches myself. In the end I came up with a similar approach: grouping AGS together into connected components with a successor relation and then distributing power over them by population. (At least I think that's what the code in this PR does.)

Here's what I came up with: importMarktStammDaten.py

It can be run as follows:

# Setup
poetry add disjoint-set
curl https://s3.eu-central-1.wasabisys.com/mastr-backup/Marktstammdatenregister.db.gz | gunzip - >Marktstammdatenregister.db
curl -o ags_historie.json https://www.xrepository.de/api/xrepository/urn:xoev-de:bund:destatis:bevoelkerungsstatistik:codeliste:ags.historie_2021-12-31/download/Destatis.AGS.Historie_2021-12-31.json

# Run it (outputs to "out3.csv" currently)
poetry run python importMarktStammDaten.py data/public/population/2018.csv ags_historie.json Marktstammdatenregister.db

The main differences are:

The script takes ~13 seconds on my laptop to produce this CSV from the export created on 2022-04-12: 2018.csv

@bgrundmann
Copy link
Collaborator

Okay we need to resolve this one way or the other. @curiousleo @Ultramarin95 have you had offline discussions? If not can I get a brain dump from each one of you?

@curiousleo
Copy link
Contributor

Okay we need to resolve this one way or the other. @curiousleo @Ultramarin95 have you had offline discussions? If not can I get a brain dump from each one of you?

Yes, @Ultramarin95 pointed out a case that the code I put forward doesn't handle. I can't retrieve it right now because the Matrix instance is unreachable for me. I think it was something along the lines of:

  1. A unit starts producing energy.
  2. In the real world, the AGS of the unit's location changes.
  3. We reach the end of 2018 (the cutoff date).
  4. The unit is registered in MaStR with its new AGS.

I'm really sorry to say that I don't think I'll have the time in the near future to fix the code I proposed to do this (even though there's a good chance the actual diff is very small).

So here's how I see where things stand:

  • @Ultramarin95 has clearly thought long and hard about this problem (could not have come up with the convoluted but possible counter-example!). This gives me some amount of "appeal to authority" confidence that the code in this PR is correct. However, that is very much not clear from reading it: the code itself is complex, there is little documentation and no tests.
  • The code I put forward is tested, documented, concise, and wrong (see the counter-example).

So the question is, what's the best way to get to working code that we have confidence in?

I am not sure. I think that it would be worth considering fixing the code I suggested. With the testing setup in place, it should be possible with reasonable effort to actually turn existing examples where it gives the wrong answer into tests and then fix those cases with high confidence:

poetry run python -m doctest importMarktStammDaten.py

The alternative I see is to improve the code in this PR with documentation and tests. As far as I can tell, making the code testable will require some effort.


And that's all I can say, really. Chucking a bunch of code over the fence is bad style. I did try to make the code legible at least. But feel free to reject it, obviously.

@bgrundmann
Copy link
Collaborator

@curiousleo Thanks for the update. Leon and I discussed this a bit more. Leon will do the work to do pretty much your suggestion (that is take your code as a starting point but add all of Leon's knowledge to make it actually correct to hopefully get something that is correct AND readable...).

I'm not surprised that you don't have time now, I think I pretty much told you so when we had our first chat ;-). Anyhow best of luck and say hello to samdk from me.

@Ultramarin95 Ultramarin95 marked this pull request as ready for review May 10, 2022 11:28
@Ultramarin95
Copy link
Collaborator Author

Ultramarin95 commented May 10, 2022

@bgrundmann kann jetzt reviewed werden. Ich würde, bevor wir den Branch mergen, noch die Daten updaten und dann die Hashänderung hier mit reinnehmen. Siehe GermanZero-de/localzero-data-public#33

@bgrundmann
Copy link
Collaborator

@bgrundmann kann jetzt reviewed werden. Ich würde, bevor wir den Branch mergen, noch die Daten updaten und dann die Hashänderung hier mit reinnehmen. Siehe GermanZero-de/localzero-data-public#33

Okay go for it.

@Ultramarin95
Copy link
Collaborator Author

Hier einmal die sich ändernden Variablen für Göttingen 2035:

at .e30.d_f_wo_hydrogen.pct_energy expected 0.43057181922122495 got 0.4304664468629664
at .e30.p_local_hydro.pct_energy expected 0.003284970765711012 got 0.005702697479575047
at .e30.p_local_hydro.pct_x expected 0.0010618104257246735 got 0.0018262268323800469
at .e30.p_local_hydro.cost_mro expected 0.0336934554604907 got 0.05796416490236958
at .e30.p_local_hydro.power_installed expected 0.295 got 0.5075
at .e30.p_local_hydro.energy expected 1415.6914059029702 got 2435.4691135449402
at .e30.p_renew_pv_facade.change_cost_mro expected 0.48867960379480757 got 0.49111796542398145
at .e30.p_renew_pv_facade.change_energy_pct expected 18.529006282826646 got 18.620195505670246
at .e30.p_renew_pv_facade.cost_mro expected 0.5221974493369055 got 0.5246358109660794
at .e30.p_renew_pv_facade.change_energy_MWh expected 4954.57868132709 got 4978.962297618829
at .e30.p_renew_pv_facade.energy expected 5221.9744933690545 got 5246.358109660793
at .e30.g_grid_onshore.cost_wage expected 163961.7203076923 got 121592.48953846154
at .e30.g_grid_onshore.demand_emplo expected 3.47413014135091 got 2.5763826585542726
at .e30.g_grid_onshore.cost_mro expected 0.250764984 got 0.185964984
at .e30.g_grid_onshore.invest expected 8358832.8 got 6198832.8
at .e30.g_grid_onshore.invest_pa expected 642987.1384615385 got 476833.2923076923
at .e30.g_grid_onshore.demand_emplo_new expected 3.47413014135091 got 2.5763826585542726
at .e30.g_grid_onshore.power_to_be_installed expected 46.43796 got 34.43796
at .e30.p_local_pv_facade.cost_wage expected 1008133.0041684035 got 1005971.2225560957
at .e30.p_local_pv_facade.demand_emplo expected 25.691462899296724 got 25.63637162477308
at .e30.p_local_pv_facade.change_cost_mro expected 0.7851688224252296 got 0.783485152199319
at .e30.p_local_pv_facade.change_energy_pct expected 349.59031623055273 got 199.37842021112854
at .e30.p_local_pv_facade.invest expected 40955403.29434139 got 40867580.91634139
at .e30.p_local_pv_facade.invest_pa_com expected 256537.3370270191 got 255987.23332466793
at .e30.p_local_pv_facade.power_installed expected 0.03905085600000005 got 0.068324982
at .e30.p_local_pv_facade.change_energy_MWh expected 7851.688224252297 got 7834.851521993191
at .e30.p_local_pv_facade.invest_pa expected 3150415.638026261 got 3143660.070487799
at .e30.p_local_pv_facade.invest_com expected 3334985.3813512484 got 3327834.033220683
at .e30.p_local_pv_facade.power_to_be_installed expected 13.651801098113797 got 13.622526972113796
at .e30.d_f_hydrogen_reconv.change_energy_MWh expected 129064.34273261587 got 129095.93593636014
at .e30.d_f_hydrogen_reconv.energy expected 129064.34273261587 got 129095.93593636014
at .e30.p_renew_pv_roof.change_cost_mro expected 1.3165629580279448 got 1.3267439186657852
at .e30.p_renew_pv_roof.change_energy_pct expected 2.1640423033652714 got 2.1788165604119225
at .e30.p_renew_pv_roof.cost_mro expected 2.1803458573455416 got 2.190526817983382
at .e30.p_renew_pv_roof.change_energy_MWh expected 65165.55099524799 got 65610.44645754706
at .e30.p_renew_pv_roof.energy expected 95278.43321289687 got 95723.32867519594
at .e30.p_local_biomass_cogen.energy expected 16689.222129278845 got 15230.203360095871
at .e30.p_renew.change_cost_mro expected -0.42691823294678155 got -0.4239192380664726
at .e30.p_renew.invest_pa_outside expected 24539991.877708446 got 24545998.935481805
at .e30.p_renew.change_energy_pct expected 3.5193018671730556 got 3.5404044066005493
at .e30.p_renew.change_cost_energy expected -1.7092524389914736 got -1.697245363823218
at .e30.p_renew.cost_mro expected 21.5978067150508 got 21.69865604557734
at .e30.p_renew.change_energy_MWh expected 702661.3350986113 got 706874.6532758339
at .e30.p_renew.energy expected 902320.6316348977 got 906533.9498121203
at .e30.p_renew.cost_climate_saved expected 2993111.731990056 got 2934825.448260573
at .e30.p_renew.change_CO2e_t expected -976.7445294853519 got -962.8420169678843
at .e30.p_renew.invest_outside expected 262398022.86941656 got 262462254.35290062
at .e30.p_renew.cost_fuel expected 2.571424989567289 got 2.5834320647355447
at .e30.p_renew.CO2e_total expected 2977.3502376083566 got 2991.252750125824
at .e30.p_renew.change_CO2e_pct expected -0.24702102175544643 got -0.2435050431721395
at .e30.p_renew.CO2e_combustion_based expected 2977.3502376083566 got 2991.252750125824
at .e30.p_local_pv.pct_energy expected 0.6456562911673938 got 0.6515326451309981
at .e30.p_local_pv.cost_wage expected 6469120.811444562 got 6305197.37260247
at .e30.p_local_pv.demand_emplo expected 164.86036726413255 got 160.6829095974126
at .e30.p_local_pv.change_cost_mro expected 4.633306071849048 got 4.458304266121083
at .e30.p_local_pv.change_energy_pct expected 25.16645585008598 got 13.955327751598476
at .e30.p_local_pv.pct_x expected 0.20869731583376144 got 0.20864624205849347
at .e30.p_local_pv.invest expected 262808032.96493533 got 256148643.26197535
at .e30.p_local_pv.invest_pa_com expected 956077.2273313376 got 919135.2227632637
at .e30.p_local_pv.power_installed expected 13.016952000000016 got 22.774994
at .e30.p_local_pv.change_energy_MWh expected 267618.19033124513 got 259646.56368124363
at .e30.p_local_pv.invest_pa expected 20216002.53576426 got 19703741.78938272
at .e30.p_local_pv.invest_com expected 12429003.95530739 got 11948757.89592243
at .e30.p_local_pv.power_to_be_installed expected 331.3481849174115 got 321.5901429174115
at .e30.d_h.pct_energy expected 0.015371438257714656 got 0.015588712975953802
at .e30.d_h.change_energy_MWh expected 20494.44280316139 got 20789.218677382698
at .e30.d_h.energy expected 20494.44280316139 got 20789.218677382698
at .e30.p_renew_pv_park.change_cost_mro expected 3.2477341250061764 got 3.263832047137043
at .e30.p_renew_pv_park.change_energy_pct expected 20.630624478311695 got 20.73162704891015
at .e30.p_renew_pv_park.cost_mro expected 3.4475172902104783 got 3.463615212341345
at .e30.p_renew_pv_park.change_energy_MWh expected 216418.209116046 got 217477.74056493715
at .e30.p_renew_pv_park.energy expected 226908.35251153843 got 227967.88396042958
at .e30.g.cost_wage expected 1073894.8127347378 got 1004728.4973962762
at .e30.g.demand_emplo expected 22.754398591090588 got 21.2888566314637
at .e30.g.invest_pa_outside expected 1258887.540281837 got 1259195.6989080631
at .e30.g.invest expected 54747578.68843761 got 51221452.80843761
at .e30.g.invest_pa expected 4211352.206802893 got 3940111.7544952007
at .e30.g.invest_outside expected 16365538.023663882 got 16369544.085804822
at .e30.g.demand_emplo_new expected 22.754398591090588 got 21.2888566314637
at .e30.p_renew_pv.change_cost_mro expected 8.170616923340777 got 8.213939238641773
at .e30.p_renew_pv.change_energy_pct expected 9.464842608274799 got 9.513707402049192
at .e30.p_renew_pv.cost_mro expected 9.27787013988343 got 9.321192455184427
at .e30.p_renew_pv.change_energy_MWh expected 389362.9653983109 got 391373.1563539366
at .e30.p_renew_pv.energy expected 430500.7826355362 got 432510.97359116183
at .e30.p.cost_wage expected 7721215.789857749 got 7233739.38398269
at .e30.p.demand_emplo expected 196.76900585774078 got 184.34605973452318
at .e30.p.change_cost_mro expected -5.911577472677942 got -5.908578477797634
at .e30.p.invest_pa_outside expected 24539991.877708446 got 24545998.935481805
at .e30.p.change_energy_pct expected 1.3659372723100724 got 1.366516421722743
at .e30.p.change_cost_energy expected -11.062750850645246 got -11.05074377547699
at .e30.p.CO2e_combustion_based_per_MWh expected 0.005242788779282286 got 0.004988879465585911
at .e30.p.cost_mro expected 29.455080949070094 got 29.487365717851983
at .e30.p.invest expected 326640325.9820782 got 303486079.13626105
at .e30.p.invest_pa_com expected 956077.2273313376 got 919135.2227632637
at .e30.p.change_energy_MWh expected 769749.0118603524 got 770075.380938318
at .e30.p.energy expected 1333280.7548360405 got 1333607.1239140062
at .e30.p.cost_climate_saved expected 1142472175.826057 got 1143884646.6234877
at .e30.p.invest_pa expected 25126178.921698324 got 23345083.01048162
at .e30.p.invest_com expected 12429003.95530739 got 11948757.89592243
at .e30.p.change_CO2e_t expected -292404.18466378795 got -292741.0888492217
at .e30.p.invest_outside expected 262398022.86941656 got 262462254.35290062
at .e30.p.cost_fuel expected 6.822998884179637 got 6.463321403725299
at .e30.p.CO2e_total expected 6990.10938108741 got 6653.205195653671
at .e30.p.change_CO2e_pct expected -0.9766524963229938 got -0.9777777822490618
at .e30.p.CO2e_combustion_based expected 6990.10938108741 got 6653.205195653671
at .e30.d_r.pct_energy expected 0.12633377737362123 got 0.126302860143428
at .e30.d_r.cost_fuel expected 34.061279850420625 got 34.211951806702814
at .e30.p_renew_pv_agri.change_cost_mro expected 3.117640236511847 got 3.1322453074149634
at .e30.p_renew_pv_agri.change_energy_pct expected 384.54090144670215 got 386.34115562595656
at .e30.p_renew_pv_agri.cost_mro expected 3.1278095429905046 got 3.142414613893621
at .e30.p_renew_pv_agri.change_energy_MWh expected 102824.62660568989 got 103306.00703383355
at .e30.p_renew_pv_agri.energy expected 103092.02241773186 got 103573.40284587552
at .e30.p_local_wind_onshore.pct_energy expected 0.22082305029424304 got 0.22283284160984462
at .e30.p_local_wind_onshore.cost_wage expected 1252094.978413187 got 928542.0113802197
at .e30.p_local_wind_onshore.demand_emplo expected 31.90863859360823 got 23.663150137110595
at .e30.p_local_wind_onshore.change_cost_mro expected 1.8305147558486847 got 1.3153049120532754
at .e30.p_local_wind_onshore.change_energy_pct expected 30.95864 got 2.55096
at .e30.p_local_wind_onshore.pct_x expected 0.0713772614022034 got 0.07135979349087195
at .e30.p_local_wind_onshore.invest expected 63832293.017142855 got 47337435.87428571
at .e30.p_local_wind_onshore.power_installed expected 1.5 got 13.5
at .e30.p_local_wind_onshore.change_energy_MWh expected 92188.1448945396 got 68365.8723671832
at .e30.p_local_wind_onshore.invest_pa expected 4910176.385934066 got 3641341.221098901
at .e30.p_local_wind_onshore.power_to_be_installed expected 46.43796 got 34.43796
at .e30.p_local_pv_agri.cost_wage expected 1185312.371199635 got 1184379.9227308598
at .e30.p_local_pv_agri.demand_emplo expected 30.206737288471842 got 30.182974585393982
at .e30.p_local_pv_agri.change_cost_mro expected 0.5812337673297825 got 0.5805075442390064
at .e30.p_local_pv_agri.change_energy_pct expected 952.930783718838 got 544.2151259838097
at .e30.p_local_pv_agri.invest expected 48153315.07998517 got 48115434.36094118
at .e30.p_local_pv_agri.power_installed expected 0.03905085600000005 got 0.068324982
at .e30.p_local_pv_agri.change_energy_MWh expected 30427.25609102643 got 30403.319912648065
at .e30.p_local_pv_agri.invest_pa expected 3704101.1599988593 got 3701187.258533937
at .e30.p_local_pv_agri.power_to_be_installed expected 37.21276281297154 got 37.18348868697154
at .e30.p_renew_reverse.change_cost_mro expected 1.1718043277766077 got 1.1772759797606962
at .e30.p_renew_reverse.invest_pa_outside expected 3458457.608452092 got 3459304.192051802
at .e30.p_renew_reverse.pct_x expected 0.02812441292116506 got 0.028248822818054697
at .e30.p_renew_reverse.cost_mro expected 1.1718043277766077 got 1.1772759797606962
at .e30.p_renew_reverse.change_energy_MWh expected 37497.73848885144 got 37672.83135234228
at .e30.p_renew_reverse.energy expected 37497.73848885144 got 37672.83135234228
at .e30.p_fossil_and_renew.change_cost_mro expected -5.911577472677942 got -5.908578477797634
at .e30.p_fossil_and_renew.invest_pa_outside expected 24539991.877708446 got 24545998.935481805
at .e30.p_fossil_and_renew.change_energy_pct expected 0.6011886515394137 got 0.6086652812585748
at .e30.p_fossil_and_renew.change_cost_energy expected -11.062750850645246 got -11.05074377547699
at .e30.p_fossil_and_renew.cost_mro expected 21.5978067150508 got 21.69865604557734
at .e30.p_fossil_and_renew.change_energy_MWh expected 338788.8886592095 got 343002.2068364321
at .e30.p_fossil_and_renew.energy expected 902320.6316348977 got 906533.9498121203
at .e30.p_fossil_and_renew.cost_climate_saved expected 1159295668.5350928 got 1159237382.2513633
at .e30.p_fossil_and_renew.change_CO2e_t expected -296416.943807267 got -296403.04129474954
at .e30.p_fossil_and_renew.invest_outside expected 262398022.86941656 got 262462254.35290062
at .e30.p_fossil_and_renew.cost_fuel expected 2.571424989567289 got 2.5834320647355447
at .e30.p_fossil_and_renew.CO2e_total expected 2977.3502376083566 got 2991.252750125824
at .e30.p_fossil_and_renew.change_CO2e_pct expected -0.990055420905376 got -0.9900089854428639
at .e30.p_fossil_and_renew.CO2e_combustion_based expected 2977.3502376083566 got 2991.252750125824
at .e30.p_renew_geoth.change_cost_mro expected 0.1973073898322795 got 0.19824651317407335
at .e30.p_renew_geoth.invest_pa_outside expected 897070.9716089241 got 897290.5624376462
at .e30.p_renew_geoth.change_energy_pct expected 65.09173024004187 got 65.40034059274977
at .e30.p_renew_geoth.pct_x expected 0.008380407758086168 got 0.008417478955554331
at .e30.p_renew_geoth.cost_mro expected 0.20112185486762887 got 0.20206097820942273
at .e30.p_renew_geoth.change_energy_MWh expected 11004.37685864223 got 11056.550377630778
at .e30.p_renew_geoth.energy expected 11173.436381534937 got 11225.609900523485
at .e30.p_local.cost_wage expected 7721215.789857749 got 7233739.38398269
at .e30.p_local.demand_emplo expected 196.76900585774078 got 184.34605973452318
at .e30.p_local.change_energy_pct expected 5.056741818866932 got 3.3112254410159117
at .e30.p_local.CO2e_combustion_based_per_MWh expected 0.009311207528140998 got 0.008574531643737057
at .e30.p_local.cost_mro expected 7.857274234019292 got 7.788709672274642
at .e30.p_local.invest expected 326640325.9820782 got 303486079.13626105
at .e30.p_local.invest_pa_com expected 956077.2273313376 got 919135.2227632637
at .e30.p_local.power_installed expected 24.042952000000017 got 45.206494
at .e30.p_local.change_energy_MWh expected 359806.3352257847 got 328012.43604842684
at .e30.p_local.energy expected 430960.1232011429 got 427073.17410188593
at .e30.p_local.invest_pa expected 25126178.921698324 got 23345083.01048162
at .e30.p_local.invest_com expected 12429003.95530739 got 11948757.89592243
at .e30.p_local.change_CO2e_t expected 4012.759143479054 got 3661.952445527846
at .e30.p_local.cost_fuel expected 4.251573894612348 got 3.879889338989755
at .e30.p_local.CO2e_total expected 4012.759143479054 got 3661.952445527846
at .e30.p_local.CO2e_combustion_based expected 4012.759143479054 got 3661.952445527846
at .e30.p_local.power_to_be_installed expected 377.7861449174115 got 356.0281029174115
at .e30.g_grid_pv.cost_wage expected 909933.0924270455 got 883136.0078578147
at .e30.g_grid_pv.demand_emplo expected 19.28026844973968 got 18.71247397290943
at .e30.g_grid_pv.cost_mro expected 1.3916623766531282 got 1.3506786002531281
at .e30.g_grid_pv.invest expected 46388745.888437614 got 45022620.00843761
at .e30.g_grid_pv.invest_pa expected 3568365.068341355 got 3463278.4621875086
at .e30.g_grid_pv.demand_emplo_new expected 19.28026844973968 got 18.71247397290943
at .e30.g_grid_pv.power_to_be_installed expected 331.3481849174115 got 321.5901429174115
at .e30.e.cost_wage expected 8795110.602592487 got 8238467.881378966
at .e30.e.demand_emplo expected 219.52340444883137 got 205.6349163659869
at .e30.e.invest_pa_outside expected 25798879.417990282 got 25805194.63438987
at .e30.e.change_energy_pct expected 1.3659372723100724 got 1.366516421722743
at .e30.e.invest expected 381387904.6705158 got 354707531.94469863
at .e30.e.invest_pa_com expected 956077.2273313376 got 919135.2227632637
at .e30.e.change_energy_MWh expected 769749.0118603524 got 770075.380938318
at .e30.e.cost_climate_saved expected 1142472175.826057 got 1143884646.6234877
at .e30.e.invest_pa expected 29337531.128501218 got 27285194.764976818
at .e30.e.invest_com expected 12429003.95530739 got 11948757.89592243
at .e30.e.change_CO2e_t expected -292404.18466378795 got -292741.0888492217
at .e30.e.invest_outside expected 278763560.8930805 got 278831798.43870544
at .e30.e.CO2e_total expected 6990.10938108741 got 6653.205195653671
at .e30.e.change_CO2e_pct expected -0.9766524963229938 got -0.9777777822490618
at .e30.e.demand_emplo_new expected 22.754398591090588 got 21.2888566314637
at .e30.e.CO2e_combustion_based expected 6990.10938108741 got 6653.205195653671
at .e30.p_local_pv_roof.cost_wage expected 2749031.6198060936 got 2606019.780779731
at .e30.p_local_pv_roof.demand_emplo expected 70.05687104500748 got 66.41232876604819
at .e30.p_local_pv_roof.change_cost_mro expected 2.082837194966247 got 1.9278227997134763
at .e30.p_local_pv_roof.change_energy_pct expected 14.409905192709052 got 7.807466479158886
at .e30.p_local_pv_roof.pct_x expected 0.10443984652920377 got 0.10441428732529477
at .e30.p_local_pv_roof.invest expected 111679409.55462256 got 105869553.59417658
at .e30.p_local_pv_roof.invest_pa_com expected 699539.8903043185 got 663147.9894385958
at .e30.p_local_pv_roof.power_installed expected 11.051392248000015 got 19.335969906
at .e30.p_local_pv_roof.change_energy_MWh expected 130211.39509763173 got 123437.4566165552
at .e30.p_local_pv_roof.invest_pa expected 8590723.811894042 got 8143811.814936659
at .e30.p_local_pv_roof.invest_com expected 9094018.573956141 got 8620923.862701746
at .e30.p_local_pv_roof.power_to_be_installed expected 159.24951454111996 got 150.96493688311998
at .e30.d_a.pct_energy expected 0.002897107871087636 got 0.0028963988718571287
at .e30.d_a.cost_fuel expected 0.7810991170012836 got 0.7845543521693605
at .e30.d_b.pct_energy expected 0.1510897219124438 got 0.15105274624521287
at .e30.d_b.cost_fuel expected 29.39304408554487 got 29.523065842592942
at .e30.g_grid_offshore.invest_pa_outside expected 1258887.540281837 got 1259195.6989080631
at .e30.g_grid_offshore.invest_outside expected 16365538.023663882 got 16369544.085804822
at .e30.p_renew_biomass.change_cost_mro expected -0.42691823294678155 got -0.4239192380664726
at .e30.p_renew_biomass.change_energy_pct expected -0.2470210217554464 got -0.24350504317213942
at .e30.p_renew_biomass.change_cost_energy expected -1.7092524389914736 got -1.697245363823218
at .e30.p_renew_biomass.cost_mro expected 0.6422621888133744 got 0.6452611836936833
at .e30.p_renew_biomass.change_energy_MWh expected -11136.334955318569 got -10977.825712173275
at .e30.p_renew_biomass.energy expected 33946.20448273649 got 34104.71372588178
at .e30.p_renew_biomass.cost_climate_saved expected 2993111.731990056 got 2934825.448260573
at .e30.p_renew_biomass.change_CO2e_t expected -976.7445294853519 got -962.8420169678843
at .e30.p_renew_biomass.cost_fuel expected 2.571424989567289 got 2.5834320647355447
at .e30.p_renew_biomass.CO2e_total expected 2977.3502376083566 got 2991.252750125824
at .e30.p_renew_biomass.change_CO2e_pct expected -0.24702102175544643 got -0.2435050431721395
at .e30.p_renew_biomass.CO2e_combustion_based expected 2977.3502376083566 got 2991.252750125824
at .e30.p_renew_wind_offshore.change_cost_mro expected 4.6325059019134285 got 4.658241931347785
at .e30.p_renew_wind_offshore.invest_pa_outside expected 20184463.297647428 got 20189404.180992357
at .e30.p_renew_wind_offshore.change_energy_pct expected 8.660900857180112 got 8.70601170554468
at .e30.p_renew_wind_offshore.pct_x expected 0.1265832066123068 got 0.1271431544315463
at .e30.p_renew_wind_offshore.cost_mro expected 5.511606139911658 got 5.537342169346014
at .e30.p_renew_wind_offshore.change_energy_MWh expected 151301.46922937655 got 152089.53247456247
at .e30.p_renew_wind_offshore.energy expected 168770.9532616229 got 169559.0165068088
at .e30.p_renew_wind_offshore.invest_outside expected 262398022.86941656 got 262462254.35290062
at .e30.p_renew_wind_onshore.change_cost_mro expected 2.340986942569371 got 2.3620476107019623
at .e30.p_renew_wind_onshore.change_energy_pct expected 1.606160049908782 got 1.618329317823156
at .e30.p_renew_wind_onshore.cost_mro expected 4.510334746325697 got 4.531395414458288
at .e30.p_renew_wind_onshore.change_energy_MWh expected 128527.34848406802 got 129501.15164777859
at .e30.p_renew_wind_onshore.energy expected 208548.85598661573 got 209522.6591503263
at .e30.p_renew_wind.change_cost_mro expected 6.973492844482799 got 7.020289542049747
at .e30.p_renew_wind.invest_pa_outside expected 20184463.297647428 got 20189404.180992357
at .e30.p_renew_wind.change_energy_pct expected 2.8703043564140494 got 2.888376450883082
at .e30.p_renew_wind.cost_mro expected 10.021940886237354 got 10.068737583804303
at .e30.p_renew_wind.change_energy_MWh expected 279828.8177134446 got 281590.68412234104
at .e30.p_renew_wind.energy expected 377319.8092482386 got 379081.6756571351
at .e30.p_renew_wind.invest_outside expected 262398022.86941656 got 262462254.35290062
at .e30.p_local_pv_park.cost_wage expected 1526643.8162704299 got 1508826.4465357834
at .e30.p_local_pv_park.demand_emplo expected 38.90529603135652 got 38.45123462119734
at .e30.p_local_pv_park.change_cost_mro expected 1.1840662871277892 got 1.1664887699692825
at .e30.p_local_pv_park.change_energy_pct expected 64.23141807444156 got 36.28274255382634
at .e30.p_local_pv_park.invest expected 62019905.03598621 got 61296074.39051621
at .e30.p_local_pv_park.power_installed expected 1.8874580400000025 got 3.3023741299999996
at .e30.p_local_pv_park.change_energy_MWh expected 99127.8509183347 got 97970.9356300472
at .e30.p_local_pv_park.invest_pa expected 4770761.925845093 got 4715082.645424323
at .e30.p_local_pv_park.power_to_be_installed expected 121.23410646520621 got 119.8191903752062
at .e30.d_t.pct_energy expected 0.09763515330548217 got 0.09761125939070776
at .e30.d_t.cost_fuel expected 26.323746104271375 got 26.440190651852205
at .e30.p_local_surplus.energy expected -902320.6316348977 got -906533.9498121203
at .e30.d.change_energy_pct expected 1.3659372723100724 got 1.366516421722743
at .e30.d.change_energy_MWh expected 769749.0118603524 got 770075.380938318
at .e30.d.energy expected 1333280.7548360405 got 1333607.1239140062
at .e30.p_local_biomass.pct_energy expected 0.1302356877726522 got 0.11993181577958224
at .e30.p_local_biomass.pct_x expected 0.042096451061869475 got 0.0384068593533485
at .e30.p_local_biomass.cost_mro expected 1.0619112618622528 got 0.9690759906757249
at .e30.p_local_biomass.power_installed expected 9.231 got 8.424
at .e30.p_local_biomass.energy expected 56126.388047687775 got 51219.66124078884
at .e30.p_local_biomass.cost_climate_saved expected -16823492.709035933 got -15352735.627875494
at .e30.p_local_biomass.change_CO2e_t expected 4012.759143479054 got 3661.952445527846
at .e30.p_local_biomass.cost_fuel expected 4.251573894612348 got 3.879889338989755
at .e30.p_local_biomass.CO2e_total expected 4012.759143479054 got 3661.952445527846
at .e30.p_local_biomass.CO2e_combustion_based expected 4012.759143479054 got 3661.952445527846
at .e30.d_i.pct_energy expected 0.07929890772826127 got 0.0792795011797097
at .e30.d_i.cost_fuel expected 10.947615197926293 got 10.996042579567263
at .e30.p_renew_hydro.change_cost_mro expected -0.18792592318627388 got -0.18660537573386882
at .e30.p_renew_hydro.change_energy_pct expected -0.24692666599562357 got -0.24341024682520818
at .e30.p_renew_hydro.cost_mro expected 0.28280731747239923 got 0.2841278649248043
at .e30.p_renew_hydro.change_energy_MWh expected -3896.2284053193016 got -3840.743218243457
at .e30.p_renew_hydro.energy expected 11882.660397999967 got 11938.145585075812
at .l30.l.cost_wage expected 122840.32896561484 got 119430.92887832044
at .l30.l.demand_emplo expected 2.459431557449679 got 2.3871909174700177
at .l30.l.invest expected 5111199.929314766 got 4937387.375844855
at .l30.l.cost_climate_saved expected 77723506.94690219 got 76038496.70633514
at .l30.l.invest_pa expected 393169.22533190507 got 379799.02891114267
at .l30.l.change_CO2e_t expected -17791.48278745105 got -17389.572175509
at .l30.l.CO2e_production_based expected -32309.230040250502 got -31907.319428308456
at .l30.l.CO2e_total expected -25511.056425114886 got -25109.14581317284
at .l30.l.change_CO2e_pct expected 2.3047235019103014 got 2.252659666417999
at .l30.l.demand_emplo_new expected 2.459431557449679 got 2.3871909174700177
at .l30.pyr.cost_wage expected 74439.53424673114 got 71030.13415943673
at .l30.pyr.demand_emplo expected 1.5772744342360931 got 1.5050337942564318
at .l30.pyr.invest expected 3794956.6478725676 got 3621144.094402657
at .l30.pyr.cost_climate_saved expected 36789867.512533784 got 35104857.27196675
at .l30.pyr.invest_pa expected 291919.7421440437 got 278549.5457232813
at .l30.pyr.change_CO2e_t expected -8775.162197384325 got -8373.251585442278
at .l30.pyr.CO2e_production_based expected -8775.162197384325 got -8373.251585442278
at .l30.pyr.CO2e_total expected -8775.162197384325 got -8373.251585442278
at .l30.pyr.demand_emplo_new expected 1.5772744342360931 got 1.5050337942564318
at .l30.pyr.prod_volume expected 3684.4239299733667 got 3515.673878060832
at .e18.p_local_hydro.energy expected 1415.6914059029702 got 2435.4691135449402
at .e18.p_local_hydro.cost_mro expected 0.0336934554604907 got 0.05796416490236958
at .e18.p_local_pv_facade.energy expected 22.459684549940896 got 39.29638680904685
at .e18.p_local_pv_facade.cost_mro expected 0.0022459684549940894 got 0.003929638680904685
at .e18.p_local_biomass_cogen.energy expected 16689.222129278845 got 15230.203360095871
at .e18.p_local_pv.energy expected 10633.924455847875 got 18605.551105849383
at .e18.p_local_pv.cost_mro expected 0.23344745852438897 got 0.4084492642523534
at .e18.p_local_wind_onshore.energy expected 2977.7840659195494 got 26800.056593275945
at .e18.p_local_wind_onshore.cost_mro expected 0.06440123047442618 got 0.5796110742698356
at .e18.p_local_pv_agri.energy expected 31.930184868499307 got 55.8663632468616
at .e18.p_local_pv_agri.cost_mro expected 0.0009687610602541173 got 0.0016949841510302207
at .e18.p_local.energy expected 71153.78797535817 got 99060.7380534591
at .e18.p_local.pct_energy expected 0.12626402835736597 got 0.17578555119251335
at .e18.p_local.cost_mro expected 1.3934534063215587 got 2.0151004941002837
at .e18.p_local.cost_fuel expected 4.251573894612348 got 3.879889338989755
at .e18.p_local_pv_roof.energy expected 9036.242317785303 got 15810.180798861831
at .e18.p_local_pv_roof.cost_mro expected 0.20678481833900247 got 0.36179921359177364
at .e18.p_local_pv_park.energy expected 1543.2922686441332 got 2700.2075569316435
at .e18.p_local_pv_park.cost_mro expected 0.023447910670138294 got 0.0410254278286449
at .e18.p_local_biomass.energy expected 56126.388047687775 got 51219.66124078884
at .e18.p_local_biomass.cost_mro expected 1.0619112618622528 got 0.9690759906757249
at .e18.p_local_biomass.cost_fuel expected 4.251573894612348 got 3.879889338989755
at .m183X.z.cost_wage expected 109986425.64618714 got 109439373.23001753
at .m183X.z.demand_emplo expected 2947.184118554066 got 2933.4988362423937
at .m183X.z.invest_pa_outside expected 46989221.28552245 got 46996168.215049945
at .m183X.z.CO2e_production_based_30 expected -81467.9722321816 got -81066.06162023955
at .m183X.z.change_energy_pct expected 0.7710441522477659 got 0.7711655636680382
at .m183X.z.CO2e_combustion_based_per_MWh expected 0.03664542572148706 got 0.03645889979346444
at .m183X.z.invest expected 5193913910.257643 got 5167722455.043869
at .m183X.z.invest_pa_com expected 76703116.62148374 got 76716522.13959642
at .m183X.z.energy_30 expected 2223141.650784884 got 2223491.714765658
at .m183X.z.change_energy_MWh expected -660145.4402382821 got -659795.3762575081
at .m183X.z.invest_pa expected 402417942.2542385 got 400403214.930102
at .m183X.z.invest_com expected 997140516.0792884 got 997314787.8147533
at .m183X.z.CO2e_combustion_based_30 expected 81467.9722321816 got 81066.06162023955
at .m183X.z.invest_outside expected 554238005.1709987 got 554314454.9872864
at .m183X.z.demand_emplo_new expected 1247.7809865122026 got 1246.5186503237476
at .m183X.s.cost_wage expected 15622946.230230208 got 15079303.214147897
at .m183X.s.demand_emplo expected 362.72675206674626 got 349.11371039505343
at .m183X.s.invest_pa_outside expected 40514752.430550605 got 40521699.3600781
at .m183X.s.change_energy_pct expected 0.7710441522477659 got 0.7711655636680382
at .m183X.s.CO2e_total_30 expected -55741.5586935089 got -56143.46930545095
at .m183X.s.invest expected 723483455.0647919 got 697465812.4044873
at .m183X.s.invest_pa_com expected 4615665.678895228 got 4629071.197007911
at .m183X.s.energy_30 expected 2223141.650784884 got 2223491.714765658
at .m183X.s.change_energy_MWh expected -660145.4402382821 got -659795.3762575081
at .m183X.s.cost_climate_saved expected 1704300155.753182 got 1705985165.9937487
at .m183X.s.invest_pa expected 55652573.466522455 got 53651216.33880672
at .m183X.s.invest_com expected 60003653.82563795 got 60177925.561102845
at .m183X.s.CO2e_combustion_based_30 expected 7733.695902894307 got 7331.785290952263
at .m183X.s.change_CO2e_t expected -431487.02344419394 got -431888.934056136
at .m183X.s.invest_outside expected 470069910.05636466 got 470146359.87265235
at .m183X.s.change_CO2e_pct expected -0.1483492521473136 got -0.14941888744473153
at .m183X.s.demand_emplo_new expected 165.9577462090055 got 164.76765066053025
at .m183X.t.invest_pct expected 0.3366831279947877 got 0.338389531762564
at .m183X.t.demand_emplo_new_pct expected 0.2700993641481402 got 0.2703728909034393
at .m183X.a.invest_pct expected 0.01370554959823352 got 0.013775013136882333
at .m183X.a.demand_emplo_new_pct expected 0.01840359241146138 got 0.018422229533892342
at .m183X.f.pct_energy_30 expected 0.18736218438277405 got 0.18734334291418428
at .m183X.f.invest_pct expected 0.0567050023571407 got 0.05699398823308284
at .m183X.f.demand_emplo_new_pct expected 0.09810207670821748 got 0.09820416183705383
at .m183X.r.invest_pct expected 0.35580129215789885 got 0.35760459210088646
at .m183X.r.demand_emplo_new_pct expected 0.40500311369861275 got 0.4054132560472458
at .m183X.h.pct_energy_30 expected 0.21290960920027388 got 0.21287608895603516
at .m183X.h.cost_climate_saved_pct expected 0.0717203941882069 got 0.07179773993260986
at .m183X.h.invest_pct expected 0.00915969164917688 got 0.009332770497012111
at .m183X.h.demand_emplo_new_pct expected 0.016664335960240396 got 0.016899446112816834
at .m183X.CO2e_lulucf_203X expected -25511.056425114886 got -25109.14581317284
at .m183X.CO2e_wo_lulucf_203X expected 25511.056425114886 got 25109.14581317284
at .m183X.i.invest_pct expected 0.018733437916458894 got 0.018828384192010137
at .m183X.i.demand_emplo_new_pct expected 0.0007228088890517477 got 0.0007235408699312557
at .m183X.d.cost_wage expected 94363479.41595693 got 94360070.01586963
at .m183X.d.demand_emplo expected 2584.45736648732 got 2584.3851258473405
at .m183X.d.CO2e_production_based_30 expected -17992.717635778383 got -17590.807023836336
at .m183X.d.CO2e_total_30 expected 55741.558693508894 got 56143.46930545094
at .m183X.d.invest expected 4470430455.192851 got 4470256642.639381
at .m183X.d.cost_climate_saved expected 1819351277.6891546 got 1817666267.4485874
at .m183X.d.invest_pa expected 346765368.78771603 got 346751998.59129524
at .m183X.d.change_CO2e_t expected -468820.83764005086 got -468418.92702810885
at .m183X.d.change_CO2e_pct expected 0.10626297096992794 got 0.10702915362951469
at .m183X.d.demand_emplo_new expected 1081.823240303197 got 1081.7509996632173
at .m183X.l.cost_climate_saved_pct expected 0.02205766047380353 got 0.021579460438302032
at .m183X.l.invest_pct expected 0.000984074826350217 got 0.0009554281250197175
at .m183X.l.demand_emplo_new_pct expected 0.00197104426500702 got 0.0019150864023173766
at .m183X.b.invest_pct expected 0.13479805333813002 got 0.13548124737721073
at .m183X.b.demand_emplo_new_pct expected 0.17079777249517097 got 0.1709707375840384
at .m183X.e.pct_energy_30 expected 0.599728206416952 got 0.5997805681297804
at .m183X.e.cost_climate_saved_pct expected 0.32422962299365393 got 0.32463047728475247
at .m183X.e.invest_pct expected 0.07342977016182332 got 0.06863904457533168
at .m183X.e.demand_emplo_new_pct expected 0.018235891424098136 got 0.017078650709264984
at .f30.p.energy expected 416532.67588338215 got 416556.3707861903
at .f30.p.demand_electricity expected 703137.4628750179 got 703169.056078762
at .f30.p.cost_wage expected 5777140.741046623 got 5777301.827894239
at .f30.p.invest_pa_outside expected 14715873.012560323 got 14716504.725688223
at .f30.p.change_energy_pct expected -0.4710668663657999 got -0.47103677744380384
at .f30.p.demand_emplo_new expected 122.40990605387537 got 122.41331926929921
at .f30.p.invest_pa expected 22655453.886457346 got 22656085.59958525
at .f30.p.demand_emplo expected 122.40990605387537 got 122.41331926929921
at .f30.p.invest expected 294520900.5239455 got 294529112.79460824
at .f30.p.invest_outside expected 191306349.16328418 got 191314561.4339469
at .f30.p.change_energy_MWh expected -370963.2274673202 got -370939.53256451205
at .f30.d_e_hydrogen_reconv.energy expected 96798.2570494619 got 96821.9519522701
at .f30.p_hydrogen_total.energy expected 127784.3784049701 got 127808.07330777831
at .f30.p_hydrogen_reconv.cost_wage expected 658070.9027982769 got 658231.9896458918
at .f30.p_hydrogen_reconv.demand_emplo expected 13.943644615750227 got 13.947057831174071
at .f30.p_hydrogen_reconv.invest_pa_outside expected 2580670.207052066 got 2581301.920179968
at .f30.p_hydrogen_reconv.invest expected 33548712.69167686 got 33556924.96233958
at .f30.p_hydrogen_reconv.change_energy_MWh expected 96798.2570494619 got 96821.9519522701
at .f30.p_hydrogen_reconv.energy expected 96798.2570494619 got 96821.9519522701
at .f30.p_hydrogen_reconv.demand_electricity expected 129064.34273261587 got 129095.93593636014
at .f30.p_hydrogen_reconv.invest_pa expected 2580670.207052066 got 2581301.920179968
at .f30.p_hydrogen_reconv.invest_outside expected 33548712.69167686 got 33556924.96233958
at .f30.p_hydrogen_reconv.demand_emplo_new expected 13.943644615750227 got 13.947057831174071
at .f30.p_hydrogen_reconv.power_to_be_installed expected 56.11493162287647 got 56.12866779841745
at .f30.f.cost_wage expected 5777140.741046623 got 5777301.827894239
at .f30.f.invest_pa_outside expected 14715873.012560323 got 14716504.725688223
at .f30.f.change_energy_pct expected -0.4710668663657999 got -0.47103677744380384
at .f30.f.demand_emplo_new expected 122.40990605387537 got 122.41331926929921
at .f30.f.invest_pa expected 22655453.886457346 got 22656085.59958525
at .f30.f.demand_emplo expected 122.40990605387537 got 122.41331926929921
at .f30.f.invest expected 294520900.5239455 got 294529112.79460824
at .f30.f.invest_outside expected 191306349.16328418 got 191314561.4339469
at .f30.f.change_energy_MWh expected -370963.2274673202 got -370939.53256451205
at .f30.d.energy expected 416532.6758833821 got 416556.3707861903
at .h30.p_heatnet_cogen.energy expected 16689.222129278845 got 15230.203360095871
at .h30.p_heatnet_cogen.pct_energy expected 0.14128053876717542 got 0.12892939644401316
at .h30.p_heatnet_cogen.change_energy_pct expected -0.816084046336605 got -0.8321624966243701
at .h30.p_heatnet_cogen.cost_climate_saved expected 93263827.6299937 got 93536367.07312977
at .h30.p_heatnet_cogen.change_CO2e_pct expected -0.9698046155043432 got -0.9724443809997386
at .h30.p_heatnet_cogen.change_CO2e_t expected -23882.24733415386 got -23947.253760662166
at .h30.p_heatnet_cogen.CO2e_combustion_based expected 743.5865218068977 got 678.5800952985924
at .h30.p_heatnet_cogen.CO2e_total expected 743.5865218068977 got 678.5800952985924
at .h30.p_heatnet_cogen.change_energy_MWh expected -74054.52139513363 got -75513.54016431661
at .h30.p_heatnet.cost_wage expected 892611.4756840054 got 905450.0939675987
at .h30.p_heatnet.cost_climate_saved expected 146603411.1326129 got 146875950.57574898
at .h30.p_heatnet.change_CO2e_pct expected -0.9805620265154013 got -0.9822613488642336
at .h30.p_heatnet.demand_emplo_new expected 18.913246496621635 got 19.18527969234944
at .h30.p_heatnet.invest_com expected 45505683.074086554 got 46160200.868936405
at .h30.p_heatnet.invest_pa expected 3500437.15954512 got 3550784.6822258774
at .h30.p_heatnet.demand_emplo expected 18.913246496621635 got 19.18527969234944
at .h30.p_heatnet.invest expected 45505683.074086554 got 46160200.868936405
at .h30.p_heatnet.change_CO2e_t expected -37510.736769459254 got -37575.74319596756
at .h30.p_heatnet.CO2e_combustion_based expected 743.5865218068977 got 678.5800952985924
at .h30.p_heatnet.invest_pa_com expected 3500437.15954512 got 3550784.6822258774
at .h30.p_heatnet.CO2e_total expected 743.5865218068977 got 678.5800952985924
at .h30.p_heatnet_geoth.cost_wage expected 698681.1997363718 got 708730.4781399062
at .h30.p_heatnet_geoth.demand_emplo expected 14.804122636943731 got 15.017053441371914
at .h30.p_heatnet_geoth.invest expected 35619041.55518758 got 36131357.70909326
at .h30.p_heatnet_geoth.invest_pa_com expected 2739926.273475968 got 2779335.208391789
at .h30.p_heatnet_geoth.change_energy_MWh expected 33015.53110253086 got 33490.40041891589
at .h30.p_heatnet_geoth.energy expected 33015.53110253086 got 33490.40041891589
at .h30.p_heatnet_geoth.invest_pa expected 2739926.273475968 got 2779335.208391789
at .h30.p_heatnet_geoth.invest_com expected 35619041.55518758 got 36131357.70909326
at .h30.p_heatnet_geoth.demand_emplo_new expected 14.804122636943731 got 15.017053441371914
at .h30.p_heatnet_geoth.power_to_be_installed expected 11.005177034176954 got 11.163466806305296
at .h30.p.cost_wage expected 892611.4756840054 got 905450.0939675987
at .h30.p.demand_emplo expected 18.913246496621635 got 19.18527969234944
at .h30.p.invest expected 45505683.074086554 got 46160200.868936405
at .h30.p.invest_pa_com expected 3500437.15954512 got 3550784.6822258774
at .h30.p.demand_electricity expected 20494.44280316139 got 20789.218677382698
at .h30.p.cost_climate_saved expected 252717669.78832468 got 252990209.23146078
at .h30.p.invest_pa expected 3500437.15954512 got 3550784.6822258774
at .h30.p.invest_com expected 45505683.074086554 got 46160200.868936405
at .h30.p.change_CO2e_t expected -64623.379164831866 got -64688.38559134017
at .h30.p.CO2e_total expected 743.5865218068977 got 678.5800952985924
at .h30.p.change_CO2e_pct expected -0.9886244295723996 got -0.989618913954923
at .h30.p.demand_emplo_new expected 18.913246496621635 got 19.18527969234944
at .h30.p.CO2e_combustion_based expected 743.5865218068977 got 678.5800952985924
at .h30.p_heatnet_lheatpump.cost_wage expected 84267.6040772111 got 85479.64272100205
at .h30.p_heatnet_lheatpump.demand_emplo expected 1.7855181240759959 got 1.8111996061742213
at .h30.p_heatnet_lheatpump.invest expected 4295995.501975468 got 4357785.707345203
at .h30.p_heatnet_lheatpump.invest_pa_com expected 330461.1924596514 got 335214.2851804002
at .h30.p_heatnet_lheatpump.change_energy_MWh expected 57896.80091893093 got 58729.54276360612
at .h30.p_heatnet_lheatpump.energy expected 57896.80091893093 got 58729.54276360612
at .h30.p_heatnet_lheatpump.demand_electricity expected 20494.44280316139 got 20789.218677382698
at .h30.p_heatnet_lheatpump.invest_pa expected 330461.1924596514 got 335214.2851804002
at .h30.p_heatnet_lheatpump.invest_com expected 4295995.501975468 got 4357785.707345203
at .h30.p_heatnet_lheatpump.demand_emplo_new expected 1.7855181240759959 got 1.8111996061742213
at .h30.p_heatnet_lheatpump.power_to_be_installed expected 13.218447698386058 got 13.408571407216009
at .h30.p_heatnet_plant.cost_wage expected 109662.6718704226 got 111239.9731066905
at .h30.p_heatnet_plant.demand_emplo expected 2.323605735601908 got 2.3570266448033057
at .h30.p_heatnet_plant.change_energy_pct expected -0.7866558226798676 got -0.7835872485798747
at .h30.p_heatnet_plant.invest expected 5590646.016923505 got 5671057.452497946
at .h30.p_heatnet_plant.invest_pa_com expected 430049.69360950036 got 436235.1886536882
at .h30.p_heatnet_plant.change_energy_MWh expected -38814.665263607894 got -38663.25765548513
at .h30.p_heatnet_plant.energy expected 10526.691076169258 got 10678.09868429202
at .h30.p_heatnet_plant.invest_pa expected 430049.69360950036 got 436235.1886536882
at .h30.p_heatnet_plant.invest_com expected 5590646.016923505 got 5671057.452497946
at .h30.p_heatnet_plant.area_ha_available expected 2.4768684885104135 got 2.5124938080687103
at .h30.p_heatnet_plant.demand_emplo_new expected 2.323605735601908 got 2.3570266448033057
at .h30.h.cost_wage expected 1050694.8865910994 got 1063533.5048746928
at .h30.h.cost_climate_saved expected 252717669.78832468 got 252990209.23146078
at .h30.h.change_CO2e_pct expected -0.9886244295723996 got -0.989618913954923
at .h30.h.demand_emplo_new expected 20.793441564039536 got 21.06547475976734
at .h30.h.invest_com expected 47574649.870330565 got 48229167.665180415
at .h30.h.invest_pa expected 3659588.45156389 got 3709935.9742446477
at .h30.h.demand_emplo expected 20.793441564039536 got 21.06547475976734
at .h30.h.invest expected 47574649.870330565 got 48229167.665180415
at .h30.h.change_CO2e_t expected -64623.379164831866 got -64688.38559134017
at .h30.h.CO2e_combustion_based expected 743.5865218068977 got 678.5800952985924
at .h30.h.invest_pa_com expected 3659588.45156389 got 3709935.9742446477
at .h30.h.CO2e_total expected 743.5865218068977 got 678.5800952985924

@Ultramarin95
Copy link
Collaborator Author

We are ready to rock!

D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core>python devtool.py ready_to_rock
WARNING: there is a new pyright version available (v1.1.246).
Please install the new version or set PYRIGHT_PYTHON_FORCE_VERSION to `latest`

No configuration file found.
pyproject.toml file found at D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core.
Loading pyproject.toml file at D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core\pyproject.toml
Assuming Python platform Windows
Auto-excluding **/node_modules
Auto-excluding **/__pycache__
Auto-excluding **/.*
stubPath D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core\typings is not a valid directory.
Searching for source files
Found 63 source files
0 errors, 0 warnings, 0 informations
Completed in 7.272sec
================================================= test session starts =================================================
platform win32 -- Python 3.10.2, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: D:\Dateien\germanZero\ExcelToPython\g2p2\localzero-generator-core
plugins: cov-3.0.0, typeguard-2.13.3
collected 16 items

tests\test_end_to_end.py ...........                                                                             [ 68%]
tests\test_entries.py .                                                                                          [ 75%]
tests\test_refdata.py ....                                                                                       [100%]

================================================= 16 passed in 9.33s ==================================================
Trim Trailing Whitespace.................................................Passed
Mixed line ending........................................................Passed
Check for case conflicts.................................................Passed
Check Yaml...............................................................Passed
Check for added large files..............................................Passed
Don't commit to branch...................................................Passed
black....................................................................Passed
You are ready to rock and save the climate at d9cf3397333fd61cd879d577c1c928abebbf5b24, but don't forget to copy paste the above into your pull request

@bgrundmann bgrundmann merged commit 0b709d2 into main May 12, 2022
@bgrundmann bgrundmann deleted the addDataGeneratorFolder branch May 12, 2022 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants