diff --git a/Makefile b/Makefile
index 6ec9753..85d8af4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-N := template
+N := oberlausitz-dresden
V := v1.0
CRS := EPSG:25832
@@ -103,51 +103,55 @@ input/freight-trips.xml.gz: input/$V/$N-$V-network.xml.gz
--shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)\
--output $@
-input/$V/prepare-25pct.plans.xml.gz:
+input/$V/prepare-100pct.plans.xml.gz:
$(sc) prepare trajectory-to-plans\
- --name prepare --sample-size 0.25 --output input/$V\
- --population ../shared-svn/projects/$N/matsim-input-files/population.xml.gz\
- --attributes ../shared-svn/projects/$N/matsim-input-files/personAttributes.xml.gz
-
- $(sc) prepare resolve-grid-coords\
- input/$V/prepare-25pct.plans.xml.gz\
- --input-crs $(CRS)\
- --grid-resolution 300\
- --landuse ../matsim-leipzig/scenarios/input/landuse/landuse.shp\
- --output $@
+ --name prepare --sample-size 1 --output input/$V\
+ --population ../shared-svn/projects/matsim-$N/data/snz/20241129_Teilmodell_Hoyerswerda/Teilmodell/populationATA.xml.gz\
+ --attributes ../shared-svn/projects/matsim-$N/data/snz/20241129_Teilmodell_Hoyerswerda/Teilmodell/personAttributesATA.xml.gz
-input/$V/$N-$V-25pct.plans-initial.xml.gz: input/freight-trips.xml.gz input/$V/$N-$V-network.xml.gz input/$V/prepare-25pct.plans.xml.gz
- $(sc) prepare generate-short-distance-trips\
- --population input/$V/prepare-25pct.plans.xml.gz\
- --input-crs $(CRS)\
- --shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)\
- --num-trips 111111 # FIXME
+# $(sc) prepare resolve-grid-coords\
+# input/$V/prepare-25pct.plans.xml.gz\
+# --input-crs $(CRS)\
+# --grid-resolution 300\
+# --landuse ../matsim-leipzig/scenarios/input/landuse/landuse.shp\
+# --output $@
- $(sc) prepare adjust-activity-to-link-distances input/$V/prepare-25pct.plans-with-trips.xml.gz\
- --shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)\
- --scale 1.15\
- --input-crs $(CRS)\
- --network input/$V/$N-$V-network.xml.gz\
- --output input/$V/prepare-25pct.plans-adj.xml.gz
+input/$V/$N-$V-100pct.plans-initial.xml.gz: input/$V/prepare-100pct.plans.xml.gz
+
+ # Use direct input for now
+ cp $< $@
+
+# $(sc) prepare generate-short-distance-trips\
+# --population input/$V/prepare-25pct.plans.xml.gz\
+# --input-crs $(CRS)\
+# --shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)\
+# --num-trips 111111 # FIXME
+
+# $(sc) prepare adjust-activity-to-link-distances input/$V/prepare-25pct.plans-with-trips.xml.gz\
+# --shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)\
+# --scale 1.15\
+# --input-crs $(CRS)\
+# --network input/$V/$N-$V-network.xml.gz\
+# --output input/$V/prepare-25pct.plans-adj.xml.gz
- $(sc) prepare xy-to-links --network input/$V/$N-$V-network.xml.gz --input input/$V/prepare-25pct.plans-adj.xml.gz --output $@
+# $(sc) prepare xy-to-links --network input/$V/$N-$V-network.xml.gz --input input/$V/prepare-25pct.plans-adj.xml.gz --output $@
- $(sc) prepare fix-subtour-modes --input $@ --output $@
+# $(sc) prepare fix-subtour-modes --input $@ --output $@
- $(sc) prepare merge-populations $@ $< --output $@
+# $(sc) prepare merge-populations $@ $< --output $@
- $(sc) prepare extract-home-coordinates $@ --csv input/$V/$N-$V-homes.csv
+# $(sc) prepare extract-home-coordinates $@ --csv input/$V/$N-$V-homes.csv
- $(sc) prepare downsample-population $@\
- --sample-size 0.25\
- --samples 0.1 0.01\
+# $(sc) prepare downsample-population $@\
+# --sample-size 0.25\
+# --samples 0.1 0.01\
-check: input/$V/$N-$V-25pct.plans-initial.xml.gz
+check: input/$V/$N-$V-100pct.plans-initial.xml.gz
$(sc) analysis check-population $<\
--input-crs $(CRS)\
- --shp ../shared-svn/projects/$N/data/shp/$N.shp --shp-crs $(CRS)
+ --shp ../shared-svn/projects/matsim-$N/data/snz/20241129_Teilmodell_Hoyerswerda/Teilmodell/UG.shp/UG.shp --shp-crs $(CRS)
# Aggregated target
-prepare: input/$V/$N-$V-25pct.plans-initial.xml.gz input/$V/$N-$V-network-with-pt.xml.gz
+prepare: input/$V/$N-$V-100pct.plans-initial.xml.gz input/$V/$N-$V-network-with-pt.xml.gz
echo "Done"
\ No newline at end of file
diff --git a/README.md b/README.md
index 43bbc9e..ac53f81 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# The MATSim Open Template Scenario
+# The MATSim Oberlausitz/Dresden Scenario
![Build Status](https://github.com/matsim-scenarios/matsim-scenario-template/workflows/build/badge.svg?branch=main)
![license](https://img.shields.io/github/license/matsim-scenarios/matsim-scenario-template.svg)
diff --git a/input/v1.0/template-v1.0-25pct.config.xml b/input/v1.0/oberlausitz-dresden-v1.0.config.xml
similarity index 100%
rename from input/v1.0/template-v1.0-25pct.config.xml
rename to input/v1.0/oberlausitz-dresden-v1.0.config.xml
diff --git a/pom.xml b/pom.xml
index b079e44..d0a23e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,15 +18,15 @@
4.0.0
com.github.matsim-scenarios
- matsim-template
+ matsim-oberlausitz-dresden
1.x-SNAPSHOT
- MATSim Template Model
- A transport model of template
+ MATSim Oberlausitz/Dresden Model
+ A transport model of the Oberlausitz region including Dresden city
- org.matsim.run.RunTemplateScenario
+ org.matsim.run.OberlausitzDresdenScenario
${project.parent.version}
diff --git a/src/main/java/org/matsim/run/RunTemplateScenario.java b/src/main/java/org/matsim/run/OberlausitzDresdenScenario.java
similarity index 61%
rename from src/main/java/org/matsim/run/RunTemplateScenario.java
rename to src/main/java/org/matsim/run/OberlausitzDresdenScenario.java
index 813d5ce..0585996 100644
--- a/src/main/java/org/matsim/run/RunTemplateScenario.java
+++ b/src/main/java/org/matsim/run/OberlausitzDresdenScenario.java
@@ -12,8 +12,8 @@
import org.matsim.application.prepare.population.*;
import org.matsim.application.prepare.pt.CreateTransitScheduleFromGtfs;
import org.matsim.core.config.Config;
-import org.matsim.core.config.groups.PlanCalcScoreConfigGroup;
-import org.matsim.core.config.groups.PlansCalcRouteConfigGroup;
+import org.matsim.core.config.groups.RoutingConfigGroup;
+import org.matsim.core.config.groups.ScoringConfigGroup;
import org.matsim.core.config.groups.VspExperimentalConfigGroup;
import org.matsim.core.controler.AbstractModule;
import org.matsim.core.controler.Controler;
@@ -23,7 +23,7 @@
import javax.annotation.Nullable;
import java.util.List;
-@CommandLine.Command(header = ":: Open Template Scenario ::", version = RunTemplateScenario.VERSION, mixinStandardHelpOptions = true)
+@CommandLine.Command(header = ":: Oberlausitz/Dresden Scenario ::", version = OberlausitzDresdenScenario.VERSION, mixinStandardHelpOptions = true)
@MATSimApplication.Prepare({
CreateNetworkFromSumo.class, CreateTransitScheduleFromGtfs.class, TrajectoryToPlans.class, GenerateShortDistanceTrips.class,
MergePopulations.class, ExtractRelevantFreightTrips.class, DownSamplePopulation.class, ExtractHomeCoordinates.class,
@@ -33,7 +33,7 @@
LinkStats.class, CheckPopulation.class
})
// FIXME: Rename scenario
-public class RunTemplateScenario extends MATSimApplication {
+public class OberlausitzDresdenScenario extends MATSimApplication {
static final String VERSION = "1.0";
@@ -41,17 +41,17 @@ public class RunTemplateScenario extends MATSimApplication {
private final SampleOptions sample = new SampleOptions(25, 10, 1);
- public RunTemplateScenario(@Nullable Config config) {
+ public OberlausitzDresdenScenario(@Nullable Config config) {
super(config);
}
// FIXME: update config path
- public RunTemplateScenario() {
+ public OberlausitzDresdenScenario() {
super(String.format("input/v%s/template-v%s-25pct.config.xml", VERSION, VERSION));
}
public static void main(String[] args) {
- MATSimApplication.run(RunTemplateScenario.class, args);
+ MATSimApplication.run(OberlausitzDresdenScenario.class, args);
}
@Nullable
@@ -64,38 +64,38 @@ protected Config prepareConfig(Config config) {
for (String act : List.of("home", "restaurant", "other", "visit", "errands", "accomp_other", "accomp_children",
"educ_higher", "educ_secondary", "educ_primary", "educ_tertiary", "educ_kiga", "educ_other")) {
- config.planCalcScore()
- .addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams(act + "_" + ii).setTypicalDuration(ii));
+ config.scoring()
+ .addActivityParams(new ScoringConfigGroup.ActivityParams(act + "_" + ii).setTypicalDuration(ii));
}
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("work_" + ii).setTypicalDuration(ii)
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("work_" + ii).setTypicalDuration(ii)
.setOpeningTime(6. * 3600.).setClosingTime(20. * 3600.));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("business_" + ii).setTypicalDuration(ii)
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("business_" + ii).setTypicalDuration(ii)
.setOpeningTime(6. * 3600.).setClosingTime(20. * 3600.));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("leisure_" + ii).setTypicalDuration(ii)
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("leisure_" + ii).setTypicalDuration(ii)
.setOpeningTime(9. * 3600.).setClosingTime(27. * 3600.));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("shop_daily_" + ii).setTypicalDuration(ii)
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("shop_daily_" + ii).setTypicalDuration(ii)
.setOpeningTime(8. * 3600.).setClosingTime(20. * 3600.));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("shop_other_" + ii).setTypicalDuration(ii)
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("shop_other_" + ii).setTypicalDuration(ii)
.setOpeningTime(8. * 3600.).setClosingTime(20. * 3600.));
}
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("car interaction").setTypicalDuration(60));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("other").setTypicalDuration(600 * 3));
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("car interaction").setTypicalDuration(60));
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("other").setTypicalDuration(600 * 3));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("freight_start").setTypicalDuration(60 * 15));
- config.planCalcScore().addActivityParams(new PlanCalcScoreConfigGroup.ActivityParams("freight_end").setTypicalDuration(60 * 15));
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("freight_start").setTypicalDuration(60 * 15));
+ config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("freight_end").setTypicalDuration(60 * 15));
- config.controler().setOutputDirectory(sample.adjustName(config.controler().getOutputDirectory()));
+ config.controller().setOutputDirectory(sample.adjustName(config.controller().getOutputDirectory()));
config.plans().setInputFile(sample.adjustName(config.plans().getInputFile()));
- config.controler().setRunId(sample.adjustName(config.controler().getRunId()));
+ config.controller().setRunId(sample.adjustName(config.controller().getRunId()));
config.qsim().setFlowCapFactor(sample.getSize() / 100.0);
config.qsim().setStorageCapFactor(sample.getSize() / 100.0);
config.vspExperimental().setVspDefaultsCheckingLevel(VspExperimentalConfigGroup.VspDefaultsCheckingLevel.abort);
- config.plansCalcRoute().setAccessEgressType(PlansCalcRouteConfigGroup.AccessEgressType.accessEgressModeToLink);
+ config.routing().setAccessEgressType(RoutingConfigGroup.AccessEgressType.accessEgressModeToLink);
// TODO: Config options
diff --git a/src/main/python/create_ref.py b/src/main/python/create_ref.py
new file mode 100644
index 0000000..1558f9c
--- /dev/null
+++ b/src/main/python/create_ref.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import geopandas as gpd
+import numpy as np
+import pandas as pd
+from matsim.scenariogen.data import run_create_ref_data
+from matsim.scenariogen.data.preparation import calc_needed_short_distance_trips, cut
+
+CRS = "EPSG:25832"
+
+
+def person_filter(df):
+ """ Filter person that are relevant for the calibration."""
+
+ df = gpd.GeoDataFrame(df, geometry=gpd.GeoSeries.from_wkt(df.geom, crs="EPSG:4326").to_crs(CRS))
+ df = gpd.sjoin(df, region, how="inner", predicate="intersects")
+
+ # Groups will be shown on the dashboard
+ df["age"] = cut(df.age, [0, 12, 18, 25, 35, 66, np.inf])
+
+ # Only weekdays Monday through Thursday are considered, with persons present in their home region
+ return df[df.present_on_day & (df.reporting_day <= 4)]
+
+
+def trip_filter(df):
+ # All modes, expect for "other" are considered
+ return df[df.main_mode != "other"]
+
+
+if __name__ == "__main__":
+
+ # Defines the study area
+ region = gpd.read_file("../../../../shared-svn/projects/matsim-oberlausitz-dresden/data/snz/20241129_Teilmodell_Hoyerswerda/Teilmodell/UG.shp").to_crs(CRS)
+
+ # This contains the path to the MiD 2017 data with the highest resolution
+ # See https://daten.clearingstelle-verkehr.de/279/ for more information, the data is not included in this repository
+ r = run_create_ref_data.create(
+ # this is the MID2017 dataset, it is not available in svn as it has to be encrypted
+ "/Volumes/Untitled/B3_Lokal-Datensatzpaket/CSV",
+ person_filter, trip_filter,
+ run_create_ref_data.InvalidHandling.REMOVE_TRIPS,
+ ref_groups=["age", "economic_status"]
+ )
+
+ print("Filtered %s persons" % len(r.persons))
+ print("Filtered %s trips" % len(r.trips))
+
+ print(r.share)
+
+ print(r.trips.groupby("dist_group").agg(n=("main_mode", "count")) / len(r.trips))
diff --git a/src/main/resources/mode_share_distance_distribution.csv b/src/main/resources/mode_share_distance_distribution.csv
new file mode 100644
index 0000000..bf45f02
--- /dev/null
+++ b/src/main/resources/mode_share_distance_distribution.csv
@@ -0,0 +1,300 @@
+dist,car,pt,ride,walk,bike
+0,0.0,0.05430395951460708,0.002288095203509997,0.9434079452818829,0.0
+100,0.012803895421478575,0.04953519261882109,0.01053343277523665,0.9227258316274175,0.0044016475570461825
+200,0.05154193970292044,0.04185771948690316,0.018135115757540534,0.8456867621385007,0.04277846291413518
+300,0.08590664436075252,0.03519747970451771,0.02555520383002633,0.7783404667995606,0.07500020530514293
+400,0.11610523001607319,0.02993192041557827,0.03262622906569747,0.7195677218861264,0.10176889861652463
+500,0.14235269936478961,0.02584798063993637,0.03902052356745889,0.6692664138469024,0.1235123825809127
+600,0.16695054121487599,0.021998122478468166,0.044549577354712246,0.623487784668097,0.1430139742838467
+700,0.19383181004725974,0.017147633416117535,0.05172461329161471,0.5762610112687215,0.1610349319762864
+800,0.2220362002441899,0.01203066404851613,0.06055316946082988,0.5242056352689737,0.18117433097749042
+900,0.2504495350566519,0.008671736888355208,0.07097856246215241,0.47196325915567633,0.19793690643716425
+1000,0.27498040805466256,0.010124878890214987,0.08118295985629233,0.42676335990241093,0.2069483932964191
+1100,0.29176870663924404,0.012982265307392596,0.08968305404694153,0.40096051247680997,0.20460546152961173
+1200,0.2996044316654995,0.01973693252469058,0.09523898391527653,0.3890353634771326,0.1963842884174008
+1300,0.2933432434253359,0.04216325476650795,0.09712701559256331,0.3794695739708534,0.18789691224473956
+1400,0.2794813858813874,0.0723473037820218,0.09621314363216786,0.3698575690959423,0.1821005976084807
+1500,0.27902066139309156,0.09032852281657963,0.09439515008258248,0.3609822122046397,0.1752734535031066
+1600,0.2887768774980577,0.09294597079665345,0.09326975036951561,0.3565569552118839,0.16845044612388924
+1700,0.2964164666437045,0.09769572720744935,0.09286618399365379,0.35137556356442334,0.161646058590769
+1800,0.3004685246028954,0.10737458957331876,0.09389016632599174,0.34063985785492146,0.15762686164287254
+1900,0.30016470617328755,0.11738814185161796,0.09479702870527498,0.32259415294416727,0.1650559703256523
+2000,0.3031043470269981,0.11980861912544702,0.09518358805643605,0.30189509782592583,0.1800083479651931
+2100,0.31169513532789006,0.11564245433003129,0.09346735871707865,0.28420085969880216,0.19499419192619788
+2200,0.3249117869265328,0.11763484315806383,0.09014104055257748,0.26213467800436113,0.20517765135846464
+2300,0.35089023781076695,0.1272192775334196,0.08521615656655412,0.2248747196404364,0.21179960844882295
+2400,0.3748915032383303,0.14198968636324433,0.07513556880274903,0.17694678487322424,0.23103645672245207
+2500,0.38105045861873005,0.1560157372342514,0.061580979664960206,0.1396187748190475,0.26173404966301084
+2600,0.3756734401329284,0.14842715231203057,0.05296621816757707,0.14114962237183476,0.2817835670156292
+2700,0.37826648612248515,0.13750922816374206,0.04613761803853962,0.15139889377036456,0.28668777390486855
+2800,0.39201288802371725,0.136891966435888,0.040175785434374674,0.15404959708252194,0.2768697630234981
+2900,0.40990015773891475,0.14194121369624987,0.03776646960697846,0.15047041868822364,0.25992174026963333
+3000,0.4148277814681074,0.14288274539032106,0.03938147158857605,0.14846869645957675,0.2544393050934188
+3100,0.38891574594298306,0.15305459246903672,0.0389753828765513,0.15037791562114838,0.2686763630902805
+3200,0.35891581521762184,0.17682016478912685,0.04425388625847047,0.1448875389141373,0.2751225948206436
+3300,0.3613988004280095,0.19945794695482502,0.07668873970633022,0.12016407202611253,0.2422904408847228
+3400,0.3855465771541855,0.2069608670197411,0.11761448995905267,0.09767889902974064,0.19219916683728014
+3500,0.4129284968594985,0.1917772761528576,0.14202951122252624,0.09207271037067502,0.16119200539444267
+3600,0.4147745415768233,0.17315290029985098,0.14989345923260422,0.10314301315265528,0.15903608573806619
+3700,0.40705866764516874,0.16499548793916927,0.15433584939308587,0.11399923294189351,0.1596107620806826
+3800,0.4033210006126232,0.16093815743540202,0.16134933006356636,0.12057670988448826,0.15381480200392025
+3900,0.40768885847722225,0.15160934939326035,0.17034960272018407,0.12491863750963933,0.1454335518996941
+4000,0.41197405488769484,0.14056623712671815,0.17370248197620033,0.13056438384599367,0.143192842163393
+4100,0.43177583653885193,0.12663901971080113,0.16422651770007943,0.13168108627353758,0.14567753977673
+4200,0.5189316793457306,0.10834260038164592,0.1382445839785525,0.1092261127748539,0.12525502351921705
+4300,0.6202441236986062,0.10119146282235919,0.109178596410617,0.07447502434777958,0.09491079272063821
+4400,0.687894041225068,0.09233801412181186,0.08980347364988797,0.04676354170694996,0.08320092929628228
+4500,0.7126384479782994,0.07943291615844922,0.08452206048908976,0.033862167859751005,0.08954440751441048
+4600,0.7036168923098333,0.07037947349397147,0.08055020740422819,0.03646289747741699,0.10899052931455008
+4700,0.6951425334402777,0.06369916341468455,0.07579158890282466,0.04065551695235926,0.12471119728985411
+4800,0.7033748709545593,0.05493287435403564,0.07157342281075964,0.04109959940265781,0.1290192324779874
+4900,0.7124649326915063,0.04881517589488057,0.06794081603164964,0.04076376219196011,0.1300153131900033
+5000,0.7058983418820097,0.04888913197518584,0.06264140813149766,0.04324726530843102,0.1393238527028756
+5100,0.6760288988574463,0.06445498435976832,0.054057577799768414,0.04796333979351624,0.15749519918950083
+5200,0.6423907860258175,0.09714286932224747,0.047420727089970985,0.048960047187668755,0.1640855703742953
+5300,0.6384951563514422,0.12254370653500683,0.05351576907889481,0.043820151891876456,0.14162521614277981
+5400,0.6779595741710898,0.12268791500936053,0.06932651911378879,0.03357606707706087,0.09644992462870002
+5500,0.7054679065910098,0.11847050941942763,0.08190553154398653,0.028130262982246246,0.06602578946332982
+5600,0.7070479672925032,0.11465451999677721,0.08947086423399586,0.02987438003326742,0.0589522684434563
+5700,0.6959507696914643,0.11909883934794455,0.09347990883937864,0.03228650020450646,0.05918398191670609
+5800,0.6627197844621958,0.14994157776444741,0.09315712318110576,0.0325300285480734,0.061651486044177535
+5900,0.6188115660209911,0.19325387935780394,0.08995671990375842,0.03246415176768414,0.06551368294976248
+6000,0.5797170545830456,0.23429999205044016,0.087026620569473,0.031616645449607766,0.06733968734743354
+6100,0.5496409742264535,0.26651437025891356,0.09242384831489166,0.02801631979255421,0.06340448740718696
+6200,0.5280987781649119,0.29189086046847257,0.10310306948192906,0.020928796329748468,0.055978495554937856
+6300,0.5206596232003403,0.3061197891562391,0.11144534005697722,0.01057392083519025,0.05120132675125316
+6400,0.5354469742139923,0.29669757885312636,0.11504002390004121,0.0020558873851089536,0.05075953564773106
+6500,0.545231109243275,0.2773704823512216,0.11977119774592318,0.0,0.05762721065958032
+6600,0.5557579973680798,0.2509092096814455,0.12855867737316287,0.0,0.06477411557731183
+6700,0.5747128835892448,0.21479318390655708,0.14233518686765864,0.0,0.06815874563653959
+6800,0.6004535382717463,0.17187668778776405,0.15705756455984857,0.0,0.0706122093806411
+6900,0.6138788413953533,0.14619357520147908,0.16233792913997835,0.0,0.0775896542631892
+7000,0.5716605182576288,0.17530587181504495,0.16363187054917694,0.0,0.0894017393781492
+7100,0.4963887049226496,0.20549030584687344,0.21043777609972356,0.0,0.08768321313075353
+7200,0.449362274602684,0.19876663645252618,0.28064288326940506,0.0023293880883891076,0.06889881758699576
+7300,0.4489686017009867,0.16800401675737672,0.31917128855562055,0.009826124185649878,0.054029968800366354
+7400,0.45399741777059677,0.14185855281385912,0.3324189453615978,0.01817105264610636,0.053554031407839986
+7500,0.4575923353777444,0.1202684713507954,0.333876493893005,0.025036933558087417,0.06322576582036768
+7600,0.4623884469852356,0.10597620907361541,0.3306267635461571,0.02939487646662099,0.07161370392837084
+7700,0.46788207701489226,0.09587371630303626,0.3291332795465837,0.03146077448749951,0.07565015264798837
+7800,0.46791956516585065,0.0945853265903455,0.3245883938043801,0.0330279227353436,0.0798787917040801
+7900,0.4733408069146872,0.10758230458628996,0.29859268704287834,0.03512677601027169,0.08535742544587265
+8000,0.529635024568904,0.11830250821813502,0.23064285568761636,0.035361643066404436,0.0860579684589402
+8100,0.6273086113460523,0.12452780036243218,0.13639038407851065,0.03209719261805799,0.07967601159494697
+8200,0.729294283454638,0.12705065019271447,0.05711350542495019,0.023347824712469684,0.06319373621522768
+8300,0.7956037804102553,0.11775925039004832,0.036880976381538325,0.011058138493239746,0.0386978543249183
+8400,0.8319901915267247,0.10700435233799904,0.037701765902553176,0.0022116770985506234,0.021092013134172527
+8500,0.8406608084510293,0.10682484598444203,0.036464265820493176,0.0,0.016050079744035464
+8600,0.8400081925031307,0.11291020850706822,0.033234865661459126,0.0,0.01384673332834193
+8700,0.8315529925075547,0.12879783828352823,0.029478524347752038,0.0,0.01017064486116499
+8800,0.7979168174330384,0.16744533546776322,0.029026073230466624,0.0,0.005611773868731741
+8900,0.7222573892595106,0.2129862782617513,0.06342992635495913,0.0,0.0013264061237790762
+9000,0.6387908084211997,0.20232729886436326,0.158881892714437,0.0,0.0
+9100,0.6181515618057088,0.1569592981351802,0.22488914005911095,0.0,0.0
+9200,0.6416579380179107,0.11403832324994571,0.23879608581219422,0.0,0.0055076529199491854
+9300,0.6534413439264463,0.08512215727795651,0.23756277510306223,0.0,0.023873723692534966
+9400,0.6510601144783542,0.06754919775862965,0.23450221086757642,0.0,0.04688847689543958
+9500,0.6459417761891297,0.055025607654336735,0.23203135078558448,0.0,0.06700126537094911
+9600,0.6421600914126262,0.04893899800235623,0.22884191108867716,0.0,0.08005899949634039
+9700,0.6333810645502828,0.05503889820496398,0.22218370182226377,0.0,0.08939633542248944
+9800,0.620015059359079,0.06591896085772955,0.21255325564622787,0.0,0.1015127241369637
+9900,0.6037727364961287,0.07703487926229445,0.20262167141833112,0.0,0.11657071282324562
+10000,0.583728763124162,0.09039295255614323,0.1961911890410257,0.0,0.12968709527866912
+10100,0.5784201668009016,0.09636249069492474,0.20175317528569683,0.0,0.12346416721847689
+10200,0.6119800631270556,0.087120820588348,0.21663815246971346,0.0,0.08426096381488289
+10300,0.6368827257219105,0.087528763337289,0.23658567542131442,0.0,0.03900283551948604
+10400,0.6264716562562684,0.09139140331224578,0.27485323496302205,0.0,0.0072837054684637345
+10500,0.594161632602349,0.09386028342359663,0.31197808397405435,0.0,0.0
+10600,0.5570783203663063,0.10503046393572912,0.3378912156979646,0.0,0.0
+10700,0.5133040636612842,0.1302635533386119,0.3564323830001039,0.0,0.0
+10800,0.48283199294162443,0.1614260818836718,0.35574192517470377,0.0,0.0
+10900,0.5364724944762109,0.16008271470494326,0.30344479081884573,0.0,0.0
+11000,0.6189938243316901,0.13141700944243576,0.24958916622587415,0.0,0.0
+11100,0.6780018808822716,0.10527983738642041,0.21560180635551895,0.0002282467971919248,0.0008882285785971073
+11200,0.7045225007911575,0.10199840021716561,0.18844109751562035,0.0010299445255077103,0.004008056950548753
+11300,0.7174051502862689,0.11256415168264315,0.1597447876222099,0.0021028015108441656,0.00818310889803383
+11400,0.7280435888479782,0.12727654265622382,0.12939719953055,0.0031243145343864374,0.012158354430861341
+11500,0.7354282744705535,0.13953229010310192,0.10626635553272262,0.0038378771731701652,0.014935202720451688
+11600,0.7334772782481994,0.14560626493143258,0.09968615277111395,0.00434022013179506,0.01689008391745909
+11700,0.7197724599543208,0.15674835612853452,0.09861449299819239,0.005083216511969366,0.01978147440698298
+11800,0.6764507503824105,0.19259692923285668,0.09834152018409767,0.006666793429636026,0.025944006770999038
+11900,0.5706137971123008,0.2814226006820838,0.09949870754825922,0.009907927413059079,0.03855696724429714
+12000,0.38063989514704266,0.4340626650291952,0.11102905828690736,0.015183066806498129,0.059085314730356615
+12100,0.33126794725586617,0.4465887575783865,0.14874422100838913,0.015005349832664133,0.05839372432469403
+12200,0.4319195000892801,0.3181533488637504,0.20465033198941374,0.009256172738804915,0.03602064631875087
+12300,0.542645957439032,0.17397850311315075,0.27159869930460506,0.002407599936388948,0.009369240206823368
+12400,0.5652797310615,0.1398638611582732,0.2948564077802268,0.0,0.0
+12500,0.5476337644184073,0.16368149652976433,0.28868473905182845,0.0,0.0
+12600,0.5229244217875514,0.20141635108665426,0.27565922712579444,0.0,0.0
+12700,0.5035119816227179,0.26184976607078836,0.23463825230649374,0.0,0.0
+12800,0.5785580447186771,0.293894996258039,0.12754695902328406,0.0,0.0
+12900,0.701201312430284,0.27532909727053945,0.023469590299176588,0.0,0.0
+13000,0.7308221225574792,0.2691778774425208,0.0,0.0,0.0
+13100,0.7078468732197594,0.29013966583468265,0.0020134609455580207,0.0,0.0
+13200,0.6733066267566893,0.31758939519403456,0.009103978049276052,0.0,0.0
+13300,0.6424002933511136,0.3395502916425309,0.018049415006355464,0.0,0.0
+13400,0.6277259270108071,0.34642290637160944,0.025851166617583233,0.0,0.0
+13500,0.6140513409964964,0.35389099781976713,0.0320576611837364,0.0,0.0
+13600,0.6794315015474058,0.26051551349598256,0.060052984956611585,0.0,0.0
+13700,0.7962452793692778,0.11212313958508732,0.09163158104563489,0.0,0.0
+13800,0.8397693155468265,0.05799177522953941,0.10223890922363398,0.0,0.0
+13900,0.8528169033359253,0.042148892884700084,0.10503420377937463,0.0,0.0
+14000,0.8570979526896809,0.03812194471057233,0.10478010259974681,0.0,0.0
+14100,0.8567993601117825,0.03908767881914866,0.10317332770110642,0.0,0.0009396333679624615
+14200,0.8525182784362643,0.04289827966410206,0.09996872208983466,0.0,0.004614719809799117
+14300,0.8489305447242681,0.044882038223509425,0.09667529828220724,0.0,0.009512118770015286
+14400,0.844808996089073,0.04691334724852412,0.09395756790048347,0.0,0.01432008876191955
+14500,0.8362064246718914,0.05348101057359946,0.0906913401395071,0.0,0.019621224615002014
+14600,0.8157335430704618,0.0676873180169075,0.08846520595863652,0.0,0.02811393295399422
+14700,0.7596003107054847,0.09254773589557468,0.10165032186277995,0.0,0.046201631536160616
+14800,0.6458501888238665,0.11360633049601711,0.15885917120948542,0.0,0.08168430947063103
+14900,0.6063192494637748,0.06498581299630386,0.2366385564007876,0.0,0.09205638113913382
+15000,0.6197214075387723,0.013132741040941292,0.2881733549565364,0.0,0.07897249646375022
+15100,0.6051073473092271,0.0,0.33543149655790194,0.0,0.059461156132871
+15200,0.5755013352142881,0.0,0.39166655255172333,0.0,0.03283211223398856
+15300,0.5478949537993961,0.0,0.4446702993575038,0.0,0.007434746843100164
+15400,0.5424884592432313,0.0,0.4575115407567687,0.0,0.0
+15500,0.6058730065420979,0.0,0.3941269934579023,0.0,0.0
+15600,0.7852929073590169,0.0,0.21470709264098295,0.0,0.0
+15700,0.9227086188495546,0.0,0.0772913811504454,0.0,0.0
+15800,0.9876355573536925,0.0,0.012364442646307528,0.0,0.0
+15900,1.0,0.0,0.0,0.0,0.0
+16000,0.9992421921405124,0.0,0.0,0.0,0.0007578078594875424
+16100,0.9962090924997201,0.0,0.0,0.0,0.0037909075002797938
+16200,0.9920037649504212,0.0,0.0,0.0,0.007996235049578804
+16300,0.9876616227995499,0.0,0.0,0.0,0.01233837720045009
+16400,0.982524706577939,0.0,0.0,0.0,0.01747529342206093
+16500,0.9673400919863004,0.007914793827904434,0.0,0.0,0.024745114185795048
+16600,0.9231891466726792,0.04730941636654984,0.0,0.0,0.029501436960770986
+16700,0.8836970794645483,0.08981738233247105,0.0,0.0,0.026485538202980656
+16800,0.881186711564442,0.09978053203906372,0.0,0.0,0.019032756396494377
+16900,0.8861714469705626,0.10034497490272609,0.0,0.0,0.01348357812671143
+17000,0.8904112717056937,0.1008250683520164,0.0,0.0,0.00876365994229006
+17100,0.894543600179617,0.1012929895408825,0.0,0.0,0.004163410279500617
+17200,0.8975350807981758,0.10163172765822703,0.0,0.0,0.0008331915435970591
+17300,0.8982835230333199,0.10171647696668017,0.0,0.0,0.0
+17400,0.8205800937724842,0.17941990622751589,0.0,0.0,0.0
+17500,0.5461856270297052,0.4538143729702948,0.0,0.0,0.0
+17600,0.28094786933956584,0.7190521306604342,0.0,0.0,0.0
+17700,0.13450537873403065,0.8654946212659694,0.0,0.0,0.0
+17800,0.10485906868474756,0.8951409313152524,0.0,0.0,0.0
+17900,0.10485906868474756,0.8951409313152525,0.0,0.0,0.0
+18000,0.10485906868474756,0.8951409313152525,0.0,0.0,0.0
+18100,0.10485906868474755,0.8951409313152524,0.0,0.0,0.0
+18200,0.10485906868474755,0.8951409313152524,0.0,0.0,0.0
+18300,0.10485906868474758,0.8951409313152524,0.0,0.0,0.0
+18400,0.179848860328383,0.8022090624592212,0.017942077212395924,0.0,0.0
+18500,0.5030102983527591,0.40172793403410006,0.09526176761314083,0.0,0.0
+18600,0.7756648319268451,0.06383800526190982,0.16049716281124501,0.0,0.0
+18700,0.8271778249664253,0.0,0.17282217503357472,0.0,0.0
+18800,0.8246681184334611,0.0030340592520912753,0.17229782231444754,0.0,0.0
+18900,0.8153822421034583,0.01426003273654698,0.17035772515999467,0.0,0.0
+19000,0.8030380418784885,0.029183305402216995,0.1677786527192945,0.0,0.0
+19100,0.7922699733929708,0.04220114529166855,0.16552888131536064,0.0,0.0
+19200,0.7799584233803661,0.05708494613957504,0.1629566304800589,0.0,0.0
+19300,0.7499196477147629,0.08955264877828933,0.1605277035069479,0.0,0.0
+19400,0.6798002746288246,0.15296733727809203,0.16723238809308336,0.0,0.0
+19500,0.5281418647010037,0.2807457379713177,0.1911123973276786,0.0,0.0
+19600,0.25746929385357753,0.4962746956241843,0.24625601052223825,0.0,0.0
+19700,0.13870460235567766,0.5647988919979958,0.29649650564632646,0.0,0.0
+19800,0.15191358922945633,0.5233542273983925,0.3247321833721511,0.0,0.0
+19900,0.1647994798559833,0.48292331318923887,0.35227720695477777,0.0,0.0
+20000,0.1785710200258195,0.4397135750910171,0.38171540488316336,0.0,0.0
+20100,0.18847522309733353,0.4086380370238166,0.40288673987884976,0.0,0.0
+20200,0.19432655895584683,0.3902788203455778,0.4153946206985753,0.0,0.0
+20300,0.2551920298476542,0.36183358096217705,0.3829743891901687,0.0,0.0
+20400,0.5182301530771317,0.2803352545709629,0.20143459235190533,0.0,0.0
+20500,0.7407067188031159,0.226784049165284,0.03250923203160011,0.0,0.0
+20600,0.8137269806705345,0.1862730193294655,0.0,0.0,0.0
+20700,0.8376461150159363,0.16235388498406356,0.0,0.0,0.0
+20800,0.8470459031334931,0.15295409686650674,0.0,0.0,0.0
+20900,0.8559950325998618,0.14400496740013824,0.0,0.0,0.0
+21000,0.8753182018593336,0.12468179814066627,0.0,0.0,0.0
+21100,0.9055415649696986,0.09445843503030138,0.0,0.0,0.0
+21200,0.9448368044844614,0.055163195515538686,0.0,0.0,0.0
+21300,0.9849380278519363,0.01506197214806369,0.0,0.0,0.0
+21400,1.0,0.0,0.0,0.0,0.0
+21500,1.0,0.0,0.0,0.0,0.0
+21600,0.9229476059274757,0.07705239407252425,0.0,0.0,0.0
+21700,0.7158978274409215,0.2841021725590785,0.0,0.0,0.0
+21800,0.5480543409022424,0.45194565909775775,0.0,0.0,0.0
+21900,0.4376981234052498,0.529041769184696,0.0,0.0,0.03326010741005402
+22000,0.33999824354032393,0.520965568730746,0.0,0.0,0.13903618772893017
+22100,0.25228434988739395,0.49004924963596197,0.0,0.0,0.25766640047664396
+22200,0.16657850934091512,0.4742649932805241,0.0,0.0,0.3591564973785608
+22300,0.08129341258918366,0.4809462470035628,0.0,0.0,0.4377603404072535
+22400,0.017211229771466698,0.48402468220504113,0.0,0.0,0.49876408802349215
+22500,0.0,0.4467226704738267,0.0,0.0,0.5532773295261733
+22600,0.0,0.3592194492561113,0.0,0.0,0.6407805507438887
+22700,0.0,0.2215143639895472,0.0,0.0,0.7784856360104528
+22800,0.0,0.06281881039191589,0.0,0.0,0.9371811896080842
+22900,0.0,0.0,0.0,0.0,1.0
+23000,0.0,0.0,0.0,0.0,1.0
+23100,0.7930020842312598,0.0,0.16353951087454607,0.0,0.04345840489419418
+23200,0.8290304240701039,0.0,0.17096957592989617,0.0,0.0
+23300,0.8290304240701039,0.0,0.17096957592989617,0.0,0.0
+23400,0.829030424070104,0.0,0.17096957592989617,0.0,0.0
+23500,0.8290304240701039,0.0,0.17096957592989617,0.0,0.0
+23600,0.8290304240701039,0.0,0.17096957592989617,0.0,0.0
+23700,0.8290304240701039,0.0,0.17096957592989614,0.0,0.0
+23800,0.8290304240701039,0.0,0.17096957592989617,0.0,0.0
+23900,0.8277030958079375,0.0,0.1706958432133232,0.0,0.001601060978739302
+24000,0.8210957506246037,0.0,0.1693332213224751,0.0,0.009571028052921303
+24100,0.8053276259401547,0.0,0.16608138699620914,0.0,0.028590987063636043
+24200,0.760827212537301,0.0,0.15690414019404883,0.0,0.08226864726865021
+24300,0.5382634098277161,0.0,0.11100517453270525,0.0,0.3507314156395786
+24400,0.0,0.0,0.0,0.0,1.0
+24500,0.0,0.0,0.0,0.0,1.0
+24600,0.0,0.13356461546776985,0.0,0.0,0.8664353845322302
+24700,0.0,0.45342600132997246,0.0,0.0,0.5465739986700276
+24800,0.0,0.662771070806808,0.0,0.0,0.33722892919319203
+24900,0.0,0.7577259341338782,0.0,0.0,0.24227406586612188
+25000,0.0,0.7988226137885761,0.0,0.0,0.20117738621142384
+25100,0.0,0.8091209280058692,0.0,0.0,0.19087907199413076
+25200,0.0,0.7945770924874018,0.0,0.0,0.20542290751259826
+25300,0.0,0.7827797329243276,0.0,0.0,0.2172202670756725
+25400,0.0,0.770500544466541,0.0,0.0,0.2294994555334589
+25500,0.0,0.7397623780934619,0.0,0.0,0.260237621906538
+25600,0.0,0.6755034149170119,0.0,0.0,0.3244965850829881
+25700,0.0,0.5419506454578414,0.0,0.0,0.4580493545421585
+25800,0.0,0.2536698137397643,0.0,0.0,0.7463301862602356
+25900,0.0,0.0,0.0,0.0,1.0
+26000,0.6515838345268554,0.0,0.0,0.0,0.34841616547314463
+26100,1.0,0.0,0.0,0.0,0.0
+26200,1.0,0.0,0.0,0.0,0.0
+26300,1.0,0.0,0.0,0.0,0.0
+26400,0.9499870471022627,0.0,0.050012952897737196,0.0,0.0
+26500,0.7842774119378794,0.0,0.2157225880621206,0.0,0.0
+26600,0.6536734339490695,0.0,0.34632656605093054,0.0,0.0
+26700,0.6025745455935086,0.0,0.39742545440649135,0.0,0.0
+26800,0.5815785708179481,0.0,0.41842142918205205,0.0,0.0
+26900,0.5672503947550229,0.0,0.43274960524497696,0.0,0.0
+27000,0.553355078745513,0.0,0.4466449212544869,0.0,0.0
+27100,0.5376279301549297,0.0,0.4623720698450703,0.0,0.0
+27200,0.5328814966910361,0.0,0.4671185033089638,0.0,0.0
+27300,0.550527583107582,0.0,0.449472416892418,0.0,0.0
+27400,0.5840589595012952,0.0,0.4159410404987048,0.0,0.0
+27500,0.6403966885369163,0.0,0.3596033114630836,0.0,0.0
+27600,0.7456706970370784,0.0,0.2543293029629216,0.0,0.0
+27700,0.9081529485664911,0.0,0.09184705143350885,0.0,0.0
+27800,1.0,0.0,0.0,0.0,0.0
+27900,0.4506003479212809,0.0,0.5493996520787191,0.0,0.0
+28000,0.22344806363049838,0.0,0.7765519363695017,0.0,0.0
+28100,0.19193628723356818,0.0,0.8080637127664319,0.0,0.0
+28200,0.18850694826261968,0.0,0.8114930517373804,0.0,0.0
+28300,0.18850694826261966,0.0,0.8114930517373803,0.0,0.0
+28400,0.18850694826261968,0.0,0.8114930517373803,0.0,0.0
+28500,0.18850694826261966,0.0,0.8114930517373804,0.0,0.0
+28600,0.18850694826261966,0.0,0.8114930517373803,0.0,0.0
+28700,0.18850694826261968,0.0,0.8114930517373804,0.0,0.0
+28800,0.1931552770066706,0.0,0.8057791687091691,0.0,0.0010655542841602845
+28900,0.2212042077197363,0.0,0.771300473680128,0.0,0.0074953186001358255
+29000,0.31150888769441853,0.0,0.6602949044342432,0.0,0.028196207871338298
+29100,0.602590667458538,0.0,0.30248732825014935,0.0,0.09492200429131264
+29200,0.8486686035440654,0.0,0.0,0.0,0.1513313964559347
+29300,0.8486686035440653,0.0,0.0,0.0,0.1513313964559347
+29400,0.8486686035440653,0.0,0.0,0.0,0.15133139645593469
+29500,0.8486686035440653,0.0,0.0,0.0,0.15133139645593469
+29600,0.8486686035440653,0.0,0.0,0.0,0.15133139645593469
+29700,0.8486686035440654,0.0,0.0,0.0,0.1513313964559347
+29800,0.8486686035440654,0.0,0.0,0.0,0.15133139645593469
diff --git a/src/main/resources/mode_share_per_dist_ref.csv b/src/main/resources/mode_share_per_dist_ref.csv
new file mode 100644
index 0000000..a9d1fe3
--- /dev/null
+++ b/src/main/resources/mode_share_per_dist_ref.csv
@@ -0,0 +1,31 @@
+dist_group,main_mode,share
+0 - 1000,bike,0.12912909774058592
+0 - 1000,car,0.16479606831482882
+0 - 1000,pt,0.022371238960634685
+0 - 1000,ride,0.04687537253321555
+0 - 1000,walk,0.6368282224507349
+1000 - 2000,bike,0.17486145211422632
+1000 - 2000,car,0.2735509467266366
+1000 - 2000,pt,0.08577318666391134
+1000 - 2000,ride,0.0992362566148718
+1000 - 2000,walk,0.36657815788035386
+2000 - 5000,bike,0.1912057791779161
+2000 - 5000,car,0.4931026165019779
+2000 - 5000,pt,0.12831169343824522
+2000 - 5000,ride,0.08820279589739154
+2000 - 5000,walk,0.09917711498446925
+5000 - 10000,bike,0.06464288026408263
+5000 - 10000,car,0.6133031535690353
+5000 - 10000,pt,0.15969105300335723
+5000 - 10000,ride,0.14860268751628852
+5000 - 10000,walk,0.013760225647236298
+10000 - 20000,bike,0.008178525757609795
+10000 - 20000,car,0.6793347717024805
+10000 - 20000,pt,0.16869421957755085
+10000 - 20000,ride,0.14282453656740268
+10000 - 20000,walk,0.0009679463949563106
+20000+,bike,0.028935416412438665
+20000+,car,0.5994742567653025
+20000+,pt,0.09072360898880984
+20000+,ride,0.28086671783344896
+20000+,walk,0.0
diff --git a/src/main/resources/mode_share_per_group_dist_ref.csv b/src/main/resources/mode_share_per_group_dist_ref.csv
new file mode 100644
index 0000000..2d10222
--- /dev/null
+++ b/src/main/resources/mode_share_per_group_dist_ref.csv
@@ -0,0 +1,361 @@
+age,economic_status,dist_group,main_mode,share
+,,0 - 1000,bike,0.032655612691786885
+,,0 - 1000,car,0.04167547573846994
+,,0 - 1000,pt,0.005657489502494098
+,,0 - 1000,ride,0.01185436928633314
+,,0 - 1000,walk,0.16104825440140907
+,,1000 - 2000,bike,0.023255454766641575
+,,1000 - 2000,car,0.03638052635990729
+,,1000 - 2000,pt,0.011407285245179609
+,,1000 - 2000,ride,0.013197787442657472
+,,1000 - 2000,walk,0.048752550467535516
+,,2000 - 5000,bike,0.04087923269708797
+,,2000 - 5000,car,0.10542388776215117
+,,2000 - 5000,pt,0.027432662319995728
+,,2000 - 5000,ride,0.01885749810244058
+,,2000 - 5000,walk,0.021203775215933595
+,,5000 - 10000,bike,0.011942672065260576
+,,5000 - 10000,car,0.11330680826322677
+,,5000 - 10000,pt,0.029502674849636906
+,,5000 - 10000,ride,0.027454116490064653
+,,5000 - 10000,walk,0.0025421803882745542
+,,10000 - 20000,bike,0.0012090143890638972
+,,10000 - 20000,car,0.10042464110546154
+,,10000 - 20000,pt,0.02493771431011178
+,,10000 - 20000,ride,0.021113453076882904
+,,10000 - 20000,walk,0.00014308949485863318
+,,20000+,bike,0.001960136426682156
+,,20000+,car,0.04060944936112114
+,,20000+,pt,0.006145778177313169
+,,20000+,ride,0.01902640960201765
+,,20000+,walk,0.0
+0 - 12,,0 - 1000,bike,0.03462130683537337
+0 - 12,,0 - 1000,car,0.0
+0 - 12,,0 - 1000,pt,0.002929940498697246
+0 - 12,,0 - 1000,ride,0.04813466959921054
+0 - 12,,0 - 1000,walk,0.1936758201574987
+0 - 12,,1000 - 2000,bike,0.03684881841911733
+0 - 12,,1000 - 2000,car,0.006200174470748215
+0 - 12,,1000 - 2000,pt,0.016491292803213813
+0 - 12,,1000 - 2000,ride,0.03341071030511212
+0 - 12,,1000 - 2000,walk,0.05164554849741785
+0 - 12,,2000 - 5000,bike,0.027723151002977574
+0 - 12,,2000 - 5000,car,0.0
+0 - 12,,2000 - 5000,pt,0.05605210375529834
+0 - 12,,2000 - 5000,ride,0.06042596335280004
+0 - 12,,2000 - 5000,walk,0.021762628055962296
+0 - 12,,5000 - 10000,bike,0.015928917540458578
+0 - 12,,5000 - 10000,car,0.006200174470748215
+0 - 12,,5000 - 10000,pt,0.0770469202248743
+0 - 12,,5000 - 10000,ride,0.09344088929268825
+0 - 12,,5000 - 10000,walk,0.0
+0 - 12,,10000 - 20000,bike,0.003009045044028792
+0 - 12,,10000 - 20000,car,0.006200174470748215
+0 - 12,,10000 - 20000,pt,0.04388628244109129
+0 - 12,,10000 - 20000,ride,0.09326431519064596
+0 - 12,,10000 - 20000,walk,0.0
+0 - 12,,20000+,bike,0.0
+0 - 12,,20000+,car,0.0
+0 - 12,,20000+,pt,0.020102133436019427
+0 - 12,,20000+,ride,0.05099902013526958
+0 - 12,,20000+,walk,0.0
+12 - 18,,0 - 1000,bike,
+12 - 18,,0 - 1000,car,
+12 - 18,,0 - 1000,pt,
+12 - 18,,0 - 1000,ride,
+12 - 18,,0 - 1000,walk,
+12 - 18,,1000 - 2000,bike,
+12 - 18,,1000 - 2000,car,
+12 - 18,,1000 - 2000,pt,
+12 - 18,,1000 - 2000,ride,
+12 - 18,,1000 - 2000,walk,
+12 - 18,,2000 - 5000,bike,
+12 - 18,,2000 - 5000,car,
+12 - 18,,2000 - 5000,pt,
+12 - 18,,2000 - 5000,ride,
+12 - 18,,2000 - 5000,walk,
+12 - 18,,5000 - 10000,bike,
+12 - 18,,5000 - 10000,car,
+12 - 18,,5000 - 10000,pt,
+12 - 18,,5000 - 10000,ride,
+12 - 18,,5000 - 10000,walk,
+12 - 18,,10000 - 20000,bike,
+12 - 18,,10000 - 20000,car,
+12 - 18,,10000 - 20000,pt,
+12 - 18,,10000 - 20000,ride,
+12 - 18,,10000 - 20000,walk,
+12 - 18,,20000+,bike,
+12 - 18,,20000+,car,
+12 - 18,,20000+,pt,
+12 - 18,,20000+,ride,
+12 - 18,,20000+,walk,
+18 - 25,,0 - 1000,bike,0.013604706591717952
+18 - 25,,0 - 1000,car,0.057943125977866335
+18 - 25,,0 - 1000,pt,0.03254772169940303
+18 - 25,,0 - 1000,ride,0.0
+18 - 25,,0 - 1000,walk,0.12301874016645298
+18 - 25,,1000 - 2000,bike,0.0067808627374395004
+18 - 25,,1000 - 2000,car,0.02158945337317105
+18 - 25,,1000 - 2000,pt,0.016407675891208128
+18 - 25,,1000 - 2000,ride,0.04110415429485755
+18 - 25,,1000 - 2000,walk,0.030108128909029173
+18 - 25,,2000 - 5000,bike,0.035440645416214896
+18 - 25,,2000 - 5000,car,0.11102552544673201
+18 - 25,,2000 - 5000,pt,0.017330508910233532
+18 - 25,,2000 - 5000,ride,0.0
+18 - 25,,2000 - 5000,walk,0.033167450334002854
+18 - 25,,5000 - 10000,bike,0.0
+18 - 25,,5000 - 10000,car,0.19858419006858832
+18 - 25,,5000 - 10000,pt,0.018433660174302206
+18 - 25,,5000 - 10000,ride,0.0
+18 - 25,,5000 - 10000,walk,0.0
+18 - 25,,10000 - 20000,bike,0.0
+18 - 25,,10000 - 20000,car,0.06301272622061059
+18 - 25,,10000 - 20000,pt,0.06142877343008406
+18 - 25,,10000 - 20000,ride,0.023374160899891375
+18 - 25,,10000 - 20000,walk,0.0
+18 - 25,,20000+,bike,0.0
+18 - 25,,20000+,car,0.08546133366715526
+18 - 25,,20000+,pt,0.009636455791039219
+18 - 25,,20000+,ride,0.0
+18 - 25,,20000+,walk,0.0
+25 - 35,,0 - 1000,bike,0.048584035348115694
+25 - 35,,0 - 1000,car,0.07629284648315279
+25 - 35,,0 - 1000,pt,0.0
+25 - 35,,0 - 1000,ride,0.008478770885354068
+25 - 35,,0 - 1000,walk,0.10819976828123475
+25 - 35,,1000 - 2000,bike,0.012079328341428476
+25 - 35,,1000 - 2000,car,0.025539703969328635
+25 - 35,,1000 - 2000,pt,0.0
+25 - 35,,1000 - 2000,ride,0.0
+25 - 35,,1000 - 2000,walk,0.0
+25 - 35,,2000 - 5000,bike,0.015203797198350804
+25 - 35,,2000 - 5000,car,0.14426412892065296
+25 - 35,,2000 - 5000,pt,0.024456951245099057
+25 - 35,,2000 - 5000,ride,0.0
+25 - 35,,2000 - 5000,walk,0.010994160318244154
+25 - 35,,5000 - 10000,bike,0.03857665381263352
+25 - 35,,5000 - 10000,car,0.1550356125953844
+25 - 35,,5000 - 10000,pt,0.0424094158934312
+25 - 35,,5000 - 10000,ride,0.0
+25 - 35,,5000 - 10000,walk,0.0
+25 - 35,,10000 - 20000,bike,0.0
+25 - 35,,10000 - 20000,car,0.20085503769837926
+25 - 35,,10000 - 20000,pt,0.0
+25 - 35,,10000 - 20000,ride,0.0
+25 - 35,,10000 - 20000,walk,0.0
+25 - 35,,20000+,bike,0.0
+25 - 35,,20000+,car,0.0356263387679865
+25 - 35,,20000+,pt,0.003011559277751602
+25 - 35,,20000+,ride,0.05039189096347213
+25 - 35,,20000+,walk,0.0
+35 - 66,,0 - 1000,bike,0.028454177631784226
+35 - 66,,0 - 1000,car,0.050082598903352316
+35 - 66,,0 - 1000,pt,0.000200485465783019
+35 - 66,,0 - 1000,ride,0.0047867063014041065
+35 - 66,,0 - 1000,walk,0.14078999399647754
+35 - 66,,1000 - 2000,bike,0.0238023896993887
+35 - 66,,1000 - 2000,car,0.053146080991117325
+35 - 66,,1000 - 2000,pt,0.0023899839659059625
+35 - 66,,1000 - 2000,ride,0.0024406106656124867
+35 - 66,,1000 - 2000,walk,0.03818322708683438
+35 - 66,,2000 - 5000,bike,0.06427900421100831
+35 - 66,,2000 - 5000,car,0.1366230101547643
+35 - 66,,2000 - 5000,pt,0.021201043610705853
+35 - 66,,2000 - 5000,ride,0.024849975236749255
+35 - 66,,2000 - 5000,walk,0.012532576273285606
+35 - 66,,5000 - 10000,bike,0.011643463897969294
+35 - 66,,5000 - 10000,car,0.11796619039094716
+35 - 66,,5000 - 10000,pt,0.02315209239460174
+35 - 66,,5000 - 10000,ride,0.006904974000377063
+35 - 66,,5000 - 10000,walk,0.006242206944093276
+35 - 66,,10000 - 20000,bike,0.0006010641021893181
+35 - 66,,10000 - 20000,car,0.1417363001055975
+35 - 66,,10000 - 20000,pt,0.020247489158749854
+35 - 66,,10000 - 20000,ride,0.006874520930820874
+35 - 66,,10000 - 20000,walk,0.00035134966918677
+35 - 66,,20000+,bike,0.0021057600353812838
+35 - 66,,20000+,car,0.05357653931312183
+35 - 66,,20000+,pt,0.0015583646008854083
+35 - 66,,20000+,ride,0.003277820261904997
+35 - 66,,20000+,walk,0.0
+66+,,0 - 1000,bike,0.04694841650662733
+66+,,0 - 1000,car,0.012437373515111578
+66+,,0 - 1000,pt,0.0
+66+,,0 - 1000,ride,0.01361065128207483
+66+,,0 - 1000,walk,0.261332110098921
+66+,,1000 - 2000,bike,0.03531574415630489
+66+,,1000 - 2000,car,0.04252690730420425
+66+,,1000 - 2000,pt,0.03338080003092814
+66+,,1000 - 2000,ride,0.006805325641037415
+66+,,1000 - 2000,walk,0.12789616688501126
+66+,,2000 - 5000,bike,0.019825840163633077
+66+,,2000 - 5000,car,0.07913357521583811
+66+,,2000 - 5000,pt,0.031371989040531977
+66+,,2000 - 5000,ride,0.0033211180220941395
+66+,,2000 - 5000,walk,0.03844254395878124
+66+,,5000 - 10000,bike,0.0
+66+,,5000 - 10000,car,0.07495593621094332
+66+,,5000 - 10000,pt,0.006950033100013916
+66+,,5000 - 10000,ride,0.07160124944968926
+66+,,5000 - 10000,walk,0.0
+66+,,10000 - 20000,bike,0.0033249579873575598
+66+,,10000 - 20000,car,0.03327054170106392
+66+,,10000 - 20000,pt,0.005823229062297925
+66+,,10000 - 20000,ride,0.011747756290565169
+66+,,10000 - 20000,walk,0.0
+66+,,20000+,bike,0.006583506841562374
+66+,,20000+,car,0.0031801118860695556
+66+,,20000+,pt,0.005149148204184368
+66+,,20000+,ride,0.02506496744515332
+66+,,20000+,walk,0.0
+,very_low,0 - 1000,bike,0.059263347454401545
+,very_low,0 - 1000,car,0.050018329450972066
+,very_low,0 - 1000,pt,0.039248456151229405
+,very_low,0 - 1000,ride,0.029616149312786045
+,very_low,0 - 1000,walk,0.1955560304409704
+,very_low,1000 - 2000,bike,0.03553310167461729
+,very_low,1000 - 2000,car,0.065394704041032
+,very_low,1000 - 2000,pt,0.035404100615218016
+,very_low,1000 - 2000,ride,0.008636818775975209
+,very_low,1000 - 2000,walk,0.06715920215150006
+,very_low,2000 - 5000,bike,0.10410396243008477
+,very_low,2000 - 5000,car,0.018387914660647812
+,very_low,2000 - 5000,pt,0.024745558093554176
+,very_low,2000 - 5000,ride,0.0
+,very_low,2000 - 5000,walk,0.016229323181254633
+,very_low,5000 - 10000,bike,0.0027478975491454704
+,very_low,5000 - 10000,car,0.06243547712148473
+,very_low,5000 - 10000,pt,0.021748564729667717
+,very_low,5000 - 10000,ride,0.050328735987315715
+,very_low,5000 - 10000,walk,0.0
+,very_low,10000 - 20000,bike,0.0
+,very_low,10000 - 20000,car,0.0169940311294867
+,very_low,10000 - 20000,pt,0.03956714361567764
+,very_low,10000 - 20000,ride,0.02362755833712242
+,very_low,10000 - 20000,walk,0.0
+,very_low,20000+,bike,0.006328839148198335
+,very_low,20000+,car,0.006192206936780367
+,very_low,20000+,pt,0.020732547010877424
+,very_low,20000+,ride,0.0
+,very_low,20000+,walk,0.0
+,low,0 - 1000,bike,0.02602107645397671
+,low,0 - 1000,car,0.0028528089160978175
+,low,0 - 1000,pt,0.0025376891912793405
+,low,0 - 1000,ride,0.0012995217164520137
+,low,0 - 1000,walk,0.19653900472017036
+,low,1000 - 2000,bike,0.024669109843348008
+,low,1000 - 2000,car,0.03047479514683615
+,low,1000 - 2000,pt,0.009795603449455018
+,low,1000 - 2000,ride,0.0
+,low,1000 - 2000,walk,0.036107390421726275
+,low,2000 - 5000,bike,0.01619087940538215
+,low,2000 - 5000,car,0.11441326502195509
+,low,2000 - 5000,pt,0.02674542306125783
+,low,2000 - 5000,ride,0.0484447449700893
+,low,2000 - 5000,walk,0.01951621980371592
+,low,5000 - 10000,bike,0.0021613344344777576
+,low,5000 - 10000,car,0.0391062575253225
+,low,5000 - 10000,pt,0.03877081152493894
+,low,5000 - 10000,ride,0.0039990776097198494
+,low,5000 - 10000,walk,0.0066416083322139805
+,low,10000 - 20000,bike,0.0021613344344777576
+,low,10000 - 20000,car,0.17954924153362414
+,low,10000 - 20000,pt,0.05094665202001079
+,low,10000 - 20000,ride,0.0325738046513467
+,low,10000 - 20000,walk,0.0007591348719356247
+,low,20000+,bike,0.002870311895546186
+,low,20000+,car,0.053617762448029814
+,low,20000+,pt,0.0
+,low,20000+,ride,0.031235136596614105
+,low,20000+,walk,0.0
+,medium,0 - 1000,bike,0.024035631525462564
+,medium,0 - 1000,car,0.03963753397623261
+,medium,0 - 1000,pt,0.0
+,medium,0 - 1000,ride,0.007963023066794315
+,medium,0 - 1000,walk,0.1639450698396611
+,medium,1000 - 2000,bike,0.023750801344622145
+,medium,1000 - 2000,car,0.03845722663165022
+,medium,1000 - 2000,pt,0.00570778023210168
+,medium,1000 - 2000,ride,0.014375683378411601
+,medium,1000 - 2000,walk,0.0518110397156877
+,medium,2000 - 5000,bike,0.027559184758656163
+,medium,2000 - 5000,car,0.1326998120822968
+,medium,2000 - 5000,pt,0.03063361858134014
+,medium,2000 - 5000,ride,0.014014274588102251
+,medium,2000 - 5000,walk,0.025036725152472093
+,medium,5000 - 10000,bike,0.012939290007213273
+,medium,5000 - 10000,car,0.15094863643143452
+,medium,5000 - 10000,pt,0.019088835232119777
+,medium,5000 - 10000,ride,0.02717842035164309
+,medium,5000 - 10000,walk,0.002346149748928132
+,medium,10000 - 20000,bike,0.0005259896789741433
+,medium,10000 - 20000,car,0.09920959434370945
+,medium,10000 - 20000,pt,0.015419168108928242
+,medium,10000 - 20000,ride,0.01686793509998323
+,medium,10000 - 20000,walk,0.0
+,medium,20000+,bike,0.00028365092566240516
+,medium,20000+,car,0.03414517815388737
+,medium,20000+,pt,0.002699106709655552
+,medium,20000+,ride,0.018720640334369418
+,medium,20000+,walk,0.0
+,high,0 - 1000,bike,0.04230464152023348
+,high,0 - 1000,car,0.07941971299157953
+,high,0 - 1000,pt,0.0
+,high,0 - 1000,ride,0.020384321859898653
+,high,0 - 1000,walk,0.10032126547193893
+,high,1000 - 2000,bike,0.012623608304544905
+,high,1000 - 2000,car,0.02096645048051166
+,high,1000 - 2000,pt,0.011391119209553656
+,high,1000 - 2000,ride,0.027386185540588765
+,high,1000 - 2000,walk,0.04577603647131147
+,high,2000 - 5000,bike,0.051777105300834056
+,high,2000 - 5000,car,0.0959697269977337
+,high,2000 - 5000,pt,0.015535718788744272
+,high,2000 - 5000,ride,0.015602720524648938
+,high,2000 - 5000,walk,0.01655745618936334
+,high,5000 - 10000,bike,0.01566433986404102
+,high,5000 - 10000,car,0.12714513048328988
+,high,5000 - 10000,pt,0.040723302297324605
+,high,5000 - 10000,ride,0.03334762370639756
+,high,5000 - 10000,walk,0.0010124198893556656
+,high,10000 - 20000,bike,0.0028409095226449963
+,high,10000 - 20000,car,0.08828129044192509
+,high,10000 - 20000,pt,0.014987853047770497
+,high,10000 - 20000,ride,0.019692230187811462
+,high,10000 - 20000,walk,0.0
+,high,20000+,bike,0.002305847944898742
+,high,20000+,car,0.06441050184365238
+,high,20000+,pt,0.01098853705817676
+,high,20000+,ride,0.022583944061225842
+,high,20000+,walk,0.0
+,very_high,0 - 1000,bike,0.02493374294659139
+,very_high,0 - 1000,car,0.028850811233391005
+,very_high,0 - 1000,pt,0.0
+,very_high,0 - 1000,ride,0.0
+,very_high,0 - 1000,walk,0.12313681230398564
+,very_high,1000 - 2000,bike,0.021426580650879688
+,very_high,1000 - 2000,car,0.0
+,very_high,1000 - 2000,pt,0.0
+,very_high,1000 - 2000,ride,0.0
+,very_high,1000 - 2000,walk,0.0
+,very_high,2000 - 5000,bike,0.06143865871611126
+,very_high,2000 - 5000,car,0.047606549340909
+,very_high,2000 - 5000,pt,0.10046558988798042
+,very_high,2000 - 5000,ride,0.00803272460167074
+,very_high,2000 - 5000,walk,0.02678846270918874
+,very_high,5000 - 10000,bike,0.11456732763854724
+,very_high,5000 - 10000,car,0.13911282362244073
+,very_high,5000 - 10000,pt,0.13541226537558332
+,very_high,5000 - 10000,ride,0.04814104274523737
+,very_high,5000 - 10000,walk,0.0
+,very_high,10000 - 20000,bike,0.0
+,very_high,10000 - 20000,car,0.047606549340909
+,very_high,10000 - 20000,pt,0.0
+,very_high,10000 - 20000,ride,0.00803272460167074
+,very_high,10000 - 20000,walk,0.0
+,very_high,20000+,bike,0.0
+,very_high,20000+,car,0.06444733428490364
+,very_high,20000+,pt,0.0
+,very_high,20000+,ride,0.0
+,very_high,20000+,walk,0.0
diff --git a/src/main/resources/mode_share_per_group_ref.csv b/src/main/resources/mode_share_per_group_ref.csv
new file mode 100644
index 0000000..dea5711
--- /dev/null
+++ b/src/main/resources/mode_share_per_group_ref.csv
@@ -0,0 +1,61 @@
+age,economic_status,main_mode,share
+,,bike,0.11190212303652305
+,,car,0.43782078859033785
+,,pt,0.10508360440473129
+,,ride,0.1115036340003964
+,,walk,0.23368984996801137
+0 - 12,,bike,0.11813123884195564
+0 - 12,,car,0.018600523412244642
+0 - 12,,pt,0.21650867315919442
+0 - 12,,ride,0.3796755678757265
+0 - 12,,walk,0.2670839967108789
+12 - 18,,bike,
+12 - 18,,car,
+12 - 18,,pt,
+12 - 18,,ride,
+12 - 18,,walk,
+18 - 25,,bike,0.05582621474537234
+18 - 25,,car,0.5376163547541235
+18 - 25,,pt,0.15578479589627015
+18 - 25,,ride,0.06447831519474892
+18 - 25,,walk,0.186294319409485
+25 - 35,,bike,0.11444381470052847
+25 - 35,,car,0.6376136684348844
+25 - 35,,pt,0.06987792641628185
+25 - 35,,ride,0.058870661848826174
+25 - 35,,walk,0.11919392859947889
+35 - 66,,bike,0.13088585957772117
+35 - 66,,car,0.5531307198589006
+35 - 66,,pt,0.06874945919663185
+35 - 66,,ride,0.04913460739686878
+35 - 66,,walk,0.19809935396987763
+66+,,bike,0.11199846565548525
+66+,,car,0.24550444583323078
+66+,,pt,0.08267519943795633
+66+,,ride,0.13215106813061414
+66+,,walk,0.4276708209427136
+,very_low,bike,0.2079771482564474
+,very_low,car,0.21942266334040375
+,very_low,pt,0.1814463702162244
+,very_low,ride,0.11220926241319937
+,very_low,walk,0.27894455577372507
+,low,bike,0.07407404646720855
+,low,car,0.42001413059186543
+,low,pt,0.12879617924694192
+,low,ride,0.11755228554422197
+,low,walk,0.2595633581497621
+,medium,bike,0.08909454824059068
+,medium,car,0.4950979816192109
+,medium,pt,0.07354850886414539
+,medium,ride,0.09911997681930391
+,medium,walk,0.243138984456749
+,high,bike,0.1275164524571972
+,high,car,0.4761928132386924
+,high,pt,0.09362653040156979
+,high,ride,0.1389970258805713
+,high,walk,0.16366717802196945
+,very_high,bike,0.2223663099521296
+,very_high,car,0.32762406782255343
+,very_high,pt,0.2358778552635638
+,very_high,ride,0.06420649194857886
+,very_high,walk,0.14992527501317437
diff --git a/src/main/resources/mode_share_per_purpose_ref.csv b/src/main/resources/mode_share_per_purpose_ref.csv
new file mode 100644
index 0000000..e835b2a
--- /dev/null
+++ b/src/main/resources/mode_share_per_purpose_ref.csv
@@ -0,0 +1,45 @@
+purpose,main_mode,share
+work,bike,0.12829343442431387
+work,car,0.6678053123213729
+work,pt,0.09740154909392844
+work,ride,0.003669658614572709
+work,walk,0.10283004554581214
+work_business,bike,0.1330828282653198
+work_business,car,0.5302398286171018
+work_business,pt,0.04513259238355156
+work_business,ride,0.18473144068436537
+work_business,walk,0.10681331004966134
+edu,bike,0.16219462545895066
+edu,car,0.10239273777052954
+edu,pt,0.313503711286145
+edu,ride,0.15835732573967534
+edu,walk,0.2635515997446994
+shopping,bike,0.12308268223339898
+shopping,car,0.43939285816979984
+shopping,pt,0.05603407924611561
+shopping,ride,0.12485798873996942
+shopping,walk,0.2566323916107161
+personal_business,bike,0.11139733160062804
+personal_business,car,0.46318588204277694
+personal_business,pt,0.07060264023401455
+personal_business,ride,0.0547032813224675
+personal_business,walk,0.30011086480011295
+transport,bike,0.02046291975613773
+transport,car,0.6488093270657374
+transport,pt,0.02565736970043922
+transport,ride,0.1688404541316148
+transport,walk,0.13622992934607084
+leisure,bike,0.12222490078517091
+leisure,car,0.2675577935014214
+leisure,pt,0.1307526484410213
+leisure,ride,0.12462345386630395
+leisure,walk,0.35484120340608244
+home,bike,0.11392667678598446
+home,car,0.4167926827625813
+home,pt,0.1197080487198588
+home,ride,0.11929208026161972
+home,walk,0.2302805114699557
+other,bike,0.02949135809823662
+other,car,0.2660422158497593
+other,ride,0.3196873321612578
+other,walk,0.3847790938907463
diff --git a/src/main/resources/mode_share_ref.csv b/src/main/resources/mode_share_ref.csv
new file mode 100644
index 0000000..9fdf17a
--- /dev/null
+++ b/src/main/resources/mode_share_ref.csv
@@ -0,0 +1,31 @@
+dist_group,main_mode,share
+0 - 1000,bike,0.032655612691786885
+0 - 1000,car,0.04167547573846994
+0 - 1000,pt,0.005657489502494098
+0 - 1000,ride,0.01185436928633314
+0 - 1000,walk,0.16104825440140907
+1000 - 2000,bike,0.023255454766641575
+1000 - 2000,car,0.03638052635990729
+1000 - 2000,pt,0.011407285245179609
+1000 - 2000,ride,0.013197787442657472
+1000 - 2000,walk,0.048752550467535516
+2000 - 5000,bike,0.04087923269708797
+2000 - 5000,car,0.10542388776215117
+2000 - 5000,pt,0.027432662319995728
+2000 - 5000,ride,0.01885749810244058
+2000 - 5000,walk,0.021203775215933595
+5000 - 10000,bike,0.011942672065260576
+5000 - 10000,car,0.11330680826322677
+5000 - 10000,pt,0.029502674849636906
+5000 - 10000,ride,0.027454116490064653
+5000 - 10000,walk,0.0025421803882745542
+10000 - 20000,bike,0.0012090143890638972
+10000 - 20000,car,0.10042464110546154
+10000 - 20000,pt,0.02493771431011178
+10000 - 20000,ride,0.021113453076882904
+10000 - 20000,walk,0.00014308949485863318
+20000+,bike,0.001960136426682156
+20000+,car,0.04060944936112114
+20000+,pt,0.006145778177313169
+20000+,ride,0.01902640960201765
+20000+,walk,0.0
diff --git a/src/main/resources/mode_users_ref.csv b/src/main/resources/mode_users_ref.csv
new file mode 100644
index 0000000..c0eae1e
--- /dev/null
+++ b/src/main/resources/mode_users_ref.csv
@@ -0,0 +1,6 @@
+main_mode,user
+car,0.40776296370836873
+pt,0.15979445811167492
+ride,0.159421643909681
+walk,0.3343236566363756
+bike,0.12821581469617516
diff --git a/src/main/resources/trip_purposes_by_hour_ref.csv b/src/main/resources/trip_purposes_by_hour_ref.csv
new file mode 100644
index 0000000..f7a271f
--- /dev/null
+++ b/src/main/resources/trip_purposes_by_hour_ref.csv
@@ -0,0 +1,128 @@
+purpose,h,arrival,departure
+edu,5.0,0.0,0.0010066758595499424
+edu,6.0,0.0010066758595499424,0.005938651343607117
+edu,7.0,0.029679218050283087,0.026552213171177858
+edu,8.0,0.00584336283707712,0.006457398413443605
+edu,9.0,0.005612608219454758,0.0031766314801430265
+edu,10.0,0.000705889256474092,0.0011929390866075612
+edu,11.0,0.001476755131690099,0.0
+edu,12.0,0.0027012430992819454,0.002701243099281946
+edu,16.0,0.0011823538119826234,0.0011823538119826236
+home,7.0,0.0020351565785533088,0.004893997786227104
+home,8.0,0.009507434139176017,0.010579995527826925
+home,9.0,0.011147844881434232,0.012460875495094939
+home,10.0,0.011171747054767296,0.015236853677868659
+home,11.0,0.023755255756952635,0.025166683916077622
+home,12.0,0.02278926172503139,0.02060868921731523
+home,13.0,0.019369257775644858,0.020590292424646803
+home,14.0,0.030009900277635254,0.040047380154416765
+home,15.0,0.05968420553262432,0.05772909706621868
+home,16.0,0.06178076305538192,0.06049565007394254
+home,17.0,0.04907032665955428,0.04299941865451359
+home,18.0,0.03615775118420289,0.033069494262338274
+home,19.0,0.020683295291119293,0.01706069570668245
+home,20.0,0.009596675475197426,0.010473654872996353
+home,21.0,0.01302069642528709,0.013761502555880269
+home,22.0,0.008566082766452258,0.005266557468351896
+home,23.0,0.01010663780713358,0.008011453525750008
+leisure,6.0,0.000343706924421906,0.00034370692442190604
+leisure,7.0,0.0,0.0013632630786120804
+leisure,8.0,0.007331923044845375,0.01087073098379794
+leisure,9.0,0.0072389340680801,0.007619696865194077
+leisure,10.0,0.011821101146239672,0.009110866391943136
+leisure,11.0,0.005638659786634472,0.00648896647703011
+leisure,12.0,0.004842295574272269,0.0067203057607381385
+leisure,13.0,0.006916105676949037,0.009144642355237393
+leisure,14.0,0.011285500403392315,0.004875206704364925
+leisure,15.0,0.005966481110347507,0.007924540617302708
+leisure,16.0,0.014548110252327134,0.01590202729861593
+leisure,17.0,0.007445390354654642,0.00463658219025896
+leisure,18.0,0.008549301093321549,0.011148816816679383
+leisure,19.0,0.010302841434319806,0.013109355399541042
+leisure,20.0,0.007825203705257949,0.001924397430027113
+leisure,21.0,0.001351933235417305,0.0013519332354173053
+leisure,22.0,0.0008821982905786928,0.0
+leisure,23.0,0.0002453524281223939,0.0
+other,7.0,0.0004100574759829251,0.00041005747598292513
+other,8.0,0.0,0.0008112854440616002
+other,9.0,0.0020923903905608957,0.0012811049464992957
+other,10.0,0.0,9.742017821172522e-05
+other,11.0,0.0006327664865277577,0.0005353463083160327
+other,12.0,0.0011623678543739204,0.0011623678543739207
+other,13.0,0.0042673400173989144,0.004267340017398915
+other,14.0,0.0025535587773544456,0.003997814526097546
+other,15.0,0.005147520646106512,0.006411696664192404
+other,16.0,0.003519717210890591,0.0008112854440616002
+other,17.0,0.0008452264278261218,0.0008452264278261219
+other,20.0,0.0008112854440616,0.0008112854440616002
+personal_business,7.0,0.005038630537741188,0.005521969716421303
+personal_business,8.0,0.0025876422683438144,0.00441254920736227
+personal_business,9.0,0.010316317701129762,0.012221707358744109
+personal_business,10.0,0.006975045675260017,0.007175921912657823
+personal_business,11.0,0.008884483599733413,0.007147865412301467
+personal_business,12.0,0.0060790515348731035,0.0071349851676081695
+personal_business,13.0,0.005050895990552616,0.0045459173952910985
+personal_business,14.0,0.011350323131442831,0.01213154235283313
+personal_business,15.0,0.008176687871384878,0.00789111846554184
+personal_business,16.0,0.012543702159770617,0.012920904729280812
+personal_business,17.0,0.008604280126284912,0.004502578878475148
+personal_business,18.0,0.0036445403489671693,0.00364454034896717
+personal_business,19.0,0.0011924381178545634,0.0027026762098350263
+personal_business,20.0,0.0011016815123925951,0.0
+personal_business,21.0,0.00040855657958786747,0.0
+shopping,7.0,0.0035387110701510013,0.0048913945221288
+shopping,8.0,0.005489916278761944,0.004480939751206054
+shopping,9.0,0.005384594554922606,0.010922208502859283
+shopping,10.0,0.02044611875892322,0.017269201244310778
+shopping,11.0,0.006271722034386575,0.003965322426972324
+shopping,12.0,0.008944701023190038,0.010170695937783941
+shopping,13.0,0.011157618570269544,0.009533619905343757
+shopping,14.0,0.003199686878180955,0.0043478066930823156
+shopping,15.0,0.011158508430709221,0.01572377514764552
+shopping,16.0,0.010789514090135741,0.01314956736003393
+shopping,17.0,0.015411740060853345,0.009419841886105867
+shopping,18.0,0.006420153450123696,0.004518266200030046
+shopping,19.0,0.0026609137693665557,0.002660913769366556
+shopping,20.0,0.00034886746437215064,0.00016921308747743486
+shopping,21.0,0.0017776991530254818,0.001777699153025482
+transport,7.0,0.008586735820262242,0.009591106587879823
+transport,8.0,0.007977389890621297,0.007585949531556736
+transport,9.0,0.002875836433383242,0.0025950202351089106
+transport,10.0,0.0009192502932528921,0.0010949310996710671
+transport,11.0,0.00033211421027868287,0.0003827012870107922
+transport,12.0,0.00038270128701079213,0.0024993545613972517
+transport,13.0,0.005211846885192664,0.008039726126583168
+transport,14.0,0.012246237176077649,0.009878713735514343
+transport,15.0,0.018927486775144293,0.019034986454166875
+transport,16.0,0.00862393677117051,0.005703725457242036
+transport,17.0,0.001644527067612416,0.002426348469502075
+transport,18.0,0.0011045009356263826,0.0
+transport,19.0,0.00016293015073022262,0.00016293015073022264
+transport,21.0,0.00023880349628203464,0.00023880349628203467
+work,4.0,0.0,0.005342077253326268
+work,5.0,0.018535485189156244,0.024933998630152703
+work,6.0,0.03133633840513865,0.027178592452605357
+work,7.0,0.030087942229915027,0.03188050502568249
+work,8.0,0.01564682729475896,0.00858890018062947
+work,9.0,0.00938621341053825,0.0070687329871108595
+work,10.0,0.0011503529110912243,0.0011503529110912245
+work,11.0,0.0011671197349637365,0.0015403162668135835
+work,12.0,0.0018820594801401175,0.0019189204242731962
+work,13.0,0.002299474099960888,0.0031013806438413235
+work,14.0,0.0020932920336419617,0.0020068969999309473
+work,15.0,0.0005777315952283887,0.0005777315952283887
+work,16.0,0.0029037383502121487,0.002903738350212149
+work,17.0,0.0017314290888042897,0.0017314290888042901
+work,18.0,0.001555018581939131,0.0004294495957867856
+work,20.0,0.0007487444457459462,0.0007487444457459463
+work,21.0,0.0014465878433901624,0.0014465878433901629
+work_business,7.0,0.0005239499171642066,0.004340876035181247
+work_business,8.0,0.0038169261180170397,0.0010127834708761128
+work_business,9.0,0.0019849852444735624,0.0009722017735974501
+work_business,10.0,0.004913766317918508,0.005113079230491615
+work_business,11.0,0.0020482741211635767,0.0021602093360111713
+work_business,12.0,0.00031124812742070016,0.0
+work_business,13.0,0.0005725094444229527,0.0005725094444229528
+work_business,14.0,0.00372952805356177,0.004005659046788
+work_business,15.0,0.004364640088675771,0.004088509095449544
+work_business,16.0,0.00035911002501243965,0.0003591100250124397
diff --git a/src/test/java/org/matsim/run/RunIntegrationTest.java b/src/test/java/org/matsim/run/RunIntegrationTest.java
index ecbab07..9a11a08 100644
--- a/src/test/java/org/matsim/run/RunIntegrationTest.java
+++ b/src/test/java/org/matsim/run/RunIntegrationTest.java
@@ -1,16 +1,15 @@
package org.matsim.run;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.matsim.application.MATSimApplication;
-import static org.junit.Assert.*;
public class RunIntegrationTest {
@Test
public void runScenario() {
- assert MATSimApplication.execute(RunTemplateScenario.class,
+ assert MATSimApplication.execute(OberlausitzDresdenScenario.class,
"--1pct",
"--iteration", "2") == 0 : "Must return non error code";