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");
}
}