diff --git a/config/default.yml b/config/default.yml index 5e8daf241..696ee32dc 100644 --- a/config/default.yml +++ b/config/default.yml @@ -65,3 +65,17 @@ parameter_args: # input_directory: input # input_directory_initial_populations: input/InitialPopulations # euromod_output_directory: input/EUROMODoutput +# includeYears: +# - 2011 +# - 2012 +# - 2013 +# - 2014 +# - 2015 +# - 2016 +# - 2017 +# - 2018 +# - 2019 +# - 2020 +# - 2021 +# - 2022 +# - 2023 diff --git a/config/test_create_database.yml b/config/test_create_database.yml index 882e1c9ce..870eb77ba 100644 --- a/config/test_create_database.yml +++ b/config/test_create_database.yml @@ -8,3 +8,6 @@ randomSeed: 606 startYear: 2019 endYear: 2030 popSize: 40000 + +parameter_args: + trainingFlag: true \ No newline at end of file diff --git a/src/main/java/simpaths/data/Parameters.java b/src/main/java/simpaths/data/Parameters.java index 2858f2f6e..7a54c5a83 100644 --- a/src/main/java/simpaths/data/Parameters.java +++ b/src/main/java/simpaths/data/Parameters.java @@ -289,6 +289,7 @@ else if(numberOfChildren <= 5) { public static final int MAX_AGE_MATERNITY = 44; // Max age a person can give birth public static final boolean FLAG_SINGLE_MOTHERS = true; public static boolean flagUnemployment = false; + public static ArrayList includeYears; public static int BASE_PRICE_YEAR = 2015; // Base price year of model parameters diff --git a/src/main/java/simpaths/data/startingpop/DataParser.java b/src/main/java/simpaths/data/startingpop/DataParser.java index 16a99fdf6..ce8f23f48 100644 --- a/src/main/java/simpaths/data/startingpop/DataParser.java +++ b/src/main/java/simpaths/data/startingpop/DataParser.java @@ -5,11 +5,7 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.Iterator; -import java.util.Set; +import java.util.*; import simpaths.data.FormattedDialogBox; import simpaths.data.Parameters; @@ -31,6 +27,17 @@ public static void createDatabaseForPopulationInitialisationByYearFromCSV(Countr } } + public static void createDatabaseForPopulationInitialisationByYearFromCSV(Country country, String initialInputFilename, ArrayList includeYears, Connection conn) { + + //Initialise repository table for country-year-population size combinations + initialiseRepository(conn, includeYears.get(0)); + + //Construct tables for Simulated Persons & Households (initial population) + for (Integer year: includeYears) { + DataParser.parse(Parameters.getInputDirectoryInitialPopulations() + initialInputFilename + "_" + year + ".csv", initialInputFilename, conn, country, year); + } + } + private static void initialiseRepository(Connection conn, int startYear) { Statement stat = null; @@ -425,8 +432,12 @@ public static void databaseFromCSV(Country country, boolean showGui) { Parameters.setPopulationInitialisationInputFileName("population_initial_" + country.toString()); - //This calls a method creating both the donor population tables and initial populations for every year between minStartYear and maxStartYear. - DataParser.createDatabaseForPopulationInitialisationByYearFromCSV(country, Parameters.getPopulationInitialisationInputFileName(), Parameters.getMinStartYear(), Parameters.getMaxStartYear(), conn); + if (null == Parameters.includeYears || Parameters.trainingFlag) { + //This calls a method creating both the donor population tables and initial populations for every year between minStartYear and maxStartYear. + DataParser.createDatabaseForPopulationInitialisationByYearFromCSV(country, Parameters.getPopulationInitialisationInputFileName(), Parameters.getMinStartYear(), Parameters.getMaxStartYear(), conn); + } else { + DataParser.createDatabaseForPopulationInitialisationByYearFromCSV(country, Parameters.getPopulationInitialisationInputFileName(), Parameters.includeYears, conn); + } conn.close(); }