package metab; import metab.*; import java.io.*; import java.text.*; class Driver { private static NumberFormat setp = new DecimalFormat("000.000"); public static void get_compute_store(String infile, String outfile) throws IOException, FileNotFoundException {// for use only with orignal test data - // modify appropriately if needs change BufferedReader in = new BufferedReader( new FileReader( infile ) );//input filestream BufferedWriter out = new BufferedWriter( new FileWriter( outfile ) );//output filestream String inputbuffer; int numofinputsubsmen = 0, numofinputsubswomen = 0; double difference_TBW_M, difference_BAC_M, difference_TBW_F, difference_BAC_F; double sigma_TBW_M = 0;// double sigma_TBW_F = 0;// These are used only for our new model double sigma_BAC_F = 0;// Other purposes could be designed if modified double sigma_BAC_M = 0;// out.write("(sex obs. BAC obs. TBW pred. BAC pred. TBW)"); out.newLine(); out.newLine(); while ((inputbuffer = in.readLine()) != null){ char sex_MF = in.readLine().charAt(0); int age_in_yrs = Integer.parseInt(in.readLine()); double h_in_cm = Double.parseDouble(in.readLine()); double w_in_kg = Double.parseDouble(in.readLine()); double observed_BAC = Double.parseDouble(in.readLine()); double observed_TBW = Double.parseDouble(in.readLine()); Drink [] thedrinks = {new Drink(20,.2 / 0.0295735297, "200 mL of 20% alcohol")}; NMSubject sub = new NMSubject(age_in_yrs, h_in_cm, sex_MF, w_in_kg, thedrinks, new DrinkTime(12,0,DrinkTime._PM), new DrinkTime(2,0,DrinkTime._PM), "Boba", NMSubject._NO_MEAL | NMSubject._MODERATE_DRINKER | NMSubject._METRIC); sub.runModel(); if (sub.getGender() == 'M'){ numofinputsubsmen++; difference_TBW_M = observed_TBW - sub.getTBW(); difference_BAC_M = observed_BAC - sub.getPeakBAC(); sigma_TBW_M += Math.pow(difference_TBW_M, 2); sigma_BAC_M += Math.pow(difference_BAC_M, 2); } else if (sub.getGender() == 'F'){ numofinputsubswomen++; difference_TBW_F = observed_TBW - sub.getTBW(); difference_BAC_F = observed_BAC - sub.getPeakBAC(); sigma_TBW_F += Math.pow(difference_TBW_F, 2); sigma_BAC_F += Math.pow(difference_BAC_F, 2); } out.write( /*"" + sex_MF + " " + setp.format(observed_BAC) + " " + setp.format(observed_TBW) + " " + */setp.format(sub.getPeakBAC())/* + " " + setp.format(sub.getTBW())*/);//output to file stream out.newLine(); } double rms_TBW_M = Math.sqrt(sigma_TBW_M / numofinputsubsmen); double rms_BAC_M = Math.sqrt(sigma_BAC_M / numofinputsubsmen); double rms_TBW_F = Math.sqrt(sigma_TBW_F / numofinputsubswomen); double rms_BAC_F = Math.sqrt(sigma_BAC_F / numofinputsubswomen); out.write("rms TBW men: " + setp.format(rms_TBW_M) + " rms TBW women: " + setp.format(rms_TBW_F)); out.newLine(); out.write("rms BAC men: " + setp.format(rms_BAC_M) + " rms BAC women: " + setp.format(rms_BAC_F));//ouput to file stream out.close();//close file stream in.close();//close file stream } public static void main(String args[]) throws IOException{ get_compute_store("inputdata.txt", "outputdata.txt"); } }