/** * A component of a library for * MoSeS. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ package uk.ac.leeds.ccg.andyt.projects.moses.process; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.math.BigDecimal; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.Random; import java.util.TreeMap; import org.jfree.chart.JFreeChart; import uk.ac.leeds.ccg.andyt.ext.math.BigDecimal0; import uk.ac.leeds.ccg.andyt.projects.moses.io.AbstractCASDataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.CAS001DataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.CAS001DataRecord; import uk.ac.leeds.ccg.andyt.projects.moses.io.CAS002DataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.CAS002DataRecord; import uk.ac.leeds.ccg.andyt.projects.moses.io.CASDataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.CASUV003DataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.CASUV003DataRecord; import uk.ac.leeds.ccg.andyt.projects.moses.io.ToyModelDataHandler; import uk.ac.leeds.ccg.andyt.projects.moses.io.ToyModelDataRecord_2; import uk.ac.leeds.ccg.andyt.projects.moses.io.WebContentHandler; import uk.ac.leeds.ccg.andyt.projects.moses.utilities.StaticIO; /** * For producing a set of comparison regression reports. */ public class Comparison extends RegressionReport { /** Creates a new instance of OAPopulationComparison */ public Comparison() { } /** * @param args * the command line arguments */ public static void main(String[] args) { new Comparison().run(); } public void run() { try { compareCAS001WithCAS002(); // compareCASUV003WithCAS001(); } catch (Exception e) { e.printStackTrace(); } catch (Error e) { e.printStackTrace(); } } public void compareCAS001WithCAS002() throws Exception { String directory = new String("C:/Work/Projects/MoSeS/Workspace/"); // CAS001DataHandler tCAS001DataHandler = new CAS001DataHandler( new // File( directory, "CAS001DataRecordsMSOA.dat" ) ); // CAS002DataHandler tCAS002DataHandler = new CAS002DataHandler( new // File( directory, "CAS002DataRecordsMSOA.dat" ) ); CAS001DataHandler tCAS001DataHandler = new CAS001DataHandler(new File( directory, "CAS001DataRecords.dat")); CAS002DataHandler tCAS002DataHandler = new CAS002DataHandler(new File( directory, "CAS002DataRecords.dat")); // String filenamePrefix = new String( // "ToyModel_SWR_OA_HSARHP_ISARCEP_0_5_1000_3_30_12_20_MarkOutput2" ); String filenameSuffix = new String(""); String filenamePrefix = new String("CAS001vCAS002AgeGroupComparison"); // // Prepare aggregate data // MarkOutput2DataHandler a_MarkOutput2DataHandler = new // MarkOutput2DataHandler(); // a_MarkOutput2DataHandler.writeEstimated_HSARHP( directory, // filenamePrefix, true ); // a_MarkOutput2DataHandler.writeEstimated_HSARHP( directory, // filenamePrefix, false ); String baseURL = new String( "http://www.geog.leeds.ac.uk/people/a.turner/projects/MoSeS/documentation/demography/results/tests/sourceData/" + filenamePrefix + "/"); long RecordID = 0L; // RegressionReport _RegressionReport = new RegressionReport(); long nRecords = tCAS001DataHandler.getNDataRecords(); CAS001DataRecord aCAS001DataRecord; CAS002DataRecord aCAS002DataRecord; int t_NumberNumericalVariables = 14; String[] t_Variables = new String[t_NumberNumericalVariables + 1]; t_Variables[1] = "PeopleAge0to15"; t_Variables[2] = "PeopleAge16to19"; t_Variables[3] = "PeopleAge20to24"; t_Variables[4] = "PeopleAge25to29"; t_Variables[5] = "PeopleAge30to34"; t_Variables[6] = "PeopleAge35to39"; t_Variables[7] = "PeopleAge40to44"; t_Variables[8] = "PeopleAge45to49"; t_Variables[9] = "PeopleAge50to54"; t_Variables[10] = "PeopleAge55to59"; t_Variables[11] = "PeopleAge60to64"; t_Variables[12] = "PeopleAge65to74"; t_Variables[13] = "PeopleAge75to79"; t_Variables[14] = "PeopleAge80AndOver"; int tCAS001_PeopleAge0to15; int tCAS001_PeopleAge16to19; int tCAS001_PeopleAge20to24; int tCAS001_PeopleAge25to29; int tCAS001_PeopleAge30to34; int tCAS001_PeopleAge35to39; int tCAS001_PeopleAge40to44; int tCAS001_PeopleAge45to49; int tCAS001_PeopleAge50to54; int tCAS001_PeopleAge55to59; int tCAS001_PeopleAge60to64; int tCAS001_PeopleAge65to74; int tCAS001_PeopleAge75to79; int tCAS001_PeopleAge80AndOver; int tCAS002_PeopleAge0to15; int tCAS002_PeopleAge16to19; int tCAS002_PeopleAge20to24; int tCAS002_PeopleAge25to29; int tCAS002_PeopleAge30to34; int tCAS002_PeopleAge35to39; int tCAS002_PeopleAge40to44; int tCAS002_PeopleAge45to49; int tCAS002_PeopleAge50to54; int tCAS002_PeopleAge55to59; int tCAS002_PeopleAge60to64; int tCAS002_PeopleAge65to74; int tCAS002_PeopleAge75to79; int tCAS002_PeopleAge80AndOver; double[][] t_CAS001DataRecords = new double[t_NumberNumericalVariables][(int) nRecords]; double[][] t_CAS002DataRecords = new double[t_NumberNumericalVariables][(int) nRecords]; for (RecordID = 0; RecordID < nRecords; RecordID++) { aCAS001DataRecord = tCAS001DataHandler .getCAS001DataRecord(RecordID); aCAS002DataRecord = tCAS002DataHandler .getCAS002DataRecord(RecordID); tCAS001_PeopleAge0to15 = aCAS001DataRecord.getAllPeopleAge0to4() + aCAS001DataRecord.getAllPeopleAge5to9() + aCAS001DataRecord.getAllPeopleAge10to14() + aCAS001DataRecord.getAllPeopleAge15(); tCAS001_PeopleAge16to19 = aCAS001DataRecord.getAllPeopleAge16() + aCAS001DataRecord.getAllPeopleAge17() + aCAS001DataRecord.getAllPeopleAge18() + aCAS001DataRecord.getAllPeopleAge19(); tCAS001_PeopleAge20to24 = aCAS001DataRecord.getAllPeopleAge20to24(); tCAS001_PeopleAge25to29 = aCAS001DataRecord.getAllPeopleAge25to29(); tCAS001_PeopleAge30to34 = aCAS001DataRecord.getAllPeopleAge30to34(); tCAS001_PeopleAge35to39 = aCAS001DataRecord.getAllPeopleAge35to39(); tCAS001_PeopleAge40to44 = aCAS001DataRecord.getAllPeopleAge40to44(); tCAS001_PeopleAge45to49 = aCAS001DataRecord.getAllPeopleAge45to49(); tCAS001_PeopleAge50to54 = aCAS001DataRecord.getAllPeopleAge50to54(); tCAS001_PeopleAge55to59 = aCAS001DataRecord.getAllPeopleAge55to59(); tCAS001_PeopleAge60to64 = aCAS001DataRecord.getAllPeopleAge60to64(); tCAS001_PeopleAge65to74 = aCAS001DataRecord.getAllPeopleAge65to69() + aCAS001DataRecord.getAllPeopleAge70to74(); tCAS001_PeopleAge75to79 = aCAS001DataRecord.getAllPeopleAge75to79(); tCAS001_PeopleAge80AndOver = aCAS001DataRecord .getAllPeopleAge80to84() + aCAS001DataRecord.getAllPeopleAge85to89() + aCAS001DataRecord.getAllPeopleAge90AndOver(); tCAS002_PeopleAge0to15 = aCAS002DataRecord .getAllPeopleTotalAge0to15(); tCAS002_PeopleAge16to19 = aCAS002DataRecord .getAllPeopleTotalAge16to19(); tCAS002_PeopleAge20to24 = aCAS002DataRecord .getAllPeopleTotalAge20to24(); tCAS002_PeopleAge25to29 = aCAS002DataRecord .getAllPeopleTotalAge25to29(); tCAS002_PeopleAge30to34 = aCAS002DataRecord .getAllPeopleTotalAge30to34(); tCAS002_PeopleAge35to39 = aCAS002DataRecord .getAllPeopleTotalAge35to39(); tCAS002_PeopleAge40to44 = aCAS002DataRecord .getAllPeopleTotalAge40to44(); tCAS002_PeopleAge45to49 = aCAS002DataRecord .getAllPeopleTotalAge45to49(); tCAS002_PeopleAge50to54 = aCAS002DataRecord .getAllPeopleTotalAge50to54(); tCAS002_PeopleAge55to59 = aCAS002DataRecord .getAllPeopleTotalAge55to59(); tCAS002_PeopleAge60to64 = aCAS002DataRecord .getAllPeopleTotalAge60to64(); tCAS002_PeopleAge65to74 = aCAS002DataRecord .getAllPeopleTotalAge65to74(); tCAS002_PeopleAge75to79 = aCAS002DataRecord .getAllPeopleTotalAge75to79(); tCAS002_PeopleAge80AndOver = aCAS002DataRecord .getAllPeopleTotalAge80to84() + aCAS002DataRecord.getAllPeopleTotalAge85to89() + aCAS002DataRecord.getAllPeopleTotalAge90AndOver(); t_CAS001DataRecords[0][(int) RecordID] = tCAS001_PeopleAge0to15; t_CAS001DataRecords[1][(int) RecordID] = tCAS001_PeopleAge16to19; t_CAS001DataRecords[2][(int) RecordID] = tCAS001_PeopleAge20to24; t_CAS001DataRecords[3][(int) RecordID] = tCAS001_PeopleAge25to29; t_CAS001DataRecords[4][(int) RecordID] = tCAS001_PeopleAge30to34; t_CAS001DataRecords[5][(int) RecordID] = tCAS001_PeopleAge35to39; t_CAS001DataRecords[6][(int) RecordID] = tCAS001_PeopleAge40to44; t_CAS001DataRecords[7][(int) RecordID] = tCAS001_PeopleAge45to49; t_CAS001DataRecords[8][(int) RecordID] = tCAS001_PeopleAge50to54; t_CAS001DataRecords[9][(int) RecordID] = tCAS001_PeopleAge55to59; t_CAS001DataRecords[10][(int) RecordID] = tCAS001_PeopleAge60to64; t_CAS001DataRecords[11][(int) RecordID] = tCAS001_PeopleAge65to74; t_CAS001DataRecords[12][(int) RecordID] = tCAS001_PeopleAge75to79; t_CAS001DataRecords[13][(int) RecordID] = tCAS001_PeopleAge80AndOver; t_CAS002DataRecords[0][(int) RecordID] = tCAS002_PeopleAge0to15; t_CAS002DataRecords[1][(int) RecordID] = tCAS002_PeopleAge16to19; t_CAS002DataRecords[2][(int) RecordID] = tCAS002_PeopleAge20to24; t_CAS002DataRecords[3][(int) RecordID] = tCAS002_PeopleAge25to29; t_CAS002DataRecords[4][(int) RecordID] = tCAS002_PeopleAge30to34; t_CAS002DataRecords[5][(int) RecordID] = tCAS002_PeopleAge35to39; t_CAS002DataRecords[6][(int) RecordID] = tCAS002_PeopleAge40to44; t_CAS002DataRecords[7][(int) RecordID] = tCAS002_PeopleAge45to49; t_CAS002DataRecords[8][(int) RecordID] = tCAS002_PeopleAge50to54; t_CAS002DataRecords[9][(int) RecordID] = tCAS002_PeopleAge55to59; t_CAS002DataRecords[10][(int) RecordID] = tCAS002_PeopleAge60to64; t_CAS002DataRecords[11][(int) RecordID] = tCAS002_PeopleAge65to74; t_CAS002DataRecords[12][(int) RecordID] = tCAS002_PeopleAge75to79; t_CAS002DataRecords[13][(int) RecordID] = tCAS002_PeopleAge80AndOver; } String xAxisLabel = new String("CAS001"); String yAxisLabel = new String("CAS002"); JFreeChart[] t_ScatterPlots = RegressionReport.createScatterPlots( t_Variables, t_CAS001DataRecords, t_CAS002DataRecords, xAxisLabel, yAxisLabel); Object[] t_RegressionParametersAndCreateXYLineCharts = RegressionReport .getRegressionParametersAndCreateXYLineCharts(t_Variables, t_CAS001DataRecords, t_CAS002DataRecords); JFreeChart[] t_RegressionCharts = RegressionReport .createRegressionCharts(t_ScatterPlots, t_RegressionParametersAndCreateXYLineCharts); String type = "PNG"; // outputImages( t_ScatterPlots, directory + filenamePrefix + // "_ScatterPlot", type ); // outputImages( t_XYLineCharts, directory + filenamePrefix + // "_XYLineChart", type ); RegressionReport.outputImages(t_RegressionCharts, 1000, 1000, directory + filenamePrefix + "/", filenamePrefix + "_RegressionChart", type); // URL baseURL = new URL() int int_MainBodyControlSwitch = 0; writeHTML(baseURL, directory + filenamePrefix + "/", filenamePrefix, filenameSuffix, int_MainBodyControlSwitch); } public void writeHTMLBodyMain(byte[] lineSeparator, String baseURL, String filenamePrefix, String filenameSuffix, FileOutputStream a_FileOutputStream) throws IOException { a_FileOutputStream.write(lineSeparator); a_FileOutputStream.write(new String("