commit 67544a10e60e8a5f4282a673e1ff4b267e9a7e6e Author: Minh Date: Fri Apr 10 15:12:45 2015 -0500 GCAT5.0 released diff --git a/GCAT_users_manual.odt b/GCAT_users_manual.odt new file mode 100755 index 0000000..ee3a033 Binary files /dev/null and b/GCAT_users_manual.odt differ diff --git a/GCAT_users_manual_draft-6.docx b/GCAT_users_manual_draft-6.docx new file mode 100644 index 0000000..c3e6d7b Binary files /dev/null and b/GCAT_users_manual_draft-6.docx differ diff --git a/R/.Rhistory b/R/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/R/GCAT/.RData b/R/GCAT/.RData new file mode 100644 index 0000000..e5b917d Binary files /dev/null and b/R/GCAT/.RData differ diff --git a/R/GCAT/.Rbuildignore b/R/GCAT/.Rbuildignore new file mode 100644 index 0000000..91114bf --- /dev/null +++ b/R/GCAT/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/R/GCAT/.Rhistory b/R/GCAT/.Rhistory new file mode 100644 index 0000000..8feb3e6 --- /dev/null +++ b/R/GCAT/.Rhistory @@ -0,0 +1,159 @@ +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4_old/trunk/R/GCAT/R/addingParams.R') +library(GCAT) +source('~/Documents/GCAT4_old/trunk/R/GCAT/R/addingParams.R') +t +warnings() +library(GCAT) +source('~/Documents/GCAT4_old/trunk/R/GCAT/R/addingParams.R') +warnings() +library(GCAT) +source('~/Documents/GCAT4_old/trunk/R/GCAT/R/addingParams.R') +warnings() +library(GCAT) +source('~/Documents/GCAT4_old/trunk/R/GCAT/R/addingParams.R') +library(GCAT) +library(GCAT) +library("GCAT") +library("codetools") +checkUsagePackage("GCAT") +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +checkUsagePackage("GCAT") +library("codetoolds") +library("codetoolss") +library("codetools") +checkUsagePackage("GCAT") +library(GCAT) +library("codetools") +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +checkUsagePackage("GCAT") +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/fit.model.R') +library(GCAT) +checkUsagePackage("GCAT") +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +checkUsagePackage("GCAT") +source('~/Documents/GCAT4/trunk/R/GCAT/R/class.model.R') +library(GCAT) +checkUsagePackage("GCAT") +library(GCAT) +checkUsagePackage("GCAT") +library(GCAT) +checkUsagePackage("GCAT") +?? checkusagePackage +checkUsagePackage("GCAT", all + T) +checkUsagePackage("GCAT", all = T) +checkUsagePackage("GCAT") +checkUsagePackage("GCAT") +source('~/Documents/GCAT4/trunk/R/GCAT/R/plot.fit.R') +library(GCAT) +checkUsagePackage("GCAT") +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +source('~/Documents/GCAT4/trunk/R/GCAT/R/plot.fit.R') +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/plot.fit.R') +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/table2well.R') +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library("codetools") +library("GCAT") +checkUsagePackage(GCAT) +checkUsagePackage("GCAT) +checkUsagePackage("GCAT") +checkUsagePackage("GCAT") +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R') +t +checkUsagePack(GCAT) +checkUsagePackage(GCAT) +checkUsagePackage("GCAT") +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/normalize.and.transform.R') +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +source('~/Documents/GCAT4/trunk/R/GCAT/R/plot.fit.R') +library(GCAT) +library(GCAT) +library(GCAT) +?? plot +? plot +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library(GCAT) +library("codetools") +checkPackageUsage("GCAT") +checkUsagePackage("GCAT") +checkUsagePackage("GCAT", all = T) diff --git a/R/GCAT/.Rproj.user/7CB73FCA/build_options b/R/GCAT/.Rproj.user/7CB73FCA/build_options new file mode 100644 index 0000000..5b5e33b --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/build_options @@ -0,0 +1,4 @@ +auto_roxygenize_for_build_and_reload="1" +auto_roxygenize_for_build_package="1" +auto_roxygenize_for_check="1" +makefile_args="" diff --git a/R/GCAT/.Rproj.user/7CB73FCA/persistent-state b/R/GCAT/.Rproj.user/7CB73FCA/persistent-state new file mode 100644 index 0000000..f8c5903 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/persistent-state @@ -0,0 +1,9 @@ +build-last-errors="[]" +build-last-errors-base-dir="~/Documents/GCAT4/trunk/R/GCAT/" +build-last-outputs="[{\"output\":\"==> roxygenize('.', roclets=c('rd'))\\n\\n\",\"type\":0},{\"output\":\"* checking for changes ... \",\"type\":1},{\"output\":\"DONE\\n\",\"type\":1},{\"output\":\"\\n\",\"type\":1},{\"output\":\"==> R CMD INSTALL --no-multiarch --with-keep.source GCAT\\n\\n\",\"type\":0},{\"output\":\"* installing to library ‘/home/minh/R/x86_64-pc-linux-gnu-library/3.0’\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"* installing *source* package ‘GCAT’ ...\\n\",\"type\":1},{\"output\":\"** R\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** inst\\n\",\"type\":1},{\"output\":\"** preparing package for lazy loading\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"\\n\",\"type\":1},{\"output\":\"Reading input files...\",\"type\":1},{\"output\":\"Error in try(gcat.load.data(file.name = file.name, input.data = input.data, : \\n\",\"type\":1},{\"output\":\" could not find function \\\"gcat.load.data\\\"\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"Creating a generic function for 'plot' from package 'graphics' in package 'GCAT'\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"No man pages found in package 'GCAT' \\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"** help\\n\",\"type\":1},{\"output\":\"*** installing help indices\\n\",\"type\":1},{\"output\":\"** building package indices\\n\",\"type\":1},{\"output\":\"** testing if installed package can be loaded\\n\",\"type\":1},{\"output\":\"\",\"type\":1},{\"output\":\"* DONE (GCAT)\\n\",\"type\":1},{\"output\":\"\",\"type\":1}]" +compile_pdf_state="{\"errors\":[],\"output\":\"\",\"running\":false,\"tab_visible\":false,\"target_file\":\"\"}" +console_procs="[]" +files.monitored-path="" +find-in-files-state="{\"handle\":\"\",\"input\":\"\",\"path\":\"\",\"regex\":false,\"results\":{\"file\":[],\"line\":[],\"lineValue\":[],\"matchOff\":[],\"matchOn\":[]},\"running\":false}" +imageDirtyState="1" +saveActionState="-1" diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/1B6124D6 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/1B6124D6 new file mode 100644 index 0000000..dc615d1 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/1B6124D6 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Estimate the growth curve slope at each timepoint of a well #\n# #\n########################################################################\n#\n# uses the functions and (see well.class.R) \n# adds estimated slopes as a new column to the \"screen.data\" slot\n\ncalculate.slopes = function(input.well, silent = T){\n # Get the growth curve data (excluding removed points, but not excluding points marked as tanking)\n\tgrowth.data = data.from(input.well, remove = T, remove.tanking = F)\n\tx = growth.data[,1]\n\ty = growth.data[,2]\n\t\n\t# Get a list of timepoint indices \n\tindices = as.numeric(rownames(growth.data))\n\t\n # Default slope is NA, values will be filled in as they are calculated\n slopes = rep(NA, length(input.well))\n\n\tfor (i in 1:length(x)){ \n\t\tif (i == 1)\n\t\t\tslopes[indices[i]] = NA\n # Calculate the slope of the line drawn from each point to the point preceding it. \n\t\telse\n\t\t\tslopes[indices[i]] = (y[i] - y[i-1])/(x[i] - x[i-1])\n\t\t}\n # Add a Slope column to the \"screen.data\" slot \n\tinput.well@screen.data$Slope = slopes\n\tif (!silent)\n\t\tcat(\"slopes filled for\", input.well@position[1], well.name(input.well), \"\\n\")\n\treturn(input.well)\n }\n \n \n########################################################################\n# #\n# Use slope estimates to check growth curves for tanking and OD jumps #\n# #\n########################################################################\n#\n# uses the functions and (see well.class.R) \n# Arguments: \n# ----- stringency parameters ----\n# remove.jumps - should the program remove OD jumps? default F (just report them) - \n# should be set to T if data contains distinct jumps in OD that need to be eliminated \n# otherwise, this might be too stringent and will result in loss of data. \n# check.start - which timepoint should checking for jumps and tanking start at? this is included because early timepoints can be unstable.\n# fall.cutoff - what downward slope should constitute a fall in OD? \n# jump.cutoffs - multipliers to determine whether a curve jumps up or down (see methods 1 and 2, below)\n# tank.limit - how many timepoints in a row can have falling slopes until the curve is marked as tanking?\n# tank.cutoff - what proportion of the maximum OD can the curve go below until it is considered tanking?\n\n# ---- input/output ----\n# silent - output to R console?\n# draw - plot growth curve with curve checking details? \n#\n# Fills the \"curve.par\" slot in the well with the starting index of tanking (NA if none is found)\n# \n\n#check.slopes = function(input.well, check.start = 8, fall.cutoff = -.0025, remove.jumps = F,\n#\t\t\tjump.multipliers = -c(15, 500, 10), tank.cutoff = 1.0, tank.limit = 3, silent = T, draw = T){\n\n#changed default values to parameters to account for settling\ncheck.slopes = function(input.well, check.start = 22, fall.cutoff = -.0025, remove.jumps = F,\n\t\t\tjump.multipliers = -c(15, 500, 10), tank.cutoff = 1.0, tank.limit = 6, silent = T, draw = T){\n\n if (!silent)\n cat(\"\\nNow checking slopes for\", plate.name(input.well), well.name(input.well))\n\n\t# Get estimated slopes and untransformed points from the well \n slopes = input.well@screen.data$Slope\n\tx = data.from(input.well, remove=F, remove.tanking=F)[,1]\n\ty = data.from(input.well, remove=F, remove.tanking=F)[,2] \n\t\n\t# Get a list of indices with valid slope estimates\n\tindices = (1:length(input.well))[!is.na(slopes)]\n\n # Do not report tanking or check for jumps if there are fewer valid points than the number needed to detect it\n\tif (length(indices) < tank.limit){\n\t\tinput.well@curve.par$tanking.start = NA\n\t\tif (!silent)\n\t\t\tcat(\"...does not have enough points to check.\\n\")\n\t\treturn(input.well)\n\t}\n\t\n #######################################################################################\n # Create indicator variables and recalculate cutoffs based on timepoint density. #\n #######################################################################################\n #\n\n # Create , a vector of indicator variables for each timepoint with a valid slope estimate. \n\tslope.indicator = rep(NA, length(slopes))\n\t\n\t# Calculate the mean time difference between two timepoints (this typically doesn't vary too much)\n time.diff = mean(diff(x[-1]))\n \n\t# Use the mean time difference to recalculate what should constitute a fall in OD using (which should be a proportion)\n\t# Honestly I don't remember why the fifth root thing is in here...this is probably going to be revised later. \n fall.cutoff = fall.cutoff * time.diff ^ (1/5) / 0.9506785\n \t\n\t# Recalculate stringency parameters for jump detection based on spread of timepoints\n\tjump.cutoffs = jump.multipliers* fall.cutoff \n\n # Recalculate tanking limit based on spread of timepoints\n\ttank.limit = round(tank.limit / time.diff ^ (1/5) * 0.9506785)\n\n\t# Cycle through the indices of input.wells with valid slope estimate\n\tcounter = 0\n\n for(j in 1:length(indices)){\n #######################################################################################\n # Method #1 for finding OD jumps: compare the slope estimate of each point to the #\n # ones for the closest surrounding points. #\n #######################################################################################\n # Get indices of the two closest surrounding timepoints with valid slope estimates. \n\t\tif (j == 1)\n\t\t\tprev.i = indices[2]\n\t\telse\n\t\t\tprev.i = indices[j-1]\n\t\tif (j == length(indices))\n\t\t\tnext.i = indices[length(indices) - 1]\n\t\telse\n\t\t\tnext.i = indices[j+1]\n\t\ti = indices[j]\n\t\t\n\t\t# How the program determines a jump up:\n\t\t# If slope estimate of current timepoint is larger than times the highest surrounding slope estimate plus \n\t\t# Add a \"2\" to the indicator variable\n\t\t# How the program determines a fall:\n\t\t# If slope estimate of current timepoint is more negative than \n\t\t# Add a \"5\" to the indicator variable\n\t\t# How the program determines a jump down:\n\t\t# If slope estimate is lower than AND is smaller than times the lowest surrounding slope estimate minus \n\t\t# Add a \"6\" to the slope indicator variable\n\t\t#\n\t\t# If none of these are true, add a \"0\" to the indicator variable\n\t\t\n\t\tif (slopes[i] > jump.cutoffs[2] * max(c(slopes[next.i],slopes[prev.i]),0) + jump.cutoffs[1])\n\t\t\tslope.indicator[i] = 2\n\t\telse if (slopes[i] < fall.cutoff){\n\t\t\tslope.indicator[i] = 5\n\t\t\tif (slopes[i] < jump.cutoffs[2] * min(c(slopes[next.i],slopes[prev.i], 0)) - jump.cutoffs[1])\n\t\t\t slope.indicator[i] = 6\t\n\t\t\t}\n\t\telse\n\t\t\tslope.indicator[i] = 0\n\n\n #######################################################################################\n # Method #2 for finding OD jumps: see if each point lies close to a line drawn #\n # between the closest surrounding points. #\n #######################################################################################\n #\n # Use variable to track the location of each point. If two subsequent points lie farther \n # away than the cutoff from their respectively drawn lines AND are on different sides, then count that as a jump. \n \n\t\tif (j > 1 & j < length(indices)){\n\t\t\n\t\t # Make equation (y=mx+b) for line drawn between two surrounding points\n\t\t\tm = (y[next.i] - y[prev.i])/(x[next.i] - x[prev.i])\n\t\t\tb = y[prev.i] - m * x[prev.i]\t\t\n\t\t\t\n # Estimate y from that line. Points will be judged by how much their true y value deviate from this estimate.\n \n # calculate b for perpendicular line from observed point to drawn line (slope is -1/m)\n b2 = y[i] + x[i]/m\n\n # solve equation for intersection to determine the shortest Euclidean distance between the point and line.\n # assign a sign to the distance based on the vertical distance. \n est.x = (b2 - b) / (m + 1/m)\n est.y = est.x * m + b\n #est.y = m * x[i] + b\n #est.x = x[i]\n \n if(m != 0)\n point.distance = sqrt((y[i]-est.y)^2 + (x[i]-est.x)^2) * sign(y[i]-est.y)\n else # horizontal case\n point.distance = y[i] - b\n \n #print(paste(i, point.distance, slopes[i], jump.cutoffs[2] * max(c(slopes[next.i],slopes[prev.i]),0) + jump.cutoffs[1], point.distance > jump.cutoffs[3])) \n \n\t\t\tcolor = \"gray30\"\n\t\t\t# If the true point exceeds that estimate by more than , update to positive.\n\t\t\t# if the counter weas previously negative, mark this as a jump up. \n\t\t\tif (point.distance > jump.cutoffs[3]){\n\t\t\t\tif (counter == -1){\n\t\t\t\t\tslope.indicator[i] = 2\n\t\t\t\t\tcolor = \"red\"\n\t\t\t\t\t}\n\t\t\t\tcounter = 1\n\t\t\t\t}\n\t\t\t# If the true point is under that estimate by more than , update to negative.\n\t\t\t# if the counter was previously positive, mark this as a jump down. \n\t\t\telse if (point.distance < -jump.cutoffs[3]){\n\t\t\t\tif (counter == 1){\n\t\t\t\t\tslope.indicator[i] = 6\n\t\t\t\t\tcolor = \"red\"\n\t\t\t\t\t}\n\t\t\t\tcounter = -1\n\t\t\t\t}\n\t\t\t# If the true point lies within of that estimate, update to zero. \n\t\t\telse \n\t\t\t\tcounter = 0\n \t\n\t\t\tif(draw)\n # Graphic representation: draw each line used in Method #2 as a dotted line, \n # and highlight in red if a jump was detected\n\t\t\t\tlines(x[c(prev.i, next.i)], y[c(prev.i, next.i)], lty = 2, col = color)\n\t\t\t}\n\t\t}\n\n #######################################################################################\n # Check for tanking by looking for unbroken series of points with falling slopes. #\n #######################################################################################\n #\n # Cycle through , adding to until the end of the curve or until reaches the \n\n\ttank = 0\n\ti = 1\n\t\n\twhile(i < length(slope.indicator) & tank < tank.limit){\n\t# If a fall was not detected, reset to 0. \n\t\tif (is.na(slope.indicator[i]))\n\t\t\ttank = 0 \n # If a fall was detected at a point index greater than , add 1 to .\n \telse if (slope.indicator[i] >= 5 & i > check.start)\n\t\t\ttank = tank + 1\n\t\telse\n\t\t\ttank = 0\n\n\t\ti = i + 1\n\t\t}\n\t\t\n\t# If the above loop was terminated because reached , update the \"curve.par\" \n # slot to denote the first point at which tanking started (should be the last index checked minus )\n # also truncate so that it does not include the timepoints after tanking. \n \n\tif (tank == tank.limit){\n\t\tinput.well@curve.par$tanking.start = i - tank.limit\n\t\tslope.indicator = slope.indicator[1:i]\n\t\tif (!silent)\n\t\t cat(\"...tanks at timepoint\", i - tank.limit, \".\\n\")\n\t\t}\n\telse{\n\t\tinput.well@curve.par$tanking.start = NA\n\t\tif (!silent)\n\t\t\tcat(\"...does not tank.\\n\")\n }\n \n #######################################################################################\n # Method #2 of checking for tanking: see if OD falls below cutoff # \n # (as a proportion of max OD) without recovery (according to ) #\n #######################################################################################\n #\n i = check.start\n tanking.start = NA\n while(i < length(y) & is.na(tanking.start)){\n # If the next ODs beyond i do not reach the cutoff, then mark i as tanking. \n if (all(y[i+(1:tank.limit)] < max(y,na.rm=T)*tank.cutoff, na.rm=T)) \n tanking.start = i\n i = i+1\n }\n \n # Graphic representation: draw the indicators used in Method #1 using the pch symbols in \n # slope index = 2: an upward-pointing traingle for an upward jump \n # slope index = 5: a diamond for a fall\n # slope index = 6: a downward-pointing triangle for downward jump \n\tif (draw){\n points(data.from(input.well, remove = F, remove.tanking = F)[which(slope.indicator != 0),], \n \tcol = 2, bg = 2, cex = 1.3, pch = slope.indicator[which(slope.indicator != 0)])\n }\n \n #######################################################################################\n # Decide what to do about any remaining jumps in OD #\n #######################################################################################\n \n\tjump.up = which(slope.indicator == 2)\n\tjump.down = which(slope.indicator == 6)\n\t# is a variable which keeps track of all the jumps, whether up or down. \n\tjump.all = sort(c(match(jump.down, indices), match(jump.up, indices)))\n # commented out; jump not working\n # if (length(jump.all) > 0)\n # add.info = paste(\"Jump(s) detected at timepoint(s)\",paste(indices[jump.all],collapse=\" \"))\n # else\n add.info = \"\"\n \n # If is true, use the following automated process to try and remove OD jumps by selectively removing points from analysis.\n # if not, just return the well with the above slot filled. \n \n if (!remove.jumps)\n input.well@add.info = add.info\n else{\n # Cycle through first few jumps (before ). is a logical that controls this loop. \n \tremove.initial.jump = T\n \twhile (length(jump.all) > 0 & jump.all[1] < check.start & remove.initial.jump){\n \t\n # If any other jumps are also before ...\n \t\tif (any(jump.all[-1] < check.start)){ \n \t\t # ...and the next jump is in a different direction, stop the loop and don't remove the first one. \n \t\t\tif(slope.indicator[indices[min(jump.all[-1])]] != slope.indicator[indices[jump.all[1]]])\n \t\t\t\tremove.initial.jump = F\n \t\t\t\t# ...or if the next two jumps are different, stop the loop and don't remove the first one. \n \t\t\telse if(length(jump.all[-1]) > 1 &\n \t\t\t\tslope.indicator[indices[jump.all[2]]] != slope.indicator[indices[jump.all[3]]])\n \t\t\t\tremove.initial.jump = F\t\n \t\t\t# ...otherwise, remove the jump and keep looping. \t\n \t\t\telse \n \t\t\t\tremove.initial.jump = T\n \t\t\t}\n # If no jumps other than the first one are before , remove it and keep looping. \n \t\telse \n \t\t\tremove.initial.jump = T\n \t\t\t\n \t # If the initial jump is to be removed, remove all points before the jump from analysis. \n # also delete the initial jump from \t\t\n \t\tif (remove.initial.jump){\n \t\t\tinput.well = remove.points(input.well, 1:(indices[jump.all[1]] - 1))\n \t\t\tinput.well@add.info = paste(add.info, \"and removed.\")\n \t\t\tjump.all = jump.all[-1]\n \t\t\t}\n \t\t}\t\n # If greater than 3 jumps remain, discard the curve as uninterpretable\t\n \tif (length(jump.all) >= 4){\n \t\tinput.well = remove.points(input.well, 1:length(input.well))\n \t\tinput.well@add.info = paste(add.info, \" - data was discarded.\")\n \t\t}\t\n \telse{\n \t# If there are 3 jumps, remove all points after the last one from analysis and delete the last jump from \n \t\tif(length(jump.all) == 3){\n \t\t\tinput.well = remove.points(input.well, indices[jump.all[3]]:length(input.well))\n \t\t\tinput.well@add.info = paste(add.info, \"and removed.\")\n \t\t\tjump.all = jump.all[-3] \n \t\t\t}\n \t\t\t\n\t\t# If there are now 2 jumps...\n \t\tif(length(jump.all) == 2){\n \t\t # ...and they are different (one up, one down), remove the points in between them from analysis.\n \t\t\tif (diff(slope.indicator[indices[jump.all]]) != 0 ){\n \t\t \t\tinput.well = remove.points(input.well, indices[jump.all[1]:(jump.all[2] - 1)])\n \t\t\t\tinput.well@add.info = paste(add.info, \"and removed.\")\n \t\t\t\t}\n \t\t\t\t# ...and they are in the same direction, remove all the points after the first one from analysis.\n \t\t\telse{\n \t\t\t\tinput.well = remove.points(input.well, indices[jump.all[1]]:length(input.well))\n\t \t\t\tinput.well@add.info = paste(add.info, \"and removed.\")\n \t\t\t\t}\t\t\t\t\n \t\t\t}\n\t\t# If there is only one jump, remove all points after it from analysis. \n \t\telse if (length(jump.all == 1)){\n \t\t\tinput.well = remove.points(input.well, indices[jump.all[1]]:length(input.well))\n \t\t\tinput.well@add.info = paste(add.info, \"and removed.\")\n \t\t\tjump.all = jump.all[-1] \n \t\t\t}\n \t\t}\n \t}\n \tif(!silent)\n \t cat(\"\\t\", input.well@add.info)\n\treturn(input.well)\n\t}\n\t\n########################################################################\n# #\n# Check wells for growth, remove from analysis if OD is too low # \n# #\n########################################################################\n#\n# The well will be tagged with no.growth = T in the slot \"curve.par\" if raw OD values (except for )\n# do not increase beyond above the specified time of inoculation for that well () \n\ncheck.growth = function(input.well, growth.cutoff, start.index = 2){\n\n # Get raw ODs (not including ) and slope estimates from the well \n # as well as OD at inoculation timepoint \n\traw.ODs = raw.data(input.well)[,2]\n start.OD = raw.ODs[start.index]\n \n raw.ODs[input.well@screen.data$Remove] = NA\n\tslope.estimates = slopes(input.well, remove.tanking = T, na.rm = T)\n\n # If fewer than 3 points remain in the analysis with valid slope estimates, discard the well. \n\tif (length(slope.estimates) < 3 | all(is.na(slope.estimates)))\n\t\tinput.well@curve.par$no.growth= T\t\t\n\telse{\n\t# If there are no points at all in the raw ODs \n\t\tif(all(is.na(raw.ODs)))\n\t\t\tinput.well@curve.par$no.growth = T\n\t\telse if(max(raw.ODs, na.rm=T) - start.OD < growth.cutoff) # See if OD increases by at least above\n\t\t\tinput.well@curve.par$no.growth = T\n\t\telse\n\t\t\tinput.well@curve.par$no.growth = F\n\t\t}\n if(all(raw.data(input.well)[,2] - raw.data(input.well)[start.index,2] < growth.cutoff)) \n input.well@add.info = \"\" # This is simply to reduce the amount of unnecessary info in the output. \n # If the well is below growth cutoff anyway, don't bother reporting other errors. \n\treturn(input.well)\n\t}\n\n\n", + "created" : 1425413252161.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2162891425", + "id" : "1B6124D6", + "lastKnownWriteTime" : 1424208623, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/slope.analysis.R", + "project_path" : "R/slope.analysis.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/26C12555 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/26C12555 new file mode 100644 index 0000000..1eedd3e --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/26C12555 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Functions to calculate various things about wells based on fit model #\n# #\n########################################################################\n\n# S3 generic\nlag <- function(fitted.well, ...)\n{\n UseMethod(\"lag\")\n}\n\n#\n# Common arguments:\n# fitted.well - should be a well containing the results of , most functions will return NA if well has not been fit yet.\n# unlog - should the value be returned on the linear scale as opposed to the log-transformed scale?\n# constant.added - for returning values on the linear scale, what was the constant added before the log transform?\n# digits - passed to the function, default is no rounding (infinity digits)\n\nunlog = function(x, constant.added) {\n ########################################################################\n # Transform values back to OD scale #\n ########################################################################\nexp(x) - constant.added\n}\n\nwell.eval = function(fitted.well, Time = NULL){\n ########################################################################\n # Evaluate estimated OD at any timepoints using the fitted model #\n ########################################################################\n\n # If no timepoints are provided, use the ones collected in the experiment itself.\n\tif(!is.numeric(Time))\n\t\tTime = data.from(fitted.well)$Time\n\n # Use of equation is deprecated. Use nls and loess models stored in the well object instead\n # Attempt to use with the fitted equation and parameters to get estimates for OD at the given timepoints.\n\t#output = try(eval(fitted.well@equation, fitted.well@fit.par), silent = T)\n \n # Predict log.OD value(s) using nls model if present. If no nls model, try using loess.\n if (length(fitted.well@nls)>0) {\n output = try(predict(fitted.well@nls,list(Time=Time)),silent=T)\n } else if (length(fitted.well@loess)>0) {\n output = try(predict(fitted.well@loess,Time),silent=T)\n } else {\n output = NA\n }\n\n # Return values. If OD evaluation failed for any reason, return NULL.\n if (is.numeric(output)){\n return(output)\n } else {\n return(NULL)\n\t}\n}\n\nmodel.residuals = function(fitted.well, unlog = F){\n ########################################################################\n # Evaluate model residuals using the measured vs. fitted log.OD values #\n ########################################################################\n\tmeasured.OD = data.from(fitted.well)[,2]\n\n\t# Use with no Time argument to get fitted OD values at measured timepoints.\n\tpredicted.OD = well.eval(fitted.well)\n\n\t# If all values are valid, return the differences\n\tif (!is.numeric(predicted.OD))\n\t\treturn(NA)\n\telse\n return(measured.OD - predicted.OD)\n\t}\n\ndev.from.mean = function(fitted.well){\n ########################################################################\n # Evaluate deviations of log.OD values from the mean #\n ########################################################################\n measured.ODs = data.from(fitted.well,remove=T,na.rm=T)[,2]\n \n # Get the mean values of these measured ODs.\n mean.ODs = mean(measured.ODs)\n \n if (!is.numeric(mean.ODs))\n return (NA)\n else\n return (measured.ODs - mean.ODs)\n}\n\nrss = function(fitted.well){\n #######################################################################\n # Get the residual sum of square. #\n #######################################################################\n if (length(fitted.well@rss) == 0)\n return (NA)\n else\n return (fitted.well@rss)\n}\n\nmodel.good.fit = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate a metric for fit accuracy using squared residuals #\n ########################################################################\n\n # Sum of squared residuals\n\tRSS = rss(fitted.well)\n \n # Total sum of squared\n tot = sum(dev.from.mean(fitted.well)^2)\n \n # Coefficient of determination\n return (1 - RSS/tot)\n\t}\n\nparameter.text = function(fitted.well){\n ########################################################################\n # Output a string with values of fitted parameters #\n ########################################################################\n \n # Get a list of fitted parameters\n fit.par = fitted.well@fit.par\n \n # Giving the parameter text descriptive names.\n if (length(fitted.well@fit.par) != 0){\n names(fit.par)[1] = \"A\" \n names(fit.par)[2] = \"b\" \n names(fit.par)[3] = \"lambda\" \n names(fit.par)[4] = \"max.spec.growth.rate\" \n \n if (fitted.well@model.name == \"richards sigmoid\"){ \n names(fit.par)[5] = \"shape.par\" \n } \n \n if (fitted.well@model.name == \"richards sigmoid with linear par.\"){ \n names(fit.par)[5] = \"shape.param\" \n names(fit.par)[6] = \"linear term\"\n } \n \n if (fitted.well@model.name == \"logistic sigmoid with linear par.\")\n names(fit.par)[5] = \"linear.term\"\n \n # if loess, just show smoothing param\n if(fitted.well@model.name == \"local polynomial regression fit.\")\n fit.par = fitted.well@fit.par[\"smoothing parameter\"]\n }\n \n # Return nothing if the list is empty. Otherwise, concatenate the terms in the list with the parameter names.\n\tif(!is.list(fit.par))\n\t\treturn()\n else{\n \toutput = \"\"\n \ti = 1\n \twhile(i <= length(fit.par)){\n \t\toutput = paste(output, names(fit.par)[i], \"=\", round(as.numeric(fit.par[i]),3), \"; \", sep = \"\")\n \t\ti = i + 1\n if (i %% 6 == 0)\n output = paste(output, \"\\n\")\n \t\t}\n \toutput\n \t}\n\t}\n\nmax.spec.growth.rate = function(fitted.well, digits = Inf, ...){\n ########################################################################\n # Calculate maximum specific growth rate #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n round(fitted.well@fit.par$u,digits)\n}\n\n\nplateau = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate plateau log.OD from fitted parameters #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n plat = fitted.well@fit.par$A + fitted.well@fit.par$b\n \n\tif (!is.numeric(plat)) {\n\t plat = NA\n\t} else {\n plat = round(plat, digits)\n\t}\n\treturn(plat)\n}\n\nbaseline = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate baseline log.OD from fitted parameters #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n\n base = fitted.well@fit.par$b\n\n # If A (plateau OD) is invalid, return NA.\n\tif (!is.numeric(fitted.well@fit.par$A))\n\t\tbase = NA\n # If b (baseline OD) is invalid but plateau OD was valid, return zero.\n else if (!is.numeric(base))\n\t\tbase = 0\n\telse{\n\t\t base = round(base, digits)\n\t\t}\n\treturn(base)\n\t}\n\ninoc.log.OD = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate log.OD at inoculation from fitted parameters #\n ########################################################################\n\n # Evaluated the fitted model at the inoculation timepoint (should be zero from using from table2wells.R)\n\tif (is.null(well.eval(fitted.well)))\n\t\treturn(NA)\n else{\n inoc.time = fitted.well@screen.data$Time[fitted.well@start.index]\n inoc.log.OD = well.eval(fitted.well, inoc.time)\n if (is.na(inoc.log.OD)) inoc.log.OD = fitted.well@fit.par$b # need this in a special case: loess fits with start.index = 1 \n return(round(inoc.log.OD, digits))\n }\n\t}\n\nmax.log.OD = function(fitted.well, digits = Inf, ...){\n ########################################################################\n # Calculate max log.OD from model fit #\n ########################################################################\n\n # Evaluated the fitted model at the final timepoint (just the last valid timepoint in the experiment)\n\tif (is.null(well.eval(fitted.well)))\n\t\treturn(NA)\n else{\n \treturn(round(max(well.eval(fitted.well),na.rm=T), digits))\n }\n}\n\n\nprojected.growth = function(fitted.well,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n\tplateau(fitted.well,digits) - inoc.log.OD(fitted.well,digits)\n}\n\nprojected.growth.OD = function(fitted.well,constant.added,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n value = unlog(plateau(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added)\n round(value,digits)\n}\n\n\nachieved.growth = function(fitted.well,digits=Inf) {\n ########################################################################\n # Calculate achieved growth: max.log.OD minus the inoculated log.OD #\n ########################################################################\n max.log.OD(fitted.well,digits) - inoc.log.OD(fitted.well,digits)\n}\n\nachieved.growth.OD = function(fitted.well,constant.added,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n value = unlog(max.log.OD(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added)\n round(value,digits)\n}\n\nreach.plateau = function(fitted.well, cutoff = 0.75){\n ########################################################################\n # Did the curve come close to the plateau OD during the experiment? #\n ########################################################################\n\n plat = plateau(fitted.well)\n inoc = inoc.log.OD(fitted.well)\n final = max.log.OD(fitted.well)\n\n\tif (!is.na(final)){\n # If the plateau is the same as the OD at inoculation, return TRUE\n if ((plat - inoc) == 0)\n return(T)\n # If the difference between the final OD and inoculation OD is at least a certain proportion\n # of the difference between the plateau and inoculated ODs, return TRUE.\n else\n return((final - inoc) / (plat - inoc) > cutoff)\n\t\t}\n\telse\n\t\treturn(T)\n\t\t# If no final OD was calculated (if curve was not fit properly) just return T.\n\t}\n\n\nlag.time = function(fitted.well, digits = Inf, ...){\n ########################################################################\n # Calculate the lag time from the fitted OD #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n fitted.well@fit.par$lam\n}\n\n# new params for GCAT 4.0\n\namplitude = function(fitted.well){\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n return(fitted.well@fit.par$A)\n}\n\nshape.par = function(fitted.well){\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.par$v), NA, fitted.well@fit.par$v)\n}\n\nmax.spec.growth.rate.SE = function(fitted.well, ...){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$u), NA, fitted.well@fit.std.err$u)\n}\n\nlag.time.SE = function(fitted.well, ...){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$lam), NA, fitted.well@fit.std.err$lam)\n}\n\nshape.par.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$v), NA, fitted.well@fit.std.err$v)\n}\n\namplitude.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$A), NA, fitted.well@fit.std.err$A)\n}\n\nbaseline.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$b), NA, fitted.well@fit.std.err$b)\n}\n\n# used to calulate the inflection.time value\ninflection.time = function(well){\n if (length(well@loess) == 0 && length(well@nls) == 0) return(NA) # can' compute inflection time in the absence of a fit\n data = data.from(well)\n Time = data[,1]\n t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000)\n y = well.eval(well,t)\n if (is.null(y)) return(NA)\n delta.t = diff(t)\n dydt = diff(y)/delta.t\n infl.index = which.max(dydt)\n t[infl.index]\n}\n", + "created" : 1425413281936.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2757150562", + "id" : "26C12555", + "lastKnownWriteTime" : 1428437531, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/fitted.calculations.R", + "project_path" : "R/fitted.calculations.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2C8FAF10 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2C8FAF10 new file mode 100644 index 0000000..2aeaf02 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2C8FAF10 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\nrequire(pheatmap)\nrequire(gplots)\n\n########################################################################\n# #\n# Graphic output functions for fitted well objects. The functions are #\n# fairly complicated and intertwined and may need revision. #\n# #\n########################################################################\n\n# S3 Generic.\nplot <- function(input.well, ...) {\n UseMethod(\"plot\")\n}\n\n########################################################################\n# Basic function plots time vs. OD from a well object #\n########################################################################\n#' plot.data\n#'\n#' Basic function plots time vs. OD from a well object\n#'\n#' @param input.well The well object that need to be plottedd\n#' @param unlog should data be plotted on a linear (vs. logarithmic) scale?\n#' @param view.raw.data should the raw data be plotted? (\n#' @param number.points should points be labeled with numeric indices?\n#' @param scale determines the font scale for the entire graph. all cex values are calculated from this.\n#' @param draw.symbols - should be called on the well and markings drawn on the graph?\n#' @param ... additional arguments passed to plot()\nplot.data = function(input.well, view.raw.data = F, unlog = F, scale = 1, \n main = paste(plate.name(input.well), well.name(input.well)), number.points = T, \n draw.symbols = F, constant.added, ylim, ...){\n \n # Get data as well as a vector showing which points were removed. \n\tinput.data = data.from(input.well, remove = F, remove.tanking = F, raw.data=view.raw.data)\n\tremoved.points = !(rownames(input.data) %in% rownames(data.from(input.well, remove = T, remove.tanking = T)))\n point.colors = as.character(factor(removed.points,levels=c(F,T),labels=c(\"black\",\"gray80\")))\n\n # Draw the axes and all text labels first.\n\tpar(mar = c(5, 4, 4, 5)+0.1)\n\tplot(input.data, main = main, xlab = \"Time(hours)\", ylab = \"log(OD - blank + const)\",\n mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type =\"n\",...)\n \n\t# Draw a second vertical axis, showing unlogged OD scale\n\t# - Determine the range of the labels: from min.OD to max.OD\n if (class(try(ylim,silent=T)) == \"try-error\") {\n OD = unlog(input.data[,2],constant.added)\n baseline.OD = unlog(baseline(input.well),constant.added)\n min.OD = min(min(OD,na.rm=T),baseline.OD,na.rm=T)\n plateau.OD = unlog(plateau(input.well),constant.added)\n max.OD = max(max(OD,na.rm=T),plateau.OD,na.rm=T)\n } else {\n min.OD = unlog(ylim[1],constant.added)\n max.OD = unlog(ylim[2],constant.added)\n }\n\t# - Compute labels and their positions\n\tOD.labels = seq(from = min.OD, to = max.OD, length.out = 5)\n\tOD.labels = signif(OD.labels,2)\n\tOD.at = log(OD.labels+constant.added)\n # - Draw the axis\n\taxis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale)\n\tmtext(4, text = \"OD - blank\", line = 3, cex=1.2)\n \n\t# If is true, then label each point with the index of its timepoint and plot removed points in grey, others in black. \n if (number.points)\n\t\ttext(input.data$Time, input.data[,2], rownames(input.data), col = point.colors, cex = 0.5*scale)\n\t# Otherwise plot all points, using a different plotting character for removed points. \t\n else\n\t\tpoints(input.data$Time, input.data[,2], pch = 1 + removed.points*15)\n\n # If is set to T, then draw all the markings that makes to determine curve parameters. \n\tif (draw.symbols & !view.raw.data)\n\t\tcheck.slopes(input.well, draw = T)\n\treturn()\n\t}\n\t\n########################################################################\n# Plots the fitted model curve from a well object if it exists #\n########################################################################\n#\n# time: specify which points (in units of time) to plot fitted OD values for. if not specifies, plot all timepoints in range of well. \n\nplot.model = function(input.well, col = 1, scale = 1, lty = 1, time = NULL, unlog = F, constant.added=1, ...){\n\t \n #input.data = data.from(input.well)\n\t#growth = input.data[,2]\n\n # If no list of timepoints is specified, get a list of 360 timepoints (should be smooth enough) from the well's range. \n\tif (is.null(time)){\n\t\ttime.fin = max(data.from(input.well, raw.data = T, remove = F, remove.tanking = F)$Time)\n\t\ttime = seq(0, time.fin, length.out = 360)\n\t}\n \n # Evaluate the predicted OD at the specified timepoints based on the fitted model. \n\tpredicted.OD = well.eval(input.well, time) \n # If any values were returned, plot the lines on the current graph. Otherwise, just return without doing anything.\n\tif (is.numeric(predicted.OD))\n\t\tlines(time, predicted.OD, col = col, lty = lty, lw = 2 * scale) \n else\n return()\t\n \n}\n\t\n########################################################################\n# Put various parameters and info in text form on the graphs #\n########################################################################\n#\t\t\t\ndraw.text = function(input.well, scale = 0.5, xlim = 0, ylim = 0,...){\n\n\t#input.data = data.from(input.well, remove = F, remove.tanking = F)\n\t#fit = input.well@fit.par\n \n # - fit information (fit status, model name if available, jump detection output, fit parameters if available) from well \n # color = red if no fit, blue if fit, green if skipped\n # - empty or inoculated well.\n # color = green if empty, blue if inoculated, red if inoculated but has no growth or empty but has growth. \n \n \tcol2 = \"blue\" \n\ttext2 = paste(input.well@fit.info, input.well@model.name, input.well@add.info, \"\\n\", parameter.text(input.well))\n\n\tif (length(input.well@fit.par) == 0) # no fit\n\t\tcol2 = \"red\"\n\n\tif (is.empty(input.well)){\n\t\t text1 = \"empty well\"\n\t\tif(!lacks.growth(input.well) | length(input.well@fit.par) == 0) # growth curve fit for an empty well\n\t\t\tcol1 = \"red\"\n\t\telse\n\t\t\tcol1 = \"forestgreen\"\n\t\tif (length(input.well@model.name) == 0) # well was skipped \n\t\t\tcol1 = col2 = \"forestgreen\"\n\t\t}\n\telse{\n\t\ttext1 = \"inoculated well\"\n\t\tif(lacks.growth(input.well) | length(input.well@fit.par) == 0) # failure to fit an inoculated well\n\t\t\tcol1 = \"red\"\n\t\telse\n\t\t\tcol1 = \"forestgreen\"\n\t\t}\n\t\t\n\t# - goodness of fit metric. \n\t# color = red if below 2, yellow if between 2 and 2.72, and green if above 2.72. \n\t\n\tif(!is.na(model.good.fit(input.well))){\n\t\t#if (model.good.fit(input.well, unlog = F) > 2.72)\n\t\t#\tcol1.5 = \"forestgreen\"\n\t\t#else if (model.good.fit(input.well, unlog = F)> 2.0)\n\t\t#\tcol1.5 = \"gold2\"\n\t\t#else\n\t\t#\tcol1.5 = \"red\"\n col1.5 = \"forestgreen\"\n\t\ttext1.5 = paste(\"R squared:\", round(model.good.fit(input.well),3))\n\t\t}\n\telse\n\t col1.5 = text1.5 = NULL\n\t \n # Print all text at the top of the graph with approprate positions and scaling \t\n \ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.025 * diff(ylim), \n \t\ttext1.5, cex = 1.5*scale, col = col1.5) \n \t\t\n\ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0 * diff(ylim), \n\t\t\ttext1, cex = 1.5*scale, col = col1)\n\n\ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.03 * diff(ylim), \n\t\t\ttext2, pos = 1, cex = 1.5*scale, col = col2)\t\n\t}\t\n\n########################################################################\n# Draw lines on graph denoting calculated parameters #\n########################################################################\n#\t\n# - should curve parameters be labeled? \n\t\t\ndraw.calc.par = function(input.well, scale = 0.5, unlog = F, constant.added, show.num = T){\n\n # Don't do anything if well was not fit. \n\tif (is.null(well.eval(input.well)))\n\t\treturn()\n \n # Collect values for various curve parameters. \n\tbaseline = baseline(input.well)\n\tinoc.log.OD = inoc.log.OD(input.well)\n\tmax.log.OD = max.log.OD(input.well) \n\tplateau = plateau(input.well) \n\tinflection.time = input.well@inflection.time # was a param in model\n\tfin.time = (inflection.time+max(data.from(input.well)[,1]))/2\n\n\t# = timepoint at greatest growth \n\t# = OD measurement at , minus the constant added before taking the log (if reversing the transformation)\n\t# = slope (on log scale) at (specific growth)\n # had to add the unlog code. was calculated differently before NWD 7/21/14\n\tmax.slope = max.spec.growth.rate(input.well)\n\tmax.y = well.eval(input.well, inflection.time)\n\tlag.x = lag.time(input.well) \n lag.y = baseline\n\t\n\t# ---- Specific growth rate ---- #\n\tlines(c(lag.x, inflection.time), c(lag.y, max.y), lty = 2, col = \"red\")\n\n\n # Blue dotted line at time of maximum growth, with text label for specific growth rate. \n\tabline(v = inflection.time, lty = 2, lw = (scale^2)*2, col = \"blue\")\n if(show.num) text(inflection.time, max.y, round(max.slope,3), col = \"blue\", cex = 1.5*scale, pos = 2)\n\n # inoculation OD and baseline of the fitted model\n abline(h = inoc.log.OD, lw = scale*2, lty = 3)\n abline(h = baseline, col = \"red\", lw = (scale^2)*2, lty = 2)\n if(show.num) {\n text(fin.time, inoc.log.OD, paste(round(inoc.log.OD,3),\"\\n\",sep=\"\") , col = \"black\", cex = 1.5*scale, pos = 2)\n text(fin.time, baseline, paste(\"\\n\\n\", round(baseline,3), sep=\"\") , col = \"red\", cex = 1.5*scale, pos = 2)\n }\n\n # ---- Lag time ---- #\n # Do not draw a horizontal line to lag time if it is 0 or negative. \n # Otherwise draw a red line from the starting point to the lag time, and label with the lag time \n \tif (lag.time(input.well) == 0){\n\t\tif(show.num) text(0, inoc.log.OD, \"\\n\\n0.000\", col = \"red\", cex = 1.5*scale, pos = 4)\n\t\t}\n\telse{\n\t\tlines(c(0, lag.x), c(baseline, baseline), col = \"red\", lw = (scale^2)*2, lty = 2)\n\t\tif(show.num) text(lag.x, lag.y, paste(\"\\n\\n\", round(lag.time(input.well),3)), col = \"red\", cex = 1.5*scale, pos = 2)\n\t}\n\n # ---- Total growth ---- #\n\n # Draw horizontal lines for the max.log.OD in black, the plateau in green and the initial OD in black.\n abline(h = max.log.OD, lty = 3, lw = scale*2)\n abline(h = plateau, lty = 2, lw = (scale^2)*2, col = \"forestgreen\")\n\t\n\t# Draw a vertical line from the initial OD to the final OD in black, and then to the plateau in gray. \n\tlines(c(fin.time, fin.time), c(inoc.log.OD, max.log.OD), lw = (scale^2)*2, lty = 3)\n\tlines(c(fin.time, fin.time), c(max.log.OD, plateau), lw = (scale^2)*2, lty = 3, col = \"grey\")\n\n # Text: plateau and initial ODs (on left), difference between initial and final OD on right\n\tif(show.num){\n text(fin.time, plateau, paste(round(plateau,3),\"\\n\",sep=\"\") , col = \"forestgreen\", cex = 1.5*scale, pos = 2)\n text(fin.time, max.log.OD, paste(\"\\n\\n\\n\",round(max.log.OD,3),sep=\"\") , col = \"black\", cex = 1.5*scale, pos = 2)\n text(fin.time, .5*(max.log.OD-inoc.log.OD)+inoc.log.OD, round(max.log.OD - inoc.log.OD,3), cex = 1.5*scale, pos = 4)\n # difference between final and plateau OD (if large enough) \n if (!reach.plateau(input.well))\n\t\t text(fin.time, .5*(plateau-max.log.OD)+max.log.OD, paste(\"(\", round(plateau - max.log.OD,3), \")\", sep = \"\"), col = \"grey\", cex = 1.5*scale, pos = 2) \n }\n }\n\t\n########################################################################\n# Draw residuals from the nonlinear fit with option for lowess line #\n########################################################################\n#\t\t\nplot.residuals = function(input.well, xlim = NULL, lowess = T, ...){\n well = input.well\n\tdata = data.from(well, remove = F, remove.tanking = F)\n\n\tif (is.null(xlim))\n\t\txlim = c(min(data$Time, 0)-1, max(data$Time))\n\t\t\n\tplot(data.from(well)[,1], model.residuals(well), main = paste(plate.name(well), well.name(well), \"\\n[Residuals]\"),\n\t\txlab = \"Time(hours)\", ylab = paste(\"Residual\", names(data)[2]), xlim = xlim)\n\t\n\tabline(0,0, lty = 2)\n\t\n\tif (lowess)\n\t\tlines(lowess(data.from(well)[,1], model.residuals(well)), lw = 2, col = \"red\")\n\t}\n\n##############################################################################\n# This function is used to create a heatmap using: \n# specific growth, total growth, and lag time\n# for each well on a plate.\n#\n# @params\n# fitted.well.array: matrix containing well array object data\n# attribute: the data type we should use to create a heatmap\n# @returns\n# path of heatmap pdf file\n##############################################################################\ncreate.heatmap = function(fitted.well.array, attribute, unlog=NULL){\n attr.name <- deparse(substitute(attribute))\n pdf.name <- \"\"\n if(class(fitted.well.array) == \"matrix\"){\n #We may want to sub() out periods from plate.ID if it causes problems\n plate.ID = unique(unlist(aapply(fitted.well.array,plate.name)))[1]\n if(is.null(unlog)) {\n spec.growth = unlist(aapply(fitted.well.array, attribute))\n }\n # currently only total growth needs to be unlogged if unlog == T\n else {\n spec.growth = unlist(aapply(fitted.well.array, attribute))\n }\n num.dig = 3 #how many digits should be put on pdf?\n max = round(max(spec.growth, na.rm=T), digits=num.dig)\n min = round(min(spec.growth, na.rm=T), digits=num.dig)\n avg = round(mean(spec.growth, na.rm=T), digits=num.dig)\n heat.text = paste(toupper(sub(\"\\\\.\", \" \", attr.name)), \":\\n\", plate.ID, \"\\n\",\n paste(\"Max:\",max ,\"Min:\" ,min ,\"Avg:\", avg, sep=\"\"))\n \n attr.name <- sub(\"\\\\.\", \"_\", attr.name) #do not want periods in file path\n letters <- attr(fitted.well.array, \"dimnames\")[[1]]\n for(i in 1:length(letters)) letters[i] = paste(\" \", letters[i], \" \")\n nums <- attr(fitted.well.array, \"dimnames\")[[2]]\n for(i in 1:length(nums)) nums[i] = paste(\" \", nums[i], \" \")\n heat <- matrix(spec.growth, nrow=dim(fitted.well.array)[1], ncol=dim(fitted.well.array)[2], dimnames=list(letters,nums))\n pdf.name <- paste(getwd(), \"/\", plate.ID, \"_\", attr.name, \".pdf\", sep=\"\")\n pdf(pdf.name)\n #heatmap(heat, Rowv=NA, Colv=NA, revC=T, scale=\"none\", na.rm=T, main=plate.ID, col=rainbow(100), margins=c(6,6))\n #mtext(paste(\"Max:\", round(max(spec.growth, na.rm=T), digits=4),\"Min:\", round(min(spec.growth, na.rm=T), digits=4), \"Avg:\", round(mean(spec.growth, na.rm=T), digits=4)), side=1, line=3)\n pheatmap(heat, color=colorpanel(100, \"red\", \"orange\", \"yellow\"),\n border_color=\"black\", cell_width=2, cell_height=3,\n cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16)\n dev.off()\n }\n else {\n return(\"Error\") \n }\n return(pdf.name)\n}\n\n########################################################################\n# Draw grids of 96 points as a visual representation of fit status, #\n# and other info for an array of fitted well objects, plate by plate #\n########################################################################\n#\n\t\nplate.overview = function(fitted.well.array, scale = 1, plate.ncol = 12, plate.nrow = 8){\n \n \n # Start with a list of the unique plate names in the fitted well array \n # and an appropriately-sized grid of coordinates to plot wells on.\n\tplates = unique(unlist(aapply(fitted.well.array,plate.name)))\n \n\tgrid = data.frame(x = rep(rep(1:plate.ncol, each = plate.nrow), length(plates)),\n\t\t\t y = rep( rep(-(1:plate.nrow), times = plate.ncol), length(plates)))\n\n\n # Gather information on each well to display on each of the coordinates in :\n # - was it marked as empty in the plate layout?\n # - did the program find it to contain no growth (\"dead\")? \n # - was the fitting procedure successful? \n # - did the curve tank? if so, at what timepoint? if not, or if the curve was marked as dead anyway, do not display the value. \n # - does the \"additional info\" slot indicate that any points were removed or the whole well discarded?\n \n\tempty = unlist(aapply(fitted.well.array, is.empty))\n\tdead = unlist(aapply(fitted.well.array, lacks.growth))\n\tfit = unlist(aapply(fitted.well.array, contains.fit))\n \n\ttanking = unlist(aapply(fitted.well.array, tanking.start))\n\ttanking[is.na(tanking) | tanking == 1 | dead] = \"\"\n\n\terrors = unlist(aapply(fitted.well.array, function(well){\n\t\tif (length(well@add.info) == 0)\n\t\t\t\"\"\n\t\telse if (grepl(\"removed\", well@add.info))\n\t\t\t\"-\"\n else if (grepl(\"detected\", well@add.info))\n \"+\"\n\t\telse if (grepl(\"discarded\", well@add.info))\n\t\t\t\"!\"\n\t\telse\n\t\t\t\"\"\n\t\t}))\n\t\n # Color and plotting character vectors (length = the number of wells in the array)\n # Default = 1 (open point, black)\n\tcolors = char = rep(1, length(tanking))\n\n # Desired colors\n colors[empty & dead] = \"green3\" # Empty well with no growth.\n colors[!empty & fit] = \"blue\" # Inoculated well with successfully fitted growth curve.\n \n # Undesired colors \n colors[empty & !dead] = \"darkolivegreen4\" # Inoculated well with some growth. \n colors[!empty & !fit] = \"red\" # Inoculated well with no successfully fit (either no growth or unsuccessful fit).\n \n char[!dead & fit] = 19 # Filled points for non-empty wells with successful fits \n char[!dead & !fit] = 4 # an X for non-empty wells with failed fits. \n \n char[errors == \"!\"] = 8 # Asterisk for discarded wells. \n char[errors == \"-\" & dead ] = 5 # Open diamond for empty wells (after removing points).\n char[errors == \"-\" & !dead & fit] = 23 # Filled diamond for non-empty wells with removed points and successful fits. \n char[errors == \"-\" & !dead & !fit] = 8 # Asterisk for wells with removed points and failed fits.\n \n \n\tfor (plate in 1:length(plates)){\n \n\t\tindices = (plate - 1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol)\n\n # Plot the grid using colors and plotting characters determined above. \n\t\tplot(grid[indices,], col = colors[indices], bg = colors[indices], pch = char[indices], \n\t\t\t main = plates[plate], mex = scale, cex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, \n\t\t\t xaxt = \"n\", yaxt = \"n\", xlim = c(-0.5,plate.ncol + 0.5), ylim = c(-(plate.nrow + 1.5), 0.5), xlab = \"\", ylab = \"\")\n \n # Symbol legends\n \n legend.xpos = (c(-1,2.75,6.5,6.86,10.25)+0.5)*(plate.ncol+1)/13 - 0.5\n legend.ypos = -(plate.nrow + 0.5)\n \n legend(x=legend.xpos[1], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Empty, no growth\",\"Empty with growth\"),\n pch = c(1,19),\n pt.bg = c(\"green3\",\"darkolivegreen4\"),\n col = c(\"green3\",\"darkolivegreen4\")\n )\n legend(x=legend.xpos[2], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Inoculated with growth\", \"Inoculated, no growth\"),\n pch = c(19,1),\n pt.bg = c(\"blue\",\"red\"),\n col = c(\"blue\",\"red\")\n )\n legend(x=legend.xpos[3], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Well tanks at specified index\", \"Some points removed\"),\n pch = c(21,23),\n pt.bg = c(\"grey\",\"grey\"),\n col = c(\"black\",\"black\")\n ) \n \n text(x=legend.xpos[4], y=legend.ypos - 0.29,\"#\",cex=0.5*scale) \n \n legend(x=legend.xpos[5], y=legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Model fitting failed\", \"Well discarded\"),\n pch = c(4,8),\n pt.bg = c(\"black\",\"black\"),\n col = c(\"black\",\"black\")\n )\n \n # Add tanking indices if any were found. \n \ttext(grid[indices,] + 0.30, cex = 0.75*scale, \n labels = tanking[indices], col = colors[indices])\n\n # Label rows and columns\n\t\ttext(-1, -1:-plate.nrow, pos = 4, LETTERS[1:plate.nrow], cex = scale) \n\t\ttext( 1:plate.ncol, 0 , 1:plate.ncol, cex = scale) \t\n\t\t}\n \n\t}\n\n########################################################################\n# Draw each well in an array of fitted well objects in succession. #\n# Include options for adding notations, text info and fit parameters. #\n########################################################################\n#\n\nview.fit = function(fitted.data, indices = 1:length(fitted.data), \n unlog = F, constant.added, xlim = NULL, ylim = NULL, display.legend = T, \n\t\t show.text = T, show.calc = T, draw.guess = NULL, draw.symbols = F, number.points = T, \n\t\t\tuser.advance = T, show.residuals = F, scale = 1,...){\n\n if(!is.array(fitted.data))\n fitted.data = list(fitted.data)\n\n # Determine the boundaries for the axes (if user did not specify them)\n if(is.null(ylim)){\n min.y = min(unlist(aapply(fitted.data, function(well){\n \tif (unlog) well@use.log = F\n \tmin.y = min(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T)\n min(min.y, well@fit.par$b)\n \t})))\n max.y = max(unlist(aapply(fitted.data, function(well){\n if (unlog) well@use.log = F\n \tmax.y = max(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T)\n max(max.y, well@fit.par$b + well@fit.par$A)\n \t})))\n ylim = c(min.y, min.y + (max.y-min.y)*1.15) - unlog*constant.added\n }\n if(is.null(xlim)){\n min.x = min(unlist(aapply(fitted.data, function(well){\n min(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T)\n \t})))\n max.x = max(unlist(aapply(fitted.data, function(well){\n \tmax(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T)\n \t})))\n xlim = c(min.x - 0.05 * (max.x-min.x), max.x)\n }\n \n # Display a figure legend\n if(display.legend){\n well.fit.legend(xlim=xlim,ylim=ylim,scale=scale,constant.added=constant.added)\n if(user.advance){\n prompt = readline(\" to continue or Q to quit >>\")\n if (toupper(prompt) == \"Q\") break\n }\n }\n # Start to cycle through the wells \n\twell.number = 1\n\twhile (well.number <= length(fitted.data)) {\t\t\n\t\t# Only show wells specified by (default all wells)\n if (well.number %in% indices){ \n # plot the well\n fitted.well = fitted.data[[well.number]]\n plot(x=fitted.well, constant.added = constant.added, xlim = xlim, ylim = ylim,\n unlog = unlog, well.number = well.number, scale = scale, number.points = T, draw.symbols = F, show.text = T, show.calc = T, draw.guess = NULL, ...)\n \n if(user.advance)\n cat(\"\\n[\", well.number, \"] \", plate.name(fitted.well), \" \", well.name(fitted.well), \".\", sep = \"\")\n \n if (show.residuals & is.numeric(model.residuals(fitted.well))){\n if(user.advance)\n if (toupper(readline(\" for residuals >>\")) == \"Q\") break\n plot.residuals(fitted.well)\n }\n \n # Allow user to advance the currently shown well if specified. \n\t\t\tif (user.advance){\n \n\t\t\t\tprompt = readline(\" to continue, or type # of next well or Q to quit >>\")\n\t\t\t\tif (toupper(prompt) == \"Q\") break\n\n user.input = suppressWarnings(try(as.numeric(prompt),silent=T))\n \n # Go onto the next well unless input is a number. \n\t\t\t\tif (is.numeric(user.input) & !is.na(user.input) & length(user.input) > 0)\n\t\t\t\t\twell.number = user.input - 1\n\t\t\t }\n\t\t\t}\n # Advance the loop\n well.number = well.number + 1\n\t\t}\t\t\n\t}\t\n\n\nwell.fit.legend = function(xlim, ylim, scale = 1, constant.added){\n par(mar = c(5, 4, 4, 5)+0.1)\n plot(0,0, main = \"[Index] \\n; \",\n xlim = xlim, ylim = ylim, xlab = \"Time\", ylab = \"log(OD - blank + const)\", \n mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type = \"n\")\n \n # Draw a second vertical axis, showing unlogged OD scale\n min.OD = unlog(ylim[1],constant.added)\n max.OD = unlog(ylim[2],constant.added)\n OD.labels = seq(from = min.OD, to = max.OD, length.out = 5)\n OD.labels = round(OD.labels,1)\n OD.at = log(OD.labels+constant.added)\n axis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale)\n mtext(4, text = \"OD - blank\", line = 3, cex=1.2)\n \n # Sample max. slope line\n abline(v=min(xlim)+0.5*max(xlim), col=\"blue\", lty=2)\n text(mean(xlim),min(ylim)+0.4*diff(ylim),labels=\"Maximum specific\\ngrowth rate\",col=\"blue\",pos=2,cex=0.75*scale)\n \n # Sample plateau line\n abline(h=min(ylim)+0.8*diff(ylim),col=\"forestgreen\",lty=2)\n text(min(xlim)+0.9*diff(xlim),ylim+0.8*diff(ylim),labels=\"Growth plateau\",col=\"forestgreen\",pos=3,cex=0.75*scale)\n\n # Sample max.log.OD line\n abline(h=min(ylim)+0.7*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.9*diff(xlim),ylim+0.7*diff(ylim),labels=\"max.log.OD\",col=\"black\",pos=1,cex=0.75*scale)\n \n # Sample inoc.log.OD\n abline(h=min(ylim)+0.1*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.1*diff(xlim),min(ylim)+0.1*diff(ylim),labels=\"Fitted growth\\nat inoculation\",col=\"black\",pos=3,cex=0.75*scale)\n \n # Sample baseline\n abline(h=min(ylim)+0.05*diff(ylim),col=\"red\",lty=2)\n text(min(xlim)+0.1*diff(xlim),min(ylim)+0.05*diff(ylim),labels=\"Baseline\",col=\"red\",pos=1,cex=0.75*scale)\n\n # Sample lag time\n lines(min(xlim)+c(0.1,0.25,0.50)*max(xlim),min(ylim)+c(0.05,0.05,0.4)*diff(ylim),col=\"red\",lty=2)\n text(min(xlim)+0.25*max(xlim),min(ylim)+0.05*diff(ylim),labels=\"Lag time\",col=\"red\",pos=1,cex=0.75*scale)\n \n # Sample achieved growth\n lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.1,0.7)*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.75*max(xlim),min(ylim)+0.3*diff(ylim),labels=\"Achieved growth\",col=\"black\",cex=0.75*scale)\n \n # Sample plateau - achieved growth\n lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.7,0.8)*diff(ylim),col=\"grey\",lty=3)\n text(min(xlim)+0.75*max(xlim),min(ylim)+0.75*diff(ylim),labels=\"Projected minus achieved growth\",col=\"grey\",cex=0.75*scale)\n \n # Symbol legend\n legend(x=\"right\", title = \"Timepoint Symbols\", legend = c(\"Normal point\", \"Ignored point\"),\n cex = 0.75*scale, pt.cex = c(0.6,0.6)*scale, pch = c(35,35), col=c(\"black\",\"gray80\"),\n x.intersp=1, xjust = 1, y.intersp=1.5)\n}\n\npdf.by.plate = function(fitted.data, out.prefix = \"\", upload.timestamp = NULL, \n out.dir = getwd(), unlog = F, constant.added, silent = T, overview.jpgs = T, plate.ncol = 12, plate.nrow = 8,...){\n \n # Prepare timestamp for addition to output file names. \n filename.timestamp = strftime(upload.timestamp, format=\"_%Y-%m-%d_%H.%M.%S\")\n \n # Start file list with the overview pdf\n file.list.out = paste(out.dir,\"/\",out.prefix, \"_overview\", filename.timestamp, \".pdf\",sep=\"\")\n \n # Call to draw a graphic representation of each plate in this file. \n pdf(file.list.out, title = paste(out.prefix, \"plate overview\"))\n plate.overview.out = try(plate.overview(fitted.data),silent=T)\n if(class(plate.overview.out) == \"try-error\")\n stop(\"Error in : \", plate.overview.out)\n \n # Close devices\n while(dev.cur() != 1)\n dev.off() \n \n # Cycle through each plate \n for(i in 1:dim(fitted.data)[3]){\n \n # Get plate ID and position in data array.\n plate.ID = dimnames(fitted.data)[[3]][i]\n plate.indices = (i-1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol)\n if(overview.jpgs){\n # most be > 1 to partition value breaks for heatmap\n well.matrix <- aapply(fitted.data[,,i], max.spec.growth.rate) \n num.wells <- length(well.matrix[!sapply(well.matrix, is.na)])\n if(num.wells > 1){\n #Heatmap block##########################################################\n #alongside the jpgs file create 3 heatmaps for each plate. NWD\n spec.heat.file = create.heatmap(fitted.data[,,i], max.spec.growth.rate)\n if(spec.heat.file == \"Error\")\n stop(\"Error in for specific growth\")\n lag.heat.file = create.heatmap(fitted.data[,,i], lag.time)\n if(lag.heat.file == \"Error\")\n stop(\"Error in for lag time\")\n total.heat.file = create.heatmap(fitted.data[,,i], achieved.growth)\n if(total.heat.file == \"Error\")\n stop(\"Error in for total growth\")\n # Add name of file if successfully written to file list output. Including heatmap files NWD\n file.list.out = c(file.list.out, spec.heat.file, lag.heat.file, total.heat.file)\n ########################################################################\n }\n jpg.name = paste(out.dir, \"/\", plate.ID, \"_overview\", \".jpg\", sep=\"\")\n jpeg(jpg.name, quality = 90, width = 600, height = 480)\n plate.overview.out = try(plate.overview(fitted.data[,,i]),silent = T)\n if(class(plate.overview.out) == \"try-error\")\n stop(\"Error in : \", plate.overview.out)\n }\n else\n jpg.name = c()\n \n # Open a separate PDF for each plate.\n if(!silent) cat(\"\\nprinting PDF for\", plate.ID)\n pdf.name = paste(out.dir, \"/\", plate.ID, \"_plots\", filename.timestamp, \".pdf\", sep=\"\")\n pdf(pdf.name, title = paste(\"R Graphics output for plate\", plate.ID))\n \n # Call to draw each well on the plate to the pdf. \n view.fit.out = try(view.fit(fitted.data, indices = plate.indices, unlog=unlog, constant.added=constant.added, user.advance=F,...),silent=T) \n \n if(class(view.fit.out) == \"try-error\")\n stop(\"Error in : \", view.fit.out)\n\n # Close all devices\n while(dev.cur() != 1)\n dev.off() \n \n if(!silent) cat(\"...done!\\n\\twritten to\", pdf.name, \"\\n\") \n file.list.out = c(file.list.out, jpg.name , pdf.name)\n }\n return(file.list.out)\n } \n", + "created" : 1425413258441.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "1576748553", + "id" : "2C8FAF10", + "lastKnownWriteTime" : 1428438949, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/plot.fit.R", + "project_path" : "R/plot.fit.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2FF709FD b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2FF709FD new file mode 100644 index 0000000..577cdb9 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/2FF709FD @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n# Notes by Jason\n# 9/07/11\n\n\n########################################################################\n# #\n# Function for loading data from tabular format into an object array #\n# #\n########################################################################\n#' Load tabular data\n#'\n#' This function handles loading data from tabular format (.csv, tab-delimited text or R data frame object)\n#' and returns an array of well objects, each filled with raw Time vs. OD data. \n#' It takes single-plate or multiple-plate format data. For single-plate data, \n#'it calls on the function \\code{gcat.reorganize.single.plate.data} to rearrange the table before creating the output object. \n#'\n#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data \n#' in the multiple-plate (long) format. \n#' @param input.data A list of tables representing input files read with \\code{read.table}. Used to save time in cases\n#' of running multiple analyses on the same dataset. If used, the function will ignore \\code{file.name} entirely.\n#' @param load.type .csv by default. \n#' @param plate.laout Specifies the layout of the given plate.\n#' @param single.plate.ID specifies a plate name for a single-plate read. If NULL, this is derived from the file name. \n#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD\n#' measurement in each well is used.\n#' @param add.constant A value for r in the log(OD + r) transformation.\n#' @param plate.nrow The number of rows in the input files.\n#' @param plate.ncol The number of columns in the input files.\n#' @param input.skip.lines specifies a plate name for a single-plate read. If NULL, this is derived from the file name. \n#' @param multi.column.headers The headers of the column when analyzing multiple plates.\n#' @param single.column.headers The headers of the column when analyzing a single plate.\n#' @param layout.sheet.headers The headers of the layout file.\n#' @param silent Surpress all messages.\n#' @param verbose Display all messages when analyzing each well.\n#' \n#' @return A list of well objects.\ngcat.load.data = function(file.name = NULL, load.type = \"csv\", input.data = NULL, single.plate.ID = NULL, \n plate.layout = NULL,plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n blank.value = NULL, start.index = 2, single.plate = F, silent = T){\n\n ########################################################################\n # Read from .csv, tab-delimited text file or data frame object #\n ########################################################################\n \n\tif(is.null(input.data)){\n\t\t# Either read from .csv.\n\t\tinput.data = read.csv(file.name, stringsAsFactors=F, skip = input.skip.lines, fileEncoding='UTF-8')\n\n\t\t# Determine single plate name if not specified. \n if (is.null(single.plate.ID)){\n # Split the file name by \".\" and discard the last member (file extension). \n single.plate.ID = strsplit(basename(file.name),\"\\\\.\")[[1]]\n single.plate.ID = paste(single.plate.ID[-length(single.plate.ID)],collapse=\".\")\n }\n\t\t}\n\n # Call to arrange data from a single plate format file\n\tif(single.plate)\n\t\tinput.data = gcat.reorganize.single.plate.data(input.data = input.data, single.column.headers,\n blank.value = blank.value, single.plate.ID = single.plate.ID, plate.nrow = plate.nrow, plate.ncol = plate.ncol, silent=silent)\n\n ########################################################################\n # Search for and standardize column headers in input data #\n ########################################################################\n \n # Go through the specified column headers, determining what their positions are in the \n # input data frame and if any are missing.\n \n # Get names of column headers in input data\n input.colnames = colnames(input.data)\n \n # Create a list denoting the column numbers in input data that match each of the specified column names, \n # and a separate list for any missing columns. \n \n column.matches = c()\n missing.list = NULL\n \n\tfor(i in 1:length(multi.column.headers)){\n\t\tif (multi.column.headers[i] %in% input.colnames)\n\t\t\tcolumn.matches[i] = min(which(input.colnames == multi.column.headers[i]))\n\t\t# Take the first column in input file that matches a specified column header.\n\t\telse{\n\t\t\tmissing.list = c(missing.list, i)\n\t\t}\n\t}\n\n # If any columns are missing, stop and report error with missing column names\n\tif (is.vector(missing.list)){\n\t\tmessage = \"The following columns:\"\n\t\tfor (i in missing.list)\n\t\t\tmessage = paste(message, paste(\" \", multi.column.headers[i]), sep = \"\\n\") \n\t\tstop(message, \"\\n were not found in the data file.\")\n\t\t}\n\n # Reorder and rename the columns, using the list of matching column numbers from above.\n\tinput.data = input.data[,column.matches]\n\tnames(input.data)[1:4] = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\") \n\n # Use 'substring' to split the alphanumeric \"Well\" field into row (letters) and column (numbers)\n\tinput.data$Well.row = substring(input.data$Well, 0,1)\n\tinput.data$Well.col = as.numeric(substring(input.data$Well, 2))\n\n\n ########################################################################\n # Create an array of well objects with the Time and OD data #\n ########################################################################\n #\n # Use the by function to split up the data frame into shorter segments by well (row, column and plate)\n \n\twell.array = by(data = input.data[,c(\"OD\", \"Time\")], \n INDICES = list(input.data$Well.row,input.data$Well.col,input.data$Plate.ID), \n FUN = function(x){data.frame(Time=x$Time, OD=x$OD,stringsAsFactors = F)}, simplify = F)\n\n \n # Then apply the function (found in well.class) to each member to create a well object\n well.array = aapply(well.array,function(x){well(x$Time,x$OD)})\n\n # Differentiate any duplicate plate names in the array's dimnames \n\tnew.dimnames = dimnames(well.array)\n for (i in length(new.dimnames[[3]]):1){\n\t\tif (any(new.dimnames[[3]][-i] == new.dimnames[[3]][i]))\n\t\t\tnew.dimnames[[3]][i] = paste(\"another_\", new.dimnames[[3]][i], sep = \"\")\t\n\t\t}\n\tdimnames(well.array) = new.dimnames\n\t\n # Copy the plate/row/column names found in the dimnames into the array objects themselves (use \"position\" slot)\n\tfor(plate in unique(dimnames(well.array)[[3]])){\n\t\tfor (col in unique(dimnames(well.array)[[2]])){\n\t\t\tfor(row in unique(dimnames(well.array)[[1]])){\n\t\t\t\twell.array[[row,col,plate]]@position = c(plate=plate,row=row,col=col)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n ########################################################################\n # Add plate layout information to well array #\n ########################################################################\n \n # Use the object to add media and strain information to the \"well.info\" slot of each well\n # Also set the value of the parameter in slot \"curve.par\" to T for empty wells. \n ########################################################################\n # Add plate layout information to well array #\n ########################################################################\n \n # Use the object to add media and strain information to the \"well.info\" slot of each well\n # Also set the value of the parameter in slot \"curve.par\" to T for empty wells. \n \n\n # If is not provided, do not add strain information, and assume all wells are inoculated. \n if(is.null(plate.layout)){ \n plate.layout = data.frame(Row=rep(PLATE.LETTERS[1:plate.nrow],plate.ncol),Column=rep(1:plate.ncol,each=plate.nrow),rep(\"Unknown Strain\",96),rep(\"Unknown Media\",96))\n colnames(plate.layout) = c(\"Row\", \"Column\", layout.sheet.headers)\n } \n else\n if(!silent) cat(\"\\n\\t\\tusing plate layout to fill well info.\")\n \n\tfor(plate in unique(dimnames(well.array)[[3]])){\n\t\tfor (col in unique(dimnames(well.array)[[2]])){\n\t\t\tfor(row in unique(dimnames(well.array)[[1]])){\n well = well.array[[row,col,plate]]\n # For each well on each plate, find the corresponding row in . \n # If refers to specific plates, then use those to find the correct row. \n # Otherwise, generalize across all plates. \n if (\"Plate.ID\" %in% names(plate.layout)) \n layout.row.number = which(plate.layout$Column==well@position[\"col\"] & \n plate.layout$Row==well@position[\"row\"] & \n plate.layout$Plate.ID==well@position[\"plate\"] ) \n else \n layout.row.number = which(plate.layout$Column==well@position[\"col\"] & \n plate.layout$Row==well@position[\"row\"])\n \n # Error if either no rows or more than one row matches the well\n if (length(layout.row.number) != 1)\n stop(\"incorrectly formatted plate layout! check names of columns, rows, and plates (if applicable).\")\n \n # Add any additional columns to the well's \"well.info\" slot\n well.info = plate.layout[layout.row.number,!(names(plate.layout) %in% c(\"Row\",\"Column\",\"Plate.ID\",layout.sheet.headers))]\n \n # Fix the column name issue if there is only one additional entry. \n if(length(well.info) == 1){\n well.info = data.frame(well.info,stringsAsFactors=F) \n names(well.info) = names(plate.layout)[!(names(plate.layout) %in% c(\"Row\",\"Column\",\"Plate.ID\",layout.sheet.headers))] \n } \n well@well.info = as.list(well.info)\n \n well@well.info$Strain = plate.layout[layout.row.number, layout.sheet.headers[1]]\n well@well.info$Media = plate.layout[layout.row.number, layout.sheet.headers[2]]\n \n # Set parameter in slot \"curve.par\" accordingly \n well@curve.par$empty.well = (plate.layout$Strain[layout.row.number] == \"Empty\") \n well.array[[row,col,plate]] = well\n\t\t\t\t}\n\t\t\t}\n\t\t}\n \n # Set start index value in each well\n well.array = aapply(well.array, function(x,start.index) { x@start.index = start.index; x }, start.index)\n \n ########################################################################\n # Return values to R #\n ######################################################################## \n # \n\t# Console output if desired, return the completed well array.\n\tif (!silent)\n\t\tcat(\"\\n\\t\", dim(well.array)[[3]], \"plates added to array from\", file.name)\n\treturn(well.array)\n\t}\n\n\n\n########################################################################\n# #\n# Reorganize data from single-plate input format before reading #\n# #\n########################################################################\n#\n# This function reorganizes the data frame from a single-plate format file. \n# input.data - data frame read straight from a single-plate format data file. \n# single.plate.ID - specifies a plate name for a single-plate read, since none is given in the single-plate format\n# The plate will be named Plate_1 unless otherwise specified. \n\ngcat.reorganize.single.plate.data = function(input.data, blank.value = NULL, single.column.headers, single.plate.ID = \"Plate_1\", \n plate.nrow = 8, plate.ncol = 12, silent=T){\n \n ########################################################################\n # Standardize the formatting and search for specified column names #\n ######################################################################## \n # \n # Locate the first and last rows from the table and return errors if not defined \n # Note: this only works if the time column is the first column\n \n\theader.row = min(which(input.data[,1] == single.column.headers[1])) \n if (length(header.row) != 1 | is.infinite(header.row))\n stop(\"could not locate header row in input file!\")\n \n # The last row: where column 2 starts to be blank, or the total number of rows, whichever is smaller \n extra.rows.start = min(which(input.data[-(1:header.row),2] == \"\"), which(is.na(input.data[-(1:header.row),2])), nrow(input.data[-(1:header.row),]))\n if (length(extra.rows.start) != 1 & is.infinite(extra.rows.start)) \n stop(\"could not locate last row in input file!\")\n\n # Use header row to rename the columns, then cut off extra rows (including the ones above header)\n\tnames(input.data) = as.character(unlist(input.data[header.row,]))\n input.data = input.data[(header.row+1):(header.row+extra.rows.start-1),]\n \n # Time column: allow for multiple matches to the name (since it's usually blank) but assume it's the first one\n\tTime.column = which(names(input.data) == single.column.headers[1])\n\tif (length(Time.column) != 1){\n if(!silent) cat(\"No unique time column in input.data file! Using the first one encountered.\")\n\t\tTime.column = min(Time.column)\n\t\t}\n # First well column (default A1): only allow for one match.\t\n\tWell.column.start = which(names(input.data) == single.column.headers[2])\n\tif (length(Well.column.start) != 1)\n\t\tstop(\"No unique start point for well columns in input.data file!\")\n\n # If the time column was found, rename it \"Time\" and reformat it into a numeric value\n # Adjust the blank measurement timestamp to -1 seconds if there is one\n\n names(input.data)[Time.column] = \"Time\"\n \n # Note: Some single plate screens have timepoints ending with \"s\" for seconds. \n # This line removes the \"s\" while maintaining general compatibility. \n\tinput.data$Time = unlist(strsplit(input.data$Time, \"s\"))\n\n # If is NULL (default - takes the first OD as the blank reading), then the first timepoint can labeled something non-numeric. \n # In that case, rename it to match the first real timepoint minus one. \n # when user input blank value, Blank timepoint i.e. input.data$Time[1] == Blank, labeled as \"Blank\" from data input file\n # It also should rename it to match the first real timepoint minus one. \n if(is.null(blank.value) || is.na(as.numeric(input.data$Time[1])))\n input.data$Time[1] = as.numeric(input.data$Time[2]) - 1\n \n ########################################################################\n # Start to fill the reformatted data frame #\n ######################################################################## \n \n # If all columns are present, make a list of all the wells.\n\twell.list = paste(rep(PLATE.LETTERS[1:plate.nrow], each = plate.ncol), rep(formatC(1:plate.ncol, digits = log(plate.ncol, 10), flag = \"0\"), plate.nrow), sep = \"\")\n\n #\tDuplicate the well names times the number of time measurements in each well\t\n Well = rep(well.list, each = length(input.data[,Time.column]))\t\n\t\t\n # Duplicate times the length of the entire output \n Plate.ID = rep(single.plate.ID, length(Well))\n\n # Duplicate the time column times the number of wells and convert to numeric\n\tTime = as.numeric(rep(input.data[,Time.column], times = length(Well.column.start:ncol(input.data))))\n\n # Append OD measurements from each well together and convert to numeric\n\tOD = c()\n\tfor (i in Well.column.start:ncol(input.data)){\n\t\tOD = as.numeric(c(OD, input.data[,i]))\n\t\tOD = unlist(OD)\n\t\t}\n\n # Fill and return the data frame containing the above four vectors.\n\toutput = data.frame(Plate.ID, Well, OD, Time)\t\n\t\n # Include any extra columns that were not Time or OD measurements?\n\tfor(i in (1:length(names(input.data)))[-c(Time.column,Well.column.start:ncol(input.data))]){\n\t\tnew.column = data.frame(rep(input.data[,i], length(Well.column.start:ncol(input.data))))\n\t\tnames(new.column) = names(input.data)[i]\n\t\toutput = cbind(output, new.column)\n\t\t}\t\n\treturn(output)\n}\n\n\n########################################################################\n# #\n# Function to combine two well array datasets by plate #\n# #\n########################################################################\n# ----------------------------------------------------------\n# This function can append together arrays created using \n# Arguments: any number of array objects as long as they are all output straight from \n\ngcat.append.arrays = function(...){\n\n # Transfer arrays to a list\n\targs.arrays = list(...)\n\tfirst.array = args.arrays[[1]]\n\tfirst.dims = dim(first.array)\n plate.nrow = args.arrays[[4]]\n plate.ncol = args.arrays[[3]]\n input.arrays = list(args.arrays[[1]], args.arrays[[2]])\n\tfor (i in 2:length(input.arrays)){\n\t\tnext.array = input.arrays[[i]]\n\t\tnext.dims = dim(next.array)\n\t\n # Check to make sure the arrays have proper dimensions for 96-well plate data\n if (!(all(c(first.dims[1], next.dims[1]) == plate.nrow) & all(c(first.dims[2], next.dims[2]) == plate.ncol)))\n\t\t\tstop(\"Data should have dimensions (\",plate.nrow,\",\",plate.ncol,\",n)!\")\n\t\t\n # If dimensions are alright, append dimensions and dimension names\t\n new.dims = c(plate.nrow,plate.ncol,first.dims[3]+next.dims[3])\n\t\tnew.names = dimnames(first.array)\n\t\tnew.names[[3]] = c(new.names[[3]], dimnames(next.array)[[3]]) \n\n # Differentiate duplicate names\n\t\tfor (i in length(new.names[[3]]):1){\n\t\t\tif (any(new.names[[3]][-i] == new.names[[3]][i]))\n\t\t\t\tnew.names[[3]][i] = paste(\"another_\", new.names[[3]][i], sep = \"\")\n\t\t\t}\n\t\n\t\t# Create a new array\n new.array = c(first.array, next.array)\n\t\tdim(new.array) = new.dims\n\t\tdimnames(new.array) = new.names\n\t\t\n # Update plate name in well objects\n\t\tfor (i in 1:length(unlist(new.array)))\n\t\t\tnew.array[[i]]@position[1] = new.names[[3]][floor((i-1)/96)+1]\n\t\t\n\t\t# Loop until complete\n\t\tfirst.array = new.array\n\t\tfirst.dims = dim(first.array)\n\t\t}\n\treturn(new.array)\n\t}\n\n\n########################################################################\n# #\n# Convert timestamps to hours from start and sort timepoints #\n# #\n########################################################################\n#\n# This function acts on a single well and modifies the raw data stored in slot \"screen.data\"\n# \n# input.well - an object of class well\n# time.format - specifies the time format. allowed values are \"%S\", for seconds, \"%d\", for days, or anything complying with ISO C / POSIX standards; see \n# note: reading directly from excel to R results in timestamps being converted to days.\n# start.index - which timepoint should be used as the starting time at inoculation?\n\ngcat.start.times = function(input.well, time.input, start.index = 2) { \n \n if(start.index > length(input.well))\n stop(\"Start index is greater than length of well!\")\n \n # If using a numeric time format, simply multiply times by the appropriate conversion factor\n\t# Conversion factor should be supplied to convert timestamps to hours. For example, \n # should be equal to 1/3600 if \"time\" is in seconds, 24 if \"time\" is in days, etc.\n\n time.format = time.input # Set default constant from rails user input\n \n if (is.numeric(time.format))\n\t\tinput.well@screen.data$Time = (input.well@screen.data$Time - min(input.well@screen.data$Time)) * time.format\n else{\n # Otherwise, convert timestamps from ISO C / POSIX to numeric values representing seconds (since the dawn of time?) and subtract out the initial value. \n\t\trtimes = input.well@screen.data$Time\n ptimes = strptime(as.character(rtimes),time.format)\n\t\tctimes = as.POSIXct(ptimes)\n\t\tint.times = unclass(ctimes)\n # Time will be in seconds, convert to hours by dividing by 3600\n\t\tinput.well@screen.data$Time = (int.times - min(int.times))/3600\n\t\t}\n\t# Sort raw data by timestamp and return the input.well\n\tinput.well@screen.data = input.well@screen.data[order(input.well@screen.data$Time),]\n \n input.well@screen.data$Time = input.well@screen.data$Time - input.well@screen.data$Time[start.index]\n \n if(all(is.na(input.well@screen.data$Time)))\n stop(\"Error in .\") \n rownames(input.well@screen.data) = NULL\n\treturn(input.well)\n }\t\n", + "created" : 1425413240737.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2796681086", + "id" : "2FF709FD", + "lastKnownWriteTime" : 1428438949, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/table2well.R", + "project_path" : "R/table2well.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/3DC2D3DA b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/3DC2D3DA new file mode 100644 index 0000000..be33fea --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/3DC2D3DA @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n# GCAT version 5.00\n# Notes by Jason\n# 08/18/2011\n\n# Initialization\n\n\nPLATE.LETTERS = paste(rep(c(\"\", LETTERS), each = 26), rep(LETTERS, 26), sep=\"\")\nglobal.version.number = packageDescription(pkg=\"GCAT\")$Version \n\n########################################################################\n# #\n# Top-level functions for analysis of screening data from .csv files. #\n# #\n########################################################################\n# This functions is called directly by the user interface.\n# They in turn call the main function (below) multiple times for each data file provided in . \n\n# Arguments:\n# file.list - a list of full paths to .csv files. all files must be in the same format (see )\n# single.plate - are the file in the single plate (wide) format vs. the multi-plate (long) format?\n# layout.file - (optional) provide full path to a layout file with strain and media definitions (applies to all files in list)\n\n# out.dir - name a directory to output the table of curve parameters to (defaults to working directory) \n# graphic.dir - name a directory to output the images of the fitted curves to (defaults to subdirectory \"pics\" of above)\n\n\n# add.constant- should be a numeric constant that will be added to each curve before the log transform (defaults to 1) \n# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n# growth.cutoff - minimum threshold for curve growth. \n# points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells.\n# remove.jumps - should the slope checking function be on the lookout for large jumps in OD?\n \n# silent - should messages be returned to the console?\n# verbose - should sub-functions return messages to console? (when I say verbose, I mean it!)\n\n# Returns:\n# if = F (default), avector of full paths to all the files generated by the function.\n# otherwise, the fitted array of well objects. \n\n# Use this function to analyze any set of .csv files using the same plate layout info. \n\n#' Analyze screening growth data from the given .csv files.\n#' \n#' Top-level GCAT function \n#' \n#' @param file.list A list of full paths to .csv files. all files must be in the same format (see )\n#' @param single.plate The file in the single plate (wide) format vs. the multi-plate (long) format?\n#' @param layout.file Full path to a layout file with strain and media definitions (applies to all files in list)\n#' @param out.dir A directory to output the table of curve parameters to (defaults to working directory) \n#' @param graphic.dir A directory to output the images of the fitted curves to (defaults to subdirectory \"pics\" of above)\n#' @param use.linear.param Whether to use linear parameters or not?\n#' @param use.loess Whether to use LOESS model or not?\n#' @param smooth.param Smoothing parameter for LOESS model.\n#' @param add.constant A numeric constant that will be added to each curve before the log transform (defaults to 1) \n#' @param blank.value User can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n#' @param growth.cutoff Minimum threshold for curve growth. \n#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells.\n#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD?\n#' @param time.input The time setting in which the current system is running?\n#' @param plate.nrow The number of rows in a plate.\n#' @param plate.ncol The number of columns in a plate.\n#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv \n#' @param multi.column.headers The headers of the result tabular data when analyzing multiple plates at once.\n#' @param single.column.headers The headers of the result tebaular data when analyzaing a single plate.\n#' @param layout.sheet.headers The headers of the layout file?\n#' @param silent Shoulde messages be returned to the console?\n#' @param verbose Should sub-functions return messages to console? (when I say verbose, I mean it!)\n#' @param overview.jpgs Should GCAT enable an overview image?\n#' \n#' @return A list of the output files.\ngcat.analysis.main = function(file.list, single.plate, layout.file = NULL, \n out.dir = getwd(), graphic.dir = paste(out.dir, \"/pics\", sep = \"\"), \n add.constant = 0.1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05,\n use.linear.param = F, use.loess = F, smooth.param=0.1,\n points.to.remove = 0, remove.jumps = F, time.input = NA,\n plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n silent = T, verbose = F, return.fit = F, overview.jpgs = T){\n\n # MB: Prototyping system unwanted argument guarding. Proper function \n # will be added in the future.\n # Not the best solution.\n if (is.na(time.input)) {\n if (single.plate)\n time.input = 1/3600\n else\n exception(\"Error: \", \"time.input is NA.\")\n }\n \n if (add.constant < 0)\n exception(\"Error: \", \"The constant r should not be negative.\")\n # End prototyping temporary solution.\n \n upload.timestamp = strftime(Sys.time(), format=\"%Y-%m-%d %H:%M:%S\") # Get a timestamp for the time of upload. \n fitted.well.array.master = list()\n source.file.list = c()\n \n dim(fitted.well.array.master) = c(plate.nrow,plate.ncol,0)\n dimnames(fitted.well.array.master) = list(PLATE.LETTERS[1:plate.nrow], 1:plate.ncol, c())\n \n for(file.name in file.list){\n \n # Call on the file with single plate options\n \tfitted.well.array = try(gcat.fit.main(file.name = file.name, load.type = \"csv\", \n single.plate = single.plate, layout.file = layout.file, start.index = start.index, \n time.input = time.input, add.constant = add.constant, blank.value = blank.value, \n growth.cutoff = growth.cutoff, points.to.remove = points.to.remove, remove.jumps = remove.jumps,\n \t use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=smooth.param,\n plate.nrow = plate.nrow, plate.ncol = plate.ncol, multi.column.headers = multi.column.headers, \n single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers,\n input.skip.lines = input.skip.lines, silent = silent, verbose = verbose), silent = T)\n \n # Return error message if the function fails.\n if(class(fitted.well.array) == \"try-error\")\n return(as.character(fitted.well.array)) \n }\n \n # Add fitted well array onto existing fitted wells\n fitted.well.array.master = gcat.append.arrays(fitted.well.array.master, fitted.well.array, plate.ncol, plate.nrow)\n \n # Remove the \"processed_\" tag from file names and add to the list of source files.\n source.file.list = c(source.file.list, basename(paste(strsplit(file.name, \"processed_\")[[1]],collapse=\"/\"))) \n\n out.files = try(gcat.output.main(fitted.well.array.master, out.prefix = \"output\", \n source.file.list = source.file.list, upload.timestamp = upload.timestamp, \n growth.cutoff = growth.cutoff, add.constant = add.constant, blank.value = blank.value, start.index = start.index, \n points.to.remove = points.to.remove, remove.jumps = remove.jumps, \n out.dir = out.dir, graphic.dir = graphic.dir, overview.jpgs=overview.jpgs,\n use.linear.param=use.linear.param, use.loess=use.loess, plate.ncol = plate.ncol, plate.nrow = plate.nrow,\n silent = silent), silent = T)\n \n # Return file list or error message otherwise return \"successful analysis\" message (?)\n\n # file.list = c(\"Data was successfully analyzed.\", file.list) # <--- yet to be implemented. causes errors downstream right now \n if(class(out.files) == \"try-error\") return(as.character(out.files)) \n \n if(return.fit) return(fitted.well.array.master)\n else return(out.files) \n}\n\n########################################################################\n# #\n# Main function for analysis of screening data from input tables. #\n# #\n########################################################################\n# This is the main function that handles all the analyses for files in both single and multiple plate formats. \n# It is called by the top level function \n#\n# It then calls the following functions on each member of the array: \n# - curve normalization and standardization: , , , , \n# - curve shape analysis before model fitting: , , \n# - to fit a nonlinear model to the growth data: \n# Finally, it returns the fitted array of well objects.\n\n#' Main analysis function for GCAT \n#' \n#' This is the main function that handles all the analyses for data files in both single and multiple plate formats. \n#' It is called by the top level function \\code{gcat.analysis.main} along with \\code{gcat.output.main}.\n#' \n#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data \n#' in the multiple-plate (long) format. \n#' @param input.data A list of tables representing input files read with \\code{read.table}. Used to save time in cases\n#' of running multiple analyses on the same dataset. If used, the function will ignore \\code{file.name} entirely.\n#' @param load.type .csv by default. \n#' @param layout.file Specifies the location of a layout file containing identifying information.\n#' @param single.plate Whether the GCAT is analyzing a single plate or not.\n#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD\n#'measurement in each well is used.\n#' @param start.index Which timepoint should be used as the first one after inoculation?\n#' @param time.input Either a character describing the format used to convert timestamps in the input to numbers\n#' representing number of seconds (see \\code{strptime}), or a factor to divide entries in the Time column by to get the \n#' numbers of hours.\n#' @param normalize.method Describes the method used by \\code{normalize.ODs} to normalize cell density values using blank reads.\n#' @param add.constant A value for r in the log(OD + r) transformation.\n#' @param use.log Should the analysis use log on all values.\n#' @param points.to.remove A vector of integers specifying which timepoints should be removed across all wells. \n#' By default(0) none are marked for removal.\n#' @param use.linear.param Should the linear parameter be used or not.\n#' @param use.loess Should the loess model be used or not.\n#' @param smooth.param If loess model is used, this parameter define the smoothing parameter for the loess model.\n#' @param fall.cutoff A cutoff used by \\code{check.slopes} to decide on thresholds for jumps and tanking.\n#' @param growth.cutoff A threshold used by check.growth to decide whether a well displays growth.\n#' @param remove.jumps Should jumps in OD detected by the subfunction \\code{check.slopes}?\n#' @param plate.nrow The number of rows in the input files.\n#' @param plate.ncol The number of columns in the input files.\n#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv \n#' @param multi.column.headers The headers of the column when analyzing multiple plates.\n#' @param single.column.headers The headers of the column when analyzing a single plate.\n#' @param layour.sheet.headers The headers of the layout file.\n#' @param growth.model What growth model should be used?\n#' @param backup.growth.model If the main growth model fails, the back up model will be used.\n#' @param silent Surpress all messages.\n#' @param verbose Display all messages when analyzing each well.\n#' \n#' @return An array of well objects \ngcat.fit.main = function(file.name, input.data = NULL, load.type = \"csv\", layout.file = NULL, \n single.plate = F, blank.value = NULL, start.index = 2, time.input = NA,\n normalize.method = \"default\", add.constant = 1, use.log = T, points.to.remove = 0,\n use.linear.param=F, use.loess=F, smooth.param=0.1,\n fall.cutoff = -0.0025, growth.cutoff = 0.05, remove.jumps = F, \n plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n growth.model = NA, backup.growth.model = NA, \n silent = F, verbose = F){\n \n # Explanation of arguments:\n \n # ---File Handling---\n # file.name - full path to an excel spreadsheet, .csv or tab-delimited text file, in either the single or multiple-plate format\n # input.data - use pre-loaded data set (output from function only). will override if not NULL \n # load.type - supports \"csv.\" \n # layout.file - full path to a file containing the plate layout in the same format as . will not be used if is \"xlsx\"\n\n # ---Input file format---\n # single.plate - true denotes data in single-plate format, i.e. simple OD output. false denotes multiple-plate robotic screening output. \n # note: reading directly from excel to R results in timestamps being converted to days.\n\n # ---Normalization and Transforms---\n # blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n # start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n # normalize.method - how should each growth curve be normalized? allowed values are:\n # \"first\": subtracts the first OD, assumed to be the blank, from all ODs\n # \"none\": does nothing, assumes no blank. highly recommend log(OD+1) transform in this case.\n # \"average.first\": forces all filled wells on each plate to match the average value at (after subtracting the first OD) \n # add.constant - a numeric constant that will be added to each curve before the log transform (defaults to 1)\n # use.log - should a log transform be applied to the data after normalization? \n # points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells.\n \n # ---Pre-fitting processing---\n # fall.cutoff - a cutoff value for determining whether OD falls significantly between two timepoints. see in prefit.processing.R for details. \n # growth.cutoff - a cutoff value for determining whether a well contains a successfully growing culture or not.\n # remove.jumps - should the slope checking function be on the lookout for large jumps in OD?\n \n # ---Model fitting---\n # model - which parametrized growth model to use? can be richards, gompertz, or logistic. models are defined as objects of class model, see \"model.class.R\"\n # backup.model - which model should be used if fitting using fails? should ideally be simpler than the main model (less parameters)\n \n # ---Miscellanous input/output preferences---\n # silent - should messages be returned to the console?\n # verbose - should sub-functions return messages to console? (when I say verbose, I mean it!) \n # unlog - should exported graphics be transformed back to the OD scale? \n # return.fit - should the function return an array of wells? if not, it will return a list of generated files. \n \n \t\n ########################################################################\n # Read from .csv file #\n ########################################################################\n #\n # The functions used here are found in table2well.R\n \n if(!silent) cat(\"\\nReading input files...\")\n # Read from .csv or tab-delimited text file using (in load.R)\n # if is provided, it will be used here. \n \n plate.layout = NULL \n # Read layout file if it is specified. \n if(!is.null(layout.file)){\n if(load.type==\"csv\") plate.layout = read.csv(layout.file,header=T,stringsAsFactors=F)\n else plate.layout = read.table(layout.file,header=T,sep=\"\\t\",stringsAsFactors=F) \n if(!silent) cat(\"\\n\\tAdded plate layout information from\", layout.file, \"\\n\")\n }\n \n # Load the data \n\t\twell.array = try(gcat.load.data(file.name = file.name, input.data = input.data, \n plate.layout = plate.layout, plate.nrow = plate.nrow, plate.ncol = plate.ncol, \n input.skip.lines = input.skip.lines, multi.column.headers = multi.column.headers, \n single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers,\n blank.value = blank.value, start.index = start.index, single.plate = single.plate, \n load.type = load.type, silent=silent),silent=silent)\n\n # Return an error if there is a problem with file loading. \n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n\t\t\n\n # !---At this point, is an array of well objects, each containing raw data and media/strain information if provided--- \n \n # Attempt to apply time formatting to all wells in array \n well.array = try(aapply(well.array, gcat.start.times, start.index = start.index, time.input = time.input),silent=silent)\n \n # Return an error if there is a problem with time formatting\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n ########################################################################\n # Perform normalization and transformation of raw data #\n ######################################################################## \n #\n # The functions used here are found in normalize.and.transform.R \n \n if(!silent) cat(\"\\nProcessing raw data...\")\n \n # Set all timepoints to active for now using \"points.to.remove=0\" argument with \n # adds an extra column to the \"well.array\" slot of each well specifying which points to remove when data is retrieved from the well\n well.array = aapply(well.array, remove.points, points = 0)\n \n # Normalize ODs using specified method and adding a constant if desired. \n # sets the \"norm\" slot of each well to a value to be subtracted from OD values whenever data is retrieved from the well\n well.array = try(normalize.ODs(well.array, normalize.method = normalize.method, \n start.index = start.index, blank.value = blank.value, add.constant = add.constant),silent=silent)\n \n # Return an error if there is a problem with normalization\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Transform ODs on the logarithmic scale, regardless of whether is true \n # an extra column of log-transformed values is added to the \"well.array\" slot of each well \n # the \"use.log\" slot of each well is set instead to determine whether the transformed values will be returned when data is retrieved from the well.\n well.array = try(aapply(well.array, transform.ODs, start.index = start.index, blank.value = blank.value, use.log = use.log, constant.added = add.constant),silent=silent)\n \n # Return an error if there is a problem with transformation\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Remove specified timepoints across wells (use \"points.to.remove=NULL\" if no points to remove) \n well.array = try(aapply(well.array, remove.points, points = points.to.remove),silent=silent)\n \n # Return an error if there is a problem with point removal\n if (class(well.array) == \"try-error\")\n stop(\"Error in : \", well.array) \n \n \n \n ########################################################################\n # Pre-fitting data processing (analysis of curve shapes) #\n ######################################################################## \n #\n # The functions used here are found in slope.analysis.R\n \n # Estimate slope at each timepoint \n # add a column to the \"well.array\" slot of each well with the local slope at each timepoint \n \n well.array = try(aapply(well.array, calculate.slopes, silent=!verbose),silent=silent)\n \n # Return an error if there is a problem with slope calculation\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Check slopes for tanking and/or jumping behavior\n # fills the \"curve.par\" slot of each well with , denoting the timepoint at which tanking starts (if none, value is NA) \n # uses to remove all points after \n # It will also fill the \"jump.error\" slot with a status message, and try to use an automated process to remove the \n # erroneous points if is true (default false). \n \n well.array = try(aapply(well.array, check.slopes, fall.cutoff = fall.cutoff, remove.jumps = remove.jumps, silent=!verbose, draw = F),silent=silent)\n \n # Return an error if there is a problem with slope analysis\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n \t\n # Check curves for growth above cutoff\n # fills the \"curve.par\" slot of each well with , denoting whether the well has no detectable growth. \n well.array = try(aapply(well.array, check.growth, growth.cutoff = growth.cutoff, start.index = start.index),silent=silent)\n \n # Return an error if there is a problem with growth.check\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n ########################################################################\n # Fit parameterized models to data #\n ######################################################################## \n #\n # The functions used here are found in fit.model.R \n \n # Fit each well with the selected model and attempt to catch failed fittings with the backup model \n # skips wells designated as above\n # fills the \"fit.info\" slot of each well with \"success,\" \"failed,\" or \"skipped\"\n # if fit was successful:\n # fills the \"equation\" and \"model.name\" slots with the relevant info for the successful model \n # fills the \"fit.par\" slot with fitted parameters if fit is successful \n \n if(!silent) cat(\"\\nFitting models to data...\")\n well.array = aapply(well.array, fit.model, growth.model=growth.model,\n backup.growth.model = backup.growth.model, use.linear.param=use.linear.param,\n use.loess=use.loess, smooth.param=smooth.param, silent=!verbose)\n \n # Return an error if there is a problem with model fitting\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n if(!silent) cat(\"\\ndone!\\n\") \n return(well.array) \n } \n \n \n########################################################################\n# #\n# Output function for generating files from fitted data. #\n# #\n######################################################################## \n#' Output function for generating files from fitted data.\n#' \n#' Handles files and directories, calls \\code{table.out}, \\code{plate.overview} and \\code{view.fit} \n#' to generate output tables and graphics.\n#' \n#' @param fitted.well.array A list of fitted well objects.\n#' @param out.prefix Prefix that is in the name of output files.\n#' @param blank.value User can enter a blank OD measurement for uninoculated wells. \n#' If NULL, defaults to the value of the first OD measurement of each well.\n#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n#' @param growth.cutoff Minimum threshold for curve growth.\n#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells.\n#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD?\n#' @param out.dir name a directory to output the table of curve parameters to (defaults to working directory) \n#' @param graphic.dir name a directory to output the images of the fitted curves to \n#' (defaults to subdirectory \"pics\" of above)\n#' @param overview.jpgs should jpgs be generated for each plate with the overview graphic? \n#' This is for backwards compatibility with the old web server. \n#' @param silent should messages be returned to the console?\n#' @param unlog should exported graphics be transformed back to the OD scale?\n#' @param constant.added (should be the same value as add.constant above) - \n#' used to readjust for the constant added during the log transform when plotting ODs. \n#' @return A list of output files if success.\n\ngcat.output.main = function(fitted.well.array, out.prefix = \"\", source.file.list, upload.timestamp = NULL, \n add.constant, blank.value, start.index, growth.cutoff, points.to.remove, remove.jumps, \n out.dir = getwd(), graphic.dir = paste(out.dir,\"/pics\",sep = \"\"), overview.jpgs = T,\n use.linear.param=F, use.loess=F, plate.nrow = 8, plate.ncol = 12,\n unlog = F, silent = T){ \n \n # Prepare timestamp for addition to output file names. \n filename.timestamp = strftime(upload.timestamp, format=\"_%Y-%m-%d_%H.%M.%S\")\n \t\n ########################################################################\n # Prepare to write to output files #\n ######################################################################## \t\n\t if(is.null(blank.value)) blank.value = \"First timepoint in well\"\n\t \n if(!silent) cat(\"\\nFinding/creating new output directories...\")\n \n old.wd = getwd() \n # Create output directory if it doesn't exist\n if(class(try(setwd(out.dir), silent = T)) == \"try-error\"){\n \tif(!silent) cat(\"\\ncreating new output directory\")\n \tif (class(try(dir.create(out.dir))) == \"try-error\")\n \t\tstop(\"Error creating new output directory!\")\n \t}\n \n # Create graphics directory if it doesn't exist\n if(class(try(setwd(graphic.dir), silent = T)) == \"try-error\"){\n \tif(!silent) cat(\"\\ncreating new graphics directory\")\n \tif (class(try(dir.create(graphic.dir))) == \"try-error\")\n \t\tstop(\"Error creating new graphics directory!\")\n \t}\n \t\n ########################################################################\n # Populate a data table with fit results and write to file #\n ######################################################################## \n # \n # The functions used here are found in table.output.R \n \n # Creates a table with a row for each well and a column for each of various identifiers and fitted and calculated parameters. \n \n if(!silent) cat(\"\\nPopulating data table...\")\n table.fit = try(table.out(fitted.well.array, filename.timestamp=filename.timestamp,use.linear.param=use.linear.param, use.loess=use.loess, constant.added=add.constant))\n \n # Return an error if there is a problem with returning the table\n if (class(fitted.well.array) == \"try-error\")\n \tstop(\"Error in : \", fitted.well.array)\n \t\n \t\n # Set working directory to \n\tif (class(try(setwd(out.dir))) == \"try-error\")\n\t\tstop(\"Error setting directory for table output\")\n\t\t\n\t# Write output table to file in \n table.filename = paste(out.dir, \"/\", out.prefix, \"_gcat.fit\", filename.timestamp, \".txt\", sep = \"\")\n if (class(try(write.table(table.fit, table.filename, sep = \"\\t\", row.names = F))) == \"try-error\")\n\t\tstop(\"Error writing tabular output\")\n\t\t\n \t# ---If successfully written, add postscript and start a list of generated files.\t\n generated.files = table.filename\n\n ########################################################################\n # Write individual fit and overview graphics to file #\n ######################################################################## \n # \n # The functions used here are found in graphic.output.R\n \n if(!silent) cat(\"\\nDrawing graphics...\")\n \n # Set working directory to \n\tif (class(try(setwd(graphic.dir))) == \"try-error\")\n\t\tstop(\"Error setting directory for graphic output\")\n\t# Use function to write fit graphics to file. \n \n\tgraphic.files = try(pdf.by.plate(fitted.well.array, out.prefix=out.prefix, upload.timestamp = upload.timestamp, \n unlog=unlog,constant.added=add.constant,overview.jpgs=overview.jpgs, plate.ncol = plate.ncol, plate.nrow = plate.nrow),silent=silent)\n \n if (class(graphic.files) == \"try-error\")\n\t\tstop(\"Error in : \", graphic.files)\n \n # If successfully written, add to the list of generated files.\t\n generated.files = c(generated.files, graphic.files)\n \n ########################################################################\n # Add a postscript to the output table with legend and file info. #\n ######################################################################## \n # \t\n sink(table.filename, append = T)\n analysis.timestamp = strftime(Sys.time(), format=\"%Y-%m-%d %H:%M:%S\")\n cat(\"\\n# Raw OD values are adjusted and log-transformed before fitting a growth curve as follows: log.OD = log(OD - blank + const) where blank is OD of blank medium and const is specified by the user (1 by default)\",\n \"\\n# Values are reported on the above 'log.OD' scale unless otherwise specified.\",\n \"\\n# .SE columns report standard errors of those values that are estimated directly as parameters of global sigmoid models.\",\n \"\\n# .OD columns report values back-transformed to the linear 'OD - blank' scale.\",\n \"\\n\")\n \n cat(\"\\n# -- Explanation of columns --\",\n \"\\n# - model: Name of the model the well was successfully fit with (if any)\",\n \"\\n# - lag.time: Lag time estimate inferred from the fitted model\",\n \"\\n# - inflection.time: inflection time point of the growth curve when drawn on the log scale\",\n \"\\n# - max.spec.growth.rate: maximum specific growth rate estimate inferred from the fitted model. Estimated as the first derivative of the growth curve at inflection time point\", \n \"\\n# - baseline: growth curve baseline. Global sigmoid model: baseline is parameter 'b' of the model. LOESS: baseline is the same as the lowest predicted log.OD value\",\n \"\\n# - amplitude: difference between upper plateau and baseline values. Global sigmoid model: amplitude is parameter 'A' of the model. LOESS: amplitude = max.log.OD - min.log.OD\",\n \"\\n# - plateau: upper asymptote value of the fitted model. Global sigmoid model: plateau = b + A. LOESS: plateau = max.log.OD\",\n \"\\n# - inoc.log.OD: log.OD value at inoculation. Estimated value from the fitted model is used, rather than the actual measurement\", \n \"\\n# - max.log.OD: maximal log.OD value reached during the experiment. Estimated value from the fitted model is used rather than the actual measurement\",\n \"\\n# - projected.growth: maximal projected growth over inoculation value. Global sigmoid model: projected.growth = plateau - inoc.log.OD. LOESS: not reported\",\n \"\\n# - achieved.growth: maximal growth over inoculation value actually achieved during the experiment. achieved.growth = max.log.OD - inoc.log.OD\",\n \"\\n# - shape.par: shape parameter of the Richard equation\",\n \"\\n# - R.squared: goodness of fit metric. Also known as coefficient of determination. R.squared is usually between 0 and 1. A value close to 1 indicates good fit.\",\n \"\\n# - RSS: residual sum of squares. Another goodness of fit metric. Smaller values indicate better fits.\",\n \"\\n# - empty: (Well indicator)\", \n \"\\n# - an 'E' indicates that the well was empty and no growth was detected. \",\n \"\\n# - an 'I' indicates that the well was inoculated and growth was detected above the threshold. \",\n \"\\n# - an 'E*' indicates that the well was empty and growth was detected (possible contamination). \",\n \"\\n# - an '!' indicates that the well was inoculated and no growth was detected. \",\n \"\\n# - asymp.not.reached: shows “L” if the bottom asymptote (baseline) was not reached and “U” if the upper asymptote (plateau) was not reached.\",\n \"\\n# - tank: (Tanking indicator) If a number is present then the growth trend was determined to tank at that timepoint index.\", \n \"\\n# - other: Additional flag column. Displays information about whether jumps in OD were detected and what was done about them.\",\n \"\\n# - pdf.file and page.no: location of the figure for this well in the output .pdf files.\"\n )\n \n\t # Analysis information \n \n cat(\"\\n#\\n# -- Source file information--\",\n \"\\n# \", paste(source.file.list, collapse = \"\\n# \"), \n \"\\n# analyzed using GCAT v\", global.version.number, \n \"\\n# request sent: \", upload.timestamp, \n \"\\n# completed: \", analysis.timestamp, \n \"\\n#\\n# -- Parameters used in current analysis --\",\n \"\\n# - Constant added to log(OD + n) transformation:\", add.constant,\n \"\\n# - Blank OD value: \", blank.value,\n \"\\n# - Index of inoculation timepoint\", start.index,\n \"\\n# - Minimum growth threshold:\", growth.cutoff, \n \"\\n# - Removed points:\", paste(points.to.remove, collapse = \" \"),\n \"\\n# - Jump detection:\", remove.jumps) \n sink()\n \n ########################################################################\n # Return values to R #\n ######################################################################## \n # \n\n if(!silent) cat(\"\\ndone!\") \n setwd(old.wd)\n # Return list of generated files\n\treturn(generated.files)\n }\n \n", + "created" : 1425413277808.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "1165231602", + "id" : "3DC2D3DA", + "lastKnownWriteTime" : 1428438949, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/GCAT.main.R", + "project_path" : "R/GCAT.main.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4DC8D1 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4DC8D1 new file mode 100644 index 0000000..9eb45ad --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4DC8D1 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# class definition and functions. Objects contain raw #\n# data from screening runs on single wells from 96-well plates, and #\n# other slots for processing and model-fitting details. #\n# #\n########################################################################\n\n# Windows OS compatibility\nSys.setlocale(locale=\"C\")\n#require(RExcelXML)\n\n# Treat nls and loess as S4 classes to avoid warnings\nsetOldClass(\"nls\")\nsetOldClass(\"loess\")\nsetClass(\"well\", representation(position = \"character\",\n\t\t\t\t\t well.info = \"list\",\n\t\t\t\t\t screen.data = \"data.frame\", \n start.index = \"numeric\",\n\t\t\t\t\t use.log = \"logical\",\n\t\t\t\t\t norm = \"numeric\",\n\t\t\t\t\t curve.par = \"list\", \n\t\t\t\t\t fit.par = \"list\",\n fit.std.err = \"list\",\n\t\t\t\t\t equation = \"expression\",\n\t\t\t\t\t model.name = \"character\",\n\t\t\t\t\t fit.info = \"character\",\n\t\t\t\t\t add.info = \"character\",\n inflection.time = \"numeric\",\n rss = \"numeric\",\n loess = \"loess\",\n nls = \"nls\"))\n\n# Slots:\n# position - 3-member vector containing identifying information for the well: row (letters), column (numbers) and plate ID. \n# well.info - a list containing strain and media names if provided\n# screen.data - a data frame with Time and raw OD values. This is the only slot that is filled upon creation of a well object. \n# as different functions are run on the well the data frame gets filled with additional columns. \n# use.log - a single logical value denoting whether to return log-transformed values when data is requested from the well\n# norm - a value to subtract from all OD values before returning data. filled by (see normalize.and.transform.R)\n# curve.par - a list of parameters that denote whether the well is empty, whether it contains ODs indicating a viable culture, whether it tanks at a certain timepoint. \n\n# if model fitting using is successful:\n# fit.par - will be a list containing the fitted model parameters\n# fit.std.err - will be a list containing the standard errors for the fitted model parameters\n# equation - will contain an expression for evaluating the successfully fitted model \n# model.name - will contain the name of the successfully fit model\n\n# fit.info - a message with info about whether the fit was successful, failed, or skipped. \n# add.info - a message with info about whether jumps in OD were detected or removed, or if ODs were detected below the blank OD.\n# inflection.time - the Time value at the point where the specific growth is located. no longer a formula param NWD\n# rss - residual sum of squares\n# loess - object returned by running loess on the normalized well data\n# nls - object returned by running nls on the normalized well data\n\nsetGeneric(\"getPosition\", function(object){standeardGeneric(\"getPosition\")})\nsetMethod(\"getPosition\", \"well\", \n function(object){\n return(object@position)\n })\n\nsetGeneric(\"getWellInfo\", function(object){standeardGeneric(\"getWellInfo\")})\nsetMethod(\"getWellInfo\", \"well\", \n function(object){\n return(object@well.info)\n })\n\nsetGeneric(\"getScreenData\", function(object){standeardGeneric(\"getScreenData\")})\nsetMethod(\"getScreenData\", \"well\", \n function(object){\n return(object@screen.data)\n })\n\nsetGeneric(\"getStartIndex\", function(object){standeardGeneric(\"getStartIndex\")})\nsetMethod(\"getStartIndex\", \"well\", \n function(object){\n return(object@start.index)\n })\n\nsetGeneric(\"getUseLog\", function(object){standeardGeneric(\"getUseLog\")})\nsetMethod(\"getUseLog\", \"well\", \n function(object){\n return(object@use.log)\n })\n\nsetGeneric(\"getNorm\", function(object){standeardGeneric(\"getNorm\")})\nsetMethod(\"getNorm\", \"well\", \n function(object){\n return(object@norm)\n })\n\nsetGeneric(\"getCurPar\", function(object){standeardGeneric(\"getCurPar\")})\nsetMethod(\"getCurPar\", \"well\", \n function(object){\n return(object@curve.par)\n })\n\nsetGeneric(\"getFitErr\", function(object){standeardGeneric(\"getFitErr\")})\nsetMethod(\"getFitErr\", \"well\", \n function(object){\n return(object@fit.std.err)\n })\n\nsetGeneric(\"getEquation\", function(object){standeardGeneric(\"getEquation\")})\nsetMethod(\"getEquation\", \"well\", \n function(object){\n return(object@equation)\n })\n\nsetGeneric(\"getModelName\", function(object){standeardGeneric(\"getModelName\")})\nsetMethod(\"getModelName\", \"well\", \n function(object){\n return(object@model.name)\n })\n\nsetGeneric(\"getFitInfo\", function(object){standeardGeneric(\"getFitInfo\")})\nsetMethod(\"getFitInfo\", \"well\", \n function(object){\n return(object@fit.info)\n })\n\nsetGeneric(\"getAddInfo\", function(object){standeardGeneric(\"getAddInfo\")})\nsetMethod(\"getAddInfo\", \"well\", \n function(object){\n return(object@add.info)\n })\n\nsetGeneric(\"getInflectionTime\", function(object){standeardGeneric(\"getInflectionTime\")})\nsetMethod(\"getInflectionTime\", \"well\", \n function(object){\n return(object@inflection.time)\n })\n\nsetGeneric(\"getRSS\", function(object){standeardGeneric(\"getRSS\")})\nsetMethod(\"getRSS\", \"well\", \n function(object){\n return(object@rss)\n })\n\nsetGeneric(\"getLoess\", function(object){standeardGeneric(\"getLoess\")})\nsetMethod(\"getLoess\", \"well\", \n function(object){\n return(object@loess)\n })\n\nsetGeneric(\"getnls\", function(object){standeardGeneric(\"getnls\")})\nsetMethod(\"getnls\", \"well\", \n function(object){\n return(object@nls)\n })\n\nsetGeneric(\"getFitPar\", function(object){standeardGeneric(\"getFitPar\")})\nsetMethod(\"getFitPar\", \"well\", \n function(object){\n return(object@fit.par)\n })\n\n# --------------------------------------------------------------------\n# Function to create a new well (requires only Time and OD vectors, which will fill slot \"screen.data\")\n# slots \"nls\" and \"loess\" are initialized to empty lists\nwell = function(Time = NULL, OD = NULL){\n x = list()\n class(x) = \"loess\"\n y = list()\n class(y) = \"nls\"\n\tnew(\"well\", screen.data = data.frame(Time, OD, stringsAsFactors=F), loess=x, nls=y)\n}\n\n# -----------------------------------------------------------------------\n#### A show method for well ####\nsetMethod(\"show\", \"well\",\n function(object) {\n print(\"Object of class well\")\n print(\"@position:\")\n print(object@position)\n print(\"@well.info:\")\n print(object@well.info)\n print(\"@screen.data:\")\n print(head(object@screen.data))\n print(\"...\")\n print(paste(nrow(object@screen.data),\"rows of data\"))\n print(paste(\"@start.index:\",object@start.index))\n print(paste(\"@use.log:\",object@use.log))\n print(paste(\"@norm:\",object@norm))\n print(\"@curve.par:\")\n print(object@curve.par)\n print(\"@fit.par:\")\n print(object@fit.par)\n print(\"@fit.std.err:\")\n print(object@fit.std.err)\n print(paste(\"@equation:\",object@equation))\n print(paste(\"@model.name:\",object@model.name))\n print(paste(\"@fit.info:\",object@fit.info))\n print(paste(\"@add.info:\",object@add.info))\n print(paste(\"@inflection.time:\",object@inflection.time))\n print(paste(\"@rss:\",object@rss))\n if (length(object@nls) > 0) {\n print(\"@nls:\")\n print(object@nls)\n } else {\n print(\"no nls model\")\n }\n if (length(object@loess) > 0) {\n print(\"@loess:\")\n print(object@loess)\n } else {\n print(\"no loess model\")\n }\n }\n )\n\n#### A plot method for well ####\n# x - object of class well\n# y - not used\n# constant.added - used to readjust for the constant added during the log transform: log.OD = log(OD - blank + constant.added)\n# xlim - x axis limits, vector of length 2\n# ylim - y axis limits, vector of length 2\n# scale - determines the font scale for the entire graph. all cex values are calculated from this\n# number.points - should points be labeled with numeric indices?\n# draw.symbols - should be called on the well and markings drawn on the graph?\n# show.text - show R^2 and growth curve parameters as text on the plot\n# show.calc - draw lines that illustrate growth curve parameters\n# draw.guess - initial guess model. Drawn if specified\n# well.number - the number of the well in an array of wells\n# ... - additional arguments passed to the generic plot function\n\nsetMethod(\"plot\",\n signature(x = \"well\", y=\"missing\"),\n function (x, y, constant.added = 1.0, xlim = NULL, ylim = NULL,\n well.number = NULL, scale = 1, number.points = T, draw.symbols = F, show.text = T, show.calc = T, draw.guess = NULL, ...) \n {\n # Determine the boundaries for the axes (if user did not specify them)\n if(is.null(ylim)){\n min.y = min(data.from(x, remove = F, remove.tanking = F)[,2], na.rm = T)\n min.y = min(min.y, x@fit.par$b)\n max.y = max(data.from(x, remove = F, remove.tanking = F)[,2], na.rm = T)\n max.y = max(max.y, x@fit.par$b + x@fit.par$A)\n ylim = c(min.y, min.y + (max.y-min.y)*1.15)\n }\n if(is.null(xlim)){\n min.x = min(data.from(x, remove = F, remove.tanking = F)[,1], na.rm = T)\n max.x = max(data.from(x, remove = F, remove.tanking = F)[,1], na.rm = T)\n xlim = c(min.x - 0.05 * (max.x-min.x), max.x)\n }\n \n \n # Title of plot: [well number] plate name; well name;\n # strain name; media name\n \n main = paste(plate.name(x), \" \", well.name(x), \"\\n\",\n strain.name(x), \"; \", media.name(x), sep = \"\")\n if (!is.null(well.number)) main = paste(\"[\", well.number , \"] \", main, sep=\"\")\n \n # Draw the data and symbols if is true.\n plot.data(x, main = main, scale = scale, constant.added=constant.added, \n number.points = number.points, draw.symbols = draw.symbols, xlim = xlim, ylim = ylim, ...)\n \n # Draw the fitted model.\n plot.model(x, scale = scale, constant.added=constant.added)\n \n # Draw text info if specified. \n if(show.text)\n draw.text(x, scale = scale * 0.5, xlim = xlim, ylim = ylim,...)\n \n # Show calculated parameters if specified. \n if (show.calc)\n draw.calc.par(x, scale = scale * 0.5, constant.added = constant.added)\n \n # Draw initial guess if a model is specified. \n if (class(draw.guess) == \"model\"){\n Time = data.from(x)$Time\n guess = eval(getExpression(draw.guess), as.list(getGuess(draw.guess)(x)))\n try(lines(Time, guess, col = \"brown2\"), silent = T)\n }\n }\n)\n\n########################################################################\n# Some miscellaneous functions to extract info from well objects #\n# Most of these return a single value from the well. #\n########################################################################\n#\n# Since many of these need to be applied to all wells over an array, while conserving the dimensions of \n# that array, this file includes a wrapper function (see bottom of file).\n\nplate.name = function(well)\n\tgetPosition(well)[1]\n\n# Return the full alphanumeric well name (with leading zeros if applicable)\nwell.name = function(well){\n\trow = getPosition(well)[2]\n\tcol = as.numeric(getPosition(well)[3])\n\tif (col>9)\n\t\tcol = as.character(col)\n\telse\n\t\tcol = paste(\"0\", col, sep = \"\")\n\n\tpaste(row,col,sep = \"\")\n\t}\n\nis.empty = function(well)\n\tgetCurPar(well)$empty.well\n\nlacks.growth = function(well)\n\tgetCurPar(well)$no.growth\n\ntanking.start = function(well)\n\tgetCurPar(well)$tanking.start\n\nremoved.points = function(well)\n\t(1:length(well))[getScreenData(well)$Remove]\n\nremaining.points = function(well,...){\n\tas.numeric(rownames(data.from(well,...)))\n\t}\n\nstrain.name = function(well){\n if(is.null(getWellInfo(well)$Strain))\n return(\"\")\n else\n return(getWellInfo(well)$Strain)\n }\nmedia.name = function(well){\n if(is.null(getWellInfo(well)$Media))\n return(\"\")\n else\n return(getWellInfo(well)$Media)\n }\n\nraw.data = function(well)\n\tdata.from(well, remove.tanking = F, remove = F, na.rm = F, raw.data = T)\n\ncontains.fit = function(well)\n\tlength(getFitPar(well)) > 0\n\nsetMethod(\"length\", signature(x = \"well\"), function(x) length(x@screen.data[,1]))\n\n# The function has some options: by default it returns a two-column data frame with time and OD \n# (or log OD if the slot is true in the object), after normalization to the value specified in slot. \n# - With set to true the rows specified in the column of the slot are not returned. \n# - With set to true all the rows after the index are removed. \n# - Setting to true overrides all these settings and just returns 2 columns with Time and Raw OD.\n\ndata.from = function(well, remove = T, remove.tanking = T, raw.data = F, na.rm = F){\n\t\n\tif (length(getUseLog(well)) == 0)\n\t\tOD.column = \"OD\"\n\telse if (getUseLog(well))\n\t\tOD.column = \"log.OD\"\n\telse\n\t\tOD.column = \"OD\"\n\t\n\tif (raw.data){\n\t\tOD.column = \"OD\"\n\t\tnorm = 0\n\t\t}\n\telse if (!getUseLog(well))\n\t\tnorm = getNorm(well)\n\telse\n\t\tnorm = 0\n\n\tif(remove.tanking & is.numeric(tanking.start(well)))\n\t\twell = remove.points(well, (tanking.start(well)):length(well))\n\tif (!remove | is.null(getScreenData(well)$Remove))\n\t\toutput = getScreenData(well)[c(\"Time\", OD.column)]\n\telse\n\t\toutput = getScreenData(well)[!getScreenData(well)$Remove ,c(\"Time\", OD.column)]\n\n\toutput[,2] = output[,2] - norm\n\n\tif (!raw.data){\n\t\tif (!length(getUseLog(well)))\n\t\t\tnames(output)[2] = \"Corrected.OD\"\n\t\tif (!getUseLog(well))\n\t\t\tnames(output)[2] = \"Corrected.OD\"\n\t\t}\n\n\tif (na.rm)\n\t\toutput[!is.na(output[,2]),]\t \n\telse\n\t\toutput\n\t}\n\n\n# Functions much like but gives a single vector containing the \n# slope at each point. Has a parameter allowing removal of NA values. \n\nslopes = function(well, remove = T, remove.tanking = T, na.rm = F){\n\n\tif(remove.tanking & is.numeric(tanking.start(well)))\n\t\twell = remove.points(well, (tanking.start(well)):length(well))\n\tif (!remove | is.null(getScreenData(well)$Remove))\n\t\toutput = getScreenData(well)$Slope\n\telse\n\t\toutput = getScreenData(well)$Slope[!getScreenData(well)$Remove]\n\n\tif (na.rm)\n\t\toutput[!is.na(output)]\t \n\telse\n\t\toutput\n\t}\n\n# -----------------------------------------------------------------------\n# Well array functions: these must be used on entire arrays of well objects\n# instead of single ones. \n\nplate.names = function(well.array)\n\tdimnames(well.array)[[3]]\n\ntanking.start.values = function(well.array, array = F){\n\tif (array)\n\t\taapply(well.array, function(well) tanking.start(well))\n\telse\n\t\tsapply(well.array, function(well) tanking.start(well))\n\t}\n\n", + "created" : 1425413290697.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2437520955", + "id" : "4DC8D1", + "lastKnownWriteTime" : 1425509121, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/class.well.R", + "project_path" : "R/class.well.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4E20D973 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4E20D973 new file mode 100644 index 0000000..ee62373 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/4E20D973 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n# Wrapper for sapply to use lapply over an array, conserving the dimensions.\naapply = function(x, FUN,...){\n dim.values = dim(x)\n\tdim.names = dimnames(x)\n\tx = lapply(x, function(x){FUN(x,...)})\n\tdim(x) = dim.values\n\tdimnames(x) = dim.names\n\treturn(x)\n\t}\n\n# A function to manually create an unchecked exception.\nexception = function(class, msg)\n{\n cond <- simpleError(msg)\n class(cond) <- c(class, \"MyException\", class(cond))\n stop(cond)\n}\n", + "created" : 1425413273698.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "3044086993", + "id" : "4E20D973", + "lastKnownWriteTime" : 1424208963, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/misc.R", + "project_path" : "R/misc.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/6FF7DC6F b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/6FF7DC6F new file mode 100644 index 0000000..a243cea --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/6FF7DC6F @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Populate an output table with parameters and other useful info for #\n# each well in a fitted dataset. #\n# #\n########################################################################\n#\n# unlog - Should OD values be returned on the linear scale instead of log-transformed scale? \n# constant.added - For returning values on linear scale, what constant was added to ODs before the log transform? \n# reach.cutoff - what proportion of the plateau OD must tbe reached by the last valid timepoint for the curve to be marked as reaching its plateau OD?\n#\n\ntable.out = function(fitted.data.set, unlog = F, constant.added, reach.cutoff = 0.90, filename.timestamp = NULL,use.linear.param=F, use.loess=F){\n \n # The idea is basically to use and on the fitted data array in order \n # to get one vector for each column of the output table. \n \n # Get identifying information (plate, well, media and strain names)\n plate.ID = unlist(aapply(fitted.data.set,plate.name))\n well.ID = unlist(aapply(fitted.data.set,well.name))\n media.ID = unlist(aapply(fitted.data.set,media.name))\n strain.ID = unlist(aapply(fitted.data.set,strain.name))\n # Get fit information for each well\n # - was it marked as empty in the plate layout?\n # - did the program find it to contain no growth (\"dead\")? \n # - was the fitting procedure successful? \n # - did the curve tank? if so, at what timepoint? if not, set value to \"-\"\n \n empty = unlist(aapply(fitted.data.set, is.empty))\n dead = unlist(aapply(fitted.data.set, lacks.growth))\n fit = unlist(aapply(fitted.data.set, contains.fit))\n tanking = unlist(aapply(fitted.data.set, tanking.start))\n tanking[is.na(tanking) | tanking == 1 | dead] = \"-\"\n \n # Get calculated values for each well: specific growth, final and initial OD, fitted plateau and baseline OD, lag time, etc.\n inflection.time = unlist(aapply(fitted.data.set, inflection.time))\n max.spec.growth.rate = unlist(aapply(fitted.data.set, max.spec.growth.rate))\n max.log.OD = unlist(aapply(fitted.data.set, max.log.OD))\n inoc.log.OD = unlist(aapply(fitted.data.set, inoc.log.OD))\n projected.growth = unlist(aapply(fitted.data.set, projected.growth))\n projected.growth.OD = unlist(aapply(fitted.data.set, projected.growth.OD, constant.added))\n achieved.growth = unlist(aapply(fitted.data.set, achieved.growth))\n achieved.growth.OD = unlist(aapply(fitted.data.set, achieved.growth.OD, constant.added))\n lag.time = unlist(aapply(fitted.data.set, lag.time))\n shape.par = unlist(aapply(fitted.data.set, shape.par))\n RSS = unlist(aapply(fitted.data.set, rss))\n baseline = unlist(aapply(fitted.data.set, baseline))\n amplitude = unlist(aapply(fitted.data.set, amplitude))\n plateau = unlist(aapply(fitted.data.set, plateau))\n ########################3h#############################################\n max.spec.growth.rate.SE = unlist(aapply(fitted.data.set, max.spec.growth.rate.SE))\n shape.par.SE = unlist(aapply(fitted.data.set, shape.par.SE))\n lag.time.SE = unlist(aapply(fitted.data.set, lag.time.SE))\n amplitude.SE = unlist(aapply(fitted.data.set, amplitude.SE)) # a.k.a amplitude error\n baseline.SE = unlist(aapply(fitted.data.set, baseline.SE)) # a.k.a baseline error\n #######################################################################\n \n # If the curve falls short of 90% of plateau OD by the final timepoint.\n no.reach.plateau = !unlist(aapply(fitted.data.set, reach.plateau, cutoff = 0.9))\n # If the fitted baseline is below zero on linear scale\n no.reach.baseline = unlog(baseline,constant.added) < 0\n \n # If any of these are NA as a result of failed fits, change them to false: they don't need to be reported. \n no.reach.plateau[is.na(no.reach.plateau)] = F\n no.reach.baseline[is.na(no.reach.baseline)] = F\n # What percent of the total growth does the curve actually reach? \n # (in case of total growth being 0, change this to 100%)\n percent.reach = 100*((max.log.OD - inoc.log.OD) / (projected.growth))\n percent.reach[is.infinite(percent.reach)] = 100\n \n # Return the name of the model (if any) that was successfully fit to the well. \n model.used = unlist(aapply(fitted.data.set, function(well)well@model.name))\n \n # \"Goodness of fit\" metric\n good.fit = unlist(aapply(fitted.data.set, model.good.fit))\n \n # Code the two flags: \n flag1 = flag2 = rep(\"-\", length(tanking))\n \n for(i in 1:length(tanking)){\t\n # Flag 1 (empty/inoculated flag) possible values:\n # well was empty and no growth was found (E)\n # well was empty, but growth was found (E*)\n # well was inoculated but no growth was found (!)\n # well was inoculated and growth was found (I)\n \n if(empty[i] & !fit[i])\n flag1[i] = \"E \"\n if(empty[i] & fit[i])\n flag1[i] = \"E*\"\n if(!empty[i] & dead[i])\n flag1[i] = \"! \"\n if(!empty[i] & !dead[i])\n flag1[i] = \"I \"\n \n # Flag 2 (lower/upper asymptotes) possible values:\n # well did not reach lower asymptote (baseline OD) (L)\n # well did not reach upper asymptote (plateau OD) (U)\n # well did not reach either asymptote (L/U)\n # well reached both asymptotes (-)\n \n if(no.reach.baseline[i]){\n if (no.reach.plateau[i])\n flag2[i] = \"L/U\"\n else\n flag2[i] = \"L\"\n }\n else{\n if (no.reach.plateau[i])\n flag2[i] = \"U\"\n else\n flag2[i] = \"-\"\n }\n # Also use the and and to provie more info about why model fitting failed in some cases. \n if(dead[i])\n model.used[i] = \": skipped\"\n else if(!empty[i] & !fit[i])\n model.used[i] = \": failed\"\t\n }\n \n # Flag 3: return the additional info slot. \n flag3 = unlist(aapply(fitted.data.set, function(well){\n if (length(well@add.info) > 0) \n return(well@add.info)\n else\n return(\"\")\n }))\n \n # If something is amiss with the data table use this to check on the arguments...\n #cat(\"plate \", length(plate.ID),\" well \", length(well.ID),\" media \", length(media.ID),\" strain \", length(strain.ID),\n #\" model \", length(model.used),\" max.spec.growth.rate\", length(max.spec.growth.rate), \"projected.growth\", length(projected.growth),\n #\"lag.time\", length(lag.time), \"inoc.log.OD\", length(inoc.log.OD), \"good.fit\",\n #length(good.fit),\"empty\", length(flag1),\"asymp\", length(flag2),\" tank \", length(tanking),\" reach \", length(percent.reach),\" other \", length(flag3), sep = \"\\n\")\n # 06.28.11: Add a row number identifier for output perusal\n row.number = 1:length(plate.ID)\n \n pdf.file = page.no = c()\n # 06.29.11: Add pdf file name and page number references. Prepare timestamp for addition to output file names (for file references in last column)\n for(i in 1:length(plate.ID)){\n pdf.file[i] = paste(plate.ID[i], \"_plots\", filename.timestamp, \".pdf\", sep=\"\")\n page.no[i] = (i-1) %% 96 + 2\n }\n # Slap it all together into a data frame.\n if(use.loess){\n output.core = data.frame(row = row.number, plate = plate.ID, well = well.ID, media = media.ID, strain = strain.ID, \n model = model.used, lag.time, inflection.time, max.spec.growth.rate, \n baseline, amplitude, plateau, inoc.log.OD, max.log.OD, achieved.growth,\n baseline.OD = unlog(baseline,constant.added), amplitude.OD = unlog(amplitude,constant.added), \n plateau.OD = unlog(plateau,constant.added), inoc.OD = unlog(inoc.log.OD,constant.added), \n max.OD = unlog(max.log.OD,constant.added), achieved.growth.OD = achieved.growth.OD,\n R.squared = good.fit, RSS = RSS, empty = flag1, asymp.not.reached = flag2, tank = tanking, other = flag3, pdf.file = pdf.file, page.no = page.no)\n } else {\n output.core = data.frame(row = row.number, plate = plate.ID, well = well.ID, media = media.ID, strain = strain.ID, \n model = model.used, lag.time = lag.time, lag.time.SE, inflection.time, max.spec.growth.rate, max.spec.growth.rate.SE, \n baseline, baseline.SE, amplitude, amplitude.SE, plateau, inoc.log.OD, max.log.OD, projected.growth, achieved.growth,\n baseline.OD = unlog(baseline,constant.added), amplitude.OD = unlog(amplitude,constant.added), \n plateau.OD = unlog(plateau,constant.added), inoc.OD = unlog(inoc.log.OD,constant.added), \n max.OD = unlog(max.log.OD,constant.added), projected.growth.OD = projected.growth.OD, achieved.growth.OD = achieved.growth.OD,\n shape.par = shape.par, shape.par.SE,\n R.squared = good.fit, RSS = RSS, empty = flag1, asymp.not.reached = flag2, tank = tanking, other = flag3, pdf.file = pdf.file, page.no = page.no)\n }\n \n # Add units to column names\n names2 = names(output.core)\n names2[grep(\"time\",names2)] = sub(\"$\",\", hrs\", names2[grep(\"time\",names2)])\n names2[grep(\"rate\",names2)] = sub(\"$\",\", log.OD/hr\", names2[grep(\"rate\",names2)])\n log.OD.fields = c(\"baseline\", \"baseline.SE\", \"amplitude\", \"amplitude.SE\", \"plateau\", \"projected.growth\", \"achieved.growth\")\n names2[names2 %in% log.OD.fields] = sub(\"$\", \", log.OD\", names2[names2 %in% log.OD.fields])\n names(output.core) = names2\n \n # Add on any additional fields found in the plate layout. \n all.layout.fields = sapply(fitted.data.set, function(well) unlist(well@well.info)) \n all.layout.fields = as.data.frame(t(all.layout.fields))\n \n \n addl.info = all.layout.fields[,!(names(all.layout.fields) %in% c(\"Strain\", \"Media\"))]\n if(!is.data.frame(addl.info)){\n addl.info = data.frame(addl.info)\n names(addl.info) = names(all.layout.fields)[!(names(all.layout.fields) %in% c(\"Strain\", \"Media\"))] \n }\n \n output = cbind(output.core,addl.info)\n \n return(output)\n}\n\n\n\n\n\n\n", + "created" : 1425413247086.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2376564637", + "id" : "6FF7DC6F", + "lastKnownWriteTime" : 1424208623, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/table.output.R", + "project_path" : "R/table.output.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/74C1CB00 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/74C1CB00 new file mode 100644 index 0000000..bcbbd2a --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/74C1CB00 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Normalize OD readings for an entire array of well objects #\n# #\n########################################################################\n#\n# Note: This function does not write any new OD values to the well objects in the array - it only \n# fills the \"norm\" slot of each well object in the array with a value that will be subtracted \n# from all OD measurements when returning data from the wells using the function (see well.class.R) \n#\n# These functions make use of which simply returns the raw time and OD of a well (also see well.class.R)\n#\n# well.array: an array of well objects. note this is the only normalization function that acts on an entire array instead of an individual well.\n# normalize.method: \n# - (default): subtracts the blank OD (either specified by or taken from the first timepoint as default) of each well from all timepoints in that well\n# - average.blank: subtracts the mean of all first OD timepoints on a plate from all timepoints in all wells on that plate\n# - average.first: takes the mean of the difference between the OD of the specified timepoint and the first timepoint of all wells on a plate\n# and subtracts this value from all timepoints in all wells on that plate\n# - anything else: do nothing\n# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n# add.constant: add a numeric constant to all timepoints in all wells. \nnormalize.ODs = function(well.array, normalize.method = \"default\", blank.value = NULL, start.index = 2, add.constant = 1){\n \n if (normalize.method == \"default\"){\n well.array = aapply(well.array, function(well, blank.value){\n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. \n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n # Set the blank OD (minus the constant to be added) to the \"norm\" slot of each well.\n \twell@norm = blank.value - add.constant\n \treturn(well)}, blank.value)\n }\n else if (normalize.method == \"average.blank\"){ \n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n\t\tblank.ODs = unlist(aapply(well.array, function(well, blank.value){\n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n return(blank.value)}, blank.value))\n\t\tplate.IDs = unlist(aapply(well.array, plate.name))\n\t\tblank.averages = tapply(blank.ODs, plate.IDs, mean)\n\t # Set this value (minus the constant to be added) to the \"norm\" slot of each well. \n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = blank.averages[plate.name(well)] - add.constant\n\t\t\treturn(well)})\n\t\t}\n\telse if (normalize.method == \"average.first\"){\n\t # Find the mean difference between starting OD (timepoint specified by ) and blank OD (first timepoint) for each plate\n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n blank.ODs = unlist(aapply(well.array, function(well, blank.value){\n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n return(blank.value)}, blank.value))\n\t\tfirst.ODs = unlist(aapply(well.array, function(well) raw.data(well)[start.index,2]))\n\t\tplate.IDs = unlist(aapply(well.array, plate.name))\n\t blank.averages = tapply(first.ODs-blank.ODs,plate.IDs,mean)\n\t # Set this value (minus the constant to be added) to the \"norm\" slot of each well.\n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = raw.data(well)[start,2] - blank.averages[plate.name(well)] - add.constant \n\t\t\treturn(well)})\n\t\t}\t\n\telse{\n # Simply set the negative constant to be added to the \"norm\" slot of each well. \n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = - add.constant\n \t\t\treturn(well)})\n\t\t}\n if(is.null(blank.value))\n well.array = aapply(well.array, remove.points, 1)\n return(well.array)\n\t}\n\n########################################################################\n# #\n# Log-transform OD readings for a single well object #\n# #\n########################################################################\n\n# Must include this so that the checking process will not complain about\n# inconsistency S3 generic/method. Though I don't know why.\ntransform <- function(input.well, ...) {\n UseMethod(\"transform\")\n}\n\n#' Transform.Ods \n#' \n#' This function adds a \"log.OD\" column to the \"screen.data\" slot of a well object with log-transformed data. \n#' The raw data is kept intact. \n#' It also checks to see if any of the raw OD values (before a certain timepoint) is below the blank OD. \n#' This can be disastrous for the log(OD) transform. \n#' @param input.well an object of class well \n#' @param use.log gets added to the \"use.log\" slot of the well object. this will determine whether the log-transformed data \n#' or raw normalized data is returned using the function \\code{data.from}. \n#' @param blank.value user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n#' @param start.index which timepoint should be used as the first one after inoculation (defaults to the 2th one) \n#' @param negative.OD.cutoff if any ODs below the specified blank value are detected before this index timepoint, the entire well is discarded. \ntransform.ODs = function(input.well, use.log = T, blank.value = NULL, start.index = 2, negative.OD.cutoff = 10, constant.added = 1.0, ...){\n \n # The default value for the log-transformed ODs will be NA. Valid values will be filled in. \n\tlog.OD = rep(NA, length(input.well))\n OD = raw.data(input.well)[,2]\n \n\t # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n if(is.null(blank.value))\n blank.value = OD[1]\n\n # Remove any points from the analysis that weren't already removed and fall below the blank value (using below)\n OD[input.well@screen.data$Remove] = NA\n \n negative.points = which(OD + 0.2 * constant.added < blank.value)\n if(length(negative.points) > 0)\n\t input.well = remove.points(input.well, negative.points)\n \n # If any points fall below the blank value by more than 0.2 * and before the cutoff index , remove the well from analysis. \n # First adjust the cutoff to compensate for curves that don't start at timepoint 1\n negative.OD.cutoff = negative.OD.cutoff + start.index - 1\n \n if(any(negative.points <= negative.OD.cutoff)){\n input.well = remove.points(input.well, rep(T,length(input.well)))\n input.well@add.info = paste(\"ODs at timepoint(s)\", paste(negative.points[negative.points <= negative.OD.cutoff],collapse=\" \"), \"were below blank OD; well discarded\")\n }\n\n # Take the natural log of the rest of the OD values (after subtracting the normalization value)\n log.OD[which(OD > input.well@norm)] = log(OD[which(OD > input.well@norm)] - input.well@norm)\n\t\n\t# Add a column to the \"screen.data\" slot of the well\n\tinput.well@screen.data$log.OD = log.OD\t\n\t# Update the \"use.log\" slot of the well \n\tinput.well@use.log = use.log\t\n\n\treturn(input.well)\n\t}\n\n########################################################################\n# #\n# Remove timepoints from the analysis but not from the raw data #\n# #\n########################################################################\n# \n# Removes timepoints from further analysis. Does not remove them from the raw data;\n# instead, this function creates or updates the Remove column in slot \"screen.data\" of the well which dictates whether \n# individual timepoints are returned using the function. \n#\n# can be a vector containing:\n# - any combination of positive and negative integers \n# the timepoints at indices corresponding to positive integers will be set to be removed.\n# the timepoints at indices corresponding to negative integers will be be re-added if they were previously set to be removed.\n# - a single zero, which resets all timepoints (nothing will be removed)\n# - a logical vector to replace the Remove column and which will be cycled along the length of the timepoints. \n\nremove.points = function(input.well, points){\n # Copy the Remove column or create a new one if it doesn't yet exist\n\tif (is.null(input.well@screen.data$Remove))\n\t\tRemove = rep(F, length(input.well))\n\telse\n\t\tRemove = input.well@screen.data$Remove\n\n # If is a logical vector, recycle it along the length of Remove \n\tif (length(points[!is.na(points)]) != 0){\n\t# Separate positive and negative integers\n \tif (is.logical(points) & !any(is.na(points)))\n \t\tRemove = rep(points,length.out=nrow(input.well@screen.data))\t\n \t\telse{\n \tpos = points[points > 0]\n \tneg = -points[points < 0]\n \tRemove[pos] = T\n \tRemove[neg] = F \n \t\t \t\n # If contains only zeros, reset the Remove vector to all F \t\n \tif (all(points == 0))\n \t\tRemove[1:length(Remove)] = F\n \t\t}\n }\n # replace the Remove column\n\tinput.well@screen.data$Remove = Remove\n\tinput.well\n\t}\n\n\n\n\n\n", + "created" : 1425413265888.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "3349576883", + "id" : "74C1CB00", + "lastKnownWriteTime" : 1428436335, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/normalize.and.transform.R", + "project_path" : "R/normalize.and.transform.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/907B51DB b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/907B51DB new file mode 100644 index 0000000..6ee699e --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/907B51DB @@ -0,0 +1,16 @@ +{ + "contents" : "# Default NAMESPACE created by R\n# Remove the previous line if you edit this file\n\n# Export all names\nexportPattern(\".\")\n\n# Import all packages listed as Imports or Depends\nimport(\"pheatmap\", \"gplots\")\n", + "created" : 1428439772005.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "749067415", + "id" : "907B51DB", + "lastKnownWriteTime" : 1423260997, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/NAMESPACE", + "project_path" : "NAMESPACE", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_namespace" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/992E3490 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/992E3490 new file mode 100644 index 0000000..f8ed693 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/992E3490 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead,\n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n########################################################################\n# #\n# class definition and functions. Objects contain equations #\n# and other information for parameterized growth curve models. #\n# #\n########################################################################\nsetClass(\"model\", representation(name = \"character\",\n expression = \"expression\",\n formula = \"formula\",\n guess = \"function\"))\n# Slots:\n# name - a simple description of the model.\n# expression - an object of class \"expression\" that evaluates the response (transformed OD) with respect to the variable Time.\n# formula - same as expression, but with y as the response.\n# guess - a function that computes initial guesses for the parameters given a well object with a valid \"screen.data\" slot\n# containing useable OD values and slope estimates\n# --------------------------------------------------------------------\n###################### BEGIN PROTOTYPING ACCESSOR METHODS##############\n\n# Minh: Let this code fragment be F1.\nif (!isGeneric(\"getName\")){\n if (is.function(\"getName\"))\n fun <- getName\n else\n fun <- function(object) standardGeneric(\"getName\")\n setGeneric(\"getName\", fun)\n}\n# End of F1\nsetMethod(\"getName\", \"model\", function(object) object@name)\n\n# Minh: Let this line be F2.\nsetGeneric(\"getExpression\", function(object){standardGeneric(\"getExpression\")})\n# Question: How is F1 different from F2?\n\nsetMethod(\"getExpression\", \"model\",\n function(object){\n return(object@expression)\n })\n\nsetGeneric(\"getFormula\", function(object){standeardGeneric(\"getFormula\")})\nsetMethod(\"getFormula\", \"model\", \n function(object){\n return(object@formula)\n })\n\nsetGeneric(\"getGuess\", function(object){standeardGeneric(\"getGuess\")})\nsetMethod(\"getGuess\", \"model\", \n function(object){\n return(object@guess)\n })\n######################## ENG PROTOTYPING ########################\n\n# Function to create a new model\n#' Model \n#' \n#' Function to create a new model \n#' @param name The name of the model \n#' @param expression Expression of the model \n#' @param formula The formula of this model \n#' @param guess The guess of this model \n#' @return The new model \nmodel = function(name, expression, formula, guess){\n new(\"model\", name = name, expression = expression, formula = formula, guess = guess)\n}\n\nloess.g = function(well,smooth.param=0.75){\n #data = data.from(well)\n #growth = data[,2]\n #Time = data[,1]\n Time = data.from(well)[,1]\n \n # predicted growth values to be used in estimating growth curve parameters\n loess.fit = loess(data.from(well)[,2]~Time,span=smooth.param)\n t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000)\n y = predict(loess.fit, data.frame(Time=t))\n attr(y,\"names\") = NULL # need to remove the names to prevent them from showing up in the returned vector\n \n # Remove any data points where y has not been estimated\n filt = is.finite(y)\n t = t[filt]\n y = y[filt] # remove any NA etc\n \n # specific growth using loess to find max derivative\n delta.t = diff(t)\n dydt = diff(y)/delta.t\n u = max(dydt)\n \n # lower and upper asymptotes\n b = min(y)\n A = max(y) - min(y)\n \n # inflection point\n inflection.pt.index = which.max(dydt)\n inflection.time = t[inflection.pt.index]\n inflection.y = y[inflection.pt.index]\n \n # lag time\n lam = inflection.time - (inflection.y-b)/u\n \n # Return named array of estimates\n c(A = A, b = b, lam = lam, u = u)\n}\n\n\n", + "created" : 1425419995370.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2225975310", + "id" : "992E3490", + "lastKnownWriteTime" : 1425511077, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/class.model.R", + "project_path" : "R/class.model.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/B0B7416E b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/B0B7416E new file mode 100644 index 0000000..30cb003 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/B0B7416E @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead,\n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n########################################################################\n# #\n# Fit a parameterized model to the growth data in a well object. #\n# #\n# There are now three modelling choices: #\n# 1) Sigmoid model (no linear param c) #\n# 2) Linear Sigmoid model #\n# 3) Loess (with optional smoothing parameter) #\n########################################################################\n#' fit.model \n#' \n#' This function will use the function stored in the \"guess\" slot of \\code{growth.model} to calculate initial guesses \n#' for growth.model parameters, then it will use the \"formula\" slot with \\code{nls} to fit a non-linear least squares \n#' \\code{growth.model} or Local Polynomial Regression Fitting to the data. Richards model is first fitted. \n#' If the shape parameter is statisticaly significant then Richards is used. If it is within 2 SE of 1 or Zero than \n#' a simpler model is preferred. If the Richards fit fails, then Logistic is tried. If it fails, Gompertz is tried. \n#' Model fit failure is reported if none of the models can sucessfully fit the data \n#' \n#' @param input.well The well needed to be fitted with the given model. \n#' @param growth.model What growth model should be used? \n#' @param backup.growth.model If \\code{gowth.mode} fails, this model will be used. \n#' @param fit.if.no.growth should the function attempt to fit a well even if there was no growth detected? default is F \n#' @param silent output back to R console? \n#' @param use.linear.param: Should an additional linear parameter (c) be used when fitting the data to the model? \n#' @param use.loess: Should Local Polynomial Regression Fitting (loess function) be used instead of nls? \n#' @param smooth.param: If loess is used, an optional smoothing parameter. Default is .6 \nfit.model = function(input.well, growth.model, backup.growth.model = NULL, fit.if.no.growth = F, \n use.linear.param=F, use.loess=F, smooth.param, silent = T){\n \n # Conditional breakpoint: go into debugging mode when fitting a specific well\n #if (input.well@position[\"row\"] == \"A\" && input.well@position[\"col\"] == \"12\") browser()\n \n # Change all relevant slots to or blank values\n input.well@model.name = \"\"\n input.well@fit.par = list()\n input.well@equation = expression()\n \n # Get OD vs. time data from well\n input.data = data.from(input.well, na.rm = T)\n \n # Skip well if in slot \"curve.par\" is set to true, and is false.\n if(!fit.if.no.growth & lacks.growth(input.well)){\n input.well@fit.info = \"skipped - no growth in well.\"\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n }\n # Skip well if there are fewer than 5 data points left in the analysis.\n if (length(input.data$Time) < 5){\n input.well@fit.info = \"skipped - not enough points.\"\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n }\n \n # Change column headers of input.data to the more general \"Time\" vs. \"y\"\n names(input.data) = c(\"Time\", \"y\")\n \n # Set a lower bound for nls model parameters A and b to slightly lower than min(y)\n low.y = min(input.data$y,na.rm=T)\n low.y = low.y - 0.1*abs(low.y)\n \n # Extract the model formula from (slot \"formula\")\n # Use the function from slot \"guess\" to calculate initial guesses for model parameters based on slope estimates in \n # Attempt to fit a nonlinear least squares odel using \n \n # Creating loess, logistics, richards, and gompertz model. \n loess.e = expression(\"loess\")\n loess.f = formula(Time ~ y)\n loess.model = model(\"local polynomial regression fit.\", loess.e, loess.f, loess.g)\n \n ### Testing accessor method for class model.\n #print(getName(loess.model))\n #print(getFormula(loess.model))\n #print(getGuess(loess.model))\n ### End testing ###\n \n remove(loess.e, loess.f)\n \n ########################################################################\n # Create the logistic 4-parameter model (when v ~ 1) #\n ########################################################################\n logistic.g = function(well,smooth.param=0.75) {\n loess.model@guess(well,smooth.param)\n }\n \n ########################################################################\n # Create the Richards 5-parameter model #\n ########################################################################\n richards.g = function(well,smooth.param=0.75){\n c(loess.model@guess(well,smooth.param),v=0.5)\n }\n \n ########################################################################\n # Create the Gompertz model (might be useful as a #\n # limiting case of Richards model when v ~ 0) #\n ########################################################################\n gompertz.g = function(well,smooth.param=0.75){\n loess.model@guess(well,smooth.param)\n }\n \n logistic.e = expression((A/(1+exp((4*u/A)*(lam-Time)+2)))+b)\n logistic.f = formula(y~(A/(1+exp((4*u/A)*(lam-Time)+2)))+b)\n logistic = model(\"logistic sigmoid.\", logistic.e, logistic.f, logistic.g)\n remove(logistic.e, logistic.f, logistic.g)\n \n richards.e = expression(A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b)\n richards.f = formula(y~A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b)\n richards = model(\"richards sigmoid\", richards.e, richards.f, richards.g)\n remove(richards.e, richards.f, richards.g)\n \n gompertz.e = expression(A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b)\n gompertz.f = formula(y~A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b)\n gompertz = model(\"gompertz sigmoid\", gompertz.e, gompertz.f, gompertz.g)\n remove(gompertz.e, gompertz.f, gompertz.g)\n \n \n \n # 3) Loess (with optional smoothing parameter)\n if(use.loess){\n number.of.points = nrow(input.well@screen.data)\n if (smooth.param <= 1/number.of.points)\n exception(\"Invalid input\", \"Smoothing parameter is out of range.\")\n \n fit = try(loess(y~Time, data=input.data, span=smooth.param), silent=TRUE)\n input.well@loess = fit\n if (class(fit) != \"loess\") stop(\"loess fit failed on well\", paste(input.well@position,collapse=\" \"))\n input.well@fit.info = \"Loess model fit successfully.\"\n input.well@model.name = loess.model@name\n input.well@equation = loess.model@expression\n # There are no estimated params, so just return the initial guesses\n input.well@fit.par = append(as.list(loess.model@guess(input.well,smooth.param)),list(\"smoothing parameter\"=smooth.param))\n # Note: since there are no params there are no Std. Errors either\n input.well@inflection.time = inflection.time(input.well)\n # calculate Rss for loess\n input.well@rss = sum((input.data$y-predict(fit))**2)\n } else {\n fit = fit.nls.model(input.well,richards)\n # should we use richards? Yes, unless the v param is close to 1 or Zero\n if(class(fit) == \"nls\"){\n rich.fit = fit # if v is significant or other fits consequently fail\n fit.par = as.list(coef(fit))\n # is fit similar to the Logistic?\n if(fit.par$v >= .5 && abs(fit.par$v-1) < 2*summary(fit)$parameters[\"v\",\"Std. Error\"] ){\n fit = fit.nls.model(input.well,logistic)\n input.well@fit.info = paste(\"Logistic model fit successfully.\")\n input.well@model.name = logistic@name\n input.well@equation = logistic@expression\n # is fit similar to Gompertz?\n }else if(fit.par$v < .5 && abs(fit.par$v) < 2*summary(fit)$parameters[\"v\",\"Std. Error\"]){\n fit = fit.nls.model(input.well,gompertz)\n input.well@fit.info = \"Gompertz model fit successfully.\"\n input.well@model.name = gompertz@name\n input.well@equation = gompertz@expression\n # v param is significant. stick with Richards\n }else{\n input.well@fit.info = paste(\"Richards model fit successfully.\")\n input.well@model.name = richards@name\n input.well@equation = richards@expression\n }\n # just in case logistic or gompertz failed to fit...\n if(class(fit) != \"nls\"){\n fit = rich.fit\n input.well@fit.info = paste(\"Richards model fit successfully.\")\n input.well@model.name = richards@name\n input.well@equation = richards@expression\n }\n } else{\n # Richards failed. try backup models\n fit = fit.nls.model(input.well,logistic)\n if(class(fit) != \"nls\"){\n # last resort try gompertz\n fit = fit.nls.model(input.well,gompertz)\n if(class(fit) != \"nls\"){\n input.well@fit.info = \"Model fitting failed.\" \n } else{\n input.well@fit.info = \"Gompertz model fit successfully.\"\n input.well@model.name = gompertz@name\n input.well@equation = gompertz@expression\n }\n }else{\n input.well@fit.info = paste(\"Logistic model fit successfully.\")\n input.well@model.name = logistic@name\n input.well@equation = logistic@expression\n }\n }\n }\n \n # If no error was reported by the model fitting, add coefficients to slot \"fit.par\",\n # Also add the Standard Errors for each parameter\n if (class(fit) == \"nls\"){\n input.well@nls = fit\n input.well@inflection.time = inflection.time(input.well)\n input.well@fit.par = as.list(coef(fit))\n rSs = sum(residuals(fit)**2)\n \n if (length(rSs) != 0)\n input.well@rss = rSs\n else \n input.well@rss = NA\n input.well@fit.std.err = as.list(summary(fit)$parameters[,\"Std. Error\"])\n }\n # Output to console\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n}\n\n# Fit nls model to a well using a specified model\n# Arguments:\n# input.well: object of class well\n# model: object of class model, e.g. richards, gompertz or logistic\nfit.nls.model <- function (input.well, model) {\n # Get OD vs. time data from well\n input.data = data.from(input.well, na.rm = T)\n # Change column headers of input.data to the more general \"Time\" vs. \"y\"\n names(input.data) = c(\"Time\", \"y\")\n \n # Set a lower bound for nls model parameters A and b to slightly lower than min(y)\n low.y = min(input.data$y,na.rm=T)\n low.y = low.y - 0.1*abs(low.y)\n \n # Set the initial guess\n start = model@guess(input.well)\n \n # Set lower bounds\n if (length(start) == 4) {\n lower = c(low.y,low.y,0,0)\n } else if (length(start) == 5) {\n lower = c(low.y,low.y,0,0,0.07)\n } else {\n stop(\"Unsupported model: \", model@name)\n }\n # Make sure initial guess values do not violate lower bounds\n start[start < lower] = lower[start < lower]\n \n # Fit the model\n try(nls(formula = model@formula, data = input.data, start = start, algorithm=\"port\", lower=lower), silent = TRUE)\n}\n", + "created" : 1425413287007.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2355348307", + "id" : "B0B7416E", + "lastKnownWriteTime" : 1425509229, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/fit.model.R", + "project_path" : "R/fit.model.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/E3886516 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/E3886516 new file mode 100644 index 0000000..6b8ffd1 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/per/t/E3886516 @@ -0,0 +1,17 @@ +{ + "contents" : "setwd(\"~/Downloads/\")\nfile.list = file.name = \"YPDAFEXglucoseTests_2-25-10.csv\"\nlayout.file = \"YPDAFEXglucoseTests_2-25-10_Layout.csv\"\nsingle.plate = T\nout.dir = getwd()\ngraphic.dir = paste(out.dir, \"/pics\", sep = \"\")\nadd.constant = 1\nblank.value = NULL\nstart.index = 2\ngrowth.cutoff = 0.05\nuse.linear.param = F\nuse.loess = F\nsmooth.param = 0.6\npoints.to.remove = 0\nremove.jumps = F\nsilent = F\nverbose = T\nreturn.fit = F\noverview.jpgs = T\nplate.nrow = 8\nplate.ncol = 12\ninput.skip.lines = 0\nmulti.column.headers = c(\"Plate ID\", \"Well\", \"OD\", \"Time\")\nsingle.column.headers = c(\"\",\"A1\")\nlayout.sheet.headers = c(\"Strain\", \"Media Definition\")\n\nt = gcat.analysis.main(file.list, single.plate, layout.file = NULL, \n out.dir = getwd(), graphic.dir = paste(out.dir, \"/pics\", sep = \"\"), \n add.constant = 1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05,\n use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=0.1,\n points.to.remove = 0, remove.jumps = F, time.input = NA,\n plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n silent = F, verbose = F, return.fit = F, overview.jpgs = T)\n", + "created" : 1425413468083.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "3533220190", + "id" : "E3886516", + "lastKnownWriteTime" : 1425422563, + "path" : "~/Documents/GCAT4/trunk/R/GCAT/R/addingParams.R", + "project_path" : "R/addingParams.R", + "properties" : { + "tempName" : "Untitled1" + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/11120BC5 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/11120BC5 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/11120BC5 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/246004C1 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/246004C1 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/246004C1 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2A2D32C6 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2A2D32C6 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2A2D32C6 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2E01469A b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2E01469A new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/2E01469A @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3349C922 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3349C922 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3349C922 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3E229DBB b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3E229DBB new file mode 100644 index 0000000..32390ac --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3E229DBB @@ -0,0 +1,3 @@ +{ + "tempName" : "Untitled1" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3F8DCF42 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3F8DCF42 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/3F8DCF42 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/41E3FF1E b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/41E3FF1E new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/41E3FF1E @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/4E0B0FCA b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/4E0B0FCA new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/4E0B0FCA @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/54A894D0 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/54A894D0 new file mode 100644 index 0000000..32390ac --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/54A894D0 @@ -0,0 +1,3 @@ +{ + "tempName" : "Untitled1" +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/61AC4784 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/61AC4784 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/61AC4784 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8250000E b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8250000E new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8250000E @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8341E8EB b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8341E8EB new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8341E8EB @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8CEE19EC b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8CEE19EC new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/8CEE19EC @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9127986F b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9127986F new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9127986F @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/972C75E0 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/972C75E0 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/972C75E0 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9D1E246E b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9D1E246E new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/9D1E246E @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/A3297EED b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/A3297EED new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/A3297EED @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/ADFC007A b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/ADFC007A new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/ADFC007A @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/B005EA5F b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/B005EA5F new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/B005EA5F @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/BA83F0DB b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/BA83F0DB new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/BA83F0DB @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DB5E821B b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DB5E821B new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DB5E821B @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DEDB5126 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DEDB5126 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/DEDB5126 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E533697B b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E533697B new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E533697B @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E98DE888 b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E98DE888 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/E98DE888 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/EDBD9DE b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/EDBD9DE new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/EDBD9DE @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/INDEX b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/INDEX new file mode 100644 index 0000000..0543b58 --- /dev/null +++ b/R/GCAT/.Rproj.user/7CB73FCA/sdb/prop/INDEX @@ -0,0 +1,18 @@ +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FNAMESPACE="972C75E0" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2FGCAT.main.R="11120BC5" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2FaddingParams.R="54A894D0" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fclass.model.R="9127986F" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fclass.well.R="8250000E" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Ffit.model.R="3F8DCF42" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Ffitted.calculations.R="E533697B" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fmisc.R="8341E8EB" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fnormalize.and.transform.R="EDBD9DE" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fplot.fit.R="2E01469A" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Fslope.analysis.R="4E0B0FCA" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Ftable.output.R="B005EA5F" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2FR%2Ftable2well.R="A3297EED" +~%2FDocuments%2FGCAT4%2Ftrunk%2FR%2FGCAT%2Fman%2Fgcat.load.data.Rd="2A2D32C6" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2FGCAT.main.R="61AC4784" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2FaddingParams.R="DEDB5126" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Fclass.model.R="8CEE19EC" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Ffit.model.R="9D1E246E" diff --git a/R/GCAT/DESCRIPTION b/R/GCAT/DESCRIPTION new file mode 100755 index 0000000..bff0405 --- /dev/null +++ b/R/GCAT/DESCRIPTION @@ -0,0 +1,17 @@ +Package: GCAT +Title: Growth Curve Analysis Tool +Description: Imports high-throughput growth curve data from microtiter + plate reads in .csv format and performs non-linear + regression using the Richards, Logistic, or Gompertz functions. + Richards is used unless the shape parameter is not significant. + Local polynomial regression can be performed as well. + GCAT estimates important growth characteristics + (specific growth rate, maximum growth capacity, and lag time) + for each well in a read. + The code was written by Jason Shao (no longer at GLBRC) and Nate DiPiazza. +Version: 5.0 +Depends: pheatmap, gplots +Maintainer: Yury Bukhman +License: LGPL-3 +Date: 2014-02-10 +Author: Jason Shao, Nate DiPiazza , Minh Duc Bui, Yury V Bukhman diff --git a/R/GCAT/GCAT.Rproj b/R/GCAT/GCAT.Rproj new file mode 100644 index 0000000..f7442a1 --- /dev/null +++ b/R/GCAT/GCAT.Rproj @@ -0,0 +1,17 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Package +PackageInstallArgs: --no-multiarch --with-keep.source +PackageRoxygenize: rd diff --git a/R/GCAT/NAMESPACE b/R/GCAT/NAMESPACE new file mode 100755 index 0000000..55fdde5 --- /dev/null +++ b/R/GCAT/NAMESPACE @@ -0,0 +1,8 @@ +# Default NAMESPACE created by R +# Remove the previous line if you edit this file + +# Export all names +exportPattern(".") + +# Import all packages listed as Imports or Depends +import("pheatmap", "gplots") diff --git a/R/GCAT/R.Rproj b/R/GCAT/R.Rproj new file mode 100644 index 0000000..f7442a1 --- /dev/null +++ b/R/GCAT/R.Rproj @@ -0,0 +1,17 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Package +PackageInstallArgs: --no-multiarch --with-keep.source +PackageRoxygenize: rd diff --git a/R/GCAT/R/.Rhistory b/R/GCAT/R/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/69756148 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/69756148 new file mode 100644 index 0000000..1305dca --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/69756148 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Functions to calculate various things about wells based on fit model #\n# #\n########################################################################\n#\n# Common arguments:\n# fitted.well - should be a well containing the results of , most functions will return NA if well has not been fit yet.\n# unlog - should the value be returned on the linear scale as opposed to the log-transformed scale?\n# constant.added - for returning values on the linear scale, what was the constant added before the log transform?\n# digits - passed to the function, default is no rounding (infinity digits)\n\nunlog = function(x, constant.added) {\n ########################################################################\n # Transform values back to OD scale #\n ########################################################################\nexp(x) - constant.added\n}\n\nwell.eval = function(fitted.well, Time = NULL){\n ########################################################################\n # Evaluate estimated OD at any timepoints using the fitted model #\n ########################################################################\n\n # If no timepoints are provided, use the ones collected in the experiment itself.\n\tif(!is.numeric(Time))\n\t\tTime = data.from(fitted.well)$Time\n\n # Use of equation is deprecated. Use nls and loess models stored in the well object instead\n # Attempt to use with the fitted equation and parameters to get estimates for OD at the given timepoints.\n\t#output = try(eval(fitted.well@equation, fitted.well@fit.par), silent = T)\n \n # Predict log.OD value(s) using nls model if present. If no nls model, try using loess.\n if (length(fitted.well@nls)>0) {\n output = try(predict(fitted.well@nls,list(Time=Time)),silent=T)\n } else if (length(fitted.well@loess)>0) {\n output = try(predict(fitted.well@loess,Time),silent=T)\n } else {\n output = NA\n }\n\n # Return values. If OD evaluation failed for any reason, return NULL.\n if (is.numeric(output)){\n return(output)\n } else {\n return(NULL)\n\t}\n}\n\nmodel.residuals = function(fitted.well, unlog = F){\n ########################################################################\n # Evaluate model residuals using the measured vs. fitted log.OD values #\n ########################################################################\n\tmeasured.OD = data.from(fitted.well)[,2]\n\n\t# Use with no Time argument to get fitted OD values at measured timepoints.\n\tpredicted.OD = well.eval(fitted.well)\n\n\t# If all values are valid, return the differences\n\tif (!is.numeric(predicted.OD))\n\t\treturn(NA)\n\telse\n return(measured.OD - predicted.OD)\n\t}\n\ndev.from.mean = function(fitted.well){\n ########################################################################\n # Evaluate deviations of log.OD values from the mean #\n ########################################################################\n measured.ODs = data.from(fitted.well,remove=T,na.rm=T)[,2]\n \n # Get the mean values of these measured ODs.\n mean.ODs = mean(measured.ODs)\n \n if (!is.numeric(mean.ODs))\n return (NA)\n else\n return (measured.ODs - mean.ODs)\n}\n\nrss = function(fitted.well){\n #######################################################################\n # Get the residual sum of square. #\n #######################################################################\n if (length(fitted.well@rss) == 0)\n return (NA)\n else\n return (fitted.well@rss)\n}\n\nmodel.good.fit = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate a metric for fit accuracy using squared residuals #\n ########################################################################\n\n # Sum of squared residuals\n\tRSS = rss(fitted.well)\n \n # Total sum of squared\n tot = sum(dev.from.mean(fitted.well)^2)\n \n # Coefficient of determination\n return (1 - RSS/tot)\n\t}\n\nparameter.text = function(fitted.well){\n ########################################################################\n # Output a string with values of fitted parameters #\n ########################################################################\n \n # Get a list of fitted parameters\n fit.par = fitted.well@fit.par\n \n # Giving the parameter text descriptive names.\n if (length(fitted.well@fit.par) != 0){\n names(fit.par)[1] = \"A\" \n names(fit.par)[2] = \"b\" \n names(fit.par)[3] = \"lambda\" \n names(fit.par)[4] = \"max.spec.growth.rate\" \n \n if (fitted.well@model.name == \"richards sigmoid\"){ \n names(fit.par)[5] = \"shape.par\" \n } \n \n if (fitted.well@model.name == \"richards sigmoid with linear par.\"){ \n names(fit.par)[5] = \"shape.param\" \n names(fit.par)[6] = \"linear term\"\n } \n \n if (fitted.well@model.name == \"logistic sigmoid with linear par.\")\n names(fit.par)[5] = \"linear.term\"\n \n # if loess, just show smoothing param\n if(fitted.well@model.name == \"local polynomial regression fit.\")\n fit.par = fitted.well@fit.par[\"smoothing parameter\"]\n }\n \n # Return nothing if the list is empty. Otherwise, concatenate the terms in the list with the parameter names.\n\tif(!is.list(fit.par))\n\t\treturn()\n else{\n \toutput = \"\"\n \ti = 1\n \twhile(i <= length(fit.par)){\n \t\toutput = paste(output, names(fit.par)[i], \"=\", round(as.numeric(fit.par[i]),3), \"; \", sep = \"\")\n \t\ti = i + 1\n if (i %% 6 == 0)\n output = paste(output, \"\\n\")\n \t\t}\n \toutput\n \t}\n\t}\n\nmax.spec.growth.rate = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate maximum specific growth rate #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n round(fitted.well@fit.par$u,digits)\n}\n\n\nplateau = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate plateau log.OD from fitted parameters #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n plat = fitted.well@fit.par$A + fitted.well@fit.par$b\n \n\tif (!is.numeric(plat)) {\n\t plat = NA\n\t} else {\n plat = round(plat, digits)\n\t}\n\treturn(plat)\n}\n\nbaseline = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate baseline log.OD from fitted parameters #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n\n base = fitted.well@fit.par$b\n\n # If A (plateau OD) is invalid, return NA.\n\tif (!is.numeric(fitted.well@fit.par$A))\n\t\tbase = NA\n # If b (baseline OD) is invalid but plateau OD was valid, return zero.\n else if (!is.numeric(base))\n\t\tbase = 0\n\telse{\n\t\t base = round(base, digits)\n\t\t}\n\treturn(base)\n\t}\n\ninoc.log.OD = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate log.OD at inoculation from fitted parameters #\n ########################################################################\n\n # Evaluated the fitted model at the inoculation timepoint (should be zero from using from table2wells.R)\n\tif (is.null(well.eval(fitted.well)))\n\t\treturn(NA)\n else{\n inoc.time = fitted.well@screen.data$Time[fitted.well@start.index]\n inoc.log.OD = well.eval(fitted.well, inoc.time)\n if (is.na(inoc.log.OD)) inoc.log.OD = fitted.well@fit.par$b # need this in a special case: loess fits with start.index = 1 \n return(round(inoc.log.OD, digits))\n }\n\t}\n\n\nmax.log.OD = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate max log.OD from model fit #\n ########################################################################\n\n # Evaluated the fitted model at the final timepoint (just the last valid timepoint in the experiment)\n\tif (is.null(well.eval(fitted.well)))\n\t\treturn(NA)\n else{\n \treturn(round(max(well.eval(fitted.well),na.rm=T), digits))\n }\n}\n\n\nprojected.growth = function(fitted.well,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n\tplateau(fitted.well,digits) - inoc.log.OD(fitted.well,digits)\n}\n\nprojected.growth.OD = function(fitted.well,constant.added,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n value = unlog(plateau(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added)\n round(value,digits)\n}\n\n\nachieved.growth = function(fitted.well,digits=Inf) {\n ########################################################################\n # Calculate achieved growth: max.log.OD minus the inoculated log.OD #\n ########################################################################\n max.log.OD(fitted.well,digits) - inoc.log.OD(fitted.well,digits)\n}\n\nachieved.growth.OD = function(fitted.well,constant.added,digits=Inf) {\n ########################################################################\n # Calculate projected growth: plateau minus the inoculated log.OD #\n ########################################################################\n value = unlog(max.log.OD(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added)\n round(value,digits)\n}\n\nreach.plateau = function(fitted.well, cutoff = 0.75){\n ########################################################################\n # Did the curve come close to the plateau OD during the experiment? #\n ########################################################################\n\n plat = plateau(fitted.well)\n inoc = inoc.log.OD(fitted.well)\n final = max.log.OD(fitted.well)\n\n\tif (!is.na(final)){\n # If the plateau is the same as the OD at inoculation, return TRUE\n if ((plat - inoc) == 0)\n return(T)\n # If the difference between the final OD and inoculation OD is at least a certain proportion\n # of the difference between the plateau and inoculated ODs, return TRUE.\n else\n return((final - inoc) / (plat - inoc) > cutoff)\n\t\t}\n\telse\n\t\treturn(T)\n\t\t# If no final OD was calculated (if curve was not fit properly) just return T.\n\t}\n\n\nlag.time = function(fitted.well, digits = Inf){\n ########################################################################\n # Calculate the lag time from the fitted OD #\n ########################################################################\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n fitted.well@fit.par$lam\n}\n\n# new params for GCAT 4.0\n\namplitude = function(fitted.well){\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n \n return(fitted.well@fit.par$A)\n}\n\nshape.par = function(fitted.well){\n if(length(fitted.well@fit.par) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.par$v), NA, fitted.well@fit.par$v)\n}\n\nmax.spec.growth.rate.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$u), NA, fitted.well@fit.std.err$u)\n}\n# The SE values are the errors.\nlag.time.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$lam), NA, fitted.well@fit.std.err$lam)\n}\n\nshape.par.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$v), NA, fitted.well@fit.std.err$v)\n}\n\namplitude.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$A), NA, fitted.well@fit.std.err$A)\n}\n\nbaseline.SE = function(fitted.well){\n if(length(fitted.well@fit.std.err) == 0)\n return(NA)\n ifelse(is.null(fitted.well@fit.std.err$b), NA, fitted.well@fit.std.err$b)\n}\n\n# used to calulate the inflection.time value\ninflection.time = function(well){\n if (length(well@loess) == 0 && length(well@nls) == 0) return(NA) # can' compute inflection time in the absence of a fit\n data = data.from(well)\n Time = data[,1]\n t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000)\n y = well.eval(well,t)\n if (is.null(y)) return(NA)\n delta.t = diff(t)\n dydt = diff(y)/delta.t\n infl.index = which.max(dydt)\n t[infl.index]\n}\n", + "created" : 1423868976528.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "4167103586", + "id" : "69756148", + "lastKnownWriteTime" : 1423868994, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/fitted.calculations.R", + "project_path" : "fitted.calculations.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/6C03FCBD b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/6C03FCBD new file mode 100644 index 0000000..0e0a97c --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/6C03FCBD @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead,\n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n########################################################################\n# #\n# Fit a parameterized model to the growth data in a well object. #\n# #\n# There are now three modelling choices: #\n# 1) Sigmoid model (no linear param c) #\n# 2) Linear Sigmoid model #\n# 3) Loess (with optional smoothing parameter) #\n########################################################################\n#' fit.model \n#' \n#' This function will use the function stored in the \"guess\" slot of \\code{growth.model} to calculate initial guesses \n#' for growth.model parameters, then it will use the \"formula\" slot with \\code{nls} to fit a non-linear least squares \n#' \\code{growth.model} or Local Polynomial Regression Fitting to the data. Richards model is first fitted. \n#' If the shape parameter is statisticaly significant then Richards is used. If it is within 2 SE of 1 or Zero than \n#' a simpler model is preferred. If the Richards fit fails, then Logistic is tried. If it fails, Gompertz is tried. \n#' Model fit failure is reported if none of the models can sucessfully fit the data \n#' \n#' @param input.well The well needed to be fitted with the given model. \n#' @param growth.model What growth model should be used? \n#' @param backup.growth.model If \\code{gowth.mode} fails, this model will be used. \n#' @param fit.if.no.growth should the function attempt to fit a well even if there was no growth detected? default is F \n#' @param silent output back to R console? \n#' @param use.linear.param: Should an additional linear parameter (c) be used when fitting the data to the model? \n#' @param use.loess: Should Local Polynomial Regression Fitting (loess function) be used instead of nls? \n#' @param smooth.param: If loess is used, an optional smoothing parameter. Default is .6 \nfit.model = function(input.well, growth.model, backup.growth.model = NULL, fit.if.no.growth = F, \n use.linear.param=F, use.loess=F, smooth.param, silent = T){\n \n # Conditional breakpoint: go into debugging mode when fitting a specific well\n #if (input.well@position[\"row\"] == \"A\" && input.well@position[\"col\"] == \"12\") browser()\n \n # Change all relevant slots to or blank values\n input.well@model.name = \"\"\n input.well@fit.par = list()\n input.well@equation = expression()\n \n # Get OD vs. time data from well\n input.data = data.from(input.well, na.rm = T)\n \n # Skip well if in slot \"curve.par\" is set to true, and is false.\n if(!fit.if.no.growth & lacks.growth(input.well)){\n input.well@fit.info = \"skipped - no growth in well.\"\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n }\n # Skip well if there are fewer than 5 data points left in the analysis.\n if (length(input.data$Time) < 5){\n input.well@fit.info = \"skipped - not enough points.\"\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n }\n \n # Change column headers of input.data to the more general \"Time\" vs. \"y\"\n names(input.data) = c(\"Time\", \"y\")\n \n # Set a lower bound for nls model parameters A and b to slightly lower than min(y)\n low.y = min(input.data$y,na.rm=T)\n low.y = low.y - 0.1*abs(low.y)\n \n # Extract the model formula from (slot \"formula\")\n # Use the function from slot \"guess\" to calculate initial guesses for model parameters based on slope estimates in \n # Attempt to fit a nonlinear least squares odel using \n \n # Creating loess, logistics, richards, and gompertz model. \n loess.e = expression(\"loess\")\n loess.f = formula(Time ~ y)\n loess.model = model(\"local polynomial regression fit.\", loess.e, loess.f, loess.g)\n remove(loess.e, loess.f, loess.g)\n \n ########################################################################\n # Create the logistic 4-parameter model (when v ~ 1) #\n ########################################################################\n logistic.g = function(well,smooth.param=0.75) {\n loess.model@guess(well,smooth.param)\n }\n \n ########################################################################\n # Create the Richards 5-parameter model #\n ########################################################################\n richards.g = function(well,smooth.param=0.75){\n c(loess.model@guess(well,smooth.param),v=0.5)\n }\n \n ########################################################################\n # Create the Gompertz model (might be useful as a #\n # limiting case of Richards model when v ~ 0) #\n ########################################################################\n gompertz.g = function(well,smooth.param=0.75){\n loess.model@guess(well,smooth.param)\n }\n \n logistic.e = expression((A/(1+exp((4*u/A)*(lam-Time)+2)))+b)\n logistic.f = formula(y~(A/(1+exp((4*u/A)*(lam-Time)+2)))+b)\n logistic = model(\"logistic sigmoid.\", logistic.e, logistic.f, logistic.g)\n remove(logistic.e, logistic.f, logistic.g)\n \n richards.e = expression(A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b)\n richards.f = formula(y~A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b)\n richards = model(\"richards sigmoid\", richards.e, richards.f, richards.g)\n remove(richards.e, richards.f, richards.g)\n \n gompertz.e = expression(A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b)\n gompertz.f = formula(y~A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b)\n gompertz = model(\"gompertz sigmoid\", gompertz.e, gompertz.f, gompertz.g)\n remove(gompertz.e, gompertz.f, gompertz.g)\n \n \n \n # 3) Loess (with optional smoothing parameter)\n if(use.loess){\n number.of.points = nrow(input.well@screen.data)\n if (smooth.param <= 1/number.of.points)\n exception(\"Invalid input\", \"Smoothing parameter is out of range.\")\n \n fit = try(loess(y~Time, data=input.data, span=smooth.param), silent=TRUE)\n input.well@loess = fit\n if (class(fit) != \"loess\") stop(\"loess fit failed on well\", paste(input.well@position,collapse=\" \"))\n input.well@fit.info = \"Loess model fit successfully.\"\n input.well@model.name = loess.model@name\n input.well@equation = loess.model@expression\n # There are no estimated params, so just return the initial guesses\n input.well@fit.par = append(as.list(loess.model@guess(input.well,smooth.param)),list(\"smoothing parameter\"=smooth.param))\n # Note: since there are no params there are no Std. Errors either\n input.well@inflection.time = inflection.time(input.well)\n # calculate Rss for loess\n input.well@rss = sum((input.data$y-predict(fit))**2)\n } else {\n fit = fit.nls.model(input.well,richards)\n # should we use richards? Yes, unless the v param is close to 1 or Zero\n if(class(fit) == \"nls\"){\n rich.fit = fit # if v is significant or other fits consequently fail\n fit.par = as.list(coef(fit))\n # is fit similar to the Logistic?\n if(fit.par$v >= .5 && abs(fit.par$v-1) < 2*summary(fit)$parameters[\"v\",\"Std. Error\"] ){\n fit = fit.nls.model(input.well,logistic)\n input.well@fit.info = paste(\"Logistic model fit successfully.\")\n input.well@model.name = logistic@name\n input.well@equation = logistic@expression\n # is fit similar to Gompertz?\n }else if(fit.par$v < .5 && abs(fit.par$v) < 2*summary(fit)$parameters[\"v\",\"Std. Error\"]){\n fit = fit.nls.model(input.well,gompertz)\n input.well@fit.info = \"Gompertz model fit successfully.\"\n input.well@model.name = gompertz@name\n input.well@equation = gompertz@expression\n # v param is significant. stick with Richards\n }else{\n input.well@fit.info = paste(\"Richards model fit successfully.\")\n input.well@model.name = richards@name\n input.well@equation = richards@expression\n }\n # just in case logistic or gompertz failed to fit...\n if(class(fit) != \"nls\"){\n fit = rich.fit\n input.well@fit.info = paste(\"Richards model fit successfully.\")\n input.well@model.name = richards@name\n input.well@equation = richards@expression\n }\n } else{\n # Richards failed. try backup models\n fit = fit.nls.model(input.well,logistic)\n if(class(fit) != \"nls\"){\n # last resort try gompertz\n fit = fit.nls.model(input.well,gompertz)\n if(class(fit) != \"nls\"){\n input.well@fit.info = \"Model fitting failed.\" \n } else{\n input.well@fit.info = \"Gompertz model fit successfully.\"\n input.well@model.name = gompertz@name\n input.well@equation = gompertz@expression\n }\n }else{\n input.well@fit.info = paste(\"Logistic model fit successfully.\")\n input.well@model.name = logistic@name\n input.well@equation = logistic@expression\n }\n }\n }\n \n # If no error was reported by the model fitting, add coefficients to slot \"fit.par\",\n # Also add the Standard Errors for each parameter\n if (class(fit) == \"nls\"){\n input.well@nls = fit\n input.well@inflection.time = inflection.time(input.well)\n input.well@fit.par = as.list(coef(fit))\n rSs = sum(residuals(fit)**2)\n \n if (length(rSs) != 0)\n input.well@rss = rSs\n else \n input.well@rss = NA\n input.well@fit.std.err = as.list(summary(fit)$parameters[,\"Std. Error\"])\n }\n # Output to console\n if (!silent)\n cat(plate.name(input.well), well.name(input.well), \":\", input.well@fit.info, \"\\n\")\n return(input.well)\n}\n\n# Fit nls model to a well using a specified model\n# Arguments:\n# input.well: object of class well\n# model: object of class model, e.g. richards, gompertz or logistic\nfit.nls.model <- function (input.well, model) {\n # Get OD vs. time data from well\n input.data = data.from(input.well, na.rm = T)\n # Change column headers of input.data to the more general \"Time\" vs. \"y\"\n names(input.data) = c(\"Time\", \"y\")\n \n # Set a lower bound for nls model parameters A and b to slightly lower than min(y)\n low.y = min(input.data$y,na.rm=T)\n low.y = low.y - 0.1*abs(low.y)\n \n # Set the initial guess\n start = model@guess(input.well)\n \n # Set lower bounds\n if (length(start) == 4) {\n lower = c(low.y,low.y,0,0)\n } else if (length(start) == 5) {\n lower = c(low.y,low.y,0,0,0.07)\n } else {\n stop(\"Unsupported model: \", model@name)\n }\n # Make sure initial guess values do not violate lower bounds\n start[start < lower] = lower[start < lower]\n \n # Fit the model\n fit = try(nls(formula = model@formula, data = input.data, start = start, algorithm=\"port\", lower=lower), silent = TRUE)\n}\n", + "created" : 1423869161433.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2981843703", + "id" : "6C03FCBD", + "lastKnownWriteTime" : 1423869188, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/fit.model.R", + "project_path" : "fit.model.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/7189AD56 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/7189AD56 new file mode 100644 index 0000000..2accf9e --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/7189AD56 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\nrequire(pheatmap)\nrequire(gplots)\n\n########################################################################\n# #\n# Graphic output functions for fitted well objects. The functions are #\n# fairly complicated and intertwined and may need revision. #\n# #\n########################################################################\n\n########################################################################\n# Basic function plots time vs. OD from a well object #\n########################################################################\n#' plot.data \n#' \n#' Basic function plots time vs. OD from a well object \n#' \n#' @param input.well The well object that need to be plottedd \n#' @param unlog should data be plotted on a linear (vs. logarithmic) scale? \n#' @param view.raw.data should the raw data be plotted? ( \n#' @param number.points should points be labeled with numeric indices? \n#' @param scale determines the font scale for the entire graph. all cex values are calculated from this. \n#' @param draw.symbols - should be called on the well and markings drawn on the graph? \n#' @param ... additional arguments passed to plot() \n\nplot.data = function(input.well, view.raw.data = F, unlog = F, scale = 1, \n main = paste(plate.name(input.well), well.name(input.well)), number.points = T, \n draw.symbols = F, constant.added,...){\n \n # Get data as well as a vector showing which points were removed. \n\tinput.data = data.from(input.well, remove = F, remove.tanking = F, raw.data=view.raw.data)\n\tremoved.points = !(rownames(input.data) %in% rownames(data.from(input.well, remove = T, remove.tanking = T)))\n point.colors = as.character(factor(removed.points,levels=c(F,T),labels=c(\"black\",\"gray80\")))\n\n # Draw the axes and all text labels first.\n\tpar(mar = c(5, 4, 4, 5)+0.1)\n\tplot(input.data, main = main, xlab = \"Time(hours)\", ylab = \"log(OD - blank + const)\",\n mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type =\"n\",...)\n \n\t# Draw a second vertical axis, showing unlogged OD scale\n\t# - Determine the range of the labels: from min.OD to max.OD\n if (class(try(ylim,silent=T)) == \"try-error\") {\n OD = unlog(input.data[,2],constant.added)\n baseline.OD = unlog(baseline(input.well),constant.added)\n min.OD = min(min(OD,na.rm=T),baseline.OD,na.rm=T)\n plateau.OD = unlog(plateau(input.well),constant.added)\n max.OD = max(max(OD,na.rm=T),plateau.OD,na.rm=T)\n } else {\n min.OD = unlog(ylim[1],constant.added)\n max.OD = unlog(ylim[2],constant.added)\n }\n\t# - Compute labels and their positions\n\tOD.labels = seq(from = min.OD, to = max.OD, length.out = 5)\n\tOD.labels = signif(OD.labels,2)\n\tOD.at = log(OD.labels+constant.added)\n # - Draw the axis\n\taxis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale)\n\tmtext(4, text = \"OD - blank\", line = 3, cex=1.2)\n \n\t# If is true, then label each point with the index of its timepoint and plot removed points in grey, others in black. \n if (number.points)\n\t\ttext(input.data$Time, input.data[,2], rownames(input.data), col = point.colors, cex = 0.5*scale)\n\t# Otherwise plot all points, using a different plotting character for removed points. \t\n else\n\t\tpoints(input.data$Time, input.data[,2], pch = 1 + removed.points*15)\n\n # If is set to T, then draw all the markings that makes to determine curve parameters. \n\tif (draw.symbols & !view.raw.data)\n\t\tcheck.slopes(input.well, draw = T)\n\treturn()\n\t}\n\t\n########################################################################\n# Plots the fitted model curve from a well object if it exists #\n########################################################################\n#\n# time: specify which points (in units of time) to plot fitted OD values for. if not specifies, plot all timepoints in range of well. \n\nplot.model = function(input.well, col = 1, scale = 1, lty = 1, time = NULL, unlog = F, constant.added=1){\n\t \n input.data = data.from(input.well)\n\tgrowth = input.data[,2]\n\n # If no list of timepoints is specified, get a list of 360 timepoints (should be smooth enough) from the well's range. \n\tif (is.null(time)){\n\t\ttime.fin = max(data.from(input.well, raw.data = T, remove = F, remove.tanking = F)$Time)\n\t\ttime = seq(0, time.fin, length.out = 360)\n\t}\n \n # Evaluate the predicted OD at the specified timepoints based on the fitted model. \n\tpredicted.OD = well.eval(input.well, time) \n # If any values were returned, plot the lines on the current graph. Otherwise, just return without doing anything.\n\tif (is.numeric(predicted.OD))\n\t\tlines(time, predicted.OD, col = col, lty = lty, lw = 2 * scale) \n else\n return()\t\n \n}\n\t\n########################################################################\n# Put various parameters and info in text form on the graphs #\n########################################################################\n#\t\t\t\ndraw.text = function(input.well, scale = 0.5, xlim = 0, ylim = 0,...){\n\n\tinput.data = data.from(input.well, remove = F, remove.tanking = F)\n\tfit = input.well@fit.par\n \n # - fit information (fit status, model name if available, jump detection output, fit parameters if available) from well \n # color = red if no fit, blue if fit, green if skipped\n # - empty or inoculated well.\n # color = green if empty, blue if inoculated, red if inoculated but has no growth or empty but has growth. \n \n \tcol2 = \"blue\" \n\ttext2 = paste(input.well@fit.info, input.well@model.name, input.well@add.info, \"\\n\", parameter.text(input.well))\n\n\tif (length(input.well@fit.par) == 0) # no fit\n\t\tcol2 = \"red\"\n\n\tif (is.empty(input.well)){\n\t\t text1 = \"empty well\"\n\t\tif(!lacks.growth(input.well) | length(input.well@fit.par) == 0) # growth curve fit for an empty well\n\t\t\tcol1 = \"red\"\n\t\telse\n\t\t\tcol1 = \"forestgreen\"\n\t\tif (length(input.well@model.name) == 0) # well was skipped \n\t\t\tcol1 = col2 = \"forestgreen\"\n\t\t}\n\telse{\n\t\ttext1 = \"inoculated well\"\n\t\tif(lacks.growth(input.well) | length(input.well@fit.par) == 0) # failure to fit an inoculated well\n\t\t\tcol1 = \"red\"\n\t\telse\n\t\t\tcol1 = \"forestgreen\"\n\t\t}\n\t\t\n\t# - goodness of fit metric. \n\t# color = red if below 2, yellow if between 2 and 2.72, and green if above 2.72. \n\t\n\tif(!is.na(model.good.fit(input.well))){\n\t\t#if (model.good.fit(input.well, unlog = F) > 2.72)\n\t\t#\tcol1.5 = \"forestgreen\"\n\t\t#else if (model.good.fit(input.well, unlog = F)> 2.0)\n\t\t#\tcol1.5 = \"gold2\"\n\t\t#else\n\t\t#\tcol1.5 = \"red\"\n col1.5 = \"forestgreen\"\n\t\ttext1.5 = paste(\"R squared:\", round(model.good.fit(input.well),3))\n\t\t}\n\telse\n\t col1.5 = text1.5 = NULL\n\t \n # Print all text at the top of the graph with approprate positions and scaling \t\n \ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.025 * diff(ylim), \n \t\ttext1.5, cex = 1.5*scale, col = col1.5) \n \t\t\n\ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0 * diff(ylim), \n\t\t\ttext1, cex = 1.5*scale, col = col1)\n\n\ttext(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.03 * diff(ylim), \n\t\t\ttext2, pos = 1, cex = 1.5*scale, col = col2)\t\n\t}\t\n\n########################################################################\n# Draw lines on graph denoting calculated parameters #\n########################################################################\n#\t\n# - should curve parameters be labeled? \n\t\t\ndraw.calc.par = function(input.well, scale = 0.5, unlog = F, constant.added, show.num = T){\n\n # Don't do anything if well was not fit. \n\tif (is.null(well.eval(input.well)))\n\t\treturn()\n \n # Collect values for various curve parameters. \n\tbaseline = baseline(input.well)\n\tinoc.log.OD = inoc.log.OD(input.well)\n\tmax.log.OD = max.log.OD(input.well) \n\tplateau = plateau(input.well) \n\tinflection.time = input.well@inflection.time # was a param in model\n\tfin.time = (inflection.time+max(data.from(input.well)[,1]))/2\n\n\t# = timepoint at greatest growth \n\t# = OD measurement at , minus the constant added before taking the log (if reversing the transformation)\n\t# = slope (on log scale) at (specific growth)\n # had to add the unlog code. was calculated differently before NWD 7/21/14\n\tmax.slope = max.spec.growth.rate(input.well)\n\tmax.y = well.eval(input.well, inflection.time)\n\tlag.x = lag.time(input.well) \n lag.y = baseline\n\t\n\t# ---- Specific growth rate ---- #\n\tlines(c(lag.x, inflection.time), c(lag.y, max.y), lty = 2, col = \"red\")\n\n\n # Blue dotted line at time of maximum growth, with text label for specific growth rate. \n\tabline(v = inflection.time, lty = 2, lw = (scale^2)*2, col = \"blue\")\n if(show.num) text(inflection.time, max.y, round(max.slope,3), col = \"blue\", cex = 1.5*scale, pos = 2)\n\n # inoculation OD and baseline of the fitted model\n abline(h = inoc.log.OD, lw = scale*2, lty = 3)\n abline(h = baseline, col = \"red\", lw = (scale^2)*2, lty = 2)\n if(show.num) {\n text(fin.time, inoc.log.OD, paste(round(inoc.log.OD,3),\"\\n\",sep=\"\") , col = \"black\", cex = 1.5*scale, pos = 2)\n text(fin.time, baseline, paste(\"\\n\\n\", round(baseline,3), sep=\"\") , col = \"red\", cex = 1.5*scale, pos = 2)\n }\n\n # ---- Lag time ---- #\n # Do not draw a horizontal line to lag time if it is 0 or negative. \n # Otherwise draw a red line from the starting point to the lag time, and label with the lag time \n \tif (lag.time(input.well) == 0){\n\t\tif(show.num) text(0, inoc.log.OD, \"\\n\\n0.000\", col = \"red\", cex = 1.5*scale, pos = 4)\n\t\t}\n\telse{\n\t\tlines(c(0, lag.x), c(baseline, baseline), col = \"red\", lw = (scale^2)*2, lty = 2)\n\t\tif(show.num) text(lag.x, lag.y, paste(\"\\n\\n\", round(lag.time(input.well),3)), col = \"red\", cex = 1.5*scale, pos = 2)\n\t}\n\n # ---- Total growth ---- #\n\n # Draw horizontal lines for the max.log.OD in black, the plateau in green and the initial OD in black.\n abline(h = max.log.OD, lty = 3, lw = scale*2)\n abline(h = plateau, lty = 2, lw = (scale^2)*2, col = \"forestgreen\")\n\t\n\t# Draw a vertical line from the initial OD to the final OD in black, and then to the plateau in gray. \n\tlines(c(fin.time, fin.time), c(inoc.log.OD, max.log.OD), lw = (scale^2)*2, lty = 3)\n\tlines(c(fin.time, fin.time), c(max.log.OD, plateau), lw = (scale^2)*2, lty = 3, col = \"grey\")\n\n # Text: plateau and initial ODs (on left), difference between initial and final OD on right\n\tif(show.num){\n text(fin.time, plateau, paste(round(plateau,3),\"\\n\",sep=\"\") , col = \"forestgreen\", cex = 1.5*scale, pos = 2)\n text(fin.time, max.log.OD, paste(\"\\n\\n\\n\",round(max.log.OD,3),sep=\"\") , col = \"black\", cex = 1.5*scale, pos = 2)\n text(fin.time, .5*(max.log.OD-inoc.log.OD)+inoc.log.OD, round(max.log.OD - inoc.log.OD,3), cex = 1.5*scale, pos = 4)\n # difference between final and plateau OD (if large enough) \n if (!reach.plateau(input.well))\n\t\t text(fin.time, .5*(plateau-max.log.OD)+max.log.OD, paste(\"(\", round(plateau - max.log.OD,3), \")\", sep = \"\"), col = \"grey\", cex = 1.5*scale, pos = 2) \n }\n }\n\t\n########################################################################\n# Draw residuals from the nonlinear fit with option for lowess line #\n########################################################################\n#\t\t\nplot.residuals = function(well, xlim = NULL, lowess = T){\n\n\tdata = data.from(well, remove = F, remove.tanking = F)\n\n\tif (is.null(xlim))\n\t\txlim = c(min(data$Time, 0)-1, max(data$Time))\n\t\t\n\tplot(data.from(well)[,1], model.residuals(well), main = paste(plate.name(well), well.name(well), \"\\n[Residuals]\"),\n\t\txlab = \"Time(hours)\", ylab = paste(\"Residual\", names(data)[2]), xlim = xlim)\n\t\n\tabline(0,0, lty = 2)\n\t\n\tif (lowess)\n\t\tlines(lowess(data.from(well)[,1], model.residuals(well)), lw = 2, col = \"red\")\n\t}\n\n##############################################################################\n# This function is used to create a heatmap using: \n# specific growth, total growth, and lag time\n# for each well on a plate.\n#\n# @params\n# fitted.well.array: matrix containing well array object data\n# attribute: the data type we should use to create a heatmap\n# @returns\n# path of heatmap pdf file\n##############################################################################\ncreate.heatmap = function(fitted.well.array, attribute, unlog=NULL){\n attr.name <- deparse(substitute(attribute))\n pdf.name <- \"\"\n if(class(fitted.well.array) == \"matrix\"){\n #We may want to sub() out periods from plate.ID if it causes problems\n plate.ID = unique(unlist(aapply(fitted.well.array,plate.name)))[1]\n if(is.null(unlog)) {\n spec.growth = unlist(aapply(fitted.well.array, attribute))\n }\n # currently only total growth needs to be unlogged if unlog == T\n else {\n spec.growth = unlist(aapply(fitted.well.array, attribute))\n }\n num.dig = 3 #how many digits should be put on pdf?\n max = round(max(spec.growth, na.rm=T), digits=num.dig)\n min = round(min(spec.growth, na.rm=T), digits=num.dig)\n avg = round(mean(spec.growth, na.rm=T), digits=num.dig)\n heat.text = paste(toupper(sub(\"\\\\.\", \" \", attr.name)), \":\\n\", plate.ID, \"\\n\",\n paste(\"Max:\",max ,\"Min:\" ,min ,\"Avg:\", avg, sep=\"\"))\n \n attr.name <- sub(\"\\\\.\", \"_\", attr.name) #do not want periods in file path\n letters <- attr(fitted.well.array, \"dimnames\")[[1]]\n for(i in 1:length(letters)) letters[i] = paste(\" \", letters[i], \" \")\n nums <- attr(fitted.well.array, \"dimnames\")[[2]]\n for(i in 1:length(nums)) nums[i] = paste(\" \", nums[i], \" \")\n heat <- matrix(spec.growth, nrow=dim(fitted.well.array)[1], ncol=dim(fitted.well.array)[2], dimnames=list(letters,nums))\n pdf.name <- paste(getwd(), \"/\", plate.ID, \"_\", attr.name, \".pdf\", sep=\"\")\n pdf(pdf.name)\n #heatmap(heat, Rowv=NA, Colv=NA, revC=T, scale=\"none\", na.rm=T, main=plate.ID, col=rainbow(100), margins=c(6,6))\n #mtext(paste(\"Max:\", round(max(spec.growth, na.rm=T), digits=4),\"Min:\", round(min(spec.growth, na.rm=T), digits=4), \"Avg:\", round(mean(spec.growth, na.rm=T), digits=4)), side=1, line=3)\n pheatmap(heat, color=colorpanel(100, \"red\", \"orange\", \"yellow\"),\n border_color=\"black\", cell_width=2, cell_height=3,\n cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16)\n dev.off()\n }\n else {\n return(\"Error\") \n }\n return(pdf.name)\n}\n\n########################################################################\n# Draw grids of 96 points as a visual representation of fit status, #\n# and other info for an array of fitted well objects, plate by plate #\n########################################################################\n#\n\t\nplate.overview = function(fitted.well.array, scale = 1){\n \n \n # Start with a list of the unique plate names in the fitted well array \n # and an appropriately-sized grid of coordinates to plot wells on.\n\tplates = unique(unlist(aapply(fitted.well.array,plate.name)))\n \n\tgrid = data.frame(x = rep(rep(1:plate.ncol, each = plate.nrow), length(plates)),\n\t\t\t y = rep( rep(-(1:plate.nrow), times = plate.ncol), length(plates)))\n\n\n # Gather information on each well to display on each of the coordinates in :\n # - was it marked as empty in the plate layout?\n # - did the program find it to contain no growth (\"dead\")? \n # - was the fitting procedure successful? \n # - did the curve tank? if so, at what timepoint? if not, or if the curve was marked as dead anyway, do not display the value. \n # - does the \"additional info\" slot indicate that any points were removed or the whole well discarded?\n \n\tempty = unlist(aapply(fitted.well.array, is.empty))\n\tdead = unlist(aapply(fitted.well.array, lacks.growth))\n\tfit = unlist(aapply(fitted.well.array, contains.fit))\n \n\ttanking = unlist(aapply(fitted.well.array, tanking.start))\n\ttanking[is.na(tanking) | tanking == 1 | dead] = \"\"\n\n\terrors = unlist(aapply(fitted.well.array, function(well){\n\t\tif (length(well@add.info) == 0)\n\t\t\t\"\"\n\t\telse if (grepl(\"removed\", well@add.info))\n\t\t\t\"-\"\n else if (grepl(\"detected\", well@add.info))\n \"+\"\n\t\telse if (grepl(\"discarded\", well@add.info))\n\t\t\t\"!\"\n\t\telse\n\t\t\t\"\"\n\t\t}))\n\t\n # Color and plotting character vectors (length = the number of wells in the array)\n # Default = 1 (open point, black)\n\tcolors = char = rep(1, length(tanking))\n\n # Desired colors\n colors[empty & dead] = \"green3\" # Empty well with no growth.\n colors[!empty & fit] = \"blue\" # Inoculated well with successfully fitted growth curve.\n \n # Undesired colors \n colors[empty & !dead] = \"darkolivegreen4\" # Inoculated well with some growth. \n colors[!empty & !fit] = \"red\" # Inoculated well with no successfully fit (either no growth or unsuccessful fit).\n \n char[!dead & fit] = 19 # Filled points for non-empty wells with successful fits \n char[!dead & !fit] = 4 # an X for non-empty wells with failed fits. \n \n char[errors == \"!\"] = 8 # Asterisk for discarded wells. \n char[errors == \"-\" & dead ] = 5 # Open diamond for empty wells (after removing points).\n char[errors == \"-\" & !dead & fit] = 23 # Filled diamond for non-empty wells with removed points and successful fits. \n char[errors == \"-\" & !dead & !fit] = 8 # Asterisk for wells with removed points and failed fits.\n \n \n\tfor (plate in 1:length(plates)){\n \n\t\tindices = (plate - 1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol)\n\n # Plot the grid using colors and plotting characters determined above. \n\t\tplot(grid[indices,], col = colors[indices], bg = colors[indices], pch = char[indices], \n\t\t\t main = plates[plate], mex = scale, cex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, \n\t\t\t xaxt = \"n\", yaxt = \"n\", xlim = c(-0.5,plate.ncol + 0.5), ylim = c(-(plate.nrow + 1.5), 0.5), xlab = \"\", ylab = \"\")\n \n # Symbol legends\n \n legend.xpos = (c(-1,2.75,6.5,6.86,10.25)+0.5)*(plate.ncol+1)/13 - 0.5\n legend.ypos = -(plate.nrow + 0.5)\n \n legend(x=legend.xpos[1], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Empty, no growth\",\"Empty with growth\"),\n pch = c(1,19),\n pt.bg = c(\"green3\",\"darkolivegreen4\"),\n col = c(\"green3\",\"darkolivegreen4\")\n )\n legend(x=legend.xpos[2], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Inoculated with growth\", \"Inoculated, no growth\"),\n pch = c(19,1),\n pt.bg = c(\"blue\",\"red\"),\n col = c(\"blue\",\"red\")\n )\n legend(x=legend.xpos[3], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Well tanks at specified index\", \"Some points removed\"),\n pch = c(21,23),\n pt.bg = c(\"grey\",\"grey\"),\n col = c(\"black\",\"black\")\n ) \n \n text(x=legend.xpos[4], y=legend.ypos - 0.29,\"#\",cex=0.5*scale) \n \n legend(x=legend.xpos[5], y=legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty=\"n\", \n legend=c(\"Model fitting failed\", \"Well discarded\"),\n pch = c(4,8),\n pt.bg = c(\"black\",\"black\"),\n col = c(\"black\",\"black\")\n )\n \n # Add tanking indices if any were found. \n \ttext(grid[indices,] + 0.30, cex = 0.75*scale, \n labels = tanking[indices], col = colors[indices])\n\n # Label rows and columns\n\t\ttext(-1, -1:-plate.nrow, pos = 4, LETTERS[1:plate.nrow], cex = scale) \n\t\ttext( 1:plate.ncol, 0 , 1:plate.ncol, cex = scale) \t\n\t\t}\n \n\t}\n\n########################################################################\n# Draw each well in an array of fitted well objects in succession. #\n# Include options for adding notations, text info and fit parameters. #\n########################################################################\n#\n\nview.fit = function(fitted.data, indices = 1:length(fitted.data), \n unlog = F, constant.added, xlim = NULL, ylim = NULL, display.legend = T, \n\t\t show.text = T, show.calc = T, draw.guess = NULL, draw.symbols = F, number.points = T, \n\t\t\tuser.advance = T, show.residuals = F, scale = 1,...){\n\n if(!is.array(fitted.data))\n fitted.data = list(fitted.data)\n\n # Determine the boundaries for the axes (if user did not specify them)\n if(is.null(ylim)){\n min.y = min(unlist(aapply(fitted.data, function(well){\n \tif (unlog) well@use.log = F\n \tmin.y = min(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T)\n min(min.y, well@fit.par$b)\n \t})))\n max.y = max(unlist(aapply(fitted.data, function(well){\n if (unlog) well@use.log = F\n \tmax.y = max(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T)\n max(max.y, well@fit.par$b + well@fit.par$A)\n \t})))\n ylim = c(min.y, min.y + (max.y-min.y)*1.15) - unlog*constant.added\n }\n if(is.null(xlim)){\n min.x = min(unlist(aapply(fitted.data, function(well){\n min(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T)\n \t})))\n max.x = max(unlist(aapply(fitted.data, function(well){\n \tmax(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T)\n \t})))\n xlim = c(min.x - 0.05 * (max.x-min.x), max.x)\n }\n \n # Display a figure legend\n if(display.legend){\n well.fit.legend(xlim=xlim,ylim=ylim,scale=scale,constant.added=constant.added)\n if(user.advance){\n prompt = readline(\" to continue or Q to quit >>\")\n if (toupper(prompt) == \"Q\") break\n }\n }\n # Start to cycle through the wells \n\twell.number = 1\n\twhile (well.number <= length(fitted.data)) {\t\t\n\t\t# Only show wells specified by (default all wells)\n if (well.number %in% indices){ \n # plot the well\n fitted.well = fitted.data[[well.number]]\n plot(x=fitted.well, constant.added = constant.added, xlim = xlim, ylim = ylim,\n unlog = unlog, well.number = well.number, scale = scale, number.points = T, draw.symbols = F, show.text = T, show.calc = T, draw.guess = NULL, ...)\n \n if(user.advance)\n cat(\"\\n[\", well.number, \"] \", plate.name(fitted.well), \" \", well.name(fitted.well), \".\", sep = \"\")\n \n if (show.residuals & is.numeric(model.residuals(fitted.well))){\n if(user.advance)\n if (toupper(readline(\" for residuals >>\")) == \"Q\") break\n plot.residuals(fitted.well)\n }\n \n # Allow user to advance the currently shown well if specified. \n\t\t\tif (user.advance){\n \n\t\t\t\tprompt = readline(\" to continue, or type # of next well or Q to quit >>\")\n\t\t\t\tif (toupper(prompt) == \"Q\") break\n\n user.input = suppressWarnings(try(as.numeric(prompt),silent=T))\n \n # Go onto the next well unless input is a number. \n\t\t\t\tif (is.numeric(user.input) & !is.na(user.input) & length(user.input) > 0)\n\t\t\t\t\twell.number = user.input - 1\n\t\t\t }\n\t\t\t}\n # Advance the loop\n well.number = well.number + 1\n\t\t}\t\t\n\t}\t\n\n\nwell.fit.legend = function(xlim, ylim, scale = 1, constant.added){\n par(mar = c(5, 4, 4, 5)+0.1)\n plot(0,0, main = \"[Index] \\n; \",\n xlim = xlim, ylim = ylim, xlab = \"Time\", ylab = \"log(OD - blank + const)\", \n mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type = \"n\")\n \n # Draw a second vertical axis, showing unlogged OD scale\n min.OD = unlog(ylim[1],constant.added)\n max.OD = unlog(ylim[2],constant.added)\n OD.labels = seq(from = min.OD, to = max.OD, length.out = 5)\n OD.labels = round(OD.labels,1)\n OD.at = log(OD.labels+constant.added)\n axis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale)\n mtext(4, text = \"OD - blank\", line = 3, cex=1.2)\n \n # Sample max. slope line\n abline(v=min(xlim)+0.5*max(xlim), col=\"blue\", lty=2)\n text(mean(xlim),min(ylim)+0.4*diff(ylim),labels=\"Maximum specific\\ngrowth rate\",col=\"blue\",pos=2,cex=0.75*scale)\n \n # Sample plateau line\n abline(h=min(ylim)+0.8*diff(ylim),col=\"forestgreen\",lty=2)\n text(min(xlim)+0.9*diff(xlim),ylim+0.8*diff(ylim),labels=\"Growth plateau\",col=\"forestgreen\",pos=3,cex=0.75*scale)\n\n # Sample max.log.OD line\n abline(h=min(ylim)+0.7*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.9*diff(xlim),ylim+0.7*diff(ylim),labels=\"max.log.OD\",col=\"black\",pos=1,cex=0.75*scale)\n \n # Sample inoc.log.OD\n abline(h=min(ylim)+0.1*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.1*diff(xlim),min(ylim)+0.1*diff(ylim),labels=\"Fitted growth\\nat inoculation\",col=\"black\",pos=3,cex=0.75*scale)\n \n # Sample baseline\n abline(h=min(ylim)+0.05*diff(ylim),col=\"red\",lty=2)\n text(min(xlim)+0.1*diff(xlim),min(ylim)+0.05*diff(ylim),labels=\"Baseline\",col=\"red\",pos=1,cex=0.75*scale)\n\n # Sample lag time\n lines(min(xlim)+c(0.1,0.25,0.50)*max(xlim),min(ylim)+c(0.05,0.05,0.4)*diff(ylim),col=\"red\",lty=2)\n text(min(xlim)+0.25*max(xlim),min(ylim)+0.05*diff(ylim),labels=\"Lag time\",col=\"red\",pos=1,cex=0.75*scale)\n \n # Sample achieved growth\n lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.1,0.7)*diff(ylim),col=\"black\",lty=3)\n text(min(xlim)+0.75*max(xlim),min(ylim)+0.3*diff(ylim),labels=\"Achieved growth\",col=\"black\",cex=0.75*scale)\n \n # Sample plateau - achieved growth\n lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.7,0.8)*diff(ylim),col=\"grey\",lty=3)\n text(min(xlim)+0.75*max(xlim),min(ylim)+0.75*diff(ylim),labels=\"Projected minus achieved growth\",col=\"grey\",cex=0.75*scale)\n \n # Symbol legend\n legend(x=\"right\", title = \"Timepoint Symbols\", legend = c(\"Normal point\", \"Ignored point\"),\n cex = 0.75*scale, pt.cex = c(0.6,0.6)*scale, pch = c(35,35), col=c(\"black\",\"gray80\"),\n x.intersp=1, xjust = 1, y.intersp=1.5)\n}\n\npdf.by.plate = function(fitted.data, out.prefix = \"\", upload.timestamp = NULL, \n out.dir = getwd(), unlog = F, constant.added, silent = T, overview.jpgs = T, ...){\n \n # Prepare timestamp for addition to output file names. \n filename.timestamp = strftime(upload.timestamp, format=\"_%Y-%m-%d_%H.%M.%S\")\n \n # Start file list with the overview pdf\n file.list.out = paste(out.dir,\"/\",out.prefix, \"_overview\", filename.timestamp, \".pdf\",sep=\"\")\n \n # Call to draw a graphic representation of each plate in this file. \n pdf(file.list.out, title = paste(out.prefix, \"plate overview\"))\n plate.overview.out = try(plate.overview(fitted.data),silent=T)\n if(class(plate.overview.out) == \"try-error\")\n stop(\"Error in : \", plate.overview.out)\n \n # Close devices\n while(dev.cur() != 1)\n dev.off() \n \n # Cycle through each plate \n for(i in 1:dim(fitted.data)[3]){\n \n # Get plate ID and position in data array.\n plate.ID = dimnames(fitted.data)[[3]][i]\n plate.indices = (i-1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol)\n if(overview.jpgs){\n # most be > 1 to partition value breaks for heatmap\n well.matrix <- aapply(fitted.data[,,i], max.spec.growth.rate) \n num.wells <- length(well.matrix[!sapply(well.matrix, is.na)])\n if(num.wells > 1){\n #Heatmap block##########################################################\n #alongside the jpgs file create 3 heatmaps for each plate. NWD\n spec.heat.file = create.heatmap(fitted.data[,,i], max.spec.growth.rate)\n if(spec.heat.file == \"Error\")\n stop(\"Error in for specific growth\")\n lag.heat.file = create.heatmap(fitted.data[,,i], lag.time)\n if(lag.heat.file == \"Error\")\n stop(\"Error in for lag time\")\n total.heat.file = create.heatmap(fitted.data[,,i], achieved.growth)\n if(total.heat.file == \"Error\")\n stop(\"Error in for total growth\")\n # Add name of file if successfully written to file list output. Including heatmap files NWD\n file.list.out = c(file.list.out, spec.heat.file, lag.heat.file, total.heat.file)\n ########################################################################\n }\n jpg.name = paste(out.dir, \"/\", plate.ID, \"_overview\", \".jpg\", sep=\"\")\n jpeg(jpg.name, quality = 90, width = 600, height = 480)\n plate.overview.out = try(plate.overview(fitted.data[,,i]),silent = T)\n if(class(plate.overview.out) == \"try-error\")\n stop(\"Error in : \", plate.overview.out)\n }\n else\n jpg.name = c()\n \n # Open a separate PDF for each plate.\n if(!silent) cat(\"\\nprinting PDF for\", plate.ID)\n pdf.name = paste(out.dir, \"/\", plate.ID, \"_plots\", filename.timestamp, \".pdf\", sep=\"\")\n pdf(pdf.name, title = paste(\"R Graphics output for plate\", plate.ID))\n \n # Call to draw each well on the plate to the pdf. \n view.fit.out = try(view.fit(fitted.data, indices = plate.indices, unlog=unlog, constant.added=constant.added, user.advance=F,...),silent=T) \n \n if(class(view.fit.out) == \"try-error\")\n stop(\"Error in : \", view.fit.out)\n\n # Close all devices\n while(dev.cur() != 1)\n dev.off() \n \n if(!silent) cat(\"...done!\\n\\twritten to\", pdf.name, \"\\n\") \n file.list.out = c(file.list.out, jpg.name , pdf.name)\n }\n return(file.list.out)\n } \n", + "created" : 1423869024830.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "197404081", + "id" : "7189AD56", + "lastKnownWriteTime" : 1423869067, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/plot.fit.R", + "project_path" : "plot.fit.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/85C00847 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/85C00847 new file mode 100644 index 0000000..1d1225a --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/85C00847 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n# Notes by Jason\n# 9/07/11\n\n\n########################################################################\n# #\n# Function for loading data from tabular format into an object array #\n# #\n########################################################################\n#' Load tabular data\n#'\n#' This function handles loading data from tabular format (.csv, tab-delimited text or R data frame object)\n#' and returns an array of well objects, each filled with raw Time vs. OD data. \n#' It takes single-plate or multiple-plate format data. For single-plate data, \n#'it calls on the function \\code{gcat.reorganize.single.plate.data} to rearrange the table before creating the output object. \n#'\n#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data \n#' in the multiple-plate (long) format. \n#' @param input.data A list of tables representing input files read with \\code{read.table}. Used to save time in cases\n#' of running multiple analyses on the same dataset. If used, the function will ignore \\code{file.name} entirely.\n#' @param load.type .csv by default. \n#' @param plate.laout Specifies the layout of the given plate.\n#' @param single.plate.ID specifies a plate name for a single-plate read. If NULL, this is derived from the file name. \n#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD\n#'measurement in each well is used.\n#' @param add.constant A value for r in the log(OD + r) transformation.\n#' @param plate.nrow The number of rows in the input files.\n#' @param plate.ncol The number of columns in the input files.\n#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv \n#' @param multi.column.headers The headers of the column when analyzing multiple plates.\n#' @param single.column.headers The headers of the column when analyzing a single plate.\n#' @param layout.sheet.headers The headers of the layout file.\n#' @param growth.model What growth model should be used?\n#' @param silent Surpress all messages.\n#' @param verbose Display all messages when analyzing each well.\n#' \n#' @return A list of well objects.\n\ngcat.load.data = function(file.name = NULL, load.type = \"csv\", input.data = NULL, single.plate.ID = NULL, \n plate.layout = NULL,plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n blank.value = NULL, start.index = 2, single.plate = F, silent = T){\n\n ########################################################################\n # Read from .csv, tab-delimited text file or data frame object #\n ########################################################################\n \n\tif(is.null(input.data)){\n\t\t# Either read from .csv.\n\t\tinput.data = read.csv(file.name, stringsAsFactors=F, skip = input.skip.lines, fileEncoding='UTF-8')\n\n\t\t# Determine single plate name if not specified. \n if (is.null(single.plate.ID)){\n # Split the file name by \".\" and discard the last member (file extension). \n single.plate.ID = strsplit(basename(file.name),\"\\\\.\")[[1]]\n single.plate.ID = paste(single.plate.ID[-length(single.plate.ID)],collapse=\".\")\n }\n\t\t}\n\n # Call to arrange data from a single plate format file\n\tif(single.plate)\n\t\tinput.data = gcat.reorganize.single.plate.data(input.data = input.data, single.column.headers,\n blank.value = blank.value, single.plate.ID = single.plate.ID,silent=silent)\n\n ########################################################################\n # Search for and standardize column headers in input data #\n ########################################################################\n \n # Go through the specified column headers, determining what their positions are in the \n # input data frame and if any are missing.\n \n # Get names of column headers in input data\n input.colnames = colnames(input.data)\n \n # Create a list denoting the column numbers in input data that match each of the specified column names, \n # and a separate list for any missing columns. \n \n column.matches = c()\n missing.list = NULL\n \n\tfor(i in 1:length(multi.column.headers)){\n\t\tif (multi.column.headers[i] %in% input.colnames)\n\t\t\tcolumn.matches[i] = min(which(input.colnames == multi.column.headers[i]))\n\t\t# Take the first column in input file that matches a specified column header.\n\t\telse{\n\t\t\tmissing.list = c(missing.list, i)\n\t\t}\n\t}\n\n # If any columns are missing, stop and report error with missing column names\n\tif (is.vector(missing.list)){\n\t\tmessage = \"The following columns:\"\n\t\tfor (i in missing.list)\n\t\t\tmessage = paste(message, paste(\" \", multi.column.headers[i]), sep = \"\\n\") \n\t\tstop(message, \"\\n were not found in the data file.\")\n\t\t}\n\n # Reorder and rename the columns, using the list of matching column numbers from above.\n\tinput.data = input.data[,column.matches]\n\tnames(input.data)[1:4] = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\") \n\n # Use 'substring' to split the alphanumeric \"Well\" field into row (letters) and column (numbers)\n\tinput.data$Well.row = substring(input.data$Well, 0,1)\n\tinput.data$Well.col = as.numeric(substring(input.data$Well, 2))\n\n\n ########################################################################\n # Create an array of well objects with the Time and OD data #\n ########################################################################\n #\n # Use the by function to split up the data frame into shorter segments by well (row, column and plate)\n \n\twell.array = by(data = input.data[,c(\"OD\", \"Time\")], \n INDICES = list(input.data$Well.row,input.data$Well.col,input.data$Plate.ID), \n FUN = function(x){data.frame(Time=x$Time, OD=x$OD,stringsAsFactors = F)}, simplify = F)\n\n \n # Then apply the function (found in well.class) to each member to create a well object\n well.array = aapply(well.array,function(x){well(x$Time,x$OD)})\n\n # Differentiate any duplicate plate names in the array's dimnames \n\tnew.dimnames = dimnames(well.array)\n for (i in length(new.dimnames[[3]]):1){\n\t\tif (any(new.dimnames[[3]][-i] == new.dimnames[[3]][i]))\n\t\t\tnew.dimnames[[3]][i] = paste(\"another_\", new.dimnames[[3]][i], sep = \"\")\t\n\t\t}\n\tdimnames(well.array) = new.dimnames\n\t\n # Copy the plate/row/column names found in the dimnames into the array objects themselves (use \"position\" slot)\n\tfor(plate in unique(dimnames(well.array)[[3]])){\n\t\tfor (col in unique(dimnames(well.array)[[2]])){\n\t\t\tfor(row in unique(dimnames(well.array)[[1]])){\n\t\t\t\twell.array[[row,col,plate]]@position = c(plate=plate,row=row,col=col)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n ########################################################################\n # Add plate layout information to well array #\n ########################################################################\n \n # Use the object to add media and strain information to the \"well.info\" slot of each well\n # Also set the value of the parameter in slot \"curve.par\" to T for empty wells. \n ########################################################################\n # Add plate layout information to well array #\n ########################################################################\n \n # Use the object to add media and strain information to the \"well.info\" slot of each well\n # Also set the value of the parameter in slot \"curve.par\" to T for empty wells. \n \n\n \n if(is.null(plate.layout)){ # If is not provided, do not add strain information, and assume all wells are inoculated. \n plate.layout = data.frame(Row=rep(PLATE.LETTERS[1:plate.nrow],plate.ncol),Column=rep(1:plate.ncol,each=plate.nrow),rep(\"Unknown Strain\",96),rep(\"Unknown Media\",96))\n colnames(plate.layout) = c(\"Row\", \"Column\", layout.sheet.headers)\n } \n else\n if(!silent) cat(\"\\n\\t\\tusing plate layout to fill well info.\")\n \n\tfor(plate in unique(dimnames(well.array)[[3]])){\n\t\tfor (col in unique(dimnames(well.array)[[2]])){\n\t\t\tfor(row in unique(dimnames(well.array)[[1]])){\n well = well.array[[row,col,plate]]\n # For each well on each plate, find the corresponding row in . \n # If refers to specific plates, then use those to find the correct row. Otherwise, generalize across all plates. \n if (\"Plate.ID\" %in% names(plate.layout)) layout.row.number = which(plate.layout$Column==well@position[\"col\"] & plate.layout$Row==well@position[\"row\"] & plate.layout$Plate.ID==well@position[\"plate\"] ) \n else layout.row.number = which(plate.layout$Column==well@position[\"col\"] & plate.layout$Row==well@position[\"row\"]) \n # Error if either no rows or more than one row matches the well\n if (length(layout.row.number) != 1)\n stop(\"incorrectly formatted plate layout! check names of columns, rows, and plates (if applicable).\")\n \n # Add any additional columns to the well's \"well.info\" slot\n well.info = plate.layout[layout.row.number,!(names(plate.layout) %in% c(\"Row\",\"Column\",\"Plate.ID\",layout.sheet.headers))]\n # Fix the column name issue if there is only one additional entry. \n if(length(well.info) == 1){\n well.info = data.frame(well.info,stringsAsFactors=F) \n names(well.info) = names(plate.layout)[!(names(plate.layout) %in% c(\"Row\",\"Column\",\"Plate.ID\",layout.sheet.headers))] \n } \n well@well.info = as.list(well.info)\n \n well@well.info$Strain = plate.layout[layout.row.number, layout.sheet.headers[1]]\n well@well.info$Media = plate.layout[layout.row.number, layout.sheet.headers[2]]\n # Set parameter in slot \"curve.par\" accordingly \n well@curve.par$empty.well = (plate.layout$Strain[layout.row.number] == \"Empty\") \n well.array[[row,col,plate]] = well\n\t\t\t\t}\n\t\t\t}\n\t\t}\n # Set start index value in each well\n well.array = aapply(well.array, function(x,start.index) { x@start.index = start.index; x }, start.index)\n \n ########################################################################\n # Return values to R #\n ######################################################################## \n # \n\t# Console output if desired, return the completed well array.\n\tif (!silent)\n\t\tcat(\"\\n\\t\", dim(well.array)[[3]], \"plates added to array from\", file.name)\n\treturn(well.array)\n\t}\n\n\n\n########################################################################\n# #\n# Reorganize data from single-plate input format before reading #\n# #\n########################################################################\n#\n# This function reorganizes the data frame from a single-plate format file. \n# input.data - data frame read straight from a single-plate format data file. \n# single.plate.ID - specifies a plate name for a single-plate read, since none is given in the single-plate format\n# The plate will be named Plate_1 unless otherwise specified. \n\ngcat.reorganize.single.plate.data = function(input.data, blank.value = NULL, single.column.headers, single.plate.ID = \"Plate_1\", silent=T){\n \n ########################################################################\n # Standardize the formatting and search for specified column names #\n ######################################################################## \n # \n # Locate the first and last rows from the table and return errors if not defined \n # Note: this only works if the time column is the first column\n \n\theader.row = min(which(input.data[,1] == single.column.headers[1])) \n if (length(header.row) != 1 | is.infinite(header.row))\n stop(\"could not locate header row in input file!\")\n \n # The last row: where column 2 starts to be blank, or the total number of rows, whichever is smaller \n extra.rows.start = min(which(input.data[-(1:header.row),2] == \"\"), which(is.na(input.data[-(1:header.row),2])), nrow(input.data[-(1:header.row),]))\n if (length(extra.rows.start) != 1 & is.infinite(extra.rows.start)) \n stop(\"could not locate last row in input file!\")\n\n # Use header row to rename the columns, then cut off extra rows (including the ones above header)\n\tnames(input.data) = as.character(unlist(input.data[header.row,]))\n input.data = input.data[(header.row+1):(header.row+extra.rows.start-1),]\n \n # Time column: allow for multiple matches to the name (since it's usually blank) but assume it's the first one\n\tTime.column = which(names(input.data) == single.column.headers[1])\n\tif (length(Time.column) != 1){\n if(!silent) cat(\"No unique time column in input.data file! Using the first one encountered.\")\n\t\tTime.column = min(Time.column)\n\t\t}\n # First well column (default A1): only allow for one match.\t\n\tWell.column.start = which(names(input.data) == single.column.headers[2])\n\tif (length(Well.column.start) != 1)\n\t\tstop(\"No unique start point for well columns in input.data file!\")\n\n # If the time column was found, rename it \"Time\" and reformat it into a numeric value\n # Adjust the blank measurement timestamp to -1 seconds if there is one\n\n names(input.data)[Time.column] = \"Time\"\n # Note: Some single plate screens have timepoints ending with \"s\" for seconds. \n # This line removes the \"s\" while maintaining general compatibility. \n\tinput.data$Time = unlist(strsplit(input.data$Time, \"s\"))\n\n # If is NULL (default - takes the first OD as the blank reading), then the first timepoint can labeled something non-numeric. \n # In that case, rename it to match the first real timepoint minus one. \n # when user input blank value, Blank timepoint i.e. input.data$Time[1] == Blank, labeled as \"Blank\" from data input file\n # It also should rename it to match the first real timepoint minus one. \n if(is.null(blank.value) || is.na(as.numeric(input.data$Time[1])))\n input.data$Time[1] = as.numeric(input.data$Time[2]) - 1\n \n ########################################################################\n # Start to fill the reformatted data frame #\n ######################################################################## \n \n # If all columns are present, make a list of all the wells.\n\twell.list = paste(rep(PLATE.LETTERS[1:plate.nrow], each = plate.ncol), rep(formatC(1:plate.ncol, digits = log(plate.ncol, 10), flag = \"0\"), plate.nrow), sep = \"\")\n\n #\tDuplicate the well names times the number of time measurements in each well\t\n Well = rep(well.list, each = length(input.data[,Time.column]))\t\n\t\t\n # Duplicate times the length of the entire output \n Plate.ID = rep(single.plate.ID, length(Well))\n\n # Duplicate the time column times the number of wells and convert to numeric\n\tTime = as.numeric(rep(input.data[,Time.column], times = length(Well.column.start:ncol(input.data))))\n\n # Append OD measurements from each well together and convert to numeric\n\tOD = c()\n\tfor (i in Well.column.start:ncol(input.data)){\n\t\tOD = as.numeric(c(OD, input.data[,i]))\n\t\tOD = unlist(OD)\n\t\t}\n\n # Fill and return the data frame containing the above four vectors.\n\toutput = data.frame(Plate.ID, Well, OD, Time)\t\n\t\n # Include any extra columns that were not Time or OD measurements?\n\tfor(i in (1:length(names(input.data)))[-c(Time.column,Well.column.start:ncol(input.data))]){\n\t\tnew.column = data.frame(rep(input.data[,i], length(Well.column.start:ncol(input.data))))\n\t\tnames(new.column) = names(input.data)[i]\n\t\toutput = cbind(output, new.column)\n\t\t}\t\n\treturn(output)\n}\n\n\n########################################################################\n# #\n# Function to combine two well array datasets by plate #\n# #\n########################################################################\n# ----------------------------------------------------------\n# This function can append together arrays created using \n# Arguments: any number of array objects as long as they are all output straight from \n\ngcat.append.arrays = function(...){\n\n # Transfer arrays to a list\n\targs.arrays = list(...)\n\tfirst.array = args.arrays[[1]]\n\tfirst.dims = dim(first.array)\n plate.nrow = args.arrays[[4]]\n plate.ncol = args.arrays[[3]]\n input.arrays = list(args.arrays[[1]], args.arrays[[2]])\n\tfor (i in 2:length(input.arrays)){\n\t\tnext.array = input.arrays[[i]]\n\t\tnext.dims = dim(next.array)\n\t\n # Check to make sure the arrays have proper dimensions for 96-well plate data\n\t\t\n if (!(all(c(first.dims[1], next.dims[1]) == plate.nrow) & all(c(first.dims[2], next.dims[2]) == plate.ncol)))\n\t\t\tstop(\"Data should have dimensions (\",plate.nrow,\",\",plate.ncol,\",n)!\")\n\t\t\n # If dimensions are alright, append dimensions and dimension names\t\n new.dims = c(plate.nrow,plate.ncol,first.dims[3]+next.dims[3])\n\t\tnew.names = dimnames(first.array)\n\t\tnew.names[[3]] = c(new.names[[3]], dimnames(next.array)[[3]]) \n\n # Differentiate duplicate names\n\t\tfor (i in length(new.names[[3]]):1){\n\t\t\tif (any(new.names[[3]][-i] == new.names[[3]][i]))\n\t\t\t\tnew.names[[3]][i] = paste(\"another_\", new.names[[3]][i], sep = \"\")\n\t\t\t}\n\t\n\t\t# Create a new array\n new.array = c(first.array, next.array)\n\t\tdim(new.array) = new.dims\n\t\tdimnames(new.array) = new.names\n\t\t\n # Update plate name in well objects\n\t\tfor (i in 1:length(unlist(new.array)))\n\t\t\tnew.array[[i]]@position[1] = new.names[[3]][floor((i-1)/96)+1]\n\t\t\n\t\t# Loop until complete\n\t\tfirst.array = new.array\n\t\tfirst.dims = dim(first.array)\n\t\t}\n\treturn(new.array)\n\t}\n\n\n########################################################################\n# #\n# Convert timestamps to hours from start and sort timepoints #\n# #\n########################################################################\n#\n# This function acts on a single well and modifies the raw data stored in slot \"screen.data\"\n# \n# input.well - an object of class well\n# time.format - specifies the time format. allowed values are \"%S\", for seconds, \"%d\", for days, or anything complying with ISO C / POSIX standards; see \n# note: reading directly from excel to R results in timestamps being converted to days.\n# start.index - which timepoint should be used as the starting time at inoculation?\n\ngcat.start.times = function(input.well, time.input, start.index = 2) { \n \n if(start.index > length(input.well))\n stop(\"Start index is greater than length of well!\")\n \n # If using a numeric time format, simply multiply times by the appropriate conversion factor\n\t# Conversion factor should be supplied to convert timestamps to hours. For example, \n # should be equal to 1/3600 if \"time\" is in seconds, 24 if \"time\" is in days, etc.\n\n #TODO eliminate set.constants method and class and find any areas are still using it \n time.format = time.input # Set default constant from rails user input\n \n if (is.numeric(time.format))\n\t\tinput.well@screen.data$Time = (input.well@screen.data$Time - min(input.well@screen.data$Time)) * time.format\n else{\n # Otherwise, convert timestamps from ISO C / POSIX to numeric values representing seconds (since the dawn of time?) and subtract out the initial value. \n\t\trtimes = input.well@screen.data$Time\n ptimes = strptime(as.character(rtimes),time.format)\n\t\tctimes = as.POSIXct(ptimes)\n\t\tint.times = unclass(ctimes)\n # Time will be in seconds, convert to hours by dividing by 3600\n\t\tinput.well@screen.data$Time = (int.times - min(int.times))/3600\n\t\t}\n\t# Sort raw data by timestamp and return the input.well\n\tinput.well@screen.data = input.well@screen.data[order(input.well@screen.data$Time),]\n \n input.well@screen.data$Time = input.well@screen.data$Time - input.well@screen.data$Time[start.index]\n \n if(all(is.na(input.well@screen.data$Time)))\n stop(\"Error in .\") \n rownames(input.well@screen.data) = NULL\n\treturn(input.well)\n }\t\n", + "created" : 1423869300470.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2771029213", + "id" : "85C00847", + "lastKnownWriteTime" : 1423869311, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/table2well.R", + "project_path" : "table2well.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/A7CAE343 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/A7CAE343 new file mode 100644 index 0000000..c950bea --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/A7CAE343 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n########################################################################\n# #\n# Normalize OD readings for an entire array of well objects #\n# #\n########################################################################\n#\n# Note: This function does not write any new OD values to the well objects in the array - it only \n# fills the \"norm\" slot of each well object in the array with a value that will be subtracted \n# from all OD measurements when returning data from the wells using the function (see well.class.R) \n#\n# These functions make use of which simply returns the raw time and OD of a well (also see well.class.R)\n#\n# well.array: an array of well objects. note this is the only normalization function that acts on an entire array instead of an individual well.\n# normalize.method: \n# - (default): subtracts the blank OD (either specified by or taken from the first timepoint as default) of each well from all timepoints in that well\n# - average.blank: subtracts the mean of all first OD timepoints on a plate from all timepoints in all wells on that plate\n# - average.first: takes the mean of the difference between the OD of the specified timepoint and the first timepoint of all wells on a plate\n# and subtracts this value from all timepoints in all wells on that plate\n# - anything else: do nothing\n# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n# add.constant: add a numeric constant to all timepoints in all wells. \n\n\nnormalize.ODs = function(well.array, normalize.method = \"default\", blank.value = NULL, start.index = 2, add.constant = 1){\n \n if (normalize.method == \"default\"){\n well.array = aapply(well.array, function(well, blank.value){\n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. \n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n # Set the blank OD (minus the constant to be added) to the \"norm\" slot of each well.\n \twell@norm = blank.value - add.constant\n \treturn(well)}, blank.value)\n }\n else if (normalize.method == \"average.blank\"){ \n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n\t\tblank.ODs = unlist(aapply(well.array, function(well, blank.value){\n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n return(blank.value)}, blank.value))\n\t\tplate.IDs = unlist(aapply(well.array, plate.name))\n\t\tblank.averages = tapply(blank.ODs, plate.IDs, mean)\n\t # Set this value (minus the constant to be added) to the \"norm\" slot of each well. \n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = blank.averages[plate.name(well)] - add.constant\n\t\t\treturn(well)})\n\t\t}\n\telse if (normalize.method == \"average.first\"){\n\t # Find the mean difference between starting OD (timepoint specified by ) and blank OD (first timepoint) for each plate\n # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n blank.ODs = unlist(aapply(well.array, function(well, blank.value){\n if(is.null(blank.value)) blank.value = raw.data(well)[1,2]\n return(blank.value)}, blank.value))\n\t\tfirst.ODs = unlist(aapply(well.array, function(well) raw.data(well)[start.index,2]))\n\t\tplate.IDs = unlist(aapply(well.array, plate.name))\n\t blank.averages = tapply(first.ODs-blank.ODs,plate.IDs,mean)\n\t # Set this value (minus the constant to be added) to the \"norm\" slot of each well.\n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = raw.data(well)[start,2] - blank.averages[plate.name(well)] - add.constant \n\t\t\treturn(well)})\n\t\t}\t\n\telse{\n # Simply set the negative constant to be added to the \"norm\" slot of each well. \n\t\twell.array = aapply(well.array, function(well){\n\t\t\twell@norm = - add.constant\n \t\t\treturn(well)})\n\t\t}\n if(is.null(blank.value))\n well.array = aapply(well.array, remove.points, 1)\n return(well.array)\n\t}\n\n########################################################################\n# #\n# Log-transform OD readings for a single well object #\n# #\n########################################################################\n#' Transform.Ods \n#' \n#' This function adds a \"log.OD\" column to the \"screen.data\" slot of a well object with log-transformed data. \n#' The raw data is kept intact. \n#' It also checks to see if any of the raw OD values (before a certain timepoint) is below the blank OD. \n#' This can be disastrous for the log(OD) transform. \n#' @param input.well an object of class well \n#' @param use.log gets added to the \"use.log\" slot of the well object. this will determine whether the log-transformed data \n#' or raw normalized data is returned using the function \\code{data.from}. \n#' @param blank.value user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n#' @param start.index which timepoint should be used as the first one after inoculation (defaults to the 2th one) \n#' @param negative.OD.cutoff if any ODs below the specified blank value are detected before this index timepoint, the entire well is discarded. \n\ntransform.ODs = function(input.well, use.log = T, blank.value = NULL, start.index = 2, negative.OD.cutoff = 10, constant.added = 1.0){\n \n # The default value for the log-transformed ODs will be NA. Valid values will be filled in. \n\tlog.OD = rep(NA, length(input.well))\n OD = raw.data(input.well)[,2]\n \n\t # Use the blank OD value if specified; otherwise, get it from the first OD timepoint.\n if(is.null(blank.value))\n blank.value = OD[1]\n\n # Remove any points from the analysis that weren't already removed and fall below the blank value (using below)\n OD[input.well@screen.data$Remove] = NA\n \n negative.points = which(OD + 0.2 * constant.added < blank.value)\n if(length(negative.points) > 0)\n\t input.well = remove.points(input.well, negative.points)\n \n # If any points fall below the blank value by more than 0.2 * and before the cutoff index , remove the well from analysis. \n # First adjust the cutoff to compensate for curves that don't start at timepoint 1\n negative.OD.cutoff = negative.OD.cutoff + start.index - 1\n \n if(any(negative.points <= negative.OD.cutoff)){\n input.well = remove.points(input.well, rep(T,length(input.well)))\n input.well@add.info = paste(\"ODs at timepoint(s)\", paste(negative.points[negative.points <= negative.OD.cutoff],collapse=\" \"), \"were below blank OD; well discarded\")\n }\n\n # Take the natural log of the rest of the OD values (after subtracting the normalization value)\n log.OD[which(OD > input.well@norm)] = log(OD[which(OD > input.well@norm)] - input.well@norm)\n\t\n\t# Add a column to the \"screen.data\" slot of the well\n\tinput.well@screen.data$log.OD = log.OD\t\n\t# Update the \"use.log\" slot of the well \n\tinput.well@use.log = use.log\t\n\n\treturn(input.well)\n\t}\n\n########################################################################\n# #\n# Remove timepoints from the analysis but not from the raw data #\n# #\n########################################################################\n# \n# Removes timepoints from further analysis. Does not remove them from the raw data;\n# instead, this function creates or updates the Remove column in slot \"screen.data\" of the well which dictates whether \n# individual timepoints are returned using the function. \n#\n# can be a vector containing:\n# - any combination of positive and negative integers \n# the timepoints at indices corresponding to positive integers will be set to be removed.\n# the timepoints at indices corresponding to negative integers will be be re-added if they were previously set to be removed.\n# - a single zero, which resets all timepoints (nothing will be removed)\n# - a logical vector to replace the Remove column and which will be cycled along the length of the timepoints. \n\nremove.points = function(input.well, points){\n # Copy the Remove column or create a new one if it doesn't yet exist\n\tif (is.null(input.well@screen.data$Remove))\n\t\tRemove = rep(F, length(input.well))\n\telse\n\t\tRemove = input.well@screen.data$Remove\n\n # If is a logical vector, recycle it along the length of Remove \n\tif (length(points[!is.na(points)]) != 0){\n\t# Separate positive and negative integers\n \tif (is.logical(points) & !any(is.na(points)))\n \t\tRemove = rep(points,length.out=nrow(input.well@screen.data))\t\n \t\telse{\n \tpos = points[points > 0]\n \tneg = -points[points < 0]\n \tRemove[pos] = T\n \tRemove[neg] = F \n \t\t \t\n # If contains only zeros, reset the Remove vector to all F \t\n \tif (all(points == 0))\n \t\tRemove[1:length(Remove)] = F\n \t\t}\n }\n # replace the Remove column\n\tinput.well@screen.data$Remove = Remove\n\tinput.well\n\t}\n\n\n\n\n\n", + "created" : 1423869246743.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2859176021", + "id" : "A7CAE343", + "lastKnownWriteTime" : 1423869285, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/normalize.and.transform.R", + "project_path" : "normalize.and.transform.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EA711236 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EA711236 new file mode 100644 index 0000000..809cfce --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EA711236 @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, \n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n\n# GCAT version 5.00\n# Notes by Jason\n# 08/18/2011\n\n# Initialization\n\n\nPLATE.LETTERS = paste(rep(c(\"\", LETTERS), each = 26), rep(LETTERS, 26), sep=\"\")\nglobal.version.number = packageDescription(pkg=\"GCAT\")$Version \n\n########################################################################\n# #\n# Top-level functions for analysis of screening data from .csv files. #\n# #\n########################################################################\n# This functions is called directly by the user interface.\n# They in turn call the main function (below) multiple times for each data file provided in . \n\n# Arguments:\n# file.list - a list of full paths to .csv files. all files must be in the same format (see )\n# single.plate - are the file in the single plate (wide) format vs. the multi-plate (long) format?\n# layout.file - (optional) provide full path to a layout file with strain and media definitions (applies to all files in list)\n\n# out.dir - name a directory to output the table of curve parameters to (defaults to working directory) \n# graphic.dir - name a directory to output the images of the fitted curves to (defaults to subdirectory \"pics\" of above)\n\n\n# add.constant- should be a numeric constant that will be added to each curve before the log transform (defaults to 1) \n# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n# growth.cutoff - minimum threshold for curve growth. \n# points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells.\n# remove.jumps - should the slope checking function be on the lookout for large jumps in OD?\n \n# silent - should messages be returned to the console?\n# verbose - should sub-functions return messages to console? (when I say verbose, I mean it!)\n\n# Returns:\n# if = F (default), avector of full paths to all the files generated by the function.\n# otherwise, the fitted array of well objects. \n\n# Use this function to analyze any set of .csv files using the same plate layout info. \n\n#' Analyze screening growth data from the given .csv files.\n#' \n#' Top-level GCAT function \n#' \n#' @param file.list A list of full paths to .csv files. all files must be in the same format (see )\n#' @param single.plate The file in the single plate (wide) format vs. the multi-plate (long) format?\n#' @param layout.file Full path to a layout file with strain and media definitions (applies to all files in list)\n\n#' @param out.dir A directory to output the table of curve parameters to (defaults to working directory) \n#' @param graphic.dir A directory to output the images of the fitted curves to (defaults to subdirectory \"pics\" of above)\n\n\n#' @param add.constant A numeric constant that will be added to each curve before the log transform (defaults to 1) \n#' @param blank.value User can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n#' @param growth.cutoff Minimum threshold for curve growth. \n#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells.\n#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD?\n#' @param time.input The time setting in which the current system is running?\n#' @param plate.nrow The number of rows in a plate.\n#' @param plate.ncol The number of columns in a plate.\n#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv \n#' @param multi.column.headers The headers of the result tabular data when analyzing multiple plates at once.\n#' @param single.column.headers The headers of the result tebaular data when analyzaing a single plate.\n#' @param layout.sheet.headers The headers of the layout file?\n#' @param silent Shoulde messages be returned to the console?\n#' @param verbose Should sub-functions return messages to console? (when I say verbose, I mean it!)\n#' @param overview.jpgs Should GCAT enable an overview image?\n#' \n#' @return A list of the output files.\ngcat.analysis.main = function(file.list, single.plate, layout.file = NULL, \n out.dir = getwd(), graphic.dir = paste(out.dir, \"/pics\", sep = \"\"), \n add.constant = 0.1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05,\n use.linear.param = F, use.loess = F, smooth.param=0.1,\n points.to.remove = 0, remove.jumps = F, time.input = NA,\n plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n silent = T, verbose = F, return.fit = F, overview.jpgs = T){\n \n plate.nrow <<- plate.nrow\n plate.ncol <<- plate.ncol\n input.skip.lines <<- input.skip.lines\n multi.column.headers <<- sub(\" \",\".\",multi.column.headers)\n single.column.headers <<- sub(\" \",\".\",single.column.headers)\n layout.sheet.headers <<- sub(\" \",\".\",layout.sheet.headers)\n \n # MB: Prototyping system unwanted argument guarding. Proper function \n # will be added in the future.\n # Not the best solution.\n if (is.na(time.input)) {\n if (single.plate)\n time.input = 1/3600\n else\n exception(\"Error: \", \"time.input is NA.\")\n }\n print(add.constant)\n if (add.constant < 0)\n exception(\"Error: \", \"The constant r should not be negative.\")\n # End prototyping temporary solution.\n \n upload.timestamp = strftime(Sys.time(), format=\"%Y-%m-%d %H:%M:%S\") # Get a timestamp for the time of upload. \n fitted.well.array.master = list()\n source.file.list = c()\n \n dim(fitted.well.array.master) = c(plate.nrow,plate.ncol,0)\n dimnames(fitted.well.array.master) = list(PLATE.LETTERS[1:plate.nrow], 1:plate.ncol, c())\n \n for(file.name in file.list){\n \n # Call on the file with single plate options\n \tfitted.well.array = try(gcat.fit.main(file.name = file.name, load.type = \"csv\", \n single.plate = single.plate, layout.file = layout.file, start.index = start.index, \n time.input = time.input, add.constant = add.constant, blank.value = blank.value, \n growth.cutoff = growth.cutoff, points.to.remove = points.to.remove, remove.jumps = remove.jumps,\n \t use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=smooth.param,\n plate.nrow = plate.nrow, plate.ncol = plate.ncol, multi.column.headers = multi.column.headers, \n single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers,\n input.skip.lines = input.skip.lines, silent = silent, verbose = verbose), silent = T)\n \n # Return error message if the function fails.\n if(class(fitted.well.array) == \"try-error\")\n return(as.character(fitted.well.array)) \n }\n \n # Add fitted well array onto existing fitted wells\n fitted.well.array.master = gcat.append.arrays(fitted.well.array.master, fitted.well.array, plate.ncol, plate.nrow)\n \n # Remove the \"processed_\" tag from file names and add to the list of source files.\n source.file.list = c(source.file.list, basename(paste(strsplit(file.name, \"processed_\")[[1]],collapse=\"/\"))) \n\n out.files = try(gcat.output.main(fitted.well.array.master, out.prefix = \"output\", \n source.file.list = source.file.list, upload.timestamp = upload.timestamp, \n growth.cutoff = growth.cutoff, add.constant = add.constant, blank.value = blank.value, start.index = start.index, \n points.to.remove = points.to.remove, remove.jumps = remove.jumps, \n out.dir = out.dir, graphic.dir = graphic.dir, overview.jpgs=overview.jpgs,\n use.linear.param=use.linear.param, use.loess=use.loess,\n silent = silent), silent = T)\n \n # Return file list or error message otherwise return \"successful analysis\" message (?)\n\n # file.list = c(\"Data was successfully analyzed.\", file.list) # <--- yet to be implemented. causes errors downstream right now \n if(class(out.files) == \"try-error\") return(as.character(out.files)) \n \n if(return.fit) return(fitted.well.array.master)\n else return(out.files) \n}\n\n########################################################################\n# #\n# Main function for analysis of screening data from input tables. #\n# #\n########################################################################\n# This is the main function that handles all the analyses for files in both single and multiple plate formats. \n# It is called by the top level function \n#\n# It then calls the following functions on each member of the array: \n# - curve normalization and standardization: , , , , \n# - curve shape analysis before model fitting: , , \n# - to fit a nonlinear model to the growth data: \n# Finally, it returns the fitted array of well objects.\n\n#' Main analysis function for GCAT \n#' \n#' This is the main function that handles all the analyses for data files in both single and multiple plate formats. \n#' It is called by the top level function \\code{gcat.analysis.main} along with \\code{gcat.output.main}.\n#' \n#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data \n#' in the multiple-plate (long) format. \n#' @param input.data A list of tables representing input files read with \\code{read.table}. Used to save time in cases\n#' of running multiple analyses on the same dataset. If used, the function will ignore \\code{file.name} entirely.\n#' @param load.type .csv by default. \n#' @param layout.file Specifies the location of a layout file containing identifying information.\n#' @param single.plate Whether the GCAT is analyzing a single plate or not.\n#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD\n#'measurement in each well is used.\n#' @param start.index Which timepoint should be used as the first one after inoculation?\n#' @param time.input Either a character describing the format used to convert timestamps in the input to numbers\n#' representing number of seconds (see \\code{strptime}), or a factor to divide entries in the Time column by to get the \n#' numbers of hours.\n#' @param normalize.method Describes the method used by \\code{normalize.ODs} to normalize cell density values using blank reads.\n#' @param add.constant A value for r in the log(OD + r) transformation.\n#' @param use.log Should the analysis use log on all values.\n#' @param points.to.remove A vector of integers specifying which timepoints should be removed across all wells. \n#' By default(0) none are marked for removal.\n#' @param use.linear.param Should the linear parameter be used or not.\n#' @param use.loess Should the loess model be used or not.\n#' @param smooth.param If loess model is used, this parameter define the smoothing parameter for the loess model.\n#' @param fall.cutoff A cutoff used by \\code{check.slopes} to decide on thresholds for jumps and tanking.\n#' @param growth.cutoff A threshold used by check.growth to decide whether a well displays growth.\n#' @param remove.jumps Should jumps in OD detected by the subfunction \\code{check.slopes}?\n#' @param plate.nrow The number of rows in the input files.\n#' @param plate.ncol The number of columns in the input files.\n#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv \n#' @param multi.column.headers The headers of the column when analyzing multiple plates.\n#' @param single.column.headers The headers of the column when analyzing a single plate.\n#' @param layour.sheet.headers The headers of the layout file.\n#' @param growth.model What growth model should be used?\n#' @param backup.growth.model If the main growth model fails, the back up model will be used.\n#' @param silent Surpress all messages.\n#' @param verbose Display all messages when analyzing each well.\n#' \n#' @return An array of well objects\ngcat.fit.main = function(file.name, input.data = NULL, load.type = \"csv\", layout.file = NULL, \n single.plate = F, blank.value = NULL, start.index = 2, time.input = NA,\n normalize.method = \"default\", add.constant = 1, use.log = T, points.to.remove = 0,\n use.linear.param=F, use.loess=F, smooth.param=0.1,\n fall.cutoff = -0.0025, growth.cutoff = 0.05, remove.jumps = F, \n plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0,\n multi.column.headers = c(\"Plate.ID\", \"Well\", \"OD\", \"Time\"), single.column.headers = c(\"\",\"A1\"), \n layout.sheet.headers = c(\"Strain\", \"Media Definition\"),\n growth.model = NA, backup.growth.model = NA, \n silent = F, verbose = F){\n \n # Explanation of arguments:\n \n # ---File Handling---\n # file.name - full path to an excel spreadsheet, .csv or tab-delimited text file, in either the single or multiple-plate format\n # input.data - use pre-loaded data set (output from function only). will override if not NULL \n # load.type - supports \"csv.\" \n # layout.file - full path to a file containing the plate layout in the same format as . will not be used if is \"xlsx\"\n\n # ---Input file format---\n # single.plate - true denotes data in single-plate format, i.e. simple OD output. false denotes multiple-plate robotic screening output. \n # note: reading directly from excel to R results in timestamps being converted to days.\n\n # ---Normalization and Transforms---\n # blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. \n # start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n # normalize.method - how should each growth curve be normalized? allowed values are:\n # \"first\": subtracts the first OD, assumed to be the blank, from all ODs\n # \"none\": does nothing, assumes no blank. highly recommend log(OD+1) transform in this case.\n # \"average.first\": forces all filled wells on each plate to match the average value at (after subtracting the first OD) \n # add.constant - a numeric constant that will be added to each curve before the log transform (defaults to 1)\n # use.log - should a log transform be applied to the data after normalization? \n # points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells.\n \n # ---Pre-fitting processing---\n # fall.cutoff - a cutoff value for determining whether OD falls significantly between two timepoints. see in prefit.processing.R for details. \n # growth.cutoff - a cutoff value for determining whether a well contains a successfully growing culture or not.\n # remove.jumps - should the slope checking function be on the lookout for large jumps in OD?\n \n # ---Model fitting---\n # model - which parametrized growth model to use? can be richards, gompertz, or logistic. models are defined as objects of class model, see \"model.class.R\"\n # backup.model - which model should be used if fitting using fails? should ideally be simpler than the main model (less parameters)\n \n # ---Miscellanous input/output preferences---\n # silent - should messages be returned to the console?\n # verbose - should sub-functions return messages to console? (when I say verbose, I mean it!) \n # unlog - should exported graphics be transformed back to the OD scale? \n # return.fit - should the function return an array of wells? if not, it will return a list of generated files. \n \n \t\n ########################################################################\n # Read from .csv file #\n ########################################################################\n #\n # The functions used here are found in table2well.R\n \n if(!silent) cat(\"\\nReading input files...\")\n # Read from .csv or tab-delimited text file using (in load.R)\n # if is provided, it will be used here. \n \n plate.layout = NULL \n # Read layout file if it is specified. \n if(!is.null(layout.file)){\n if(load.type==\"csv\") plate.layout = read.csv(layout.file,header=T,stringsAsFactors=F)\n else plate.layout = read.table(layout.file,header=T,sep=\"\\t\",stringsAsFactors=F) \n if(!silent) cat(\"\\n\\tAdded plate layout information from\", layout.file, \"\\n\")\n }\n \n # Load the data \n\t\twell.array = try(gcat.load.data(file.name = file.name, input.data = input.data, \n plate.layout = plate.layout, plate.nrow = plate.nrow, plate.ncol = plate.ncol, \n input.skip.lines = input.skip.lines, multi.column.headers = multi.column.headers, \n single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers,\n blank.value = blank.value, start.index = start.index, single.plate = single.plate, \n load.type = load.type, silent=silent),silent=silent)\n\n # Return an error if there is a problem with file loading. \n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n\t\t\n\n # !---At this point, is an array of well objects, each containing raw data and media/strain information if provided--- \n \n # Attempt to apply time formatting to all wells in array \n well.array = try(aapply(well.array, gcat.start.times, start.index = start.index, time.input = time.input),silent=silent)\n \n # Return an error if there is a problem with time formatting\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n ########################################################################\n # Perform normalization and transformation of raw data #\n ######################################################################## \n #\n # The functions used here are found in normalize.and.transform.R \n \n if(!silent) cat(\"\\nProcessing raw data...\")\n \n # Set all timepoints to active for now using \"points.to.remove=0\" argument with \n # adds an extra column to the \"well.array\" slot of each well specifying which points to remove when data is retrieved from the well\n well.array = aapply(well.array, remove.points, points = 0)\n \n # Normalize ODs using specified method and adding a constant if desired. \n # sets the \"norm\" slot of each well to a value to be subtracted from OD values whenever data is retrieved from the well\n well.array = try(normalize.ODs(well.array, normalize.method = normalize.method, \n start.index = start.index, blank.value = blank.value, add.constant = add.constant),silent=silent)\n \n # Return an error if there is a problem with normalization\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Transform ODs on the logarithmic scale, regardless of whether is true \n # an extra column of log-transformed values is added to the \"well.array\" slot of each well \n # the \"use.log\" slot of each well is set instead to determine whether the transformed values will be returned when data is retrieved from the well.\n well.array = try(aapply(well.array, transform.ODs, start.index = start.index, blank.value = blank.value, use.log = use.log, constant.added = add.constant),silent=silent)\n \n # Return an error if there is a problem with transformation\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Remove specified timepoints across wells (use \"points.to.remove=NULL\" if no points to remove) \n well.array = try(aapply(well.array, remove.points, points = points.to.remove),silent=silent)\n \n # Return an error if there is a problem with point removal\n if (class(well.array) == \"try-error\")\n stop(\"Error in : \", well.array) \n \n \n \n ########################################################################\n # Pre-fitting data processing (analysis of curve shapes) #\n ######################################################################## \n #\n # The functions used here are found in slope.analysis.R\n \n # Estimate slope at each timepoint \n # add a column to the \"well.array\" slot of each well with the local slope at each timepoint \n \n well.array = try(aapply(well.array, calculate.slopes, silent=!verbose),silent=silent)\n \n # Return an error if there is a problem with slope calculation\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n # Check slopes for tanking and/or jumping behavior\n # fills the \"curve.par\" slot of each well with , denoting the timepoint at which tanking starts (if none, value is NA) \n # uses to remove all points after \n # It will also fill the \"jump.error\" slot with a status message, and try to use an automated process to remove the \n # erroneous points if is true (default false). \n \n well.array = try(aapply(well.array, check.slopes, fall.cutoff = fall.cutoff, remove.jumps = remove.jumps, silent=!verbose, draw = F),silent=silent)\n \n # Return an error if there is a problem with slope analysis\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n \t\n # Check curves for growth above cutoff\n # fills the \"curve.par\" slot of each well with , denoting whether the well has no detectable growth. \n well.array = try(aapply(well.array, check.growth, growth.cutoff = growth.cutoff, start.index = start.index),silent=silent)\n \n # Return an error if there is a problem with growth.check\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \t\n ########################################################################\n # Fit parameterized models to data #\n ######################################################################## \n #\n # The functions used here are found in fit.model.R \n \n # Fit each well with the selected model and attempt to catch failed fittings with the backup model \n # skips wells designated as above\n # fills the \"fit.info\" slot of each well with \"success,\" \"failed,\" or \"skipped\"\n # if fit was successful:\n # fills the \"equation\" and \"model.name\" slots with the relevant info for the successful model \n # fills the \"fit.par\" slot with fitted parameters if fit is successful \n \n if(!silent) cat(\"\\nFitting models to data...\")\n well.array = aapply(well.array, fit.model, growth.model=growth.model,\n backup.growth.model = backup.growth.model, use.linear.param=use.linear.param,\n use.loess=use.loess, smooth.param=smooth.param, silent=!verbose)\n \n # Return an error if there is a problem with model fitting\n if (class(well.array) == \"try-error\")\n \tstop(\"Error in : \", well.array)\n \n if(!silent) cat(\"\\ndone!\\n\") \n return(well.array) \n } \n \n \n########################################################################\n# #\n# Output function for generating files from fitted data. #\n# #\n######################################################################## \n#' Output function for generating files from fitted data.\n#' \n#' Handles files and directories, calls \\code{table.out}, \\code{plate.overview} and \\code{view.fit} \n#' to generate output tables and graphics.\n#' \n#' @param fitted.well.array A list of fitted well objects.\n#' @param out.prefix Prefix that is in the name of output files.\n#' @param blank.value User can enter a blank OD measurement for uninoculated wells. \n#' If NULL, defaults to the value of the first OD measurement of each well.\n#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one)\n#' @param growth.cutoff Minimum threshold for curve growth.\n#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells.\n#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD?\n#' @param out.dir name a directory to output the table of curve parameters to (defaults to working directory) \n#' @param graphic.dir name a directory to output the images of the fitted curves to \n#' (defaults to subdirectory \"pics\" of above)\n#' @param overview.jpgs should jpgs be generated for each plate with the overview graphic? \n#' This is for backwards compatibility with the old web server. \n#' @param silent should messages be returned to the console?\n#' @param unlog should exported graphics be transformed back to the OD scale?\n#' @param constant.added (should be the same value as add.constant above) - \n#' used to readjust for the constant added during the log transform when plotting ODs. \n#' @return A list of output files if success.\n\ngcat.output.main = function(fitted.well.array, out.prefix = \"\", source.file.list, upload.timestamp = NULL, \n add.constant, blank.value, start.index, growth.cutoff, points.to.remove, remove.jumps, \n out.dir = getwd(), graphic.dir = paste(out.dir,\"/pics\",sep = \"\"), overview.jpgs = T,\n use.linear.param=F, use.loess=F,\n unlog = F, silent = T){ \n \n # Prepare timestamp for addition to output file names. \n filename.timestamp = strftime(upload.timestamp, format=\"_%Y-%m-%d_%H.%M.%S\")\n \t\n ########################################################################\n # Prepare to write to output files #\n ######################################################################## \t\n\t if(is.null(blank.value)) blank.value = \"First timepoint in well\"\n\t \n if(!silent) cat(\"\\nFinding/creating new output directories...\")\n \n old.wd = getwd() \n # Create output directory if it doesn't exist\n if(class(try(setwd(out.dir), silent = T)) == \"try-error\"){\n \tif(!silent) cat(\"\\ncreating new output directory\")\n \tif (class(try(dir.create(out.dir))) == \"try-error\")\n \t\tstop(\"Error creating new output directory!\")\n \t}\n \n # Create graphics directory if it doesn't exist\n if(class(try(setwd(graphic.dir), silent = T)) == \"try-error\"){\n \tif(!silent) cat(\"\\ncreating new graphics directory\")\n \tif (class(try(dir.create(graphic.dir))) == \"try-error\")\n \t\tstop(\"Error creating new graphics directory!\")\n \t}\n \t\n ########################################################################\n # Populate a data table with fit results and write to file #\n ######################################################################## \n # \n # The functions used here are found in table.output.R \n \n # Creates a table with a row for each well and a column for each of various identifiers and fitted and calculated parameters. \n \n if(!silent) cat(\"\\nPopulating data table...\")\n table.fit = try(table.out(fitted.well.array, filename.timestamp=filename.timestamp,use.linear.param=use.linear.param, use.loess=use.loess, constant.added=add.constant))\n \n # Return an error if there is a problem with returning the table\n if (class(fitted.well.array) == \"try-error\")\n \tstop(\"Error in : \", fitted.well.array)\n \t\n \t\n # Set working directory to \n\tif (class(try(setwd(out.dir))) == \"try-error\")\n\t\tstop(\"Error setting directory for table output\")\n\t\t\n\t# Write output table to file in \n table.filename = paste(out.dir, \"/\", out.prefix, \"_gcat.fit\", filename.timestamp, \".txt\", sep = \"\")\n if (class(try(write.table(table.fit, table.filename, sep = \"\\t\", row.names = F))) == \"try-error\")\n\t\tstop(\"Error writing tabular output\")\n\t\t\n \t# ---If successfully written, add postscript and start a list of generated files.\t\n generated.files = table.filename\n\n ########################################################################\n # Write individual fit and overview graphics to file #\n ######################################################################## \n # \n # The functions used here are found in graphic.output.R\n \n if(!silent) cat(\"\\nDrawing graphics...\")\n \n # Set working directory to \n\tif (class(try(setwd(graphic.dir))) == \"try-error\")\n\t\tstop(\"Error setting directory for graphic output\")\n\t# Use function to write fit graphics to file. \n \n\tgraphic.files = try(pdf.by.plate(fitted.well.array, out.prefix=out.prefix, upload.timestamp = upload.timestamp, \n unlog=unlog,constant.added=add.constant,overview.jpgs=overview.jpgs),silent=silent)\n \n if (class(graphic.files) == \"try-error\")\n\t\tstop(\"Error in : \", graphic.files)\n \n # If successfully written, add to the list of generated files.\t\n generated.files = c(generated.files, graphic.files)\n \n ########################################################################\n # Add a postscript to the output table with legend and file info. #\n ######################################################################## \n # \t\n sink(table.filename, append = T)\n analysis.timestamp = strftime(Sys.time(), format=\"%Y-%m-%d %H:%M:%S\")\n cat(\"\\n# Raw OD values are adjusted and log-transformed before fitting a growth curve as follows: log.OD = log(OD - blank + const) where blank is OD of blank medium and const is specified by the user (1 by default)\",\n \"\\n# Values are reported on the above 'log.OD' scale unless otherwise specified.\",\n \"\\n# .SE columns report standard errors of those values that are estimated directly as parameters of global sigmoid models.\",\n \"\\n# .OD columns report values back-transformed to the linear 'OD - blank' scale.\",\n \"\\n\")\n \n cat(\"\\n# -- Explanation of columns --\",\n \"\\n# - model: Name of the model the well was successfully fit with (if any)\",\n \"\\n# - lag.time: Lag time estimate inferred from the fitted model\",\n \"\\n# - inflection.time: inflection time point of the growth curve when drawn on the log scale\",\n \"\\n# - max.spec.growth.rate: maximum specific growth rate estimate inferred from the fitted model. Estimated as the first derivative of the growth curve at inflection time point\", \n \"\\n# - baseline: growth curve baseline. Global sigmoid model: baseline is parameter 'b' of the model. LOESS: baseline is the same as the lowest predicted log.OD value\",\n \"\\n# - amplitude: difference between upper plateau and baseline values. Global sigmoid model: amplitude is parameter 'A' of the model. LOESS: amplitude = max.log.OD - min.log.OD\",\n \"\\n# - plateau: upper asymptote value of the fitted model. Global sigmoid model: plateau = b + A. LOESS: plateau = max.log.OD\",\n \"\\n# - inoc.log.OD: log.OD value at inoculation. Estimated value from the fitted model is used, rather than the actual measurement\", \n \"\\n# - max.log.OD: maximal log.OD value reached during the experiment. Estimated value from the fitted model is used rather than the actual measurement\",\n \"\\n# - projected.growth: maximal projected growth over inoculation value. Global sigmoid model: projected.growth = plateau - inoc.log.OD. LOESS: not reported\",\n \"\\n# - achieved.growth: maximal growth over inoculation value actually achieved during the experiment. achieved.growth = max.log.OD - inoc.log.OD\",\n \"\\n# - shape.par: shape parameter of the Richard equation\",\n \"\\n# - R.squared: goodness of fit metric. Also known as coefficient of determination. R.squared is usually between 0 and 1. A value close to 1 indicates good fit.\",\n \"\\n# - RSS: residual sum of squares. Another goodness of fit metric. Smaller values indicate better fits.\",\n \"\\n# - empty: (Well indicator)\", \n \"\\n# - an 'E' indicates that the well was empty and no growth was detected. \",\n \"\\n# - an 'I' indicates that the well was inoculated and growth was detected above the threshold. \",\n \"\\n# - an 'E*' indicates that the well was empty and growth was detected (possible contamination). \",\n \"\\n# - an '!' indicates that the well was inoculated and no growth was detected. \",\n \"\\n# - asymp.not.reached: shows “L” if the bottom asymptote (baseline) was not reached and “U” if the upper asymptote (plateau) was not reached.\",\n \"\\n# - tank: (Tanking indicator) If a number is present then the growth trend was determined to tank at that timepoint index.\", \n \"\\n# - other: Additional flag column. Displays information about whether jumps in OD were detected and what was done about them.\",\n \"\\n# - pdf.file and page.no: location of the figure for this well in the output .pdf files.\"\n )\n \n\t # Analysis information \n \n cat(\"\\n#\\n# -- Source file information--\",\n \"\\n# \", paste(source.file.list, collapse = \"\\n# \"), \n \"\\n# analyzed using GCAT v\", global.version.number, \n \"\\n# request sent: \", upload.timestamp, \n \"\\n# completed: \", analysis.timestamp, \n \"\\n#\\n# -- Parameters used in current analysis --\",\n \"\\n# - Constant added to log(OD + n) transformation:\", add.constant,\n \"\\n# - Blank OD value: \", blank.value,\n \"\\n# - Index of inoculation timepoint\", start.index,\n \"\\n# - Minimum growth threshold:\", growth.cutoff, \n \"\\n# - Removed points:\", paste(points.to.remove, collapse = \" \"),\n \"\\n# - Jump detection:\", remove.jumps) \n sink()\n \n ########################################################################\n # Return values to R #\n ######################################################################## \n # \n\n if(!silent) cat(\"\\ndone!\") \n setwd(old.wd)\n # Return list of generated files\n\treturn(generated.files)\n }\n \n", + "created" : 1423869094349.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "2752939431", + "id" : "EA711236", + "lastKnownWriteTime" : 1423869149, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/GCAT.main.R", + "project_path" : "GCAT.main.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EE21755B b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EE21755B new file mode 100644 index 0000000..7057d7b --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/per/t/EE21755B @@ -0,0 +1,16 @@ +{ + "contents" : "#Copyright 2012 The Board of Regents of the University of Wisconsin System.\n#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead,\n#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman\n#\n#This file is part of GCAT.\n#\n#GCAT is free software: you can redistribute it and/or modify\n#it under the terms of the GNU Lesser General Public License as published by\n#the Free Software Foundation, either version 3 of the License, or\n#(at your option) any later version.\n#\n#GCAT is distributed in the hope that it will be useful,\n#but WITHOUT ANY WARRANTY; without even the implied warranty of\n#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n#GNU Lesser General Public License for more details.\n#\n#You should have received a copy of the GNU Lesser General Public License \n#along with GCAT. If not, see .\n########################################################################\n# #\n# class definition and functions. Objects contain equations #\n# and other information for parameterized growth curve models. #\n# #\n########################################################################\nsetClass(\"model\", representation(name = \"character\",\n expression = \"expression\",\n formula = \"formula\",\n guess = \"function\"))\n# Slots:\n# name - a simple description of the model.\n# expression - an object of class \"expression\" that evaluates the response (transformed OD) with respect to the variable Time.\n# formula - same as expression, but with y as the response.\n# guess - a function that computes initial guesses for the parameters given a well object with a valid \"screen.data\" slot\n# containing useable OD values and slope estimates\n# --------------------------------------------------------------------\n# Function to create a new model \t \n#' Model \n#' \n#' Function to create a new model \n#' @param name The name of the model \n#' @param expression Expression of the model \n#' @param formula The formula of this model \n#' @param guess The guess of this model \n#' @return The new model \nmodel = function(name, expression, formula, guess){\n new(\"model\", name = name, expression = expression, formula = formula, guess = guess)\n}\n\nloess.g = function(well,smooth.param=0.75){\n data = data.from(well)\n growth = data[,2]\n Time = data[,1]\n \n # predicted growth values to be used in estimating growth curve parameters\n loess.fit = loess(growth~Time,span=smooth.param)\n t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000)\n y = predict(loess.fit, data.frame(Time=t))\n attr(y,\"names\") = NULL # need to remove the names to prevent them from showing up in the returned vector\n \n # Remove any data points where y has not been estimated\n filt = is.finite(y)\n t = t[filt]\n y = y[filt] # remove any NA etc\n \n # specific growth using loess to find max derivative\n delta.t = diff(t)\n dydt = diff(y)/delta.t\n u = max(dydt)\n \n # lower and upper asymptotes\n b = min(y)\n A = max(y) - min(y)\n \n # inflection point\n inflection.pt.index = which.max(dydt)\n inflection.time = t[inflection.pt.index]\n inflection.y = y[inflection.pt.index]\n \n # lag time\n lam = inflection.time - (inflection.y-b)/u\n \n # Return named array of estimates\n c(A = A, b = b, lam = lam, u = u)\n}\n\n\n", + "created" : 1423869204555.000, + "dirty" : false, + "encoding" : "UTF-8", + "folds" : "", + "hash" : "3423035371", + "id" : "EE21755B", + "lastKnownWriteTime" : 1423869219, + "path" : "~/Documents/GCAT4_old/trunk/R/GCAT/R/class.model.R", + "project_path" : "class.model.R", + "properties" : { + }, + "source_on_save" : false, + "type" : "r_source" +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/2ACDF6EF b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/2ACDF6EF new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/2ACDF6EF @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/59ABD774 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/59ABD774 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/59ABD774 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/5C623936 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/5C623936 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/5C623936 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/6E6918EE b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/6E6918EE new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/6E6918EE @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/9402820B b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/9402820B new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/9402820B @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/EFF3E540 b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/EFF3E540 new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/EFF3E540 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/F3CF638E b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/F3CF638E new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/F3CF638E @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/INDEX b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/INDEX new file mode 100644 index 0000000..d642c05 --- /dev/null +++ b/R/GCAT/R/.Rproj.user/7CB73FCA/sdb/prop/INDEX @@ -0,0 +1,7 @@ +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2FGCAT.main.R="59ABD774" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Fclass.model.R="6E6918EE" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Ffit.model.R="5C623936" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Ffitted.calculations.R="2ACDF6EF" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Fnormalize.and.transform.R="F3CF638E" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Fplot.fit.R="EFF3E540" +~%2FDocuments%2FGCAT4_old%2Ftrunk%2FR%2FGCAT%2FR%2Ftable2well.R="9402820B" diff --git a/R/GCAT/R/GCAT.main.R b/R/GCAT/R/GCAT.main.R new file mode 100644 index 0000000..c57e5d6 --- /dev/null +++ b/R/GCAT/R/GCAT.main.R @@ -0,0 +1,585 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +# GCAT version 5.00 +# Notes by Jason +# 08/18/2011 + +# Initialization + + +PLATE.LETTERS = paste(rep(c("", LETTERS), each = 26), rep(LETTERS, 26), sep="") +global.version.number = packageDescription(pkg="GCAT")$Version + +######################################################################## +# # +# Top-level functions for analysis of screening data from .csv files. # +# # +######################################################################## +# This functions is called directly by the user interface. +# They in turn call the main function (below) multiple times for each data file provided in . + +# Arguments: +# file.list - a list of full paths to .csv files. all files must be in the same format (see ) +# single.plate - are the file in the single plate (wide) format vs. the multi-plate (long) format? +# layout.file - (optional) provide full path to a layout file with strain and media definitions (applies to all files in list) + +# out.dir - name a directory to output the table of curve parameters to (defaults to working directory) +# graphic.dir - name a directory to output the images of the fitted curves to (defaults to subdirectory "pics" of above) + + +# add.constant- should be a numeric constant that will be added to each curve before the log transform (defaults to 1) +# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. +# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one) +# growth.cutoff - minimum threshold for curve growth. +# points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells. +# remove.jumps - should the slope checking function be on the lookout for large jumps in OD? + +# silent - should messages be returned to the console? +# verbose - should sub-functions return messages to console? (when I say verbose, I mean it!) + +# Returns: +# if = F (default), avector of full paths to all the files generated by the function. +# otherwise, the fitted array of well objects. + +# Use this function to analyze any set of .csv files using the same plate layout info. + +#' Analyze screening growth data from the given .csv files. +#' +#' Top-level GCAT function +#' +#' @param file.list A list of full paths to .csv files. all files must be in the same format (see ) +#' @param single.plate The file in the single plate (wide) format vs. the multi-plate (long) format? +#' @param layout.file Full path to a layout file with strain and media definitions (applies to all files in list) +#' @param out.dir A directory to output the table of curve parameters to (defaults to working directory) +#' @param graphic.dir A directory to output the images of the fitted curves to (defaults to subdirectory "pics" of above) +#' @param use.linear.param Whether to use linear parameters or not? +#' @param use.loess Whether to use LOESS model or not? +#' @param smooth.param Smoothing parameter for LOESS model. +#' @param add.constant A numeric constant that will be added to each curve before the log transform (defaults to 1) +#' @param blank.value User can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. +#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one) +#' @param growth.cutoff Minimum threshold for curve growth. +#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells. +#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD? +#' @param time.input The time setting in which the current system is running? +#' @param plate.nrow The number of rows in a plate. +#' @param plate.ncol The number of columns in a plate. +#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv +#' @param multi.column.headers The headers of the result tabular data when analyzing multiple plates at once. +#' @param single.column.headers The headers of the result tebaular data when analyzaing a single plate. +#' @param layout.sheet.headers The headers of the layout file? +#' @param silent Shoulde messages be returned to the console? +#' @param verbose Should sub-functions return messages to console? (when I say verbose, I mean it!) +#' @param overview.jpgs Should GCAT enable an overview image? +#' +#' @return A list of the output files. +gcat.analysis.main = function(file.list, single.plate, layout.file = NULL, + out.dir = getwd(), graphic.dir = paste(out.dir, "/pics", sep = ""), + add.constant = 0.1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05, + use.linear.param = F, use.loess = F, smooth.param=0.1, + points.to.remove = 0, remove.jumps = F, time.input = NA, + plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), single.column.headers = c("","A1"), + layout.sheet.headers = c("Strain", "Media Definition"), + silent = T, verbose = F, return.fit = F, overview.jpgs = T){ + + # MB: Prototyping system unwanted argument guarding. Proper function + # will be added in the future. + # Not the best solution. + if (is.na(time.input)) { + if (single.plate) + time.input = 1/3600 + else + exception("Error: ", "time.input is NA.") + } + + if (add.constant < 0) + exception("Error: ", "The constant r should not be negative.") + # End prototyping temporary solution. + + upload.timestamp = strftime(Sys.time(), format="%Y-%m-%d %H:%M:%S") # Get a timestamp for the time of upload. + fitted.well.array.master = list() + source.file.list = c() + + dim(fitted.well.array.master) = c(plate.nrow,plate.ncol,0) + dimnames(fitted.well.array.master) = list(PLATE.LETTERS[1:plate.nrow], 1:plate.ncol, c()) + + for(file.name in file.list){ + + # Call on the file with single plate options + fitted.well.array = try(gcat.fit.main(file.name = file.name, load.type = "csv", + single.plate = single.plate, layout.file = layout.file, start.index = start.index, + time.input = time.input, add.constant = add.constant, blank.value = blank.value, + growth.cutoff = growth.cutoff, points.to.remove = points.to.remove, remove.jumps = remove.jumps, + use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=smooth.param, + plate.nrow = plate.nrow, plate.ncol = plate.ncol, multi.column.headers = multi.column.headers, + single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers, + input.skip.lines = input.skip.lines, silent = silent, verbose = verbose), silent = T) + + # Return error message if the function fails. + if(class(fitted.well.array) == "try-error") + return(as.character(fitted.well.array)) + } + + # Add fitted well array onto existing fitted wells + fitted.well.array.master = gcat.append.arrays(fitted.well.array.master, fitted.well.array, plate.ncol, plate.nrow) + + # Remove the "processed_" tag from file names and add to the list of source files. + source.file.list = c(source.file.list, basename(paste(strsplit(file.name, "processed_")[[1]],collapse="/"))) + + out.files = try(gcat.output.main(fitted.well.array.master, out.prefix = "output", + source.file.list = source.file.list, upload.timestamp = upload.timestamp, + growth.cutoff = growth.cutoff, add.constant = add.constant, blank.value = blank.value, start.index = start.index, + points.to.remove = points.to.remove, remove.jumps = remove.jumps, + out.dir = out.dir, graphic.dir = graphic.dir, overview.jpgs=overview.jpgs, + use.linear.param=use.linear.param, use.loess=use.loess, plate.ncol = plate.ncol, plate.nrow = plate.nrow, + silent = silent), silent = T) + + # Return file list or error message otherwise return "successful analysis" message (?) + + # file.list = c("Data was successfully analyzed.", file.list) # <--- yet to be implemented. causes errors downstream right now + if(class(out.files) == "try-error") return(as.character(out.files)) + + if(return.fit) return(fitted.well.array.master) + else return(out.files) +} + +######################################################################## +# # +# Main function for analysis of screening data from input tables. # +# # +######################################################################## +# This is the main function that handles all the analyses for files in both single and multiple plate formats. +# It is called by the top level function +# +# It then calls the following functions on each member of the array: +# - curve normalization and standardization: , , , , +# - curve shape analysis before model fitting: , , +# - to fit a nonlinear model to the growth data: +# Finally, it returns the fitted array of well objects. + +#' Main analysis function for GCAT +#' +#' This is the main function that handles all the analyses for data files in both single and multiple plate formats. +#' It is called by the top level function \code{gcat.analysis.main} along with \code{gcat.output.main}. +#' +#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data +#' in the multiple-plate (long) format. +#' @param input.data A list of tables representing input files read with \code{read.table}. Used to save time in cases +#' of running multiple analyses on the same dataset. If used, the function will ignore \code{file.name} entirely. +#' @param load.type .csv by default. +#' @param layout.file Specifies the location of a layout file containing identifying information. +#' @param single.plate Whether the GCAT is analyzing a single plate or not. +#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD +#'measurement in each well is used. +#' @param start.index Which timepoint should be used as the first one after inoculation? +#' @param time.input Either a character describing the format used to convert timestamps in the input to numbers +#' representing number of seconds (see \code{strptime}), or a factor to divide entries in the Time column by to get the +#' numbers of hours. +#' @param normalize.method Describes the method used by \code{normalize.ODs} to normalize cell density values using blank reads. +#' @param add.constant A value for r in the log(OD + r) transformation. +#' @param use.log Should the analysis use log on all values. +#' @param points.to.remove A vector of integers specifying which timepoints should be removed across all wells. +#' By default(0) none are marked for removal. +#' @param use.linear.param Should the linear parameter be used or not. +#' @param use.loess Should the loess model be used or not. +#' @param smooth.param If loess model is used, this parameter define the smoothing parameter for the loess model. +#' @param fall.cutoff A cutoff used by \code{check.slopes} to decide on thresholds for jumps and tanking. +#' @param growth.cutoff A threshold used by check.growth to decide whether a well displays growth. +#' @param remove.jumps Should jumps in OD detected by the subfunction \code{check.slopes}? +#' @param plate.nrow The number of rows in the input files. +#' @param plate.ncol The number of columns in the input files. +#' @param input.skip.lines If specified, this number of lines shall be skipped from the top when reading the input file with read.csv +#' @param multi.column.headers The headers of the column when analyzing multiple plates. +#' @param single.column.headers The headers of the column when analyzing a single plate. +#' @param layour.sheet.headers The headers of the layout file. +#' @param growth.model What growth model should be used? +#' @param backup.growth.model If the main growth model fails, the back up model will be used. +#' @param silent Surpress all messages. +#' @param verbose Display all messages when analyzing each well. +#' +#' @return An array of well objects +gcat.fit.main = function(file.name, input.data = NULL, load.type = "csv", layout.file = NULL, + single.plate = F, blank.value = NULL, start.index = 2, time.input = NA, + normalize.method = "default", add.constant = 1, use.log = T, points.to.remove = 0, + use.linear.param=F, use.loess=F, smooth.param=0.1, + fall.cutoff = -0.0025, growth.cutoff = 0.05, remove.jumps = F, + plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), single.column.headers = c("","A1"), + layout.sheet.headers = c("Strain", "Media Definition"), + growth.model = NA, backup.growth.model = NA, + silent = F, verbose = F){ + + # Explanation of arguments: + + # ---File Handling--- + # file.name - full path to an excel spreadsheet, .csv or tab-delimited text file, in either the single or multiple-plate format + # input.data - use pre-loaded data set (output from function only). will override if not NULL + # load.type - supports "csv." + # layout.file - full path to a file containing the plate layout in the same format as . will not be used if is "xlsx" + + # ---Input file format--- + # single.plate - true denotes data in single-plate format, i.e. simple OD output. false denotes multiple-plate robotic screening output. + # note: reading directly from excel to R results in timestamps being converted to days. + + # ---Normalization and Transforms--- + # blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. + # start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one) + # normalize.method - how should each growth curve be normalized? allowed values are: + # "first": subtracts the first OD, assumed to be the blank, from all ODs + # "none": does nothing, assumes no blank. highly recommend log(OD+1) transform in this case. + # "average.first": forces all filled wells on each plate to match the average value at (after subtracting the first OD) + # add.constant - a numeric constant that will be added to each curve before the log transform (defaults to 1) + # use.log - should a log transform be applied to the data after normalization? + # points.to.remove - a list of numbers referring to troublesome points that should be removed across all wells. + + # ---Pre-fitting processing--- + # fall.cutoff - a cutoff value for determining whether OD falls significantly between two timepoints. see in prefit.processing.R for details. + # growth.cutoff - a cutoff value for determining whether a well contains a successfully growing culture or not. + # remove.jumps - should the slope checking function be on the lookout for large jumps in OD? + + # ---Model fitting--- + # model - which parametrized growth model to use? can be richards, gompertz, or logistic. models are defined as objects of class model, see "model.class.R" + # backup.model - which model should be used if fitting using fails? should ideally be simpler than the main model (less parameters) + + # ---Miscellanous input/output preferences--- + # silent - should messages be returned to the console? + # verbose - should sub-functions return messages to console? (when I say verbose, I mean it!) + # unlog - should exported graphics be transformed back to the OD scale? + # return.fit - should the function return an array of wells? if not, it will return a list of generated files. + + + ######################################################################## + # Read from .csv file # + ######################################################################## + # + # The functions used here are found in table2well.R + + if(!silent) cat("\nReading input files...") + # Read from .csv or tab-delimited text file using (in load.R) + # if is provided, it will be used here. + + plate.layout = NULL + # Read layout file if it is specified. + if(!is.null(layout.file)){ + if(load.type=="csv") plate.layout = read.csv(layout.file,header=T,stringsAsFactors=F) + else plate.layout = read.table(layout.file,header=T,sep="\t",stringsAsFactors=F) + if(!silent) cat("\n\tAdded plate layout information from", layout.file, "\n") + } + + # Load the data + well.array = try(gcat.load.data(file.name = file.name, input.data = input.data, + plate.layout = plate.layout, plate.nrow = plate.nrow, plate.ncol = plate.ncol, + input.skip.lines = input.skip.lines, multi.column.headers = multi.column.headers, + single.column.headers = single.column.headers, layout.sheet.headers = layout.sheet.headers, + blank.value = blank.value, start.index = start.index, single.plate = single.plate, + load.type = load.type, silent=silent),silent=silent) + + # Return an error if there is a problem with file loading. + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + + # !---At this point, is an array of well objects, each containing raw data and media/strain information if provided--- + + # Attempt to apply time formatting to all wells in array + well.array = try(aapply(well.array, gcat.start.times, start.index = start.index, time.input = time.input),silent=silent) + + # Return an error if there is a problem with time formatting + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + ######################################################################## + # Perform normalization and transformation of raw data # + ######################################################################## + # + # The functions used here are found in normalize.and.transform.R + + if(!silent) cat("\nProcessing raw data...") + + # Set all timepoints to active for now using "points.to.remove=0" argument with + # adds an extra column to the "well.array" slot of each well specifying which points to remove when data is retrieved from the well + well.array = aapply(well.array, remove.points, points = 0) + + # Normalize ODs using specified method and adding a constant if desired. + # sets the "norm" slot of each well to a value to be subtracted from OD values whenever data is retrieved from the well + well.array = try(normalize.ODs(well.array, normalize.method = normalize.method, + start.index = start.index, blank.value = blank.value, add.constant = add.constant),silent=silent) + + # Return an error if there is a problem with normalization + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + # Transform ODs on the logarithmic scale, regardless of whether is true + # an extra column of log-transformed values is added to the "well.array" slot of each well + # the "use.log" slot of each well is set instead to determine whether the transformed values will be returned when data is retrieved from the well. + well.array = try(aapply(well.array, transform.ODs, start.index = start.index, blank.value = blank.value, use.log = use.log, constant.added = add.constant),silent=silent) + + # Return an error if there is a problem with transformation + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + # Remove specified timepoints across wells (use "points.to.remove=NULL" if no points to remove) + well.array = try(aapply(well.array, remove.points, points = points.to.remove),silent=silent) + + # Return an error if there is a problem with point removal + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + + + ######################################################################## + # Pre-fitting data processing (analysis of curve shapes) # + ######################################################################## + # + # The functions used here are found in slope.analysis.R + + # Estimate slope at each timepoint + # add a column to the "well.array" slot of each well with the local slope at each timepoint + + well.array = try(aapply(well.array, calculate.slopes, silent=!verbose),silent=silent) + + # Return an error if there is a problem with slope calculation + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + # Check slopes for tanking and/or jumping behavior + # fills the "curve.par" slot of each well with , denoting the timepoint at which tanking starts (if none, value is NA) + # uses to remove all points after + # It will also fill the "jump.error" slot with a status message, and try to use an automated process to remove the + # erroneous points if is true (default false). + + well.array = try(aapply(well.array, check.slopes, fall.cutoff = fall.cutoff, remove.jumps = remove.jumps, silent=!verbose, draw = F),silent=silent) + + # Return an error if there is a problem with slope analysis + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + + # Check curves for growth above cutoff + # fills the "curve.par" slot of each well with , denoting whether the well has no detectable growth. + well.array = try(aapply(well.array, check.growth, growth.cutoff = growth.cutoff, start.index = start.index),silent=silent) + + # Return an error if there is a problem with growth.check + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + ######################################################################## + # Fit parameterized models to data # + ######################################################################## + # + # The functions used here are found in fit.model.R + + # Fit each well with the selected model and attempt to catch failed fittings with the backup model + # skips wells designated as above + # fills the "fit.info" slot of each well with "success," "failed," or "skipped" + # if fit was successful: + # fills the "equation" and "model.name" slots with the relevant info for the successful model + # fills the "fit.par" slot with fitted parameters if fit is successful + + if(!silent) cat("\nFitting models to data...") + well.array = aapply(well.array, fit.model, growth.model=growth.model, + backup.growth.model = backup.growth.model, use.linear.param=use.linear.param, + use.loess=use.loess, smooth.param=smooth.param, silent=!verbose) + + # Return an error if there is a problem with model fitting + if (class(well.array) == "try-error") + stop("Error in : ", well.array) + + if(!silent) cat("\ndone!\n") + return(well.array) + } + + +######################################################################## +# # +# Output function for generating files from fitted data. # +# # +######################################################################## +#' Output function for generating files from fitted data. +#' +#' Handles files and directories, calls \code{table.out}, \code{plate.overview} and \code{view.fit} +#' to generate output tables and graphics. +#' +#' @param fitted.well.array A list of fitted well objects. +#' @param out.prefix Prefix that is in the name of output files. +#' @param blank.value User can enter a blank OD measurement for uninoculated wells. +#' If NULL, defaults to the value of the first OD measurement of each well. +#' @param start.index Which timepoint should be used as the first one after inoculation (defaults to the 2th one) +#' @param growth.cutoff Minimum threshold for curve growth. +#' @param points.to.remove A list of numbers referring to troublesome points that should be removed across all wells. +#' @param remove.jumps Should the slope checking function be on the lookout for large jumps in OD? +#' @param out.dir name a directory to output the table of curve parameters to (defaults to working directory) +#' @param graphic.dir name a directory to output the images of the fitted curves to +#' (defaults to subdirectory "pics" of above) +#' @param overview.jpgs should jpgs be generated for each plate with the overview graphic? +#' This is for backwards compatibility with the old web server. +#' @param silent should messages be returned to the console? +#' @param unlog should exported graphics be transformed back to the OD scale? +#' @param constant.added (should be the same value as add.constant above) - +#' used to readjust for the constant added during the log transform when plotting ODs. +#' @return A list of output files if success. + +gcat.output.main = function(fitted.well.array, out.prefix = "", source.file.list, upload.timestamp = NULL, + add.constant, blank.value, start.index, growth.cutoff, points.to.remove, remove.jumps, + out.dir = getwd(), graphic.dir = paste(out.dir,"/pics",sep = ""), overview.jpgs = T, + use.linear.param=F, use.loess=F, plate.nrow = 8, plate.ncol = 12, + unlog = F, silent = T){ + + # Prepare timestamp for addition to output file names. + filename.timestamp = strftime(upload.timestamp, format="_%Y-%m-%d_%H.%M.%S") + + ######################################################################## + # Prepare to write to output files # + ######################################################################## + if(is.null(blank.value)) blank.value = "First timepoint in well" + + if(!silent) cat("\nFinding/creating new output directories...") + + old.wd = getwd() + # Create output directory if it doesn't exist + if(class(try(setwd(out.dir), silent = T)) == "try-error"){ + if(!silent) cat("\ncreating new output directory") + if (class(try(dir.create(out.dir))) == "try-error") + stop("Error creating new output directory!") + } + + # Create graphics directory if it doesn't exist + if(class(try(setwd(graphic.dir), silent = T)) == "try-error"){ + if(!silent) cat("\ncreating new graphics directory") + if (class(try(dir.create(graphic.dir))) == "try-error") + stop("Error creating new graphics directory!") + } + + ######################################################################## + # Populate a data table with fit results and write to file # + ######################################################################## + # + # The functions used here are found in table.output.R + + # Creates a table with a row for each well and a column for each of various identifiers and fitted and calculated parameters. + + if(!silent) cat("\nPopulating data table...") + table.fit = try(table.out(fitted.well.array, filename.timestamp=filename.timestamp,use.linear.param=use.linear.param, use.loess=use.loess, constant.added=add.constant)) + + # Return an error if there is a problem with returning the table + if (class(fitted.well.array) == "try-error") + stop("Error in : ", fitted.well.array) + + + # Set working directory to + if (class(try(setwd(out.dir))) == "try-error") + stop("Error setting directory for table output") + + # Write output table to file in + table.filename = paste(out.dir, "/", out.prefix, "_gcat.fit", filename.timestamp, ".txt", sep = "") + if (class(try(write.table(table.fit, table.filename, sep = "\t", row.names = F))) == "try-error") + stop("Error writing tabular output") + + # ---If successfully written, add postscript and start a list of generated files. + generated.files = table.filename + + ######################################################################## + # Write individual fit and overview graphics to file # + ######################################################################## + # + # The functions used here are found in graphic.output.R + + if(!silent) cat("\nDrawing graphics...") + + # Set working directory to + if (class(try(setwd(graphic.dir))) == "try-error") + stop("Error setting directory for graphic output") + # Use function to write fit graphics to file. + + graphic.files = try(pdf.by.plate(fitted.well.array, out.prefix=out.prefix, upload.timestamp = upload.timestamp, + unlog=unlog,constant.added=add.constant,overview.jpgs=overview.jpgs, plate.ncol = plate.ncol, plate.nrow = plate.nrow),silent=silent) + + if (class(graphic.files) == "try-error") + stop("Error in : ", graphic.files) + + # If successfully written, add to the list of generated files. + generated.files = c(generated.files, graphic.files) + + ######################################################################## + # Add a postscript to the output table with legend and file info. # + ######################################################################## + # + sink(table.filename, append = T) + analysis.timestamp = strftime(Sys.time(), format="%Y-%m-%d %H:%M:%S") + cat("\n# Raw OD values are adjusted and log-transformed before fitting a growth curve as follows: log.OD = log(OD - blank + const) where blank is OD of blank medium and const is specified by the user (1 by default)", + "\n# Values are reported on the above 'log.OD' scale unless otherwise specified.", + "\n# .SE columns report standard errors of those values that are estimated directly as parameters of global sigmoid models.", + "\n# .OD columns report values back-transformed to the linear 'OD - blank' scale.", + "\n") + + cat("\n# -- Explanation of columns --", + "\n# - model: Name of the model the well was successfully fit with (if any)", + "\n# - lag.time: Lag time estimate inferred from the fitted model", + "\n# - inflection.time: inflection time point of the growth curve when drawn on the log scale", + "\n# - max.spec.growth.rate: maximum specific growth rate estimate inferred from the fitted model. Estimated as the first derivative of the growth curve at inflection time point", + "\n# - baseline: growth curve baseline. Global sigmoid model: baseline is parameter 'b' of the model. LOESS: baseline is the same as the lowest predicted log.OD value", + "\n# - amplitude: difference between upper plateau and baseline values. Global sigmoid model: amplitude is parameter 'A' of the model. LOESS: amplitude = max.log.OD - min.log.OD", + "\n# - plateau: upper asymptote value of the fitted model. Global sigmoid model: plateau = b + A. LOESS: plateau = max.log.OD", + "\n# - inoc.log.OD: log.OD value at inoculation. Estimated value from the fitted model is used, rather than the actual measurement", + "\n# - max.log.OD: maximal log.OD value reached during the experiment. Estimated value from the fitted model is used rather than the actual measurement", + "\n# - projected.growth: maximal projected growth over inoculation value. Global sigmoid model: projected.growth = plateau - inoc.log.OD. LOESS: not reported", + "\n# - achieved.growth: maximal growth over inoculation value actually achieved during the experiment. achieved.growth = max.log.OD - inoc.log.OD", + "\n# - shape.par: shape parameter of the Richard equation", + "\n# - R.squared: goodness of fit metric. Also known as coefficient of determination. R.squared is usually between 0 and 1. A value close to 1 indicates good fit.", + "\n# - RSS: residual sum of squares. Another goodness of fit metric. Smaller values indicate better fits.", + "\n# - empty: (Well indicator)", + "\n# - an 'E' indicates that the well was empty and no growth was detected. ", + "\n# - an 'I' indicates that the well was inoculated and growth was detected above the threshold. ", + "\n# - an 'E*' indicates that the well was empty and growth was detected (possible contamination). ", + "\n# - an '!' indicates that the well was inoculated and no growth was detected. ", + "\n# - asymp.not.reached: shows “L” if the bottom asymptote (baseline) was not reached and “U” if the upper asymptote (plateau) was not reached.", + "\n# - tank: (Tanking indicator) If a number is present then the growth trend was determined to tank at that timepoint index.", + "\n# - other: Additional flag column. Displays information about whether jumps in OD were detected and what was done about them.", + "\n# - pdf.file and page.no: location of the figure for this well in the output .pdf files." + ) + + # Analysis information + + cat("\n#\n# -- Source file information--", + "\n# ", paste(source.file.list, collapse = "\n# "), + "\n# analyzed using GCAT v", global.version.number, + "\n# request sent: ", upload.timestamp, + "\n# completed: ", analysis.timestamp, + "\n#\n# -- Parameters used in current analysis --", + "\n# - Constant added to log(OD + n) transformation:", add.constant, + "\n# - Blank OD value: ", blank.value, + "\n# - Index of inoculation timepoint", start.index, + "\n# - Minimum growth threshold:", growth.cutoff, + "\n# - Removed points:", paste(points.to.remove, collapse = " "), + "\n# - Jump detection:", remove.jumps) + sink() + + ######################################################################## + # Return values to R # + ######################################################################## + # + + if(!silent) cat("\ndone!") + setwd(old.wd) + # Return list of generated files + return(generated.files) + } + diff --git a/R/GCAT/R/addingParams.R b/R/GCAT/R/addingParams.R new file mode 100644 index 0000000..375a877 --- /dev/null +++ b/R/GCAT/R/addingParams.R @@ -0,0 +1,35 @@ +setwd("~/Downloads/") +file.list = file.name = "YPDAFEXglucoseTests_2-25-10.csv" +layout.file = "YPDAFEXglucoseTests_2-25-10_Layout.csv" +single.plate = T +out.dir = getwd() +graphic.dir = paste(out.dir, "/pics", sep = "") +add.constant = 1 +blank.value = NULL +start.index = 2 +growth.cutoff = 0.05 +use.linear.param = F +use.loess = F +smooth.param = 0.6 +points.to.remove = 0 +remove.jumps = F +silent = F +verbose = T +return.fit = F +overview.jpgs = T +plate.nrow = 8 +plate.ncol = 12 +input.skip.lines = 0 +multi.column.headers = c("Plate ID", "Well", "OD", "Time") +single.column.headers = c("","A1") +layout.sheet.headers = c("Strain", "Media Definition") + +t = gcat.analysis.main(file.list, single.plate, layout.file = NULL, + out.dir = getwd(), graphic.dir = paste(out.dir, "/pics", sep = ""), + add.constant = 1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05, + use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=0.1, + points.to.remove = 0, remove.jumps = F, time.input = NA, + plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), single.column.headers = c("","A1"), + layout.sheet.headers = c("Strain", "Media Definition"), + silent = F, verbose = F, return.fit = F, overview.jpgs = T) diff --git a/R/GCAT/R/class.model.R b/R/GCAT/R/class.model.R new file mode 100644 index 0000000..dad9a65 --- /dev/null +++ b/R/GCAT/R/class.model.R @@ -0,0 +1,122 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . +######################################################################## +# # +# class definition and functions. Objects contain equations # +# and other information for parameterized growth curve models. # +# # +######################################################################## +setClass("model", representation(name = "character", + expression = "expression", + formula = "formula", + guess = "function")) +# Slots: +# name - a simple description of the model. +# expression - an object of class "expression" that evaluates the response (transformed OD) with respect to the variable Time. +# formula - same as expression, but with y as the response. +# guess - a function that computes initial guesses for the parameters given a well object with a valid "screen.data" slot +# containing useable OD values and slope estimates +# -------------------------------------------------------------------- +###################### BEGIN PROTOTYPING ACCESSOR METHODS############## + +# Minh: Let this code fragment be F1. +if (!isGeneric("getName")){ + if (is.function("getName")) + fun <- getName + else + fun <- function(object) standardGeneric("getName") + setGeneric("getName", fun) +} +# End of F1 +setMethod("getName", "model", function(object) object@name) + +# Minh: Let this line be F2. +setGeneric("getExpression", function(object){standardGeneric("getExpression")}) +# Question: How is F1 different from F2? + +setMethod("getExpression", "model", + function(object){ + return(object@expression) + }) + +setGeneric("getFormula", function(object){standeardGeneric("getFormula")}) +setMethod("getFormula", "model", + function(object){ + return(object@formula) + }) + +setGeneric("getGuess", function(object){standeardGeneric("getGuess")}) +setMethod("getGuess", "model", + function(object){ + return(object@guess) + }) +######################## ENG PROTOTYPING ######################## + +# Function to create a new model +#' Model +#' +#' Function to create a new model +#' @param name The name of the model +#' @param expression Expression of the model +#' @param formula The formula of this model +#' @param guess The guess of this model +#' @return The new model +model = function(name, expression, formula, guess){ + new("model", name = name, expression = expression, formula = formula, guess = guess) +} + +loess.g = function(well,smooth.param=0.75){ + #data = data.from(well) + #growth = data[,2] + #Time = data[,1] + Time = data.from(well)[,1] + + # predicted growth values to be used in estimating growth curve parameters + loess.fit = loess(data.from(well)[,2]~Time,span=smooth.param) + t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000) + y = predict(loess.fit, data.frame(Time=t)) + attr(y,"names") = NULL # need to remove the names to prevent them from showing up in the returned vector + + # Remove any data points where y has not been estimated + filt = is.finite(y) + t = t[filt] + y = y[filt] # remove any NA etc + + # specific growth using loess to find max derivative + delta.t = diff(t) + dydt = diff(y)/delta.t + u = max(dydt) + + # lower and upper asymptotes + b = min(y) + A = max(y) - min(y) + + # inflection point + inflection.pt.index = which.max(dydt) + inflection.time = t[inflection.pt.index] + inflection.y = y[inflection.pt.index] + + # lag time + lam = inflection.time - (inflection.y-b)/u + + # Return named array of estimates + c(A = A, b = b, lam = lam, u = u) +} + + diff --git a/R/GCAT/R/class.well.R b/R/GCAT/R/class.well.R new file mode 100644 index 0000000..b774845 --- /dev/null +++ b/R/GCAT/R/class.well.R @@ -0,0 +1,435 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +######################################################################## +# # +# class definition and functions. Objects contain raw # +# data from screening runs on single wells from 96-well plates, and # +# other slots for processing and model-fitting details. # +# # +######################################################################## + +# Windows OS compatibility +Sys.setlocale(locale="C") +#require(RExcelXML) + +# Treat nls and loess as S4 classes to avoid warnings +setOldClass("nls") +setOldClass("loess") +setClass("well", representation(position = "character", + well.info = "list", + screen.data = "data.frame", + start.index = "numeric", + use.log = "logical", + norm = "numeric", + curve.par = "list", + fit.par = "list", + fit.std.err = "list", + equation = "expression", + model.name = "character", + fit.info = "character", + add.info = "character", + inflection.time = "numeric", + rss = "numeric", + loess = "loess", + nls = "nls")) + +# Slots: +# position - 3-member vector containing identifying information for the well: row (letters), column (numbers) and plate ID. +# well.info - a list containing strain and media names if provided +# screen.data - a data frame with Time and raw OD values. This is the only slot that is filled upon creation of a well object. +# as different functions are run on the well the data frame gets filled with additional columns. +# use.log - a single logical value denoting whether to return log-transformed values when data is requested from the well +# norm - a value to subtract from all OD values before returning data. filled by (see normalize.and.transform.R) +# curve.par - a list of parameters that denote whether the well is empty, whether it contains ODs indicating a viable culture, whether it tanks at a certain timepoint. + +# if model fitting using is successful: +# fit.par - will be a list containing the fitted model parameters +# fit.std.err - will be a list containing the standard errors for the fitted model parameters +# equation - will contain an expression for evaluating the successfully fitted model +# model.name - will contain the name of the successfully fit model + +# fit.info - a message with info about whether the fit was successful, failed, or skipped. +# add.info - a message with info about whether jumps in OD were detected or removed, or if ODs were detected below the blank OD. +# inflection.time - the Time value at the point where the specific growth is located. no longer a formula param NWD +# rss - residual sum of squares +# loess - object returned by running loess on the normalized well data +# nls - object returned by running nls on the normalized well data + +setGeneric("getPosition", function(object){standeardGeneric("getPosition")}) +setMethod("getPosition", "well", + function(object){ + return(object@position) + }) + +setGeneric("getWellInfo", function(object){standeardGeneric("getWellInfo")}) +setMethod("getWellInfo", "well", + function(object){ + return(object@well.info) + }) + +setGeneric("getScreenData", function(object){standeardGeneric("getScreenData")}) +setMethod("getScreenData", "well", + function(object){ + return(object@screen.data) + }) + +setGeneric("getStartIndex", function(object){standeardGeneric("getStartIndex")}) +setMethod("getStartIndex", "well", + function(object){ + return(object@start.index) + }) + +setGeneric("getUseLog", function(object){standeardGeneric("getUseLog")}) +setMethod("getUseLog", "well", + function(object){ + return(object@use.log) + }) + +setGeneric("getNorm", function(object){standeardGeneric("getNorm")}) +setMethod("getNorm", "well", + function(object){ + return(object@norm) + }) + +setGeneric("getCurPar", function(object){standeardGeneric("getCurPar")}) +setMethod("getCurPar", "well", + function(object){ + return(object@curve.par) + }) + +setGeneric("getFitErr", function(object){standeardGeneric("getFitErr")}) +setMethod("getFitErr", "well", + function(object){ + return(object@fit.std.err) + }) + +setGeneric("getEquation", function(object){standeardGeneric("getEquation")}) +setMethod("getEquation", "well", + function(object){ + return(object@equation) + }) + +setGeneric("getModelName", function(object){standeardGeneric("getModelName")}) +setMethod("getModelName", "well", + function(object){ + return(object@model.name) + }) + +setGeneric("getFitInfo", function(object){standeardGeneric("getFitInfo")}) +setMethod("getFitInfo", "well", + function(object){ + return(object@fit.info) + }) + +setGeneric("getAddInfo", function(object){standeardGeneric("getAddInfo")}) +setMethod("getAddInfo", "well", + function(object){ + return(object@add.info) + }) + +setGeneric("getInflectionTime", function(object){standeardGeneric("getInflectionTime")}) +setMethod("getInflectionTime", "well", + function(object){ + return(object@inflection.time) + }) + +setGeneric("getRSS", function(object){standeardGeneric("getRSS")}) +setMethod("getRSS", "well", + function(object){ + return(object@rss) + }) + +setGeneric("getLoess", function(object){standeardGeneric("getLoess")}) +setMethod("getLoess", "well", + function(object){ + return(object@loess) + }) + +setGeneric("getnls", function(object){standeardGeneric("getnls")}) +setMethod("getnls", "well", + function(object){ + return(object@nls) + }) + +setGeneric("getFitPar", function(object){standeardGeneric("getFitPar")}) +setMethod("getFitPar", "well", + function(object){ + return(object@fit.par) + }) + +# -------------------------------------------------------------------- +# Function to create a new well (requires only Time and OD vectors, which will fill slot "screen.data") +# slots "nls" and "loess" are initialized to empty lists +well = function(Time = NULL, OD = NULL){ + x = list() + class(x) = "loess" + y = list() + class(y) = "nls" + new("well", screen.data = data.frame(Time, OD, stringsAsFactors=F), loess=x, nls=y) +} + +# ----------------------------------------------------------------------- +#### A show method for well #### +setMethod("show", "well", + function(object) { + print("Object of class well") + print("@position:") + print(object@position) + print("@well.info:") + print(object@well.info) + print("@screen.data:") + print(head(object@screen.data)) + print("...") + print(paste(nrow(object@screen.data),"rows of data")) + print(paste("@start.index:",object@start.index)) + print(paste("@use.log:",object@use.log)) + print(paste("@norm:",object@norm)) + print("@curve.par:") + print(object@curve.par) + print("@fit.par:") + print(object@fit.par) + print("@fit.std.err:") + print(object@fit.std.err) + print(paste("@equation:",object@equation)) + print(paste("@model.name:",object@model.name)) + print(paste("@fit.info:",object@fit.info)) + print(paste("@add.info:",object@add.info)) + print(paste("@inflection.time:",object@inflection.time)) + print(paste("@rss:",object@rss)) + if (length(object@nls) > 0) { + print("@nls:") + print(object@nls) + } else { + print("no nls model") + } + if (length(object@loess) > 0) { + print("@loess:") + print(object@loess) + } else { + print("no loess model") + } + } + ) + +#### A plot method for well #### +# x - object of class well +# y - not used +# constant.added - used to readjust for the constant added during the log transform: log.OD = log(OD - blank + constant.added) +# xlim - x axis limits, vector of length 2 +# ylim - y axis limits, vector of length 2 +# scale - determines the font scale for the entire graph. all cex values are calculated from this +# number.points - should points be labeled with numeric indices? +# draw.symbols - should be called on the well and markings drawn on the graph? +# show.text - show R^2 and growth curve parameters as text on the plot +# show.calc - draw lines that illustrate growth curve parameters +# draw.guess - initial guess model. Drawn if specified +# well.number - the number of the well in an array of wells +# ... - additional arguments passed to the generic plot function + +setMethod("plot", + signature(x = "well", y="missing"), + function (x, y, constant.added = 1.0, xlim = NULL, ylim = NULL, + well.number = NULL, scale = 1, number.points = T, draw.symbols = F, show.text = T, show.calc = T, draw.guess = NULL, ...) + { + # Determine the boundaries for the axes (if user did not specify them) + if(is.null(ylim)){ + min.y = min(data.from(x, remove = F, remove.tanking = F)[,2], na.rm = T) + min.y = min(min.y, x@fit.par$b) + max.y = max(data.from(x, remove = F, remove.tanking = F)[,2], na.rm = T) + max.y = max(max.y, x@fit.par$b + x@fit.par$A) + ylim = c(min.y, min.y + (max.y-min.y)*1.15) + } + if(is.null(xlim)){ + min.x = min(data.from(x, remove = F, remove.tanking = F)[,1], na.rm = T) + max.x = max(data.from(x, remove = F, remove.tanking = F)[,1], na.rm = T) + xlim = c(min.x - 0.05 * (max.x-min.x), max.x) + } + + + # Title of plot: [well number] plate name; well name; + # strain name; media name + + main = paste(plate.name(x), " ", well.name(x), "\n", + strain.name(x), "; ", media.name(x), sep = "") + if (!is.null(well.number)) main = paste("[", well.number , "] ", main, sep="") + + # Draw the data and symbols if is true. + plot.data(x, main = main, scale = scale, constant.added=constant.added, + number.points = number.points, draw.symbols = draw.symbols, xlim = xlim, ylim = ylim, ...) + + # Draw the fitted model. + plot.model(x, scale = scale, constant.added=constant.added) + + # Draw text info if specified. + if(show.text) + draw.text(x, scale = scale * 0.5, xlim = xlim, ylim = ylim,...) + + # Show calculated parameters if specified. + if (show.calc) + draw.calc.par(x, scale = scale * 0.5, constant.added = constant.added) + + # Draw initial guess if a model is specified. + if (class(draw.guess) == "model"){ + Time = data.from(x)$Time + guess = eval(getExpression(draw.guess), as.list(getGuess(draw.guess)(x))) + try(lines(Time, guess, col = "brown2"), silent = T) + } + } +) + +######################################################################## +# Some miscellaneous functions to extract info from well objects # +# Most of these return a single value from the well. # +######################################################################## +# +# Since many of these need to be applied to all wells over an array, while conserving the dimensions of +# that array, this file includes a wrapper function (see bottom of file). + +plate.name = function(well) + getPosition(well)[1] + +# Return the full alphanumeric well name (with leading zeros if applicable) +well.name = function(well){ + row = getPosition(well)[2] + col = as.numeric(getPosition(well)[3]) + if (col>9) + col = as.character(col) + else + col = paste("0", col, sep = "") + + paste(row,col,sep = "") + } + +is.empty = function(well) + getCurPar(well)$empty.well + +lacks.growth = function(well) + getCurPar(well)$no.growth + +tanking.start = function(well) + getCurPar(well)$tanking.start + +removed.points = function(well) + (1:length(well))[getScreenData(well)$Remove] + +remaining.points = function(well,...){ + as.numeric(rownames(data.from(well,...))) + } + +strain.name = function(well){ + if(is.null(getWellInfo(well)$Strain)) + return("") + else + return(getWellInfo(well)$Strain) + } +media.name = function(well){ + if(is.null(getWellInfo(well)$Media)) + return("") + else + return(getWellInfo(well)$Media) + } + +raw.data = function(well) + data.from(well, remove.tanking = F, remove = F, na.rm = F, raw.data = T) + +contains.fit = function(well) + length(getFitPar(well)) > 0 + +setMethod("length", signature(x = "well"), function(x) length(x@screen.data[,1])) + +# The function has some options: by default it returns a two-column data frame with time and OD +# (or log OD if the slot is true in the object), after normalization to the value specified in slot. +# - With set to true the rows specified in the column of the slot are not returned. +# - With set to true all the rows after the index are removed. +# - Setting to true overrides all these settings and just returns 2 columns with Time and Raw OD. + +data.from = function(well, remove = T, remove.tanking = T, raw.data = F, na.rm = F){ + + if (length(getUseLog(well)) == 0) + OD.column = "OD" + else if (getUseLog(well)) + OD.column = "log.OD" + else + OD.column = "OD" + + if (raw.data){ + OD.column = "OD" + norm = 0 + } + else if (!getUseLog(well)) + norm = getNorm(well) + else + norm = 0 + + if(remove.tanking & is.numeric(tanking.start(well))) + well = remove.points(well, (tanking.start(well)):length(well)) + if (!remove | is.null(getScreenData(well)$Remove)) + output = getScreenData(well)[c("Time", OD.column)] + else + output = getScreenData(well)[!getScreenData(well)$Remove ,c("Time", OD.column)] + + output[,2] = output[,2] - norm + + if (!raw.data){ + if (!length(getUseLog(well))) + names(output)[2] = "Corrected.OD" + if (!getUseLog(well)) + names(output)[2] = "Corrected.OD" + } + + if (na.rm) + output[!is.na(output[,2]),] + else + output + } + + +# Functions much like but gives a single vector containing the +# slope at each point. Has a parameter allowing removal of NA values. + +slopes = function(well, remove = T, remove.tanking = T, na.rm = F){ + + if(remove.tanking & is.numeric(tanking.start(well))) + well = remove.points(well, (tanking.start(well)):length(well)) + if (!remove | is.null(getScreenData(well)$Remove)) + output = getScreenData(well)$Slope + else + output = getScreenData(well)$Slope[!getScreenData(well)$Remove] + + if (na.rm) + output[!is.na(output)] + else + output + } + +# ----------------------------------------------------------------------- +# Well array functions: these must be used on entire arrays of well objects +# instead of single ones. + +plate.names = function(well.array) + dimnames(well.array)[[3]] + +tanking.start.values = function(well.array, array = F){ + if (array) + aapply(well.array, function(well) tanking.start(well)) + else + sapply(well.array, function(well) tanking.start(well)) + } + diff --git a/R/GCAT/R/fit.model.R b/R/GCAT/R/fit.model.R new file mode 100644 index 0000000..fd3ff70 --- /dev/null +++ b/R/GCAT/R/fit.model.R @@ -0,0 +1,257 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . +######################################################################## +# # +# Fit a parameterized model to the growth data in a well object. # +# # +# There are now three modelling choices: # +# 1) Sigmoid model (no linear param c) # +# 2) Linear Sigmoid model # +# 3) Loess (with optional smoothing parameter) # +######################################################################## +#' fit.model +#' +#' This function will use the function stored in the "guess" slot of \code{growth.model} to calculate initial guesses +#' for growth.model parameters, then it will use the "formula" slot with \code{nls} to fit a non-linear least squares +#' \code{growth.model} or Local Polynomial Regression Fitting to the data. Richards model is first fitted. +#' If the shape parameter is statisticaly significant then Richards is used. If it is within 2 SE of 1 or Zero than +#' a simpler model is preferred. If the Richards fit fails, then Logistic is tried. If it fails, Gompertz is tried. +#' Model fit failure is reported if none of the models can sucessfully fit the data +#' +#' @param input.well The well needed to be fitted with the given model. +#' @param growth.model What growth model should be used? +#' @param backup.growth.model If \code{gowth.mode} fails, this model will be used. +#' @param fit.if.no.growth should the function attempt to fit a well even if there was no growth detected? default is F +#' @param silent output back to R console? +#' @param use.linear.param: Should an additional linear parameter (c) be used when fitting the data to the model? +#' @param use.loess: Should Local Polynomial Regression Fitting (loess function) be used instead of nls? +#' @param smooth.param: If loess is used, an optional smoothing parameter. Default is .6 +fit.model = function(input.well, growth.model, backup.growth.model = NULL, fit.if.no.growth = F, + use.linear.param=F, use.loess=F, smooth.param, silent = T){ + + # Conditional breakpoint: go into debugging mode when fitting a specific well + #if (input.well@position["row"] == "A" && input.well@position["col"] == "12") browser() + + # Change all relevant slots to or blank values + input.well@model.name = "" + input.well@fit.par = list() + input.well@equation = expression() + + # Get OD vs. time data from well + input.data = data.from(input.well, na.rm = T) + + # Skip well if in slot "curve.par" is set to true, and is false. + if(!fit.if.no.growth & lacks.growth(input.well)){ + input.well@fit.info = "skipped - no growth in well." + if (!silent) + cat(plate.name(input.well), well.name(input.well), ":", input.well@fit.info, "\n") + return(input.well) + } + # Skip well if there are fewer than 5 data points left in the analysis. + if (length(input.data$Time) < 5){ + input.well@fit.info = "skipped - not enough points." + if (!silent) + cat(plate.name(input.well), well.name(input.well), ":", input.well@fit.info, "\n") + return(input.well) + } + + # Change column headers of input.data to the more general "Time" vs. "y" + names(input.data) = c("Time", "y") + + # Set a lower bound for nls model parameters A and b to slightly lower than min(y) + low.y = min(input.data$y,na.rm=T) + low.y = low.y - 0.1*abs(low.y) + + # Extract the model formula from (slot "formula") + # Use the function from slot "guess" to calculate initial guesses for model parameters based on slope estimates in + # Attempt to fit a nonlinear least squares odel using + + # Creating loess, logistics, richards, and gompertz model. + loess.e = expression("loess") + loess.f = formula(Time ~ y) + loess.model = model("local polynomial regression fit.", loess.e, loess.f, loess.g) + + ### Testing accessor method for class model. + #print(getName(loess.model)) + #print(getFormula(loess.model)) + #print(getGuess(loess.model)) + ### End testing ### + + remove(loess.e, loess.f) + + ######################################################################## + # Create the logistic 4-parameter model (when v ~ 1) # + ######################################################################## + logistic.g = function(well,smooth.param=0.75) { + loess.model@guess(well,smooth.param) + } + + ######################################################################## + # Create the Richards 5-parameter model # + ######################################################################## + richards.g = function(well,smooth.param=0.75){ + c(loess.model@guess(well,smooth.param),v=0.5) + } + + ######################################################################## + # Create the Gompertz model (might be useful as a # + # limiting case of Richards model when v ~ 0) # + ######################################################################## + gompertz.g = function(well,smooth.param=0.75){ + loess.model@guess(well,smooth.param) + } + + logistic.e = expression((A/(1+exp((4*u/A)*(lam-Time)+2)))+b) + logistic.f = formula(y~(A/(1+exp((4*u/A)*(lam-Time)+2)))+b) + logistic = model("logistic sigmoid.", logistic.e, logistic.f, logistic.g) + remove(logistic.e, logistic.f, logistic.g) + + richards.e = expression(A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b) + richards.f = formula(y~A*(1+v*exp(1+v)*exp((u/A)*(1+v)**(1+1/v)*(lam-Time)))**(-1/v)+b) + richards = model("richards sigmoid", richards.e, richards.f, richards.g) + remove(richards.e, richards.f, richards.g) + + gompertz.e = expression(A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b) + gompertz.f = formula(y~A*exp(-exp((u*exp(1)/A)*(lam-Time)+1))+b) + gompertz = model("gompertz sigmoid", gompertz.e, gompertz.f, gompertz.g) + remove(gompertz.e, gompertz.f, gompertz.g) + + + + # 3) Loess (with optional smoothing parameter) + if(use.loess){ + number.of.points = nrow(input.well@screen.data) + if (smooth.param <= 1/number.of.points) + exception("Invalid input", "Smoothing parameter is out of range.") + + fit = try(loess(y~Time, data=input.data, span=smooth.param), silent=TRUE) + input.well@loess = fit + if (class(fit) != "loess") stop("loess fit failed on well", paste(input.well@position,collapse=" ")) + input.well@fit.info = "Loess model fit successfully." + input.well@model.name = loess.model@name + input.well@equation = loess.model@expression + # There are no estimated params, so just return the initial guesses + input.well@fit.par = append(as.list(loess.model@guess(input.well,smooth.param)),list("smoothing parameter"=smooth.param)) + # Note: since there are no params there are no Std. Errors either + input.well@inflection.time = inflection.time(input.well) + # calculate Rss for loess + input.well@rss = sum((input.data$y-predict(fit))**2) + } else { + fit = fit.nls.model(input.well,richards) + # should we use richards? Yes, unless the v param is close to 1 or Zero + if(class(fit) == "nls"){ + rich.fit = fit # if v is significant or other fits consequently fail + fit.par = as.list(coef(fit)) + # is fit similar to the Logistic? + if(fit.par$v >= .5 && abs(fit.par$v-1) < 2*summary(fit)$parameters["v","Std. Error"] ){ + fit = fit.nls.model(input.well,logistic) + input.well@fit.info = paste("Logistic model fit successfully.") + input.well@model.name = logistic@name + input.well@equation = logistic@expression + # is fit similar to Gompertz? + }else if(fit.par$v < .5 && abs(fit.par$v) < 2*summary(fit)$parameters["v","Std. Error"]){ + fit = fit.nls.model(input.well,gompertz) + input.well@fit.info = "Gompertz model fit successfully." + input.well@model.name = gompertz@name + input.well@equation = gompertz@expression + # v param is significant. stick with Richards + }else{ + input.well@fit.info = paste("Richards model fit successfully.") + input.well@model.name = richards@name + input.well@equation = richards@expression + } + # just in case logistic or gompertz failed to fit... + if(class(fit) != "nls"){ + fit = rich.fit + input.well@fit.info = paste("Richards model fit successfully.") + input.well@model.name = richards@name + input.well@equation = richards@expression + } + } else{ + # Richards failed. try backup models + fit = fit.nls.model(input.well,logistic) + if(class(fit) != "nls"){ + # last resort try gompertz + fit = fit.nls.model(input.well,gompertz) + if(class(fit) != "nls"){ + input.well@fit.info = "Model fitting failed." + } else{ + input.well@fit.info = "Gompertz model fit successfully." + input.well@model.name = gompertz@name + input.well@equation = gompertz@expression + } + }else{ + input.well@fit.info = paste("Logistic model fit successfully.") + input.well@model.name = logistic@name + input.well@equation = logistic@expression + } + } + } + + # If no error was reported by the model fitting, add coefficients to slot "fit.par", + # Also add the Standard Errors for each parameter + if (class(fit) == "nls"){ + input.well@nls = fit + input.well@inflection.time = inflection.time(input.well) + input.well@fit.par = as.list(coef(fit)) + rSs = sum(residuals(fit)**2) + + if (length(rSs) != 0) + input.well@rss = rSs + else + input.well@rss = NA + input.well@fit.std.err = as.list(summary(fit)$parameters[,"Std. Error"]) + } + # Output to console + if (!silent) + cat(plate.name(input.well), well.name(input.well), ":", input.well@fit.info, "\n") + return(input.well) +} + +# Fit nls model to a well using a specified model +# Arguments: +# input.well: object of class well +# model: object of class model, e.g. richards, gompertz or logistic +fit.nls.model <- function (input.well, model) { + # Get OD vs. time data from well + input.data = data.from(input.well, na.rm = T) + # Change column headers of input.data to the more general "Time" vs. "y" + names(input.data) = c("Time", "y") + + # Set a lower bound for nls model parameters A and b to slightly lower than min(y) + low.y = min(input.data$y,na.rm=T) + low.y = low.y - 0.1*abs(low.y) + + # Set the initial guess + start = model@guess(input.well) + + # Set lower bounds + if (length(start) == 4) { + lower = c(low.y,low.y,0,0) + } else if (length(start) == 5) { + lower = c(low.y,low.y,0,0,0.07) + } else { + stop("Unsupported model: ", model@name) + } + # Make sure initial guess values do not violate lower bounds + start[start < lower] = lower[start < lower] + + # Fit the model + try(nls(formula = model@formula, data = input.data, start = start, algorithm="port", lower=lower), silent = TRUE) +} diff --git a/R/GCAT/R/fitted.calculations.R b/R/GCAT/R/fitted.calculations.R new file mode 100644 index 0000000..590798e --- /dev/null +++ b/R/GCAT/R/fitted.calculations.R @@ -0,0 +1,381 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +######################################################################## +# # +# Functions to calculate various things about wells based on fit model # +# # +######################################################################## + +# S3 generic +lag <- function(fitted.well, ...) +{ + UseMethod("lag") +} + +# +# Common arguments: +# fitted.well - should be a well containing the results of , most functions will return NA if well has not been fit yet. +# unlog - should the value be returned on the linear scale as opposed to the log-transformed scale? +# constant.added - for returning values on the linear scale, what was the constant added before the log transform? +# digits - passed to the function, default is no rounding (infinity digits) + +unlog = function(x, constant.added) { + ######################################################################## + # Transform values back to OD scale # + ######################################################################## +exp(x) - constant.added +} + +well.eval = function(fitted.well, Time = NULL){ + ######################################################################## + # Evaluate estimated OD at any timepoints using the fitted model # + ######################################################################## + + # If no timepoints are provided, use the ones collected in the experiment itself. + if(!is.numeric(Time)) + Time = data.from(fitted.well)$Time + + # Use of equation is deprecated. Use nls and loess models stored in the well object instead + # Attempt to use with the fitted equation and parameters to get estimates for OD at the given timepoints. + #output = try(eval(fitted.well@equation, fitted.well@fit.par), silent = T) + + # Predict log.OD value(s) using nls model if present. If no nls model, try using loess. + if (length(fitted.well@nls)>0) { + output = try(predict(fitted.well@nls,list(Time=Time)),silent=T) + } else if (length(fitted.well@loess)>0) { + output = try(predict(fitted.well@loess,Time),silent=T) + } else { + output = NA + } + + # Return values. If OD evaluation failed for any reason, return NULL. + if (is.numeric(output)){ + return(output) + } else { + return(NULL) + } +} + +model.residuals = function(fitted.well, unlog = F){ + ######################################################################## + # Evaluate model residuals using the measured vs. fitted log.OD values # + ######################################################################## + measured.OD = data.from(fitted.well)[,2] + + # Use with no Time argument to get fitted OD values at measured timepoints. + predicted.OD = well.eval(fitted.well) + + # If all values are valid, return the differences + if (!is.numeric(predicted.OD)) + return(NA) + else + return(measured.OD - predicted.OD) + } + +dev.from.mean = function(fitted.well){ + ######################################################################## + # Evaluate deviations of log.OD values from the mean # + ######################################################################## + measured.ODs = data.from(fitted.well,remove=T,na.rm=T)[,2] + + # Get the mean values of these measured ODs. + mean.ODs = mean(measured.ODs) + + if (!is.numeric(mean.ODs)) + return (NA) + else + return (measured.ODs - mean.ODs) +} + +rss = function(fitted.well){ + ####################################################################### + # Get the residual sum of square. # + ####################################################################### + if (length(fitted.well@rss) == 0) + return (NA) + else + return (fitted.well@rss) +} + +model.good.fit = function(fitted.well, digits = Inf){ + ######################################################################## + # Calculate a metric for fit accuracy using squared residuals # + ######################################################################## + + # Sum of squared residuals + RSS = rss(fitted.well) + + # Total sum of squared + tot = sum(dev.from.mean(fitted.well)^2) + + # Coefficient of determination + return (1 - RSS/tot) + } + +parameter.text = function(fitted.well){ + ######################################################################## + # Output a string with values of fitted parameters # + ######################################################################## + + # Get a list of fitted parameters + fit.par = fitted.well@fit.par + + # Giving the parameter text descriptive names. + if (length(fitted.well@fit.par) != 0){ + names(fit.par)[1] = "A" + names(fit.par)[2] = "b" + names(fit.par)[3] = "lambda" + names(fit.par)[4] = "max.spec.growth.rate" + + if (fitted.well@model.name == "richards sigmoid"){ + names(fit.par)[5] = "shape.par" + } + + if (fitted.well@model.name == "richards sigmoid with linear par."){ + names(fit.par)[5] = "shape.param" + names(fit.par)[6] = "linear term" + } + + if (fitted.well@model.name == "logistic sigmoid with linear par.") + names(fit.par)[5] = "linear.term" + + # if loess, just show smoothing param + if(fitted.well@model.name == "local polynomial regression fit.") + fit.par = fitted.well@fit.par["smoothing parameter"] + } + + # Return nothing if the list is empty. Otherwise, concatenate the terms in the list with the parameter names. + if(!is.list(fit.par)) + return() + else{ + output = "" + i = 1 + while(i <= length(fit.par)){ + output = paste(output, names(fit.par)[i], "=", round(as.numeric(fit.par[i]),3), "; ", sep = "") + i = i + 1 + if (i %% 6 == 0) + output = paste(output, "\n") + } + output + } + } + +max.spec.growth.rate = function(fitted.well, digits = Inf, ...){ + ######################################################################## + # Calculate maximum specific growth rate # + ######################################################################## + if(length(fitted.well@fit.par) == 0) + return(NA) + + round(fitted.well@fit.par$u,digits) +} + + +plateau = function(fitted.well, digits = Inf){ + ######################################################################## + # Calculate plateau log.OD from fitted parameters # + ######################################################################## + if(length(fitted.well@fit.par) == 0) + return(NA) + + plat = fitted.well@fit.par$A + fitted.well@fit.par$b + + if (!is.numeric(plat)) { + plat = NA + } else { + plat = round(plat, digits) + } + return(plat) +} + +baseline = function(fitted.well, digits = Inf){ + ######################################################################## + # Calculate baseline log.OD from fitted parameters # + ######################################################################## + if(length(fitted.well@fit.par) == 0) + return(NA) + + base = fitted.well@fit.par$b + + # If A (plateau OD) is invalid, return NA. + if (!is.numeric(fitted.well@fit.par$A)) + base = NA + # If b (baseline OD) is invalid but plateau OD was valid, return zero. + else if (!is.numeric(base)) + base = 0 + else{ + base = round(base, digits) + } + return(base) + } + +inoc.log.OD = function(fitted.well, digits = Inf){ + ######################################################################## + # Calculate log.OD at inoculation from fitted parameters # + ######################################################################## + + # Evaluated the fitted model at the inoculation timepoint (should be zero from using from table2wells.R) + if (is.null(well.eval(fitted.well))) + return(NA) + else{ + inoc.time = fitted.well@screen.data$Time[fitted.well@start.index] + inoc.log.OD = well.eval(fitted.well, inoc.time) + if (is.na(inoc.log.OD)) inoc.log.OD = fitted.well@fit.par$b # need this in a special case: loess fits with start.index = 1 + return(round(inoc.log.OD, digits)) + } + } + +max.log.OD = function(fitted.well, digits = Inf, ...){ + ######################################################################## + # Calculate max log.OD from model fit # + ######################################################################## + + # Evaluated the fitted model at the final timepoint (just the last valid timepoint in the experiment) + if (is.null(well.eval(fitted.well))) + return(NA) + else{ + return(round(max(well.eval(fitted.well),na.rm=T), digits)) + } +} + + +projected.growth = function(fitted.well,digits=Inf) { + ######################################################################## + # Calculate projected growth: plateau minus the inoculated log.OD # + ######################################################################## + plateau(fitted.well,digits) - inoc.log.OD(fitted.well,digits) +} + +projected.growth.OD = function(fitted.well,constant.added,digits=Inf) { + ######################################################################## + # Calculate projected growth: plateau minus the inoculated log.OD # + ######################################################################## + value = unlog(plateau(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added) + round(value,digits) +} + + +achieved.growth = function(fitted.well,digits=Inf) { + ######################################################################## + # Calculate achieved growth: max.log.OD minus the inoculated log.OD # + ######################################################################## + max.log.OD(fitted.well,digits) - inoc.log.OD(fitted.well,digits) +} + +achieved.growth.OD = function(fitted.well,constant.added,digits=Inf) { + ######################################################################## + # Calculate projected growth: plateau minus the inoculated log.OD # + ######################################################################## + value = unlog(max.log.OD(fitted.well),constant.added) - unlog(inoc.log.OD(fitted.well),constant.added) + round(value,digits) +} + +reach.plateau = function(fitted.well, cutoff = 0.75){ + ######################################################################## + # Did the curve come close to the plateau OD during the experiment? # + ######################################################################## + + plat = plateau(fitted.well) + inoc = inoc.log.OD(fitted.well) + final = max.log.OD(fitted.well) + + if (!is.na(final)){ + # If the plateau is the same as the OD at inoculation, return TRUE + if ((plat - inoc) == 0) + return(T) + # If the difference between the final OD and inoculation OD is at least a certain proportion + # of the difference between the plateau and inoculated ODs, return TRUE. + else + return((final - inoc) / (plat - inoc) > cutoff) + } + else + return(T) + # If no final OD was calculated (if curve was not fit properly) just return T. + } + + +lag.time = function(fitted.well, digits = Inf, ...){ + ######################################################################## + # Calculate the lag time from the fitted OD # + ######################################################################## + if(length(fitted.well@fit.par) == 0) + return(NA) + + fitted.well@fit.par$lam +} + +# new params for GCAT 4.0 + +amplitude = function(fitted.well){ + if(length(fitted.well@fit.par) == 0) + return(NA) + + return(fitted.well@fit.par$A) +} + +shape.par = function(fitted.well){ + if(length(fitted.well@fit.par) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.par$v), NA, fitted.well@fit.par$v) +} + +max.spec.growth.rate.SE = function(fitted.well, ...){ + if(length(fitted.well@fit.std.err) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.std.err$u), NA, fitted.well@fit.std.err$u) +} + +lag.time.SE = function(fitted.well, ...){ + if(length(fitted.well@fit.std.err) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.std.err$lam), NA, fitted.well@fit.std.err$lam) +} + +shape.par.SE = function(fitted.well){ + if(length(fitted.well@fit.std.err) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.std.err$v), NA, fitted.well@fit.std.err$v) +} + +amplitude.SE = function(fitted.well){ + if(length(fitted.well@fit.std.err) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.std.err$A), NA, fitted.well@fit.std.err$A) +} + +baseline.SE = function(fitted.well){ + if(length(fitted.well@fit.std.err) == 0) + return(NA) + ifelse(is.null(fitted.well@fit.std.err$b), NA, fitted.well@fit.std.err$b) +} + +# used to calulate the inflection.time value +inflection.time = function(well){ + if (length(well@loess) == 0 && length(well@nls) == 0) return(NA) # can' compute inflection time in the absence of a fit + data = data.from(well) + Time = data[,1] + t = seq(from = min(Time), to = max(Time), by = (max(Time)-min(Time))/1000) + y = well.eval(well,t) + if (is.null(y)) return(NA) + delta.t = diff(t) + dydt = diff(y)/delta.t + infl.index = which.max(dydt) + t[infl.index] +} diff --git a/R/GCAT/R/misc.R b/R/GCAT/R/misc.R new file mode 100644 index 0000000..3de2c94 --- /dev/null +++ b/R/GCAT/R/misc.R @@ -0,0 +1,36 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +# Wrapper for sapply to use lapply over an array, conserving the dimensions. +aapply = function(x, FUN,...){ + dim.values = dim(x) + dim.names = dimnames(x) + x = lapply(x, function(x){FUN(x,...)}) + dim(x) = dim.values + dimnames(x) = dim.names + return(x) + } + +# A function to manually create an unchecked exception. +exception = function(class, msg) +{ + cond <- simpleError(msg) + class(cond) <- c(class, "MyException", class(cond)) + stop(cond) +} diff --git a/R/GCAT/R/normalize.and.transform.R b/R/GCAT/R/normalize.and.transform.R new file mode 100644 index 0000000..46cc71a --- /dev/null +++ b/R/GCAT/R/normalize.and.transform.R @@ -0,0 +1,198 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +######################################################################## +# # +# Normalize OD readings for an entire array of well objects # +# # +######################################################################## +# +# Note: This function does not write any new OD values to the well objects in the array - it only +# fills the "norm" slot of each well object in the array with a value that will be subtracted +# from all OD measurements when returning data from the wells using the function (see well.class.R) +# +# These functions make use of which simply returns the raw time and OD of a well (also see well.class.R) +# +# well.array: an array of well objects. note this is the only normalization function that acts on an entire array instead of an individual well. +# normalize.method: +# - (default): subtracts the blank OD (either specified by or taken from the first timepoint as default) of each well from all timepoints in that well +# - average.blank: subtracts the mean of all first OD timepoints on a plate from all timepoints in all wells on that plate +# - average.first: takes the mean of the difference between the OD of the specified timepoint and the first timepoint of all wells on a plate +# and subtracts this value from all timepoints in all wells on that plate +# - anything else: do nothing +# blank.value - user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. +# start.index - which timepoint should be used as the first one after inoculation (defaults to the 2th one) +# add.constant: add a numeric constant to all timepoints in all wells. +normalize.ODs = function(well.array, normalize.method = "default", blank.value = NULL, start.index = 2, add.constant = 1){ + + if (normalize.method == "default"){ + well.array = aapply(well.array, function(well, blank.value){ + # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. + if(is.null(blank.value)) blank.value = raw.data(well)[1,2] + # Set the blank OD (minus the constant to be added) to the "norm" slot of each well. + well@norm = blank.value - add.constant + return(well)}, blank.value) + } + else if (normalize.method == "average.blank"){ + # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. + blank.ODs = unlist(aapply(well.array, function(well, blank.value){ + if(is.null(blank.value)) blank.value = raw.data(well)[1,2] + return(blank.value)}, blank.value)) + plate.IDs = unlist(aapply(well.array, plate.name)) + blank.averages = tapply(blank.ODs, plate.IDs, mean) + # Set this value (minus the constant to be added) to the "norm" slot of each well. + well.array = aapply(well.array, function(well){ + well@norm = blank.averages[plate.name(well)] - add.constant + return(well)}) + } + else if (normalize.method == "average.first"){ + # Find the mean difference between starting OD (timepoint specified by ) and blank OD (first timepoint) for each plate + # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. + blank.ODs = unlist(aapply(well.array, function(well, blank.value){ + if(is.null(blank.value)) blank.value = raw.data(well)[1,2] + return(blank.value)}, blank.value)) + first.ODs = unlist(aapply(well.array, function(well) raw.data(well)[start.index,2])) + plate.IDs = unlist(aapply(well.array, plate.name)) + blank.averages = tapply(first.ODs-blank.ODs,plate.IDs,mean) + # Set this value (minus the constant to be added) to the "norm" slot of each well. + well.array = aapply(well.array, function(well){ + well@norm = raw.data(well)[start,2] - blank.averages[plate.name(well)] - add.constant + return(well)}) + } + else{ + # Simply set the negative constant to be added to the "norm" slot of each well. + well.array = aapply(well.array, function(well){ + well@norm = - add.constant + return(well)}) + } + if(is.null(blank.value)) + well.array = aapply(well.array, remove.points, 1) + return(well.array) + } + +######################################################################## +# # +# Log-transform OD readings for a single well object # +# # +######################################################################## + +# Must include this so that the checking process will not complain about +# inconsistency S3 generic/method. Though I don't know why. +transform <- function(input.well, ...) { + UseMethod("transform") +} + +#' Transform.Ods +#' +#' This function adds a "log.OD" column to the "screen.data" slot of a well object with log-transformed data. +#' The raw data is kept intact. +#' It also checks to see if any of the raw OD values (before a certain timepoint) is below the blank OD. +#' This can be disastrous for the log(OD) transform. +#' @param input.well an object of class well +#' @param use.log gets added to the "use.log" slot of the well object. this will determine whether the log-transformed data +#' or raw normalized data is returned using the function \code{data.from}. +#' @param blank.value user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well. +#' @param start.index which timepoint should be used as the first one after inoculation (defaults to the 2th one) +#' @param negative.OD.cutoff if any ODs below the specified blank value are detected before this index timepoint, the entire well is discarded. +transform.ODs = function(input.well, use.log = T, blank.value = NULL, start.index = 2, negative.OD.cutoff = 10, constant.added = 1.0, ...){ + + # The default value for the log-transformed ODs will be NA. Valid values will be filled in. + log.OD = rep(NA, length(input.well)) + OD = raw.data(input.well)[,2] + + # Use the blank OD value if specified; otherwise, get it from the first OD timepoint. + if(is.null(blank.value)) + blank.value = OD[1] + + # Remove any points from the analysis that weren't already removed and fall below the blank value (using below) + OD[input.well@screen.data$Remove] = NA + + negative.points = which(OD + 0.2 * constant.added < blank.value) + if(length(negative.points) > 0) + input.well = remove.points(input.well, negative.points) + + # If any points fall below the blank value by more than 0.2 * and before the cutoff index , remove the well from analysis. + # First adjust the cutoff to compensate for curves that don't start at timepoint 1 + negative.OD.cutoff = negative.OD.cutoff + start.index - 1 + + if(any(negative.points <= negative.OD.cutoff)){ + input.well = remove.points(input.well, rep(T,length(input.well))) + input.well@add.info = paste("ODs at timepoint(s)", paste(negative.points[negative.points <= negative.OD.cutoff],collapse=" "), "were below blank OD; well discarded") + } + + # Take the natural log of the rest of the OD values (after subtracting the normalization value) + log.OD[which(OD > input.well@norm)] = log(OD[which(OD > input.well@norm)] - input.well@norm) + + # Add a column to the "screen.data" slot of the well + input.well@screen.data$log.OD = log.OD + # Update the "use.log" slot of the well + input.well@use.log = use.log + + return(input.well) + } + +######################################################################## +# # +# Remove timepoints from the analysis but not from the raw data # +# # +######################################################################## +# +# Removes timepoints from further analysis. Does not remove them from the raw data; +# instead, this function creates or updates the Remove column in slot "screen.data" of the well which dictates whether +# individual timepoints are returned using the function. +# +# can be a vector containing: +# - any combination of positive and negative integers +# the timepoints at indices corresponding to positive integers will be set to be removed. +# the timepoints at indices corresponding to negative integers will be be re-added if they were previously set to be removed. +# - a single zero, which resets all timepoints (nothing will be removed) +# - a logical vector to replace the Remove column and which will be cycled along the length of the timepoints. + +remove.points = function(input.well, points){ + # Copy the Remove column or create a new one if it doesn't yet exist + if (is.null(input.well@screen.data$Remove)) + Remove = rep(F, length(input.well)) + else + Remove = input.well@screen.data$Remove + + # If is a logical vector, recycle it along the length of Remove + if (length(points[!is.na(points)]) != 0){ + # Separate positive and negative integers + if (is.logical(points) & !any(is.na(points))) + Remove = rep(points,length.out=nrow(input.well@screen.data)) + else{ + pos = points[points > 0] + neg = -points[points < 0] + Remove[pos] = T + Remove[neg] = F + + # If contains only zeros, reset the Remove vector to all F + if (all(points == 0)) + Remove[1:length(Remove)] = F + } + } + # replace the Remove column + input.well@screen.data$Remove = Remove + input.well + } + + + + + diff --git a/R/GCAT/R/plot.fit.R b/R/GCAT/R/plot.fit.R new file mode 100644 index 0000000..55308dd --- /dev/null +++ b/R/GCAT/R/plot.fit.R @@ -0,0 +1,664 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +require(pheatmap) +require(gplots) + +######################################################################## +# # +# Graphic output functions for fitted well objects. The functions are # +# fairly complicated and intertwined and may need revision. # +# # +######################################################################## + +# S3 Generic. +plot <- function(input.well, ...) { + UseMethod("plot") +} + +######################################################################## +# Basic function plots time vs. OD from a well object # +######################################################################## +#' plot.data +#' +#' Basic function plots time vs. OD from a well object +#' +#' @param input.well The well object that need to be plottedd +#' @param unlog should data be plotted on a linear (vs. logarithmic) scale? +#' @param view.raw.data should the raw data be plotted? ( +#' @param number.points should points be labeled with numeric indices? +#' @param scale determines the font scale for the entire graph. all cex values are calculated from this. +#' @param draw.symbols - should be called on the well and markings drawn on the graph? +#' @param ... additional arguments passed to plot() +plot.data = function(input.well, view.raw.data = F, unlog = F, scale = 1, + main = paste(plate.name(input.well), well.name(input.well)), number.points = T, + draw.symbols = F, constant.added, ylim, ...){ + + # Get data as well as a vector showing which points were removed. + input.data = data.from(input.well, remove = F, remove.tanking = F, raw.data=view.raw.data) + removed.points = !(rownames(input.data) %in% rownames(data.from(input.well, remove = T, remove.tanking = T))) + point.colors = as.character(factor(removed.points,levels=c(F,T),labels=c("black","gray80"))) + + # Draw the axes and all text labels first. + par(mar = c(5, 4, 4, 5)+0.1) + plot(input.data, main = main, xlab = "Time(hours)", ylab = "log(OD - blank + const)", + mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type ="n",...) + + # Draw a second vertical axis, showing unlogged OD scale + # - Determine the range of the labels: from min.OD to max.OD + if (class(try(ylim,silent=T)) == "try-error") { + OD = unlog(input.data[,2],constant.added) + baseline.OD = unlog(baseline(input.well),constant.added) + min.OD = min(min(OD,na.rm=T),baseline.OD,na.rm=T) + plateau.OD = unlog(plateau(input.well),constant.added) + max.OD = max(max(OD,na.rm=T),plateau.OD,na.rm=T) + } else { + min.OD = unlog(ylim[1],constant.added) + max.OD = unlog(ylim[2],constant.added) + } + # - Compute labels and their positions + OD.labels = seq(from = min.OD, to = max.OD, length.out = 5) + OD.labels = signif(OD.labels,2) + OD.at = log(OD.labels+constant.added) + # - Draw the axis + axis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale) + mtext(4, text = "OD - blank", line = 3, cex=1.2) + + # If is true, then label each point with the index of its timepoint and plot removed points in grey, others in black. + if (number.points) + text(input.data$Time, input.data[,2], rownames(input.data), col = point.colors, cex = 0.5*scale) + # Otherwise plot all points, using a different plotting character for removed points. + else + points(input.data$Time, input.data[,2], pch = 1 + removed.points*15) + + # If is set to T, then draw all the markings that makes to determine curve parameters. + if (draw.symbols & !view.raw.data) + check.slopes(input.well, draw = T) + return() + } + +######################################################################## +# Plots the fitted model curve from a well object if it exists # +######################################################################## +# +# time: specify which points (in units of time) to plot fitted OD values for. if not specifies, plot all timepoints in range of well. + +plot.model = function(input.well, col = 1, scale = 1, lty = 1, time = NULL, unlog = F, constant.added=1, ...){ + + #input.data = data.from(input.well) + #growth = input.data[,2] + + # If no list of timepoints is specified, get a list of 360 timepoints (should be smooth enough) from the well's range. + if (is.null(time)){ + time.fin = max(data.from(input.well, raw.data = T, remove = F, remove.tanking = F)$Time) + time = seq(0, time.fin, length.out = 360) + } + + # Evaluate the predicted OD at the specified timepoints based on the fitted model. + predicted.OD = well.eval(input.well, time) + # If any values were returned, plot the lines on the current graph. Otherwise, just return without doing anything. + if (is.numeric(predicted.OD)) + lines(time, predicted.OD, col = col, lty = lty, lw = 2 * scale) + else + return() + +} + +######################################################################## +# Put various parameters and info in text form on the graphs # +######################################################################## +# +draw.text = function(input.well, scale = 0.5, xlim = 0, ylim = 0,...){ + + #input.data = data.from(input.well, remove = F, remove.tanking = F) + #fit = input.well@fit.par + + # - fit information (fit status, model name if available, jump detection output, fit parameters if available) from well + # color = red if no fit, blue if fit, green if skipped + # - empty or inoculated well. + # color = green if empty, blue if inoculated, red if inoculated but has no growth or empty but has growth. + + col2 = "blue" + text2 = paste(input.well@fit.info, input.well@model.name, input.well@add.info, "\n", parameter.text(input.well)) + + if (length(input.well@fit.par) == 0) # no fit + col2 = "red" + + if (is.empty(input.well)){ + text1 = "empty well" + if(!lacks.growth(input.well) | length(input.well@fit.par) == 0) # growth curve fit for an empty well + col1 = "red" + else + col1 = "forestgreen" + if (length(input.well@model.name) == 0) # well was skipped + col1 = col2 = "forestgreen" + } + else{ + text1 = "inoculated well" + if(lacks.growth(input.well) | length(input.well@fit.par) == 0) # failure to fit an inoculated well + col1 = "red" + else + col1 = "forestgreen" + } + + # - goodness of fit metric. + # color = red if below 2, yellow if between 2 and 2.72, and green if above 2.72. + + if(!is.na(model.good.fit(input.well))){ + #if (model.good.fit(input.well, unlog = F) > 2.72) + # col1.5 = "forestgreen" + #else if (model.good.fit(input.well, unlog = F)> 2.0) + # col1.5 = "gold2" + #else + # col1.5 = "red" + col1.5 = "forestgreen" + text1.5 = paste("R squared:", round(model.good.fit(input.well),3)) + } + else + col1.5 = text1.5 = NULL + + # Print all text at the top of the graph with approprate positions and scaling + text(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.025 * diff(ylim), + text1.5, cex = 1.5*scale, col = col1.5) + + text(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0 * diff(ylim), + text1, cex = 1.5*scale, col = col1) + + text(x = xlim[1] + 0.50 * diff(xlim), y = ylim[2] - 0.03 * diff(ylim), + text2, pos = 1, cex = 1.5*scale, col = col2) + } + +######################################################################## +# Draw lines on graph denoting calculated parameters # +######################################################################## +# +# - should curve parameters be labeled? + +draw.calc.par = function(input.well, scale = 0.5, unlog = F, constant.added, show.num = T){ + + # Don't do anything if well was not fit. + if (is.null(well.eval(input.well))) + return() + + # Collect values for various curve parameters. + baseline = baseline(input.well) + inoc.log.OD = inoc.log.OD(input.well) + max.log.OD = max.log.OD(input.well) + plateau = plateau(input.well) + inflection.time = input.well@inflection.time # was a param in model + fin.time = (inflection.time+max(data.from(input.well)[,1]))/2 + + # = timepoint at greatest growth + # = OD measurement at , minus the constant added before taking the log (if reversing the transformation) + # = slope (on log scale) at (specific growth) + # had to add the unlog code. was calculated differently before NWD 7/21/14 + max.slope = max.spec.growth.rate(input.well) + max.y = well.eval(input.well, inflection.time) + lag.x = lag.time(input.well) + lag.y = baseline + + # ---- Specific growth rate ---- # + lines(c(lag.x, inflection.time), c(lag.y, max.y), lty = 2, col = "red") + + + # Blue dotted line at time of maximum growth, with text label for specific growth rate. + abline(v = inflection.time, lty = 2, lw = (scale^2)*2, col = "blue") + if(show.num) text(inflection.time, max.y, round(max.slope,3), col = "blue", cex = 1.5*scale, pos = 2) + + # inoculation OD and baseline of the fitted model + abline(h = inoc.log.OD, lw = scale*2, lty = 3) + abline(h = baseline, col = "red", lw = (scale^2)*2, lty = 2) + if(show.num) { + text(fin.time, inoc.log.OD, paste(round(inoc.log.OD,3),"\n",sep="") , col = "black", cex = 1.5*scale, pos = 2) + text(fin.time, baseline, paste("\n\n", round(baseline,3), sep="") , col = "red", cex = 1.5*scale, pos = 2) + } + + # ---- Lag time ---- # + # Do not draw a horizontal line to lag time if it is 0 or negative. + # Otherwise draw a red line from the starting point to the lag time, and label with the lag time + if (lag.time(input.well) == 0){ + if(show.num) text(0, inoc.log.OD, "\n\n0.000", col = "red", cex = 1.5*scale, pos = 4) + } + else{ + lines(c(0, lag.x), c(baseline, baseline), col = "red", lw = (scale^2)*2, lty = 2) + if(show.num) text(lag.x, lag.y, paste("\n\n", round(lag.time(input.well),3)), col = "red", cex = 1.5*scale, pos = 2) + } + + # ---- Total growth ---- # + + # Draw horizontal lines for the max.log.OD in black, the plateau in green and the initial OD in black. + abline(h = max.log.OD, lty = 3, lw = scale*2) + abline(h = plateau, lty = 2, lw = (scale^2)*2, col = "forestgreen") + + # Draw a vertical line from the initial OD to the final OD in black, and then to the plateau in gray. + lines(c(fin.time, fin.time), c(inoc.log.OD, max.log.OD), lw = (scale^2)*2, lty = 3) + lines(c(fin.time, fin.time), c(max.log.OD, plateau), lw = (scale^2)*2, lty = 3, col = "grey") + + # Text: plateau and initial ODs (on left), difference between initial and final OD on right + if(show.num){ + text(fin.time, plateau, paste(round(plateau,3),"\n",sep="") , col = "forestgreen", cex = 1.5*scale, pos = 2) + text(fin.time, max.log.OD, paste("\n\n\n",round(max.log.OD,3),sep="") , col = "black", cex = 1.5*scale, pos = 2) + text(fin.time, .5*(max.log.OD-inoc.log.OD)+inoc.log.OD, round(max.log.OD - inoc.log.OD,3), cex = 1.5*scale, pos = 4) + # difference between final and plateau OD (if large enough) + if (!reach.plateau(input.well)) + text(fin.time, .5*(plateau-max.log.OD)+max.log.OD, paste("(", round(plateau - max.log.OD,3), ")", sep = ""), col = "grey", cex = 1.5*scale, pos = 2) + } + } + +######################################################################## +# Draw residuals from the nonlinear fit with option for lowess line # +######################################################################## +# +plot.residuals = function(input.well, xlim = NULL, lowess = T, ...){ + well = input.well + data = data.from(well, remove = F, remove.tanking = F) + + if (is.null(xlim)) + xlim = c(min(data$Time, 0)-1, max(data$Time)) + + plot(data.from(well)[,1], model.residuals(well), main = paste(plate.name(well), well.name(well), "\n[Residuals]"), + xlab = "Time(hours)", ylab = paste("Residual", names(data)[2]), xlim = xlim) + + abline(0,0, lty = 2) + + if (lowess) + lines(lowess(data.from(well)[,1], model.residuals(well)), lw = 2, col = "red") + } + +############################################################################## +# This function is used to create a heatmap using: +# specific growth, total growth, and lag time +# for each well on a plate. +# +# @params +# fitted.well.array: matrix containing well array object data +# attribute: the data type we should use to create a heatmap +# @returns +# path of heatmap pdf file +############################################################################## +create.heatmap = function(fitted.well.array, attribute, unlog=NULL){ + attr.name <- deparse(substitute(attribute)) + pdf.name <- "" + if(class(fitted.well.array) == "matrix"){ + #We may want to sub() out periods from plate.ID if it causes problems + plate.ID = unique(unlist(aapply(fitted.well.array,plate.name)))[1] + if(is.null(unlog)) { + spec.growth = unlist(aapply(fitted.well.array, attribute)) + } + # currently only total growth needs to be unlogged if unlog == T + else { + spec.growth = unlist(aapply(fitted.well.array, attribute)) + } + num.dig = 3 #how many digits should be put on pdf? + max = round(max(spec.growth, na.rm=T), digits=num.dig) + min = round(min(spec.growth, na.rm=T), digits=num.dig) + avg = round(mean(spec.growth, na.rm=T), digits=num.dig) + heat.text = paste(toupper(sub("\\.", " ", attr.name)), ":\n", plate.ID, "\n", + paste("Max:",max ,"Min:" ,min ,"Avg:", avg, sep="")) + + attr.name <- sub("\\.", "_", attr.name) #do not want periods in file path + letters <- attr(fitted.well.array, "dimnames")[[1]] + for(i in 1:length(letters)) letters[i] = paste(" ", letters[i], " ") + nums <- attr(fitted.well.array, "dimnames")[[2]] + for(i in 1:length(nums)) nums[i] = paste(" ", nums[i], " ") + heat <- matrix(spec.growth, nrow=dim(fitted.well.array)[1], ncol=dim(fitted.well.array)[2], dimnames=list(letters,nums)) + pdf.name <- paste(getwd(), "/", plate.ID, "_", attr.name, ".pdf", sep="") + pdf(pdf.name) + #heatmap(heat, Rowv=NA, Colv=NA, revC=T, scale="none", na.rm=T, main=plate.ID, col=rainbow(100), margins=c(6,6)) + #mtext(paste("Max:", round(max(spec.growth, na.rm=T), digits=4),"Min:", round(min(spec.growth, na.rm=T), digits=4), "Avg:", round(mean(spec.growth, na.rm=T), digits=4)), side=1, line=3) + pheatmap(heat, color=colorpanel(100, "red", "orange", "yellow"), + border_color="black", cell_width=2, cell_height=3, + cluster_rows=F, cluster_cols=F, scale='none', main=heat.text, fontsize=16) + dev.off() + } + else { + return("Error") + } + return(pdf.name) +} + +######################################################################## +# Draw grids of 96 points as a visual representation of fit status, # +# and other info for an array of fitted well objects, plate by plate # +######################################################################## +# + +plate.overview = function(fitted.well.array, scale = 1, plate.ncol = 12, plate.nrow = 8){ + + + # Start with a list of the unique plate names in the fitted well array + # and an appropriately-sized grid of coordinates to plot wells on. + plates = unique(unlist(aapply(fitted.well.array,plate.name))) + + grid = data.frame(x = rep(rep(1:plate.ncol, each = plate.nrow), length(plates)), + y = rep( rep(-(1:plate.nrow), times = plate.ncol), length(plates))) + + + # Gather information on each well to display on each of the coordinates in : + # - was it marked as empty in the plate layout? + # - did the program find it to contain no growth ("dead")? + # - was the fitting procedure successful? + # - did the curve tank? if so, at what timepoint? if not, or if the curve was marked as dead anyway, do not display the value. + # - does the "additional info" slot indicate that any points were removed or the whole well discarded? + + empty = unlist(aapply(fitted.well.array, is.empty)) + dead = unlist(aapply(fitted.well.array, lacks.growth)) + fit = unlist(aapply(fitted.well.array, contains.fit)) + + tanking = unlist(aapply(fitted.well.array, tanking.start)) + tanking[is.na(tanking) | tanking == 1 | dead] = "" + + errors = unlist(aapply(fitted.well.array, function(well){ + if (length(well@add.info) == 0) + "" + else if (grepl("removed", well@add.info)) + "-" + else if (grepl("detected", well@add.info)) + "+" + else if (grepl("discarded", well@add.info)) + "!" + else + "" + })) + + # Color and plotting character vectors (length = the number of wells in the array) + # Default = 1 (open point, black) + colors = char = rep(1, length(tanking)) + + # Desired colors + colors[empty & dead] = "green3" # Empty well with no growth. + colors[!empty & fit] = "blue" # Inoculated well with successfully fitted growth curve. + + # Undesired colors + colors[empty & !dead] = "darkolivegreen4" # Inoculated well with some growth. + colors[!empty & !fit] = "red" # Inoculated well with no successfully fit (either no growth or unsuccessful fit). + + char[!dead & fit] = 19 # Filled points for non-empty wells with successful fits + char[!dead & !fit] = 4 # an X for non-empty wells with failed fits. + + char[errors == "!"] = 8 # Asterisk for discarded wells. + char[errors == "-" & dead ] = 5 # Open diamond for empty wells (after removing points). + char[errors == "-" & !dead & fit] = 23 # Filled diamond for non-empty wells with removed points and successful fits. + char[errors == "-" & !dead & !fit] = 8 # Asterisk for wells with removed points and failed fits. + + + for (plate in 1:length(plates)){ + + indices = (plate - 1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol) + + # Plot the grid using colors and plotting characters determined above. + plot(grid[indices,], col = colors[indices], bg = colors[indices], pch = char[indices], + main = plates[plate], mex = scale, cex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, + xaxt = "n", yaxt = "n", xlim = c(-0.5,plate.ncol + 0.5), ylim = c(-(plate.nrow + 1.5), 0.5), xlab = "", ylab = "") + + # Symbol legends + + legend.xpos = (c(-1,2.75,6.5,6.86,10.25)+0.5)*(plate.ncol+1)/13 - 0.5 + legend.ypos = -(plate.nrow + 0.5) + + legend(x=legend.xpos[1], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty="n", + legend=c("Empty, no growth","Empty with growth"), + pch = c(1,19), + pt.bg = c("green3","darkolivegreen4"), + col = c("green3","darkolivegreen4") + ) + legend(x=legend.xpos[2], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty="n", + legend=c("Inoculated with growth", "Inoculated, no growth"), + pch = c(19,1), + pt.bg = c("blue","red"), + col = c("blue","red") + ) + legend(x=legend.xpos[3], y= legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty="n", + legend=c("Well tanks at specified index", "Some points removed"), + pch = c(21,23), + pt.bg = c("grey","grey"), + col = c("black","black") + ) + + text(x=legend.xpos[4], y=legend.ypos - 0.29,"#",cex=0.5*scale) + + legend(x=legend.xpos[5], y=legend.ypos, cex = 0.7 * scale, y.intersp = 1.5, bty="n", + legend=c("Model fitting failed", "Well discarded"), + pch = c(4,8), + pt.bg = c("black","black"), + col = c("black","black") + ) + + # Add tanking indices if any were found. + text(grid[indices,] + 0.30, cex = 0.75*scale, + labels = tanking[indices], col = colors[indices]) + + # Label rows and columns + text(-1, -1:-plate.nrow, pos = 4, LETTERS[1:plate.nrow], cex = scale) + text( 1:plate.ncol, 0 , 1:plate.ncol, cex = scale) + } + + } + +######################################################################## +# Draw each well in an array of fitted well objects in succession. # +# Include options for adding notations, text info and fit parameters. # +######################################################################## +# + +view.fit = function(fitted.data, indices = 1:length(fitted.data), + unlog = F, constant.added, xlim = NULL, ylim = NULL, display.legend = T, + show.text = T, show.calc = T, draw.guess = NULL, draw.symbols = F, number.points = T, + user.advance = T, show.residuals = F, scale = 1,...){ + + if(!is.array(fitted.data)) + fitted.data = list(fitted.data) + + # Determine the boundaries for the axes (if user did not specify them) + if(is.null(ylim)){ + min.y = min(unlist(aapply(fitted.data, function(well){ + if (unlog) well@use.log = F + min.y = min(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T) + min(min.y, well@fit.par$b) + }))) + max.y = max(unlist(aapply(fitted.data, function(well){ + if (unlog) well@use.log = F + max.y = max(data.from(well, remove = F, remove.tanking = F)[,2], na.rm = T) + max(max.y, well@fit.par$b + well@fit.par$A) + }))) + ylim = c(min.y, min.y + (max.y-min.y)*1.15) - unlog*constant.added + } + if(is.null(xlim)){ + min.x = min(unlist(aapply(fitted.data, function(well){ + min(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T) + }))) + max.x = max(unlist(aapply(fitted.data, function(well){ + max(data.from(well, remove = F, remove.tanking = F)[,1], na.rm = T) + }))) + xlim = c(min.x - 0.05 * (max.x-min.x), max.x) + } + + # Display a figure legend + if(display.legend){ + well.fit.legend(xlim=xlim,ylim=ylim,scale=scale,constant.added=constant.added) + if(user.advance){ + prompt = readline(" to continue or Q to quit >>") + if (toupper(prompt) == "Q") break + } + } + # Start to cycle through the wells + well.number = 1 + while (well.number <= length(fitted.data)) { + # Only show wells specified by (default all wells) + if (well.number %in% indices){ + # plot the well + fitted.well = fitted.data[[well.number]] + plot(x=fitted.well, constant.added = constant.added, xlim = xlim, ylim = ylim, + unlog = unlog, well.number = well.number, scale = scale, number.points = T, draw.symbols = F, show.text = T, show.calc = T, draw.guess = NULL, ...) + + if(user.advance) + cat("\n[", well.number, "] ", plate.name(fitted.well), " ", well.name(fitted.well), ".", sep = "") + + if (show.residuals & is.numeric(model.residuals(fitted.well))){ + if(user.advance) + if (toupper(readline(" for residuals >>")) == "Q") break + plot.residuals(fitted.well) + } + + # Allow user to advance the currently shown well if specified. + if (user.advance){ + + prompt = readline(" to continue, or type # of next well or Q to quit >>") + if (toupper(prompt) == "Q") break + + user.input = suppressWarnings(try(as.numeric(prompt),silent=T)) + + # Go onto the next well unless input is a number. + if (is.numeric(user.input) & !is.na(user.input) & length(user.input) > 0) + well.number = user.input - 1 + } + } + # Advance the loop + well.number = well.number + 1 + } + } + + +well.fit.legend = function(xlim, ylim, scale = 1, constant.added){ + par(mar = c(5, 4, 4, 5)+0.1) + plot(0,0, main = "[Index] \n; ", + xlim = xlim, ylim = ylim, xlab = "Time", ylab = "log(OD - blank + const)", + mex = scale, cex.main = 1.5*scale, cex.axis = 1.2*scale, cex.lab = 1.2*scale, type = "n") + + # Draw a second vertical axis, showing unlogged OD scale + min.OD = unlog(ylim[1],constant.added) + max.OD = unlog(ylim[2],constant.added) + OD.labels = seq(from = min.OD, to = max.OD, length.out = 5) + OD.labels = round(OD.labels,1) + OD.at = log(OD.labels+constant.added) + axis(side=4, at=OD.at, labels=OD.labels, cex.axis = 1.2*scale, cex.lab = 1.2*scale) + mtext(4, text = "OD - blank", line = 3, cex=1.2) + + # Sample max. slope line + abline(v=min(xlim)+0.5*max(xlim), col="blue", lty=2) + text(mean(xlim),min(ylim)+0.4*diff(ylim),labels="Maximum specific\ngrowth rate",col="blue",pos=2,cex=0.75*scale) + + # Sample plateau line + abline(h=min(ylim)+0.8*diff(ylim),col="forestgreen",lty=2) + text(min(xlim)+0.9*diff(xlim),ylim+0.8*diff(ylim),labels="Growth plateau",col="forestgreen",pos=3,cex=0.75*scale) + + # Sample max.log.OD line + abline(h=min(ylim)+0.7*diff(ylim),col="black",lty=3) + text(min(xlim)+0.9*diff(xlim),ylim+0.7*diff(ylim),labels="max.log.OD",col="black",pos=1,cex=0.75*scale) + + # Sample inoc.log.OD + abline(h=min(ylim)+0.1*diff(ylim),col="black",lty=3) + text(min(xlim)+0.1*diff(xlim),min(ylim)+0.1*diff(ylim),labels="Fitted growth\nat inoculation",col="black",pos=3,cex=0.75*scale) + + # Sample baseline + abline(h=min(ylim)+0.05*diff(ylim),col="red",lty=2) + text(min(xlim)+0.1*diff(xlim),min(ylim)+0.05*diff(ylim),labels="Baseline",col="red",pos=1,cex=0.75*scale) + + # Sample lag time + lines(min(xlim)+c(0.1,0.25,0.50)*max(xlim),min(ylim)+c(0.05,0.05,0.4)*diff(ylim),col="red",lty=2) + text(min(xlim)+0.25*max(xlim),min(ylim)+0.05*diff(ylim),labels="Lag time",col="red",pos=1,cex=0.75*scale) + + # Sample achieved growth + lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.1,0.7)*diff(ylim),col="black",lty=3) + text(min(xlim)+0.75*max(xlim),min(ylim)+0.3*diff(ylim),labels="Achieved growth",col="black",cex=0.75*scale) + + # Sample plateau - achieved growth + lines(min(xlim)+c(0.75,0.75)*max(xlim),min(ylim)+c(0.7,0.8)*diff(ylim),col="grey",lty=3) + text(min(xlim)+0.75*max(xlim),min(ylim)+0.75*diff(ylim),labels="Projected minus achieved growth",col="grey",cex=0.75*scale) + + # Symbol legend + legend(x="right", title = "Timepoint Symbols", legend = c("Normal point", "Ignored point"), + cex = 0.75*scale, pt.cex = c(0.6,0.6)*scale, pch = c(35,35), col=c("black","gray80"), + x.intersp=1, xjust = 1, y.intersp=1.5) +} + +pdf.by.plate = function(fitted.data, out.prefix = "", upload.timestamp = NULL, + out.dir = getwd(), unlog = F, constant.added, silent = T, overview.jpgs = T, plate.ncol = 12, plate.nrow = 8,...){ + + # Prepare timestamp for addition to output file names. + filename.timestamp = strftime(upload.timestamp, format="_%Y-%m-%d_%H.%M.%S") + + # Start file list with the overview pdf + file.list.out = paste(out.dir,"/",out.prefix, "_overview", filename.timestamp, ".pdf",sep="") + + # Call to draw a graphic representation of each plate in this file. + pdf(file.list.out, title = paste(out.prefix, "plate overview")) + plate.overview.out = try(plate.overview(fitted.data),silent=T) + if(class(plate.overview.out) == "try-error") + stop("Error in : ", plate.overview.out) + + # Close devices + while(dev.cur() != 1) + dev.off() + + # Cycle through each plate + for(i in 1:dim(fitted.data)[3]){ + + # Get plate ID and position in data array. + plate.ID = dimnames(fitted.data)[[3]][i] + plate.indices = (i-1) * plate.nrow*plate.ncol + 1:(plate.nrow*plate.ncol) + if(overview.jpgs){ + # most be > 1 to partition value breaks for heatmap + well.matrix <- aapply(fitted.data[,,i], max.spec.growth.rate) + num.wells <- length(well.matrix[!sapply(well.matrix, is.na)]) + if(num.wells > 1){ + #Heatmap block########################################################## + #alongside the jpgs file create 3 heatmaps for each plate. NWD + spec.heat.file = create.heatmap(fitted.data[,,i], max.spec.growth.rate) + if(spec.heat.file == "Error") + stop("Error in for specific growth") + lag.heat.file = create.heatmap(fitted.data[,,i], lag.time) + if(lag.heat.file == "Error") + stop("Error in for lag time") + total.heat.file = create.heatmap(fitted.data[,,i], achieved.growth) + if(total.heat.file == "Error") + stop("Error in for total growth") + # Add name of file if successfully written to file list output. Including heatmap files NWD + file.list.out = c(file.list.out, spec.heat.file, lag.heat.file, total.heat.file) + ######################################################################## + } + jpg.name = paste(out.dir, "/", plate.ID, "_overview", ".jpg", sep="") + jpeg(jpg.name, quality = 90, width = 600, height = 480) + plate.overview.out = try(plate.overview(fitted.data[,,i]),silent = T) + if(class(plate.overview.out) == "try-error") + stop("Error in : ", plate.overview.out) + } + else + jpg.name = c() + + # Open a separate PDF for each plate. + if(!silent) cat("\nprinting PDF for", plate.ID) + pdf.name = paste(out.dir, "/", plate.ID, "_plots", filename.timestamp, ".pdf", sep="") + pdf(pdf.name, title = paste("R Graphics output for plate", plate.ID)) + + # Call to draw each well on the plate to the pdf. + view.fit.out = try(view.fit(fitted.data, indices = plate.indices, unlog=unlog, constant.added=constant.added, user.advance=F,...),silent=T) + + if(class(view.fit.out) == "try-error") + stop("Error in : ", view.fit.out) + + # Close all devices + while(dev.cur() != 1) + dev.off() + + if(!silent) cat("...done!\n\twritten to", pdf.name, "\n") + file.list.out = c(file.list.out, jpg.name , pdf.name) + } + return(file.list.out) + } diff --git a/R/GCAT/R/slope.analysis.R b/R/GCAT/R/slope.analysis.R new file mode 100644 index 0000000..ee7a80d --- /dev/null +++ b/R/GCAT/R/slope.analysis.R @@ -0,0 +1,419 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +######################################################################## +# # +# Estimate the growth curve slope at each timepoint of a well # +# # +######################################################################## +# +# uses the functions and (see well.class.R) +# adds estimated slopes as a new column to the "screen.data" slot + +calculate.slopes = function(input.well, silent = T){ + # Get the growth curve data (excluding removed points, but not excluding points marked as tanking) + growth.data = data.from(input.well, remove = T, remove.tanking = F) + x = growth.data[,1] + y = growth.data[,2] + + # Get a list of timepoint indices + indices = as.numeric(rownames(growth.data)) + + # Default slope is NA, values will be filled in as they are calculated + slopes = rep(NA, length(input.well)) + + for (i in 1:length(x)){ + if (i == 1) + slopes[indices[i]] = NA + # Calculate the slope of the line drawn from each point to the point preceding it. + else + slopes[indices[i]] = (y[i] - y[i-1])/(x[i] - x[i-1]) + } + # Add a Slope column to the "screen.data" slot + input.well@screen.data$Slope = slopes + if (!silent) + cat("slopes filled for", input.well@position[1], well.name(input.well), "\n") + return(input.well) + } + + +######################################################################## +# # +# Use slope estimates to check growth curves for tanking and OD jumps # +# # +######################################################################## +# +# uses the functions and (see well.class.R) +# Arguments: +# ----- stringency parameters ---- +# remove.jumps - should the program remove OD jumps? default F (just report them) - +# should be set to T if data contains distinct jumps in OD that need to be eliminated +# otherwise, this might be too stringent and will result in loss of data. +# check.start - which timepoint should checking for jumps and tanking start at? this is included because early timepoints can be unstable. +# fall.cutoff - what downward slope should constitute a fall in OD? +# jump.cutoffs - multipliers to determine whether a curve jumps up or down (see methods 1 and 2, below) +# tank.limit - how many timepoints in a row can have falling slopes until the curve is marked as tanking? +# tank.cutoff - what proportion of the maximum OD can the curve go below until it is considered tanking? + +# ---- input/output ---- +# silent - output to R console? +# draw - plot growth curve with curve checking details? +# +# Fills the "curve.par" slot in the well with the starting index of tanking (NA if none is found) +# + +#check.slopes = function(input.well, check.start = 8, fall.cutoff = -.0025, remove.jumps = F, +# jump.multipliers = -c(15, 500, 10), tank.cutoff = 1.0, tank.limit = 3, silent = T, draw = T){ + +#changed default values to parameters to account for settling +check.slopes = function(input.well, check.start = 22, fall.cutoff = -.0025, remove.jumps = F, + jump.multipliers = -c(15, 500, 10), tank.cutoff = 1.0, tank.limit = 6, silent = T, draw = T){ + + if (!silent) + cat("\nNow checking slopes for", plate.name(input.well), well.name(input.well)) + + # Get estimated slopes and untransformed points from the well + slopes = input.well@screen.data$Slope + x = data.from(input.well, remove=F, remove.tanking=F)[,1] + y = data.from(input.well, remove=F, remove.tanking=F)[,2] + + # Get a list of indices with valid slope estimates + indices = (1:length(input.well))[!is.na(slopes)] + + # Do not report tanking or check for jumps if there are fewer valid points than the number needed to detect it + if (length(indices) < tank.limit){ + input.well@curve.par$tanking.start = NA + if (!silent) + cat("...does not have enough points to check.\n") + return(input.well) + } + + ####################################################################################### + # Create indicator variables and recalculate cutoffs based on timepoint density. # + ####################################################################################### + # + + # Create , a vector of indicator variables for each timepoint with a valid slope estimate. + slope.indicator = rep(NA, length(slopes)) + + # Calculate the mean time difference between two timepoints (this typically doesn't vary too much) + time.diff = mean(diff(x[-1])) + + # Use the mean time difference to recalculate what should constitute a fall in OD using (which should be a proportion) + # Honestly I don't remember why the fifth root thing is in here...this is probably going to be revised later. + fall.cutoff = fall.cutoff * time.diff ^ (1/5) / 0.9506785 + + # Recalculate stringency parameters for jump detection based on spread of timepoints + jump.cutoffs = jump.multipliers* fall.cutoff + + # Recalculate tanking limit based on spread of timepoints + tank.limit = round(tank.limit / time.diff ^ (1/5) * 0.9506785) + + # Cycle through the indices of input.wells with valid slope estimate + counter = 0 + + for(j in 1:length(indices)){ + ####################################################################################### + # Method #1 for finding OD jumps: compare the slope estimate of each point to the # + # ones for the closest surrounding points. # + ####################################################################################### + # Get indices of the two closest surrounding timepoints with valid slope estimates. + if (j == 1) + prev.i = indices[2] + else + prev.i = indices[j-1] + if (j == length(indices)) + next.i = indices[length(indices) - 1] + else + next.i = indices[j+1] + i = indices[j] + + # How the program determines a jump up: + # If slope estimate of current timepoint is larger than times the highest surrounding slope estimate plus + # Add a "2" to the indicator variable + # How the program determines a fall: + # If slope estimate of current timepoint is more negative than + # Add a "5" to the indicator variable + # How the program determines a jump down: + # If slope estimate is lower than AND is smaller than times the lowest surrounding slope estimate minus + # Add a "6" to the slope indicator variable + # + # If none of these are true, add a "0" to the indicator variable + + if (slopes[i] > jump.cutoffs[2] * max(c(slopes[next.i],slopes[prev.i]),0) + jump.cutoffs[1]) + slope.indicator[i] = 2 + else if (slopes[i] < fall.cutoff){ + slope.indicator[i] = 5 + if (slopes[i] < jump.cutoffs[2] * min(c(slopes[next.i],slopes[prev.i], 0)) - jump.cutoffs[1]) + slope.indicator[i] = 6 + } + else + slope.indicator[i] = 0 + + + ####################################################################################### + # Method #2 for finding OD jumps: see if each point lies close to a line drawn # + # between the closest surrounding points. # + ####################################################################################### + # + # Use variable to track the location of each point. If two subsequent points lie farther + # away than the cutoff from their respectively drawn lines AND are on different sides, then count that as a jump. + + if (j > 1 & j < length(indices)){ + + # Make equation (y=mx+b) for line drawn between two surrounding points + m = (y[next.i] - y[prev.i])/(x[next.i] - x[prev.i]) + b = y[prev.i] - m * x[prev.i] + + # Estimate y from that line. Points will be judged by how much their true y value deviate from this estimate. + + # calculate b for perpendicular line from observed point to drawn line (slope is -1/m) + b2 = y[i] + x[i]/m + + # solve equation for intersection to determine the shortest Euclidean distance between the point and line. + # assign a sign to the distance based on the vertical distance. + est.x = (b2 - b) / (m + 1/m) + est.y = est.x * m + b + #est.y = m * x[i] + b + #est.x = x[i] + + if(m != 0) + point.distance = sqrt((y[i]-est.y)^2 + (x[i]-est.x)^2) * sign(y[i]-est.y) + else # horizontal case + point.distance = y[i] - b + + #print(paste(i, point.distance, slopes[i], jump.cutoffs[2] * max(c(slopes[next.i],slopes[prev.i]),0) + jump.cutoffs[1], point.distance > jump.cutoffs[3])) + + color = "gray30" + # If the true point exceeds that estimate by more than , update to positive. + # if the counter weas previously negative, mark this as a jump up. + if (point.distance > jump.cutoffs[3]){ + if (counter == -1){ + slope.indicator[i] = 2 + color = "red" + } + counter = 1 + } + # If the true point is under that estimate by more than , update to negative. + # if the counter was previously positive, mark this as a jump down. + else if (point.distance < -jump.cutoffs[3]){ + if (counter == 1){ + slope.indicator[i] = 6 + color = "red" + } + counter = -1 + } + # If the true point lies within of that estimate, update to zero. + else + counter = 0 + + if(draw) + # Graphic representation: draw each line used in Method #2 as a dotted line, + # and highlight in red if a jump was detected + lines(x[c(prev.i, next.i)], y[c(prev.i, next.i)], lty = 2, col = color) + } + } + + ####################################################################################### + # Check for tanking by looking for unbroken series of points with falling slopes. # + ####################################################################################### + # + # Cycle through , adding to until the end of the curve or until reaches the + + tank = 0 + i = 1 + + while(i < length(slope.indicator) & tank < tank.limit){ + # If a fall was not detected, reset to 0. + if (is.na(slope.indicator[i])) + tank = 0 + # If a fall was detected at a point index greater than , add 1 to . + else if (slope.indicator[i] >= 5 & i > check.start) + tank = tank + 1 + else + tank = 0 + + i = i + 1 + } + + # If the above loop was terminated because reached , update the "curve.par" + # slot to denote the first point at which tanking started (should be the last index checked minus ) + # also truncate so that it does not include the timepoints after tanking. + + if (tank == tank.limit){ + input.well@curve.par$tanking.start = i - tank.limit + slope.indicator = slope.indicator[1:i] + if (!silent) + cat("...tanks at timepoint", i - tank.limit, ".\n") + } + else{ + input.well@curve.par$tanking.start = NA + if (!silent) + cat("...does not tank.\n") + } + + ####################################################################################### + # Method #2 of checking for tanking: see if OD falls below cutoff # + # (as a proportion of max OD) without recovery (according to ) # + ####################################################################################### + # + i = check.start + tanking.start = NA + while(i < length(y) & is.na(tanking.start)){ + # If the next ODs beyond i do not reach the cutoff, then mark i as tanking. + if (all(y[i+(1:tank.limit)] < max(y,na.rm=T)*tank.cutoff, na.rm=T)) + tanking.start = i + i = i+1 + } + + # Graphic representation: draw the indicators used in Method #1 using the pch symbols in + # slope index = 2: an upward-pointing traingle for an upward jump + # slope index = 5: a diamond for a fall + # slope index = 6: a downward-pointing triangle for downward jump + if (draw){ + points(data.from(input.well, remove = F, remove.tanking = F)[which(slope.indicator != 0),], + col = 2, bg = 2, cex = 1.3, pch = slope.indicator[which(slope.indicator != 0)]) + } + + ####################################################################################### + # Decide what to do about any remaining jumps in OD # + ####################################################################################### + + jump.up = which(slope.indicator == 2) + jump.down = which(slope.indicator == 6) + # is a variable which keeps track of all the jumps, whether up or down. + jump.all = sort(c(match(jump.down, indices), match(jump.up, indices))) + # commented out; jump not working + # if (length(jump.all) > 0) + # add.info = paste("Jump(s) detected at timepoint(s)",paste(indices[jump.all],collapse=" ")) + # else + add.info = "" + + # If is true, use the following automated process to try and remove OD jumps by selectively removing points from analysis. + # if not, just return the well with the above slot filled. + + if (!remove.jumps) + input.well@add.info = add.info + else{ + # Cycle through first few jumps (before ). is a logical that controls this loop. + remove.initial.jump = T + while (length(jump.all) > 0 & jump.all[1] < check.start & remove.initial.jump){ + + # If any other jumps are also before ... + if (any(jump.all[-1] < check.start)){ + # ...and the next jump is in a different direction, stop the loop and don't remove the first one. + if(slope.indicator[indices[min(jump.all[-1])]] != slope.indicator[indices[jump.all[1]]]) + remove.initial.jump = F + # ...or if the next two jumps are different, stop the loop and don't remove the first one. + else if(length(jump.all[-1]) > 1 & + slope.indicator[indices[jump.all[2]]] != slope.indicator[indices[jump.all[3]]]) + remove.initial.jump = F + # ...otherwise, remove the jump and keep looping. + else + remove.initial.jump = T + } + # If no jumps other than the first one are before , remove it and keep looping. + else + remove.initial.jump = T + + # If the initial jump is to be removed, remove all points before the jump from analysis. + # also delete the initial jump from + if (remove.initial.jump){ + input.well = remove.points(input.well, 1:(indices[jump.all[1]] - 1)) + input.well@add.info = paste(add.info, "and removed.") + jump.all = jump.all[-1] + } + } + # If greater than 3 jumps remain, discard the curve as uninterpretable + if (length(jump.all) >= 4){ + input.well = remove.points(input.well, 1:length(input.well)) + input.well@add.info = paste(add.info, " - data was discarded.") + } + else{ + # If there are 3 jumps, remove all points after the last one from analysis and delete the last jump from + if(length(jump.all) == 3){ + input.well = remove.points(input.well, indices[jump.all[3]]:length(input.well)) + input.well@add.info = paste(add.info, "and removed.") + jump.all = jump.all[-3] + } + + # If there are now 2 jumps... + if(length(jump.all) == 2){ + # ...and they are different (one up, one down), remove the points in between them from analysis. + if (diff(slope.indicator[indices[jump.all]]) != 0 ){ + input.well = remove.points(input.well, indices[jump.all[1]:(jump.all[2] - 1)]) + input.well@add.info = paste(add.info, "and removed.") + } + # ...and they are in the same direction, remove all the points after the first one from analysis. + else{ + input.well = remove.points(input.well, indices[jump.all[1]]:length(input.well)) + input.well@add.info = paste(add.info, "and removed.") + } + } + # If there is only one jump, remove all points after it from analysis. + else if (length(jump.all == 1)){ + input.well = remove.points(input.well, indices[jump.all[1]]:length(input.well)) + input.well@add.info = paste(add.info, "and removed.") + jump.all = jump.all[-1] + } + } + } + if(!silent) + cat("\t", input.well@add.info) + return(input.well) + } + +######################################################################## +# # +# Check wells for growth, remove from analysis if OD is too low # +# # +######################################################################## +# +# The well will be tagged with no.growth = T in the slot "curve.par" if raw OD values (except for ) +# do not increase beyond above the specified time of inoculation for that well () + +check.growth = function(input.well, growth.cutoff, start.index = 2){ + + # Get raw ODs (not including ) and slope estimates from the well + # as well as OD at inoculation timepoint + raw.ODs = raw.data(input.well)[,2] + start.OD = raw.ODs[start.index] + + raw.ODs[input.well@screen.data$Remove] = NA + slope.estimates = slopes(input.well, remove.tanking = T, na.rm = T) + + # If fewer than 3 points remain in the analysis with valid slope estimates, discard the well. + if (length(slope.estimates) < 3 | all(is.na(slope.estimates))) + input.well@curve.par$no.growth= T + else{ + # If there are no points at all in the raw ODs + if(all(is.na(raw.ODs))) + input.well@curve.par$no.growth = T + else if(max(raw.ODs, na.rm=T) - start.OD < growth.cutoff) # See if OD increases by at least above + input.well@curve.par$no.growth = T + else + input.well@curve.par$no.growth = F + } + if(all(raw.data(input.well)[,2] - raw.data(input.well)[start.index,2] < growth.cutoff)) + input.well@add.info = "" # This is simply to reduce the amount of unnecessary info in the output. + # If the well is below growth cutoff anyway, don't bother reporting other errors. + return(input.well) + } + + diff --git a/R/GCAT/R/table.output.R b/R/GCAT/R/table.output.R new file mode 100644 index 0000000..b4cc42b --- /dev/null +++ b/R/GCAT/R/table.output.R @@ -0,0 +1,210 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +######################################################################## +# # +# Populate an output table with parameters and other useful info for # +# each well in a fitted dataset. # +# # +######################################################################## +# +# unlog - Should OD values be returned on the linear scale instead of log-transformed scale? +# constant.added - For returning values on linear scale, what constant was added to ODs before the log transform? +# reach.cutoff - what proportion of the plateau OD must tbe reached by the last valid timepoint for the curve to be marked as reaching its plateau OD? +# + +table.out = function(fitted.data.set, unlog = F, constant.added, reach.cutoff = 0.90, filename.timestamp = NULL,use.linear.param=F, use.loess=F){ + + # The idea is basically to use and on the fitted data array in order + # to get one vector for each column of the output table. + + # Get identifying information (plate, well, media and strain names) + plate.ID = unlist(aapply(fitted.data.set,plate.name)) + well.ID = unlist(aapply(fitted.data.set,well.name)) + media.ID = unlist(aapply(fitted.data.set,media.name)) + strain.ID = unlist(aapply(fitted.data.set,strain.name)) + # Get fit information for each well + # - was it marked as empty in the plate layout? + # - did the program find it to contain no growth ("dead")? + # - was the fitting procedure successful? + # - did the curve tank? if so, at what timepoint? if not, set value to "-" + + empty = unlist(aapply(fitted.data.set, is.empty)) + dead = unlist(aapply(fitted.data.set, lacks.growth)) + fit = unlist(aapply(fitted.data.set, contains.fit)) + tanking = unlist(aapply(fitted.data.set, tanking.start)) + tanking[is.na(tanking) | tanking == 1 | dead] = "-" + + # Get calculated values for each well: specific growth, final and initial OD, fitted plateau and baseline OD, lag time, etc. + inflection.time = unlist(aapply(fitted.data.set, inflection.time)) + max.spec.growth.rate = unlist(aapply(fitted.data.set, max.spec.growth.rate)) + max.log.OD = unlist(aapply(fitted.data.set, max.log.OD)) + inoc.log.OD = unlist(aapply(fitted.data.set, inoc.log.OD)) + projected.growth = unlist(aapply(fitted.data.set, projected.growth)) + projected.growth.OD = unlist(aapply(fitted.data.set, projected.growth.OD, constant.added)) + achieved.growth = unlist(aapply(fitted.data.set, achieved.growth)) + achieved.growth.OD = unlist(aapply(fitted.data.set, achieved.growth.OD, constant.added)) + lag.time = unlist(aapply(fitted.data.set, lag.time)) + shape.par = unlist(aapply(fitted.data.set, shape.par)) + RSS = unlist(aapply(fitted.data.set, rss)) + baseline = unlist(aapply(fitted.data.set, baseline)) + amplitude = unlist(aapply(fitted.data.set, amplitude)) + plateau = unlist(aapply(fitted.data.set, plateau)) + ########################3h############################################# + max.spec.growth.rate.SE = unlist(aapply(fitted.data.set, max.spec.growth.rate.SE)) + shape.par.SE = unlist(aapply(fitted.data.set, shape.par.SE)) + lag.time.SE = unlist(aapply(fitted.data.set, lag.time.SE)) + amplitude.SE = unlist(aapply(fitted.data.set, amplitude.SE)) # a.k.a amplitude error + baseline.SE = unlist(aapply(fitted.data.set, baseline.SE)) # a.k.a baseline error + ####################################################################### + + # If the curve falls short of 90% of plateau OD by the final timepoint. + no.reach.plateau = !unlist(aapply(fitted.data.set, reach.plateau, cutoff = 0.9)) + # If the fitted baseline is below zero on linear scale + no.reach.baseline = unlog(baseline,constant.added) < 0 + + # If any of these are NA as a result of failed fits, change them to false: they don't need to be reported. + no.reach.plateau[is.na(no.reach.plateau)] = F + no.reach.baseline[is.na(no.reach.baseline)] = F + # What percent of the total growth does the curve actually reach? + # (in case of total growth being 0, change this to 100%) + percent.reach = 100*((max.log.OD - inoc.log.OD) / (projected.growth)) + percent.reach[is.infinite(percent.reach)] = 100 + + # Return the name of the model (if any) that was successfully fit to the well. + model.used = unlist(aapply(fitted.data.set, function(well)well@model.name)) + + # "Goodness of fit" metric + good.fit = unlist(aapply(fitted.data.set, model.good.fit)) + + # Code the two flags: + flag1 = flag2 = rep("-", length(tanking)) + + for(i in 1:length(tanking)){ + # Flag 1 (empty/inoculated flag) possible values: + # well was empty and no growth was found (E) + # well was empty, but growth was found (E*) + # well was inoculated but no growth was found (!) + # well was inoculated and growth was found (I) + + if(empty[i] & !fit[i]) + flag1[i] = "E " + if(empty[i] & fit[i]) + flag1[i] = "E*" + if(!empty[i] & dead[i]) + flag1[i] = "! " + if(!empty[i] & !dead[i]) + flag1[i] = "I " + + # Flag 2 (lower/upper asymptotes) possible values: + # well did not reach lower asymptote (baseline OD) (L) + # well did not reach upper asymptote (plateau OD) (U) + # well did not reach either asymptote (L/U) + # well reached both asymptotes (-) + + if(no.reach.baseline[i]){ + if (no.reach.plateau[i]) + flag2[i] = "L/U" + else + flag2[i] = "L" + } + else{ + if (no.reach.plateau[i]) + flag2[i] = "U" + else + flag2[i] = "-" + } + # Also use the and and to provie more info about why model fitting failed in some cases. + if(dead[i]) + model.used[i] = ": skipped" + else if(!empty[i] & !fit[i]) + model.used[i] = ": failed" + } + + # Flag 3: return the additional info slot. + flag3 = unlist(aapply(fitted.data.set, function(well){ + if (length(well@add.info) > 0) + return(well@add.info) + else + return("") + })) + + # If something is amiss with the data table use this to check on the arguments... + #cat("plate ", length(plate.ID)," well ", length(well.ID)," media ", length(media.ID)," strain ", length(strain.ID), + #" model ", length(model.used)," max.spec.growth.rate", length(max.spec.growth.rate), "projected.growth", length(projected.growth), + #"lag.time", length(lag.time), "inoc.log.OD", length(inoc.log.OD), "good.fit", + #length(good.fit),"empty", length(flag1),"asymp", length(flag2)," tank ", length(tanking)," reach ", length(percent.reach)," other ", length(flag3), sep = "\n") + # 06.28.11: Add a row number identifier for output perusal + row.number = 1:length(plate.ID) + + pdf.file = page.no = c() + # 06.29.11: Add pdf file name and page number references. Prepare timestamp for addition to output file names (for file references in last column) + for(i in 1:length(plate.ID)){ + pdf.file[i] = paste(plate.ID[i], "_plots", filename.timestamp, ".pdf", sep="") + page.no[i] = (i-1) %% 96 + 2 + } + # Slap it all together into a data frame. + if(use.loess){ + output.core = data.frame(row = row.number, plate = plate.ID, well = well.ID, media = media.ID, strain = strain.ID, + model = model.used, lag.time, inflection.time, max.spec.growth.rate, + baseline, amplitude, plateau, inoc.log.OD, max.log.OD, achieved.growth, + baseline.OD = unlog(baseline,constant.added), amplitude.OD = unlog(amplitude,constant.added), + plateau.OD = unlog(plateau,constant.added), inoc.OD = unlog(inoc.log.OD,constant.added), + max.OD = unlog(max.log.OD,constant.added), achieved.growth.OD = achieved.growth.OD, + R.squared = good.fit, RSS = RSS, empty = flag1, asymp.not.reached = flag2, tank = tanking, other = flag3, pdf.file = pdf.file, page.no = page.no) + } else { + output.core = data.frame(row = row.number, plate = plate.ID, well = well.ID, media = media.ID, strain = strain.ID, + model = model.used, lag.time = lag.time, lag.time.SE, inflection.time, max.spec.growth.rate, max.spec.growth.rate.SE, + baseline, baseline.SE, amplitude, amplitude.SE, plateau, inoc.log.OD, max.log.OD, projected.growth, achieved.growth, + baseline.OD = unlog(baseline,constant.added), amplitude.OD = unlog(amplitude,constant.added), + plateau.OD = unlog(plateau,constant.added), inoc.OD = unlog(inoc.log.OD,constant.added), + max.OD = unlog(max.log.OD,constant.added), projected.growth.OD = projected.growth.OD, achieved.growth.OD = achieved.growth.OD, + shape.par = shape.par, shape.par.SE, + R.squared = good.fit, RSS = RSS, empty = flag1, asymp.not.reached = flag2, tank = tanking, other = flag3, pdf.file = pdf.file, page.no = page.no) + } + + # Add units to column names + names2 = names(output.core) + names2[grep("time",names2)] = sub("$",", hrs", names2[grep("time",names2)]) + names2[grep("rate",names2)] = sub("$",", log.OD/hr", names2[grep("rate",names2)]) + log.OD.fields = c("baseline", "baseline.SE", "amplitude", "amplitude.SE", "plateau", "projected.growth", "achieved.growth") + names2[names2 %in% log.OD.fields] = sub("$", ", log.OD", names2[names2 %in% log.OD.fields]) + names(output.core) = names2 + + # Add on any additional fields found in the plate layout. + all.layout.fields = sapply(fitted.data.set, function(well) unlist(well@well.info)) + all.layout.fields = as.data.frame(t(all.layout.fields)) + + + addl.info = all.layout.fields[,!(names(all.layout.fields) %in% c("Strain", "Media"))] + if(!is.data.frame(addl.info)){ + addl.info = data.frame(addl.info) + names(addl.info) = names(all.layout.fields)[!(names(all.layout.fields) %in% c("Strain", "Media"))] + } + + output = cbind(output.core,addl.info) + + return(output) +} + + + + + + diff --git a/R/GCAT/R/table2well.R b/R/GCAT/R/table2well.R new file mode 100644 index 0000000..e0ea069 --- /dev/null +++ b/R/GCAT/R/table2well.R @@ -0,0 +1,427 @@ +#Copyright 2012 The Board of Regents of the University of Wisconsin System. +#Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +#Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +#This file is part of GCAT. +# +#GCAT 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 3 of the License, or +#(at your option) any later version. +# +#GCAT 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 GCAT. If not, see . + +# Notes by Jason +# 9/07/11 + + +######################################################################## +# # +# Function for loading data from tabular format into an object array # +# # +######################################################################## +#' Load tabular data +#' +#' This function handles loading data from tabular format (.csv, tab-delimited text or R data frame object) +#' and returns an array of well objects, each filled with raw Time vs. OD data. +#' It takes single-plate or multiple-plate format data. For single-plate data, +#'it calls on the function \code{gcat.reorganize.single.plate.data} to rearrange the table before creating the output object. +#' +#' @param file.name Complete path and file name of a comma-separated values (.csv) file containing growth curve data +#' in the multiple-plate (long) format. +#' @param input.data A list of tables representing input files read with \code{read.table}. Used to save time in cases +#' of running multiple analyses on the same dataset. If used, the function will ignore \code{file.name} entirely. +#' @param load.type .csv by default. +#' @param plate.laout Specifies the layout of the given plate. +#' @param single.plate.ID specifies a plate name for a single-plate read. If NULL, this is derived from the file name. +#' @param blank.value Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD +#' measurement in each well is used. +#' @param add.constant A value for r in the log(OD + r) transformation. +#' @param plate.nrow The number of rows in the input files. +#' @param plate.ncol The number of columns in the input files. +#' @param input.skip.lines specifies a plate name for a single-plate read. If NULL, this is derived from the file name. +#' @param multi.column.headers The headers of the column when analyzing multiple plates. +#' @param single.column.headers The headers of the column when analyzing a single plate. +#' @param layout.sheet.headers The headers of the layout file. +#' @param silent Surpress all messages. +#' @param verbose Display all messages when analyzing each well. +#' +#' @return A list of well objects. +gcat.load.data = function(file.name = NULL, load.type = "csv", input.data = NULL, single.plate.ID = NULL, + plate.layout = NULL,plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), single.column.headers = c("","A1"), + layout.sheet.headers = c("Strain", "Media Definition"), + blank.value = NULL, start.index = 2, single.plate = F, silent = T){ + + ######################################################################## + # Read from .csv, tab-delimited text file or data frame object # + ######################################################################## + + if(is.null(input.data)){ + # Either read from .csv. + input.data = read.csv(file.name, stringsAsFactors=F, skip = input.skip.lines, fileEncoding='UTF-8') + + # Determine single plate name if not specified. + if (is.null(single.plate.ID)){ + # Split the file name by "." and discard the last member (file extension). + single.plate.ID = strsplit(basename(file.name),"\\.")[[1]] + single.plate.ID = paste(single.plate.ID[-length(single.plate.ID)],collapse=".") + } + } + + # Call to arrange data from a single plate format file + if(single.plate) + input.data = gcat.reorganize.single.plate.data(input.data = input.data, single.column.headers, + blank.value = blank.value, single.plate.ID = single.plate.ID, plate.nrow = plate.nrow, plate.ncol = plate.ncol, silent=silent) + + ######################################################################## + # Search for and standardize column headers in input data # + ######################################################################## + + # Go through the specified column headers, determining what their positions are in the + # input data frame and if any are missing. + + # Get names of column headers in input data + input.colnames = colnames(input.data) + + # Create a list denoting the column numbers in input data that match each of the specified column names, + # and a separate list for any missing columns. + + column.matches = c() + missing.list = NULL + + for(i in 1:length(multi.column.headers)){ + if (multi.column.headers[i] %in% input.colnames) + column.matches[i] = min(which(input.colnames == multi.column.headers[i])) + # Take the first column in input file that matches a specified column header. + else{ + missing.list = c(missing.list, i) + } + } + + # If any columns are missing, stop and report error with missing column names + if (is.vector(missing.list)){ + message = "The following columns:" + for (i in missing.list) + message = paste(message, paste(" ", multi.column.headers[i]), sep = "\n") + stop(message, "\n were not found in the data file.") + } + + # Reorder and rename the columns, using the list of matching column numbers from above. + input.data = input.data[,column.matches] + names(input.data)[1:4] = c("Plate.ID", "Well", "OD", "Time") + + # Use 'substring' to split the alphanumeric "Well" field into row (letters) and column (numbers) + input.data$Well.row = substring(input.data$Well, 0,1) + input.data$Well.col = as.numeric(substring(input.data$Well, 2)) + + + ######################################################################## + # Create an array of well objects with the Time and OD data # + ######################################################################## + # + # Use the by function to split up the data frame into shorter segments by well (row, column and plate) + + well.array = by(data = input.data[,c("OD", "Time")], + INDICES = list(input.data$Well.row,input.data$Well.col,input.data$Plate.ID), + FUN = function(x){data.frame(Time=x$Time, OD=x$OD,stringsAsFactors = F)}, simplify = F) + + + # Then apply the function (found in well.class) to each member to create a well object + well.array = aapply(well.array,function(x){well(x$Time,x$OD)}) + + # Differentiate any duplicate plate names in the array's dimnames + new.dimnames = dimnames(well.array) + for (i in length(new.dimnames[[3]]):1){ + if (any(new.dimnames[[3]][-i] == new.dimnames[[3]][i])) + new.dimnames[[3]][i] = paste("another_", new.dimnames[[3]][i], sep = "") + } + dimnames(well.array) = new.dimnames + + # Copy the plate/row/column names found in the dimnames into the array objects themselves (use "position" slot) + for(plate in unique(dimnames(well.array)[[3]])){ + for (col in unique(dimnames(well.array)[[2]])){ + for(row in unique(dimnames(well.array)[[1]])){ + well.array[[row,col,plate]]@position = c(plate=plate,row=row,col=col) + } + } + } + + ######################################################################## + # Add plate layout information to well array # + ######################################################################## + + # Use the object to add media and strain information to the "well.info" slot of each well + # Also set the value of the parameter in slot "curve.par" to T for empty wells. + ######################################################################## + # Add plate layout information to well array # + ######################################################################## + + # Use the object to add media and strain information to the "well.info" slot of each well + # Also set the value of the parameter in slot "curve.par" to T for empty wells. + + + # If is not provided, do not add strain information, and assume all wells are inoculated. + if(is.null(plate.layout)){ + plate.layout = data.frame(Row=rep(PLATE.LETTERS[1:plate.nrow],plate.ncol),Column=rep(1:plate.ncol,each=plate.nrow),rep("Unknown Strain",96),rep("Unknown Media",96)) + colnames(plate.layout) = c("Row", "Column", layout.sheet.headers) + } + else + if(!silent) cat("\n\t\tusing plate layout to fill well info.") + + for(plate in unique(dimnames(well.array)[[3]])){ + for (col in unique(dimnames(well.array)[[2]])){ + for(row in unique(dimnames(well.array)[[1]])){ + well = well.array[[row,col,plate]] + # For each well on each plate, find the corresponding row in . + # If refers to specific plates, then use those to find the correct row. + # Otherwise, generalize across all plates. + if ("Plate.ID" %in% names(plate.layout)) + layout.row.number = which(plate.layout$Column==well@position["col"] & + plate.layout$Row==well@position["row"] & + plate.layout$Plate.ID==well@position["plate"] ) + else + layout.row.number = which(plate.layout$Column==well@position["col"] & + plate.layout$Row==well@position["row"]) + + # Error if either no rows or more than one row matches the well + if (length(layout.row.number) != 1) + stop("incorrectly formatted plate layout! check names of columns, rows, and plates (if applicable).") + + # Add any additional columns to the well's "well.info" slot + well.info = plate.layout[layout.row.number,!(names(plate.layout) %in% c("Row","Column","Plate.ID",layout.sheet.headers))] + + # Fix the column name issue if there is only one additional entry. + if(length(well.info) == 1){ + well.info = data.frame(well.info,stringsAsFactors=F) + names(well.info) = names(plate.layout)[!(names(plate.layout) %in% c("Row","Column","Plate.ID",layout.sheet.headers))] + } + well@well.info = as.list(well.info) + + well@well.info$Strain = plate.layout[layout.row.number, layout.sheet.headers[1]] + well@well.info$Media = plate.layout[layout.row.number, layout.sheet.headers[2]] + + # Set parameter in slot "curve.par" accordingly + well@curve.par$empty.well = (plate.layout$Strain[layout.row.number] == "Empty") + well.array[[row,col,plate]] = well + } + } + } + + # Set start index value in each well + well.array = aapply(well.array, function(x,start.index) { x@start.index = start.index; x }, start.index) + + ######################################################################## + # Return values to R # + ######################################################################## + # + # Console output if desired, return the completed well array. + if (!silent) + cat("\n\t", dim(well.array)[[3]], "plates added to array from", file.name) + return(well.array) + } + + + +######################################################################## +# # +# Reorganize data from single-plate input format before reading # +# # +######################################################################## +# +# This function reorganizes the data frame from a single-plate format file. +# input.data - data frame read straight from a single-plate format data file. +# single.plate.ID - specifies a plate name for a single-plate read, since none is given in the single-plate format +# The plate will be named Plate_1 unless otherwise specified. + +gcat.reorganize.single.plate.data = function(input.data, blank.value = NULL, single.column.headers, single.plate.ID = "Plate_1", + plate.nrow = 8, plate.ncol = 12, silent=T){ + + ######################################################################## + # Standardize the formatting and search for specified column names # + ######################################################################## + # + # Locate the first and last rows from the table and return errors if not defined + # Note: this only works if the time column is the first column + + header.row = min(which(input.data[,1] == single.column.headers[1])) + if (length(header.row) != 1 | is.infinite(header.row)) + stop("could not locate header row in input file!") + + # The last row: where column 2 starts to be blank, or the total number of rows, whichever is smaller + extra.rows.start = min(which(input.data[-(1:header.row),2] == ""), which(is.na(input.data[-(1:header.row),2])), nrow(input.data[-(1:header.row),])) + if (length(extra.rows.start) != 1 & is.infinite(extra.rows.start)) + stop("could not locate last row in input file!") + + # Use header row to rename the columns, then cut off extra rows (including the ones above header) + names(input.data) = as.character(unlist(input.data[header.row,])) + input.data = input.data[(header.row+1):(header.row+extra.rows.start-1),] + + # Time column: allow for multiple matches to the name (since it's usually blank) but assume it's the first one + Time.column = which(names(input.data) == single.column.headers[1]) + if (length(Time.column) != 1){ + if(!silent) cat("No unique time column in input.data file! Using the first one encountered.") + Time.column = min(Time.column) + } + # First well column (default A1): only allow for one match. + Well.column.start = which(names(input.data) == single.column.headers[2]) + if (length(Well.column.start) != 1) + stop("No unique start point for well columns in input.data file!") + + # If the time column was found, rename it "Time" and reformat it into a numeric value + # Adjust the blank measurement timestamp to -1 seconds if there is one + + names(input.data)[Time.column] = "Time" + + # Note: Some single plate screens have timepoints ending with "s" for seconds. + # This line removes the "s" while maintaining general compatibility. + input.data$Time = unlist(strsplit(input.data$Time, "s")) + + # If is NULL (default - takes the first OD as the blank reading), then the first timepoint can labeled something non-numeric. + # In that case, rename it to match the first real timepoint minus one. + # when user input blank value, Blank timepoint i.e. input.data$Time[1] == Blank, labeled as "Blank" from data input file + # It also should rename it to match the first real timepoint minus one. + if(is.null(blank.value) || is.na(as.numeric(input.data$Time[1]))) + input.data$Time[1] = as.numeric(input.data$Time[2]) - 1 + + ######################################################################## + # Start to fill the reformatted data frame # + ######################################################################## + + # If all columns are present, make a list of all the wells. + well.list = paste(rep(PLATE.LETTERS[1:plate.nrow], each = plate.ncol), rep(formatC(1:plate.ncol, digits = log(plate.ncol, 10), flag = "0"), plate.nrow), sep = "") + + # Duplicate the well names times the number of time measurements in each well + Well = rep(well.list, each = length(input.data[,Time.column])) + + # Duplicate times the length of the entire output + Plate.ID = rep(single.plate.ID, length(Well)) + + # Duplicate the time column times the number of wells and convert to numeric + Time = as.numeric(rep(input.data[,Time.column], times = length(Well.column.start:ncol(input.data)))) + + # Append OD measurements from each well together and convert to numeric + OD = c() + for (i in Well.column.start:ncol(input.data)){ + OD = as.numeric(c(OD, input.data[,i])) + OD = unlist(OD) + } + + # Fill and return the data frame containing the above four vectors. + output = data.frame(Plate.ID, Well, OD, Time) + + # Include any extra columns that were not Time or OD measurements? + for(i in (1:length(names(input.data)))[-c(Time.column,Well.column.start:ncol(input.data))]){ + new.column = data.frame(rep(input.data[,i], length(Well.column.start:ncol(input.data)))) + names(new.column) = names(input.data)[i] + output = cbind(output, new.column) + } + return(output) +} + + +######################################################################## +# # +# Function to combine two well array datasets by plate # +# # +######################################################################## +# ---------------------------------------------------------- +# This function can append together arrays created using +# Arguments: any number of array objects as long as they are all output straight from + +gcat.append.arrays = function(...){ + + # Transfer arrays to a list + args.arrays = list(...) + first.array = args.arrays[[1]] + first.dims = dim(first.array) + plate.nrow = args.arrays[[4]] + plate.ncol = args.arrays[[3]] + input.arrays = list(args.arrays[[1]], args.arrays[[2]]) + for (i in 2:length(input.arrays)){ + next.array = input.arrays[[i]] + next.dims = dim(next.array) + + # Check to make sure the arrays have proper dimensions for 96-well plate data + if (!(all(c(first.dims[1], next.dims[1]) == plate.nrow) & all(c(first.dims[2], next.dims[2]) == plate.ncol))) + stop("Data should have dimensions (",plate.nrow,",",plate.ncol,",n)!") + + # If dimensions are alright, append dimensions and dimension names + new.dims = c(plate.nrow,plate.ncol,first.dims[3]+next.dims[3]) + new.names = dimnames(first.array) + new.names[[3]] = c(new.names[[3]], dimnames(next.array)[[3]]) + + # Differentiate duplicate names + for (i in length(new.names[[3]]):1){ + if (any(new.names[[3]][-i] == new.names[[3]][i])) + new.names[[3]][i] = paste("another_", new.names[[3]][i], sep = "") + } + + # Create a new array + new.array = c(first.array, next.array) + dim(new.array) = new.dims + dimnames(new.array) = new.names + + # Update plate name in well objects + for (i in 1:length(unlist(new.array))) + new.array[[i]]@position[1] = new.names[[3]][floor((i-1)/96)+1] + + # Loop until complete + first.array = new.array + first.dims = dim(first.array) + } + return(new.array) + } + + +######################################################################## +# # +# Convert timestamps to hours from start and sort timepoints # +# # +######################################################################## +# +# This function acts on a single well and modifies the raw data stored in slot "screen.data" +# +# input.well - an object of class well +# time.format - specifies the time format. allowed values are "%S", for seconds, "%d", for days, or anything complying with ISO C / POSIX standards; see +# note: reading directly from excel to R results in timestamps being converted to days. +# start.index - which timepoint should be used as the starting time at inoculation? + +gcat.start.times = function(input.well, time.input, start.index = 2) { + + if(start.index > length(input.well)) + stop("Start index is greater than length of well!") + + # If using a numeric time format, simply multiply times by the appropriate conversion factor + # Conversion factor should be supplied to convert timestamps to hours. For example, + # should be equal to 1/3600 if "time" is in seconds, 24 if "time" is in days, etc. + + time.format = time.input # Set default constant from rails user input + + if (is.numeric(time.format)) + input.well@screen.data$Time = (input.well@screen.data$Time - min(input.well@screen.data$Time)) * time.format + else{ + # Otherwise, convert timestamps from ISO C / POSIX to numeric values representing seconds (since the dawn of time?) and subtract out the initial value. + rtimes = input.well@screen.data$Time + ptimes = strptime(as.character(rtimes),time.format) + ctimes = as.POSIXct(ptimes) + int.times = unclass(ctimes) + # Time will be in seconds, convert to hours by dividing by 3600 + input.well@screen.data$Time = (int.times - min(int.times))/3600 + } + # Sort raw data by timestamp and return the input.well + input.well@screen.data = input.well@screen.data[order(input.well@screen.data$Time),] + + input.well@screen.data$Time = input.well@screen.data$Time - input.well@screen.data$Time[start.index] + + if(all(is.na(input.well@screen.data$Time))) + stop("Error in .") + rownames(input.well@screen.data) = NULL + return(input.well) + } diff --git a/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/YPDAFEXglucoseTests_2-25-10.csv b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/YPDAFEXglucoseTests_2-25-10.csv new file mode 100755 index 0000000..39ad716 --- /dev/null +++ b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/YPDAFEXglucoseTests_2-25-10.csv @@ -0,0 +1,170 @@ +Well positions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Raw data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,G1,G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12 +Blank,0.0623,0.0626,0.0596,0.0602,0.061,0.0598,0.0604,0.0623,0.062,0.0648,0.0601,0.0602,0.0583,0.093,0.0934,0.0929,0.0927,0.093,0.2159,0.2214,0.2249,0.224,0.223,0.0617,0.0604,0.0921,0.0926,0.0943,0.0937,0.094,0.2207,0.22,0.2199,0.2191,0.2133,0.0623,0.0569,0.0932,0.0965,0.0943,0.094,0.0971,0.2214,0.2256,0.2236,0.2196,0.2163,0.0589,0.0583,0.0927,0.0924,0.0941,0.0935,0.0929,0.2204,0.2211,0.2209,0.2197,0.2142,0.0606,0.0601,0.0921,0.0919,0.0958,0.0925,0.0933,0.2211,0.2246,0.2202,0.22,0.212,0.0588,0.0575,0.0923,0.0923,0.0942,0.0973,0.0921,0.2217,0.2218,0.221,0.2195,0.2198,0.059,0.0586,0.058,0.0577,0.0576,0.0581,0.0585,0.0582,0.0582,0.0585,0.0577,0.0577,0.0572 +0s,0.0631,0.0633,0.0607,0.0613,0.0623,0.0612,0.0617,0.0636,0.063,0.0657,0.0607,0.0612,0.0592,0.2053,0.2676,0.2104,0.1872,0.0926,0.2631,0.3007,0.2867,0.2736,0.2197,0.0622,0.0606,0.1578,0.1811,0.1762,0.156,0.0939,0.2681,0.2907,0.2769,0.2603,0.212,0.0634,0.0581,0.1686,0.1948,0.1673,0.1432,0.0963,0.26,0.2915,0.2799,0.2631,0.2127,0.061,0.0585,0.1601,0.1703,0.1704,0.162,0.0919,0.2608,0.2906,0.2729,0.26,0.213,0.0617,0.0608,0.1734,0.1982,0.1829,0.1778,0.0927,0.2591,0.2884,0.2715,0.2627,0.2106,0.0591,0.0581,0.1656,0.2065,0.1829,0.1707,0.0913,0.2637,0.2925,0.2752,0.2741,0.2186,0.06,0.0593,0.0585,0.0587,0.0584,0.0589,0.0595,0.0592,0.0592,0.0596,0.0586,0.0584,0.0577 +640s,0.0642,0.0645,0.0612,0.0616,0.0624,0.0613,0.063,0.0639,0.0632,0.0659,0.0608,0.0616,0.059,0.2046,0.2813,0.2226,0.1947,0.0927,0.2767,0.3375,0.3023,0.2892,0.2194,0.0627,0.0604,0.1712,0.2078,0.1926,0.1708,0.0938,0.2808,0.3185,0.2881,0.2706,0.2117,0.0636,0.0579,0.1824,0.224,0.1858,0.1559,0.0961,0.2702,0.319,0.2898,0.2711,0.2128,0.0592,0.0587,0.1709,0.2068,0.1943,0.1793,0.0917,0.2713,0.3203,0.2858,0.2682,0.2129,0.0613,0.0608,0.1832,0.2254,0.1973,0.1904,0.0927,0.2671,0.3156,0.2802,0.2709,0.2104,0.0593,0.0588,0.178,0.2312,0.1937,0.184,0.0915,0.2695,0.3126,0.2787,0.2706,0.2183,0.06,0.0594,0.0587,0.0591,0.0586,0.0591,0.0597,0.0591,0.0593,0.0598,0.0589,0.0585,0.0573 +1280s,0.0641,0.0635,0.0612,0.0616,0.0624,0.0613,0.0619,0.0638,0.0631,0.0659,0.0613,0.0617,0.0592,0.2043,0.2854,0.2256,0.1985,0.0925,0.283,0.3447,0.3134,0.3022,0.2194,0.0594,0.0602,0.1707,0.2156,0.1999,0.1751,0.0938,0.2866,0.3256,0.2996,0.2818,0.2119,0.0637,0.0579,0.1862,0.2311,0.1961,0.1602,0.0959,0.2767,0.3247,0.3,0.2817,0.2126,0.0602,0.0586,0.1735,0.2129,0.2028,0.1844,0.092,0.2791,0.328,0.2994,0.2788,0.2129,0.0614,0.061,0.1866,0.2379,0.2086,0.1986,0.0927,0.2734,0.3239,0.2896,0.2806,0.2105,0.0592,0.0585,0.1842,0.2422,0.2047,0.1951,0.0915,0.274,0.3176,0.2859,0.277,0.2186,0.0602,0.0596,0.0589,0.0589,0.0586,0.0593,0.0599,0.0592,0.0594,0.0598,0.059,0.0585,0.0577 +1921s,0.0646,0.0642,0.0613,0.062,0.0626,0.0614,0.0621,0.064,0.0634,0.0661,0.0615,0.0619,0.0592,0.2054,0.2872,0.2262,0.1994,0.0927,0.2846,0.3478,0.3224,0.3119,0.2197,0.0585,0.0599,0.1681,0.2164,0.2006,0.1736,0.0937,0.2875,0.3279,0.3066,0.2894,0.2118,0.0636,0.0579,0.1898,0.2348,0.1991,0.1629,0.096,0.2801,0.3264,0.3091,0.29,0.2125,0.0595,0.0588,0.1772,0.2149,0.2047,0.1855,0.0918,0.2822,0.3287,0.3075,0.2856,0.213,0.0615,0.0611,0.1875,0.2419,0.2129,0.2033,0.0925,0.2772,0.3252,0.2981,0.2885,0.2106,0.0591,0.0584,0.1874,0.2472,0.2141,0.1983,0.0914,0.2771,0.3178,0.2926,0.2837,0.2209,0.0602,0.0597,0.059,0.0593,0.0589,0.0594,0.06,0.0594,0.0594,0.0601,0.0589,0.0587,0.0575 +2561s,0.0641,0.0637,0.0609,0.0616,0.0626,0.0612,0.0619,0.0639,0.0631,0.0657,0.0619,0.0618,0.0592,0.2061,0.2873,0.2247,0.1979,0.0925,0.2858,0.352,0.3305,0.3176,0.2197,0.0601,0.0597,0.1658,0.2185,0.2016,0.1748,0.0938,0.2888,0.331,0.3153,0.2951,0.212,0.0637,0.0581,0.1916,0.2381,0.1997,0.1644,0.0962,0.2818,0.3296,0.3175,0.2959,0.2127,0.0608,0.0581,0.1805,0.2172,0.2046,0.1876,0.0918,0.2846,0.3317,0.3173,0.2911,0.2131,0.0615,0.061,0.1868,0.2421,0.2198,0.2071,0.0926,0.2796,0.3284,0.3055,0.2955,0.2107,0.0593,0.0585,0.1914,0.2444,0.2191,0.2043,0.0915,0.2788,0.3184,0.2996,0.2917,0.2189,0.0603,0.06,0.0591,0.059,0.0588,0.0594,0.06,0.0595,0.0597,0.0601,0.0592,0.059,0.0573 +3201s,0.064,0.0675,0.061,0.0619,0.0627,0.0613,0.0621,0.0639,0.0633,0.0659,0.0623,0.0619,0.0596,0.2072,0.2892,0.2249,0.1965,0.0927,0.2884,0.3553,0.3405,0.3248,0.2199,0.0593,0.0595,0.1664,0.2186,0.204,0.177,0.0937,0.2906,0.3346,0.3246,0.3015,0.2121,0.0638,0.0581,0.1925,0.2384,0.2003,0.17,0.0961,0.2845,0.3347,0.3269,0.302,0.2129,0.0615,0.0588,0.1821,0.2156,0.2047,0.1887,0.092,0.2871,0.3354,0.326,0.2962,0.2132,0.0616,0.0612,0.1884,0.2396,0.2267,0.2061,0.0926,0.2833,0.3328,0.3144,0.3026,0.2109,0.0595,0.0587,0.196,0.2392,0.2231,0.206,0.0914,0.2811,0.3215,0.3075,0.298,0.2191,0.0603,0.0601,0.0592,0.0593,0.0591,0.0596,0.0602,0.0597,0.0598,0.0603,0.0594,0.0593,0.0572 +3841s,0.0646,0.0719,0.0613,0.0619,0.0627,0.0614,0.0621,0.064,0.0634,0.0658,0.0624,0.0618,0.0592,0.2087,0.2903,0.224,0.1958,0.0925,0.2911,0.3565,0.3501,0.3288,0.2199,0.063,0.0595,0.1693,0.2208,0.2078,0.1793,0.0936,0.2935,0.3375,0.3339,0.3073,0.2121,0.0638,0.0579,0.1943,0.2387,0.2039,0.1718,0.096,0.2888,0.3394,0.3367,0.3075,0.2129,0.0623,0.059,0.1838,0.2143,0.2092,0.1895,0.0918,0.2908,0.3383,0.3356,0.3026,0.2135,0.0617,0.0611,0.1893,0.2368,0.2226,0.1997,0.0925,0.2855,0.3365,0.3227,0.3084,0.2108,0.061,0.0589,0.1997,0.238,0.2296,0.2076,0.0915,0.2845,0.3249,0.3157,0.3037,0.2192,0.0607,0.0602,0.0591,0.0595,0.0591,0.0596,0.0602,0.0596,0.0597,0.0604,0.0595,0.0594,0.0574 +4482s,0.0645,0.0652,0.0614,0.0623,0.0628,0.0617,0.0624,0.0639,0.0637,0.0657,0.0626,0.0621,0.0595,0.2104,0.2921,0.2249,0.1959,0.0925,0.2937,0.3564,0.3536,0.3303,0.2202,0.0674,0.0625,0.1722,0.2233,0.2134,0.1827,0.0939,0.2966,0.3392,0.3402,0.3089,0.2123,0.0639,0.0584,0.197,0.2382,0.2094,0.1755,0.0959,0.2913,0.3407,0.3438,0.311,0.213,0.0632,0.0585,0.1848,0.2155,0.2138,0.1901,0.0917,0.2939,0.3396,0.3424,0.3069,0.2135,0.0616,0.0614,0.1909,0.2352,0.2293,0.207,0.0926,0.2893,0.3387,0.3313,0.3134,0.211,0.0599,0.0591,0.2022,0.2387,0.2344,0.2078,0.0914,0.2878,0.3274,0.3231,0.3095,0.2194,0.0609,0.0609,0.0593,0.0596,0.0591,0.0597,0.0603,0.06,0.0602,0.0604,0.0597,0.0597,0.0581 +5122s,0.0642,0.0647,0.0613,0.062,0.0628,0.0615,0.0624,0.064,0.0635,0.0657,0.0627,0.0619,0.0596,0.2111,0.2933,0.2267,0.1965,0.0926,0.2977,0.3589,0.356,0.3284,0.2202,0.0633,0.0603,0.1741,0.2251,0.2186,0.1866,0.0937,0.3002,0.3402,0.3474,0.309,0.2124,0.0643,0.0582,0.1994,0.2393,0.2152,0.178,0.096,0.2951,0.3427,0.349,0.313,0.2131,0.0631,0.058,0.1875,0.2173,0.2188,0.1939,0.0918,0.2975,0.3412,0.347,0.3099,0.2136,0.0617,0.0613,0.1907,0.2369,0.2376,0.2155,0.0926,0.2929,0.3401,0.3376,0.3146,0.2111,0.0596,0.0592,0.2025,0.2358,0.2361,0.2144,0.0912,0.2906,0.3294,0.3304,0.3131,0.2195,0.0608,0.0609,0.0596,0.0598,0.0595,0.0599,0.0605,0.0601,0.0602,0.0606,0.0597,0.0597,0.0593 +5762s,0.0647,0.065,0.062,0.0626,0.0637,0.0624,0.0626,0.0646,0.064,0.0661,0.0631,0.0627,0.0598,0.2125,0.2945,0.2275,0.197,0.0927,0.3008,0.3591,0.3601,0.3354,0.2206,0.0642,0.0603,0.1758,0.2266,0.2248,0.1905,0.0938,0.3038,0.3415,0.346,0.3099,0.2127,0.064,0.0586,0.2003,0.2386,0.22,0.1823,0.0961,0.2993,0.3456,0.3524,0.3137,0.2134,0.0644,0.0597,0.1894,0.2179,0.2271,0.2016,0.092,0.3019,0.3443,0.3467,0.3105,0.2139,0.0621,0.0617,0.1913,0.2378,0.2474,0.2263,0.0928,0.2963,0.341,0.3417,0.3145,0.2114,0.0616,0.0596,0.2013,0.2385,0.2492,0.226,0.0914,0.2939,0.3309,0.334,0.313,0.2198,0.0609,0.0613,0.0597,0.0599,0.0596,0.06,0.0608,0.0605,0.0605,0.0606,0.0599,0.0598,0.0583 +6402s,0.0648,0.0653,0.062,0.0629,0.0636,0.0621,0.0626,0.0646,0.0638,0.0661,0.0634,0.0624,0.0599,0.2144,0.2956,0.2287,0.1975,0.0927,0.304,0.3623,0.3598,0.3338,0.2208,0.0663,0.0605,0.1787,0.2278,0.2308,0.1966,0.0938,0.3072,0.3422,0.3517,0.313,0.2129,0.0642,0.0585,0.2006,0.2401,0.2276,0.1889,0.0961,0.3032,0.3464,0.3536,0.3175,0.2137,0.0633,0.06,0.191,0.2193,0.2344,0.21,0.0919,0.3051,0.3477,0.3559,0.3134,0.2141,0.062,0.0617,0.1916,0.2408,0.2573,0.2357,0.0928,0.2996,0.3432,0.3403,0.3162,0.2116,0.0596,0.0586,0.2006,0.2437,0.259,0.2343,0.0916,0.2976,0.3319,0.3411,0.3201,0.22,0.061,0.0615,0.0598,0.0603,0.0597,0.0602,0.0609,0.0605,0.0607,0.0608,0.0599,0.06,0.0584 +7042s,0.0644,0.0725,0.062,0.0626,0.0634,0.062,0.0629,0.0646,0.0641,0.0663,0.0634,0.0626,0.0601,0.2148,0.2964,0.2294,0.198,0.0926,0.3064,0.3678,0.3629,0.3452,0.2209,0.0608,0.0611,0.1808,0.2306,0.2406,0.2049,0.0937,0.3099,0.3463,0.3558,0.3177,0.213,0.0644,0.0584,0.2003,0.2409,0.236,0.1974,0.0962,0.3057,0.3492,0.363,0.3245,0.2138,0.0634,0.0593,0.1928,0.2212,0.2429,0.2221,0.0919,0.3069,0.3503,0.3638,0.3179,0.2142,0.0621,0.0615,0.1921,0.2458,0.2687,0.2486,0.0929,0.3022,0.3442,0.3477,0.3211,0.2118,0.0597,0.0595,0.2033,0.2513,0.2708,0.2464,0.0914,0.2999,0.3333,0.3377,0.3206,0.2202,0.0612,0.0615,0.0598,0.0602,0.0598,0.0604,0.0609,0.0605,0.0607,0.061,0.0599,0.0601,0.0577 +7683s,0.0641,0.0651,0.0621,0.0629,0.0639,0.0622,0.0631,0.0648,0.0641,0.0663,0.0636,0.0627,0.0602,0.2158,0.299,0.2315,0.1992,0.0926,0.3084,0.3703,0.3751,0.3562,0.221,0.0695,0.0609,0.1839,0.2345,0.2531,0.2144,0.0939,0.3131,0.3495,0.3632,0.3282,0.2131,0.0643,0.0587,0.2022,0.2437,0.2468,0.2077,0.096,0.3079,0.3549,0.3655,0.3326,0.2139,0.0629,0.06,0.1958,0.2241,0.2525,0.234,0.092,0.3091,0.3563,0.3642,0.3239,0.2143,0.0624,0.0618,0.194,0.253,0.2812,0.264,0.0929,0.305,0.3497,0.3563,0.3284,0.2118,0.059,0.0595,0.2069,0.2594,0.2835,0.262,0.0915,0.303,0.3352,0.3467,0.3267,0.2203,0.0612,0.0616,0.0601,0.0604,0.0599,0.0606,0.0613,0.0606,0.0608,0.0608,0.0598,0.0602,0.0573 +8323s,0.0642,0.066,0.0623,0.0632,0.0643,0.0626,0.0633,0.0648,0.0642,0.0664,0.0636,0.0632,0.0601,0.217,0.3001,0.2325,0.2002,0.0926,0.3092,0.3826,0.3836,0.3687,0.2214,0.0676,0.061,0.1866,0.2378,0.2653,0.2271,0.0938,0.314,0.3578,0.3722,0.3404,0.2133,0.0643,0.0587,0.2045,0.2484,0.2591,0.2192,0.0962,0.3104,0.3586,0.3775,0.343,0.2141,0.0642,0.0595,0.1987,0.2297,0.2664,0.248,0.092,0.3116,0.3596,0.3799,0.3339,0.2145,0.0625,0.0617,0.198,0.2616,0.2964,0.2809,0.0929,0.3066,0.3542,0.3624,0.3389,0.2119,0.0603,0.0593,0.211,0.2699,0.2979,0.2782,0.0914,0.3045,0.3387,0.3523,0.3327,0.2205,0.0613,0.0617,0.0603,0.0604,0.0602,0.0607,0.0613,0.0609,0.061,0.0609,0.0599,0.0604,0.0574 +8963s,0.0645,0.0662,0.0625,0.0631,0.0641,0.0623,0.0636,0.0649,0.0642,0.0665,0.0639,0.0633,0.0601,0.2179,0.3024,0.2343,0.2014,0.0928,0.3081,0.3918,0.3935,0.3828,0.2215,0.0647,0.0605,0.1905,0.2424,0.28,0.241,0.094,0.3123,0.3653,0.3817,0.3507,0.2134,0.0645,0.0587,0.2086,0.2565,0.2735,0.2333,0.0963,0.3113,0.3692,0.389,0.3533,0.2144,0.0641,0.0597,0.2029,0.2369,0.2825,0.2654,0.092,0.3125,0.3695,0.3878,0.3454,0.2147,0.0624,0.062,0.2031,0.2725,0.3135,0.2988,0.093,0.308,0.3607,0.3694,0.3496,0.2122,0.0591,0.0599,0.2161,0.2805,0.3141,0.295,0.0914,0.3062,0.3427,0.3597,0.3436,0.2207,0.0614,0.0614,0.0605,0.0607,0.0603,0.061,0.0617,0.0609,0.0611,0.061,0.0601,0.0604,0.0572 +9603s,0.0643,0.0662,0.0626,0.0634,0.0644,0.0626,0.0638,0.0652,0.0642,0.0664,0.0638,0.0637,0.0602,0.2184,0.3032,0.2349,0.203,0.0925,0.3103,0.4032,0.4061,0.397,0.2215,0.0617,0.0638,0.194,0.2486,0.2953,0.2556,0.0937,0.3154,0.3751,0.3938,0.3626,0.2134,0.0644,0.0588,0.2138,0.2637,0.289,0.2463,0.0962,0.3124,0.3783,0.4018,0.3664,0.2143,0.0634,0.0583,0.2077,0.2444,0.2988,0.2826,0.0918,0.3133,0.3797,0.4004,0.3566,0.2145,0.0623,0.0621,0.2093,0.2854,0.3322,0.3181,0.0929,0.3108,0.3705,0.3822,0.3617,0.2121,0.0619,0.06,0.2219,0.2929,0.3323,0.3135,0.0913,0.3093,0.3491,0.3696,0.3549,0.2206,0.0613,0.061,0.0604,0.0609,0.0603,0.0611,0.0618,0.061,0.0611,0.0618,0.0599,0.0604,0.0574 +10243s,0.0641,0.0678,0.0628,0.0635,0.0647,0.0631,0.0639,0.0653,0.0645,0.0669,0.0639,0.0642,0.0604,0.2194,0.3046,0.2363,0.2033,0.0926,0.3189,0.4149,0.4203,0.4126,0.2217,0.0636,0.0611,0.1987,0.2548,0.3093,0.2699,0.0941,0.3231,0.3855,0.4072,0.3758,0.2137,0.0648,0.059,0.2196,0.2736,0.3055,0.2617,0.0963,0.3176,0.3879,0.4159,0.3804,0.2147,0.0647,0.0603,0.2139,0.255,0.3182,0.3013,0.092,0.3159,0.3898,0.4149,0.3699,0.215,0.0626,0.0624,0.2169,0.2989,0.3533,0.3381,0.093,0.313,0.3812,0.395,0.3752,0.2124,0.0595,0.0592,0.2297,0.3094,0.3526,0.3318,0.0915,0.3091,0.3578,0.3798,0.3682,0.2224,0.0615,0.0611,0.0606,0.0609,0.0606,0.0613,0.0618,0.061,0.0616,0.0612,0.0602,0.0606,0.0577 +10884s,0.064,0.0726,0.0632,0.064,0.0652,0.0633,0.0642,0.0655,0.0644,0.0673,0.064,0.0645,0.0605,0.22,0.3059,0.2377,0.2044,0.0927,0.3255,0.4272,0.4384,0.4296,0.222,0.0656,0.0609,0.2042,0.263,0.3224,0.2838,0.0941,0.3294,0.397,0.4226,0.3896,0.2139,0.0647,0.0592,0.2266,0.2837,0.3236,0.2773,0.0962,0.3219,0.3997,0.4314,0.3927,0.2147,0.0667,0.0608,0.2226,0.2662,0.3363,0.3199,0.0919,0.321,0.4017,0.4304,0.3826,0.215,0.0629,0.0623,0.225,0.3127,0.3741,0.3603,0.0932,0.3173,0.3908,0.4074,0.3881,0.2126,0.0602,0.0604,0.2374,0.3241,0.3736,0.3522,0.0914,0.3117,0.3678,0.3931,0.3784,0.221,0.0617,0.061,0.0609,0.0608,0.0607,0.0614,0.0591,0.0612,0.0615,0.0615,0.0604,0.0607,0.0574 +11527s,0.0646,0.067,0.0632,0.0642,0.0651,0.0633,0.0641,0.0655,0.0644,0.0672,0.0638,0.0644,0.0606,0.2209,0.3074,0.239,0.2056,0.0927,0.3338,0.4412,0.4551,0.4463,0.2219,0.0638,0.0613,0.2097,0.2727,0.335,0.2954,0.0939,0.3363,0.4079,0.4392,0.4064,0.214,0.0649,0.0593,0.2343,0.2965,0.3437,0.2949,0.0962,0.3271,0.412,0.4468,0.4097,0.2147,0.0635,0.0588,0.2302,0.2779,0.3572,0.3426,0.092,0.3261,0.4135,0.4471,0.3975,0.2151,0.0628,0.0626,0.2334,0.3288,0.3958,0.3845,0.0931,0.3215,0.4017,0.425,0.4032,0.2126,0.0603,0.0593,0.2455,0.3409,0.3956,0.3748,0.0913,0.317,0.378,0.4058,0.3924,0.2211,0.0617,0.061,0.0611,0.0611,0.0607,0.0614,0.0621,0.0613,0.0616,0.0669,0.0603,0.0607,0.0578 +12167s,0.0647,0.0672,0.0632,0.0638,0.065,0.0631,0.0647,0.0657,0.0643,0.0671,0.0635,0.0639,0.0607,0.2212,0.308,0.2398,0.2063,0.0926,0.3411,0.455,0.4721,0.466,0.2222,0.0667,0.0612,0.2161,0.2835,0.3466,0.3068,0.0938,0.3431,0.422,0.4568,0.4223,0.2141,0.0648,0.0594,0.2415,0.3098,0.3647,0.3136,0.0965,0.3326,0.4245,0.4643,0.4269,0.2149,0.0634,0.0589,0.2364,0.2914,0.3782,0.363,0.092,0.3302,0.4254,0.4633,0.4129,0.2151,0.0627,0.0627,0.2422,0.3459,0.42,0.4084,0.0931,0.3269,0.4147,0.4396,0.4188,0.2127,0.06,0.06,0.2545,0.359,0.4181,0.4007,0.0913,0.3202,0.3872,0.4198,0.4049,0.2212,0.062,0.0606,0.061,0.0607,0.0608,0.0614,0.0622,0.0614,0.0618,0.0659,0.0602,0.0607,0.0577 +12807s,0.0649,0.0674,0.0629,0.0643,0.0654,0.0635,0.0642,0.0662,0.0647,0.0671,0.0636,0.0641,0.0606,0.2219,0.3102,0.2416,0.2078,0.0928,0.3485,0.4704,0.4894,0.4872,0.2223,0.0677,0.0605,0.2236,0.2968,0.3581,0.317,0.0939,0.3501,0.4348,0.475,0.4427,0.2144,0.0647,0.0594,0.25,0.3242,0.3882,0.333,0.0962,0.339,0.4384,0.4825,0.4448,0.215,0.0653,0.0592,0.2442,0.3071,0.4019,0.3872,0.0918,0.3362,0.4395,0.4823,0.4305,0.2154,0.0628,0.0626,0.2524,0.3651,0.4448,0.4349,0.0933,0.3331,0.4273,0.4569,0.4364,0.2128,0.0594,0.0602,0.2647,0.3788,0.4432,0.4255,0.0914,0.3245,0.3987,0.4352,0.4217,0.2213,0.0621,0.0607,0.0612,0.061,0.061,0.0616,0.0623,0.0614,0.0617,0.0617,0.0604,0.0607,0.0571 +13447s,0.0648,0.0672,0.0638,0.0644,0.0655,0.0638,0.0644,0.066,0.0645,0.0674,0.0635,0.063,0.0608,0.2229,0.3111,0.2427,0.2089,0.0927,0.3565,0.4867,0.5093,0.5086,0.2223,0.0665,0.0614,0.2317,0.311,0.3676,0.3263,0.094,0.3588,0.4497,0.4939,0.4629,0.2143,0.0647,0.0595,0.26,0.3422,0.4117,0.3547,0.0963,0.346,0.4523,0.502,0.463,0.2153,0.0648,0.0607,0.2535,0.3246,0.4273,0.413,0.092,0.3429,0.4537,0.5019,0.4513,0.2155,0.063,0.0626,0.2643,0.3855,0.4717,0.4593,0.0933,0.3392,0.4401,0.4744,0.4546,0.213,0.0611,0.0604,0.2743,0.4006,0.4687,0.4499,0.0916,0.3292,0.4096,0.4506,0.4377,0.2214,0.0623,0.0606,0.0614,0.0609,0.061,0.0615,0.0622,0.0616,0.0617,0.0612,0.0605,0.0606,0.0571 +14088s,0.065,0.0675,0.0638,0.0646,0.0651,0.0634,0.0644,0.066,0.0646,0.0674,0.0636,0.0626,0.0613,0.2236,0.3125,0.2442,0.2102,0.0927,0.3651,0.5037,0.5321,0.5319,0.2227,0.0721,0.0615,0.2407,0.3224,0.3741,0.3337,0.094,0.3677,0.466,0.514,0.4856,0.2145,0.0648,0.0596,0.2697,0.3587,0.435,0.3758,0.0963,0.3538,0.4676,0.5225,0.483,0.2154,0.0647,0.0614,0.2634,0.3419,0.4559,0.4401,0.0921,0.3498,0.4702,0.5226,0.4716,0.2156,0.063,0.0632,0.277,0.4085,0.4989,0.4868,0.0935,0.3463,0.4555,0.4936,0.4764,0.2132,0.0591,0.0581,0.2849,0.4223,0.4941,0.4779,0.0914,0.3358,0.4218,0.4669,0.4579,0.2216,0.0625,0.0607,0.0613,0.0606,0.0612,0.0616,0.0625,0.0616,0.0618,0.0612,0.0606,0.0608,0.0586 +14728s,0.0653,0.0677,0.0635,0.0646,0.0654,0.064,0.0644,0.0661,0.0645,0.0674,0.0633,0.0624,0.0609,0.2243,0.3134,0.2456,0.2111,0.0928,0.3747,0.5219,0.5554,0.5582,0.2226,0.0645,0.0616,0.2504,0.3352,0.3795,0.3403,0.094,0.3762,0.4825,0.5363,0.5077,0.2146,0.0649,0.0596,0.2798,0.3757,0.4559,0.3987,0.0963,0.3612,0.4844,0.545,0.5045,0.2154,0.0654,0.0611,0.2729,0.3611,0.4824,0.465,0.092,0.3573,0.4862,0.5453,0.4922,0.2157,0.0632,0.0627,0.2897,0.4313,0.5289,0.5125,0.0936,0.3534,0.4704,0.5146,0.4983,0.2131,0.0601,0.0594,0.2968,0.4485,0.5221,0.5008,0.0914,0.3419,0.4349,0.4855,0.4771,0.2217,0.0625,0.0607,0.0616,0.0607,0.0613,0.0617,0.0626,0.0617,0.0617,0.0612,0.0607,0.0606,0.0574 +15368s,0.0653,0.0679,0.0637,0.0647,0.0656,0.064,0.0647,0.066,0.0649,0.0678,0.0634,0.0623,0.0613,0.2255,0.3147,0.2463,0.2118,0.0927,0.3852,0.5413,0.5801,0.5828,0.2228,0.0716,0.0616,0.2604,0.349,0.384,0.3453,0.0939,0.3879,0.5003,0.5608,0.5285,0.2147,0.065,0.0595,0.2903,0.3965,0.4774,0.4215,0.0964,0.3697,0.5022,0.5693,0.5269,0.2155,0.0646,0.0581,0.2842,0.3816,0.5117,0.4916,0.0921,0.3649,0.505,0.5702,0.5136,0.2159,0.063,0.063,0.3044,0.4566,0.5571,0.5424,0.0938,0.3607,0.4872,0.5373,0.52,0.2134,0.0597,0.0615,0.309,0.4738,0.5497,0.5273,0.0913,0.3489,0.4483,0.5062,0.499,0.2218,0.0625,0.0607,0.0615,0.0608,0.0612,0.0617,0.0625,0.0618,0.0619,0.0611,0.0605,0.0606,0.0584 +16008s,0.065,0.0678,0.0637,0.0648,0.0656,0.064,0.0645,0.0663,0.0648,0.0679,0.0634,0.0624,0.0613,0.2265,0.3152,0.2472,0.2129,0.0929,0.3954,0.5624,0.6067,0.608,0.2229,0.0815,0.0688,0.271,0.3602,0.3883,0.3503,0.094,0.3984,0.5191,0.5861,0.553,0.2149,0.0653,0.0595,0.3021,0.418,0.4944,0.4447,0.0963,0.3793,0.5219,0.5947,0.5516,0.2157,0.0676,0.0583,0.2965,0.4028,0.5401,0.5197,0.0921,0.3722,0.5232,0.5949,0.538,0.2159,0.0635,0.063,0.3194,0.4841,0.5865,0.5702,0.0941,0.3684,0.5046,0.5603,0.5448,0.2134,0.0597,0.0611,0.3218,0.5007,0.5759,0.5544,0.0915,0.3556,0.4644,0.526,0.5186,0.222,0.0623,0.0605,0.0616,0.0605,0.0613,0.0618,0.0625,0.062,0.0619,0.0613,0.0602,0.0604,0.0573 +16648s,0.0652,0.0679,0.0639,0.0649,0.0656,0.064,0.0647,0.0663,0.0656,0.0678,0.0629,0.0623,0.0615,0.2273,0.3161,0.2477,0.2136,0.0928,0.4074,0.5834,0.6335,0.6326,0.223,0.0697,0.0622,0.2812,0.3701,0.3914,0.3549,0.0939,0.4094,0.5386,0.6126,0.5759,0.2149,0.0651,0.0597,0.315,0.4398,0.5087,0.4685,0.0962,0.3884,0.5406,0.6196,0.5732,0.2157,0.0654,0.0587,0.3098,0.4258,0.569,0.5508,0.092,0.3817,0.5433,0.621,0.5603,0.2159,0.0633,0.0631,0.335,0.5122,0.6176,0.6015,0.0942,0.3776,0.5241,0.5862,0.5677,0.2135,0.0626,0.059,0.3353,0.5264,0.6041,0.5835,0.0911,0.3623,0.4801,0.5486,0.5437,0.2243,0.0624,0.0607,0.0613,0.0605,0.0611,0.0618,0.0626,0.0621,0.0618,0.0611,0.06,0.0603,0.057 +17289s,0.0648,0.068,0.064,0.0648,0.0653,0.0638,0.0647,0.0667,0.0649,0.0679,0.063,0.0624,0.0614,0.2289,0.3173,0.2495,0.2147,0.0928,0.4183,0.6063,0.6581,0.6616,0.2231,0.0682,0.0605,0.2925,0.3806,0.3955,0.3587,0.094,0.4211,0.5593,0.6392,0.6037,0.2151,0.0651,0.0596,0.3292,0.4638,0.5221,0.4905,0.0964,0.3983,0.5619,0.6479,0.5999,0.2159,0.0687,0.0594,0.3245,0.4521,0.601,0.5809,0.0921,0.3907,0.5647,0.6494,0.5876,0.2163,0.0635,0.0629,0.3529,0.5418,0.647,0.6353,0.0944,0.3849,0.5434,0.6119,0.5927,0.2137,0.0639,0.0594,0.351,0.5558,0.6331,0.6131,0.0914,0.3695,0.4972,0.5715,0.5664,0.2221,0.062,0.0609,0.0614,0.0608,0.0612,0.0621,0.0627,0.0614,0.062,0.0612,0.0601,0.0605,0.0575 +17929s,0.0652,0.0679,0.0634,0.0648,0.066,0.0637,0.0647,0.0668,0.0652,0.0682,0.0629,0.0625,0.0615,0.2299,0.3184,0.2505,0.2157,0.0929,0.431,0.6301,0.6892,0.6922,0.2233,0.0735,0.0618,0.3024,0.3883,0.3981,0.3614,0.0941,0.4334,0.5801,0.6689,0.6295,0.2152,0.0653,0.0598,0.3429,0.4884,0.5357,0.5079,0.0964,0.4084,0.5844,0.6746,0.6266,0.216,0.0685,0.0613,0.3388,0.478,0.6326,0.6143,0.0922,0.3995,0.5868,0.6765,0.6145,0.2164,0.0634,0.0632,0.3715,0.5706,0.6775,0.6692,0.0949,0.3954,0.5633,0.6363,0.6197,0.2139,0.06,0.0614,0.3665,0.5854,0.6622,0.6448,0.0915,0.3776,0.514,0.5947,0.593,0.2222,0.0621,0.0608,0.0611,0.0607,0.0612,0.062,0.0627,0.0614,0.0616,0.0612,0.0599,0.0604,0.0568 +18569s,0.0649,0.07,0.0637,0.0647,0.0657,0.0633,0.0648,0.0665,0.0649,0.0677,0.0625,0.0624,0.0614,0.2309,0.3192,0.2512,0.2167,0.0927,0.4433,0.655,0.7205,0.7223,0.2232,0.0673,0.0604,0.312,0.3954,0.4005,0.3644,0.094,0.446,0.6043,0.6984,0.6598,0.2153,0.0652,0.0596,0.3572,0.5109,0.5439,0.5218,0.0963,0.42,0.6065,0.7044,0.6539,0.2161,0.0672,0.0591,0.3544,0.5041,0.6652,0.6438,0.0921,0.4092,0.6093,0.7052,0.6406,0.2163,0.0635,0.0631,0.3904,0.602,0.71,0.7018,0.095,0.405,0.5844,0.6656,0.6496,0.214,0.06,0.0599,0.3831,0.6162,0.6913,0.6778,0.0914,0.3854,0.5332,0.6216,0.6165,0.2223,0.062,0.0609,0.0611,0.0608,0.0611,0.062,0.0625,0.0614,0.0615,0.0612,0.0597,0.0601,0.0575 +19209s,0.0652,0.0753,0.0635,0.0646,0.0658,0.0629,0.0646,0.066,0.0648,0.0678,0.0627,0.0622,0.0616,0.2324,0.3201,0.252,0.2177,0.0929,0.4576,0.681,0.7518,0.7562,0.2235,0.065,0.0611,0.3235,0.4017,0.4027,0.367,0.094,0.4606,0.6278,0.7299,0.6907,0.2153,0.0654,0.0599,0.3735,0.5336,0.552,0.5352,0.0963,0.4305,0.6308,0.7344,0.6825,0.2162,0.0712,0.0604,0.3724,0.5328,0.695,0.6735,0.0921,0.4197,0.6341,0.7366,0.6694,0.2166,0.0638,0.0632,0.4107,0.633,0.7431,0.7382,0.0955,0.4161,0.6082,0.6951,0.6789,0.2141,0.0598,0.0605,0.401,0.6475,0.7222,0.7083,0.0913,0.3945,0.5518,0.6458,0.6425,0.2225,0.0625,0.0608,0.061,0.0607,0.0611,0.0621,0.0623,0.0614,0.0614,0.0613,0.0596,0.0597,0.0576 +19850s,0.0649,0.074,0.0638,0.0648,0.0657,0.0629,0.0644,0.0658,0.0644,0.0675,0.0624,0.062,0.0615,0.2334,0.3211,0.2532,0.2186,0.0928,0.4723,0.708,0.7827,0.7883,0.2235,0.0641,0.0619,0.3312,0.4069,0.4043,0.3705,0.0942,0.4744,0.6531,0.7611,0.7181,0.2156,0.0654,0.06,0.3894,0.5506,0.5573,0.5457,0.0963,0.443,0.655,0.7671,0.7132,0.2163,0.0725,0.0585,0.3897,0.562,0.7207,0.7027,0.0921,0.4308,0.6596,0.7686,0.6962,0.2166,0.0636,0.0634,0.4325,0.6643,0.7755,0.7737,0.096,0.4276,0.6319,0.7256,0.7075,0.2142,0.0594,0.0601,0.4187,0.6784,0.7542,0.744,0.0916,0.4038,0.5717,0.6731,0.6715,0.2226,0.062,0.0607,0.0606,0.0606,0.0611,0.062,0.0624,0.0613,0.0611,0.0613,0.0596,0.0597,0.0574 +20490s,0.0652,0.0678,0.0637,0.0648,0.0654,0.0629,0.064,0.0656,0.0642,0.0674,0.0621,0.0622,0.0614,0.2344,0.3217,0.2539,0.2193,0.0927,0.4883,0.7361,0.8186,0.8228,0.2235,0.0635,0.062,0.3384,0.411,0.4068,0.3719,0.094,0.4884,0.6789,0.7932,0.7518,0.2157,0.0655,0.0599,0.4072,0.5684,0.5625,0.5542,0.0963,0.456,0.6805,0.7987,0.7434,0.2164,0.0717,0.0586,0.409,0.5916,0.7453,0.7307,0.092,0.4422,0.6862,0.7979,0.7273,0.2167,0.0636,0.0633,0.4533,0.6976,0.8095,0.8108,0.0962,0.4389,0.6564,0.7561,0.739,0.2142,0.0611,0.0592,0.438,0.7105,0.7845,0.7762,0.0916,0.4157,0.5936,0.6997,0.6992,0.2227,0.0624,0.0609,0.0604,0.0604,0.061,0.0617,0.0623,0.0611,0.0611,0.0611,0.0595,0.0597,0.0588 +21130s,0.0651,0.0727,0.0637,0.0647,0.0654,0.063,0.064,0.0656,0.0643,0.0677,0.0618,0.0624,0.0617,0.2356,0.3229,0.2552,0.2205,0.0928,0.5047,0.7656,0.8502,0.8543,0.2237,0.0764,0.0614,0.3456,0.4153,0.4088,0.3738,0.0941,0.504,0.7071,0.8253,0.7841,0.2157,0.0655,0.06,0.4252,0.5826,0.5646,0.5619,0.0963,0.4691,0.7087,0.8327,0.7764,0.2165,0.0678,0.0586,0.4289,0.62,0.7663,0.7547,0.0922,0.4559,0.7135,0.8329,0.7561,0.2168,0.0641,0.0635,0.4749,0.7316,0.8449,0.8474,0.0967,0.4514,0.6839,0.7874,0.7723,0.2144,0.0605,0.0614,0.4578,0.7446,0.8168,0.8104,0.0914,0.4258,0.6176,0.7294,0.7291,0.2228,0.0623,0.0609,0.0604,0.0603,0.0608,0.0614,0.0621,0.061,0.0609,0.061,0.0595,0.0598,0.0572 +21770s,0.0654,0.0733,0.0633,0.0647,0.0659,0.0632,0.0636,0.0655,0.0642,0.0678,0.0615,0.0623,0.0613,0.2364,0.3234,0.2557,0.2215,0.0927,0.5207,0.7943,0.8836,0.8884,0.2237,0.0618,0.062,0.3526,0.4188,0.4099,0.3757,0.094,0.5216,0.7332,0.861,0.8168,0.2158,0.0656,0.0601,0.443,0.5934,0.5682,0.568,0.0963,0.4824,0.7375,0.8659,0.8098,0.2167,0.0762,0.0609,0.4501,0.6504,0.783,0.7699,0.0922,0.4679,0.7409,0.8653,0.7894,0.2169,0.0638,0.0636,0.4967,0.7644,0.8803,0.882,0.0975,0.4631,0.7088,0.8186,0.8032,0.2144,0.059,0.0597,0.4769,0.7759,0.8492,0.8458,0.0915,0.4375,0.6402,0.7601,0.7622,0.2228,0.0622,0.0608,0.0601,0.0601,0.0605,0.0612,0.0617,0.0611,0.0605,0.0608,0.0596,0.0597,0.0575 +22410s,0.0651,0.0709,0.0633,0.0645,0.0651,0.063,0.0635,0.0654,0.064,0.0678,0.0629,0.0624,0.0616,0.2375,0.3239,0.2565,0.222,0.0929,0.5386,0.825,0.9179,0.922,0.2239,0.0711,0.0622,0.3582,0.4208,0.4118,0.3766,0.0943,0.5381,0.7628,0.8935,0.851,0.216,0.0657,0.0602,0.4612,0.6017,0.5709,0.5738,0.0964,0.4984,0.7655,0.8981,0.8415,0.2169,0.0692,0.0584,0.4716,0.6816,0.7938,0.7843,0.0922,0.4813,0.7684,0.8988,0.8204,0.2169,0.0643,0.0637,0.5174,0.7986,0.9157,0.9148,0.0981,0.4766,0.7381,0.8513,0.8354,0.2146,0.061,0.0594,0.4979,0.8096,0.8815,0.8801,0.0915,0.4493,0.6637,0.7913,0.7949,0.2229,0.0622,0.0607,0.06,0.0601,0.0605,0.0611,0.0615,0.0609,0.0604,0.0619,0.0596,0.0594,0.0575 +23051s,0.0653,0.0677,0.0631,0.0643,0.065,0.0632,0.0637,0.0656,0.0641,0.0675,0.0634,0.0625,0.0615,0.2381,0.3242,0.2571,0.2226,0.0927,0.5575,0.8565,0.9528,0.9536,0.224,0.0719,0.0625,0.364,0.423,0.4126,0.3784,0.094,0.5559,0.7921,0.9282,0.8862,0.2159,0.0658,0.06,0.4783,0.6092,0.573,0.5795,0.0963,0.5135,0.7945,0.9332,0.8769,0.2168,0.0736,0.059,0.4927,0.7103,0.8047,0.7949,0.0921,0.4958,0.8006,0.9319,0.8534,0.2171,0.0642,0.0636,0.5394,0.8319,0.9515,0.9424,0.0987,0.4902,0.7675,0.8842,0.8699,0.2148,0.0661,0.0602,0.5171,0.8442,0.9154,0.914,0.0915,0.4611,0.6897,0.8213,0.8209,0.2229,0.0621,0.0608,0.0602,0.0601,0.0605,0.0609,0.0616,0.0609,0.0603,0.0607,0.0596,0.0596,0.0574 +23691s,0.0648,0.0676,0.0628,0.0641,0.0647,0.063,0.0638,0.0657,0.0639,0.0672,0.0636,0.0623,0.0616,0.239,0.3251,0.2579,0.2238,0.0927,0.576,0.8876,0.9873,0.9874,0.2239,0.0668,0.0627,0.3685,0.4256,0.4147,0.3797,0.0939,0.5738,0.8215,0.9612,0.9195,0.216,0.0656,0.06,0.4945,0.6154,0.5752,0.5843,0.0964,0.5299,0.8253,0.9654,0.9094,0.2168,0.0704,0.0586,0.5159,0.7373,0.813,0.8056,0.0919,0.5113,0.8304,0.9654,0.8838,0.2172,0.064,0.0637,0.5609,0.8661,0.9866,0.9706,0.0997,0.5052,0.796,0.9166,0.9027,0.2147,0.0663,0.0608,0.5375,0.8775,0.9473,0.9491,0.0916,0.4735,0.7154,0.8516,0.8528,0.2231,0.0629,0.0609,0.0602,0.0599,0.0601,0.0608,0.0615,0.0605,0.0603,0.0611,0.0596,0.0595,0.0575 +24331s,0.0651,0.068,0.0629,0.0641,0.0647,0.0633,0.0638,0.0654,0.0638,0.0675,0.0634,0.0625,0.0615,0.2404,0.3259,0.259,0.2245,0.0928,0.5955,0.9191,1.0218,1.0187,0.2242,0.0578,0.0605,0.3726,0.4293,0.4165,0.3817,0.094,0.5943,0.853,0.9955,0.954,0.2163,0.0658,0.0601,0.5099,0.6202,0.576,0.588,0.0962,0.5455,0.8576,0.9983,0.9424,0.2171,0.0651,0.061,0.5353,0.7648,0.8192,0.8135,0.0921,0.5263,0.8625,0.9989,0.9208,0.2174,0.064,0.064,0.5805,0.899,1.0165,0.9958,0.101,0.5214,0.8277,0.9497,0.9411,0.2148,0.0609,0.0585,0.557,0.9114,0.9814,0.9836,0.0916,0.4881,0.7419,0.8812,0.8882,0.2232,0.0621,0.0608,0.0602,0.0599,0.0601,0.0607,0.0616,0.0606,0.0605,0.0606,0.0596,0.0597,0.0574 +24971s,0.0652,0.0715,0.0627,0.0641,0.0644,0.0632,0.0633,0.0654,0.0638,0.0672,0.0638,0.0622,0.0614,0.2411,0.3264,0.2596,0.2251,0.0928,0.6165,0.9512,1.0528,1.0489,0.2243,0.0581,0.0623,0.3759,0.4301,0.418,0.3827,0.0941,0.6135,0.884,1.0279,0.9861,0.2163,0.0658,0.0603,0.522,0.6243,0.5779,0.5913,0.0963,0.5641,0.8875,1.0311,0.9763,0.2172,0.0698,0.0613,0.5581,0.7868,0.8255,0.8207,0.0922,0.5428,0.8942,1.0295,0.954,0.2175,0.0642,0.0639,0.6008,0.9319,1.0455,1.0195,0.1023,0.5355,0.8585,0.983,0.9751,0.2149,0.0606,0.0606,0.5769,0.9442,1.0133,1.0169,0.0917,0.5013,0.771,0.9124,0.9145,0.2233,0.0621,0.061,0.0599,0.0601,0.0599,0.0607,0.0613,0.0606,0.0606,0.0606,0.0598,0.0598,0.0576 +25612s,0.0651,0.0678,0.0624,0.0638,0.0642,0.0631,0.0633,0.0652,0.0639,0.067,0.0633,0.0622,0.0611,0.2421,0.3269,0.2603,0.2256,0.0929,0.6376,0.9836,1.0848,1.0764,0.2245,0.0611,0.0615,0.3792,0.4336,0.4198,0.3848,0.094,0.6357,0.9161,1.0609,1.0181,0.2164,0.0662,0.0601,0.5339,0.6273,0.5813,0.5949,0.0962,0.5835,0.92,1.0623,1.0096,0.2172,0.0681,0.0608,0.5804,0.8052,0.8292,0.8275,0.0922,0.5593,0.926,1.0613,0.9876,0.2175,0.0643,0.0639,0.6222,0.9653,1.071,1.0373,0.1037,0.5543,0.8888,1.0138,1.0071,0.2152,0.0608,0.0583,0.5958,0.9773,1.0444,1.0519,0.0916,0.5164,0.7988,0.9416,0.9483,0.2234,0.062,0.0607,0.0601,0.0602,0.0599,0.0606,0.0612,0.0607,0.0605,0.0605,0.0597,0.0598,0.0574 +26252s,0.0658,0.0729,0.0627,0.0641,0.0646,0.0634,0.0635,0.0657,0.064,0.0675,0.0634,0.0626,0.0613,0.2432,0.328,0.2612,0.2266,0.0929,0.66,1.0143,1.1134,1.1002,0.2246,0.0597,0.0608,0.3816,0.4358,0.4207,0.3861,0.0943,0.6557,0.9499,1.0937,1.0503,0.2166,0.0664,0.0603,0.5455,0.6307,0.5818,0.5972,0.0964,0.6019,0.9525,1.0941,1.0403,0.2174,0.0695,0.0589,0.603,0.8213,0.8335,0.8337,0.0923,0.5783,0.9576,1.0941,1.02,0.2177,0.0643,0.064,0.6427,0.9964,1.0923,1.0548,0.1054,0.5716,0.9194,1.0461,1.0376,0.2153,0.0662,0.0594,0.6142,1.0109,1.0773,1.0861,0.0917,0.5331,0.8255,0.9737,0.9845,0.2236,0.062,0.061,0.0602,0.0601,0.0601,0.0607,0.0612,0.0608,0.0608,0.0627,0.0599,0.0597,0.0581 +26892s,0.0651,0.0677,0.0627,0.0639,0.0642,0.0631,0.0635,0.0657,0.0639,0.0673,0.0636,0.0625,0.0611,0.244,0.3285,0.2619,0.2275,0.093,0.6816,1.0462,1.1418,1.1238,0.2246,0.0595,0.0614,0.3832,0.4367,0.4222,0.3866,0.0942,0.6782,0.9804,1.1229,1.0807,0.2166,0.0666,0.0601,0.555,0.6321,0.5828,0.5992,0.0964,0.6214,0.9841,1.1248,1.0735,0.2174,0.0711,0.0591,0.6225,0.8332,0.8347,0.8384,0.0922,0.5969,0.9901,1.1243,1.0531,0.2178,0.0646,0.0639,0.6638,1.0275,1.1082,1.0677,0.1073,0.5892,0.9516,1.0751,1.0705,0.2154,0.0584,0.059,0.6326,1.0419,1.1089,1.1172,0.0917,0.5475,0.8568,1.0054,1.0142,0.2235,0.0617,0.0608,0.0601,0.0601,0.06,0.0606,0.061,0.0606,0.0608,0.0612,0.0599,0.0597,0.058 +27532s,0.065,0.0678,0.0628,0.0638,0.0643,0.063,0.0637,0.0658,0.0638,0.067,0.0634,0.0626,0.0612,0.2451,0.3297,0.2631,0.2284,0.093,0.7054,1.0771,1.1678,1.1453,0.2249,0.0587,0.0629,0.3842,0.4374,0.4229,0.3871,0.0943,0.6998,1.0132,1.1508,1.1086,0.2167,0.0664,0.0604,0.563,0.6346,0.5843,0.6019,0.0964,0.642,1.0143,1.1527,1.1015,0.2175,0.0724,0.0591,0.643,0.842,0.8385,0.843,0.0921,0.6154,1.0209,1.1558,1.0856,0.2179,0.0643,0.0641,0.6835,1.0572,1.1225,1.0796,0.11,0.6091,0.9832,1.1067,1.1047,0.2156,0.0599,0.0607,0.652,1.0729,1.1407,1.1471,0.0917,0.5631,0.887,1.0352,1.0414,0.2237,0.0617,0.0609,0.0602,0.0603,0.06,0.0607,0.0612,0.0607,0.0608,0.0611,0.0601,0.0597,0.0579 +28172s,0.0652,0.068,0.0626,0.0637,0.0643,0.0634,0.0634,0.0657,0.0636,0.0671,0.0633,0.0622,0.0611,0.246,0.3295,0.2631,0.2286,0.093,0.729,1.1082,1.1916,1.1675,0.225,0.0579,0.0627,0.3856,0.439,0.4233,0.3874,0.094,0.7236,1.0433,1.1764,1.1328,0.2167,0.0658,0.0603,0.5703,0.6365,0.5855,0.6039,0.0963,0.6635,1.0462,1.1804,1.1296,0.2177,0.077,0.0584,0.661,0.8502,0.8413,0.8461,0.0921,0.6364,1.0506,1.1847,1.1169,0.2179,0.0643,0.064,0.7016,1.0867,1.1334,1.0901,0.1135,0.6298,1.0156,1.1359,1.1349,0.2157,0.0591,0.0587,0.6704,1.1029,1.1692,1.18,0.0916,0.5802,0.9176,1.0648,1.073,0.2236,0.0619,0.0606,0.0601,0.0601,0.06,0.0607,0.0611,0.0605,0.0607,0.0607,0.0599,0.0596,0.0575 +28813s,0.065,0.0678,0.0625,0.0636,0.0642,0.0631,0.0637,0.0657,0.0637,0.067,0.0635,0.0623,0.0611,0.247,0.3303,0.2637,0.2291,0.093,0.7524,1.1362,1.2128,1.1859,0.225,0.0583,0.0616,0.3866,0.4408,0.4249,0.3877,0.0941,0.7472,1.0741,1.201,1.1543,0.2169,0.0655,0.0604,0.578,0.6382,0.5879,0.6046,0.0964,0.6833,1.0776,1.2066,1.1523,0.2178,0.0666,0.0611,0.6787,0.8562,0.8432,0.8498,0.0923,0.6556,1.083,1.2111,1.1457,0.2179,0.0646,0.0641,0.7202,1.114,1.1409,1.0979,0.1181,0.6513,1.0452,1.1653,1.1662,0.216,0.0601,0.0609,0.6896,1.1328,1.1978,1.2083,0.0917,0.597,0.9496,1.0937,1.1015,0.2239,0.062,0.0608,0.0602,0.0603,0.0599,0.0608,0.0612,0.0606,0.0609,0.0605,0.0601,0.06,0.0579 +29453s,0.0648,0.074,0.0625,0.0638,0.0643,0.0632,0.0635,0.0656,0.0636,0.067,0.0635,0.0625,0.061,0.2479,0.3307,0.2646,0.2298,0.093,0.7762,1.1653,1.2307,1.2026,0.2251,0.0601,0.0628,0.3892,0.4425,0.4252,0.3885,0.0941,0.7712,1.105,1.2251,1.1747,0.2169,0.0649,0.0601,0.5826,0.6392,0.5889,0.6064,0.0963,0.707,1.1088,1.2311,1.1764,0.2177,0.0693,0.06,0.6966,0.8614,0.8446,0.8531,0.0921,0.677,1.1146,1.2371,1.174,0.218,0.0645,0.0641,0.7373,1.1402,1.1482,1.1048,0.1247,0.6719,1.077,1.1939,1.1939,0.2161,0.0587,0.0581,0.7073,1.1604,1.2276,1.2342,0.0918,0.6166,0.9799,1.1224,1.1305,0.2239,0.062,0.0608,0.0603,0.0605,0.0598,0.0608,0.0613,0.0607,0.0609,0.0659,0.0599,0.0599,0.0575 +30093s,0.0646,0.0674,0.0625,0.0635,0.0643,0.0631,0.0634,0.0656,0.0635,0.0671,0.0635,0.0626,0.0609,0.2486,0.3311,0.265,0.23,0.0928,0.7999,1.1924,1.2466,1.2176,0.2251,0.0602,0.0619,0.3909,0.4441,0.4256,0.3885,0.0941,0.793,1.1347,1.2465,1.1933,0.2171,0.0647,0.0604,0.5869,0.6397,0.5896,0.6077,0.0964,0.7301,1.1379,1.2538,1.1956,0.2179,0.0714,0.0583,0.7109,0.8655,0.8466,0.8554,0.0922,0.6989,1.1442,1.2625,1.1991,0.2181,0.0647,0.064,0.7533,1.1635,1.1533,1.1112,0.1337,0.6932,1.1062,1.2204,1.2213,0.2163,0.0596,0.0595,0.7247,1.1878,1.2535,1.2622,0.0916,0.6351,1.0116,1.1484,1.1579,0.224,0.0622,0.0607,0.0603,0.0606,0.0599,0.0607,0.0614,0.0607,0.0607,0.0611,0.06,0.06,0.0573 +30733s,0.0649,0.0677,0.0626,0.0638,0.0643,0.0633,0.0635,0.0657,0.0636,0.0669,0.0633,0.0626,0.061,0.2498,0.332,0.2659,0.2309,0.0931,0.8243,1.2194,1.26,1.23,0.2253,0.0585,0.0615,0.3926,0.4446,0.4257,0.3894,0.0941,0.8164,1.1628,1.2651,1.211,0.2171,0.0646,0.0605,0.59,0.6408,0.5898,0.6092,0.0964,0.7526,1.1656,1.2751,1.2145,0.218,0.0696,0.0591,0.7247,0.8682,0.8467,0.8577,0.0923,0.7198,1.173,1.2845,1.2198,0.2182,0.0644,0.0641,0.7689,1.1828,1.1576,1.1167,0.1442,0.7171,1.1364,1.2476,1.2482,0.2166,0.0597,0.0585,0.7398,1.2146,1.2807,1.2875,0.0917,0.656,1.0413,1.1736,1.1838,0.2242,0.062,0.0609,0.0604,0.0606,0.0599,0.0608,0.0615,0.0608,0.0609,0.0615,0.06,0.0602,0.058 +31373s,0.065,0.0682,0.0627,0.0637,0.0644,0.0634,0.0634,0.0658,0.0639,0.0669,0.0634,0.0624,0.0609,0.2507,0.3328,0.2668,0.2316,0.0931,0.8487,1.2441,1.2708,1.2393,0.2254,0.0598,0.0629,0.3934,0.4454,0.4259,0.3897,0.094,0.8412,1.19,1.2806,1.2264,0.2172,0.0647,0.0605,0.5931,0.6417,0.5903,0.609,0.0963,0.7759,1.1937,1.2939,1.2312,0.2181,0.0775,0.0587,0.7384,0.8712,0.8478,0.8592,0.0921,0.7428,1.2016,1.3057,1.24,0.2183,0.0644,0.0641,0.7839,1.1983,1.161,1.1204,0.157,0.7385,1.1662,1.2729,1.2718,0.2168,0.0591,0.0587,0.7552,1.2396,1.3063,1.3105,0.0915,0.6768,1.0718,1.1998,1.2077,0.2239,0.0623,0.0609,0.0605,0.0605,0.06,0.0608,0.0614,0.061,0.0606,0.0607,0.0598,0.0602,0.0589 +32014s,0.0649,0.0695,0.0625,0.0636,0.0642,0.0631,0.0634,0.0656,0.0638,0.0669,0.0635,0.0624,0.0606,0.2513,0.3329,0.2671,0.232,0.0929,0.874,1.2685,1.2805,1.2474,0.2254,0.0584,0.0629,0.3945,0.4455,0.4262,0.3901,0.0941,0.8658,1.217,1.2944,1.24,0.2173,0.0646,0.0603,0.5949,0.6428,0.591,0.6104,0.0963,0.8001,1.2203,1.3093,1.2475,0.2181,0.0724,0.0585,0.7496,0.8728,0.8491,0.861,0.0921,0.7674,1.2282,1.3266,1.2584,0.2183,0.0648,0.0642,0.7986,1.2093,1.1633,1.1245,0.1681,0.7609,1.1947,1.2964,1.2928,0.217,0.0594,0.0587,0.7692,1.2626,1.3278,1.3309,0.0917,0.6958,1.1032,1.2249,1.2338,0.2242,0.0621,0.0606,0.0603,0.0606,0.0598,0.0606,0.0614,0.0608,0.0605,0.0614,0.0597,0.06,0.0571 +32654s,0.0651,0.0674,0.0628,0.0638,0.0645,0.0633,0.0635,0.0656,0.0634,0.0669,0.0634,0.0625,0.061,0.252,0.333,0.2675,0.2323,0.0929,0.8963,1.2913,1.2887,1.255,0.2255,0.0581,0.063,0.3948,0.4458,0.4258,0.3904,0.0941,0.8898,1.2436,1.3057,1.2522,0.2172,0.0653,0.0604,0.5975,0.644,0.5918,0.612,0.0965,0.8238,1.2461,1.3238,1.2609,0.2184,0.0772,0.0603,0.7608,0.8749,0.8503,0.8626,0.0922,0.7896,1.2543,1.3463,1.2786,0.2185,0.0644,0.0639,0.8124,1.2188,1.1653,1.1277,0.1773,0.7836,1.2226,1.3179,1.3132,0.2171,0.0604,0.058,0.7828,1.286,1.3496,1.3488,0.0916,0.7162,1.1318,1.2501,1.2586,0.2243,0.0621,0.0605,0.0603,0.0604,0.0599,0.0607,0.0617,0.0609,0.0608,0.0609,0.0597,0.0601,0.0574 +33294s,0.065,0.0701,0.0627,0.0637,0.0642,0.0632,0.0632,0.0655,0.0636,0.0668,0.0634,0.0622,0.0608,0.2526,0.3336,0.2684,0.2326,0.0929,0.92,1.311,1.2962,1.2623,0.2256,0.0592,0.0625,0.3956,0.4477,0.427,0.391,0.0941,0.9142,1.266,1.3162,1.2622,0.2174,0.0648,0.0604,0.5988,0.645,0.5922,0.6128,0.0963,0.847,1.2709,1.3355,1.2732,0.2183,0.0646,0.0596,0.7706,0.8766,0.8506,0.8645,0.0921,0.8126,1.2796,1.3629,1.2931,0.2186,0.0638,0.0639,0.8255,1.2261,1.1687,1.1313,0.1863,0.806,1.25,1.3408,1.3325,0.2174,0.0589,0.0608,0.7958,1.3074,1.37,1.3656,0.0917,0.7372,1.1618,1.2722,1.2822,0.2242,0.0624,0.0608,0.0603,0.0606,0.0598,0.0606,0.0616,0.0607,0.0604,0.0606,0.0595,0.0601,0.058 +33934s,0.065,0.067,0.0626,0.0634,0.0641,0.0632,0.063,0.0656,0.0636,0.0667,0.0635,0.0623,0.0607,0.2531,0.3334,0.2685,0.2328,0.093,0.945,1.3301,1.302,1.2671,0.2258,0.0607,0.0624,0.3954,0.4477,0.4276,0.3918,0.0941,0.9364,1.2895,1.3241,1.2698,0.2175,0.0649,0.0605,0.5998,0.6449,0.5916,0.6137,0.0964,0.8701,1.294,1.3453,1.2838,0.2184,0.0614,0.0586,0.7825,0.8778,0.8519,0.866,0.0922,0.8362,1.3042,1.3767,1.3085,0.2187,0.064,0.0639,0.8362,1.2316,1.1691,1.1342,0.1949,0.8301,1.276,1.3595,1.3484,0.2179,0.06,0.0588,0.8084,1.3291,1.3869,1.3809,0.0918,0.7575,1.1895,1.2954,1.3042,0.2244,0.0635,0.0607,0.0604,0.0603,0.0598,0.0606,0.0615,0.0607,0.0605,0.0619,0.0594,0.0599,0.0573 +34575s,0.0648,0.0725,0.0627,0.0635,0.0642,0.063,0.0631,0.0656,0.0636,0.0669,0.0634,0.0623,0.0607,0.254,0.3343,0.269,0.2332,0.0931,0.9658,1.3463,1.3062,1.2726,0.2258,0.0582,0.0629,0.3966,0.4484,0.4273,0.3922,0.0941,0.9598,1.3107,1.331,1.277,0.2175,0.0649,0.0601,0.6021,0.6457,0.5925,0.6135,0.0964,0.8946,1.3161,1.3536,1.2934,0.2185,0.0662,0.0588,0.791,0.8791,0.8517,0.8667,0.0922,0.86,1.3266,1.3887,1.3226,0.2187,0.0636,0.0637,0.8495,1.2363,1.1704,1.1357,0.2031,0.8544,1.3014,1.3793,1.3644,0.2183,0.0591,0.0578,0.8199,1.3486,1.4027,1.3937,0.0917,0.778,1.2164,1.3165,1.3264,0.2245,0.0623,0.0609,0.0603,0.0604,0.0596,0.0606,0.0614,0.0606,0.0605,0.0603,0.0592,0.0598,0.0574 +35215s,0.0651,0.0672,0.0629,0.0637,0.0644,0.0633,0.0632,0.0658,0.064,0.0671,0.0635,0.0625,0.0609,0.255,0.3348,0.2697,0.2339,0.0931,0.9864,1.3597,1.3106,1.2763,0.2261,0.0594,0.0624,0.3975,0.4492,0.4283,0.3931,0.0942,0.9825,1.3307,1.3371,1.2832,0.2177,0.0649,0.0601,0.6024,0.6469,0.5923,0.6146,0.0966,0.9197,1.3375,1.3611,1.2994,0.2186,0.0631,0.0583,0.7991,0.8805,0.8515,0.8676,0.0923,0.8829,1.3492,1.3987,1.3352,0.2187,0.0634,0.0639,0.8598,1.2393,1.171,1.1377,0.2135,0.8776,1.3244,1.3985,1.3782,0.2186,0.0593,0.0593,0.8321,1.3674,1.4175,1.4058,0.0918,0.7995,1.2439,1.3376,1.3466,0.2246,0.0627,0.0605,0.0604,0.0603,0.0597,0.0606,0.0614,0.0606,0.0606,0.0614,0.0593,0.0598,0.0577 +35855s,0.0648,0.0669,0.0629,0.0636,0.0645,0.0633,0.0634,0.0659,0.0638,0.0669,0.0635,0.0638,0.0608,0.2556,0.3355,0.2701,0.2339,0.0931,1.0077,1.3723,1.3147,1.2808,0.2262,0.061,0.0626,0.3984,0.4497,0.4288,0.3933,0.0943,1.0038,1.3469,1.3411,1.2892,0.2178,0.0649,0.0601,0.6033,0.6465,0.5923,0.6144,0.0965,0.9416,1.3556,1.3658,1.3056,0.2186,0.0647,0.0584,0.8058,0.881,0.8522,0.8686,0.0922,0.9057,1.3694,1.4073,1.3449,0.2189,0.0633,0.0638,0.8699,1.2417,1.1717,1.1389,0.2217,0.8998,1.3473,1.4142,1.3913,0.2191,0.0588,0.0578,0.8415,1.3854,1.4284,1.4162,0.0915,0.8225,1.2698,1.3571,1.3675,0.2247,0.0633,0.0609,0.0604,0.0605,0.0597,0.0606,0.0614,0.0606,0.0605,0.0615,0.0592,0.0598,0.0578 +36495s,0.0648,0.0745,0.063,0.0636,0.0645,0.0634,0.0647,0.066,0.0638,0.067,0.0635,0.0625,0.0609,0.2565,0.3356,0.2705,0.2344,0.093,1.0275,1.3812,1.3168,1.2844,0.2261,0.0605,0.069,0.3983,0.4497,0.4285,0.3937,0.0941,1.0239,1.3621,1.3457,1.2939,0.2177,0.0648,0.0597,0.6034,0.6464,0.5926,0.615,0.0964,0.9641,1.3739,1.3724,1.3113,0.2187,0.0608,0.0581,0.8111,0.8818,0.8519,0.8696,0.0921,0.9292,1.3894,1.4148,1.3549,0.2189,0.0632,0.0637,0.8797,1.2439,1.1725,1.141,0.2314,0.9223,1.3681,1.4291,1.403,0.2192,0.0609,0.0582,0.8518,1.4007,1.4397,1.4249,0.0917,0.844,1.2934,1.3784,1.3861,0.2247,0.0622,0.0608,0.0602,0.0604,0.0594,0.0604,0.0614,0.0605,0.0605,0.062,0.0592,0.0596,0.0574 +37135s,0.0646,0.0667,0.063,0.0635,0.0645,0.0631,0.0631,0.0658,0.0635,0.0669,0.0637,0.0625,0.0608,0.2567,0.3359,0.2705,0.2344,0.0932,1.047,1.3901,1.3194,1.2875,0.2262,0.059,0.0623,0.3987,0.4504,0.4294,0.394,0.0943,1.0454,1.3754,1.3484,1.2975,0.2178,0.0652,0.0598,0.6039,0.6474,0.5925,0.6157,0.0964,0.9856,1.3889,1.376,1.3161,0.2189,0.0614,0.0584,0.8158,0.8826,0.8515,0.8701,0.0923,0.9522,1.4075,1.4208,1.3623,0.2191,0.0633,0.0636,0.8895,1.2457,1.1732,1.1424,0.2406,0.9445,1.3898,1.4416,1.4138,0.2197,0.0598,0.0581,0.8612,1.4172,1.4477,1.4319,0.0917,0.865,1.3165,1.3974,1.4046,0.2248,0.0624,0.0607,0.0604,0.0602,0.0596,0.0607,0.0612,0.0606,0.0604,0.0604,0.0591,0.0597,0.0573 +37776s,0.0646,0.0725,0.0628,0.0633,0.0641,0.0631,0.063,0.0657,0.0636,0.0668,0.0635,0.0624,0.0606,0.2573,0.336,0.2706,0.2345,0.0931,1.0669,1.3979,1.3216,1.29,0.2263,0.0607,0.0624,0.3994,0.4511,0.4296,0.3946,0.0942,1.0652,1.386,1.3518,1.301,0.218,0.0649,0.0598,0.6045,0.6475,0.5928,0.6168,0.0964,1.0077,1.403,1.38,1.3211,0.219,0.0626,0.0588,0.8196,0.883,0.8527,0.871,0.0923,0.9735,1.4253,1.4263,1.3696,0.2191,0.0631,0.0635,0.8993,1.2468,1.1735,1.1444,0.2507,0.9655,1.4096,1.4535,1.4251,0.2202,0.0587,0.0586,0.871,1.4319,1.4545,1.4381,0.0918,0.887,1.338,1.4149,1.4227,0.2264,0.0624,0.0607,0.0602,0.0602,0.0592,0.0603,0.0613,0.0606,0.0602,0.0611,0.059,0.0597,0.0578 +38417s,0.0646,0.0668,0.0628,0.0633,0.0643,0.0631,0.0631,0.0657,0.0636,0.0669,0.0637,0.0626,0.0608,0.258,0.3366,0.2712,0.2353,0.0931,1.0848,1.4023,1.323,1.2919,0.2264,0.0644,0.0584,0.3994,0.4498,0.4301,0.3951,0.0941,1.0856,1.3957,1.3544,1.305,0.218,0.0648,0.0595,0.6056,0.6476,0.5932,0.6173,0.0964,1.0279,1.4154,1.3826,1.3248,0.2189,0.061,0.0584,0.8217,0.8826,0.8523,0.8721,0.0923,0.9947,1.4398,1.4306,1.3751,0.2192,0.0633,0.0635,0.9081,1.2477,1.1734,1.1453,0.2614,0.987,1.4276,1.4623,1.4321,0.2207,0.0599,0.0581,0.8798,1.4459,1.4605,1.4445,0.0917,0.9061,1.3597,1.4322,1.4385,0.2249,0.0623,0.0606,0.0603,0.0603,0.0594,0.0605,0.0614,0.0606,0.0602,0.06,0.0589,0.0599,0.0572 +39058s,0.0648,0.0718,0.063,0.0635,0.0645,0.0631,0.0629,0.0657,0.0639,0.0669,0.0636,0.0625,0.0608,0.2583,0.3367,0.2711,0.2353,0.093,1.1023,1.4072,1.3245,1.2948,0.2262,0.0596,0.0613,0.4001,0.451,0.4303,0.3956,0.0943,1.1054,1.4037,1.3571,1.3074,0.218,0.0649,0.0595,0.6055,0.6472,0.5936,0.618,0.0965,1.0471,1.4254,1.3846,1.3273,0.2189,0.0603,0.0583,0.8236,0.8824,0.8522,0.8722,0.0923,1.0145,1.4521,1.434,1.3792,0.2191,0.0631,0.0633,0.916,1.2479,1.1738,1.146,0.2733,1.007,1.444,1.4712,1.4408,0.2211,0.0598,0.0591,0.8885,1.4586,1.4648,1.4494,0.0917,0.9273,1.3793,1.4477,1.4541,0.225,0.0623,0.0607,0.0602,0.0604,0.0593,0.0603,0.0612,0.0605,0.0601,0.0611,0.0588,0.0595,0.0576 +39698s,0.0645,0.0665,0.0628,0.0634,0.0641,0.063,0.0629,0.0656,0.0634,0.0668,0.0637,0.0623,0.0608,0.2593,0.3373,0.2718,0.2357,0.0931,1.1171,1.4116,1.3255,1.2962,0.2265,0.0596,0.0612,0.4005,0.4525,0.4308,0.3965,0.0943,1.1216,1.4102,1.3582,1.3093,0.2182,0.0646,0.0596,0.6053,0.6489,0.5935,0.6179,0.0965,1.0665,1.4349,1.3872,1.33,0.2191,0.0598,0.0585,0.8258,0.8828,0.8519,0.8729,0.0923,1.0346,1.4644,1.4375,1.384,0.2192,0.0631,0.0633,0.9233,1.2476,1.1732,1.1467,0.2869,1.0263,1.4591,1.4774,1.4466,0.2217,0.0588,0.0593,0.898,1.4715,1.4682,1.4526,0.0919,0.9462,1.3984,1.4638,1.4681,0.2252,0.063,0.0606,0.0602,0.0604,0.0593,0.0605,0.0614,0.0606,0.0601,0.0615,0.0589,0.0595,0.0572 +40338s,0.0646,0.0741,0.0629,0.0633,0.0645,0.0633,0.0627,0.0658,0.0634,0.0669,0.0635,0.0625,0.0607,0.2601,0.3383,0.2727,0.2364,0.0932,1.131,1.4143,1.3267,1.2979,0.2267,0.0582,0.061,0.4005,0.4521,0.4313,0.3965,0.0942,1.139,1.4162,1.36,1.3122,0.2183,0.0648,0.0594,0.6061,0.6485,0.5942,0.6182,0.0964,1.0857,1.4429,1.3893,1.3332,0.2192,0.061,0.0598,0.8259,0.8831,0.8513,0.8728,0.0924,1.055,1.4748,1.4398,1.3872,0.2194,0.0632,0.0629,0.9306,1.2492,1.1733,1.1481,0.2966,1.0456,1.4746,1.4844,1.4534,0.222,0.0595,0.059,0.9062,1.4831,1.4716,1.4553,0.0918,0.9667,1.417,1.4776,1.482,0.2251,0.0627,0.0608,0.0603,0.0604,0.0593,0.0606,0.0613,0.0604,0.0601,0.0605,0.0588,0.0595,0.0593 +40978s,0.0648,0.0665,0.0628,0.0634,0.0643,0.0629,0.0629,0.0655,0.0634,0.0668,0.0636,0.0623,0.0607,0.2608,0.3386,0.2729,0.2367,0.0933,1.1438,1.4172,1.3279,1.3001,0.2268,0.0579,0.0614,0.4006,0.4522,0.4315,0.3967,0.0944,1.1557,1.4219,1.3622,1.3142,0.2184,0.0649,0.0596,0.6065,0.6482,0.5941,0.6184,0.0966,1.104,1.4492,1.3914,1.3352,0.2193,0.0608,0.0587,0.8274,0.8837,0.851,0.873,0.0925,1.0731,1.4848,1.442,1.3915,0.2195,0.0634,0.0632,0.9386,1.2501,1.1734,1.1495,0.3075,1.0652,1.4884,1.4897,1.4589,0.2225,0.0589,0.0583,0.9146,1.4935,1.4739,1.4598,0.0918,0.9859,1.4366,1.4936,1.4958,0.2253,0.0632,0.0609,0.0601,0.0604,0.0593,0.0604,0.0613,0.0605,0.06,0.0624,0.0586,0.0595,0.0573 +41619s,0.0648,0.0734,0.0629,0.0634,0.0643,0.0629,0.0629,0.0654,0.0636,0.0668,0.0636,0.0623,0.0608,0.261,0.3384,0.2727,0.2367,0.0933,1.1553,1.4216,1.3283,1.3015,0.2269,0.0637,0.0621,0.4013,0.4525,0.4316,0.3974,0.0944,1.1703,1.4263,1.3635,1.3167,0.2187,0.0649,0.0595,0.6067,0.649,0.5942,0.6193,0.0966,1.1223,1.454,1.3925,1.3378,0.2194,0.0588,0.0581,0.8278,0.884,0.8509,0.8737,0.0925,1.0939,1.4921,1.4444,1.3937,0.2196,0.0631,0.063,0.9453,1.2508,1.1744,1.1513,0.316,1.0842,1.5025,1.4953,1.465,0.2232,0.0587,0.0581,0.9221,1.503,1.4755,1.4619,0.0918,1.0031,1.4527,1.5069,1.5051,0.2252,0.0628,0.0609,0.0603,0.06,0.0594,0.0604,0.0611,0.0604,0.0599,0.064,0.0588,0.0594,0.0574 +42259s,0.0646,0.0666,0.0629,0.0634,0.0642,0.0628,0.0629,0.0655,0.0636,0.0669,0.0636,0.0624,0.0608,0.2618,0.3389,0.2731,0.2368,0.0932,1.166,1.424,1.3297,1.3035,0.2271,0.0581,0.0615,0.4012,0.4531,0.4319,0.3978,0.0944,1.1841,1.4293,1.3636,1.3181,0.2185,0.065,0.0594,0.6066,0.6494,0.5944,0.6194,0.0966,1.1401,1.4576,1.3935,1.3396,0.2195,0.0618,0.0583,0.8294,0.8838,0.8513,0.8745,0.0924,1.1109,1.499,1.445,1.3969,0.2196,0.0631,0.063,0.9514,1.2506,1.1744,1.1512,0.3303,1.1021,1.5137,1.4981,1.4688,0.2239,0.0586,0.0583,0.9304,1.5102,1.4766,1.462,0.0919,1.0211,1.4689,1.5182,1.5142,0.2253,0.0626,0.0606,0.0601,0.06,0.0593,0.0603,0.0611,0.0602,0.0598,0.0624,0.0587,0.0595,0.0575 +42899s,0.0646,0.0738,0.0627,0.0633,0.0641,0.0629,0.0629,0.0652,0.0633,0.0669,0.0637,0.0625,0.0607,0.2624,0.3393,0.2737,0.2373,0.0933,1.1746,1.4258,1.3299,1.3045,0.2271,0.0583,0.0614,0.4024,0.4532,0.4321,0.3984,0.0944,1.1959,1.432,1.3647,1.3201,0.2186,0.0648,0.0595,0.607,0.6484,0.5938,0.62,0.0967,1.1579,1.4619,1.3948,1.3413,0.2195,0.0639,0.0587,0.8301,0.8842,0.8516,0.8752,0.0924,1.1295,1.5044,1.4472,1.4,0.2197,0.0632,0.063,0.9569,1.2511,1.1745,1.1522,0.3433,1.1188,1.5239,1.5019,1.4713,0.225,0.059,0.0581,0.9397,1.5167,1.4767,1.4644,0.092,1.0403,1.4834,1.5296,1.5238,0.2255,0.063,0.0608,0.0601,0.0602,0.0592,0.0604,0.0611,0.0601,0.0598,0.0643,0.0586,0.0593,0.0576 +43539s,0.0647,0.0668,0.063,0.0635,0.064,0.0628,0.063,0.0653,0.0632,0.067,0.0635,0.0623,0.0608,0.2632,0.34,0.2741,0.2378,0.0934,1.1837,1.427,1.3305,1.3058,0.2273,0.0603,0.0611,0.4026,0.454,0.4332,0.3988,0.0944,1.2068,1.4345,1.365,1.3215,0.2187,0.0648,0.0596,0.6079,0.6479,0.5941,0.6208,0.0966,1.1744,1.4652,1.3955,1.3436,0.2197,0.0596,0.0583,0.8306,0.8843,0.8509,0.8753,0.0926,1.1473,1.5089,1.4481,1.4016,0.2199,0.0633,0.0629,0.9614,1.2515,1.1736,1.1531,0.3551,1.1362,1.5334,1.5046,1.474,0.226,0.0595,0.0579,0.9487,1.5232,1.4779,1.4655,0.0921,1.0571,1.4979,1.5398,1.5329,0.2257,0.0632,0.0606,0.0601,0.0602,0.0592,0.0603,0.061,0.0602,0.0597,0.0615,0.0587,0.0595,0.0577 +44179s,0.0649,0.0667,0.0627,0.0635,0.0643,0.0627,0.0631,0.0653,0.0634,0.067,0.0635,0.0626,0.061,0.2639,0.3406,0.275,0.2386,0.0935,1.1908,1.4278,1.3299,1.3072,0.2274,0.0583,0.0612,0.4028,0.4537,0.4335,0.3992,0.0945,1.2172,1.4375,1.3652,1.3227,0.219,0.0649,0.0595,0.6083,0.649,0.5942,0.6204,0.0969,1.189,1.4684,1.3963,1.3441,0.2198,0.0636,0.0584,0.8303,0.8844,0.8512,0.8754,0.0926,1.1648,1.5131,1.4488,1.4028,0.2199,0.0634,0.063,0.9663,1.2511,1.1736,1.1538,0.3688,1.1536,1.5402,1.5064,1.4767,0.2271,0.0608,0.0585,0.9556,1.5266,1.477,1.4668,0.092,1.0743,1.5121,1.5501,1.5398,0.2257,0.0634,0.0609,0.0604,0.0604,0.0594,0.0605,0.0613,0.0603,0.06,0.0649,0.0588,0.0595,0.0584 +44820s,0.0646,0.0738,0.0629,0.0637,0.0643,0.0628,0.063,0.0653,0.0632,0.0668,0.0634,0.0625,0.0609,0.2639,0.3404,0.2746,0.2383,0.0933,1.1985,1.4302,1.3305,1.3086,0.2274,0.0578,0.0616,0.4027,0.4545,0.4331,0.3995,0.0944,1.2258,1.4398,1.3661,1.3236,0.2188,0.0648,0.0594,0.6081,0.6493,0.5941,0.6209,0.0968,1.2033,1.4708,1.3974,1.3448,0.2199,0.0649,0.0583,0.8308,0.8844,0.8507,0.8759,0.0925,1.1813,1.516,1.4505,1.4045,0.22,0.0632,0.0629,0.9715,1.2522,1.1738,1.1542,0.3808,1.1703,1.5477,1.5085,1.4782,0.2279,0.0601,0.0585,0.9641,1.5299,1.4782,1.4681,0.0918,1.0896,1.5262,1.5584,1.5469,0.2257,0.0634,0.0607,0.0601,0.06,0.0593,0.0602,0.061,0.0601,0.0595,0.0618,0.0584,0.0594,0.0578 +45460s,0.0648,0.0668,0.0629,0.0635,0.0642,0.0628,0.063,0.0651,0.0635,0.0667,0.0634,0.0624,0.0608,0.2645,0.3402,0.2744,0.2384,0.0934,1.2047,1.4315,1.3301,1.3092,0.2275,0.0576,0.0616,0.403,0.4537,0.4331,0.4,0.0944,1.2336,1.44,1.3663,1.324,0.2188,0.0648,0.0595,0.6086,0.6499,0.5952,0.6214,0.0968,1.2155,1.4724,1.3972,1.3467,0.2199,0.0616,0.0593,0.8318,0.8841,0.8508,0.8762,0.0926,1.1983,1.5185,1.4507,1.4059,0.2202,0.0629,0.0628,0.9758,1.2527,1.1733,1.1549,0.3922,1.1878,1.5528,1.5104,1.4811,0.2297,0.0589,0.058,0.9707,1.5324,1.4775,1.4678,0.092,1.1063,1.5368,1.5661,1.5532,0.2258,0.0628,0.0606,0.0601,0.0599,0.0592,0.0602,0.0609,0.06,0.0596,0.0604,0.0585,0.0592,0.0575 +46100s,0.0649,0.0726,0.0631,0.0637,0.0644,0.0629,0.0629,0.0653,0.0636,0.067,0.0634,0.0626,0.0608,0.2648,0.3408,0.275,0.2387,0.0934,1.2097,1.4324,1.3302,1.3099,0.2276,0.0579,0.0606,0.4037,0.4541,0.4332,0.4003,0.0945,1.2418,1.4417,1.3677,1.3256,0.219,0.0649,0.0594,0.6088,0.6509,0.5953,0.6216,0.0968,1.2262,1.4742,1.3971,1.3471,0.22,0.0614,0.059,0.8326,0.8842,0.8504,0.8765,0.0926,1.2128,1.5216,1.4508,1.4072,0.2202,0.0629,0.063,0.9784,1.2522,1.173,1.156,0.406,1.2034,1.5592,1.5117,1.4827,0.2313,0.06,0.0591,0.9788,1.5338,1.4782,1.4696,0.092,1.1226,1.5472,1.5736,1.5608,0.2258,0.0623,0.0608,0.0601,0.0601,0.0591,0.0604,0.0609,0.0601,0.0597,0.061,0.0586,0.0592,0.0573 +46740s,0.0646,0.0665,0.0627,0.0635,0.0642,0.0629,0.0632,0.0652,0.0634,0.0668,0.0634,0.0624,0.0607,0.2648,0.3404,0.2746,0.2385,0.0933,1.2158,1.4345,1.3308,1.3109,0.2276,0.0618,0.0614,0.4042,0.4561,0.4344,0.401,0.0945,1.248,1.4426,1.3672,1.3259,0.2192,0.0648,0.0592,0.6094,0.6505,0.5957,0.6218,0.0967,1.2359,1.4756,1.3975,1.3482,0.2201,0.0628,0.0585,0.8329,0.884,0.8508,0.8773,0.0925,1.2292,1.5236,1.4515,1.4088,0.2202,0.0628,0.0626,0.9827,1.2525,1.1732,1.1564,0.42,1.2196,1.5621,1.5122,1.4844,0.2334,0.0592,0.0588,0.9861,1.5362,1.4774,1.4695,0.092,1.1388,1.5593,1.5802,1.5661,0.2259,0.0618,0.0606,0.06,0.0599,0.0592,0.0602,0.0607,0.0601,0.0596,0.0605,0.0584,0.0592,0.0574 +47380s,0.0649,0.0744,0.0628,0.0636,0.0645,0.0628,0.0631,0.0655,0.0634,0.0671,0.0634,0.0625,0.0609,0.2655,0.3414,0.2755,0.2394,0.0935,1.2207,1.4352,1.3303,1.312,0.2278,0.062,0.0612,0.4045,0.4566,0.4348,0.4016,0.0946,1.2548,1.4444,1.3674,1.327,0.2192,0.0649,0.0595,0.6094,0.6503,0.5958,0.6217,0.0968,1.2463,1.4774,1.3979,1.3489,0.2202,0.0603,0.0585,0.8329,0.884,0.8494,0.8781,0.0927,1.243,1.5253,1.4511,1.4094,0.2204,0.0631,0.0629,0.9865,1.2524,1.1731,1.1571,0.4343,1.2361,1.5658,1.5125,1.4855,0.2358,0.059,0.0585,0.9936,1.5366,1.4779,1.4701,0.0922,1.1569,1.5691,1.5851,1.5716,0.226,0.0619,0.0609,0.06,0.0599,0.0592,0.0605,0.061,0.0603,0.0596,0.0605,0.0587,0.0593,0.0571 +48021s,0.0648,0.0737,0.0628,0.0634,0.0641,0.0627,0.063,0.0655,0.0632,0.0676,0.0636,0.0625,0.0608,0.2657,0.3413,0.2754,0.2393,0.0934,1.2247,1.436,1.3307,1.3135,0.2277,0.059,0.0613,0.4045,0.4567,0.4348,0.4019,0.0945,1.26,1.4448,1.3671,1.3274,0.2192,0.0648,0.0592,0.6099,0.6502,0.5953,0.6224,0.0967,1.2543,1.4788,1.3975,1.3497,0.2202,0.0629,0.0588,0.8344,0.8842,0.8501,0.8784,0.0925,1.2559,1.5271,1.452,1.4112,0.2202,0.063,0.0626,0.9897,1.2515,1.1721,1.1572,0.4503,1.251,1.5672,1.5132,1.4862,0.2388,0.0588,0.0593,1.0015,1.5381,1.477,1.47,0.092,1.1711,1.5792,1.5908,1.5763,0.2259,0.0615,0.0606,0.06,0.0598,0.0593,0.0602,0.0605,0.0599,0.0596,0.0607,0.0585,0.0592,0.0575 +48661s,0.0648,0.0666,0.0626,0.0636,0.0643,0.063,0.063,0.0657,0.0631,0.0672,0.0633,0.0625,0.0609,0.2667,0.3423,0.2767,0.2403,0.0935,1.2277,1.4351,1.3301,1.3134,0.228,0.0582,0.0614,0.4048,0.4562,0.435,0.4022,0.0947,1.2647,1.4453,1.3676,1.3291,0.2193,0.0647,0.0594,0.6105,0.6501,0.596,0.6232,0.0969,1.2625,1.4794,1.3977,1.3511,0.2203,0.0619,0.0589,0.8345,0.8837,0.8498,0.8781,0.0926,1.2661,1.5272,1.4512,1.4118,0.2204,0.0632,0.0628,0.9918,1.2521,1.1726,1.1582,0.4622,1.2666,1.5718,1.5143,1.4877,0.2428,0.0598,0.0583,1.0084,1.538,1.4761,1.4701,0.0921,1.1871,1.5871,1.5948,1.58,0.2262,0.0618,0.0608,0.06,0.0597,0.0592,0.0603,0.0607,0.06,0.0596,0.0614,0.0585,0.0593,0.0572 +49301s,0.0648,0.0742,0.0628,0.0637,0.0644,0.063,0.0631,0.0654,0.0633,0.067,0.0635,0.0626,0.061,0.2672,0.3423,0.2764,0.2406,0.0936,1.2308,1.4368,1.3303,1.3145,0.2281,0.0601,0.0614,0.4052,0.4562,0.4349,0.4025,0.0946,1.2698,1.4463,1.3672,1.3291,0.2194,0.065,0.0594,0.611,0.6505,0.5962,0.6237,0.097,1.2701,1.48,1.3976,1.3513,0.2204,0.0618,0.0593,0.835,0.8842,0.8495,0.8786,0.0928,1.2772,1.5289,1.4516,1.4121,0.2205,0.0632,0.0625,0.994,1.2522,1.1724,1.1586,0.478,1.2799,1.5737,1.5151,1.4886,0.2475,0.0593,0.0582,1.0168,1.5378,1.4757,1.4719,0.0922,1.2027,1.5969,1.5995,1.5839,0.2262,0.0617,0.0609,0.0602,0.0599,0.0592,0.06,0.0606,0.06,0.0596,0.0601,0.0586,0.0593,0.0575 +49941s,0.0648,0.0669,0.0628,0.0638,0.0643,0.063,0.0629,0.0654,0.063,0.067,0.0637,0.0625,0.0608,0.2673,0.3425,0.2765,0.2404,0.0935,1.2341,1.4374,1.3299,1.3153,0.2281,0.0611,0.0609,0.4054,0.4565,0.435,0.4031,0.0948,1.2738,1.4476,1.3678,1.3301,0.2194,0.0648,0.0594,0.6115,0.6508,0.5969,0.6241,0.0969,1.2763,1.4813,1.3979,1.3523,0.2204,0.0609,0.0588,0.8349,0.8844,0.8494,0.8787,0.0928,1.2863,1.5296,1.4517,1.4133,0.2207,0.0631,0.0625,0.9961,1.253,1.1727,1.1591,0.4943,1.2947,1.5749,1.5151,1.4899,0.2527,0.0588,0.0581,1.0233,1.5385,1.4755,1.4717,0.0922,1.2177,1.6058,1.6031,1.5883,0.2262,0.0617,0.0608,0.0601,0.0597,0.0592,0.0601,0.0606,0.0599,0.0594,0.0618,0.0586,0.0593,0.0577 +50582s,0.0649,0.0741,0.0629,0.0635,0.0642,0.0629,0.0628,0.0651,0.0629,0.0668,0.0635,0.0623,0.0607,0.2676,0.3427,0.277,0.2409,0.0936,1.2356,1.4367,1.3295,1.316,0.2282,0.0579,0.0615,0.405,0.456,0.4351,0.4036,0.0946,1.276,1.4482,1.3664,1.3304,0.2195,0.0649,0.059,0.6112,0.6514,0.5966,0.6245,0.0969,1.2817,1.4817,1.3978,1.3529,0.2204,0.0611,0.0581,0.836,0.8841,0.8491,0.8795,0.0927,1.2951,1.5309,1.4516,1.4134,0.2206,0.0629,0.0625,0.9984,1.252,1.1719,1.1592,0.5122,1.3065,1.5763,1.5155,1.49,0.2585,0.0596,0.0586,1.0301,1.539,1.4752,1.4721,0.0921,1.2324,1.6136,1.6055,1.5907,0.2262,0.0614,0.0609,0.06,0.0597,0.0591,0.0603,0.0606,0.0599,0.0595,0.0601,0.0585,0.0592,0.058 +51222s,0.0647,0.0666,0.0627,0.0635,0.0642,0.063,0.0627,0.0655,0.0633,0.0667,0.0631,0.0623,0.0607,0.2682,0.3426,0.2769,0.2409,0.0935,1.2385,1.4395,1.3298,1.3174,0.2283,0.0587,0.0611,0.4061,0.4588,0.4361,0.4045,0.0947,1.279,1.4486,1.3674,1.3311,0.2196,0.0648,0.0592,0.6115,0.6518,0.5969,0.625,0.097,1.2875,1.4822,1.3977,1.353,0.2207,0.063,0.0588,0.8369,0.8843,0.8491,0.8804,0.0928,1.3035,1.5328,1.452,1.4149,0.2207,0.063,0.0625,1.0001,1.253,1.1728,1.1607,0.5289,1.3187,1.5791,1.5162,1.4918,0.2654,0.0587,0.058,1.0368,1.54,1.4753,1.4718,0.0923,1.247,1.6211,1.6085,1.5943,0.2264,0.0616,0.0608,0.0598,0.0597,0.0593,0.06,0.0604,0.0598,0.0594,0.0609,0.0584,0.0591,0.0577 +51862s,0.065,0.0741,0.0627,0.0636,0.0642,0.0629,0.0629,0.0655,0.0629,0.067,0.0633,0.0627,0.0609,0.2685,0.3429,0.2772,0.2413,0.0934,1.2395,1.4388,1.3298,1.3178,0.2285,0.0591,0.0614,0.406,0.4584,0.436,0.4048,0.0947,1.2809,1.4491,1.3668,1.3312,0.2197,0.0649,0.0593,0.6122,0.6514,0.5969,0.6259,0.0971,1.292,1.4835,1.398,1.3534,0.2207,0.0602,0.0589,0.837,0.8839,0.8496,0.8806,0.0928,1.3108,1.5334,1.4518,1.4157,0.2207,0.063,0.0625,1.0015,1.2528,1.1716,1.1603,0.5478,1.3292,1.5792,1.5153,1.493,0.2731,0.0594,0.0584,1.0447,1.5397,1.4738,1.4723,0.0922,1.2611,1.6278,1.6091,1.5952,0.2264,0.0616,0.0607,0.06,0.0597,0.0593,0.0601,0.0606,0.0597,0.0594,0.0593,0.0583,0.0591,0.0572 +52502s,0.0647,0.0667,0.0627,0.0635,0.0639,0.0628,0.0628,0.0653,0.063,0.0669,0.0633,0.0625,0.0607,0.2691,0.3432,0.2775,0.2414,0.0936,1.2418,1.4391,1.3292,1.3182,0.2285,0.0579,0.0612,0.4067,0.4581,0.4367,0.4049,0.0946,1.2841,1.4496,1.3671,1.3324,0.2197,0.065,0.0593,0.6124,0.6513,0.597,0.6265,0.0969,1.2951,1.4838,1.3971,1.3541,0.2206,0.0606,0.0583,0.8381,0.884,0.8496,0.881,0.0928,1.3176,1.5331,1.4521,1.4162,0.2208,0.0628,0.0624,1.003,1.2528,1.1716,1.1606,0.566,1.3389,1.5805,1.5155,1.4927,0.2815,0.0598,0.0584,1.0517,1.5394,1.4735,1.4726,0.0921,1.2743,1.6341,1.6105,1.597,0.2265,0.0615,0.0608,0.06,0.0596,0.0592,0.06,0.0605,0.0595,0.0594,0.0593,0.0585,0.0591,0.0575 +53142s,0.0648,0.0669,0.063,0.0637,0.0641,0.0628,0.0631,0.0652,0.0631,0.0675,0.0636,0.0625,0.0611,0.2702,0.3441,0.2785,0.2423,0.0937,1.2432,1.4396,1.329,1.319,0.2288,0.0596,0.0611,0.407,0.4585,0.4374,0.4056,0.0948,1.2868,1.4513,1.3674,1.3337,0.2199,0.065,0.0595,0.6133,0.6513,0.5969,0.6274,0.0971,1.2993,1.4845,1.3983,1.3556,0.221,0.0603,0.0586,0.8388,0.8839,0.8498,0.8808,0.0929,1.3238,1.5351,1.4525,1.4171,0.221,0.063,0.0626,1.0036,1.2524,1.172,1.1614,0.5869,1.3478,1.582,1.5158,1.4934,0.2937,0.0596,0.058,1.0592,1.54,1.4752,1.4747,0.0922,1.2895,1.6398,1.6135,1.6007,0.2267,0.0617,0.0608,0.06,0.0596,0.059,0.0601,0.0606,0.0598,0.0595,0.0598,0.0585,0.059,0.0572 +53783s,0.0649,0.0733,0.0628,0.0636,0.0643,0.0629,0.0629,0.0652,0.0631,0.0669,0.0636,0.0625,0.0608,0.2705,0.3441,0.2785,0.2423,0.0936,1.2444,1.4401,1.329,1.3204,0.2287,0.0589,0.0612,0.4069,0.4582,0.4376,0.4057,0.0947,1.288,1.4515,1.3664,1.3334,0.2199,0.0649,0.0593,0.6138,0.652,0.5974,0.6266,0.0971,1.3024,1.4848,1.3977,1.3552,0.2209,0.0601,0.0587,0.8394,0.8841,0.8495,0.8813,0.0929,1.3293,1.5347,1.4528,1.417,0.2209,0.0631,0.0622,1.0046,1.253,1.1718,1.1618,0.6066,1.3551,1.5833,1.5156,1.4946,0.304,0.0599,0.0588,1.0657,1.5403,1.4745,1.4738,0.0923,1.3017,1.6448,1.6142,1.6005,0.2265,0.0613,0.0607,0.0599,0.0596,0.0591,0.06,0.0605,0.0595,0.0593,0.0595,0.0585,0.0591,0.0579 +54423s,0.0649,0.0667,0.0629,0.0635,0.0642,0.0631,0.0629,0.0654,0.0632,0.0668,0.0633,0.0624,0.0608,0.2713,0.3445,0.2791,0.2431,0.0936,1.2454,1.4392,1.3285,1.3197,0.2289,0.0577,0.061,0.4068,0.4588,0.4373,0.4055,0.0949,1.2895,1.4506,1.3655,1.334,0.2199,0.0648,0.0595,0.6147,0.6515,0.5973,0.6277,0.097,1.3038,1.4837,1.3968,1.3557,0.221,0.0607,0.0581,0.8394,0.8841,0.8495,0.8813,0.0929,1.3331,1.5344,1.4508,1.4177,0.221,0.063,0.0627,1.0048,1.2519,1.1711,1.1612,0.6264,1.3629,1.583,1.5138,1.4939,0.3164,0.0615,0.058,1.073,1.54,1.4736,1.473,0.0921,1.3141,1.6473,1.614,1.6017,0.2267,0.0614,0.0608,0.0599,0.0595,0.0592,0.06,0.0606,0.0594,0.0593,0.0596,0.0585,0.0588,0.0572 +55063s,0.0651,0.0745,0.0631,0.0638,0.0645,0.063,0.063,0.0654,0.0631,0.0668,0.0634,0.0626,0.0609,0.2713,0.3441,0.2785,0.2426,0.0935,1.2467,1.4416,1.3293,1.3215,0.2291,0.06,0.0609,0.4073,0.459,0.4373,0.4063,0.0949,1.2912,1.4514,1.3669,1.3349,0.22,0.0647,0.0592,0.6151,0.6521,0.5976,0.6273,0.0971,1.3065,1.4851,1.3974,1.3565,0.2212,0.0615,0.0578,0.84,0.8842,0.8497,0.8815,0.093,1.3387,1.5351,1.4517,1.4182,0.2213,0.0631,0.0626,1.0067,1.2536,1.1721,1.1626,0.6473,1.3702,1.5848,1.516,1.4956,0.3282,0.0592,0.0583,1.0804,1.5413,1.4737,1.4749,0.0924,1.3272,1.6542,1.617,1.604,0.2268,0.0614,0.061,0.06,0.0596,0.0591,0.0601,0.0605,0.0596,0.0593,0.0596,0.0584,0.0592,0.058 +55706s,0.0648,0.0666,0.0628,0.0635,0.0639,0.0627,0.0629,0.0654,0.0631,0.0669,0.0631,0.0624,0.0608,0.2715,0.3443,0.2789,0.243,0.0936,1.247,1.4408,1.3286,1.3221,0.2291,0.0606,0.0613,0.4082,0.4594,0.438,0.4065,0.0948,1.2914,1.4507,1.3657,1.334,0.2201,0.0648,0.0596,0.6155,0.6532,0.5985,0.6277,0.0971,1.3083,1.485,1.3963,1.3552,0.2212,0.0619,0.0579,0.8407,0.884,0.8498,0.8819,0.093,1.3418,1.5353,1.4513,1.4187,0.2213,0.0627,0.0627,1.006,1.253,1.1719,1.1631,0.6682,1.3762,1.5839,1.5148,1.4957,0.3409,0.0593,0.0584,1.0864,1.5399,1.4727,1.4743,0.0924,1.3393,1.6541,1.6154,1.6033,0.2269,0.0615,0.0609,0.06,0.0597,0.0591,0.0601,0.0607,0.0595,0.0593,0.0596,0.0585,0.0591,0.058 +56346s,0.0648,0.0668,0.0629,0.0636,0.0641,0.0628,0.0627,0.065,0.0629,0.0667,0.0631,0.0622,0.0609,0.272,0.3448,0.2791,0.2432,0.0937,1.2473,1.4411,1.3284,1.3224,0.2293,0.0625,0.06,0.4082,0.4586,0.4378,0.4067,0.0949,1.2934,1.4525,1.366,1.3358,0.2201,0.0647,0.0594,0.616,0.653,0.5986,0.6281,0.0972,1.3104,1.4855,1.3959,1.3574,0.2213,0.0613,0.0588,0.8418,0.8843,0.8495,0.8829,0.093,1.3456,1.5366,1.452,1.4192,0.2212,0.0628,0.0625,1.0062,1.2533,1.1715,1.1635,0.69,1.3825,1.5858,1.5149,1.4961,0.3554,0.0593,0.0588,1.0926,1.5404,1.4734,1.475,0.0923,1.3508,1.6585,1.6179,1.6051,0.2268,0.0614,0.0608,0.06,0.0596,0.059,0.0599,0.0605,0.0593,0.0592,0.0593,0.0585,0.059,0.0577 +56987s,0.0649,0.0737,0.0628,0.0636,0.0643,0.0629,0.0627,0.065,0.0627,0.0667,0.063,0.0623,0.0609,0.2726,0.345,0.2789,0.2434,0.0937,1.249,1.4412,1.3282,1.3235,0.2295,0.0591,0.0611,0.408,0.46,0.4383,0.4071,0.0949,1.2942,1.4519,1.3657,1.336,0.2202,0.0648,0.0596,0.6159,0.653,0.5982,0.6285,0.0972,1.3125,1.4849,1.3961,1.3574,0.2214,0.0618,0.0583,0.8424,0.8841,0.8497,0.8836,0.093,1.3487,1.5369,1.4517,1.4196,0.2213,0.0628,0.0625,1.0069,1.254,1.1719,1.1638,0.7109,1.3879,1.5852,1.5152,1.4965,0.3683,0.0607,0.0583,1.0978,1.5398,1.4729,1.475,0.0924,1.3628,1.6596,1.6176,1.6063,0.227,0.0614,0.0607,0.0599,0.0596,0.0591,0.06,0.0604,0.0595,0.0593,0.0593,0.0585,0.0589,0.058 +57627s,0.0649,0.0712,0.0629,0.0636,0.0639,0.0629,0.0626,0.0651,0.0631,0.0669,0.0632,0.0625,0.0609,0.2734,0.3453,0.28,0.2443,0.0938,1.2484,1.4413,1.3281,1.3235,0.2296,0.0624,0.0611,0.4087,0.4606,0.4392,0.4079,0.095,1.2948,1.4518,1.3654,1.3363,0.2204,0.0648,0.0595,0.6168,0.6527,0.5988,0.6292,0.0974,1.3135,1.4857,1.3966,1.358,0.2215,0.0609,0.0582,0.8434,0.8845,0.8498,0.884,0.0931,1.3508,1.5362,1.4512,1.4204,0.2215,0.0628,0.0624,1.0067,1.254,1.1714,1.1639,0.734,1.3921,1.5857,1.5156,1.4962,0.3839,0.059,0.0596,1.1036,1.5395,1.4729,1.4754,0.0924,1.3733,1.663,1.6189,1.6068,0.2271,0.0613,0.0608,0.0599,0.0596,0.0592,0.06,0.0605,0.0594,0.0593,0.0594,0.0585,0.059,0.0579 +58267s,0.0647,0.0686,0.0629,0.0635,0.0642,0.0629,0.0627,0.0651,0.0629,0.0673,0.0632,0.0624,0.061,0.2739,0.3461,0.2808,0.2448,0.0939,1.2482,1.4409,1.3271,1.3239,0.2299,0.0581,0.0612,0.4084,0.4604,0.4389,0.408,0.095,1.2955,1.453,1.3652,1.337,0.2204,0.0649,0.0596,0.6171,0.6523,0.5993,0.6295,0.0973,1.3149,1.4863,1.3966,1.3597,0.2215,0.0628,0.0594,0.8434,0.8844,0.8501,0.8845,0.0931,1.353,1.5371,1.4512,1.4207,0.2215,0.0626,0.0624,1.0071,1.2538,1.1713,1.1642,0.758,1.3963,1.5857,1.5157,1.4968,0.3997,0.0598,0.0579,1.1099,1.5408,1.4731,1.4758,0.0925,1.3845,1.6644,1.6187,1.6062,0.2271,0.0611,0.0608,0.0599,0.0594,0.059,0.06,0.0604,0.0595,0.0593,0.0595,0.0585,0.059,0.0573 +58907s,0.0647,0.0668,0.0627,0.0635,0.0641,0.063,0.0629,0.065,0.0631,0.0667,0.063,0.0624,0.061,0.2739,0.3458,0.2804,0.2445,0.0938,1.2488,1.4414,1.3275,1.3246,0.23,0.0577,0.061,0.4079,0.4601,0.4389,0.4078,0.0949,1.2964,1.4523,1.3655,1.3376,0.2204,0.0647,0.0595,0.6171,0.6532,0.5998,0.6287,0.0973,1.3151,1.4858,1.3957,1.359,0.2215,0.0621,0.0586,0.8434,0.8845,0.8497,0.8842,0.0931,1.3541,1.5375,1.451,1.4199,0.2215,0.0625,0.0625,1.0072,1.2537,1.1712,1.1647,0.7801,1.3999,1.5862,1.5147,1.4969,0.417,0.0606,0.0586,1.1149,1.5403,1.4725,1.4767,0.0924,1.3952,1.6645,1.6187,1.6069,0.2271,0.0612,0.0605,0.0598,0.0596,0.0591,0.06,0.0602,0.0592,0.0592,0.0593,0.0584,0.0589,0.0571 +59547s,0.0652,0.0742,0.063,0.0637,0.0643,0.063,0.0626,0.0653,0.0632,0.0668,0.0633,0.0628,0.0609,0.2746,0.3461,0.2808,0.245,0.0938,1.249,1.441,1.327,1.3257,0.2303,0.0578,0.0616,0.4083,0.4603,0.4392,0.4085,0.095,1.2963,1.4528,1.3656,1.3376,0.2204,0.0649,0.0597,0.6178,0.6539,0.6002,0.6293,0.0972,1.3159,1.4863,1.3965,1.3598,0.2219,0.0618,0.058,0.8448,0.8848,0.8496,0.885,0.0931,1.3566,1.5369,1.4505,1.4216,0.2217,0.0627,0.0623,1.0085,1.2543,1.1719,1.1658,0.8034,1.4038,1.5868,1.5146,1.4981,0.4314,0.0601,0.0578,1.1216,1.5406,1.4723,1.4764,0.0925,1.4052,1.6684,1.6181,1.6091,0.2273,0.0613,0.0607,0.0599,0.0594,0.0589,0.0599,0.0604,0.0594,0.0593,0.0594,0.0585,0.059,0.0578 +60188s,0.0648,0.0745,0.0628,0.0634,0.0642,0.0628,0.0628,0.0652,0.0629,0.0665,0.063,0.0625,0.0608,0.2748,0.3464,0.2807,0.2452,0.0937,1.2489,1.4413,1.3271,1.326,0.2305,0.0625,0.0607,0.4088,0.4609,0.439,0.4087,0.0949,1.2971,1.4535,1.3651,1.3378,0.2205,0.0647,0.0593,0.6179,0.6542,0.6001,0.6302,0.0973,1.3169,1.4871,1.3952,1.3607,0.2217,0.0621,0.0581,0.8464,0.8848,0.8495,0.8853,0.0933,1.3573,1.5379,1.4505,1.4214,0.2217,0.0624,0.0625,1.0088,1.2542,1.1711,1.1657,0.8278,1.4063,1.5884,1.514,1.4979,0.4485,0.0601,0.0581,1.1277,1.5403,1.4727,1.4773,0.0924,1.4153,1.67,1.6207,1.6094,0.2273,0.0612,0.0609,0.06,0.0595,0.0589,0.06,0.0603,0.0594,0.0592,0.0593,0.0584,0.0591,0.0573 +60828s,0.0647,0.067,0.0628,0.0635,0.0642,0.0627,0.0626,0.0651,0.063,0.0668,0.0632,0.063,0.0608,0.2749,0.3465,0.2812,0.2455,0.0938,1.2494,1.4414,1.3267,1.3265,0.2306,0.0597,0.0607,0.4088,0.4618,0.4402,0.4095,0.095,1.2969,1.453,1.3651,1.338,0.2207,0.0647,0.0595,0.6182,0.6546,0.6002,0.6305,0.0973,1.3169,1.4866,1.3957,1.3604,0.222,0.0594,0.0584,0.8459,0.8852,0.8497,0.8855,0.0934,1.3581,1.5372,1.45,1.4218,0.2218,0.0625,0.0624,1.0087,1.2545,1.171,1.1663,0.8505,1.4091,1.5882,1.5149,1.4983,0.4658,0.0598,0.0594,1.1336,1.54,1.4722,1.4762,0.0924,1.4243,1.6697,1.6193,1.6086,0.2274,0.0612,0.061,0.06,0.0596,0.059,0.06,0.0604,0.0595,0.0593,0.0594,0.0585,0.059,0.0571 +61468s,0.0648,0.0743,0.0629,0.0635,0.0643,0.063,0.0626,0.0653,0.063,0.0668,0.0632,0.0624,0.061,0.2752,0.3464,0.2811,0.2456,0.0939,1.2497,1.4425,1.3273,1.3271,0.231,0.0581,0.0613,0.4093,0.463,0.4409,0.4102,0.0951,1.2971,1.453,1.3649,1.3395,0.2209,0.0649,0.0596,0.6183,0.6545,0.6004,0.6311,0.0975,1.3181,1.487,1.3953,1.3615,0.2221,0.0631,0.0584,0.8471,0.8855,0.8497,0.8866,0.0934,1.3596,1.5391,1.4496,1.4227,0.2221,0.0625,0.0627,1.0097,1.2546,1.1722,1.1664,0.8748,1.411,1.5879,1.5149,1.4987,0.4835,0.0599,0.058,1.1404,1.5405,1.4718,1.4775,0.0926,1.4327,1.6713,1.6187,1.6096,0.2276,0.0617,0.061,0.06,0.0595,0.0589,0.0599,0.0602,0.0594,0.0593,0.0595,0.0586,0.0588,0.0575 +62108s,0.065,0.0667,0.0631,0.0637,0.0644,0.063,0.0626,0.0653,0.0631,0.0669,0.0633,0.0624,0.061,0.2754,0.3465,0.2813,0.2458,0.0939,1.2495,1.4422,1.3272,1.3274,0.2312,0.061,0.0615,0.4093,0.4623,0.441,0.4102,0.0952,1.2971,1.4525,1.3645,1.3395,0.221,0.0652,0.0597,0.6193,0.6548,0.601,0.6319,0.0975,1.318,1.4875,1.3952,1.3616,0.2222,0.0597,0.059,0.8477,0.8854,0.8503,0.8866,0.0936,1.361,1.5385,1.4505,1.4219,0.2222,0.0624,0.0625,1.0097,1.2553,1.1713,1.1669,0.9028,1.4132,1.5875,1.514,1.4994,0.5025,0.0598,0.0597,1.149,1.5403,1.4726,1.4778,0.0926,1.4416,1.6719,1.6205,1.6091,0.2278,0.0616,0.0609,0.0601,0.0594,0.0592,0.0601,0.0603,0.0593,0.0594,0.0595,0.0587,0.059,0.057 +62749s,0.0651,0.0667,0.063,0.0638,0.0642,0.0627,0.0627,0.0651,0.063,0.0669,0.0634,0.0624,0.061,0.276,0.3473,0.282,0.2465,0.094,1.2489,1.4413,1.3268,1.328,0.2313,0.0605,0.0612,0.41,0.4632,0.4416,0.4108,0.0952,1.2966,1.4531,1.3636,1.3392,0.2211,0.0647,0.0597,0.6194,0.6543,0.6008,0.6324,0.0974,1.319,1.4871,1.395,1.3618,0.222,0.0633,0.058,0.8482,0.8855,0.85,0.8866,0.0932,1.3614,1.5386,1.4502,1.4232,0.2221,0.0626,0.0623,1.0101,1.2546,1.1715,1.1665,0.9276,1.4142,1.5875,1.5139,1.4988,0.5225,0.0593,0.059,1.1547,1.5406,1.4718,1.477,0.0925,1.4491,1.6713,1.6192,1.6092,0.2278,0.0617,0.0607,0.0599,0.0594,0.059,0.0598,0.0601,0.0593,0.0593,0.0595,0.0586,0.0588,0.0573 +63389s,0.065,0.0738,0.0629,0.0637,0.0642,0.0628,0.0625,0.065,0.0629,0.0673,0.0632,0.0624,0.0609,0.2761,0.3474,0.2823,0.2465,0.0939,1.2498,1.4429,1.3279,1.3289,0.2316,0.0623,0.0614,0.4104,0.4636,0.4421,0.4113,0.0951,1.2974,1.4534,1.365,1.3402,0.2211,0.0647,0.0597,0.6201,0.6549,0.6013,0.6329,0.0976,1.3199,1.4879,1.3948,1.3623,0.2223,0.0606,0.0587,0.8492,0.8854,0.8497,0.8872,0.0934,1.3619,1.5396,1.4499,1.4232,0.2223,0.0624,0.0625,1.0113,1.2549,1.1716,1.1671,0.9557,1.4167,1.5892,1.5138,1.5003,0.5422,0.0585,0.0599,1.1625,1.5416,1.4724,1.4788,0.0926,1.4569,1.6739,1.6206,1.612,0.2281,0.0619,0.0608,0.0599,0.0594,0.059,0.0599,0.0603,0.0593,0.0592,0.0594,0.0587,0.0589,0.0571 +64029s,0.0648,0.07,0.0627,0.0637,0.064,0.0629,0.0624,0.065,0.0631,0.0666,0.0631,0.0626,0.0609,0.2762,0.3472,0.2821,0.2465,0.0941,1.25,1.4436,1.3266,1.3292,0.2319,0.0639,0.0623,0.4099,0.463,0.4419,0.4111,0.0952,1.2976,1.454,1.3644,1.341,0.2212,0.0647,0.0597,0.6199,0.655,0.6012,0.6335,0.0976,1.3202,1.488,1.3949,1.3625,0.2224,0.0616,0.059,0.8493,0.8852,0.8503,0.8877,0.0935,1.3635,1.5394,1.4502,1.4246,0.2222,0.0623,0.0624,1.0115,1.2551,1.1713,1.1676,0.9818,1.4174,1.5892,1.5135,1.5004,0.5629,0.0591,0.0585,1.1688,1.5411,1.4725,1.4787,0.0926,1.464,1.6745,1.6199,1.6122,0.2282,0.0615,0.0607,0.06,0.0595,0.0591,0.0599,0.0601,0.0591,0.0593,0.0597,0.0585,0.0588,0.0577 +64669s,0.0651,0.0668,0.063,0.0639,0.0643,0.0628,0.0626,0.0653,0.0631,0.0668,0.0632,0.0626,0.061,0.2768,0.3477,0.2827,0.247,0.094,1.249,1.4417,1.3267,1.3288,0.232,0.0586,0.0611,0.4103,0.4628,0.4417,0.4113,0.0952,1.2967,1.453,1.364,1.3406,0.2213,0.0648,0.0595,0.6207,0.6545,0.6014,0.6335,0.0976,1.3192,1.4874,1.3939,1.3626,0.2224,0.0638,0.0588,0.8497,0.8854,0.8503,0.8875,0.0933,1.3628,1.5375,1.45,1.4232,0.2224,0.0624,0.0623,1.0121,1.2549,1.1717,1.1684,1.0071,1.4186,1.5881,1.5128,1.4994,0.5829,0.0598,0.0578,1.1752,1.5408,1.4724,1.4793,0.0926,1.47,1.674,1.6184,1.6105,0.2284,0.0614,0.0606,0.06,0.0595,0.0589,0.0599,0.06,0.0592,0.0593,0.0594,0.0586,0.0588,0.0574 +65309s,0.0653,0.0749,0.063,0.0637,0.0641,0.0629,0.0624,0.0652,0.0631,0.0668,0.0632,0.0625,0.0609,0.2772,0.3479,0.2829,0.2472,0.0941,1.2493,1.4422,1.3267,1.3301,0.2322,0.0617,0.0593,0.4103,0.4625,0.4419,0.4116,0.0951,1.2968,1.453,1.3638,1.3408,0.2212,0.0646,0.0596,0.6204,0.6555,0.602,0.6334,0.0976,1.3184,1.4868,1.3936,1.3619,0.2225,0.062,0.0582,0.8495,0.8847,0.8492,0.887,0.0935,1.3625,1.5381,1.4481,1.4226,0.2225,0.0624,0.0622,1.0124,1.2548,1.1714,1.1677,1.0318,1.4187,1.5878,1.5123,1.4993,0.6025,0.0607,0.0585,1.1817,1.5394,1.4715,1.4788,0.0926,1.4764,1.6751,1.6182,1.6102,0.2284,0.0612,0.0609,0.0601,0.0597,0.059,0.0599,0.0602,0.0592,0.0592,0.0595,0.0586,0.059,0.0576 +65950s,0.0648,0.0669,0.0628,0.0635,0.064,0.0626,0.0624,0.0652,0.0627,0.0666,0.0632,0.0626,0.0608,0.2776,0.3482,0.2833,0.2476,0.094,1.2492,1.4426,1.3269,1.3302,0.2323,0.0587,0.0615,0.4105,0.4637,0.4425,0.4118,0.095,1.2966,1.4532,1.363,1.3406,0.2213,0.0646,0.0593,0.6208,0.6552,0.6017,0.6336,0.0976,1.3191,1.4871,1.3936,1.3625,0.2226,0.0604,0.0582,0.8509,0.8849,0.8484,0.888,0.0934,1.3633,1.5381,1.4489,1.4237,0.2224,0.0623,0.0622,1.0128,1.2547,1.1711,1.1675,1.0584,1.4194,1.588,1.5118,1.4996,0.6239,0.0595,0.0584,1.188,1.5408,1.4706,1.4796,0.0926,1.4821,1.6761,1.6186,1.6111,0.2287,0.0611,0.0607,0.06,0.0595,0.059,0.0599,0.0602,0.0592,0.0593,0.0595,0.0585,0.0589,0.0574 +66590s,0.0648,0.0669,0.0628,0.0638,0.0641,0.0628,0.0626,0.0651,0.0629,0.0668,0.063,0.0624,0.061,0.2784,0.3486,0.2837,0.2481,0.094,1.2491,1.4415,1.3261,1.3308,0.2324,0.0617,0.0607,0.4106,0.4633,0.4427,0.412,0.0951,1.2973,1.4535,1.3636,1.3413,0.2214,0.0645,0.0595,0.6205,0.6556,0.6014,0.6339,0.0975,1.3191,1.4877,1.3934,1.3624,0.2227,0.0596,0.0584,0.8515,0.8851,0.8491,0.8878,0.0934,1.3639,1.5387,1.449,1.4245,0.2225,0.0622,0.0622,1.0135,1.2552,1.1714,1.1685,1.0835,1.4208,1.5883,1.5125,1.5003,0.6449,0.0604,0.0595,1.1947,1.5412,1.472,1.4796,0.0927,1.4883,1.6771,1.6195,1.6117,0.2289,0.0612,0.0608,0.06,0.0596,0.059,0.0599,0.0603,0.0594,0.0593,0.0595,0.0586,0.059,0.0582 +67230s,0.0648,0.0672,0.0628,0.0636,0.0642,0.0629,0.0625,0.0653,0.063,0.0668,0.0632,0.0625,0.0608,0.2784,0.3484,0.2836,0.248,0.0941,1.2489,1.4427,1.3263,1.3313,0.2326,0.0625,0.0611,0.4116,0.4655,0.4429,0.4128,0.0951,1.2964,1.4523,1.3625,1.341,0.2216,0.0646,0.0595,0.6213,0.6556,0.6009,0.6342,0.0976,1.3196,1.4874,1.3934,1.3629,0.2228,0.0631,0.0583,0.8514,0.8854,0.8494,0.888,0.0935,1.3637,1.5384,1.4487,1.4237,0.2227,0.0623,0.0622,1.014,1.2549,1.172,1.1681,1.107,1.4211,1.5883,1.5118,1.5002,0.6668,0.059,0.0595,1.1999,1.5403,1.4699,1.4785,0.0928,1.4926,1.6763,1.6186,1.6103,0.2293,0.0613,0.0607,0.06,0.0595,0.0589,0.0598,0.0604,0.0592,0.0594,0.0596,0.0586,0.0588,0.0579 +67870s,0.0653,0.0668,0.0628,0.0637,0.064,0.0626,0.0624,0.065,0.0629,0.0668,0.0629,0.0625,0.0606,0.2788,0.349,0.2843,0.2485,0.0941,1.2487,1.4413,1.3261,1.3308,0.2328,0.0605,0.0608,0.4118,0.4646,0.443,0.4127,0.0951,1.2962,1.4527,1.363,1.3415,0.2216,0.0644,0.0593,0.6215,0.6554,0.6012,0.6343,0.0976,1.3189,1.4874,1.3933,1.3633,0.2227,0.062,0.0601,0.8522,0.8855,0.8498,0.8886,0.0934,1.3633,1.5384,1.4479,1.4244,0.2227,0.0625,0.0618,1.0142,1.2549,1.1714,1.1687,1.1294,1.4213,1.5883,1.5115,1.501,0.6888,0.0609,0.0577,1.2061,1.5404,1.4707,1.4791,0.0926,1.4986,1.6751,1.618,1.6111,0.2295,0.061,0.0604,0.0597,0.0594,0.0588,0.0596,0.0601,0.0591,0.0592,0.0606,0.0586,0.0586,0.0575 +68510s,0.0652,0.0744,0.0629,0.0635,0.064,0.0626,0.0625,0.0652,0.0628,0.0668,0.0631,0.0624,0.061,0.2791,0.3491,0.2843,0.2486,0.0942,1.2488,1.4422,1.3266,1.3318,0.2329,0.0609,0.0631,0.412,0.4647,0.4438,0.4131,0.0953,1.2968,1.4539,1.3634,1.3428,0.2217,0.0643,0.0594,0.6218,0.6551,0.6015,0.6355,0.0975,1.3197,1.4879,1.3934,1.3652,0.2229,0.0612,0.0583,0.853,0.8853,0.8496,0.8891,0.0935,1.3642,1.5393,1.4491,1.426,0.2229,0.0622,0.0621,1.0148,1.2554,1.1719,1.169,1.1524,1.4223,1.5883,1.512,1.5015,0.712,0.0591,0.0592,1.2121,1.5415,1.4723,1.481,0.0928,1.5038,1.6779,1.6189,1.6129,0.23,0.061,0.0605,0.0599,0.0597,0.0589,0.0598,0.0599,0.0592,0.0594,0.0601,0.0587,0.0586,0.0574 +69154s,0.065,0.0669,0.063,0.0638,0.0641,0.0628,0.0625,0.0651,0.063,0.0669,0.0632,0.0625,0.061,0.2796,0.3495,0.2849,0.2493,0.0942,1.2492,1.4419,1.327,1.3317,0.2331,0.058,0.0612,0.4118,0.4653,0.4438,0.4135,0.0954,1.2968,1.4533,1.3632,1.3428,0.2218,0.0645,0.0594,0.6223,0.6562,0.6019,0.6358,0.0977,1.3189,1.4874,1.3931,1.3648,0.2229,0.0616,0.0582,0.8532,0.8856,0.8495,0.889,0.0936,1.3641,1.5387,1.4476,1.4256,0.2229,0.0624,0.0621,1.0152,1.2557,1.1719,1.1695,1.1714,1.4221,1.5884,1.5113,1.5014,0.7346,0.0594,0.0601,1.2174,1.5409,1.4713,1.4801,0.0928,1.5085,1.677,1.6192,1.6121,0.2301,0.061,0.0606,0.0599,0.0595,0.0589,0.0598,0.06,0.0592,0.0593,0.0601,0.0586,0.0589,0.0574 +69794s,0.0649,0.0747,0.063,0.0637,0.064,0.0627,0.0626,0.0649,0.0631,0.0667,0.0632,0.0625,0.0611,0.2796,0.3496,0.2853,0.2494,0.0944,1.2491,1.4422,1.3263,1.3324,0.233,0.0603,0.0623,0.4122,0.4649,0.444,0.414,0.0953,1.2967,1.4538,1.3639,1.3432,0.2219,0.0644,0.0597,0.6219,0.6563,0.6022,0.6361,0.0977,1.3185,1.4884,1.3933,1.3639,0.2231,0.0619,0.0579,0.8536,0.8855,0.8498,0.8899,0.0937,1.3643,1.5392,1.4486,1.4255,0.223,0.0623,0.062,1.016,1.2559,1.1716,1.1698,1.1873,1.4223,1.589,1.5112,1.5021,0.7575,0.0588,0.0584,1.2238,1.5402,1.4718,1.4809,0.0929,1.512,1.677,1.6185,1.6125,0.2302,0.061,0.0609,0.06,0.0594,0.0591,0.0598,0.0601,0.0594,0.0594,0.0595,0.0585,0.059,0.0586 +70434s,0.0651,0.0745,0.0629,0.0636,0.0642,0.0627,0.0625,0.0651,0.063,0.0667,0.0631,0.0622,0.0609,0.2797,0.3493,0.285,0.2492,0.0944,1.2492,1.443,1.3265,1.3323,0.2333,0.0592,0.0612,0.412,0.4642,0.4438,0.4141,0.0952,1.2966,1.4548,1.3639,1.3438,0.222,0.0645,0.0594,0.6228,0.6562,0.6022,0.6357,0.0976,1.3186,1.4884,1.3925,1.3646,0.223,0.0615,0.0583,0.8544,0.8857,0.8501,0.89,0.0936,1.3647,1.5389,1.4486,1.4263,0.2231,0.0622,0.0623,1.0165,1.2559,1.1717,1.1699,1.2009,1.4224,1.5901,1.5114,1.5018,0.7798,0.06,0.0582,1.2288,1.5405,1.4717,1.4808,0.0928,1.5149,1.6783,1.6186,1.6129,0.2303,0.0612,0.0606,0.0598,0.0595,0.059,0.06,0.0601,0.0591,0.0593,0.0601,0.0587,0.0588,0.058 +71074s,0.0649,0.0668,0.0629,0.0636,0.064,0.0627,0.0624,0.0652,0.0629,0.0667,0.0632,0.0623,0.0609,0.28,0.3496,0.2851,0.2497,0.0943,1.2481,1.4421,1.3261,1.3319,0.2333,0.0614,0.0604,0.4121,0.4662,0.4441,0.4149,0.0953,1.2956,1.4521,1.3631,1.3432,0.222,0.0643,0.0596,0.6232,0.657,0.6025,0.6362,0.0977,1.3192,1.4873,1.3926,1.3648,0.2232,0.0617,0.0583,0.8542,0.8855,0.8503,0.8897,0.0935,1.364,1.5383,1.4475,1.4254,0.2231,0.0622,0.0622,1.0166,1.2556,1.1715,1.1699,1.2121,1.422,1.5883,1.51,1.5018,0.8061,0.0603,0.0585,1.2326,1.5414,1.47,1.4804,0.0929,1.5174,1.6764,1.6171,1.611,0.2305,0.0612,0.0607,0.0597,0.0593,0.0589,0.0597,0.0599,0.0591,0.0593,0.0602,0.0587,0.0588,0.0572 +71714s,0.0649,0.0746,0.0629,0.0637,0.064,0.0625,0.0627,0.0653,0.0629,0.0669,0.0632,0.0626,0.0609,0.2803,0.3499,0.2857,0.2501,0.0943,1.248,1.4414,1.326,1.3325,0.2331,0.0585,0.0603,0.4123,0.4649,0.4438,0.4149,0.0952,1.2963,1.4544,1.3633,1.3438,0.2219,0.0642,0.0594,0.6232,0.6572,0.6019,0.6358,0.0977,1.3184,1.4877,1.3925,1.3649,0.2231,0.061,0.0587,0.8548,0.886,0.8501,0.8902,0.0934,1.3643,1.5389,1.448,1.4266,0.2231,0.0622,0.0623,1.0172,1.2554,1.1713,1.1698,1.2225,1.422,1.5882,1.5099,1.5017,0.829,0.0594,0.0584,1.2377,1.5408,1.4698,1.4812,0.0926,1.5198,1.6784,1.6163,1.6124,0.2305,0.0612,0.0606,0.0597,0.0592,0.0589,0.0596,0.0599,0.0591,0.0593,0.0607,0.0587,0.0587,0.0573 +72355s,0.0648,0.0668,0.0629,0.0636,0.064,0.0629,0.0626,0.0652,0.0628,0.0667,0.063,0.0625,0.0609,0.2802,0.3497,0.2854,0.2501,0.0942,1.2487,1.4427,1.3269,1.3334,0.2334,0.0593,0.0593,0.4122,0.4653,0.4439,0.415,0.0954,1.2963,1.4542,1.3639,1.3444,0.2221,0.0645,0.0595,0.6233,0.6574,0.6025,0.6362,0.0978,1.3187,1.4875,1.3927,1.3649,0.2233,0.0633,0.0593,0.8558,0.886,0.8501,0.8904,0.0935,1.3642,1.5394,1.4478,1.4259,0.2232,0.0621,0.0625,1.018,1.2561,1.1719,1.1701,1.2305,1.4221,1.5887,1.5107,1.5027,0.8534,0.0606,0.0581,1.242,1.5407,1.4707,1.4812,0.0928,1.5225,1.6773,1.6178,1.6128,0.231,0.061,0.0606,0.0598,0.0592,0.0588,0.0598,0.0599,0.0592,0.0593,0.0603,0.0587,0.0587,0.0578 +72995s,0.0649,0.0668,0.0627,0.0635,0.0641,0.0627,0.0625,0.0649,0.0628,0.0667,0.0629,0.0625,0.0608,0.281,0.3505,0.2863,0.2508,0.0945,1.2481,1.4418,1.3261,1.3324,0.2334,0.0621,0.0605,0.4129,0.4672,0.4447,0.4156,0.0953,1.296,1.4536,1.3625,1.3435,0.2222,0.0643,0.0593,0.6239,0.6571,0.6021,0.6365,0.0977,1.3178,1.4873,1.392,1.3655,0.2235,0.0631,0.0588,0.8566,0.8861,0.8497,0.8904,0.0935,1.3638,1.5392,1.4476,1.4266,0.2234,0.0621,0.0623,1.0183,1.2563,1.1721,1.171,1.2361,1.4223,1.5896,1.5099,1.5016,0.8759,0.0598,0.0581,1.2458,1.5407,1.4705,1.4815,0.0927,1.5242,1.6778,1.6175,1.6117,0.2311,0.0611,0.0607,0.0598,0.0593,0.0588,0.0597,0.06,0.0591,0.0594,0.0607,0.0586,0.0587,0.0577 +73635s,0.0652,0.0667,0.0629,0.0636,0.0638,0.0625,0.0625,0.065,0.0629,0.0667,0.0628,0.0622,0.0608,0.2811,0.3505,0.2864,0.2512,0.0945,1.2485,1.4428,1.3273,1.3335,0.2333,0.0618,0.06,0.4129,0.4675,0.4449,0.4161,0.0953,1.2962,1.4534,1.3639,1.3446,0.2223,0.0644,0.0595,0.6243,0.6572,0.6023,0.6374,0.0976,1.3183,1.4886,1.393,1.3661,0.2236,0.0617,0.0585,0.8561,0.8863,0.8502,0.8906,0.0935,1.3643,1.5395,1.4477,1.4269,0.2235,0.0619,0.0624,1.0193,1.257,1.1719,1.1713,1.2418,1.4233,1.589,1.509,1.5028,0.9009,0.0599,0.0581,1.25,1.5409,1.4714,1.4832,0.093,1.5271,1.6786,1.6181,1.6141,0.2311,0.061,0.0607,0.0598,0.0593,0.059,0.0596,0.06,0.0591,0.0593,0.0607,0.0586,0.0587,0.058 +74275s,0.065,0.0742,0.0627,0.0636,0.064,0.0627,0.0624,0.0653,0.063,0.0669,0.0629,0.0623,0.0609,0.2814,0.3508,0.2869,0.2513,0.0945,1.2484,1.442,1.3274,1.3338,0.2333,0.0627,0.0625,0.413,0.4672,0.4449,0.4162,0.0954,1.2964,1.4534,1.3633,1.345,0.2223,0.0643,0.0592,0.6244,0.6577,0.6025,0.6381,0.0977,1.3175,1.4887,1.3929,1.366,0.2236,0.0617,0.0594,0.8571,0.8864,0.8504,0.8908,0.0936,1.3647,1.5394,1.4484,1.4276,0.2234,0.0618,0.0623,1.0195,1.2566,1.1722,1.1713,1.2464,1.4221,1.5896,1.51,1.503,0.9237,0.0631,0.0587,1.2533,1.5413,1.4692,1.4809,0.0928,1.5283,1.6789,1.6178,1.6125,0.2314,0.061,0.0605,0.0598,0.0594,0.059,0.0595,0.0599,0.0591,0.0593,0.0609,0.0585,0.0586,0.0582 +74915s,0.0648,0.0747,0.0629,0.0635,0.0641,0.0627,0.0624,0.0651,0.0626,0.0667,0.0631,0.0625,0.0609,0.2823,0.3516,0.2875,0.2522,0.0949,1.2486,1.4423,1.3275,1.3341,0.2335,0.06,0.0609,0.4132,0.4678,0.4455,0.4164,0.0955,1.296,1.4547,1.3637,1.3449,0.2225,0.0645,0.0594,0.6248,0.6569,0.6024,0.6388,0.0977,1.3182,1.4892,1.3937,1.3668,0.2237,0.0621,0.059,0.858,0.8866,0.8501,0.8914,0.0936,1.3639,1.5394,1.4486,1.4275,0.2235,0.0621,0.0626,1.0198,1.2568,1.1716,1.1715,1.2503,1.423,1.5906,1.5098,1.5029,0.9492,0.0602,0.0592,1.2568,1.5421,1.4705,1.4835,0.0929,1.5301,1.6791,1.6167,1.6131,0.2315,0.061,0.0609,0.06,0.0595,0.0589,0.0597,0.0602,0.0593,0.0592,0.0598,0.0586,0.0588,0.0586 +75556s,0.0652,0.0672,0.0628,0.0636,0.064,0.0628,0.0626,0.0651,0.063,0.0667,0.0632,0.0624,0.061,0.282,0.3511,0.2875,0.252,0.0948,1.249,1.4427,1.3281,1.3341,0.2335,0.0594,0.0614,0.4128,0.4667,0.445,0.4163,0.0954,1.2963,1.4547,1.3642,1.3451,0.2225,0.0648,0.0593,0.6248,0.6579,0.6028,0.6384,0.0979,1.3176,1.4891,1.3923,1.3671,0.2238,0.0617,0.0591,0.8584,0.8867,0.8495,0.8916,0.0937,1.3629,1.5396,1.447,1.4274,0.2236,0.0623,0.0625,1.0202,1.2568,1.1715,1.1713,1.2537,1.4223,1.5879,1.5088,1.5031,0.9736,0.06,0.0594,1.2605,1.5414,1.4707,1.4825,0.0929,1.5307,1.679,1.6181,1.6129,0.2315,0.0611,0.0606,0.0598,0.0595,0.059,0.0597,0.0599,0.0592,0.0592,0.0596,0.0586,0.0587,0.0574 +76196s,0.0651,0.0669,0.0629,0.0636,0.0642,0.0626,0.0623,0.065,0.0627,0.0666,0.0629,0.0623,0.0608,0.2821,0.3513,0.2873,0.2519,0.0947,1.249,1.4431,1.328,1.3353,0.2335,0.0594,0.0608,0.4135,0.4671,0.445,0.4166,0.0954,1.2961,1.4548,1.3645,1.3451,0.2226,0.0645,0.0594,0.6248,0.6584,0.6035,0.639,0.0978,1.318,1.4886,1.393,1.3673,0.224,0.063,0.0605,0.859,0.8866,0.8504,0.8916,0.0937,1.3632,1.5395,1.4479,1.4279,0.2237,0.0621,0.0623,1.0209,1.2575,1.1721,1.1722,1.2565,1.423,1.5906,1.5093,1.5035,0.9957,0.0607,0.0581,1.2629,1.5411,1.4702,1.4838,0.0929,1.5325,1.679,1.6175,1.613,0.2316,0.0609,0.0606,0.0598,0.0595,0.0589,0.0596,0.0599,0.0592,0.0593,0.06,0.0585,0.0586,0.0573 +76836s,0.0652,0.0748,0.0629,0.0634,0.0641,0.0625,0.0626,0.0652,0.0628,0.0666,0.063,0.0623,0.0609,0.2828,0.3514,0.288,0.2527,0.0948,1.2486,1.4421,1.3274,1.3347,0.2335,0.0599,0.0604,0.4133,0.4667,0.4453,0.4167,0.0954,1.2958,1.4545,1.3645,1.3462,0.2225,0.0644,0.0594,0.6255,0.6584,0.603,0.639,0.0979,1.3179,1.4883,1.3927,1.3666,0.2239,0.0626,0.0581,0.8589,0.8867,0.85,0.8907,0.0939,1.362,1.5398,1.4478,1.427,0.2239,0.0618,0.0625,1.0214,1.2576,1.1721,1.1718,1.258,1.4221,1.5887,1.5087,1.5033,1.021,0.0615,0.0582,1.2648,1.5409,1.4695,1.4843,0.093,1.5335,1.6797,1.6167,1.6137,0.2319,0.061,0.0606,0.0599,0.0596,0.0589,0.0596,0.0599,0.0591,0.0593,0.0594,0.0586,0.0585,0.0576 +77476s,0.0649,0.0674,0.0631,0.0636,0.0642,0.0627,0.0627,0.0652,0.0629,0.0669,0.0631,0.0623,0.061,0.2827,0.3515,0.2881,0.2529,0.0949,1.249,1.4424,1.3279,1.3355,0.2336,0.0616,0.0608,0.4136,0.4681,0.4459,0.4173,0.0956,1.2964,1.4538,1.3637,1.3452,0.2228,0.0645,0.0595,0.626,0.6587,0.6034,0.6396,0.0979,1.3172,1.4886,1.3925,1.3669,0.2242,0.0616,0.0586,0.8595,0.887,0.85,0.8916,0.0938,1.363,1.5393,1.4475,1.4268,0.2239,0.0621,0.0624,1.0214,1.2575,1.1717,1.1725,1.2598,1.4215,1.5888,1.5088,1.5035,1.0461,0.0601,0.0584,1.2667,1.5411,1.47,1.4836,0.0931,1.5333,1.6788,1.6166,1.6125,0.2321,0.0611,0.0607,0.0599,0.0595,0.0589,0.0598,0.0599,0.0592,0.0594,0.0607,0.0587,0.0587,0.0578 +78117s,0.0649,0.0749,0.0628,0.0635,0.064,0.0626,0.0624,0.0651,0.063,0.0667,0.0629,0.0624,0.061,0.283,0.3517,0.2882,0.253,0.0949,1.2485,1.4428,1.3278,1.335,0.2334,0.0577,0.0603,0.4138,0.4683,0.4464,0.4175,0.0954,1.2962,1.4535,1.3647,1.3454,0.2228,0.0642,0.0591,0.6259,0.6583,0.6034,0.6403,0.0979,1.3172,1.4884,1.393,1.3673,0.2241,0.0617,0.0586,0.8608,0.8867,0.8497,0.8918,0.0937,1.3627,1.5398,1.4476,1.4275,0.2239,0.0618,0.0622,1.0221,1.2575,1.1716,1.1728,1.2613,1.422,1.5896,1.5085,1.5039,1.0708,0.0595,0.0579,1.2681,1.5411,1.4695,1.4837,0.093,1.5343,1.6791,1.6161,1.6129,0.2319,0.0608,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0603,0.0586,0.0585,0.0581 +78757s,0.0649,0.0671,0.0628,0.0636,0.0642,0.0626,0.0627,0.0649,0.0628,0.0667,0.0629,0.0625,0.061,0.2835,0.352,0.2881,0.2533,0.0951,1.2489,1.4421,1.3282,1.3356,0.2333,0.0616,0.0611,0.414,0.4688,0.4461,0.4177,0.0956,1.2954,1.4536,1.3649,1.3468,0.223,0.0643,0.0591,0.6263,0.6588,0.6035,0.6397,0.0979,1.3173,1.4882,1.3925,1.3673,0.2242,0.0617,0.0587,0.8607,0.8868,0.8497,0.8924,0.0937,1.3629,1.5397,1.4477,1.4281,0.2239,0.0617,0.0625,1.0222,1.2571,1.1723,1.1729,1.2629,1.4213,1.5884,1.5087,1.5047,1.0942,0.0593,0.0579,1.2711,1.5411,1.4708,1.4835,0.093,1.5353,1.6785,1.6166,1.6137,0.2321,0.0607,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0614,0.0587,0.0586,0.0574 +79397s,0.0652,0.0747,0.0629,0.0635,0.0638,0.0626,0.0626,0.065,0.0629,0.0667,0.0631,0.063,0.0608,0.2833,0.352,0.2881,0.2533,0.0951,1.2488,1.4424,1.3286,1.3362,0.2333,0.0592,0.0602,0.4139,0.4686,0.4464,0.4178,0.0955,1.2952,1.4549,1.3647,1.3459,0.2229,0.0644,0.0595,0.6261,0.6582,0.6042,0.6404,0.0979,1.3178,1.4886,1.393,1.3676,0.2242,0.062,0.0594,0.8615,0.8868,0.8499,0.893,0.0939,1.3628,1.5399,1.4474,1.4288,0.2241,0.0618,0.0624,1.0222,1.2571,1.1718,1.1729,1.2629,1.4213,1.5896,1.5079,1.5039,1.1196,0.0605,0.0583,1.2718,1.5412,1.4696,1.4833,0.093,1.536,1.6777,1.6155,1.6128,0.2322,0.0606,0.0607,0.0597,0.0594,0.0588,0.0595,0.0598,0.0591,0.0593,0.0599,0.0586,0.0587,0.0571 +80037s,0.0655,0.075,0.063,0.0634,0.064,0.0628,0.0624,0.065,0.0627,0.0668,0.063,0.0625,0.061,0.284,0.3521,0.2889,0.2537,0.0952,1.2494,1.4421,1.3286,1.3367,0.2332,0.065,0.0615,0.4144,0.4693,0.4471,0.4185,0.0956,1.2962,1.4541,1.3651,1.3466,0.2232,0.0643,0.0595,0.626,0.6586,0.604,0.6401,0.098,1.3173,1.4888,1.3941,1.3687,0.2243,0.0644,0.0599,0.8615,0.8869,0.8499,0.8931,0.0938,1.3628,1.5404,1.4482,1.4288,0.2243,0.0615,0.0624,1.0232,1.2579,1.1727,1.1739,1.2654,1.421,1.5907,1.5083,1.5052,1.1443,0.0601,0.059,1.2741,1.5424,1.47,1.4844,0.0932,1.5373,1.681,1.6164,1.6145,0.2322,0.0606,0.0607,0.0599,0.0595,0.0589,0.0597,0.0601,0.0592,0.0594,0.0606,0.0586,0.0585,0.0577 +80677s,0.0658,0.0706,0.063,0.0639,0.064,0.0628,0.0624,0.0655,0.0629,0.0676,0.0631,0.0627,0.0611,0.2841,0.3522,0.2891,0.2538,0.0954,1.2492,1.4424,1.3294,1.3365,0.2333,0.0591,0.0611,0.4145,0.4697,0.4472,0.4184,0.0956,1.2957,1.4538,1.3651,1.347,0.2232,0.0644,0.0595,0.6267,0.6586,0.604,0.6408,0.0981,1.3172,1.4893,1.3931,1.3681,0.2245,0.0611,0.0587,0.8622,0.8869,0.8498,0.8932,0.094,1.362,1.5402,1.448,1.4286,0.2244,0.0619,0.0625,1.023,1.2572,1.1729,1.1734,1.2657,1.4201,1.5904,1.5076,1.5042,1.1692,0.0598,0.059,1.275,1.5417,1.4696,1.4834,0.0932,1.5367,1.678,1.6172,1.6133,0.2324,0.0608,0.0608,0.0598,0.0597,0.0589,0.0597,0.06,0.0593,0.0594,0.0596,0.0586,0.0587,0.0573 +81318s,0.065,0.0668,0.0628,0.0636,0.0639,0.0627,0.0624,0.0651,0.0627,0.0668,0.063,0.0625,0.0611,0.2848,0.3531,0.2899,0.2546,0.0954,1.2486,1.4416,1.3287,1.3366,0.2331,0.0629,0.061,0.4148,0.4701,0.4475,0.4191,0.0955,1.2954,1.4537,1.3648,1.3469,0.2232,0.0642,0.0592,0.6267,0.6588,0.6042,0.6419,0.098,1.3173,1.4889,1.394,1.3686,0.2245,0.0606,0.059,0.8622,0.8869,0.8497,0.8934,0.0938,1.3618,1.5394,1.4478,1.4285,0.2245,0.0617,0.0626,1.0235,1.2572,1.1727,1.1736,1.2664,1.4199,1.5884,1.5076,1.5039,1.192,0.0621,0.0582,1.276,1.5424,1.4694,1.4841,0.0931,1.5367,1.6791,1.6158,1.613,0.2324,0.0606,0.0606,0.0597,0.0596,0.0588,0.0595,0.0599,0.0593,0.0592,0.0603,0.0585,0.0586,0.0574 +81958s,0.065,0.0748,0.0628,0.0635,0.0639,0.0625,0.0624,0.0648,0.0628,0.0665,0.063,0.0626,0.061,0.2849,0.3531,0.29,0.2549,0.0956,1.2491,1.4425,1.3288,1.3375,0.2333,0.0611,0.0608,0.4146,0.4687,0.4472,0.419,0.0956,1.2967,1.4546,1.3664,1.3483,0.2233,0.0643,0.0594,0.6271,0.6591,0.6045,0.6419,0.098,1.3178,1.49,1.3947,1.3695,0.2247,0.0615,0.0622,0.863,0.8873,0.8502,0.8941,0.0938,1.3621,1.5405,1.4482,1.4297,0.2246,0.0617,0.0625,1.0245,1.2578,1.173,1.1741,1.2677,1.4198,1.5902,1.5087,1.5048,1.2161,0.0605,0.0581,1.2781,1.5423,1.4708,1.485,0.0932,1.5389,1.6802,1.6164,1.615,0.2327,0.0606,0.0606,0.0597,0.0595,0.0589,0.0595,0.0598,0.0591,0.0593,0.0603,0.0585,0.0585,0.057 +82598s,0.065,0.067,0.063,0.0638,0.0641,0.0626,0.0626,0.0651,0.0628,0.0668,0.0634,0.0627,0.061,0.2849,0.3529,0.2901,0.2548,0.0956,1.2497,1.4429,1.3301,1.3375,0.2332,0.0588,0.0611,0.4144,0.4694,0.4471,0.4194,0.0956,1.2966,1.4545,1.3661,1.3486,0.2234,0.0644,0.0595,0.6269,0.6603,0.6048,0.6422,0.0981,1.3169,1.4891,1.3944,1.3692,0.2249,0.0622,0.0582,0.8633,0.8873,0.8502,0.8938,0.0941,1.3614,1.5402,1.4479,1.429,0.2247,0.0618,0.0624,1.0248,1.2583,1.1738,1.1751,1.2672,1.4206,1.5901,1.5077,1.5053,1.238,0.0594,0.0586,1.2786,1.5419,1.4704,1.486,0.0932,1.5394,1.6796,1.6165,1.6133,0.2326,0.0607,0.0608,0.0597,0.0595,0.0591,0.0597,0.06,0.0592,0.0594,0.0606,0.0586,0.0586,0.0577 +83238s,0.065,0.0672,0.0631,0.0636,0.064,0.0627,0.0627,0.0651,0.063,0.0669,0.0636,0.0628,0.0609,0.2855,0.3533,0.2903,0.2553,0.0957,1.2495,1.4426,1.3299,1.338,0.2331,0.0603,0.0612,0.4148,0.4695,0.4478,0.4196,0.0957,1.2958,1.4548,1.3664,1.3482,0.2235,0.0642,0.0594,0.6275,0.6599,0.6055,0.6428,0.0981,1.3169,1.4886,1.3948,1.3691,0.225,0.0625,0.0584,0.8642,0.8876,0.8501,0.8944,0.0941,1.3618,1.5395,1.4484,1.43,0.2247,0.0618,0.0626,1.0253,1.258,1.1739,1.1751,1.2676,1.4201,1.5897,1.5085,1.5055,1.2615,0.0621,0.0583,1.2793,1.5422,1.4694,1.4843,0.0936,1.539,1.6798,1.6152,1.6132,0.2328,0.0606,0.0608,0.0598,0.0595,0.059,0.0597,0.0601,0.0592,0.0594,0.0602,0.0588,0.0587,0.0581 +83879s,0.0648,0.0671,0.0631,0.0639,0.0641,0.0628,0.0626,0.065,0.0627,0.0667,0.0632,0.0625,0.061,0.2856,0.3536,0.2908,0.2554,0.0957,1.249,1.442,1.3296,1.3383,0.2331,0.0617,0.0602,0.4151,0.4703,0.4482,0.4195,0.0959,1.2958,1.4552,1.3665,1.3483,0.2236,0.0643,0.0594,0.6278,0.6599,0.6052,0.6427,0.0982,1.3165,1.4897,1.3942,1.3691,0.225,0.06,0.0585,0.8644,0.8875,0.8499,0.8946,0.094,1.3612,1.5399,1.4476,1.4297,0.2248,0.0616,0.0626,1.0249,1.2578,1.1729,1.175,1.2681,1.4196,1.5895,1.5076,1.505,1.2814,0.06,0.0584,1.28,1.5423,1.4689,1.4849,0.0935,1.5391,1.6798,1.6161,1.6137,0.2328,0.0608,0.0608,0.0596,0.0596,0.0589,0.0597,0.0599,0.059,0.0594,0.0599,0.0587,0.0585,0.0577 +84519s,0.0655,0.075,0.063,0.0637,0.064,0.0625,0.0624,0.0652,0.0629,0.0668,0.0631,0.0627,0.0611,0.2857,0.3536,0.2908,0.2556,0.0958,1.2492,1.4426,1.3295,1.3379,0.2331,0.063,0.0611,0.4152,0.4707,0.448,0.4197,0.0958,1.2957,1.4538,1.3666,1.3487,0.2236,0.0642,0.0593,0.628,0.6592,0.6051,0.6431,0.098,1.3169,1.4897,1.3948,1.3693,0.225,0.06,0.0582,0.8645,0.8878,0.8503,0.8949,0.094,1.3608,1.5394,1.448,1.4298,0.225,0.0616,0.0625,1.0255,1.2579,1.1729,1.175,1.2685,1.4187,1.5882,1.5069,1.5053,1.3019,0.0606,0.0587,1.2805,1.5411,1.4695,1.4851,0.0935,1.5385,1.6798,1.6151,1.6127,0.2327,0.0607,0.0607,0.0598,0.0595,0.0588,0.0596,0.06,0.0591,0.0592,0.0602,0.0587,0.0585,0.0569 +85159s,0.0647,0.075,0.0629,0.0635,0.0642,0.0625,0.0627,0.065,0.0628,0.0666,0.0627,0.0624,0.0611,0.2861,0.354,0.2915,0.2563,0.0958,1.249,1.4417,1.3309,1.338,0.2332,0.0638,0.0622,0.4152,0.4702,0.448,0.4198,0.0958,1.296,1.4541,1.3673,1.3491,0.2238,0.0644,0.059,0.628,0.66,0.605,0.643,0.0982,1.3166,1.4893,1.3947,1.3691,0.2253,0.0637,0.0589,0.8653,0.888,0.8503,0.8948,0.0941,1.3611,1.5408,1.4484,1.4305,0.2252,0.0614,0.0627,1.0259,1.2581,1.1737,1.175,1.2686,1.4191,1.5891,1.5077,1.5053,1.3231,0.0609,0.0583,1.2809,1.5417,1.4704,1.4855,0.0937,1.5385,1.6788,1.6149,1.6131,0.233,0.0606,0.0609,0.06,0.0595,0.059,0.0597,0.06,0.0592,0.0593,0.0597,0.0586,0.0585,0.058 +85799s,0.0655,0.0671,0.0632,0.0638,0.0641,0.0629,0.0625,0.0653,0.0631,0.0667,0.063,0.0627,0.061,0.2862,0.3541,0.2914,0.2565,0.0959,1.2495,1.4424,1.3307,1.3389,0.233,0.0592,0.061,0.4148,0.4694,0.4481,0.4195,0.0958,1.2963,1.4548,1.3669,1.349,0.2238,0.0642,0.0592,0.6278,0.6598,0.6047,0.6435,0.0981,1.3169,1.489,1.395,1.3695,0.2253,0.0612,0.0597,0.8651,0.888,0.8498,0.895,0.094,1.3606,1.5396,1.448,1.4295,0.2252,0.0616,0.0625,1.026,1.2581,1.1742,1.1753,1.2687,1.4182,1.5893,1.5073,1.5055,1.3417,0.0608,0.0581,1.2814,1.5418,1.4701,1.4863,0.0938,1.5394,1.6789,1.6147,1.6138,0.2332,0.0605,0.0608,0.0598,0.0595,0.059,0.0595,0.0598,0.0591,0.0593,0.0643,0.0586,0.0585,0.0576 +Date of measurement: 2010-02-24/Time of measurement: 13:30:10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +C:\Users\Public\Documents\Tecan\Magellan\mth\YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +C:\Users\Public\Documents\Tecan\Magellan\wsp\24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +595nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Unknown user,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +infinite 500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Instrument serial number: ##########,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Plate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Plate Description: [NUN96ft] - Nunclon 96 Flat Transparent,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Plate with Cover: Yes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Barcode: No,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Temperature,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Mode: On,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Temperature: 30.0 ᄀC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Shaking,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Duration: 10 sec,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Mode: Linear,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Amplitude: 2 mm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Frequency: 70.8 rpm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Kinetic Cycle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Duration: 23:59:59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Absorbance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Measurement wavelength: 595 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Measurement bandwidth: 10 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Number of reads: 10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Settle time: 0 ms,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Label: Label1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + Incubation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Total kinetic run time: 23h 49min 59s ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.RData b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.RData new file mode 100755 index 0000000..ffb2842 Binary files /dev/null and b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.RData differ diff --git a/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.txt b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.txt new file mode 100755 index 0000000..435dd9c --- /dev/null +++ b/R/GCAT/inst/extdata/YPDAFEXglucoseTests_2-25-10/default_output.txt @@ -0,0 +1,141 @@ +"row" "plate" "well" "media" "strain" "model" "lag.time, hrs" "lag.time.SE, hrs" "inflection.time, hrs" "max.spec.growth.rate, log.OD/hr" "max.spec.growth.rate.SE, log.OD/hr" "baseline, log.OD" "baseline.SE, log.OD" "amplitude, log.OD" "amplitude.SE, log.OD" "plateau, log.OD" "inoc.log.OD" "max.log.OD" "projected.growth, log.OD" "achieved.growth, log.OD" "baseline.OD" "amplitude.OD" "plateau.OD" "inoc.OD" "max.OD" "projected.growth.OD" "achieved.growth.OD" "shape.par" "shape.par.SE" "R.squared" "RSS" "empty" "asymp.not.reached" "tank" "other" "pdf.file" "page.no" +1 "YPDAFEXglucoseTests_2-25-10" "A01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 2 +2 "YPDAFEXglucoseTests_2-25-10" "B01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 3 +3 "YPDAFEXglucoseTests_2-25-10" "C01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 4 +4 "YPDAFEXglucoseTests_2-25-10" "D01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 5 +5 "YPDAFEXglucoseTests_2-25-10" "E01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 6 +6 "YPDAFEXglucoseTests_2-25-10" "F01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 7 +7 "YPDAFEXglucoseTests_2-25-10" "G01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 8 +8 "YPDAFEXglucoseTests_2-25-10" "H01" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 9 +9 "YPDAFEXglucoseTests_2-25-10" "A02" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 10 +10 "YPDAFEXglucoseTests_2-25-10" "B02" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0 1.75346968441508 9.00872222222222 0.00387129153696364 0.000169526629036836 0.106012627625114 0.00533333077366909 0.0949774510885174 0.0112054835606438 0.200990078713631 0.112280003072039 0.184252861638202 0.0887100756415919 0.0719728585661627 0.111835916265025 0.0996340592954781 0.222612641873017 0.1188260915329 0.202319805217563 0.103786550340117 0.083493713684663 NA NA 0.955970181896241 0.00271004795972451 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 11 +11 "YPDAFEXglucoseTests_2-25-10" "C02" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.40987742434362 0.0533048027754095 4.21822222222222 0.0460029547745148 0.000724535892211916 0.0730406535194956 0.00147448055623566 0.201954494843009 0.00148223223518411 0.274995148362504 0.0732663157203884 0.274994927952796 0.201728832642116 0.201728612232407 0.0757742700360047 0.223792317982719 0.31652428755353 0.0760170590185625 0.316523997378827 0.240507228534967 0.240506938360264 0.265874614443588 0.100707923111372 0.997917404710366 0.00135388203716735 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 12 +12 "YPDAFEXglucoseTests_2-25-10" "D02" "Unknown Media" "Unknown Strain" "logistic sigmoid." 3.07823370582446 0.0432348265726729 5.36222222222222 0.0732442032057736 0.000833850358526795 0.0859165025402299 0.00136428307371176 0.336085738207293 0.00149532024021089 0.422002240747523 0.0889959965972815 0.42200220627278 0.333006244150242 0.333006209675498 0.089715336043938 0.399459006773759 0.525011941846182 0.0930762802930187 0.525011889271788 0.431935661553164 0.431935608978769 NA NA 0.99892015420286 0.00211931922664645 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 13 +13 "YPDAFEXglucoseTests_2-25-10" "E02" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.31104933734427 0.0428738853375245 6.24405555555555 0.0874988597365696 0.000646229450327621 0.0670789147198683 0.00264084519286054 0.496808439056947 0.00261152547593285 0.563887353776815 0.0759549208448961 0.563886450736804 0.487932432931919 0.487931529891908 0.0693798646573409 0.643467664348464 0.757491228469676 0.0789139365323319 0.757489641385495 0.678577291937345 0.678575704853163 1.2232332690843 0.0913419753453248 0.999523017751576 0.00210815425649168 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 14 +14 "YPDAFEXglucoseTests_2-25-10" "F02" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.16160949001608 0.0130132793917631 5.69588888888889 0.0871403273784542 0.000229647034986262 0.0873771888050847 0.000697694045768953 0.569725535280617 0.000706582800205296 0.657102724085702 0.0877050601525881 0.65691395601709 0.569397663933114 0.569208895864502 0.0913082313448255 0.767781791110135 0.929194819859989 0.0916660987091995 0.928830683849576 0.837528721150789 0.837164585140376 0.128377120300513 0.0158490160700108 0.999930578411107 0.000418173571721339 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 15 +15 "YPDAFEXglucoseTests_2-25-10" "G02" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 1.97362815105853 0.16021845812197 6.10105555555556 0.0637129441648277 0.000882845698725157 0.0636642130548074 0.00677504484433783 0.715651375245064 0.00877835069042374 0.779315588299871 0.0726054460832097 0.769574984837188 0.706710142216661 0.696969538753978 0.0657344789473957 1.04551864861753 1.17997975116158 0.0753061869379306 1.1588485154191 1.10467356422365 1.08354232848117 NA NA 0.996368548540555 0.0284187363816129 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 16 +16 "YPDAFEXglucoseTests_2-25-10" "H02" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 17 +17 "YPDAFEXglucoseTests_2-25-10" "A03" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 18 +18 "YPDAFEXglucoseTests_2-25-10" "B03" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0 6.85707463811534 22.1408888888889 0.00240032501380818 0.000622808650861115 0.183471251012776 0.0241038297960887 0.144528358183154 0.243573937919412 0.32799960919593 0.19300839349323 0.240674524266226 0.134991215702699 0.0476661307729958 0.201380426444684 0.155494462222733 0.388188429779618 0.21289297388536 0.272106927985118 0.175295455894257 0.0592139540997572 NA NA 0.790451631963757 0.00713078905920276 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 19 +19 "YPDAFEXglucoseTests_2-25-10" "C03" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 1.9906115314917 0.0691975321280808 3.47938888888889 0.049037411407282 0.00113344209515939 0.113611335404073 0.00175358526967256 0.199753898839363 0.00189317967878135 0.313365234243436 0.113618320794987 0.313364980342489 0.199746913448449 0.199746659547502 0.120316612851937 0.221102206508354 0.368021087941464 0.120324438728759 0.36802074059966 0.247696649212706 0.247696301870901 NA NA 0.993990129878449 0.00350258662967145 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 20 +20 "YPDAFEXglucoseTests_2-25-10" "D03" "Unknown Media" "Unknown Strain" "logistic sigmoid." 2.74248926505973 0.035437954480672 4.43272222222222 0.0945867703490634 0.00125702159386047 0.120482088812658 0.00134117833543308 0.321778875148931 0.0014434874516871 0.442260963961589 0.122204770400314 0.442260963921188 0.320056193561275 0.320056193520873 0.128040536239446 0.379579682874746 0.556221805255072 0.129985465667426 0.556221805192198 0.426236339587646 0.426236339524771 NA NA 0.998757902847438 0.00205103195615211 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 21 +21 "YPDAFEXglucoseTests_2-25-10" "E03" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.06558694902111 0.0312092215590165 5.36222222222222 0.121127558762234 0.000999219508000457 0.0914412473879785 0.00245736134720504 0.492484371503167 0.00245078828605803 0.583925618891146 0.100902026458548 0.583925618815027 0.483023592432598 0.483023592356479 0.0957523964858846 0.636376541441498 0.793063516837805 0.106168261232303 0.793063516701319 0.686895255605501 0.686895255469016 1.8099614528835 0.11749762404479 0.999544726321194 0.00181967924857281 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 22 +22 "YPDAFEXglucoseTests_2-25-10" "F03" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.77641828785608 0.0527034560581212 5.62438888888889 0.129882569921262 0.00113584993704318 0.0943645335434394 0.00505890981001432 0.678399516685425 0.00501032094392126 0.772764050228865 0.114848054862814 0.77276399900153 0.657915995366051 0.657915944138716 0.0989602807937964 0.970721100596954 1.16574421407829 0.121702987308433 1.16574410313299 1.04404122676985 1.04404111582455 1.58781631519902 0.131684418310394 0.999371589849353 0.0046402268216646 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 23 +23 "YPDAFEXglucoseTests_2-25-10" "G03" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.62155169712258 0.0528519100875045 5.64822222222222 0.120898389380839 0.00085666747705881 0.106939410004678 0.00473823141471648 0.792250605021815 0.00464150388859163 0.899190015026493 0.119165060075358 0.899150108989174 0.780024954951135 0.779985048913817 0.112866823840885 1.20836098585375 1.45761167622119 0.126555852336668 1.45751360463476 1.33105582388452 1.33095775229809 0.651987068135623 0.0715475087316549 0.999508942394936 0.00516491712891765 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 24 +24 "YPDAFEXglucoseTests_2-25-10" "H03" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 25 +25 "YPDAFEXglucoseTests_2-25-10" "A04" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 26 +26 "YPDAFEXglucoseTests_2-25-10" "B04" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0 5.07805229649163 14.0137222222222 0.00262196440444693 0.000184379038247711 0.128373352119061 0.0113746218267311 0.0999846427550281 0.0508219597027302 0.228357994874089 0.134971142309161 0.189191274790955 0.0933868525649285 0.0542201324817943 0.136977416391989 0.105153945825447 0.256535078040028 0.144503756139199 0.208272042363683 0.11203132190083 0.0637682862244842 NA NA 0.85538308083977 0.00575026814684176 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 27 +27 "YPDAFEXglucoseTests_2-25-10" "C04" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0.891438191034907 0.0875315881492886 2.31155555555556 0.0535113239026645 0.00124573543576505 0.0881434967648596 0.0030430726219828 0.207061852626777 0.00316468237828018 0.295205349391636 0.0894254269730997 0.295205293002666 0.205779922418537 0.205779866029567 0.0921448300342507 0.230058651786557 0.343402197187588 0.0935457812526346 0.343402121434524 0.249856415934954 0.24985634018189 NA NA 0.991724253334925 0.00363563892033064 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 28 +28 "YPDAFEXglucoseTests_2-25-10" "D04" "Unknown Media" "Unknown Strain" "logistic sigmoid." 1.64713495094778 0.0412877819867957 3.38405555555556 0.0931935829948414 0.00118142555796191 0.0808528951164181 0.00187894207024751 0.326765479915366 0.00196420645231437 0.407618375031784 0.0874704777516756 0.407618375007183 0.320147897280109 0.320147897255508 0.084211392044496 0.386476282514334 0.503233380301545 0.0914100430890148 0.503233380264563 0.41182333721253 0.411823337175548 NA NA 0.998561073647885 0.00184537988196708 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 29 +29 "YPDAFEXglucoseTests_2-25-10" "E04" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.00035125190919 0.0281455448570578 4.31355555555556 0.124952395006035 0.000705710861425023 0.066176309959304 0.00266242496712618 0.497003217265191 0.00264805326268335 0.563179527224495 0.0884800687678949 0.563179527222079 0.4746994584566 0.474699458454184 0.0684150727790216 0.643787807212848 0.756247669676583 0.0925124772737131 0.756247669672339 0.66373519240287 0.663735192398626 2.09745467815794 0.104168282542748 0.999771040591133 0.000720981102550124 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 30 +30 "YPDAFEXglucoseTests_2-25-10" "F04" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.04900717766187 0.066224854828332 4.76638888888889 0.133067446429845 0.00129515567063011 0.0751622402050358 0.00684502426879832 0.656973010100056 0.00678618679816553 0.732135250305092 0.103854789208097 0.732135243310908 0.628280461096995 0.628280454102811 0.0780590412170139 0.92894459254016 1.07951615799459 0.109439340652877 1.07951614345007 0.970076817341713 0.970076802797194 1.62672188639015 0.161151123608519 0.999229593966034 0.00459582695233034 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 31 +31 "YPDAFEXglucoseTests_2-25-10" "G04" "Unknown Media" "Unknown Strain" "logistic sigmoid." 1.9862918042278 0.0661342206052662 5.19538888888889 0.122957281401382 0.00117607965873161 0.0764858915144976 0.00452433434411634 0.79385835220941 0.00487921872529871 0.870344243723908 0.106676772171339 0.8703364785556 0.763667471552569 0.763659706384262 0.0794869603035999 1.21191432769022 1.38773267405029 0.112574581288131 1.38771413297619 1.27515809276216 1.27513955168806 NA NA 0.998885750680601 0.0103824045406079 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 32 +32 "YPDAFEXglucoseTests_2-25-10" "H04" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 33 +33 "YPDAFEXglucoseTests_2-25-10" "A05" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 34 +34 "YPDAFEXglucoseTests_2-25-10" "B05" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0 3.37960858365283 11.4873888888889 0.00260114802439224 0.000171113343666121 0.0996380868853665 0.00702344409232819 0.0812678741827026 0.0218737361493502 0.180905961068069 0.105000794280007 0.157379079130282 0.075905166788062 0.0523782848502749 0.104771014596006 0.084661410443271 0.198302486908548 0.110711492571287 0.17043921889605 0.0875909943372608 0.0597277263247633 NA NA 0.906033844889986 0.00328284811832969 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 35 +35 "YPDAFEXglucoseTests_2-25-10" "C05" "Unknown Media" "Unknown Strain" "gompertz sigmoid" 0.983948331255506 0.112859781965525 2.47838888888889 0.0501739427160517 0.0014420089652692 0.0661469394856897 0.00364271174491049 0.205919620008399 0.00380546097157685 0.272066559494088 0.0672650611064177 0.272066409690128 0.204801498387671 0.204801348583711 0.0683836933831337 0.22865444079244 0.312674369345416 0.0695789443834065 0.312674172701612 0.24309542496201 0.243095228318206 NA NA 0.987488271024712 0.00577672548033435 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 36 +36 "YPDAFEXglucoseTests_2-25-10" "D05" "Unknown Media" "Unknown Strain" "richards sigmoid" 1.86398043856721 0.0558531671153862 3.55088888888889 0.0944346386187149 0.00150539512391036 0.0602064636566113 0.00349724747100135 0.368213530469543 0.00348116509707638 0.428419994126155 0.0619674060244801 0.428419978432962 0.366452588101675 0.366452572408482 0.0620557998346221 0.445150589714197 0.534830565440387 0.0639276665305688 0.534830541353995 0.470902898909819 0.470902874823426 0.412410289167828 0.120556335197892 0.997911612798025 0.0038575229887498 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 37 +37 "YPDAFEXglucoseTests_2-25-10" "E05" "Unknown Media" "Unknown Strain" "logistic sigmoid." 1.99006793199662 0.0351079466631901 4.12288888888889 0.121142575318895 0.00106707300014084 0.0644342398512972 0.00208740707850082 0.517632133390329 0.00221049024230705 0.582066373241626 0.0750837824145655 0.582066368204037 0.506982590827061 0.506982585789472 0.0665554390942191 0.67804954426084 0.789732868500974 0.0779744624046204 0.789732859485036 0.711758406096354 0.711758397080416 NA NA 0.999269039916925 0.00268951955610802 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 38 +38 "YPDAFEXglucoseTests_2-25-10" "F05" "Unknown Media" "Unknown Strain" "logistic sigmoid." 1.9843141430209 0.0344438897925297 4.48038888888889 0.130673511255828 0.0009102976624566 0.0736708018228489 0.00232986504593521 0.655420765590931 0.00247952512560695 0.72909156741378 0.0914028198920642 0.729091436236412 0.637688747521716 0.637688616344348 0.0764523809998565 0.925952721546378 1.07319639280175 0.0957102902741691 1.07319612084532 0.977486102527583 0.977485830571155 NA NA 0.999493885845309 0.00307265449990921 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 39 +39 "YPDAFEXglucoseTests_2-25-10" "G05" "Unknown Media" "Unknown Strain" "logistic sigmoid." 2.10388607337831 0.0485609573830706 5.24305555555556 0.128060724390908 0.000947720098512415 0.0637480626845324 0.00338335492162949 0.806179689300295 0.00365527291991514 0.869927751984827 0.0914242899489073 0.869921741897374 0.77850346203592 0.778497451948466 0.0658238441354071 1.23933666272802 1.38673841018214 0.0957338154889276 1.38672406571867 1.29100459469321 1.29099025022974 NA NA 0.999357534856407 0.00631075803154067 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 40 +40 "YPDAFEXglucoseTests_2-25-10" "H05" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 41 +41 "YPDAFEXglucoseTests_2-25-10" "A06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 42 +42 "YPDAFEXglucoseTests_2-25-10" "B06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 43 +43 "YPDAFEXglucoseTests_2-25-10" "C06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 44 +44 "YPDAFEXglucoseTests_2-25-10" "D06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 45 +45 "YPDAFEXglucoseTests_2-25-10" "E06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 46 +46 "YPDAFEXglucoseTests_2-25-10" "F06" "Unknown Media" "Unknown Strain" "logistic sigmoid." 9.73707676235984 0.0985970534035122 14.6810555555556 0.0827678160106198 0.00119202041680005 -0.000880352187845948 0.00297599235645004 0.821196181129969 0.00723578636175851 0.820315828942123 0.00130662737972163 0.800169424333775 0.819009201562402 0.798862796954054 -0.000879964791548726 1.27321739161308 1.27121704034493 0.00130748138919312 1.22591802122501 1.26990955895573 1.22461053983581 NA NA 0.997343483064722 0.0337108649740509 "I " "L" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 47 +47 "YPDAFEXglucoseTests_2-25-10" "G06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 48 +48 "YPDAFEXglucoseTests_2-25-10" "H06" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 49 +49 "YPDAFEXglucoseTests_2-25-10" "A07" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 50 +50 "YPDAFEXglucoseTests_2-25-10" "B07" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.77043529571833 0.0360628420623705 7.69788888888889 0.0922143076926756 0.000396448198824364 0.0415079420521979 0.0024939806880155 0.670137254811387 0.00244318035757864 0.711645196863585 0.0610249600071162 0.711620409501757 0.650620236856469 0.650595449494641 0.0423814404664091 0.954505567519456 1.03734032887055 0.0629254444827541 1.03728982920453 0.974414884387793 0.974364384721773 1.4963619113461 0.0645035995742297 0.999821079386736 0.00149128792010239 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 51 +51 "YPDAFEXglucoseTests_2-25-10" "C07" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.81401381522114 0.0414172657437824 7.84088888888889 0.0912912499034691 0.000430847219978935 0.0416798125769253 0.00284816950320603 0.691432841148329 0.00278081561800945 0.733112653725254 0.0607785100182575 0.733056393446629 0.672334143706997 0.672277883428372 0.0425606105081318 0.996574258457647 1.08154967782242 0.0626635187959206 1.0814325725518 1.0188861590265 1.01876905375588 1.38211645759186 0.0684414244741087 0.999776277423773 0.00199878407126499 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 52 +52 "YPDAFEXglucoseTests_2-25-10" "D07" "Unknown Media" "Unknown Strain" "richards sigmoid" 4.10969518950279 0.0412228728953147 8.43672222222222 0.088704008575966 0.000394405519889003 0.0340862871852733 0.00276975744049372 0.70953425865252 0.00269646155006053 0.743620545837793 0.0553702984483679 0.743521928172232 0.688250247389426 0.688151629723864 0.034673881973359 1.03304416538455 1.10353769882172 0.0569319224716098 1.10333026307303 1.04660577635011 1.04639834060142 1.51337756529933 0.0684110320188058 0.999797902728699 0.00192728932795895 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 53 +53 "YPDAFEXglucoseTests_2-25-10" "E07" "Unknown Media" "Unknown Strain" "richards sigmoid" 4.24887938478086 0.0432115804682178 8.81805555555556 0.0859527182536688 0.000375029677532563 0.0356447291331235 0.00283858615006587 0.73054813412698 0.00274599571528213 0.766192863260103 0.0570847530989374 0.765947840867417 0.709108110161166 0.70886308776848 0.0362876182839384 1.07621834195843 1.15155936062553 0.0587455385584554 1.15103224498319 1.09281382206707 1.09228670642473 1.43679374016896 0.0664148624074164 0.999795584571703 0.00207184898977108 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 54 +54 "YPDAFEXglucoseTests_2-25-10" "F07" "Unknown Media" "Unknown Strain" "richards sigmoid" 4.18007395312142 0.0466407712716441 8.81805555555556 0.0839684557491972 0.000369759976738274 0.0335662062693272 0.00302321128563783 0.761208315309071 0.00289043060904211 0.794774521578398 0.0523578981772083 0.794000059837111 0.74241662340119 0.741642161659902 0.0341359077403089 1.14086149398729 1.21394174443082 0.0537528112436063 1.2122277950321 1.16018893318721 1.1584749837885 1.13197496403506 0.0608907017398173 0.999775581271097 0.00245341232352347 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 55 +55 "YPDAFEXglucoseTests_2-25-10" "G07" "Unknown Media" "Unknown Strain" "richards sigmoid" 4.31631143939288 0.0375067727591517 9.10405555555556 0.0746869165825098 0.000251011197158741 0.0449034108817944 0.00217539445550943 0.811374095379108 0.0020199780410581 0.856277506260903 0.0531730592633562 0.847610695599428 0.803104446997546 0.794437636336071 0.0459268298793891 1.25099894980635 1.35438019563279 0.054612139727737 1.33406339635061 1.29976805590506 1.27945125662287 0.475355220605967 0.03549891791103 0.99984356158066 0.00187490302158906 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 56 +56 "YPDAFEXglucoseTests_2-25-10" "H07" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 57 +57 "YPDAFEXglucoseTests_2-25-10" "A08" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 58 +58 "YPDAFEXglucoseTests_2-25-10" "B08" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.71231715323206 0.0513772236677379 6.24405555555555 0.114869797815563 0.000679522300954349 0.0686814145642472 0.00460568296459795 0.729956501400163 0.00454362083736724 0.79863791596441 0.100996399779546 0.798636815323626 0.697641516184865 0.697640415544081 0.0710949195446084 1.07499034653627 1.22251161827911 0.106272658930799 1.22250917209352 1.11623895934831 1.11623651316272 1.70292228067724 0.101795481685622 0.999686879664103 0.00266681050440395 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 59 +59 "YPDAFEXglucoseTests_2-25-10" "C08" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.01070189963687 0.0455540489565291 6.55388888888889 0.115107998390645 0.000641488550406568 0.0614813761638786 0.00401667583803556 0.743382938664491 0.00395687845960871 0.80486431482837 0.088530666535353 0.804861736471092 0.716333648293017 0.716331069935739 0.0634106915579287 1.10303794255036 1.23639303286004 0.0925677573644961 1.23638726664722 1.14382527549554 1.14381950928273 1.57881075668526 0.0887320004643622 0.999717695034928 0.00263054987530886 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 60 +60 "YPDAFEXglucoseTests_2-25-10" "D08" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.97864250922658 0.0440943282069485 6.55388888888889 0.114576828300042 0.000592514310191339 0.0574375614416587 0.00388756856149796 0.7604944481012 0.00382450809353859 0.817932009542859 0.0846335573654363 0.817926981782412 0.733298452177423 0.733293424416975 0.059119138718029 1.13933374853871 1.26580931718273 0.0883181874358308 1.2657979252649 1.1774911297469 1.17747973782907 1.48473853768196 0.0802727742184424 0.999751240782926 0.0024285821665204 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 61 +61 "YPDAFEXglucoseTests_2-25-10" "E08" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.92985461402822 0.0457749753910733 6.57772222222222 0.113561152700099 0.000574978172033136 0.060472124586291 0.00402516603178239 0.782067831917711 0.00395231332100131 0.842539956504002 0.0880742342619773 0.84252871547194 0.754465722242024 0.754454481209962 0.0623379840467781 1.18598785060288 1.32225792636021 0.0920691879694222 1.32223182193112 1.23018873839079 1.2301626339617 1.37581261172662 0.0764095565221835 0.999754748600533 0.00252958095458288 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 62 +62 "YPDAFEXglucoseTests_2-25-10" "F08" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.04342229734717 0.0449382703508806 6.81605555555555 0.111344220804687 0.000532114828111489 0.0556626629934722 0.00387136842702 0.80721451235666 0.00378851479664982 0.862877175350132 0.0817091171508141 0.862843943432654 0.781168058199318 0.78113482628184 0.0572409770684312 1.24165517935791 1.36996971207487 0.0851401152682132 1.3698909547456 1.28482959680665 1.28475083947739 1.25155543832615 0.0687282577051449 0.999773222693453 0.00254586287935125 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 63 +63 "YPDAFEXglucoseTests_2-25-10" "G08" "Unknown Media" "Unknown Strain" "richards sigmoid" 3.4098419642861 0.0273360221329334 7.17355555555555 0.104909950287556 0.000320509634067564 0.0670946887166673 0.00214797636037448 0.835221165471032 0.00207744953517517 0.902315854187699 0.0807525020864334 0.901946971291666 0.821563352101265 0.821194469205233 0.0693967331849445 1.30532384994483 1.46530579406434 0.0841025502412753 1.46439655263553 1.38120324382306 1.38029400239426 0.753286735551893 0.0336141513817103 0.999897955876558 0.00130605700907157 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 64 +64 "YPDAFEXglucoseTests_2-25-10" "H08" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 65 +65 "YPDAFEXglucoseTests_2-25-10" "A09" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 66 +66 "YPDAFEXglucoseTests_2-25-10" "B09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.43102440854542 0.045460599271 5.50522222222222 0.126842367700522 0.00078809068382565 0.0539690230506907 0.00446798151426212 0.690558562302537 0.00442509765211851 0.744527585353228 0.0857310637664198 0.744527554769708 0.658796521586808 0.658796491003288 0.0554519069684636 0.994829458651344 1.10544655621043 0.0895132793033759 1.10544649181846 1.01593327690705 1.01593321251509 1.86325174031776 0.111013994653246 0.999682108231503 0.0022617847845379 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 67 +67 "YPDAFEXglucoseTests_2-25-10" "C09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.48092970936734 0.0462358382066653 5.62438888888889 0.126022327910869 0.000766265150014104 0.0498912361992905 0.00451231718259913 0.714630509324354 0.00446315297026109 0.764521745523645 0.0803254378903323 0.764521612683065 0.684196307633313 0.684196174792733 0.0511567623538203 1.04343151386262 1.14796685420359 0.0836396677044799 1.14796656886645 1.06432718649911 1.06432690116197 1.68924161205464 0.102428342637296 0.999685472160361 0.00245503448373934 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 68 +68 "YPDAFEXglucoseTests_2-25-10" "D09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.4240864159307 0.0532786610411069 5.62438888888889 0.124384377213099 0.000823105141045872 0.0492950122622815 0.00516311817880534 0.727641420786466 0.00510226526603821 0.776936433048748 0.0803276494249522 0.776936115957329 0.696608783623795 0.696608466532377 0.0505302243276007 1.07019213288015 1.17479940575581 0.0836420642137705 1.17479871614569 1.09115734154204 1.09115665193192 1.58714595722847 0.108898702801139 0.999619231516236 0.00307919508939744 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 69 +69 "YPDAFEXglucoseTests_2-25-10" "E09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.35160838405737 0.0596596610215118 5.69588888888889 0.122918277169901 0.000825310470715047 0.0456238028839663 0.00577234379276726 0.757677923379007 0.0056971886786291 0.803301726262973 0.0794802278099073 0.803300765573587 0.723821498453066 0.72382053776368 0.0466805786671931 1.13331673965171 1.23290119953907 0.0827241514900563 1.23289905441561 1.15017704804901 1.15017490292556 1.50943194471365 0.109906081597383 0.999597425228284 0.00351671862436227 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 70 +70 "YPDAFEXglucoseTests_2-25-10" "F09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.52360102190548 0.0587446527958999 5.93422222222222 0.120073445296037 0.00078330497794479 0.0450247442396835 0.00549978755377369 0.786911440525391 0.00540921386567027 0.831936184765074 0.0732958506922422 0.831929765410992 0.758640334072832 0.75863391471875 0.0460537433930304 1.19660160385529 1.29776333045596 0.0760488396214321 1.29774858034688 1.22171449083452 1.22169974072545 1.23976303548348 0.0944772275219821 0.999601760903923 0.003945474202229 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 71 +71 "YPDAFEXglucoseTests_2-25-10" "G09" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.58690525353267 0.0503605395754859 6.17255555555556 0.109989495082239 0.000552298605536815 0.0475039668950725 0.00430649430288473 0.830681449075495 0.0041905877903163 0.878185415970567 0.0684271069666917 0.878046704757166 0.809758309003876 0.809619597790474 0.0486503609989841 1.29488205279799 1.40652889311671 0.0708225666010445 1.40619510372456 1.33570632651566 1.33537253712351 0.776030036332651 0.0590321056856611 0.999743045862095 0.00295407387389302 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 72 +72 "YPDAFEXglucoseTests_2-25-10" "H09" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 73 +73 "YPDAFEXglucoseTests_2-25-10" "A10" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 74 +74 "YPDAFEXglucoseTests_2-25-10" "B10" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.17498330293522 0.050279837635597 5.12388888888889 0.122218804745147 0.000784428647033225 0.0435682252869189 0.00476512067527676 0.699692212082884 0.00470444888749683 0.743260437369803 0.0678435113392866 0.743259718768562 0.675416926030517 0.675416207429275 0.0445312553256874 1.0131329940941 1.10278033345866 0.0701978215504209 1.10277882239865 1.03258251190824 1.03258100084823 1.18141836933351 0.0894530547512188 0.999633683586648 0.00265620405353139 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 75 +75 "YPDAFEXglucoseTests_2-25-10" "C10" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.51277041012627 0.038507563353684 5.50522222222222 0.124302687021946 0.00066257956155985 0.0363365047244458 0.0036365878373532 0.715682301835976 0.00358889795068784 0.752018806560422 0.0575296221367186 0.752017909485812 0.694489184423703 0.694488287349094 0.0370047447805615 1.04558191051421 1.12127814704052 0.0592166464503368 1.12127624409661 1.06206150059019 1.06205959764628 1.22124195072666 0.0728117489699227 0.999746251949321 0.00205128571327075 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 76 +76 "YPDAFEXglucoseTests_2-25-10" "D10" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.53563261500299 0.0376782239481082 5.60055555555556 0.122775491121767 0.000617718902119621 0.0383224027816064 0.00352849521278669 0.723989555733905 0.00348019906626899 0.762311958515511 0.0604113495090868 0.762310653527533 0.701900609006425 0.701899304018446 0.0390661767078291 1.06264585795333 1.14322554552581 0.0622734223356722 1.14322274864406 1.08095212319014 1.08094932630839 1.22916204620621 0.0694532726806568 0.999772141364762 0.00189783824442064 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 77 +77 "YPDAFEXglucoseTests_2-25-10" "E10" "Unknown Media" "Unknown Strain" "logistic sigmoid." 2.60565520615734 0.0279148181724273 5.67205555555555 0.122180167584985 0.000572646126517836 0.0367511555402461 0.00173132032241477 0.755101749186329 0.00189799852175128 0.791852904726575 0.0552120643770304 0.791846881053104 0.736640840349544 0.736634816676074 0.0374348288051571 1.12782801711047 1.20748289465781 0.0567646930614347 1.20746959754171 1.15071820159638 1.15070490448028 NA NA 0.999760229166242 0.00222986115644152 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 78 +78 "YPDAFEXglucoseTests_2-25-10" "F10" "Unknown Media" "Unknown Strain" "logistic sigmoid." 2.59552092151026 0.0233507553372593 5.79122222222222 0.123112398187359 0.000459924956636787 0.0376321525320693 0.00147723902213235 0.788206013375021 0.0016231663999626 0.825838165907091 0.0581595525580899 0.825828102856854 0.767678613349001 0.767668550298764 0.0383492084922821 1.19944710611067 1.28379416175066 0.059884089438009 1.28377117993091 1.22391007231265 1.2238870904929 NA NA 0.999844012469462 0.00158372380662875 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 79 +79 "YPDAFEXglucoseTests_2-25-10" "G10" "Unknown Media" "Unknown Strain" "richards sigmoid" 2.65619332794927 0.0304232773418221 6.00572222222222 0.113927548251521 0.00039401531514436 0.0448535113624544 0.00262903461356949 0.830698452659732 0.00255902384555125 0.875551964022187 0.059612603657046 0.875406838426976 0.815939360365141 0.81579423476993 0.0458746399354508 1.29492107435005 1.40019975231613 0.0614252746181767 1.39985144717306 1.33877447769796 1.33842617255488 0.630436882604844 0.0359660464050951 0.999878122228538 0.00142471670120544 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 80 +80 "YPDAFEXglucoseTests_2-25-10" "H10" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 81 +81 "YPDAFEXglucoseTests_2-25-10" "A11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 82 +82 "YPDAFEXglucoseTests_2-25-10" "B11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 83 +83 "YPDAFEXglucoseTests_2-25-10" "C11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 84 +84 "YPDAFEXglucoseTests_2-25-10" "D11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 85 +85 "YPDAFEXglucoseTests_2-25-10" "E11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 86 +86 "YPDAFEXglucoseTests_2-25-10" "F11" "Unknown Media" "Unknown Strain" "richards sigmoid" 14.4916170721585 0.0217082788822816 18.6612222222222 0.0889624212709417 0.000433184593667829 0.00193467537358108 0.000448535254389812 0.976169160121559 0.0129779368057855 0.97810383549514 0.00193467537359373 0.752023541644887 0.976169160121546 0.750088866271293 0.0019365480654705 1.65426866265479 1.65940878149869 0.00193654806548316 1.1212881914955 1.65747223343321 1.11935164343002 0.07 0.0304920969087024 0.999799864971328 0.0015636072090697 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 87 +87 "YPDAFEXglucoseTests_2-25-10" "G11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 88 +88 "YPDAFEXglucoseTests_2-25-10" "H11" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 89 +89 "YPDAFEXglucoseTests_2-25-10" "A12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 90 +90 "YPDAFEXglucoseTests_2-25-10" "B12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 91 +91 "YPDAFEXglucoseTests_2-25-10" "C12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 92 +92 "YPDAFEXglucoseTests_2-25-10" "D12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 93 +93 "YPDAFEXglucoseTests_2-25-10" "E12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 94 +94 "YPDAFEXglucoseTests_2-25-10" "F12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 95 +95 "YPDAFEXglucoseTests_2-25-10" "G12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 96 +96 "YPDAFEXglucoseTests_2-25-10" "H12" "Unknown Media" "Unknown Strain" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "! " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2014-11-14_15.24.29.pdf" 97 + +# Raw OD values are adjusted and log-transformed before fitting a growth curve as follows: log.OD = log(OD - blank + const) where blank is OD of blank medium and const is specified by the user (1 by default) +# Values are reported on the above 'log.OD' scale unless otherwise specified. +# .SE columns report standard errors of those values that are estimated directly as parameters of global sigmoid models. +# .OD columns report values back-transformed to the linear 'OD - blank' scale. + +# -- Explanation of columns -- +# - model: Name of the model the well was successfully fit with (if any) +# - lag.time: Lag time estimate inferred from the fitted model +# - inflection.time: inflection time point of the growth curve when drawn on the log scale +# - max.spec.growth.rate: maximum specific growth rate estimate inferred from the fitted model. Estimated as the first derivative of the growth curve at inflection time point +# - baseline: growth curve baseline. Global sigmoid model: baseline is parameter 'b' of the model. LOESS: baseline is the same as the lowest predicted log.OD value +# - amplitude: difference between upper plateau and baseline values. Global sigmoid model: amplitude is parameter 'A' of the model. LOESS: amplitude = max.log.OD - min.log.OD +# - plateau: upper asymptote value of the fitted model. Global sigmoid model: plateau = b + A. LOESS: plateau = max.log.OD +# - inoc.log.OD: log.OD value at inoculation. Estimated value from the fitted model is used, rather than the actual measurement +# - max.log.OD: maximal log.OD value reached during the experiment. Estimated value from the fitted model is used rather than the actual measurement +# - projected.growth: maximal projected growth over inoculation value. Global sigmoid model: projected.growth = plateau - inoc.log.OD. LOESS: not reported +# - achieved.growth: maximal growth over inoculation value actually achieved during the experiment. achieved.growth = max.log.OD - inoc.log.OD +# - shape.par: shape parameter of the Richard equation +# - R.squared: goodness of fit metric. Also known as coefficient of determination. R.squared is usually between 0 and 1. A value close to 1 indicates good fit. +# - RSS: residual sum of squares. Another goodness of fit metric. Smaller values indicate better fits. +# - empty: (Well indicator) +# - an 'E' indicates that the well was empty and no growth was detected. +# - an 'I' indicates that the well was inoculated and growth was detected above the threshold. +# - an 'E*' indicates that the well was empty and growth was detected (possible contamination). +# - an '!' indicates that the well was inoculated and no growth was detected. +# - asymp.not.reached: shows “L” if the bottom asymptote (baseline) was not reached and “U” if the upper asymptote (plateau) was not reached. +# - tank: (Tanking indicator) If a number is present then the growth trend was determined to tank at that timepoint index. +# - other: Additional flag column. Displays information about whether jumps in OD were detected and what was done about them. +# - pdf.file and page.no: location of the figure for this well in the output .pdf files. +# +# -- Source file information-- +# YPDAFEXglucoseTests_2-25-10.csv +# analyzed using GCAT v 4.5 +# request sent: 2014-11-14 15:24:29 +# completed: 2014-11-14 15:24:36 +# +# -- Parameters used in current analysis -- +# - Constant added to log(OD + n) transformation: 1 +# - Blank OD value: First timepoint in well +# - Index of inoculation timepoint 2 +# - Minimum growth threshold: 0.05 +# - Removed points: 0 +# - Jump detection: FALSE \ No newline at end of file diff --git a/R/GCAT/man/fit.model.Rd b/R/GCAT/man/fit.model.Rd new file mode 100755 index 0000000..bff1aa6 --- /dev/null +++ b/R/GCAT/man/fit.model.Rd @@ -0,0 +1,35 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{fit.model} +\alias{fit.model} +\title{fit.model} +\usage{ +fit.model(input.well, growth.model, backup.growth.model = NULL, + fit.if.no.growth = F, use.linear.param = F, use.loess = F, smooth.param, + silent = T) +} +\arguments{ +\item{input.well}{The well needed to be fitted with the given model.} + +\item{growth.model}{What growth model should be used?} + +\item{backup.growth.model}{If \code{gowth.mode} fails, this model will be used.} + +\item{fit.if.no.growth}{should the function attempt to fit a well even if there was no growth detected? default is F} + +\item{silent}{output back to R console?} + +\item{use.linear.param:}{Should an additional linear parameter (c) be used when fitting the data to the model?} + +\item{use.loess:}{Should Local Polynomial Regression Fitting (loess function) be used instead of nls?} + +\item{smooth.param:}{If loess is used, an optional smoothing parameter. Default is .6} +} +\description{ +This function will use the function stored in the "guess" slot of \code{growth.model} to calculate initial guesses +for growth.model parameters, then it will use the "formula" slot with \code{nls} to fit a non-linear least squares +\code{growth.model} or Local Polynomial Regression Fitting to the data. Richards model is first fitted. +If the shape parameter is statisticaly significant then Richards is used. If it is within 2 SE of 1 or Zero than +a simpler model is preferred. If the Richards fit fails, then Logistic is tried. If it fails, Gompertz is tried. +Model fit failure is reported if none of the models can sucessfully fit the data +} + diff --git a/R/GCAT/man/gcat.Rd b/R/GCAT/man/gcat.Rd new file mode 100644 index 0000000..30f2afa --- /dev/null +++ b/R/GCAT/man/gcat.Rd @@ -0,0 +1,30 @@ +\name{GCAT} +\alias{GCAT} +\title{ +Growth Curve Analysis Tool +} +\description{ +Mathematical modeling and parameter estimation of high volume microbial growth data. +} +\details{ +GCAT utilizes the \code{\link{nls}} function in the R base package to fit logistic and Richards models to +growth curve data. Input is in .csv format and analysis is accessed using \code{\link{gcat.analysis.main}} +or \code{\link{gcat.fit.main}}. Output is in .txt and .pdf format, and is accessed using \code{\link{gcat.analysis.main}} +or \code{\link{gcat.output.main}}. + +\tabular{ll}{ +Version: \tab 5.0\cr +Depends: \tab pheatmap, gplots\cr +License: \tab LGPL-3\cr +Date: \tab 2014-02-10\cr +} + +} +\author{ +Jason Shao\cr +Nate DiPiazza\cr +Yury Bukhman\cr +Minh Bui\cr + +Maintainer: Yury Bukhman +} \ No newline at end of file diff --git a/R/GCAT/man/gcat.analysis.main.Rd b/R/GCAT/man/gcat.analysis.main.Rd new file mode 100644 index 0000000..5cf8628 --- /dev/null +++ b/R/GCAT/man/gcat.analysis.main.Rd @@ -0,0 +1,72 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{gcat.analysis.main} +\alias{gcat.analysis.main} +\title{Analyze screening growth data from the given .csv files.} +\usage{ +gcat.analysis.main(file.list, single.plate, layout.file = NULL, + out.dir = getwd(), graphic.dir = paste(out.dir, "/pics", sep = ""), + add.constant = 0.1, blank.value = NULL, start.index = 2, + growth.cutoff = 0.05, use.linear.param = F, use.loess = F, + smooth.param = 0.1, points.to.remove = 0, remove.jumps = F, + time.input = NA, plate.nrow = 8, plate.ncol = 12, + input.skip.lines = 0, multi.column.headers = c("Plate.ID", "Well", "OD", + "Time"), single.column.headers = c("", "A1"), + layout.sheet.headers = c("Strain", "Media Definition"), silent = T, + verbose = F, return.fit = F, overview.jpgs = T) +} +\arguments{ +\item{file.list}{A list of full paths to .csv files. all files must be in the same format (see )} + +\item{single.plate}{The file in the single plate (wide) format vs. the multi-plate (long) format?} + +\item{layout.file}{Full path to a layout file with strain and media definitions (applies to all files in list)} + +\item{out.dir}{A directory to output the table of curve parameters to (defaults to working directory)} + +\item{graphic.dir}{A directory to output the images of the fitted curves to (defaults to subdirectory "pics" of above)} + +\item{add.constant}{A numeric constant that will be added to each curve before the log transform (defaults to 1)} + +\item{blank.value}{User can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well.} + +\item{start.index}{Which timepoint should be used as the first one after inoculation (defaults to the 2th one)} + +\item{growth.cutoff}{Minimum threshold for curve growth.} + +\item{use.linear.param}{Whether to use linear parameters or not?} + +\item{use.loess}{Whether to use LOESS model or not?} + +\item{smooth.param}{Smoothing parameter for LOESS model.} + +\item{points.to.remove}{A list of numbers referring to troublesome points that should be removed across all wells.} + +\item{remove.jumps}{Should the slope checking function be on the lookout for large jumps in OD?} + +\item{time.input}{The time setting in which the current system is running?} + +\item{plate.nrow}{The number of rows in a plate.} + +\item{plate.ncol}{The number of columns in a plate.} + +\item{input.skip.lines}{If specified, this number of lines shall be skipped from the top when reading the input file with read.csv} + +\item{multi.column.headers}{The headers of the result tabular data when analyzing multiple plates at once.} + +\item{single.column.headers}{The headers of the result tebaular data when analyzaing a single plate.} + +\item{layout.sheet.headers}{The headers of the layout file?} + +\item{silent}{Shoulde messages be returned to the console?} + +\item{verbose}{Should sub-functions return messages to console? (when I say verbose, I mean it!)} + +\item{overview.jpgs}{Should GCAT enable an overview image?} +} +\value{ +A list of the output files. +} +\description{ +Top-level GCAT function +} + diff --git a/R/GCAT/man/gcat.fit.main.Rd b/R/GCAT/man/gcat.fit.main.Rd new file mode 100644 index 0000000..95bf2f8 --- /dev/null +++ b/R/GCAT/man/gcat.fit.main.Rd @@ -0,0 +1,88 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{gcat.fit.main} +\alias{gcat.fit.main} +\title{Main analysis function for GCAT} +\usage{ +gcat.fit.main(file.name, input.data = NULL, load.type = "csv", + layout.file = NULL, single.plate = F, blank.value = NULL, + start.index = 2, time.input = NA, normalize.method = "default", + add.constant = 1, use.log = T, points.to.remove = 0, + use.linear.param = F, use.loess = F, smooth.param = 0.1, + fall.cutoff = -0.0025, growth.cutoff = 0.05, remove.jumps = F, + plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), + single.column.headers = c("", "A1"), layout.sheet.headers = c("Strain", + "Media Definition"), growth.model = NA, backup.growth.model = NA, + silent = F, verbose = F) +} +\arguments{ +\item{file.name}{Complete path and file name of a comma-separated values (.csv) file containing growth curve data +in the multiple-plate (long) format.} + +\item{input.data}{A list of tables representing input files read with \code{read.table}. Used to save time in cases +of running multiple analyses on the same dataset. If used, the function will ignore \code{file.name} entirely.} + +\item{load.type}{.csv by default.} + +\item{layout.file}{Specifies the location of a layout file containing identifying information.} + +\item{single.plate}{Whether the GCAT is analyzing a single plate or not.} + +\item{blank.value}{Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD +measurement in each well is used.} + +\item{start.index}{Which timepoint should be used as the first one after inoculation?} + +\item{time.input}{Either a character describing the format used to convert timestamps in the input to numbers +representing number of seconds (see \code{strptime}), or a factor to divide entries in the Time column by to get the +numbers of hours.} + +\item{normalize.method}{Describes the method used by \code{normalize.ODs} to normalize cell density values using blank reads.} + +\item{add.constant}{A value for r in the log(OD + r) transformation.} + +\item{use.log}{Should the analysis use log on all values.} + +\item{points.to.remove}{A vector of integers specifying which timepoints should be removed across all wells. +By default(0) none are marked for removal.} + +\item{use.linear.param}{Should the linear parameter be used or not.} + +\item{use.loess}{Should the loess model be used or not.} + +\item{smooth.param}{If loess model is used, this parameter define the smoothing parameter for the loess model.} + +\item{fall.cutoff}{A cutoff used by \code{check.slopes} to decide on thresholds for jumps and tanking.} + +\item{growth.cutoff}{A threshold used by check.growth to decide whether a well displays growth.} + +\item{remove.jumps}{Should jumps in OD detected by the subfunction \code{check.slopes}?} + +\item{plate.nrow}{The number of rows in the input files.} + +\item{plate.ncol}{The number of columns in the input files.} + +\item{input.skip.lines}{If specified, this number of lines shall be skipped from the top when reading the input file with read.csv} + +\item{multi.column.headers}{The headers of the column when analyzing multiple plates.} + +\item{single.column.headers}{The headers of the column when analyzing a single plate.} + +\item{growth.model}{What growth model should be used?} + +\item{backup.growth.model}{If the main growth model fails, the back up model will be used.} + +\item{silent}{Surpress all messages.} + +\item{verbose}{Display all messages when analyzing each well.} + +\item{layour.sheet.headers}{The headers of the layout file.} +} +\value{ +An array of well objects +} +\description{ +This is the main function that handles all the analyses for data files in both single and multiple plate formats. +It is called by the top level function \code{gcat.analysis.main} along with \code{gcat.output.main}. +} + diff --git a/R/GCAT/man/gcat.load.data.Rd b/R/GCAT/man/gcat.load.data.Rd new file mode 100644 index 0000000..bbaf9be --- /dev/null +++ b/R/GCAT/man/gcat.load.data.Rd @@ -0,0 +1,57 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{gcat.load.data} +\alias{gcat.load.data} +\title{Load tabular data} +\usage{ +gcat.load.data(file.name = NULL, load.type = "csv", input.data = NULL, + single.plate.ID = NULL, plate.layout = NULL, plate.nrow = 8, + plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), + single.column.headers = c("", "A1"), layout.sheet.headers = c("Strain", + "Media Definition"), blank.value = NULL, start.index = 2, + single.plate = F, silent = T) +} +\arguments{ +\item{file.name}{Complete path and file name of a comma-separated values (.csv) file containing growth curve data +in the multiple-plate (long) format.} + +\item{load.type}{.csv by default.} + +\item{input.data}{A list of tables representing input files read with \code{read.table}. Used to save time in cases +of running multiple analyses on the same dataset. If used, the function will ignore \code{file.name} entirely.} + +\item{single.plate.ID}{specifies a plate name for a single-plate read. If NULL, this is derived from the file name.} + +\item{plate.nrow}{The number of rows in the input files.} + +\item{plate.ncol}{The number of columns in the input files.} + +\item{input.skip.lines}{specifies a plate name for a single-plate read. If NULL, this is derived from the file name.} + +\item{multi.column.headers}{The headers of the column when analyzing multiple plates.} + +\item{single.column.headers}{The headers of the column when analyzing a single plate.} + +\item{layout.sheet.headers}{The headers of the layout file.} + +\item{blank.value}{Blank OD measurement for uninoculated wells. By default(NULL), the value of the first OD +measurement in each well is used.} + +\item{silent}{Surpress all messages.} + +\item{plate.laout}{Specifies the layout of the given plate.} + +\item{add.constant}{A value for r in the log(OD + r) transformation.} + +\item{verbose}{Display all messages when analyzing each well.} +} +\value{ +A list of well objects. +} +\description{ +This function handles loading data from tabular format (.csv, tab-delimited text or R data frame object) +and returns an array of well objects, each filled with raw Time vs. OD data. +It takes single-plate or multiple-plate format data. For single-plate data, +it calls on the function \code{gcat.reorganize.single.plate.data} to rearrange the table before creating the output object. +} + diff --git a/R/GCAT/man/gcat.output.main.Rd b/R/GCAT/man/gcat.output.main.Rd new file mode 100644 index 0000000..03fc3b1 --- /dev/null +++ b/R/GCAT/man/gcat.output.main.Rd @@ -0,0 +1,51 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{gcat.output.main} +\alias{gcat.output.main} +\title{Output function for generating files from fitted data.} +\usage{ +gcat.output.main(fitted.well.array, out.prefix = "", source.file.list, + upload.timestamp = NULL, add.constant, blank.value, start.index, + growth.cutoff, points.to.remove, remove.jumps, out.dir = getwd(), + graphic.dir = paste(out.dir, "/pics", sep = ""), overview.jpgs = T, + use.linear.param = F, use.loess = F, plate.nrow = 8, plate.ncol = 12, + unlog = F, silent = T) +} +\arguments{ +\item{fitted.well.array}{A list of fitted well objects.} + +\item{out.prefix}{Prefix that is in the name of output files.} + +\item{blank.value}{User can enter a blank OD measurement for uninoculated wells. +If NULL, defaults to the value of the first OD measurement of each well.} + +\item{start.index}{Which timepoint should be used as the first one after inoculation (defaults to the 2th one)} + +\item{growth.cutoff}{Minimum threshold for curve growth.} + +\item{points.to.remove}{A list of numbers referring to troublesome points that should be removed across all wells.} + +\item{remove.jumps}{Should the slope checking function be on the lookout for large jumps in OD?} + +\item{out.dir}{name a directory to output the table of curve parameters to (defaults to working directory)} + +\item{graphic.dir}{name a directory to output the images of the fitted curves to +(defaults to subdirectory "pics" of above)} + +\item{overview.jpgs}{should jpgs be generated for each plate with the overview graphic? +This is for backwards compatibility with the old web server.} + +\item{unlog}{should exported graphics be transformed back to the OD scale?} + +\item{silent}{should messages be returned to the console?} + +\item{constant.added}{(should be the same value as add.constant above) - +used to readjust for the constant added during the log transform when plotting ODs.} +} +\value{ +A list of output files if success. +} +\description{ +Handles files and directories, calls \code{table.out}, \code{plate.overview} and \code{view.fit} +to generate output tables and graphics. +} + diff --git a/R/GCAT/man/gcat.set.constants.Rd b/R/GCAT/man/gcat.set.constants.Rd new file mode 100644 index 0000000..a315dd1 --- /dev/null +++ b/R/GCAT/man/gcat.set.constants.Rd @@ -0,0 +1,53 @@ +\name{gcat.set.constants} +\alias{gcat.set.constants} +\title{ +Set global constants for GCAT analysis package +} +\description{ +Sets global constants, mostly regarding issues in input file format, for GCAT analysis. +} +\usage{ +gcat.set.constants(plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, time.format = "\%Y-\%m-\%d \%H:\%M:\%S", +multi.column.headers = c("Plate ID", "Well", "OD", "Time"), single.column.headers = c("", "A1"), +xlsx.data.headers = c("Plate ID", "Well positions"), xlsx.layout.sheet = "Plate layout", +layout.sheet.headers = c("Strain", "Media Definition")) +} +\arguments{ + \item{plate.nrow}{ +Number of rows present in each plate of input data. Default 8 (A-H) +} + \item{plate.ncol}{ +Number of columns present in each plate of input data. Default 12 (1-12) +} + \item{input.skip.lines}{ +Number of lines to skip at the top when reading input data files. +} + \item{time.format}{ +Either a character describing the format used to convert timestamps +in the input to numbers representing number of seconds (see \code{\link{strptime}}), or a +factor to divide entries in the \code{Time} column by to get the number of hours. +} + \item{multi.column.headers}{ +A character vector describing the names of the columns for +Plate ID, Well ID, Cellular density measurements and Time, respectively, in the multi-plate (long) format. +} + \item{single.column.headers}{ +A character vector describing the name of the Time column and the first well data in the single plate (wide) format. +} + \item{xlsx.data.headers}{ +For .xlsx data only, a vector describing possible entries in the upper left cell marking worksheets in each +workbook as containing data. .csv files don't have multiple worksheets and are assumed to contain useable data. +} + \item{xlsx.layout.sheet}{ +For .xlsx data only, the name of the worksheet containing plate layout information. .csv files use a separate layout file. +} + \item{layout.sheet.headers}{ +A character vector describing the name of the Strain and Media definiton columns, respectively, in the plate layout file. +} +} +\value{ +NULL +} +\author{ +Jason Shao +} \ No newline at end of file diff --git a/R/GCAT/man/model.Rd b/R/GCAT/man/model.Rd new file mode 100644 index 0000000..0fb070c --- /dev/null +++ b/R/GCAT/man/model.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{model} +\alias{model} +\title{Model} +\usage{ +model(name, expression, formula, guess) +} +\arguments{ +\item{name}{The name of the model} + +\item{expression}{Expression of the model} + +\item{formula}{The formula of this model} + +\item{guess}{The guess of this model} +} +\value{ +The new model +} +\description{ +Function to create a new model +} + diff --git a/R/GCAT/man/plot.data.Rd b/R/GCAT/man/plot.data.Rd new file mode 100755 index 0000000..5d44d19 --- /dev/null +++ b/R/GCAT/man/plot.data.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{plot.data} +\alias{plot.data} +\title{plot.data} +\usage{ +\method{plot}{data}(input.well, view.raw.data = F, unlog = F, scale = 1, + main = paste(plate.name(input.well), well.name(input.well)), + number.points = T, draw.symbols = F, constant.added, ylim, ...) +} +\arguments{ +\item{input.well}{The well object that need to be plottedd} + +\item{view.raw.data}{should the raw data be plotted? (} + +\item{unlog}{should data be plotted on a linear (vs. logarithmic) scale?} + +\item{scale}{determines the font scale for the entire graph. all cex values are calculated from this.} + +\item{number.points}{should points be labeled with numeric indices?} + +\item{draw.symbols}{- should be called on the well and markings drawn on the graph?} + +\item{...}{additional arguments passed to plot()} +} +\description{ +Basic function plots time vs. OD from a well object +} + diff --git a/R/GCAT/man/transform.ODs.Rd b/R/GCAT/man/transform.ODs.Rd new file mode 100755 index 0000000..501e7df --- /dev/null +++ b/R/GCAT/man/transform.ODs.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2 (4.0.2): do not edit by hand +\name{transform.ODs} +\alias{transform.ODs} +\title{Transform.Ods} +\usage{ +\method{transform}{ODs}(input.well, use.log = T, blank.value = NULL, + start.index = 2, negative.OD.cutoff = 10, constant.added = 1, ...) +} +\arguments{ +\item{input.well}{an object of class well} + +\item{use.log}{gets added to the "use.log" slot of the well object. this will determine whether the log-transformed data +or raw normalized data is returned using the function \code{data.from}.} + +\item{blank.value}{user can enter a blank OD measurement for uninoculated wells. if NULL, defaults to the value of the first OD measurement of each well.} + +\item{start.index}{which timepoint should be used as the first one after inoculation (defaults to the 2th one)} + +\item{negative.OD.cutoff}{if any ODs below the specified blank value are detected before this index timepoint, the entire well is discarded.} +} +\description{ +This function adds a "log.OD" column to the "screen.data" slot of a well object with log-transformed data. +The raw data is kept intact. +It also checks to see if any of the raw OD values (before a certain timepoint) is below the blank OD. +This can be disastrous for the log(OD) transform. +} + diff --git a/R/GCAT/tests/YPDAFEXglucoseTests_2-25-10__defaults.R b/R/GCAT/tests/YPDAFEXglucoseTests_2-25-10__defaults.R new file mode 100755 index 0000000..607e5db --- /dev/null +++ b/R/GCAT/tests/YPDAFEXglucoseTests_2-25-10__defaults.R @@ -0,0 +1,30 @@ +# Regression testing script for GCAT. +# Yury V Bukhman, 17 Nov 2014 +# This script tests outputs generated from the example dataset "YPDAFEXglucoseTests_2-25-10" with default GCAT settings. + +INPUT.DIR = system.file("extdata/YPDAFEXglucoseTests_2-25-10",package="GCAT") +OUTPUT.DIR = paste(INPUT.DIR,"temp",sep="/") +INPUT.FILE = "YPDAFEXglucoseTests_2-25-10.csv" + +# Run GCAT +library(GCAT) +setwd(INPUT.DIR) +time.input=1/3600 +out = gcat.analysis.main(file.list = INPUT.FILE, single.plate = T, layout.file = NULL, + out.dir = OUTPUT.DIR, graphic.dir = OUTPUT.DIR, + add.constant = 1, blank.value = NULL, start.index = 2, growth.cutoff = 0.05, + use.linear.param=F, use.loess=F, smooth.param=0.1, + points.to.remove = 0, remove.jumps = F, time.input=time.input, + silent = F, verbose = T, return.fit = T, overview.jpgs = T) + +# Read in old and new output spreadsheets +old.output.table = read.table("default_output.txt",header=T,sep="\t") +new.output.file = list.files(path=OUTPUT.DIR, pattern = "^output_gcat\\.fit_.+\\.txt$") +new.output.table = read.table(paste("temp",new.output.file,sep="/"),header=T,sep="\t") + +# Remove "pdf.file" column +old.output.table = old.output.table[names(old.output.table) != "pdf.file"] +new.output.table = new.output.table[names(new.output.table) != "pdf.file"] + +# Verify that output spreadsheets are identical within rounding error +stopifnot(all.equal(new.output.table,old.output.table)) diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..377a6f6 --- /dev/null +++ b/README.txt @@ -0,0 +1,23 @@ +===What's in this package=== +R - R code. Sub-folder GCAT contains the GCAT package +Rails - Rails code +Testing - testing code, data and documents, outside of any regression tests that may be incorporated directly into R packages or Rails applications + +===Getting started=== +First you will need to install Ruby and Ruby on Rails. I suggest using RVM to +install them. Documentation for RVM can be found at: http://rvm.io. + +You will need: Ruby version 1.9.3p194 and Rails 3.2.15 + +The R package is in subfolder R. To install, do the following: +Open a terminal in the R folder +$ sudo R CMD REMOVE GCAT # do this if an older version of GCAT has been installed +$ sudo R CMD INSTALL GCAT +It works with R version 3.0.2 (2013-09-25) -- "Frisbee Sailing". + +The rails application is in subfolder Rails. It runs under Rails 3.2.15. To run it locally using the default Rails WEBrick web server do the following: +Open a terminal in the Rails folder +$ bundle install +$ rails s +Open http://0.0.0.0:3000 in a web browser + diff --git a/Rails/.Rhistory b/Rails/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/Rails/.gitignore b/Rails/.gitignore new file mode 100644 index 0000000..923b697 --- /dev/null +++ b/Rails/.gitignore @@ -0,0 +1,5 @@ +.bundle +db/*.sqlite3 +log/*.log +tmp/ +.sass-cache/ diff --git a/Rails/Gemfile b/Rails/Gemfile new file mode 100644 index 0000000..f5a6474 --- /dev/null +++ b/Rails/Gemfile @@ -0,0 +1,42 @@ +source 'http://rubygems.org' + +# gem 'rails', '3.1.0' #no longer supporting security updates +gem 'rails', '3.2.15' + +# Bundle edge Rails instead: +# gem 'rails', :git => 'git://github.com/rails/rails.git' + +gem 'sqlite3' + + +# Gems used only for assets and not required +# in production environments by default. +group :assets do + gem 'sass-rails', '~> 3.2.3' + #gem 'coffee-rails', "~> 3.1.0" + gem 'uglifier' + + # See https://github.com/sstephenson/execjs#readme for more supported runtimes + gem 'therubyracer' + +end + +gem 'jquery-rails' + +# Use unicorn as the web server +# gem 'unicorn' + +# Deploy with Capistrano +# gem 'capistrano' + +# To use debugger +gem 'debugger' + +group :test do + # Pretty printed test output + gem 'turn', :require => false +end + +gem 'rinruby' + +gem 'rubyzip' diff --git a/Rails/Gemfile.lock b/Rails/Gemfile.lock new file mode 100644 index 0000000..32b1850 --- /dev/null +++ b/Rails/Gemfile.lock @@ -0,0 +1,124 @@ +GEM + remote: http://rubygems.org/ + specs: + actionmailer (3.2.15) + actionpack (= 3.2.15) + mail (~> 2.5.4) + actionpack (3.2.15) + activemodel (= 3.2.15) + activesupport (= 3.2.15) + builder (~> 3.0.0) + erubis (~> 2.7.0) + journey (~> 1.0.4) + rack (~> 1.4.5) + rack-cache (~> 1.2) + rack-test (~> 0.6.1) + sprockets (~> 2.2.1) + activemodel (3.2.15) + activesupport (= 3.2.15) + builder (~> 3.0.0) + activerecord (3.2.15) + activemodel (= 3.2.15) + activesupport (= 3.2.15) + arel (~> 3.0.2) + tzinfo (~> 0.3.29) + activeresource (3.2.15) + activemodel (= 3.2.15) + activesupport (= 3.2.15) + activesupport (3.2.15) + i18n (~> 0.6, >= 0.6.4) + multi_json (~> 1.0) + ansi (1.4.3) + arel (3.0.3) + builder (3.0.4) + columnize (0.3.6) + debugger (1.6.6) + columnize (>= 0.3.1) + debugger-linecache (~> 1.2.0) + debugger-ruby_core_source (~> 1.3.2) + debugger-linecache (1.2.0) + debugger-ruby_core_source (1.3.2) + erubis (2.7.0) + execjs (2.0.2) + hike (1.2.3) + i18n (0.6.9) + journey (1.0.4) + jquery-rails (3.1.0) + railties (>= 3.0, < 5.0) + thor (>= 0.14, < 2.0) + json (1.8.1) + libv8 (3.16.14.3) + mail (2.5.4) + mime-types (~> 1.16) + treetop (~> 1.4.8) + mime-types (1.25.1) + multi_json (1.9.0) + polyglot (0.3.4) + rack (1.4.5) + rack-cache (1.2) + rack (>= 0.4) + rack-ssl (1.3.3) + rack + rack-test (0.6.2) + rack (>= 1.0) + rails (3.2.15) + actionmailer (= 3.2.15) + actionpack (= 3.2.15) + activerecord (= 3.2.15) + activeresource (= 3.2.15) + activesupport (= 3.2.15) + bundler (~> 1.0) + railties (= 3.2.15) + railties (3.2.15) + actionpack (= 3.2.15) + activesupport (= 3.2.15) + rack-ssl (~> 1.3.2) + rake (>= 0.8.7) + rdoc (~> 3.4) + thor (>= 0.14.6, < 2.0) + rake (10.1.1) + rdoc (3.12.2) + json (~> 1.4) + ref (1.0.5) + rinruby (2.0.3) + rubyzip (1.1.0) + sass (3.2.14) + sass-rails (3.2.6) + railties (~> 3.2.0) + sass (>= 3.1.10) + tilt (~> 1.3) + sprockets (2.2.2) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sqlite3 (1.3.9) + therubyracer (0.12.1) + libv8 (~> 3.16.14.0) + ref + thor (0.18.1) + tilt (1.4.1) + treetop (1.4.15) + polyglot + polyglot (>= 0.3.1) + turn (0.9.6) + ansi + tzinfo (0.3.38) + uglifier (2.4.0) + execjs (>= 0.3.0) + json (>= 1.8.0) + +PLATFORMS + ruby + +DEPENDENCIES + debugger + jquery-rails + rails (= 3.2.15) + rinruby + rubyzip + sass-rails (~> 3.2.3) + sqlite3 + therubyracer + turn + uglifier diff --git a/Rails/LICENSE b/Rails/LICENSE new file mode 100644 index 0000000..3264fb7 --- /dev/null +++ b/Rails/LICENSE @@ -0,0 +1,18 @@ +Copyright 2012 The Board of Regents of the University of Wisconsin System. +Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + +This file is part of GCAT. + +GCAT 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 3 of the License, or +(at your option) any later version. + +GCAT 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 GCAT. If not, see . diff --git a/Rails/README b/Rails/README new file mode 100644 index 0000000..7c36f23 --- /dev/null +++ b/Rails/README @@ -0,0 +1,261 @@ +== Welcome to Rails + +Rails is a web-application framework that includes everything needed to create +database-backed web applications according to the Model-View-Control pattern. + +This pattern splits the view (also called the presentation) into "dumb" +templates that are primarily responsible for inserting pre-built data in between +HTML tags. The model contains the "smart" domain objects (such as Account, +Product, Person, Post) that holds all the business logic and knows how to +persist themselves to a database. The controller handles the incoming requests +(such as Save New Account, Update Product, Show Post) by manipulating the model +and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting Started + +1. At the command prompt, create a new Rails application: + rails new myapp (where myapp is the application name) + +2. Change directory to myapp and start the web server: + cd myapp; rails server (run with --help for options) + +3. Go to http://localhost:3000/ and you'll see: + "Welcome aboard: You're riding Ruby on Rails!" + +4. Follow the guidelines to start developing your application. You can find +the following resources handy: + +* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html +* Ruby on Rails Tutorial Book: http://www.railstutorial.org/ + + +== Debugging Rails + +Sometimes your application goes wrong. Fortunately there are a lot of tools that +will help you debug it and get it back on the rails. + +First area to check is the application log files. Have "tail -f" commands +running on the server.log and development.log. Rails will automatically display +debugging and runtime information to these files. Debugging info will also be +shown in the browser on requests from 127.0.0.1. + +You can also log your own messages directly into the log file from your code +using the Ruby logger class from inside your controllers. Example: + + class WeblogController < ActionController::Base + def destroy + @weblog = Weblog.find(params[:id]) + @weblog.destroy + logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") + end + end + +The result will be a message in your log file along the lines of: + + Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1! + +More information on how to use the logger is at http://www.ruby-doc.org/core/ + +Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are +several books available online as well: + +* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe) +* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) + +These two books will bring you up to speed on the Ruby language and also on +programming in general. + + +== Debugger + +Debugger support is available through the debugger command when you start your +Mongrel or WEBrick server with --debugger. This means that you can break out of +execution at any point in the code, investigate and change the model, and then, +resume execution! You need to install ruby-debug to run the server in debugging +mode. With gems, use sudo gem install ruby-debug. Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.all + debugger + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the server window. Here you can do things like: + + >> @posts.inspect + => "[#nil, "body"=>nil, "id"=>"1"}>, + #"Rails", "body"=>"Only ten..", "id"=>"2"}>]" + >> @posts.first.title = "hello from a debugger" + => "hello from a debugger" + +...and even better, you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you can enter "cont". + + +== Console + +The console is a Ruby shell, which allows you to interact with your +application's domain model. Here you'll have all parts of the application +configured, just like it is when the application is running. You can inspect +domain models, change values, and save to the database. Starting the script +without arguments will launch it in the development environment. + +To start the console, run rails console from the application +directory. + +Options: + +* Passing the -s, --sandbox argument will rollback any modifications + made to the database. +* Passing an environment name as an argument will load the corresponding + environment. Example: rails console production. + +To reload your controllers and models after launching the console run +reload! + +More information about irb can be found at: +link:http://www.rubycentral.org/pickaxe/irb.html + + +== dbconsole + +You can go to the command line of your database directly through rails +dbconsole. You would be connected to the database with the credentials +defined in database.yml. Starting the script without arguments will connect you +to the development database. Passing an argument will connect you to a different +database, like rails dbconsole production. Currently works for MySQL, +PostgreSQL and SQLite 3. + +== Description of Contents + +The default directory structure of a generated Ruby on Rails application: + + |-- app + | |-- assets + | |-- images + | |-- javascripts + | `-- stylesheets + | |-- controllers + | |-- helpers + | |-- mailers + | |-- models + | `-- views + | `-- layouts + |-- config + | |-- environments + | |-- initializers + | `-- locales + |-- db + |-- doc + |-- lib + | `-- tasks + |-- log + |-- public + |-- script + |-- test + | |-- fixtures + | |-- functional + | |-- integration + | |-- performance + | `-- unit + |-- tmp + | |-- cache + | |-- pids + | |-- sessions + | `-- sockets + `-- vendor + |-- assets + `-- stylesheets + `-- plugins + +app + Holds all the code that's specific to this particular application. + +app/assets + Contains subdirectories for images, stylesheets, and JavaScript files. + +app/controllers + Holds controllers that should be named like weblogs_controller.rb for + automated URL mapping. All controllers should descend from + ApplicationController which itself descends from ActionController::Base. + +app/models + Holds models that should be named like post.rb. Models descend from + ActiveRecord::Base by default. + +app/views + Holds the template files for the view that should be named like + weblogs/index.html.erb for the WeblogsController#index action. All views use + eRuby syntax by default. + +app/views/layouts + Holds the template files for layouts to be used with views. This models the + common header/footer method of wrapping views. In your views, define a layout + using the layout :default and create a file named default.html.erb. + Inside default.html.erb, call <% yield %> to render the view using this + layout. + +app/helpers + Holds view helpers that should be named like weblogs_helper.rb. These are + generated for you automatically when using generators for controllers. + Helpers can be used to wrap functionality for your views into methods. + +config + Configuration files for the Rails environment, the routing map, the database, + and other dependencies. + +db + Contains the database schema in schema.rb. db/migrate contains all the + sequence of Migrations for your schema. + +doc + This directory is where your application documentation will be stored when + generated using rake doc:app + +lib + Application specific libraries. Basically, any kind of custom code that + doesn't belong under controllers, models, or helpers. This directory is in + the load path. + +public + The directory available for the web server. Also contains the dispatchers and the + default HTML files. This should be set as the DOCUMENT_ROOT of your web + server. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. When using the rails generate + command, template test files will be generated for you and placed in this + directory. + +vendor + External libraries that the application depends on. Also includes the plugins + subdirectory. If the app has frozen rails, those gems also go here, under + vendor/rails/. This directory is in the load path. diff --git a/Rails/Rakefile b/Rails/Rakefile new file mode 100644 index 0000000..09785bb --- /dev/null +++ b/Rails/Rakefile @@ -0,0 +1,7 @@ +#!/usr/bin/env rake +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Gcat::Application.load_tasks diff --git a/Rails/app/assets/images/GLBRC_horz_cmyk_small.jpg b/Rails/app/assets/images/GLBRC_horz_cmyk_small.jpg new file mode 100644 index 0000000..7a0c2bc Binary files /dev/null and b/Rails/app/assets/images/GLBRC_horz_cmyk_small.jpg differ diff --git a/Rails/app/assets/images/ajax-loader.gif b/Rails/app/assets/images/ajax-loader.gif new file mode 100644 index 0000000..488f982 Binary files /dev/null and b/Rails/app/assets/images/ajax-loader.gif differ diff --git a/Rails/app/assets/images/bkg-body.png b/Rails/app/assets/images/bkg-body.png new file mode 100644 index 0000000..8b16d40 Binary files /dev/null and b/Rails/app/assets/images/bkg-body.png differ diff --git a/Rails/app/assets/images/lgplv.jpg b/Rails/app/assets/images/lgplv.jpg new file mode 100644 index 0000000..2fb09ef Binary files /dev/null and b/Rails/app/assets/images/lgplv.jpg differ diff --git a/Rails/app/assets/images/rails.png b/Rails/app/assets/images/rails.png new file mode 100644 index 0000000..d5edc04 Binary files /dev/null and b/Rails/app/assets/images/rails.png differ diff --git a/Rails/app/assets/javascripts/application.js b/Rails/app/assets/javascripts/application.js new file mode 100644 index 0000000..2f91b17 --- /dev/null +++ b/Rails/app/assets/javascripts/application.js @@ -0,0 +1,34 @@ +/* + * Copyright 2012 The Board of Regents of the University of Wisconsin System. + * Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, + * Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + * + * This file is part of GCAT. + * + * GCAT 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 3 of the License, or + * (at your option) any later version. + * + * GCAT 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 GCAT. If not, see . + */ + +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +//= require jquery +//= require jquery_ujs +//= require yuiloader-min +//= require datatable-min +//= require jquery.loader-min +//= require_tree . +//= require bootstrap.min diff --git a/Rails/app/assets/javascripts/assays.js b/Rails/app/assets/javascripts/assays.js new file mode 100644 index 0000000..660aa96 --- /dev/null +++ b/Rails/app/assets/javascripts/assays.js @@ -0,0 +1,76 @@ +/* + * Copyright 2012 The Board of Regents of the University of Wisconsin System. + * Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, + * Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + * + * This file is part of GCAT. + * + * GCAT 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 3 of the License, or + * (at your option) any later version. + * + * GCAT 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 GCAT. If not, see . + */ + + +$(document).ready(function(){ + // Three blocks below for hiding the optional user input fields. + $(".user_enter1").on("change", function(){ + $(".optional_input1").toggle($(this).hasClass("user_enter1_yes")); + }); + + $(".user_enter2").on("change", function(){ + $(".optional_input2").toggle($(this).hasClass("user_enter2_yes")); + }); + + $(".user_enter3").on("change", function(){ + $(".optional_input3").toggle($(this).hasClass("user_enter3_yes")); + }); + + // handle error redirect & browser back cases////////////////////////////////////////// + /**************************************************** + * This function checks the radio box for the + * corresponding optional div with input field. + * If checked show else hide + * @return void + ****************************************************/ + function reset_optional_fields(radio, optional_box){ + if(radio && optional_box){ + var radio_ckd = radio.prop('checked'); + if(radio_ckd){ + optional_box.show(); + } + else { + optional_box.hide(); + } + } else{ + console.error("Error: unknown selector in reset_optional_fields()"); + } + } + reset_optional_fields($('#assay_plate_type_m'), $("#time")); + reset_optional_fields($("input#assay_blank_value_user"), $("div.optional_input3")); + reset_optional_fields($("input#assay_transformation_-1"), $("div.optional_input2")); + reset_optional_fields($("input#assay_model_-1"), $("div.optional_input1")); + ////////////////////////////////////////////////////////////////////////////////////// + + $('#new_assay').submit(function() { + $.loader(); + }); + + $("input[name$='assay[plate_type]']").click(function(){ + var value = $(this).val(); + if(value=='s') { + $("#time").hide(); + } + else if(value=='m') { + $("#time").show(); + } + }); +}); diff --git a/Rails/app/assets/stylesheets/application.css b/Rails/app/assets/stylesheets/application.css new file mode 100644 index 0000000..ed2a545 --- /dev/null +++ b/Rails/app/assets/stylesheets/application.css @@ -0,0 +1,32 @@ +/* + * Copyright 2012 The Board of Regents of the University of Wisconsin System. + * Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, + * Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + * + * This file is part of GCAT. + * + * GCAT 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 3 of the License, or + * (at your option) any later version. + * + * GCAT 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 GCAT. If not, see . + */ + +/* + * This is a manifest file that'll automatically include all the stylesheets available in this directory + * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at + * the top of the compiled file, but it's generally better to create a new file per style scope. + *= require_self + *= require_tree . + *= require bootstrap.min +*/ + +//= require datatable +//= require jquery.loader-min \ No newline at end of file diff --git a/Rails/app/assets/stylesheets/assays.css.scss b/Rails/app/assets/stylesheets/assays.css.scss new file mode 100644 index 0000000..6455daf --- /dev/null +++ b/Rails/app/assets/stylesheets/assays.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Assays controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/Rails/app/assets/stylesheets/gcat.css.scss b/Rails/app/assets/stylesheets/gcat.css.scss new file mode 100644 index 0000000..69ed2d2 --- /dev/null +++ b/Rails/app/assets/stylesheets/gcat.css.scss @@ -0,0 +1,102 @@ +/* + * Copyright 2012 The Board of Regents of the University of Wisconsin System. + * Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, + * Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + * + * This file is part of GCAT. + * + * GCAT 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 3 of the License, or + * (at your option) any later version. + * + * GCAT 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 GCAT. If not, see . + */ + +/*.yui-skin-sam .yui-dt-liner { white-space:nowrap; font-size: 8pt;} +.twoColLiqLtHdr #mainContent { margin:0;min-height:500px; } //Not used anymore NWD// */ + +body { + background: url("bkg-body.png") repeat-x scroll left top #FFFFFF; + background-color: #FFFFFF; +} + +a:visited { color: #428bca !important;} + +#nav-bar{ + background:#B0C5D4; + border-bottom:1px solid #B0C5D4; + text-align:center; + h1{ + font: 42px impact, sans-serif; + } +} + +/*#copyright-stmt { + padding: 5px 25px; + width: 88%; + margin: 20px auto 0; + text-align: right; +}*/ + +#header h1 { + font-size: 32px; + color: #4F4F4F; +} + +#results-container { + background-color: #FFFFFF; + border: 1px solid black; + margin: 20px auto 0; + padding: 120px; + width: 4000px; +} + +#form-container { + background-color: #FFFFFF; + border: 1px solid black; + margin: 20px auto 0; + width: 1600px; + padding-left: 50px; +} + +#contents { + padding: 5px 25px; +} + +/*#mainContent{ + margin:0; + min-height:500px; +}*/ + +/*#header { + background: #fffff; + font: 14px arial; + color: black; + height:50px; + text-align:left; + padding: 0px 10px; + border-bottom:1px solid #69B03F; + width: 1600px; +}*/ + +/*#flash_notice, #flash_error, #flash_alert, .notice, .error, .alert { + padding: 5px 8px; + margin: 10px 0; +} + +#flash_notice, .notice { + background-color: #CFC; + border: solid 1px #6C6; +} + +#flash_error, #flash_alert, .error, .alert { + background-color: #FCC; + border: solid 1px #C66; +}*/ diff --git a/Rails/app/assets/stylesheets/scaffolds.css.scss b/Rails/app/assets/stylesheets/scaffolds.css.scss new file mode 100644 index 0000000..05188f0 --- /dev/null +++ b/Rails/app/assets/stylesheets/scaffolds.css.scss @@ -0,0 +1,56 @@ +body { + background-color: #fff; + color: #333; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; } + +p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; } + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; } + +a { + color: #000; + &:visited { + color: #666; } + &:hover { + color: #fff; + background-color: #000; } } + +div { + &.field, &.actions { + margin-bottom: 10px; } } + +#notice { + color: green; } + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; } + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; + h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0px; + background-color: #c00; + color: #fff; } + ul li { + font-size: 12px; + list-style: square; } } diff --git a/Rails/app/assets/stylesheets/tooltips.css b/Rails/app/assets/stylesheets/tooltips.css new file mode 100644 index 0000000..7b6fc03 --- /dev/null +++ b/Rails/app/assets/stylesheets/tooltips.css @@ -0,0 +1,157 @@ +/* + * Copyright 2012 The Board of Regents of the University of Wisconsin System. + * Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, + * Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman + * + * This file is part of GCAT. + * + * GCAT 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 3 of the License, or + * (at your option) any later version. + * + * GCAT 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 GCAT. If not, see . + */ + +/*.tooltip:hover:after { content: attr(data-tooltip); +position: absolute; white-space: nowrap; background: rgba(0, 0, 0, 0.85); padding: 3px 7px; color: #FFF; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; margin-left: 7px; margin-top: -3px;font-size:10px;} +*/ + + + /* Make tooltip "links" have a different pointer (as the tooltip uses the "help" cursor by default) */ + a[data-tooltip] + { + cursor:pointer !important; + } + /* Styles for elements having a data-tooltip attribute - using the star selector is processor intensive + so you may wish to change this to list a known, limited set of tags instead */ + *[data-tooltip] + { + /* Relativly position the tooltip to enable us to position:absolute + the generated content */ + position:relative; + /* Links inherit the !important cursor rule from above */ + cursor:help; + /* Moz requires the text-decoration here (as it won't allow the use of + text-decoration:none on generated content) which is why I use the bottom + border to display a more accessible underline */ + text-decoration:none; + border-bottom:1px dotted #aaa; + /* Remove the styles for IE7 and below - could be passed using conditional comments */ + *text-decoration:inherit; + *border-bottom-width:inherit; + *border-bottom-style:inherit; + *cursor:inherit; + *position:inherit; + } + /* Default :before & :after values */ + *[data-tooltip]:after, + *[data-tooltip]:before + { + content:""; + /* Don't show tooltip by default */ + opacity:0; + /* Set a high z-index */ + z-index:999; + + /* Animations won't (yet) work on pseudo elements - shame really as this should fade the tooltip in + after one second - but I'll leave the rules for posterity */ + -moz-transition-property: opacity; + -moz-transition-duration: 2s; + -moz-transition-delay: 1s; + + -webkit-transition-property: opacity; + -webkit-transition-duration: 2s; + -webkit-transition-delay: 1s; + + -o-transition-property: opacity; + -o-transition-duration: 2s; + -o-transition-delay: 1s; + + transition-property: opacity; + transition-duration: 2s; + transition-delay: 1s; + + /* -moz won't understand the text-decoration here but inherits the parent value of "none" successfully */ + text-decoration:none !important; + outline:none; + } + /* Tooltip arrow - shown on hover or focus */ + *[data-tooltip]:hover:before, + *[data-tooltip]:focus:before + { + /* Slightly opaque arrow */ + opacity:0.94; + outline:none; + content:""; + display:block; + position:absolute; + top:20px; + left:50%; + margin:0 0 0 -5px; + width:0; + height:0; + line-height:0px; + font-size:0px; + /* This sets the tooptip pointer color */ + border-bottom:5px solid #33acfc; + border-left:5px solid transparent; + border-right:5px solid transparent; + border-top:transparent; + /* Border gradient */ + -webkit-border-image:-webkit-gradient(linear, left top, left bottom, from(#33ccff), to(#33acfc)); + } + /* Tooltip body - shown on hover or focus */ + *[data-tooltip]:hover:after, + *[data-tooltip]:focus:after + { + /* Slightly opaque tooltip */ + opacity:0.94; + /* Set display to block (or inline-block) */ + display:block; + /* Use the data-tooltip attribute to set the content*/ + content:attr(data-tooltip); + /* Position the tooltip body under the arrow and in the middle of the text */ + position:absolute; + top:25px; + left:50%; + margin:0 0 0 -150px; + /* Set the width */ + width:290px; + /* Pad */ + padding:5px; + /* Style the tooltip */ + line-height:18px; + /* min-height */ + min-height:18px; + /* Set font styles */ + color:#fcfcfc; + font-size:16px; + font-weight:normal; + font-family:helvetica neue, calibri, verdana, arial, sans-serif; + /* Fallback background color */ + background:#3198dd; + text-align:center; + outline:none; + /* Moz doesn't recognise the following... */ + text-decoration:none !important; + /* Background gradient */ + background:-webkit-gradient(linear, left top, left bottom, from(#33acfc), to(#3198dd)); + background:-moz-linear-gradient(top,#33acfc,#3198dd); + /* Round the corners */ + -moz-border-radius:10px; + -webkit-border-radius:10px; + border-radius:10px; + /* Add a drop shadow */ + -moz-box-shadow:2px 2px 4px #ccc; + -webkit-box-shadow:2px 2px 4px #ccc; + box-shadow:2px 2px 4px #ccc; + /* Add a Text shadow */ + text-shadow:#2187c8 0 1px 0px; + } diff --git a/Rails/app/controllers/application_controller.rb b/Rails/app/controllers/application_controller.rb new file mode 100644 index 0000000..accd78e --- /dev/null +++ b/Rails/app/controllers/application_controller.rb @@ -0,0 +1,23 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +class ApplicationController < ActionController::Base + protect_from_forgery +end diff --git a/Rails/app/controllers/assays_controller.rb b/Rails/app/controllers/assays_controller.rb new file mode 100644 index 0000000..cfb2978 --- /dev/null +++ b/Rails/app/controllers/assays_controller.rb @@ -0,0 +1,73 @@ +include ApplicationHelper +include TableBuilder + +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +class AssaysController < ApplicationController + + def new + @assay= Assay.new + end + + def create + #Lazy mass assign from form params + @assay = Assay.new(params[:assay]) + + if @assay.valid? + + # Add the calls to methods to parse the form input in @assay and execute R script. + # return the results from R into a new instance variable and display results via show template + + #reassign some parameters. Validate on form input params or after manipulations? + @assay = @assay.parse_form_params + #debugger + + #execute R calculation and assign instance variable to display + @result = @assay.r_calculation + + # no need to keep storing old data + + #temp fix for pdfFiles see ticket #424. string of pdfFiles returned rather than array + unless @result[:pdfFiles].nil? + @result[:pdfFiles] = @result[:pdfFile].split('pdf') + @result[:pdfFiles].collect{|element| element + 'pdf'} + end + + if ( @result.has_key? :error_message ) #h.has_key?("a") # @result.has_key? :error_message + flash.now[:error] = @result[:error_message] #.join("\n") + #do not allow bad guys to fill disc space with invalid files + FileUtils.rm @result[:path] + render :action => 'inputfile_error_message' + else + # parse the output text file into a hash in order to create a table in Assays#show + @table = output_table(@result, !@result[:layout_file].nil?) + remove_old_files(relative_path(@result[:zipfile])) + flash.now[:notice] = "Your assay processed!\nPlease click on any of plate diagrams to save your results to a zip archive." + render :action => 'show' + end + else + + render :action => 'new' + end + end + + +end \ No newline at end of file diff --git a/Rails/app/helpers/application_helper.rb b/Rails/app/helpers/application_helper.rb new file mode 100644 index 0000000..c0f1dcb --- /dev/null +++ b/Rails/app/helpers/application_helper.rb @@ -0,0 +1,51 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +module ApplicationHelper + + def relative_path(fullpath) + fullpath.to_s.gsub(Rails.root.to_s + "/public","") + end + + #find all directories in generatedFiles/ and remove + #any that are more than a day old + def remove_old_files(path) + cur_date = extract_date(path) + dirs = Dir.glob(Rails.root + "public/generatedFiles/*") + Dir.glob(Rails.root + "public/uploadedFiles/*") + dirs.compact.each do |dir| + date = extract_date(dir) + if(date != cur_date) + puts "Removing: " + dir #log deletions + %x[ rm -rf #{dir} ] + end + end + end + + private + + def extract_date(path) + part = "Files/" + segment = path.partition(part).last + date = segment.split(/-[0-9]+/).first + date.to_i + end + + +end diff --git a/Rails/app/helpers/assays_helper.rb b/Rails/app/helpers/assays_helper.rb new file mode 100644 index 0000000..557368a --- /dev/null +++ b/Rails/app/helpers/assays_helper.rb @@ -0,0 +1,29 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +module AssaysHelper + + def date_time_options + + [['Y-m-d H:M:S', '%Y-%m-%d %H:%M:%S'],['Y-m-d H:M:S p', '%Y-%m-%d %I:%M:%S %p'],['m/d/y H:M:S','%m/%d/%y %H:%M:%S'],['m/d/y H:M:S p','%m/%d/%y %I:%M:%S %p'],['d/m/y H:M:S','%d/%m/%y %H:%M:%S'],['d/m/y H:M:S p','%d/%m/%y %I:%M:%S %p'],['m/d/Y H:M', '%m/%d/%Y %H:%M']] + + end + +end diff --git a/Rails/app/helpers/table_builder.rb b/Rails/app/helpers/table_builder.rb new file mode 100644 index 0000000..91fc062 --- /dev/null +++ b/Rails/app/helpers/table_builder.rb @@ -0,0 +1,64 @@ +module TableBuilder + + # I decided to parse the output file produced by the R library + # and build an html table rather than using the YUI JS library + # previously implemented. + # + # This method takes the result hash returned by the R bridge routine and + # builds an array of row arrays + def output_table result, has_layout + # if the user submits a layout file, there will be more columns in the output file + offsets = {:pdf => -2, :page => -1} + if(has_layout) + offsets[:pdf] = -7 + offsets[:page] = -6 + end + rel_path = result[:txtFile] + pdf_path = File.dirname @result[:txtFile] #Rails.root.join("public/"+result[:pdfFile]) + path = Rails.root.join("public/"+rel_path) + raise "File not found" unless File.exists? path + file = File.open path + output = [] + file.each_line do |line| + if(output.empty?) + # the headers seem to be enclosed in quotations + # will need to parse a bit differently + l_ar = line.split "\"\t\"" + l_ar.first.delete! "\"" + l_ar.last.delete! "\"\n" + l_ar.collect! {|l| l.gsub ".", " "} + output << l_ar + else + l_ar = line.split "\t" + l_ar.last.delete! "\"\n" + break unless l_ar.size > 1 + output << format_row(l_ar, pdf_path, offsets) + end + end + return output + end + + # this method: removes quotations from strings, truncates floats to 2 sig. digits, + # and creates html links to PDF files + # params: + # l_ar--An array of the one row of data + # path--directory path where the pdf file is located + # offsets-- a hash containing the negative array offsets for cells needed to build pdf link + # + # returns: A formatted array of one row from the output.txt data + def format_row l_ar, path, offsets + result = l_ar.collect! do |entry| + if(entry.to_f.zero?) + entry.gsub "\"", "" + elsif(view_context.number_with_precision(entry.to_f, precision: 2, significant: true).size > 15) + "%E" % view_context.number_with_precision(entry.to_f, precision: 2, significant: true) + else + view_context.number_with_precision(entry.to_f, precision: 2, significant: true) + end + end + result[offsets[:page]] = result[offsets[:page]].to_i # page number + # result[-7] == pdf.name + result[0] = "#{result[0].to_i}".html_safe # add pdf link to first row + return result + end +end \ No newline at end of file diff --git a/Rails/app/mailers/.gitkeep b/Rails/app/mailers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/app/models/.gitkeep b/Rails/app/models/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/app/models/assay.rb b/Rails/app/models/assay.rb new file mode 100644 index 0000000..a529700 --- /dev/null +++ b/Rails/app/models/assay.rb @@ -0,0 +1,393 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require 'zip' +# require 'zip/zipfilesystem' +require 'fileutils' +include FileUtils + +# single-plate timestamp +SECONDS = "1/3600".to_r.to_f +MAX_FILE_SIZE = 10000000.0 + +class Assay + + include ActiveModel::Validations + include ActiveModel::Conversion + extend ActiveModel::Naming + attr_accessor :input_file, :transformation, :transformation_input, :blank_value, :blank_value_input, :start_index, :remove_points, :remove_jumps, :plate_type, + :plate_dimensions_row, :plate_dimensions_column, :timestamp_format, :growth_threshold, :layout_file,:filename,:content_type, :model, :loess_input + + # (1) Validation of input data file + validates_presence_of :input_file, :message => '- No input file was specified.' + #Either look for .csv as file extension, or in mime type (content_type). No need to validate if there is not filename + #validates_format_of :filename, :with => %r{\.(csv|xlsx)$}i, :message => "- You can only upload csv and xlsx files.", :unless => lambda { self.input_file == nil } + validates_format_of :filename, :with => %r{\.(csv)$}i, :message => "- You can only upload csv files.", :unless => lambda { self.input_file == nil } + + def filename + unless self.input_file.nil? + self.filename = self.input_file.original_filename + end + end + + def content_type + unless self.input_file.nil? + self.content_type = self.input_file.content_type + end + end + + # (2)Validation of transformation + # if user input is chosen, the user should enter a valid Delta value (A Real Number) + validates_presence_of :transformation_input, :if => :user_input_r_value?, :message => '- Please Enter Your Delta Value.' + validates_numericality_of :transformation_input, :if => :user_input_r_value? , :greater_than_or_equal_to => 0 , :message => '- Invalid value for Delta. Please Enter a positive real number.' + def user_input_r_value? + transformation == "-1" + end + + # (3) Validation of OD blank value + # if user input is chosen,, the user should enter a valid OD blank value(A Real Number) + #validates_inclusion_of :blank_value, :in => %w( default user ), :message => '- Invalid blank value. Please choose one of options' + validates_presence_of :blank_value_input, :if => :user_input?, :message => '- Please Enter Your OD Blank Value.' + validates_numericality_of :blank_value_input,:if => :user_input?, :message => '- Invalid OD blank value. Please Enter A Real Number.' + def user_input? + blank_value == "user" + end + + + # (4) Validation of start_index + # if user does not enter anything, the system uses the default value start_index = 2 + validates_format_of :start_index,:with => /^[0-9 \s]*$/i, :unless => :default_value?,:message => '- Invalid value for start index. Please Enter A Positive Integer Number' + def default_value? + start_index == '' + end + + + # (5) Validation of remove_points + # if user does not enter anything, the system uses the default value remove_points = 0, that is an empty list + #validates_format_of :remove_points,:with => /^[0-9 \,\s]*$/i, :unless => :remove_points_default_value?, :message => '- Please Enter a comma-separated list of points. Example: 2,3,4,5 (Positive Integer Number)' + validates_format_of :remove_points,:with => /^(\d|\d+\s*,\s*)*$/i, :unless => :remove_points_default_value?, :message => '- Please Enter a comma-separated list of points. Example: 2,3,4,5 (Positive Integer Number)' + def remove_points_default_value? + remove_points == '' + end + + # (6) Validation of growth threshold + validates_numericality_of :growth_threshold, :message => '- Please enter a number.' + + #validate plate dimensions + #v1 not including custom plate dimensions + #validates :plate_dimensions_column, :numericality => { :only_integer => true, :greater_than => 0} + #validates :plate_dimensions_row, :numericality => { :only_integer => true, :greater_than => 0 } + + #validate inoculation timepoint + validates :start_index, :numericality => { :only_integer => true, :greater_than => 0} + + + def initialize(attributes = {}) + attributes.each do |name, value| + send("#{name}=", value) + end + end + + def persisted? # + false + end + + def parse_form_params + + # (1) input data file + + # (2) transformation. N value (A Real Number) + if self.transformation == '-1' + self.transformation = Float(self.transformation_input) + else + self.transformation = self.transformation.to_i + end + + # Soothing parameter for growth curve model. Applied for Loess model only. + if self.model == '-1' and self.loess_input != "" + self.loess_input = Float(self.loess_input) + end + + # (3) blank value (A Real Number) + if self.blank_value == 'default' + self.blank_value = nil + else + self.blank_value = Float(self.blank_value_input) + end + + # (4) start index (A Positive Integer Number) + if + start_index == '' + self.start_index = 2 + else + self.start_index.gsub(/\s+/, "") # remove white spaces + self.start_index = self.start_index.to_i + end + + # (5) remove points [a space-separated list of points. Example: 2 3 4 5 (Positive Integer Number)] + self.remove_points = self.remove_points.gsub(/\r/,"") # "Some text with a carriage return \r" + self.remove_points = self.remove_points.gsub(/\r\n/,"\n") # "Some text with a carriage return \r\n" + self.remove_points = self.remove_points.gsub(/\s+/, "") # remove white spaces + + ##collect! calls .to_i on each string in the array and replaces the string with the result of the conversion. + self.remove_points = self.remove_points.split(',').collect! {|n| n.to_i} + + ## (6) remove jumps (true/false) + if self.remove_jumps == 1 + self.remove_jumps = true + else + self.remove_jumps = false + end + + +############################################################################################ + + return self + + end # end of parse_form_params method + + def pad_date(unit) + unit.to_i < 10 ? "0" + unit.to_s : unit.to_s + end + + def r_calculation + + # uniqueID = Process.pid.to_s + "-" + Time.now.to_i.to_s + #wanted the date to be easier to extract NWD 2/26/14 + today = Time.now + + uniqueID = today.year.to_s + pad_date(today.month) + pad_date(today.day) + "-" + today.to_i.to_s + # set working directories for uploaded and generated files + directoryPath = Rails.root + "public/uploadedFiles/" + uniqueID + outDir = Rails.root + "public/generatedFiles/" + uniqueID + out_dir_path = outDir.to_s + + # make directory and set permission + FileUtils.mkdir_p(outDir) + FileUtils.chmod 0777, outDir + FileUtils.mkdir_p(directoryPath) + FileUtils.chmod 0777, directoryPath + + # upload input data file from where it locates into web server via uri/url + fromfile = self.input_file + inputfile = directoryPath + fromfile.original_filename + FileUtils.copy( fromfile.tempfile.path, inputfile ) + + # upload layout data file from where it locates into web server via uri/url + unless self.layout_file.nil? + fromfile = self.layout_file + layout_file = directoryPath + fromfile.original_filename + FileUtils.copy( fromfile.tempfile.path, layout_file ) + end + + #do not massive files + if(File.size(inputfile) > MAX_FILE_SIZE) + return {:error_message => "Error: File too big. Maximum file size allowed is #{MAX_FILE_SIZE/(10**6)} MB.", :path => inputfile} + end + + # use web interface parsed parameters to call R function/library via Rinruby + R.eval ('library(GCAT)') + R.assign "out.dir", out_dir_path + # That is for Single Plate case. Need modification for multiple plate case + #Use one set.constants call only! + + if self.plate_type == 's' + R.assign 'single.plate', 'T' + timestamp_format = SECONDS #self.timestamp_format.to_r.to_f + elsif self.plate_type == 'm' + R.assign 'single.plate', 'F' + timestamp_format = ""+self.timestamp_format+"" + end + + + #################for warringer data########################################### + # used for custom dims + #R.assign 'plate.nrow', 10 + #R.assign 'plate.ncol', 20 + ############################################################################## + + R.assign 'time.input', timestamp_format + #R.eval ("gcat.set.constants(time.format = #{timestamp_format}, plate.nrow = #{self.plate_dimensions_row}, plate.ncol = #{self.plate_dimensions_column})") + + # assign type of file to load.type; ext determines function call by R + R.assign "load.type", "csv" + ext = "csv" + + + # (1) input data file + R.assign "file", inputfile.to_s + + first_rows = ["Well positions", "Destination plate name", "Plate ID"] + begin + file_row = "" + File.open(inputfile) {|f| file_row = f.readline.split(",").first} + if(first_rows.include?(file_row) == false) + return {:error_message => "Error: Unknown file format.", :path => inputfile} + end + rescue + #bad encoding try to validate in R + first_rows.collect! {|r| r.gsub(" ", ".")} # convert to R format + R.eval("test.out <- read.csv(file)") + R.eval("first_entry <- names(test.out)[1]") + if(first_rows.include?(R.first_entry) == false) + return {:error_message => "Error: Unknown file format.", :path => inputfile} + end + end + + # (2) transformation. N value (A Real Number) + R.assign "add.constant", self.transformation + # (3) blank value (A Real Number) + if (self.blank_value == nil) + R.eval "blank.value <- NULL" + else + R.assign "blank.value", self.blank_value + end + # (4) start index (A Positive Integer Number) + R.assign "start.index", self.start_index + # (5) remove points [a space-separated list of points. Example: 2,3,4,5 (Positive Integer Number)] + R.assign "points.to.remove", self.remove_points + + R.assign "growth.cutoff", self.growth_threshold + + if (self.layout_file ==nil) + R.eval "layout.file <- NULL" + else + R.assign "layout.file", layout_file.to_s + end + + #debugger + #R.assign "plate.nrow", self.plate_dimensions_row + #R.assign "plate.ncol", self.plate_dimensions_column + + ## (6) remove jumps (true/false) + if (self.remove_jumps == true) + R.eval "remove.jumps <- T" + else + R.eval "remove.jumps <- F" + end + # Using growth curve model. By default if this if block + # is not taken then the Sigmund model is used. + if (self.model == -1.to_s) + R.assign 'use.loess', 'T' + if (self.loess_input != "") + R.assign 'smooth.param', self.loess_input + else + R.assign 'smooth.param', 0.1 + end + R.assign 'use.linear.param', 'F' + elsif (self.model == 0.to_s) + # Currently not in use. May return someday... NWD 9/1 + #R.assign 'use.linear.param', 'T' + R.assign 'use.linear.param', 'F' #must be false + R.assign 'use.loess', 'F' + else + # Initialize values for growth curve models. + R.assign 'use.loess', 'F' + R.assign 'use.linear.param', 'F' + R.assign 'smooth.param', 0.1 # default value + end + + # This block evaluates the files (csv or xlsx, single.plate or multiple.plate) + R.eval ('R_file_return_value <- gcat.analysis.main(file, single.plate, layout.file, out.dir=out.dir, graphic.dir = out.dir, add.constant, blank.value, + start.index, growth.cutoff, use.linear.param=use.linear.param, use.loess=use.loess, smooth.param=smooth.param, + points.to.remove = points.to.remove, remove.jumps, time.input, plate.nrow = 8, plate.ncol = 12, input.skip.lines = 0, + multi.column.headers = c("Plate.ID", "Well", "OD", "Time"), single.column.headers = c("","A1"), + layout.sheet.headers = c("Strain", "Media Definition"), silent = T, verbose = F, return.fit = F, overview.jpgs = T)') + + # good file returns a list of file path(length is more than 1), bad file returns error message string(array length = 1) + print R.R_file_return_value + R.eval ('R_array_return_length <- length(R_file_return_value)') + unless R.R_array_return_length == 1 + puts R.R_file_return_value, "\n" + files = R.R_file_return_value # returns a list of file path + status = true + else + error_message = R.R_file_return_value + if(error_message.include? "Error in ") + num_data_points = error_message.split("data has ").last.gsub("\n\n", "") + error_message = "Invalid 'Points to ignore'. Please select a value in the range (1-#{num_data_points})." + end + return {:error_message => error_message, :path => inputfile} + end + + # process generated files + raise "no files generated" if files.empty? + #search for "_overview.jpg files" from Array of files + overviewFiles = "" + pdfFile = "" + txtFile = "" + files_Array_Size = files.size - 1 + + for i in 0..files_Array_Size + if files[i].include? "_overview.jpg" + overviewFiles = overviewFiles + files[i] + "\n" + end + + if files[i].include? "_plots" + pdfFile = pdfFile + files[i] + "\n" + end + + if files[i].include? ".txt" + txtFile = txtFile + files[i] + "\n" + end + end + + + unless pdfFile.empty? + #pdfFile = pdfFile.sub!(Rails.root.to_s + '/public/', '') #sub!(pattern, replacement) will return nil if no substitutions were performed + pdfFile = pdfFile.gsub(Rails.root.to_s + '/public/', '') #Oct. 04 2011 by Enhai + pdfFile = pdfFile.gsub(/\r/,"") # "Some text with a carriage return \r" + pdfFile = pdfFile.gsub(/\r\n/,"\n") # "Some text with a carriage return \r\n" + pdfFile = pdfFile.gsub(/\s+/, "") # remove white spaces + end + + unless txtFile.empty? + #txtFile = txtFile.sub!(Rails.root.to_s + '/public/', '')#sub!(pattern, replacement) will return nil if no substitutions were performed + txtFile = txtFile.gsub(Rails.root.to_s + '/public/', '') #Oct. 04 2011 by Enhai + txtFile = txtFile.gsub(/\r/,"") # "Some text with a carriage return \r" + txtFile = txtFile.gsub(/\r\n/,"\n") # "Some text with a carriage return \r\n" + txtFile = txtFile.gsub(/\s+/, "") # remove white spaces + end + + # build array named overviewFiles that contains "_overview.jpg files" + overviewFiles = overviewFiles.split("\n") + raise "no overview files generated" if overviewFiles.empty? + + if self.plate_type == 'm' + zipfile = out_dir_path + "/multiplePlateAnalysis.zip" + else + zipfile = out_dir_path + "/singlePlateAnalysis.zip" + end + + # create Zip files at current directory + Zip::File.open(zipfile, Zip::File::CREATE) { |zf| + files.each{|file| zf.add(File.basename(file), file)} + #files.each{|file| zf.add(file.sub(out_dir_path + "/", ""), file))} + } + + #return results unless error + #zip files, jpg of overviews, txt file for datagrid, pdf file + + + {:status => status, :overviewFiles => overviewFiles, :zipfile => zipfile, :txtFile => txtFile, :pdfFile => pdfFile, :inputfile => inputfile, :layout_file => layout_file, :model => self.model} + end # end of r_calculation method + + +end # class Assay diff --git a/Rails/app/views/assays/_form.html.erb b/Rails/app/views/assays/_form.html.erb new file mode 100644 index 0000000..9564b23 --- /dev/null +++ b/Rails/app/views/assays/_form.html.erb @@ -0,0 +1,147 @@ +<%= form_for @assay do |f| %> + + <% if @assay.errors.any? %> +
+

<%= pluralize(@assay.errors.count, "error") %> prohibited this assay from being saved:

+ +
    + <% @assay.errors.full_messages.each do |msg| %> +
  • <%= msg %>
  • + <% end %> +
+
+ <% end %> + + +

Plate Type

+ <%= f.radio_button(:plate_type, 's', :checked => true) %> + <%= f.label(:plate_type_single, "Single-plate") %>
+ <%= f.radio_button(:plate_type, 'm', :checked => false) %> + <%= f.label(:plate_type_single, "Multiple-plate") %>
+ +

Input Data File

+Please specify a plate results file to upload for analysis:
+ +
+ <%= f.file_field :input_file %> +
+ +

Plate Layout File

+Optionally upload a plate layout file:
+ +
+ <%= f.file_field :layout_file %> +
+ +
+ <%= link_to "Single-Plate Example File","/resources/YPDAFEXglucoseTests_2-25-10.csv" %>
+ <%= link_to "Single-Plate Layout Example File","/resources/YPDAFEXglucoseTests_2-25-10_Layout.csv" %>
+ <%= link_to "Multi-Plate Example File","/resources/test_YYYY_MM_DD_HH_MM_SS.csv" %>
+ <%= link_to "Multi-Plate Layout Example File","/resources/MultiPlateLayout_plateID.csv" %> + +
+ +

Media background

+ + <%= f.radio_button(:blank_value, "default", {:checked => true, :class => "user_enter3 user_enter3_no"}) %> + <%= f.label(:blank_value_blank_value_default, "Take the first OD reading of each well to be the blank") %>
+ + <%= f.radio_button(:blank_value, "user", {:class => "user_enter3 user_enter3_yes"}) %> + <%= f.label(:blank_value_user, "User Input.") %> + + + +

OD Transform

+ +<%= f.radio_button(:transformation, 1, {:checked => true, :class => "user_enter2 user_enter2_no"}) %> +<%= f.label(:transformation_one, "log(x + 0.1)") %>
+ +<%= f.radio_button(:transformation, 0, {:class => "user_enter2 user_enter2_no"}) %> +<%= f.label(:transformation_zero, "log(x)") %>
+ +<%= f.radio_button(:transformation, -1, {:class => "user_enter2 user_enter2_yes"}) %> +<%= f.label(:transformation_any, "log(x + δ)") %> + + + +

Growth curve model

+ + +<%= f.radio_button(:model, 1, {:checked => true, :class => "user_enter1 user_enter1_no"})%> +<%= f.label(:model_one, "Sigmoid curve") %> + +<%#= f.radio_button(:model, 0, {:class => "user_enter1 user_enter1_no"}) %> +<%#= f.label(:model_zero, "Sigmoid + linear") %> + +<%= f.radio_button(:model, -1, {:class => "user_enter1 user_enter1_yes"}) %> +<%= f.label(:model_any, "LOESS. The default smoothing value is 0.1.") %> + + + +

Inoculation timepoint

+ +
+ <%= f.label :start_index, "Enter the timepoint index (positive integer only). The default value is 2. " %>
+ <%= f.text_field(:start_index, :type => 'number', :min =>'1', :size => '3', :value => '2') %> +
+ +

Growth Threshold

+ +
+ <%= f.label :growth_threshold, "Enter the growth threshold. The default value is 0.05. " %>
+ <%= f.text_field(:growth_threshold, :type => 'number', :min =>'0', :size => '3', :value => '0.05', :step => "0.01") %> +
+ +

Points to ignore

+
+ <%= f.label :remove_points,"Enter a comma-separated list of points. Example: 2,3,4,5 (positive integers only). The default is an empty list." %>
+ <%= f.text_field :remove_points %> +
+ + +<%#= f.check_box(:remove_jumps) %> +<%#= f.label(:remove_jumps, "Employ the jump detection algorithm to attempt to remove problematic points.") %> +<% +=begin %> +

Plate Dimensions

+
+ <%= f.label 'number of rows' %> + <%= f.text_field(:plate_dimensions_row, :type => 'number', :min =>'1', :size => '3', :value => '8') %> +
+
+ <%= f.label 'number of columns' %> + <%= f.text_field(:plate_dimensions_column, :type => 'number', :min =>'1', :size => '3', :value => '12') %> +
+<% +=end %> +
+

Timestamp format

+ <%= f.label :timestamp_format %>
+ <%#= f.text_field(:timestamp_format, :value => '1/3600', :id => 'adam') %> + <%= f.select :timestamp_format, options_for_select(date_time_options()) %> +
+ + +
+ <%= f.submit %> +
+ +
+ <%= mail_to "gcat.help@glbrc.wisc.edu","Please Send Any Questions To The GLBRC Help Desk And Be Sure To Include 'GCAT' In Your Subject Title", :subject => "GCAT" %> +
+ + +
+ <%= link_to "GCAT Users Manual","/resources/GCAT_users_manual.pdf" %> +
+ +<% end %> diff --git a/Rails/app/views/assays/index.html.erb b/Rails/app/views/assays/index.html.erb new file mode 100644 index 0000000..e69de29 diff --git a/Rails/app/views/assays/inputfile_error_message.html.erb b/Rails/app/views/assays/inputfile_error_message.html.erb new file mode 100644 index 0000000..8bb189f --- /dev/null +++ b/Rails/app/views/assays/inputfile_error_message.html.erb @@ -0,0 +1,6 @@ +
+

Error

+

Please resubmit your file.

+ <%= link_to 'New Assay', new_assay_path%> +


+
\ No newline at end of file diff --git a/Rails/app/views/assays/new.html.erb b/Rails/app/views/assays/new.html.erb new file mode 100644 index 0000000..d2b4437 --- /dev/null +++ b/Rails/app/views/assays/new.html.erb @@ -0,0 +1,11 @@ +
+

Growth Curve Analysis Tool

+ +
+ This tool processes microbial growth curve data collected in a microtiter plate format and + generates a table of biologically meaningful growth curve characteristics, as well as relevant + plots. These characteristics can be used to select strains with optimal growth properties. +
+ + <%= render 'form' %> +
\ No newline at end of file diff --git a/Rails/app/views/assays/show.html.erb b/Rails/app/views/assays/show.html.erb new file mode 100644 index 0000000..badd4b6 --- /dev/null +++ b/Rails/app/views/assays/show.html.erb @@ -0,0 +1,42 @@ +
+ <% if flash[:notice] %> + + <% end %> + <% if flash[:alert] %> + + <% end %> +

Analysis Results

+

+ Uploaded file: <%=h @result[:inputfile].to_s %> +
+ <% if @result[:layout_file] %> + Layout file: <%=h @result[:layout_file].to_s %> + <% end %> +

+ <%= link_to 'New Assay', new_assay_path%> +

+ <% @result[:overviewFiles].each do | overview_file | %> + <%= link_to image_tag(relative_path(overview_file), + :alt => "Your Submission", + :style => "vertical-align:middle;"), + relative_path(@result[:zipfile])%> + <% end %> +

+
+

Analysis Results DataTable

+ + <% @table.each do |row| %> + <% i = 0 %> + + <% row.each do |cell| %> + + + <% end %> + + <% end %> +
<%= cell %>
+
\ No newline at end of file diff --git a/Rails/app/views/layouts/application.html.erb b/Rails/app/views/layouts/application.html.erb new file mode 100644 index 0000000..113f1ff --- /dev/null +++ b/Rails/app/views/layouts/application.html.erb @@ -0,0 +1,25 @@ + + + + GCAT + <%= favicon_link_tag "/favicon.ico" %> + <%= stylesheet_link_tag "application" %> + <%= javascript_include_tag "application" %> + <%= csrf_meta_tags %> + + + +
+
+ <%= yield %> +
+ +
+ + diff --git a/Rails/config.ru b/Rails/config.ru new file mode 100644 index 0000000..4b8d615 --- /dev/null +++ b/Rails/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Gcat::Application diff --git a/Rails/config/application.rb b/Rails/config/application.rb new file mode 100644 index 0000000..1fabefa --- /dev/null +++ b/Rails/config/application.rb @@ -0,0 +1,76 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require File.expand_path('../boot', __FILE__) + +#Not using a database for GCAT +#require 'rails/all' + +require "action_controller/railtie" +require "action_mailer/railtie" +require "active_resource/railtie" +require "rails/test_unit/railtie" +require "sprockets/railtie" + +if defined?(Bundler) + # If you precompile assets before deploying to production, use this line + #Bundler.require *Rails.groups(:assets => %w(development test)) + # If you want your assets lazily compiled in production, use this line + Bundler.require(:default, :assets, Rails.env) +end + +module Gcat + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Custom directories with classes and modules you want to be autoloadable. + # config.autoload_paths += %W(#{config.root}/extras) + + # Only load the plugins named here, in the order given (default is alphabetical). + # :all can be used as a placeholder for all plugins not explicitly named. + # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + + # Activate observers that should always be running. + # config.active_record.observers = :cacher, :garbage_collector, :forum_observer + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + config.i18n.enforce_available_locales = false + + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + + # Configure sensitive parameters which will be filtered from the log file. + config.filter_parameters += [:password] + + # Enable the asset pipeline + config.assets.enabled = true + + # Version of your assets, change this if you want to expire all your assets + config.assets.version = '1.0' + end +end \ No newline at end of file diff --git a/Rails/config/boot.rb b/Rails/config/boot.rb new file mode 100644 index 0000000..c8117ad --- /dev/null +++ b/Rails/config/boot.rb @@ -0,0 +1,26 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require 'rubygems' + +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) + +require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) diff --git a/Rails/config/database.example b/Rails/config/database.example new file mode 100644 index 0000000..51a4dd4 --- /dev/null +++ b/Rails/config/database.example @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +development: + adapter: sqlite3 + database: db/development.sqlite3 + pool: 5 + timeout: 5000 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: sqlite3 + database: db/test.sqlite3 + pool: 5 + timeout: 5000 + +production: + adapter: sqlite3 + database: db/production.sqlite3 + pool: 5 + timeout: 5000 diff --git a/Rails/config/environment.rb b/Rails/config/environment.rb new file mode 100644 index 0000000..ddeec95 --- /dev/null +++ b/Rails/config/environment.rb @@ -0,0 +1,25 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Load the rails application +require File.expand_path('../application', __FILE__) + +# Initialize the rails application +Gcat::Application.initialize! diff --git a/Rails/config/environments/development.rb b/Rails/config/environments/development.rb new file mode 100644 index 0000000..ed20041 --- /dev/null +++ b/Rails/config/environments/development.rb @@ -0,0 +1,50 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +Gcat::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true + + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Don't care if the mailer can't send + config.action_mailer.raise_delivery_errors = false + + # Print deprecation notices to the Rails logger + config.active_support.deprecation = :log + + # Only use best-standards-support built into browsers + config.action_dispatch.best_standards_support = :builtin + + # Do not compress assets + config.assets.compress = false + + # Expands the lines which load the assets + config.assets.debug = true +end \ No newline at end of file diff --git a/Rails/config/environments/production.rb b/Rails/config/environments/production.rb new file mode 100644 index 0000000..86d35b0 --- /dev/null +++ b/Rails/config/environments/production.rb @@ -0,0 +1,80 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +Gcat::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # Code is not reloaded between requests + config.cache_classes = true + + # Full error reports are disabled and caching is turned on + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Disable Rails's static asset server (Apache or nginx will already do this) + config.serve_static_assets = false + + # Compress JavaScripts and CSS + config.assets.compress = true + + # Don't fallback to assets pipeline if a precompiled asset is missed + config.assets.compile = true + + # Generate digests for assets URLs + config.assets.digest = true + + # Defaults to Rails.root.join("public/assets") + # config.assets.manifest = YOUR_PATH + + # Specifies the header that your server uses for sending files + # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # See everything in the log (default is :info) + # config.log_level = :debug + + # Use a different logger for distributed setups + # config.logger = SyslogLogger.new + + # Use a different cache store in production + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server + # config.action_controller.asset_host = "http://assets.example.com" + + # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) + # config.assets.precompile += %w( search.js ) + + # Disable delivery errors, bad email addresses will be ignored + # config.action_mailer.raise_delivery_errors = false + + # Enable threaded mode + # config.threadsafe! + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation can not be found) + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners + config.active_support.deprecation = :notify +end \ No newline at end of file diff --git a/Rails/config/environments/test.rb b/Rails/config/environments/test.rb new file mode 100644 index 0000000..642db06 --- /dev/null +++ b/Rails/config/environments/test.rb @@ -0,0 +1,62 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +Gcat::Application.configure do + # Settings specified here will take precedence over those in config/application.rb + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Configure static asset server for tests with Cache-Control for performance + config.serve_static_assets = true + config.static_cache_control = "public, max-age=3600" + + # Log error messages when you accidentally call methods on nil + config.whiny_nils = true + + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment + config.action_controller.allow_forgery_protection = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Use SQL instead of Active Record's schema dumper when creating the test database. + # This is necessary if your schema can't be completely dumped by the schema dumper, + # like if you have constraints or database-specific column types + # config.active_record.schema_format = :sql + + # Print deprecation notices to the stderr + config.active_support.deprecation = :stderr + + # Allow pass debug_assets=true as a query parameter to load pages with unpackaged assets + config.assets.allow_debugging = true +end \ No newline at end of file diff --git a/Rails/config/initializers/backtrace_silencers.rb b/Rails/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..978835b --- /dev/null +++ b/Rails/config/initializers/backtrace_silencers.rb @@ -0,0 +1,27 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/Rails/config/initializers/inflections.rb b/Rails/config/initializers/inflections.rb new file mode 100644 index 0000000..5db1c15 --- /dev/null +++ b/Rails/config/initializers/inflections.rb @@ -0,0 +1,30 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format +# (all these examples are active by default): +# ActiveSupport::Inflector.inflections do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end diff --git a/Rails/config/initializers/mime_types.rb b/Rails/config/initializers/mime_types.rb new file mode 100644 index 0000000..9a87c73 --- /dev/null +++ b/Rails/config/initializers/mime_types.rb @@ -0,0 +1,25 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf +# Mime::Type.register_alias "text/html", :iphone diff --git a/Rails/config/initializers/secret_token.rb b/Rails/config/initializers/secret_token.rb new file mode 100644 index 0000000..903cc40 --- /dev/null +++ b/Rails/config/initializers/secret_token.rb @@ -0,0 +1,27 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. + +# Your secret key for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +Gcat::Application.config.secret_token = 'a1ba91ea23f998a7faf1a2c7128510c1e1dbd403d38ef2c7d280401a7e92645a18495e3f8eda0d5e9c67b1613372f0faef0775b4236758cc74650ef5c314d40b' diff --git a/Rails/config/initializers/session_store.rb b/Rails/config/initializers/session_store.rb new file mode 100644 index 0000000..385b5fa --- /dev/null +++ b/Rails/config/initializers/session_store.rb @@ -0,0 +1,28 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. + +Gcat::Application.config.session_store :cookie_store, key: '_gcat_session' + +# Use the database for sessions instead of the cookie-based default, +# which shouldn't be used to store highly confidential information +# (create the session table with "rails generate session_migration") +# Gcat::Application.config.session_store :active_record_store diff --git a/Rails/config/initializers/wrap_parameters.rb b/Rails/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..52044b5 --- /dev/null +++ b/Rails/config/initializers/wrap_parameters.rb @@ -0,0 +1,34 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# Be sure to restart your server when you modify this file. +# +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# Disable root element in JSON by default. +ActiveSupport.on_load(:active_record) do + self.include_root_in_json = false +end \ No newline at end of file diff --git a/Rails/config/locales/en.yml b/Rails/config/locales/en.yml new file mode 100644 index 0000000..179c14c --- /dev/null +++ b/Rails/config/locales/en.yml @@ -0,0 +1,5 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + hello: "Hello world" diff --git a/Rails/config/routes.rb b/Rails/config/routes.rb new file mode 100644 index 0000000..70cc0ab --- /dev/null +++ b/Rails/config/routes.rb @@ -0,0 +1,82 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +Gcat::Application.routes.draw do + resources :assays + + root :to => 'assays#new' + + # The priority is based upon order of creation: + # first created -> highest priority. + + # Sample of regular route: + # match 'products/:id' => 'catalog#view' + # Keep in mind you can assign values other than :controller and :action + + # Sample of named route: + # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase + # This route can be invoked with purchase_url(:id => product.id) + + # Sample resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Sample resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Sample resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Sample resource route with more complex sub-resources + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', :on => :collection + # end + # end + + # Sample resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end + + # You can have the root of your site routed with "root" + # just remember to delete public/index.html. + # root :to => 'welcome#index' + + # See how all your routes lay out with "rake routes" + + # This is a legacy wild controller route that's not recommended for RESTful applications. + # Note: This route will make all actions in every controller accessible via GET requests. + # match ':controller(/:action(/:id(.:format)))' +end \ No newline at end of file diff --git a/Rails/db/schema.rb b/Rails/db/schema.rb new file mode 100644 index 0000000..620573e --- /dev/null +++ b/Rails/db/schema.rb @@ -0,0 +1,36 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 0) do + +end \ No newline at end of file diff --git a/Rails/db/seeds.rb b/Rails/db/seeds.rb new file mode 100644 index 0000000..4928fc4 --- /dev/null +++ b/Rails/db/seeds.rb @@ -0,0 +1,27 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). +# +# Examples: +# +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create(name: 'Emanuel', city: cities.first) diff --git a/Rails/doc/README_FOR_APP b/Rails/doc/README_FOR_APP new file mode 100644 index 0000000..fe41f5c --- /dev/null +++ b/Rails/doc/README_FOR_APP @@ -0,0 +1,2 @@ +Use this README file to introduce your application and point to useful places in the API for learning more. +Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries. diff --git a/Rails/lib/assets/.gitkeep b/Rails/lib/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/lib/tasks/.gitkeep b/Rails/lib/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/lib/tasks/svn.rake b/Rails/lib/tasks/svn.rake new file mode 100644 index 0000000..fba2da2 --- /dev/null +++ b/Rails/lib/tasks/svn.rake @@ -0,0 +1,27 @@ +desc "Configure Subversion for Rails" +task :configure_for_svn do + system "svn remove log/*" + system "svn commit -m 'removing all log files from subversion'" + system 'svn propset svn:ignore "*.log" log/' + system "svn update log/" + system "svn commit -m 'Ignoring all files in /log/ ending in .log'" + system 'svn propset svn:ignore "*.db" db/' + system "svn update db/" + system "svn commit -m 'Ignoring all files in /db/ ending in .db'" + system "svn move config/database.yml config/database.example" + system "svn commit -m 'Moving database.yml to database.example to provide a template for anyone who checks out the code'" + system 'svn propset svn:ignore "database.yml" config/' + system "svn update config/" + system "svn commit -m 'Ignoring database.yml'" + system "svn remove tmp/*" + system "svn commit -m 'Removing /tmp/ folder'" + system 'svn propset svn:ignore "*" tmp/' + system "svn update tmp/" + system "svn commit -m 'Ignoring all contents of tmp/'" +end +desc "Add new files to subversion" +task :add_new_files do + system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add" +end +desc "shortcut for adding new files" +task :add => [ :add_new_files ] \ No newline at end of file diff --git a/Rails/log/.gitkeep b/Rails/log/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/public/404.html b/Rails/public/404.html new file mode 100644 index 0000000..1a410a5 --- /dev/null +++ b/Rails/public/404.html @@ -0,0 +1,46 @@ + + + + + The page you were looking for doesn't exist (404) + + + + + +
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+ + diff --git a/Rails/public/422.html b/Rails/public/422.html new file mode 100644 index 0000000..81c1249 --- /dev/null +++ b/Rails/public/422.html @@ -0,0 +1,46 @@ + + + + + The change you wanted was rejected (422) + + + + + +
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+ + diff --git a/Rails/public/500.html b/Rails/public/500.html new file mode 100644 index 0000000..97fbb3a --- /dev/null +++ b/Rails/public/500.html @@ -0,0 +1,46 @@ + + + + + We're sorry, but something went wrong (500) + + + + + +
+

We're sorry, but something went wrong.

+

We've been notified about this issue and we'll take a look at it shortly.

+
+ + diff --git a/Rails/public/favicon.ico b/Rails/public/favicon.ico new file mode 100644 index 0000000..8e86a9f Binary files /dev/null and b/Rails/public/favicon.ico differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_achieved_growth.pdf b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_achieved_growth.pdf new file mode 100644 index 0000000..c6041a2 Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_achieved_growth.pdf differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_lag_time.pdf b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_lag_time.pdf new file mode 100644 index 0000000..63be118 Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_lag_time.pdf differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_max_spec.growth.rate.pdf b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_max_spec.growth.rate.pdf new file mode 100644 index 0000000..d75060f Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_max_spec.growth.rate.pdf differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_overview.jpg b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_overview.jpg new file mode 100644 index 0000000..9f504f7 Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_overview.jpg differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf new file mode 100644 index 0000000..281016e Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/output_gcat.fit_2015-04-07_15.34.27.txt b/Rails/public/generatedFiles/20150407-1428438865/output_gcat.fit_2015-04-07_15.34.27.txt new file mode 100644 index 0000000..d8b6714 --- /dev/null +++ b/Rails/public/generatedFiles/20150407-1428438865/output_gcat.fit_2015-04-07_15.34.27.txt @@ -0,0 +1,141 @@ +"row" "plate" "well" "media" "strain" "model" "lag.time, hrs" "lag.time.SE, hrs" "inflection.time, hrs" "max.spec.growth.rate, log.OD/hr" "max.spec.growth.rate.SE, log.OD/hr" "baseline, log.OD" "baseline.SE, log.OD" "amplitude, log.OD" "amplitude.SE, log.OD" "plateau, log.OD" "inoc.log.OD" "max.log.OD" "projected.growth, log.OD" "achieved.growth, log.OD" "baseline.OD" "amplitude.OD" "plateau.OD" "inoc.OD" "max.OD" "projected.growth.OD" "achieved.growth.OD" "shape.par" "shape.par.SE" "R.squared" "RSS" "empty" "asymp.not.reached" "tank" "other" "pdf.file" "page.no" "Destination.plate.name" "Well.ID" "Plate.source" "Well.Source" "Media.Definition" +1 "YPDAFEXglucoseTests_2-25-10" "A01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 2 "Control strain plate" "Empty" "Empty" "Empty" "None" +2 "YPDAFEXglucoseTests_2-25-10" "B01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 3 "Control strain plate" "Empty" "Empty" "Empty" "None" +3 "YPDAFEXglucoseTests_2-25-10" "C01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 4 "Control strain plate" "Empty" "Empty" "Empty" "None" +4 "YPDAFEXglucoseTests_2-25-10" "D01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 5 "Control strain plate" "Empty" "Empty" "Empty" "None" +5 "YPDAFEXglucoseTests_2-25-10" "E01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 6 "Control strain plate" "Empty" "Empty" "Empty" "None" +6 "YPDAFEXglucoseTests_2-25-10" "F01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 7 "Control strain plate" "Empty" "Empty" "Empty" "None" +7 "YPDAFEXglucoseTests_2-25-10" "G01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 8 "Control strain plate" "Empty" "Empty" "Empty" "None" +8 "YPDAFEXglucoseTests_2-25-10" "H01" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 9 "Control strain plate" "Empty" "Empty" "Empty" "None" +9 "YPDAFEXglucoseTests_2-25-10" "A02" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 10 "Control strain plate" "Empty" "Empty" "Empty" "None" +10 "YPDAFEXglucoseTests_2-25-10" "B02" "YP" "Lab strain" "gompertz sigmoid" 0 1.75346931682115 9.008895 0.00387129154161333 0.000169526575673485 0.106012627582768 0.00533332981254499 0.0949774510885174 0.0112054786798504 0.200990078671286 0.112280003029694 0.184252861643961 0.0887100756415918 0.0719728586142672 0.111835916217944 0.0996340592954781 0.222612641821245 0.118826091485523 0.202319805224487 0.103786550335722 0.0834937137389644 NA NA 0.955970181896242 0.00271004795972447 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 11 "Control strain plate" "Sample" "USDA" "" "YP" +11 "YPDAFEXglucoseTests_2-25-10" "C02" "YP+0.25% glucose" "Lab strain" "richards sigmoid" 2.40987768343735 0.0533048366613944 4.21845083333333 0.0460029603516824 0.000724536080633502 0.0730406465985917 0.00147448206809288 0.20195449827016 0.00148223339842928 0.274995144868751 0.073266311037202 0.274994924460913 0.201728833831549 0.201728613423711 0.0757742625906743 0.22379232217684 0.316524282953919 0.0760170539793741 0.31652399278168 0.240507228974545 0.240506938802306 0.265875936579388 0.100708043886741 0.997917404710374 0.00135388203716233 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 12 "Control strain plate" "Sample" "USDA" "" "YP+0.25% glucose" +12 "YPDAFEXglucoseTests_2-25-10" "D02" "YP+0.5% glucose" "Lab strain" "logistic sigmoid." 3.07823403673893 0.0432348209213164 5.3624375 0.0732442091237218 0.00083385044900585 0.0859165104025432 0.00136428289761777 0.336085729465356 0.00149532007847134 0.4220022398679 0.0889960026247708 0.422002205393214 0.333006237243129 0.333006202768443 0.0897153446116215 0.399458994539777 0.525011940504746 0.0930762868815243 0.52501188793044 0.431935653623222 0.431935601048915 NA NA 0.99892015420286 0.00211931922664724 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 13 "Control strain plate" "Sample" "USDA" "" "YP+0.5% glucose" +13 "YPDAFEXglucoseTests_2-25-10" "E02" "YP+1% glucose" "Lab strain" "richards sigmoid" 3.31104934964427 0.0428738829656516 6.24426055555555 0.087498859778052 0.000646229427574331 0.0670789160536515 0.00264084512090784 0.496808437832399 0.00261152544308038 0.56388735388605 0.0759549213884333 0.563886450845895 0.487932432497617 0.487931529457461 0.0693798660836618 0.643467662335959 0.757491228661656 0.0789139371187617 0.75748964157722 0.678577291542894 0.678575704458458 1.22323321021831 0.0913419736269564 0.999523017751576 0.00210815425649153 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 14 "Control strain plate" "Sample" "USDA" "" "YP+1% glucose" +14 "YPDAFEXglucoseTests_2-25-10" "F02" "YP+2% glucose" "Lab strain" "richards sigmoid" 3.16160945641398 0.0130132752242264 5.69610027777778 0.0871403267354909 0.000229646786119097 0.08737718548213 0.000697693868328928 0.569725537718312 0.000706582348719082 0.657102723200442 0.0877050574005534 0.656913955188774 0.569397665799888 0.56920889778822 0.0913082277184576 0.767781795419447 0.92919481815215 0.0916660957048965 0.928830682251893 0.837528722447253 0.837164586546997 0.128377244056841 0.0158490082737876 0.999930578411107 0.000418173571721894 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 15 "Control strain plate" "Sample" "USDA" "" "YP+2% glucose" +15 "YPDAFEXglucoseTests_2-25-10" "G02" "YP+5% glucose" "Lab strain" "gompertz sigmoid" 1.97362812374979 0.160218470960237 6.10126222222222 0.0637129438472813 0.000882845743042059 0.0636642130548074 0.00677504517335327 0.715651375940815 0.00877835119047133 0.779315588995622 0.0726054464623438 0.769574985282588 0.706710142533278 0.696969538820244 0.0657344789473957 1.0455186500407 1.17997975267831 0.0753061873456158 1.15884851638065 1.10467356533269 1.08354232903504 NA NA 0.996368548540555 0.0284187363816137 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 16 "Control strain plate" "Sample" "USDA" "" "YP+5% glucose" +16 "YPDAFEXglucoseTests_2-25-10" "H02" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 17 "Control strain plate" "Empty" "Empty" "Empty" "None" +17 "YPDAFEXglucoseTests_2-25-10" "A03" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 18 "Control strain plate" "Empty" "Empty" "Empty" "None" +18 "YPDAFEXglucoseTests_2-25-10" "B03" "YP" "Wild strain" "gompertz sigmoid" 0 6.85707287937896 22.1409086111111 0.00240032503165892 0.000622808682835668 0.183471250816661 0.0241038377523601 0.144528358183154 0.243574028025108 0.327999608999814 0.193008393297115 0.240674524494353 0.134991215702699 0.0476661311972385 0.201380426209075 0.155494462222733 0.388188429507373 0.212892973647493 0.27210692827532 0.175295455859879 0.0592139546278265 NA NA 0.790451631963756 0.00713078905920281 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 19 "Control strain plate" "Sample" "USDA" "" "YP" +19 "YPDAFEXglucoseTests_2-25-10" "C03" "YP+0.25% glucose" "Wild strain" "gompertz sigmoid" 1.9906115468579 0.0691975318131243 3.47962611111111 0.0490374116952237 0.00113344212179788 0.113611335614137 0.00175358527026848 0.199753898562767 0.00189317967250483 0.313365234176905 0.113618321003616 0.313364980275983 0.199746913173288 0.199746659272367 0.120316613087275 0.221102206170602 0.368021087850449 0.120324438962491 0.368020740508678 0.247696648887958 0.247696301546187 NA NA 0.99399012987845 0.00350258662967115 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 20 "Control strain plate" "Sample" "USDA" "" "YP+0.25% glucose" +20 "YPDAFEXglucoseTests_2-25-10" "D03" "YP+0.5% glucose" "Wild strain" "logistic sigmoid." 2.74248926201157 0.0354379553926203 4.43294833333333 0.0945867701955495 0.00125702159577835 0.120482088801679 0.00134117834599991 0.32177887516419 0.00144348747790325 0.442260963965869 0.122204770404787 0.442260963925467 0.320056193561082 0.32005619352068 0.12804053622706 0.379579682895796 0.556221805261732 0.129985465672481 0.556221805198858 0.426236339589251 0.426236339526377 NA NA 0.998757902847438 0.00205103195615211 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 21 "Control strain plate" "Sample" "USDA" "" "YP+0.5% glucose" +21 "YPDAFEXglucoseTests_2-25-10" "E03" "YP+1% glucose" "Wild strain" "richards sigmoid" 3.06558696223571 0.0312092193543957 5.3624375 0.121127558311403 0.000999219504341884 0.0914412547332416 0.00245736106561066 0.492484364444972 0.00245078801862176 0.583925619178214 0.10090202921227 0.583925619102095 0.483023589965944 0.483023589889825 0.0957524045344744 0.636376529891633 0.793063517352536 0.106168264278383 0.79306351721605 0.686895253074153 0.686895252937667 1.80996092627302 0.117497603933281 0.999544726321195 0.00181967924857191 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 22 "Control strain plate" "Sample" "USDA" "" "YP+1% glucose" +22 "YPDAFEXglucoseTests_2-25-10" "F03" "YP+2% glucose" "Wild strain" "richards sigmoid" 2.77641833187198 0.0527034516734386 5.62460111111111 0.129882570160111 0.00113584996869085 0.0943645434950579 0.00505890911787811 0.678399507081888 0.00501032007418759 0.772764050576946 0.11484805727615 0.77276399934955 0.657915993300795 0.657915942073399 0.0989602917302299 0.97072108167106 1.16574421483214 0.12170299001548 1.16574410388671 1.04404122481666 1.04404111387123 1.58781592816572 0.131684393376964 0.999371589849352 0.00464022682166854 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 23 "Control strain plate" "Sample" "USDA" "" "YP+2% glucose" +23 "YPDAFEXglucoseTests_2-25-10" "G03" "YP+5% glucose" "Wild strain" "richards sigmoid" 2.62155170729439 0.0528519100950448 5.64843416666667 0.120898389355078 0.000856667358787892 0.106939412411106 0.00473823154418831 0.792250602933212 0.00464150376049532 0.899190015344318 0.119165060839678 0.899150109300876 0.78002495450464 0.779985048461198 0.112866826518918 1.20836098124136 1.45761167700228 0.126555853197717 1.45751360540077 1.33105582380456 1.33095775220305 0.651987010079984 0.0715475157170284 0.999508942394936 0.00516491712891745 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 24 "Control strain plate" "Sample" "USDA" "" "YP+5% glucose" +24 "YPDAFEXglucoseTests_2-25-10" "H03" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 25 "Control strain plate" "Empty" "Empty" "Empty" "None" +25 "YPDAFEXglucoseTests_2-25-10" "A04" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 26 "Control strain plate" "Empty" "Empty" "Empty" "None" +26 "YPDAFEXglucoseTests_2-25-10" "B04" "YP" "Industrial strain" "gompertz sigmoid" 0 5.0780526120225 14.0138366666667 0.00262196611873332 0.00018437938744914 0.128373333313586 0.0113746241547247 0.0999846427550281 0.0508218894501574 0.228357976068614 0.134971123503685 0.189191289569101 0.0933868525649285 0.0542201660654161 0.136977395010588 0.105153945825447 0.256535054410289 0.144503734616262 0.208272060219704 0.112031319794027 0.0637683256034425 NA NA 0.855383080839261 0.00575026814686199 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 27 "Control strain plate" "Sample" "Internal source" "" "YP" +27 "YPDAFEXglucoseTests_2-25-10" "C04" "YP+0.25% glucose" "Industrial strain" "gompertz sigmoid" 0.891438154862617 0.0875315924591966 2.31180638888889 0.0535113235044828 0.00124573544664028 0.0881434958395649 0.00304307272545713 0.207061853609148 0.00316468246722843 0.295205349448713 0.0894254262692569 0.295205293059733 0.205779923179456 0.205779866790477 0.0921448290236948 0.230058652994932 0.343402197264266 0.0935457804829503 0.343402121511189 0.249856416781316 0.249856341028238 NA NA 0.991724253334924 0.00363563892033091 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 28 "Control strain plate" "Sample" "Internal source" "" "YP+0.25% glucose" +28 "YPDAFEXglucoseTests_2-25-10" "D04" "YP+0.5% glucose" "Industrial strain" "logistic sigmoid." 1.64713494830746 0.0412877829637357 3.38429388888889 0.0931935829835479 0.00118142556806869 0.0808528949077067 0.00187894210009506 0.326765480130978 0.00196420648303134 0.407618375038685 0.0874704775763749 0.407618375014084 0.32014789746231 0.320147897437709 0.0842113918182088 0.386476282813275 0.503233380311918 0.0914100428976898 0.503233380274936 0.411823337414228 0.411823337377247 NA NA 0.998561073647885 0.00184537988196709 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 29 "Control strain plate" "Sample" "Internal source" "" "YP+0.5% glucose" +29 "YPDAFEXglucoseTests_2-25-10" "E04" "YP+1% glucose" "Industrial strain" "richards sigmoid" 2.00035124383545 0.0281455446975304 4.31378305555555 0.124952394681256 0.000705710849322313 0.066176309959304 0.00266242484922488 0.497003217300128 0.00264805311701161 0.563179527259432 0.0884800685969233 0.563179527257016 0.474699458662509 0.474699458660092 0.0684150727790216 0.643787807270277 0.756247669737942 0.0925124770869246 0.756247669733698 0.663735192651017 0.663735192646773 2.09745464546466 0.104168274133155 0.999771040591133 0.00072098110255013 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 30 "Control strain plate" "Sample" "Internal source" "" "YP+1% glucose" +30 "YPDAFEXglucoseTests_2-25-10" "F04" "YP+2% glucose" "Industrial strain" "richards sigmoid" 2.0490071997567 0.0662248504953823 4.76661111111111 0.13306744704186 0.00129515567791922 0.0751622402050358 0.00684502394093866 0.656973009903259 0.00678618652478681 0.732135250108295 0.103854790297524 0.732135243114114 0.628280459810771 0.62828045281659 0.0780590412170139 0.92894459216055 1.07951615758535 0.10943934186153 1.07951614304083 0.970076815723817 0.970076801179305 1.62672197615846 0.161151121349594 0.999229593966034 0.00459582695233057 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 31 "Control strain plate" "Sample" "Internal source" "" "YP+2% glucose" +31 "YPDAFEXglucoseTests_2-25-10" "G04" "YP+5% glucose" "Industrial strain" "logistic sigmoid." 1.98629177172554 0.0661342221284037 5.19560611111111 0.122957280170312 0.00117607964263019 0.0764858915144976 0.00452433442917892 0.793858352641992 0.00487921879564307 0.870344244156489 0.106676773149917 0.870336478987225 0.763667471006573 0.763659705837308 0.0794869603035999 1.21191432864705 1.38773267508318 0.112574582376872 1.38771413400679 1.27515809270631 1.27513955162992 NA NA 0.998885750680602 0.0103824045406066 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 32 "Control strain plate" "Sample" "Internal source" "" "YP+5% glucose" +32 "YPDAFEXglucoseTests_2-25-10" "H04" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 33 "Control strain plate" "Empty" "Empty" "Empty" "None" +33 "YPDAFEXglucoseTests_2-25-10" "A05" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 34 "Control strain plate" "Empty" "Empty" "Empty" "None" +34 "YPDAFEXglucoseTests_2-25-10" "B05" "YP" "Engineered strain" "gompertz sigmoid" 0 3.37960900118466 11.4875327777778 0.00260114799703032 0.000171113335294184 0.0996380871643661 0.00702344449132755 0.0812678741827026 0.0218737314876996 0.180905961347069 0.105000794559007 0.157379078978817 0.075905166788062 0.0523782844198106 0.104771014904237 0.084661410443271 0.198302487242874 0.110711492881175 0.17043921871877 0.0875909943616988 0.0597277258375952 NA NA 0.906033844889994 0.00328284811832938 "I " "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 35 "Control strain plate" "Sample" "ATCC" "" "YP" +35 "YPDAFEXglucoseTests_2-25-10" "C05" "YP+0.25% glucose" "Engineered strain" "gompertz sigmoid" 0.983948183597175 0.112859786286644 2.47863777777778 0.0501739409645355 0.00144200881080694 0.0661469359457048 0.00364271202623762 0.205919623922245 0.00380546132645363 0.27206655986795 0.0672650583629558 0.272066410063879 0.204801501504994 0.204801351700923 0.0683836896010714 0.228654445601205 0.312674369836174 0.0695789414490573 0.312674173192226 0.243095428387117 0.243095231743168 NA NA 0.987488271024703 0.00577672548033825 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 36 "Control strain plate" "Sample" "ATCC" "" "YP+0.25% glucose" +36 "YPDAFEXglucoseTests_2-25-10" "D05" "YP+0.5% glucose" "Engineered strain" "richards sigmoid" 1.86398050594022 0.0558531581780885 3.55112527777778 0.0944346403793218 0.00150539518734246 0.0602064687184575 0.00349724664000438 0.368213525552587 0.00348116438514935 0.428419994271045 0.0619674090584591 0.428419978577839 0.366452585212586 0.36645256951938 0.0620558052105851 0.445150582608455 0.534830565662769 0.0639276697585029 0.534830541576357 0.470902895904266 0.470902871817855 0.41241007480043 0.120556305314198 0.997911612798025 0.00385752298874987 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 37 "Control strain plate" "Sample" "ATCC" "" "YP+0.5% glucose" +37 "YPDAFEXglucoseTests_2-25-10" "E05" "YP+1% glucose" "Engineered strain" "logistic sigmoid." 1.99006793380884 0.0351079474960275 4.12311861111111 0.121142575431043 0.00106707303416645 0.0644342397186312 0.00208740714872881 0.517632133522502 0.00221049055518603 0.582066373241133 0.0750837822538967 0.582066368203544 0.506982590987236 0.506982585949648 0.0665554389527234 0.678049544482632 0.789732868500092 0.0779744622314236 0.789732859484154 0.711758406268668 0.71175839725273 NA NA 0.999269039916925 0.00268951955610802 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 38 "Control strain plate" "Sample" "ATCC" "" "YP+1% glucose" +38 "YPDAFEXglucoseTests_2-25-10" "F05" "YP+2% glucose" "Engineered strain" "logistic sigmoid." 1.98431414913883 0.0344438902457988 4.48061444444444 0.130673511563394 0.000910297701821604 0.0736708018228489 0.00232986507621017 0.655420765541249 0.00247952515524191 0.729091567364097 0.0914028197402174 0.729091436186734 0.63768874762388 0.637688616446517 0.0764523809998565 0.925952721450692 1.07319639269875 0.0957102901077889 1.07319612074233 0.977486102590961 0.977485830634544 NA NA 0.999493885845309 0.00307265449990923 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 39 "Control strain plate" "Sample" "ATCC" "" "YP+2% glucose" +39 "YPDAFEXglucoseTests_2-25-10" "G05" "YP+5% glucose" "Engineered strain" "logistic sigmoid." 2.10388607358557 0.0485609580954195 5.24327222222222 0.128060724388346 0.000947720103104396 0.0637480626845324 0.00338335491744478 0.806179689301617 0.00365527295985513 0.869927751986149 0.0914242899462062 0.869921741898693 0.778503462039943 0.778497451952487 0.0658238441354071 1.23933666273098 1.38673841018529 0.0957338154859682 1.38672406572182 1.29100459469932 1.29099025023585 NA NA 0.999357534856407 0.00631075803154068 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 40 "Control strain plate" "Sample" "ATCC" "" "YP+5% glucose" +40 "YPDAFEXglucoseTests_2-25-10" "H05" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 41 "Control strain plate" "Empty" "Empty" "Empty" "None" +41 "YPDAFEXglucoseTests_2-25-10" "A06" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 42 "Control strain plate" "Empty" "Empty" "Empty" "None" +42 "YPDAFEXglucoseTests_2-25-10" "B06" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 43 "Control strain plate" "Empty" "Empty" "Empty" "None" +43 "YPDAFEXglucoseTests_2-25-10" "C06" "Empty" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 44 "Control strain plate" "Empty" "Empty" "Empty" "Empty" +44 "YPDAFEXglucoseTests_2-25-10" "D06" "Empty" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 45 "Control strain plate" "Empty" "Empty" "Empty" "Empty" +45 "YPDAFEXglucoseTests_2-25-10" "E06" "Empty" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 46 "Control strain plate" "Empty" "Empty" "Empty" "Empty" +46 "YPDAFEXglucoseTests_2-25-10" "F06" "Empty" "Empty" "logistic sigmoid." 9.73707675795057 0.0985970533305578 14.6811622222222 0.0827678159518767 0.00119202041574655 -0.000880352187845948 0.00297599235664884 0.821196181140969 0.00723578634320824 0.820315828953123 0.00130662738981984 0.80016942429868 0.819009201563303 0.79886279690886 -0.000879964791548726 1.27321739163809 1.27121704036991 0.00130748139930459 1.22591802114689 1.2699095589706 1.22461053974758 NA NA 0.997343483064722 0.0337108649740508 "E*" "L" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 47 "Control strain plate" "Empty" "Empty" "Empty" "Empty" +47 "YPDAFEXglucoseTests_2-25-10" "G06" "Empty" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 48 "Control strain plate" "Empty" "Empty" "Empty" "Empty" +48 "YPDAFEXglucoseTests_2-25-10" "H06" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 49 "Control strain plate" "Empty" "Empty" "Empty" "None" +49 "YPDAFEXglucoseTests_2-25-10" "A07" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 50 "Control strain plate" "Empty" "Empty" "Empty" "None" +50 "YPDAFEXglucoseTests_2-25-10" "B07" "AFEX" "Lab strain" "richards sigmoid" 3.77043529293613 0.0360628422979525 7.69807694444444 0.0922143076373947 0.000396448194603239 0.0415079420521979 0.00249398077489825 0.670137254883342 0.00244318042181785 0.71164519693554 0.0610249599211764 0.711620409573069 0.650620237014363 0.650595449651893 0.0423814404664091 0.954505567660092 1.03734032901714 0.0629254443914062 1.03728982934981 0.974414884625737 0.974364384958405 1.49636190326278 0.0645036016880811 0.999821079386736 0.00149128792010239 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 51 "Control strain plate" "Sample" "USDA" "" "AFEX" +51 "YPDAFEXglucoseTests_2-25-10" "C07" "AFEX+0.25% glucose" "Lab strain" "richards sigmoid" 3.81401380371595 0.0414172658123116 7.84107527777778 0.0912912497086539 0.000430847222656137 0.0416798125769253 0.00284816947390064 0.69143284133484 0.00278081561682767 0.733112653911766 0.0607785098125833 0.73305639362929 0.672334144099182 0.672277883816707 0.0425606105081318 0.996574258830031 1.08154967821066 0.0626635185773581 1.08143257293199 1.0188861596333 1.01876905435464 1.38211643616927 0.068441420394402 0.999776277423773 0.00199878407126496 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 52 "Control strain plate" "Sample" "USDA" "" "AFEX+0.25% glucose" +52 "YPDAFEXglucoseTests_2-25-10" "D07" "AFEX+0.5% glucose" "Lab strain" "richards sigmoid" 4.10969518183839 0.0412228717219101 8.43690166666667 0.0887040084623295 0.000394405492929288 0.0340862871852733 0.00276975733383969 0.70953425876434 0.00269646137747281 0.743620545949613 0.0553702983243347 0.743521928280257 0.688250247625278 0.688151629955922 0.034673881973359 1.03304416561189 1.10353769905694 0.0569319223405151 1.10333026330024 1.04660577671642 1.04639834095972 1.51337755174144 0.0684110305817092 0.999797902728699 0.00192728932795894 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 53 "Control strain plate" "Sample" "USDA" "" "AFEX+0.5% glucose" +53 "YPDAFEXglucoseTests_2-25-10" "E07" "AFEX+1% glucose" "Lab strain" "richards sigmoid" 4.24887937601734 0.0432115785663927 8.81823055555555 0.0859527181410838 0.000375029672246797 0.0356447291331235 0.00283858611378653 0.730548134285546 0.00274599564832944 0.766192863418669 0.0570847529310588 0.765947841016383 0.70910811048761 0.708863088085324 0.0362876182839384 1.07621834228765 1.15155936096669 0.0587455383807147 1.15103224530362 1.09281382258598 1.0922867069229 1.43679372443259 0.0664148620205159 0.999795584571703 0.00207184898977108 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 54 "Control strain plate" "Sample" "USDA" "" "AFEX+1% glucose" +54 "YPDAFEXglucoseTests_2-25-10" "F07" "AFEX+2% glucose" "Lab strain" "richards sigmoid" 4.18007396642371 0.0466407733724283 8.81823055555555 0.0839684559025767 0.000369760007946289 0.0335662062693272 0.00302321134929714 0.761208314991861 0.00289043066835203 0.794774521261188 0.0523578984758354 0.794000059559319 0.742416622785352 0.741642161083483 0.0341359077403089 1.14086149330819 1.21394174372853 0.0537528115582857 1.21222779441756 1.16018893217025 1.15847498285928 1.13197498623035 0.0608907037432053 0.999775581271097 0.00245341232352351 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 55 "Control strain plate" "Sample" "USDA" "" "AFEX+2% glucose" +55 "YPDAFEXglucoseTests_2-25-10" "G07" "AFEX+5% glucose" "Lab strain" "richards sigmoid" 4.31631141456833 0.0375067738225389 9.10422722222222 0.0746869165814573 0.000251011212616688 0.0449034082917984 0.00217539454600581 0.811374096629365 0.0020199781451565 0.856277504921164 0.0531730581528585 0.847610694845515 0.803104446768305 0.794437636692656 0.0459268271704429 1.25099895262068 1.35438019247854 0.0546121385565925 1.33406339459093 1.29976805392195 1.27945125603434 0.475355275365838 0.0354989182491613 0.99984356158066 0.00187490302158927 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 56 "Control strain plate" "Sample" "USDA" "" "AFEX+5% glucose" +56 "YPDAFEXglucoseTests_2-25-10" "H07" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 57 "Control strain plate" "Empty" "Empty" "Empty" "None" +57 "YPDAFEXglucoseTests_2-25-10" "A08" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 58 "Control strain plate" "Empty" "Empty" "Empty" "None" +58 "YPDAFEXglucoseTests_2-25-10" "B08" "AFEX" "Wild strain" "richards sigmoid" 2.71231721101246 0.051377222191618 6.24426055555555 0.114869798087755 0.000679522317637316 0.0686814145642472 0.00460568272264885 0.729956501290573 0.00454362062059059 0.798637915854821 0.10099640348141 0.798636815214796 0.697641512373411 0.697640411733386 0.0710949195446084 1.07499034630887 1.22251161803554 0.10627266302607 1.22250917185165 1.11623895500947 1.11623650882558 1.70292251675116 0.10179548101048 0.999686879664103 0.00266681050440312 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 59 "Control strain plate" "Sample" "USDA" "" "AFEX" +59 "YPDAFEXglucoseTests_2-25-10" "C08" "AFEX+0.25% glucose" "Wild strain" "richards sigmoid" 3.01070188606209 0.0455540510180634 6.55409027777778 0.115107998074341 0.000641488536342826 0.0614813761638786 0.00401667627257402 0.743382938801471 0.00395687893333818 0.804864314965349 0.0885306662587629 0.804861736607772 0.716333648706586 0.716331070349009 0.0634106915579287 1.10303794283843 1.23639303316638 0.0925677570623027 1.23638726695289 1.14382527610408 1.14381950989059 1.57881072796814 0.0887320125722592 0.999717695034928 0.00263054987530885 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 60 "Control strain plate" "Sample" "USDA" "" "AFEX+0.25% glucose" +60 "YPDAFEXglucoseTests_2-25-10" "D08" "AFEX+0.5% glucose" "Wild strain" "richards sigmoid" 2.97864249972838 0.0440943285573364 6.55409027777778 0.114576828102917 0.000592514268492699 0.0574375614416587 0.0038875686917152 0.760494448227834 0.00382450823238821 0.817932009669493 0.0846335570605372 0.817926981908608 0.733298452608956 0.733293424848071 0.059119138718029 1.13933374880962 1.26580931746965 0.0883181871040035 1.26579792555084 1.17749113036565 1.17747973844683 1.48473851369249 0.0802727796034772 0.999751240782926 0.00242858216652038 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 61 "Control strain plate" "Sample" "USDA" "" "AFEX+0.5% glucose" +61 "YPDAFEXglucoseTests_2-25-10" "E08" "AFEX+1% glucose" "Wild strain" "richards sigmoid" 2.92985461453388 0.0457749726886301 6.57792333333333 0.113561152688866 0.000574978160263558 0.060472124586291 0.00402516587449496 0.782067831893148 0.00395231319695858 0.842539956479439 0.0880742344239483 0.842528715447582 0.754465722055491 0.754454481023634 0.0623379840467781 1.18598785054918 1.32225792630317 0.0920691881463056 1.32223182187456 1.23018873815686 1.23016263372825 1.37581261909432 0.0764095517760612 0.999754748600533 0.00252958095458289 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 62 "Control strain plate" "Sample" "USDA" "" "AFEX+1% glucose" +62 "YPDAFEXglucoseTests_2-25-10" "F08" "AFEX+2% glucose" "Wild strain" "richards sigmoid" 3.04342230131477 0.0449382687527419 6.81625388888889 0.111344220886614 0.00053211483862603 0.0556626629934722 0.00387136841849492 0.807214512297039 0.00378851478092936 0.862877175290511 0.0817091172313295 0.862843943373837 0.781168058059181 0.781134826142507 0.0572409770684312 1.24165517922426 1.36996971193357 0.0851401153555837 1.36989095460621 1.28482959657798 1.28475083925063 1.25155544499941 0.0687282596513218 0.999773222693453 0.00254586287935126 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 63 "Control strain plate" "Sample" "USDA" "" "AFEX+2% glucose" +63 "YPDAFEXglucoseTests_2-25-10" "G08" "AFEX+5% glucose" "Wild strain" "richards sigmoid" 3.40984196234943 0.0273360225985238 7.17374972222222 0.104909950247054 0.000320509638786788 0.0670946887710371 0.00214797629965173 0.835221165477497 0.00207744941670489 0.902315854248534 0.0807525020643599 0.901946971348112 0.821563352184174 0.821194469283752 0.0693967332430874 1.30532384995973 1.46530579421431 0.0841025502173454 1.46439655277464 1.38120324399697 1.38029400255729 0.753286731439822 0.0336141517371988 0.999897955876558 0.00130605700907156 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 64 "Control strain plate" "Sample" "USDA" "" "AFEX+5% glucose" +64 "YPDAFEXglucoseTests_2-25-10" "H08" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 65 "Control strain plate" "Empty" "Empty" "Empty" "None" +65 "YPDAFEXglucoseTests_2-25-10" "A09" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 66 "Control strain plate" "Empty" "Empty" "Empty" "None" +66 "YPDAFEXglucoseTests_2-25-10" "B09" "AFEX" "Industrial strain" "richards sigmoid" 2.43102440775711 0.0454605985590097 5.50543583333333 0.126842367574397 0.000788090696060512 0.0539690230506907 0.00446798137137374 0.690558562368951 0.00442509749533481 0.744527585419641 0.0857310638249255 0.74452755483612 0.658796521594716 0.658796491011195 0.0554519069684636 0.994829458783827 1.10544655635026 0.0895132793671187 1.10544649195829 1.01593327698314 1.01593321259117 1.86325174039779 0.111013983680208 0.999682108231503 0.00226178478453787 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 67 "Control strain plate" "Sample" "Internal source" "" "AFEX" +67 "YPDAFEXglucoseTests_2-25-10" "C09" "AFEX+0.25% glucose" "Industrial strain" "richards sigmoid" 2.48092971341753 0.0462358408909463 5.62460111111111 0.126022327995321 0.000766265198216623 0.0498912361992905 0.00451231731412719 0.714630509305857 0.00446315308100269 0.764521745505147 0.0803254380277494 0.764521612664574 0.684196307477398 0.684196174636825 0.0511567623538203 1.04343151382482 1.14796685416386 0.0836396678533904 1.14796656882673 1.06432718631047 1.06432690097334 1.6892416239556 0.102428344960951 0.999685472160361 0.00245503448373934 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 68 "Control strain plate" "Sample" "Internal source" "" "AFEX+0.25% glucose" +68 "YPDAFEXglucoseTests_2-25-10" "D09" "AFEX+0.5% glucose" "Industrial strain" "richards sigmoid" 2.42408640744135 0.0532786618803828 5.62460111111111 0.124384376977411 0.000823105161949976 0.0492950122622815 0.00516311815303983 0.727641420856731 0.00510226521814267 0.776936433119012 0.0803276492472531 0.776936116027565 0.696608783871759 0.696608466780311 0.0505302243276007 1.07019213302561 1.17479940590863 0.0836420640212081 1.17479871629844 1.09115734188742 1.09115665227723 1.58714593821028 0.108898701673299 0.999619231516236 0.00307919508939737 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 69 "Control strain plate" "Sample" "Internal source" "" "AFEX+0.5% glucose" +69 "YPDAFEXglucoseTests_2-25-10" "E09" "AFEX+1% glucose" "Industrial strain" "richards sigmoid" 2.3516083906569 0.0596596631244507 5.69610027777778 0.122918277329311 0.000825310524938601 0.0456238028839663 0.00577234400145717 0.757677923259936 0.00569718881396185 0.803301726143903 0.0794802281473059 0.803300765454603 0.723821497996597 0.723820537307297 0.0466805786671931 1.1333167393977 1.23290119927319 0.0827241518553661 1.23289905414994 1.15017704741783 1.15017490229457 1.50943196721409 0.109906089971898 0.999597425228284 0.00351671862436235 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 70 "Control strain plate" "Sample" "Internal source" "" "AFEX+1% glucose" +70 "YPDAFEXglucoseTests_2-25-10" "F09" "AFEX+2% glucose" "Industrial strain" "richards sigmoid" 2.5236010165651 0.0587446480551128 5.93443083333333 0.120073445181908 0.000783304897530514 0.0450247442396835 0.00549978744950499 0.786911440589629 0.00540921373997301 0.831936184829312 0.0732958505454819 0.831929765474958 0.75864033428383 0.758633914929476 0.0460537433930304 1.19660160399639 1.29776333060356 0.0760488394635108 1.29774858049386 1.22171449114005 1.22169974103035 1.2397630247936 0.0944772278955165 0.999601760903923 0.00394547420222901 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 71 "Control strain plate" "Sample" "Internal source" "" "AFEX+2% glucose" +71 "YPDAFEXglucoseTests_2-25-10" "G09" "AFEX+5% glucose" "Industrial strain" "richards sigmoid" 2.58690524730753 0.0503605394422555 6.17276138888889 0.109989495010269 0.000552298616707589 0.0475039668950725 0.00430649396880978 0.83068144919568 0.00419058755640174 0.878185416090752 0.0684271066193943 0.878046704871374 0.809758309471358 0.80961959825198 0.0486503609989841 1.2948820530738 1.40652889340594 0.0708225662291506 1.40619510399936 1.33570632717678 1.33537253777021 0.776030021315298 0.0590320987662605 0.999743045862095 0.00295407387389294 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 72 "Control strain plate" "Sample" "Internal source" "" "AFEX+5% glucose" +72 "YPDAFEXglucoseTests_2-25-10" "H09" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 73 "Control strain plate" "Empty" "Empty" "Empty" "None" +73 "YPDAFEXglucoseTests_2-25-10" "A10" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 74 "Control strain plate" "Empty" "Empty" "Empty" "None" +74 "YPDAFEXglucoseTests_2-25-10" "B10" "AFEX" "Engineered strain" "richards sigmoid" 2.17498330451382 0.0502798395951241 5.12410694444444 0.122218804779539 0.000784428545413071 0.0435682252869189 0.00476512105024793 0.699692212079932 0.00470444935542924 0.743260437366851 0.0678435113592805 0.743259718765618 0.67541692600757 0.675416207406337 0.0445312553256874 1.01313299408815 1.10278033345246 0.0701978215718182 1.10277882239246 1.03258251188064 1.03258100082064 1.18141837167591 0.0894530619922231 0.999633683586648 0.00265620405353138 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 75 "Control strain plate" "Sample" "ATCC" "" "AFEX" +75 "YPDAFEXglucoseTests_2-25-10" "C10" "AFEX+0.25% glucose" "Engineered strain" "richards sigmoid" 2.51277041358427 0.0385075634064252 5.50543583333333 0.124302687102611 0.000662579603795554 0.0363365047244458 0.00363658784524449 0.715682301787501 0.00358889800467861 0.752018806511947 0.0575296223014987 0.75201790943738 0.694489184210448 0.694488287135881 0.0370047447805615 1.04558191041505 1.12127814693769 0.0592166466248745 1.12127624399387 1.06206150031282 1.062059597369 1.22124196187785 0.0728117473772727 0.999746251949321 0.00205128571327075 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 76 "Control strain plate" "Sample" "ATCC" "" "AFEX+0.25% glucose" +76 "YPDAFEXglucoseTests_2-25-10" "D10" "AFEX+0.5% glucose" "Engineered strain" "richards sigmoid" 2.53563260737677 0.0376782240880802 5.60076805555555 0.122775490964049 0.000617718940237756 0.0383224027816064 0.00352849516406259 0.723989555808605 0.00348019897003327 0.762311958590212 0.0604113492179259 0.762310653602122 0.701900609372286 0.701899304384196 0.0390661767078291 1.06264585810741 1.14322554568591 0.0622734220263796 1.14322274880392 1.08095212365953 1.08094932677754 1.22916202573701 0.0694532756349596 0.999772141364762 0.00189783824442075 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 77 "Control strain plate" "Sample" "ATCC" "" "AFEX+0.5% glucose" +77 "YPDAFEXglucoseTests_2-25-10" "E10" "AFEX+1% glucose" "Engineered strain" "logistic sigmoid." 2.60565520411145 0.0279148207786424 5.67226722222222 0.122180167529517 0.000572646164016784 0.0367511554868138 0.00173132045208087 0.75510174924411 0.00189799830326426 0.791852904730924 0.0552120643649708 0.791846881057418 0.736640840365953 0.736634816692447 0.0374348287497246 1.12782801723342 1.20748289466742 0.0567646930486905 1.20746959755124 1.15071820161873 1.15070490450255 NA NA 0.999760229166242 0.00222986115644153 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 78 "Control strain plate" "Sample" "ATCC" "" "AFEX+1% glucose" +78 "YPDAFEXglucoseTests_2-25-10" "F10" "AFEX+2% glucose" "Engineered strain" "logistic sigmoid." 2.59552092034145 0.0233507552285751 5.7914325 0.12311239814861 0.000459924953718036 0.0376321525320693 0.00147723901592513 0.788206013379693 0.00162316638429969 0.825838165911762 0.0581595525832075 0.82582810286149 0.767678613328555 0.767668550278282 0.0383492084922821 1.19944710612095 1.28379416176132 0.0598840894646306 1.2837711799415 1.22391007229669 1.22388709047687 NA NA 0.999844012469462 0.00158372380662876 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 79 "Control strain plate" "Sample" "ATCC" "" "AFEX+2% glucose" +79 "YPDAFEXglucoseTests_2-25-10" "G10" "AFEX+5% glucose" "Engineered strain" "richards sigmoid" 2.65619332146438 0.0304232772610151 6.00593 0.113927548226674 0.000394015356154558 0.0448535113624544 0.00262903429411648 0.830698452896991 0.00255902360970839 0.875551964259445 0.0596126030160059 0.875406838654098 0.815939361243439 0.815794235638092 0.0458746399354508 1.29492107489454 1.4001997528856 0.0614252739377605 1.39985144771812 1.33877447894784 1.33842617378036 0.630436857242866 0.0359660377290858 0.999878122228538 0.0014247167012055 "I " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 80 "Control strain plate" "Sample" "ATCC" "" "AFEX+5% glucose" +80 "YPDAFEXglucoseTests_2-25-10" "H10" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 81 "Control strain plate" "Empty" "Empty" "Empty" "None" +81 "YPDAFEXglucoseTests_2-25-10" "A11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 82 "Control strain plate" "Empty" "Empty" "Empty" "None" +82 "YPDAFEXglucoseTests_2-25-10" "B11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 83 "Control strain plate" "Empty" "Empty" "Empty" "None" +83 "YPDAFEXglucoseTests_2-25-10" "C11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 84 "Control strain plate" "Empty" "Empty" "Empty" "None" +84 "YPDAFEXglucoseTests_2-25-10" "D11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 85 "Control strain plate" "Empty" "Empty" "Empty" "None" +85 "YPDAFEXglucoseTests_2-25-10" "E11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 86 "Control strain plate" "Empty" "Empty" "Empty" "None" +86 "YPDAFEXglucoseTests_2-25-10" "F11" "None" "Empty" "richards sigmoid" 14.4916170457847 0.0217082069318843 18.6612825 0.0889624209370597 0.000433181631551599 0.00193467418446847 0.000448535101404725 0.976169168246482 0.0129778271847923 0.97810384243095 0.00193467418448112 0.752023542360525 0.976169168246469 0.750088868176044 0.00193654687405509 1.65426868422052 1.65940879994385 0.00193654687406775 1.12128819301358 1.65747225306978 1.11935164613951 0.07 0.0304918969768742 0.999799864971328 0.00156360720906969 "E*" "U" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 87 "Control strain plate" "Empty" "Empty" "Empty" "None" +87 "YPDAFEXglucoseTests_2-25-10" "G11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 88 "Control strain plate" "Empty" "Empty" "Empty" "None" +88 "YPDAFEXglucoseTests_2-25-10" "H11" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 89 "Control strain plate" "Empty" "Empty" "Empty" "None" +89 "YPDAFEXglucoseTests_2-25-10" "A12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 90 "Control strain plate" "Empty" "Empty" "Empty" "None" +90 "YPDAFEXglucoseTests_2-25-10" "B12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 91 "Control strain plate" "Empty" "Empty" "Empty" "None" +91 "YPDAFEXglucoseTests_2-25-10" "C12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 92 "Control strain plate" "Empty" "Empty" "Empty" "None" +92 "YPDAFEXglucoseTests_2-25-10" "D12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 93 "Control strain plate" "Empty" "Empty" "Empty" "None" +93 "YPDAFEXglucoseTests_2-25-10" "E12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 94 "Control strain plate" "Empty" "Empty" "Empty" "None" +94 "YPDAFEXglucoseTests_2-25-10" "F12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 95 "Control strain plate" "Empty" "Empty" "Empty" "None" +95 "YPDAFEXglucoseTests_2-25-10" "G12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 96 "Control strain plate" "Empty" "Empty" "Empty" "None" +96 "YPDAFEXglucoseTests_2-25-10" "H12" "None" "Empty" ": skipped" NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA "E " "-" "-" "" "YPDAFEXglucoseTests_2-25-10_plots_2015-04-07_15.34.27.pdf" 97 "Control strain plate" "Empty" "Empty" "Empty" "None" + +# Raw OD values are adjusted and log-transformed before fitting a growth curve as follows: log.OD = log(OD - blank + const) where blank is OD of blank medium and const is specified by the user (1 by default) +# Values are reported on the above 'log.OD' scale unless otherwise specified. +# .SE columns report standard errors of those values that are estimated directly as parameters of global sigmoid models. +# .OD columns report values back-transformed to the linear 'OD - blank' scale. + +# -- Explanation of columns -- +# - model: Name of the model the well was successfully fit with (if any) +# - lag.time: Lag time estimate inferred from the fitted model +# - inflection.time: inflection time point of the growth curve when drawn on the log scale +# - max.spec.growth.rate: maximum specific growth rate estimate inferred from the fitted model. Estimated as the first derivative of the growth curve at inflection time point +# - baseline: growth curve baseline. Global sigmoid model: baseline is parameter 'b' of the model. LOESS: baseline is the same as the lowest predicted log.OD value +# - amplitude: difference between upper plateau and baseline values. Global sigmoid model: amplitude is parameter 'A' of the model. LOESS: amplitude = max.log.OD - min.log.OD +# - plateau: upper asymptote value of the fitted model. Global sigmoid model: plateau = b + A. LOESS: plateau = max.log.OD +# - inoc.log.OD: log.OD value at inoculation. Estimated value from the fitted model is used, rather than the actual measurement +# - max.log.OD: maximal log.OD value reached during the experiment. Estimated value from the fitted model is used rather than the actual measurement +# - projected.growth: maximal projected growth over inoculation value. Global sigmoid model: projected.growth = plateau - inoc.log.OD. LOESS: not reported +# - achieved.growth: maximal growth over inoculation value actually achieved during the experiment. achieved.growth = max.log.OD - inoc.log.OD +# - shape.par: shape parameter of the Richard equation +# - R.squared: goodness of fit metric. Also known as coefficient of determination. R.squared is usually between 0 and 1. A value close to 1 indicates good fit. +# - RSS: residual sum of squares. Another goodness of fit metric. Smaller values indicate better fits. +# - empty: (Well indicator) +# - an 'E' indicates that the well was empty and no growth was detected. +# - an 'I' indicates that the well was inoculated and growth was detected above the threshold. +# - an 'E*' indicates that the well was empty and growth was detected (possible contamination). +# - an '!' indicates that the well was inoculated and no growth was detected. +# - asymp.not.reached: shows “L” if the bottom asymptote (baseline) was not reached and “U” if the upper asymptote (plateau) was not reached. +# - tank: (Tanking indicator) If a number is present then the growth trend was determined to tank at that timepoint index. +# - other: Additional flag column. Displays information about whether jumps in OD were detected and what was done about them. +# - pdf.file and page.no: location of the figure for this well in the output .pdf files. +# +# -- Source file information-- +# YPDAFEXglucoseTests_2-25-10.csv +# analyzed using GCAT v 5.0 +# request sent: 2015-04-07 15:34:27 +# completed: 2015-04-07 15:34:33 +# +# -- Parameters used in current analysis -- +# - Constant added to log(OD + n) transformation: 1 +# - Blank OD value: First timepoint in well +# - Index of inoculation timepoint 2 +# - Minimum growth threshold: 0.05 +# - Removed points: +# - Jump detection: FALSE \ No newline at end of file diff --git a/Rails/public/generatedFiles/20150407-1428438865/output_overview_2015-04-07_15.34.27.pdf b/Rails/public/generatedFiles/20150407-1428438865/output_overview_2015-04-07_15.34.27.pdf new file mode 100644 index 0000000..a071993 Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/output_overview_2015-04-07_15.34.27.pdf differ diff --git a/Rails/public/generatedFiles/20150407-1428438865/singlePlateAnalysis.zip b/Rails/public/generatedFiles/20150407-1428438865/singlePlateAnalysis.zip new file mode 100644 index 0000000..84e0ae4 Binary files /dev/null and b/Rails/public/generatedFiles/20150407-1428438865/singlePlateAnalysis.zip differ diff --git a/Rails/public/resources/GCAT_users_manual.pdf b/Rails/public/resources/GCAT_users_manual.pdf new file mode 100644 index 0000000..2f3a2f2 Binary files /dev/null and b/Rails/public/resources/GCAT_users_manual.pdf differ diff --git a/Rails/public/resources/MultiPlateLayout_plateID.csv b/Rails/public/resources/MultiPlateLayout_plateID.csv new file mode 100644 index 0000000..d4df5ba --- /dev/null +++ b/Rails/public/resources/MultiPlateLayout_plateID.csv @@ -0,0 +1,97 @@ +Destination plate name,Row,Column,Well ID,Plate source,Well Source,Strain,Media Definition +Control strain plate,A,1,Empty,Empty,Empty,Empty,None +Control strain plate,A,2,Empty,Empty,Empty,Empty,None +Control strain plate,A,3,Empty,Empty,Empty,Empty,None +Control strain plate,A,4,Empty,Empty,Empty,Empty,None +Control strain plate,A,5,Empty,Empty,Empty,Empty,None +Control strain plate,A,6,Empty,Empty,Empty,Empty,None +Control strain plate,A,7,Empty,Empty,Empty,Empty,None +Control strain plate,A,8,Empty,Empty,Empty,Empty,None +Control strain plate,A,9,Empty,Empty,Empty,Empty,None +Control strain plate,A,10,Empty,Empty,Empty,Empty,None +Control strain plate,A,11,Empty,Empty,Empty,Empty,None +Control strain plate,A,12,Empty,Empty,Empty,Empty,None +Control strain plate,B,1,Empty,Empty,Empty,Empty,None +Control strain plate,B,2,Sample,USDA,,Lab strain,YP +Control strain plate,B,3,Sample,USDA,,Wild strain,YP +Control strain plate,B,4,Sample,Internal source,,Industrial strain,YP +Control strain plate,B,5,Sample,ATCC,,Engineered strain,YP +Control strain plate,B,6,Empty,Empty,Empty,Empty,None +Control strain plate,B,7,Sample,USDA,,Lab strain,AFEX +Control strain plate,B,8,Sample,USDA,,Wild strain,AFEX +Control strain plate,B,9,Sample,Internal source,,Industrial strain,AFEX +Control strain plate,B,10,Sample,ATCC,,Engineered strain,AFEX +Control strain plate,B,11,Empty,Empty,Empty,Empty,None +Control strain plate,B,12,Empty,Empty,Empty,Empty,None +Control strain plate,C,1,Empty,Empty,Empty,Empty,None +Control strain plate,C,2,Sample,USDA,,Lab strain,YP+0.25% glucose +Control strain plate,C,3,Sample,USDA,,Wild strain,YP+0.25% glucose +Control strain plate,C,4,Sample,Internal source,,Industrial strain,YP+0.25% glucose +Control strain plate,C,5,Sample,ATCC,,Engineered strain,YP+0.25% glucose +Control strain plate,C,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,C,7,Sample,USDA,,Lab strain,AFEX+0.25% glucose +Control strain plate,C,8,Sample,USDA,,Wild strain,AFEX+0.25% glucose +Control strain plate,C,9,Sample,Internal source,,Industrial strain,AFEX+0.25% glucose +Control strain plate,C,10,Sample,ATCC,,Engineered strain,AFEX+0.25% glucose +Control strain plate,C,11,Empty,Empty,Empty,Empty,None +Control strain plate,C,12,Empty,Empty,Empty,Empty,None +Control strain plate,D,1,Empty,Empty,Empty,Empty,None +Control strain plate,D,2,Sample,USDA,,Lab strain,YP+0.5% glucose +Control strain plate,D,3,Sample,USDA,,Wild strain,YP+0.5% glucose +Control strain plate,D,4,Sample,Internal source,,Industrial strain,YP+0.5% glucose +Control strain plate,D,5,Sample,ATCC,,Engineered strain,YP+0.5% glucose +Control strain plate,D,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,D,7,Sample,USDA,,Lab strain,AFEX+0.5% glucose +Control strain plate,D,8,Sample,USDA,,Wild strain,AFEX+0.5% glucose +Control strain plate,D,9,Sample,Internal source,,Industrial strain,AFEX+0.5% glucose +Control strain plate,D,10,Sample,ATCC,,Engineered strain,AFEX+0.5% glucose +Control strain plate,D,11,Empty,Empty,Empty,Empty,None +Control strain plate,D,12,Empty,Empty,Empty,Empty,None +Control strain plate,E,1,Empty,Empty,Empty,Empty,None +Control strain plate,E,2,Sample,USDA,,Lab strain,YP+1% glucose +Control strain plate,E,3,Sample,USDA,,Wild strain,YP+1% glucose +Control strain plate,E,4,Sample,Internal source,,Industrial strain,YP+1% glucose +Control strain plate,E,5,Sample,ATCC,,Engineered strain,YP+1% glucose +Control strain plate,E,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,E,7,Sample,USDA,,Lab strain,AFEX+1% glucose +Control strain plate,E,8,Sample,USDA,,Wild strain,AFEX+1% glucose +Control strain plate,E,9,Sample,Internal source,,Industrial strain,AFEX+1% glucose +Control strain plate,E,10,Sample,ATCC,,Engineered strain,AFEX+1% glucose +Control strain plate,E,11,Empty,Empty,Empty,Empty,None +Control strain plate,E,12,Empty,Empty,Empty,Empty,None +Control strain plate,F,1,Empty,Empty,Empty,Empty,None +Control strain plate,F,2,Sample,USDA,,Lab strain,YP+2% glucose +Control strain plate,F,3,Sample,USDA,,Wild strain,YP+2% glucose +Control strain plate,F,4,Sample,Internal source,,Industrial strain,YP+2% glucose +Control strain plate,F,5,Sample,ATCC,,Engineered strain,YP+2% glucose +Control strain plate,F,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,F,7,Sample,USDA,,Lab strain,AFEX+2% glucose +Control strain plate,F,8,Sample,USDA,,Wild strain,AFEX+2% glucose +Control strain plate,F,9,Sample,Internal source,,Industrial strain,AFEX+2% glucose +Control strain plate,F,10,Sample,ATCC,,Engineered strain,AFEX+2% glucose +Control strain plate,F,11,Empty,Empty,Empty,Empty,None +Control strain plate,F,12,Empty,Empty,Empty,Empty,None +Control strain plate,G,1,Empty,Empty,Empty,Empty,None +Control strain plate,G,2,Sample,USDA,,Lab strain,YP+5% glucose +Control strain plate,G,3,Sample,USDA,,Wild strain,YP+5% glucose +Control strain plate,G,4,Sample,Internal source,,Industrial strain,YP+5% glucose +Control strain plate,G,5,Sample,ATCC,,Engineered strain,YP+5% glucose +Control strain plate,G,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,G,7,Sample,USDA,,Lab strain,AFEX+5% glucose +Control strain plate,G,8,Sample,USDA,,Wild strain,AFEX+5% glucose +Control strain plate,G,9,Sample,Internal source,,Industrial strain,AFEX+5% glucose +Control strain plate,G,10,Sample,ATCC,,Engineered strain,AFEX+5% glucose +Control strain plate,G,11,Empty,Empty,Empty,Empty,None +Control strain plate,G,12,Empty,Empty,Empty,Empty,None +Control strain plate,H,1,Empty,Empty,Empty,Empty,None +Control strain plate,H,2,Empty,Empty,Empty,Empty,None +Control strain plate,H,3,Empty,Empty,Empty,Empty,None +Control strain plate,H,4,Empty,Empty,Empty,Empty,None +Control strain plate,H,5,Empty,Empty,Empty,Empty,None +Control strain plate,H,6,Empty,Empty,Empty,Empty,None +Control strain plate,H,7,Empty,Empty,Empty,Empty,None +Control strain plate,H,8,Empty,Empty,Empty,Empty,None +Control strain plate,H,9,Empty,Empty,Empty,Empty,None +Control strain plate,H,10,Empty,Empty,Empty,Empty,None +Control strain plate,H,11,Empty,Empty,Empty,Empty,None +Control strain plate,H,12,Empty,Empty,Empty,Empty,None diff --git a/Rails/public/resources/YPDAFEXglucoseTests_2-25-10.csv b/Rails/public/resources/YPDAFEXglucoseTests_2-25-10.csv new file mode 100644 index 0000000..8cc6b42 --- /dev/null +++ b/Rails/public/resources/YPDAFEXglucoseTests_2-25-10.csv @@ -0,0 +1 @@ +Well positions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Raw data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,G1,G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12 Blank,0.0623,0.0626,0.0596,0.0602,0.061,0.0598,0.0604,0.0623,0.062,0.0648,0.0601,0.0602,0.0583,0.093,0.0934,0.0929,0.0927,0.093,0.2159,0.2214,0.2249,0.224,0.223,0.0617,0.0604,0.0921,0.0926,0.0943,0.0937,0.094,0.2207,0.22,0.2199,0.2191,0.2133,0.0623,0.0569,0.0932,0.0965,0.0943,0.094,0.0971,0.2214,0.2256,0.2236,0.2196,0.2163,0.0589,0.0583,0.0927,0.0924,0.0941,0.0935,0.0929,0.2204,0.2211,0.2209,0.2197,0.2142,0.0606,0.0601,0.0921,0.0919,0.0958,0.0925,0.0933,0.2211,0.2246,0.2202,0.22,0.212,0.0588,0.0575,0.0923,0.0923,0.0942,0.0973,0.0921,0.2217,0.2218,0.221,0.2195,0.2198,0.059,0.0586,0.058,0.0577,0.0576,0.0581,0.0585,0.0582,0.0582,0.0585,0.0577,0.0577,0.0572 0s,0.0631,0.0633,0.0607,0.0613,0.0623,0.0612,0.0617,0.0636,0.063,0.0657,0.0607,0.0612,0.0592,0.2053,0.2676,0.2104,0.1872,0.0926,0.2631,0.3007,0.2867,0.2736,0.2197,0.0622,0.0606,0.1578,0.1811,0.1762,0.156,0.0939,0.2681,0.2907,0.2769,0.2603,0.212,0.0634,0.0581,0.1686,0.1948,0.1673,0.1432,0.0963,0.26,0.2915,0.2799,0.2631,0.2127,0.061,0.0585,0.1601,0.1703,0.1704,0.162,0.0919,0.2608,0.2906,0.2729,0.26,0.213,0.0617,0.0608,0.1734,0.1982,0.1829,0.1778,0.0927,0.2591,0.2884,0.2715,0.2627,0.2106,0.0591,0.0581,0.1656,0.2065,0.1829,0.1707,0.0913,0.2637,0.2925,0.2752,0.2741,0.2186,0.06,0.0593,0.0585,0.0587,0.0584,0.0589,0.0595,0.0592,0.0592,0.0596,0.0586,0.0584,0.0577 640s,0.0642,0.0645,0.0612,0.0616,0.0624,0.0613,0.063,0.0639,0.0632,0.0659,0.0608,0.0616,0.059,0.2046,0.2813,0.2226,0.1947,0.0927,0.2767,0.3375,0.3023,0.2892,0.2194,0.0627,0.0604,0.1712,0.2078,0.1926,0.1708,0.0938,0.2808,0.3185,0.2881,0.2706,0.2117,0.0636,0.0579,0.1824,0.224,0.1858,0.1559,0.0961,0.2702,0.319,0.2898,0.2711,0.2128,0.0592,0.0587,0.1709,0.2068,0.1943,0.1793,0.0917,0.2713,0.3203,0.2858,0.2682,0.2129,0.0613,0.0608,0.1832,0.2254,0.1973,0.1904,0.0927,0.2671,0.3156,0.2802,0.2709,0.2104,0.0593,0.0588,0.178,0.2312,0.1937,0.184,0.0915,0.2695,0.3126,0.2787,0.2706,0.2183,0.06,0.0594,0.0587,0.0591,0.0586,0.0591,0.0597,0.0591,0.0593,0.0598,0.0589,0.0585,0.0573 1280s,0.0641,0.0635,0.0612,0.0616,0.0624,0.0613,0.0619,0.0638,0.0631,0.0659,0.0613,0.0617,0.0592,0.2043,0.2854,0.2256,0.1985,0.0925,0.283,0.3447,0.3134,0.3022,0.2194,0.0594,0.0602,0.1707,0.2156,0.1999,0.1751,0.0938,0.2866,0.3256,0.2996,0.2818,0.2119,0.0637,0.0579,0.1862,0.2311,0.1961,0.1602,0.0959,0.2767,0.3247,0.3,0.2817,0.2126,0.0602,0.0586,0.1735,0.2129,0.2028,0.1844,0.092,0.2791,0.328,0.2994,0.2788,0.2129,0.0614,0.061,0.1866,0.2379,0.2086,0.1986,0.0927,0.2734,0.3239,0.2896,0.2806,0.2105,0.0592,0.0585,0.1842,0.2422,0.2047,0.1951,0.0915,0.274,0.3176,0.2859,0.277,0.2186,0.0602,0.0596,0.0589,0.0589,0.0586,0.0593,0.0599,0.0592,0.0594,0.0598,0.059,0.0585,0.0577 1921s,0.0646,0.0642,0.0613,0.062,0.0626,0.0614,0.0621,0.064,0.0634,0.0661,0.0615,0.0619,0.0592,0.2054,0.2872,0.2262,0.1994,0.0927,0.2846,0.3478,0.3224,0.3119,0.2197,0.0585,0.0599,0.1681,0.2164,0.2006,0.1736,0.0937,0.2875,0.3279,0.3066,0.2894,0.2118,0.0636,0.0579,0.1898,0.2348,0.1991,0.1629,0.096,0.2801,0.3264,0.3091,0.29,0.2125,0.0595,0.0588,0.1772,0.2149,0.2047,0.1855,0.0918,0.2822,0.3287,0.3075,0.2856,0.213,0.0615,0.0611,0.1875,0.2419,0.2129,0.2033,0.0925,0.2772,0.3252,0.2981,0.2885,0.2106,0.0591,0.0584,0.1874,0.2472,0.2141,0.1983,0.0914,0.2771,0.3178,0.2926,0.2837,0.2209,0.0602,0.0597,0.059,0.0593,0.0589,0.0594,0.06,0.0594,0.0594,0.0601,0.0589,0.0587,0.0575 2561s,0.0641,0.0637,0.0609,0.0616,0.0626,0.0612,0.0619,0.0639,0.0631,0.0657,0.0619,0.0618,0.0592,0.2061,0.2873,0.2247,0.1979,0.0925,0.2858,0.352,0.3305,0.3176,0.2197,0.0601,0.0597,0.1658,0.2185,0.2016,0.1748,0.0938,0.2888,0.331,0.3153,0.2951,0.212,0.0637,0.0581,0.1916,0.2381,0.1997,0.1644,0.0962,0.2818,0.3296,0.3175,0.2959,0.2127,0.0608,0.0581,0.1805,0.2172,0.2046,0.1876,0.0918,0.2846,0.3317,0.3173,0.2911,0.2131,0.0615,0.061,0.1868,0.2421,0.2198,0.2071,0.0926,0.2796,0.3284,0.3055,0.2955,0.2107,0.0593,0.0585,0.1914,0.2444,0.2191,0.2043,0.0915,0.2788,0.3184,0.2996,0.2917,0.2189,0.0603,0.06,0.0591,0.059,0.0588,0.0594,0.06,0.0595,0.0597,0.0601,0.0592,0.059,0.0573 3201s,0.064,0.0675,0.061,0.0619,0.0627,0.0613,0.0621,0.0639,0.0633,0.0659,0.0623,0.0619,0.0596,0.2072,0.2892,0.2249,0.1965,0.0927,0.2884,0.3553,0.3405,0.3248,0.2199,0.0593,0.0595,0.1664,0.2186,0.204,0.177,0.0937,0.2906,0.3346,0.3246,0.3015,0.2121,0.0638,0.0581,0.1925,0.2384,0.2003,0.17,0.0961,0.2845,0.3347,0.3269,0.302,0.2129,0.0615,0.0588,0.1821,0.2156,0.2047,0.1887,0.092,0.2871,0.3354,0.326,0.2962,0.2132,0.0616,0.0612,0.1884,0.2396,0.2267,0.2061,0.0926,0.2833,0.3328,0.3144,0.3026,0.2109,0.0595,0.0587,0.196,0.2392,0.2231,0.206,0.0914,0.2811,0.3215,0.3075,0.298,0.2191,0.0603,0.0601,0.0592,0.0593,0.0591,0.0596,0.0602,0.0597,0.0598,0.0603,0.0594,0.0593,0.0572 3841s,0.0646,0.0719,0.0613,0.0619,0.0627,0.0614,0.0621,0.064,0.0634,0.0658,0.0624,0.0618,0.0592,0.2087,0.2903,0.224,0.1958,0.0925,0.2911,0.3565,0.3501,0.3288,0.2199,0.063,0.0595,0.1693,0.2208,0.2078,0.1793,0.0936,0.2935,0.3375,0.3339,0.3073,0.2121,0.0638,0.0579,0.1943,0.2387,0.2039,0.1718,0.096,0.2888,0.3394,0.3367,0.3075,0.2129,0.0623,0.059,0.1838,0.2143,0.2092,0.1895,0.0918,0.2908,0.3383,0.3356,0.3026,0.2135,0.0617,0.0611,0.1893,0.2368,0.2226,0.1997,0.0925,0.2855,0.3365,0.3227,0.3084,0.2108,0.061,0.0589,0.1997,0.238,0.2296,0.2076,0.0915,0.2845,0.3249,0.3157,0.3037,0.2192,0.0607,0.0602,0.0591,0.0595,0.0591,0.0596,0.0602,0.0596,0.0597,0.0604,0.0595,0.0594,0.0574 4482s,0.0645,0.0652,0.0614,0.0623,0.0628,0.0617,0.0624,0.0639,0.0637,0.0657,0.0626,0.0621,0.0595,0.2104,0.2921,0.2249,0.1959,0.0925,0.2937,0.3564,0.3536,0.3303,0.2202,0.0674,0.0625,0.1722,0.2233,0.2134,0.1827,0.0939,0.2966,0.3392,0.3402,0.3089,0.2123,0.0639,0.0584,0.197,0.2382,0.2094,0.1755,0.0959,0.2913,0.3407,0.3438,0.311,0.213,0.0632,0.0585,0.1848,0.2155,0.2138,0.1901,0.0917,0.2939,0.3396,0.3424,0.3069,0.2135,0.0616,0.0614,0.1909,0.2352,0.2293,0.207,0.0926,0.2893,0.3387,0.3313,0.3134,0.211,0.0599,0.0591,0.2022,0.2387,0.2344,0.2078,0.0914,0.2878,0.3274,0.3231,0.3095,0.2194,0.0609,0.0609,0.0593,0.0596,0.0591,0.0597,0.0603,0.06,0.0602,0.0604,0.0597,0.0597,0.0581 5122s,0.0642,0.0647,0.0613,0.062,0.0628,0.0615,0.0624,0.064,0.0635,0.0657,0.0627,0.0619,0.0596,0.2111,0.2933,0.2267,0.1965,0.0926,0.2977,0.3589,0.356,0.3284,0.2202,0.0633,0.0603,0.1741,0.2251,0.2186,0.1866,0.0937,0.3002,0.3402,0.3474,0.309,0.2124,0.0643,0.0582,0.1994,0.2393,0.2152,0.178,0.096,0.2951,0.3427,0.349,0.313,0.2131,0.0631,0.058,0.1875,0.2173,0.2188,0.1939,0.0918,0.2975,0.3412,0.347,0.3099,0.2136,0.0617,0.0613,0.1907,0.2369,0.2376,0.2155,0.0926,0.2929,0.3401,0.3376,0.3146,0.2111,0.0596,0.0592,0.2025,0.2358,0.2361,0.2144,0.0912,0.2906,0.3294,0.3304,0.3131,0.2195,0.0608,0.0609,0.0596,0.0598,0.0595,0.0599,0.0605,0.0601,0.0602,0.0606,0.0597,0.0597,0.0593 5762s,0.0647,0.065,0.062,0.0626,0.0637,0.0624,0.0626,0.0646,0.064,0.0661,0.0631,0.0627,0.0598,0.2125,0.2945,0.2275,0.197,0.0927,0.3008,0.3591,0.3601,0.3354,0.2206,0.0642,0.0603,0.1758,0.2266,0.2248,0.1905,0.0938,0.3038,0.3415,0.346,0.3099,0.2127,0.064,0.0586,0.2003,0.2386,0.22,0.1823,0.0961,0.2993,0.3456,0.3524,0.3137,0.2134,0.0644,0.0597,0.1894,0.2179,0.2271,0.2016,0.092,0.3019,0.3443,0.3467,0.3105,0.2139,0.0621,0.0617,0.1913,0.2378,0.2474,0.2263,0.0928,0.2963,0.341,0.3417,0.3145,0.2114,0.0616,0.0596,0.2013,0.2385,0.2492,0.226,0.0914,0.2939,0.3309,0.334,0.313,0.2198,0.0609,0.0613,0.0597,0.0599,0.0596,0.06,0.0608,0.0605,0.0605,0.0606,0.0599,0.0598,0.0583 6402s,0.0648,0.0653,0.062,0.0629,0.0636,0.0621,0.0626,0.0646,0.0638,0.0661,0.0634,0.0624,0.0599,0.2144,0.2956,0.2287,0.1975,0.0927,0.304,0.3623,0.3598,0.3338,0.2208,0.0663,0.0605,0.1787,0.2278,0.2308,0.1966,0.0938,0.3072,0.3422,0.3517,0.313,0.2129,0.0642,0.0585,0.2006,0.2401,0.2276,0.1889,0.0961,0.3032,0.3464,0.3536,0.3175,0.2137,0.0633,0.06,0.191,0.2193,0.2344,0.21,0.0919,0.3051,0.3477,0.3559,0.3134,0.2141,0.062,0.0617,0.1916,0.2408,0.2573,0.2357,0.0928,0.2996,0.3432,0.3403,0.3162,0.2116,0.0596,0.0586,0.2006,0.2437,0.259,0.2343,0.0916,0.2976,0.3319,0.3411,0.3201,0.22,0.061,0.0615,0.0598,0.0603,0.0597,0.0602,0.0609,0.0605,0.0607,0.0608,0.0599,0.06,0.0584 7042s,0.0644,0.0725,0.062,0.0626,0.0634,0.062,0.0629,0.0646,0.0641,0.0663,0.0634,0.0626,0.0601,0.2148,0.2964,0.2294,0.198,0.0926,0.3064,0.3678,0.3629,0.3452,0.2209,0.0608,0.0611,0.1808,0.2306,0.2406,0.2049,0.0937,0.3099,0.3463,0.3558,0.3177,0.213,0.0644,0.0584,0.2003,0.2409,0.236,0.1974,0.0962,0.3057,0.3492,0.363,0.3245,0.2138,0.0634,0.0593,0.1928,0.2212,0.2429,0.2221,0.0919,0.3069,0.3503,0.3638,0.3179,0.2142,0.0621,0.0615,0.1921,0.2458,0.2687,0.2486,0.0929,0.3022,0.3442,0.3477,0.3211,0.2118,0.0597,0.0595,0.2033,0.2513,0.2708,0.2464,0.0914,0.2999,0.3333,0.3377,0.3206,0.2202,0.0612,0.0615,0.0598,0.0602,0.0598,0.0604,0.0609,0.0605,0.0607,0.061,0.0599,0.0601,0.0577 7683s,0.0641,0.0651,0.0621,0.0629,0.0639,0.0622,0.0631,0.0648,0.0641,0.0663,0.0636,0.0627,0.0602,0.2158,0.299,0.2315,0.1992,0.0926,0.3084,0.3703,0.3751,0.3562,0.221,0.0695,0.0609,0.1839,0.2345,0.2531,0.2144,0.0939,0.3131,0.3495,0.3632,0.3282,0.2131,0.0643,0.0587,0.2022,0.2437,0.2468,0.2077,0.096,0.3079,0.3549,0.3655,0.3326,0.2139,0.0629,0.06,0.1958,0.2241,0.2525,0.234,0.092,0.3091,0.3563,0.3642,0.3239,0.2143,0.0624,0.0618,0.194,0.253,0.2812,0.264,0.0929,0.305,0.3497,0.3563,0.3284,0.2118,0.059,0.0595,0.2069,0.2594,0.2835,0.262,0.0915,0.303,0.3352,0.3467,0.3267,0.2203,0.0612,0.0616,0.0601,0.0604,0.0599,0.0606,0.0613,0.0606,0.0608,0.0608,0.0598,0.0602,0.0573 8323s,0.0642,0.066,0.0623,0.0632,0.0643,0.0626,0.0633,0.0648,0.0642,0.0664,0.0636,0.0632,0.0601,0.217,0.3001,0.2325,0.2002,0.0926,0.3092,0.3826,0.3836,0.3687,0.2214,0.0676,0.061,0.1866,0.2378,0.2653,0.2271,0.0938,0.314,0.3578,0.3722,0.3404,0.2133,0.0643,0.0587,0.2045,0.2484,0.2591,0.2192,0.0962,0.3104,0.3586,0.3775,0.343,0.2141,0.0642,0.0595,0.1987,0.2297,0.2664,0.248,0.092,0.3116,0.3596,0.3799,0.3339,0.2145,0.0625,0.0617,0.198,0.2616,0.2964,0.2809,0.0929,0.3066,0.3542,0.3624,0.3389,0.2119,0.0603,0.0593,0.211,0.2699,0.2979,0.2782,0.0914,0.3045,0.3387,0.3523,0.3327,0.2205,0.0613,0.0617,0.0603,0.0604,0.0602,0.0607,0.0613,0.0609,0.061,0.0609,0.0599,0.0604,0.0574 8963s,0.0645,0.0662,0.0625,0.0631,0.0641,0.0623,0.0636,0.0649,0.0642,0.0665,0.0639,0.0633,0.0601,0.2179,0.3024,0.2343,0.2014,0.0928,0.3081,0.3918,0.3935,0.3828,0.2215,0.0647,0.0605,0.1905,0.2424,0.28,0.241,0.094,0.3123,0.3653,0.3817,0.3507,0.2134,0.0645,0.0587,0.2086,0.2565,0.2735,0.2333,0.0963,0.3113,0.3692,0.389,0.3533,0.2144,0.0641,0.0597,0.2029,0.2369,0.2825,0.2654,0.092,0.3125,0.3695,0.3878,0.3454,0.2147,0.0624,0.062,0.2031,0.2725,0.3135,0.2988,0.093,0.308,0.3607,0.3694,0.3496,0.2122,0.0591,0.0599,0.2161,0.2805,0.3141,0.295,0.0914,0.3062,0.3427,0.3597,0.3436,0.2207,0.0614,0.0614,0.0605,0.0607,0.0603,0.061,0.0617,0.0609,0.0611,0.061,0.0601,0.0604,0.0572 9603s,0.0643,0.0662,0.0626,0.0634,0.0644,0.0626,0.0638,0.0652,0.0642,0.0664,0.0638,0.0637,0.0602,0.2184,0.3032,0.2349,0.203,0.0925,0.3103,0.4032,0.4061,0.397,0.2215,0.0617,0.0638,0.194,0.2486,0.2953,0.2556,0.0937,0.3154,0.3751,0.3938,0.3626,0.2134,0.0644,0.0588,0.2138,0.2637,0.289,0.2463,0.0962,0.3124,0.3783,0.4018,0.3664,0.2143,0.0634,0.0583,0.2077,0.2444,0.2988,0.2826,0.0918,0.3133,0.3797,0.4004,0.3566,0.2145,0.0623,0.0621,0.2093,0.2854,0.3322,0.3181,0.0929,0.3108,0.3705,0.3822,0.3617,0.2121,0.0619,0.06,0.2219,0.2929,0.3323,0.3135,0.0913,0.3093,0.3491,0.3696,0.3549,0.2206,0.0613,0.061,0.0604,0.0609,0.0603,0.0611,0.0618,0.061,0.0611,0.0618,0.0599,0.0604,0.0574 10243s,0.0641,0.0678,0.0628,0.0635,0.0647,0.0631,0.0639,0.0653,0.0645,0.0669,0.0639,0.0642,0.0604,0.2194,0.3046,0.2363,0.2033,0.0926,0.3189,0.4149,0.4203,0.4126,0.2217,0.0636,0.0611,0.1987,0.2548,0.3093,0.2699,0.0941,0.3231,0.3855,0.4072,0.3758,0.2137,0.0648,0.059,0.2196,0.2736,0.3055,0.2617,0.0963,0.3176,0.3879,0.4159,0.3804,0.2147,0.0647,0.0603,0.2139,0.255,0.3182,0.3013,0.092,0.3159,0.3898,0.4149,0.3699,0.215,0.0626,0.0624,0.2169,0.2989,0.3533,0.3381,0.093,0.313,0.3812,0.395,0.3752,0.2124,0.0595,0.0592,0.2297,0.3094,0.3526,0.3318,0.0915,0.3091,0.3578,0.3798,0.3682,0.2224,0.0615,0.0611,0.0606,0.0609,0.0606,0.0613,0.0618,0.061,0.0616,0.0612,0.0602,0.0606,0.0577 10884s,0.064,0.0726,0.0632,0.064,0.0652,0.0633,0.0642,0.0655,0.0644,0.0673,0.064,0.0645,0.0605,0.22,0.3059,0.2377,0.2044,0.0927,0.3255,0.4272,0.4384,0.4296,0.222,0.0656,0.0609,0.2042,0.263,0.3224,0.2838,0.0941,0.3294,0.397,0.4226,0.3896,0.2139,0.0647,0.0592,0.2266,0.2837,0.3236,0.2773,0.0962,0.3219,0.3997,0.4314,0.3927,0.2147,0.0667,0.0608,0.2226,0.2662,0.3363,0.3199,0.0919,0.321,0.4017,0.4304,0.3826,0.215,0.0629,0.0623,0.225,0.3127,0.3741,0.3603,0.0932,0.3173,0.3908,0.4074,0.3881,0.2126,0.0602,0.0604,0.2374,0.3241,0.3736,0.3522,0.0914,0.3117,0.3678,0.3931,0.3784,0.221,0.0617,0.061,0.0609,0.0608,0.0607,0.0614,0.0591,0.0612,0.0615,0.0615,0.0604,0.0607,0.0574 11527s,0.0646,0.067,0.0632,0.0642,0.0651,0.0633,0.0641,0.0655,0.0644,0.0672,0.0638,0.0644,0.0606,0.2209,0.3074,0.239,0.2056,0.0927,0.3338,0.4412,0.4551,0.4463,0.2219,0.0638,0.0613,0.2097,0.2727,0.335,0.2954,0.0939,0.3363,0.4079,0.4392,0.4064,0.214,0.0649,0.0593,0.2343,0.2965,0.3437,0.2949,0.0962,0.3271,0.412,0.4468,0.4097,0.2147,0.0635,0.0588,0.2302,0.2779,0.3572,0.3426,0.092,0.3261,0.4135,0.4471,0.3975,0.2151,0.0628,0.0626,0.2334,0.3288,0.3958,0.3845,0.0931,0.3215,0.4017,0.425,0.4032,0.2126,0.0603,0.0593,0.2455,0.3409,0.3956,0.3748,0.0913,0.317,0.378,0.4058,0.3924,0.2211,0.0617,0.061,0.0611,0.0611,0.0607,0.0614,0.0621,0.0613,0.0616,0.0669,0.0603,0.0607,0.0578 12167s,0.0647,0.0672,0.0632,0.0638,0.065,0.0631,0.0647,0.0657,0.0643,0.0671,0.0635,0.0639,0.0607,0.2212,0.308,0.2398,0.2063,0.0926,0.3411,0.455,0.4721,0.466,0.2222,0.0667,0.0612,0.2161,0.2835,0.3466,0.3068,0.0938,0.3431,0.422,0.4568,0.4223,0.2141,0.0648,0.0594,0.2415,0.3098,0.3647,0.3136,0.0965,0.3326,0.4245,0.4643,0.4269,0.2149,0.0634,0.0589,0.2364,0.2914,0.3782,0.363,0.092,0.3302,0.4254,0.4633,0.4129,0.2151,0.0627,0.0627,0.2422,0.3459,0.42,0.4084,0.0931,0.3269,0.4147,0.4396,0.4188,0.2127,0.06,0.06,0.2545,0.359,0.4181,0.4007,0.0913,0.3202,0.3872,0.4198,0.4049,0.2212,0.062,0.0606,0.061,0.0607,0.0608,0.0614,0.0622,0.0614,0.0618,0.0659,0.0602,0.0607,0.0577 12807s,0.0649,0.0674,0.0629,0.0643,0.0654,0.0635,0.0642,0.0662,0.0647,0.0671,0.0636,0.0641,0.0606,0.2219,0.3102,0.2416,0.2078,0.0928,0.3485,0.4704,0.4894,0.4872,0.2223,0.0677,0.0605,0.2236,0.2968,0.3581,0.317,0.0939,0.3501,0.4348,0.475,0.4427,0.2144,0.0647,0.0594,0.25,0.3242,0.3882,0.333,0.0962,0.339,0.4384,0.4825,0.4448,0.215,0.0653,0.0592,0.2442,0.3071,0.4019,0.3872,0.0918,0.3362,0.4395,0.4823,0.4305,0.2154,0.0628,0.0626,0.2524,0.3651,0.4448,0.4349,0.0933,0.3331,0.4273,0.4569,0.4364,0.2128,0.0594,0.0602,0.2647,0.3788,0.4432,0.4255,0.0914,0.3245,0.3987,0.4352,0.4217,0.2213,0.0621,0.0607,0.0612,0.061,0.061,0.0616,0.0623,0.0614,0.0617,0.0617,0.0604,0.0607,0.0571 13447s,0.0648,0.0672,0.0638,0.0644,0.0655,0.0638,0.0644,0.066,0.0645,0.0674,0.0635,0.063,0.0608,0.2229,0.3111,0.2427,0.2089,0.0927,0.3565,0.4867,0.5093,0.5086,0.2223,0.0665,0.0614,0.2317,0.311,0.3676,0.3263,0.094,0.3588,0.4497,0.4939,0.4629,0.2143,0.0647,0.0595,0.26,0.3422,0.4117,0.3547,0.0963,0.346,0.4523,0.502,0.463,0.2153,0.0648,0.0607,0.2535,0.3246,0.4273,0.413,0.092,0.3429,0.4537,0.5019,0.4513,0.2155,0.063,0.0626,0.2643,0.3855,0.4717,0.4593,0.0933,0.3392,0.4401,0.4744,0.4546,0.213,0.0611,0.0604,0.2743,0.4006,0.4687,0.4499,0.0916,0.3292,0.4096,0.4506,0.4377,0.2214,0.0623,0.0606,0.0614,0.0609,0.061,0.0615,0.0622,0.0616,0.0617,0.0612,0.0605,0.0606,0.0571 14088s,0.065,0.0675,0.0638,0.0646,0.0651,0.0634,0.0644,0.066,0.0646,0.0674,0.0636,0.0626,0.0613,0.2236,0.3125,0.2442,0.2102,0.0927,0.3651,0.5037,0.5321,0.5319,0.2227,0.0721,0.0615,0.2407,0.3224,0.3741,0.3337,0.094,0.3677,0.466,0.514,0.4856,0.2145,0.0648,0.0596,0.2697,0.3587,0.435,0.3758,0.0963,0.3538,0.4676,0.5225,0.483,0.2154,0.0647,0.0614,0.2634,0.3419,0.4559,0.4401,0.0921,0.3498,0.4702,0.5226,0.4716,0.2156,0.063,0.0632,0.277,0.4085,0.4989,0.4868,0.0935,0.3463,0.4555,0.4936,0.4764,0.2132,0.0591,0.0581,0.2849,0.4223,0.4941,0.4779,0.0914,0.3358,0.4218,0.4669,0.4579,0.2216,0.0625,0.0607,0.0613,0.0606,0.0612,0.0616,0.0625,0.0616,0.0618,0.0612,0.0606,0.0608,0.0586 14728s,0.0653,0.0677,0.0635,0.0646,0.0654,0.064,0.0644,0.0661,0.0645,0.0674,0.0633,0.0624,0.0609,0.2243,0.3134,0.2456,0.2111,0.0928,0.3747,0.5219,0.5554,0.5582,0.2226,0.0645,0.0616,0.2504,0.3352,0.3795,0.3403,0.094,0.3762,0.4825,0.5363,0.5077,0.2146,0.0649,0.0596,0.2798,0.3757,0.4559,0.3987,0.0963,0.3612,0.4844,0.545,0.5045,0.2154,0.0654,0.0611,0.2729,0.3611,0.4824,0.465,0.092,0.3573,0.4862,0.5453,0.4922,0.2157,0.0632,0.0627,0.2897,0.4313,0.5289,0.5125,0.0936,0.3534,0.4704,0.5146,0.4983,0.2131,0.0601,0.0594,0.2968,0.4485,0.5221,0.5008,0.0914,0.3419,0.4349,0.4855,0.4771,0.2217,0.0625,0.0607,0.0616,0.0607,0.0613,0.0617,0.0626,0.0617,0.0617,0.0612,0.0607,0.0606,0.0574 15368s,0.0653,0.0679,0.0637,0.0647,0.0656,0.064,0.0647,0.066,0.0649,0.0678,0.0634,0.0623,0.0613,0.2255,0.3147,0.2463,0.2118,0.0927,0.3852,0.5413,0.5801,0.5828,0.2228,0.0716,0.0616,0.2604,0.349,0.384,0.3453,0.0939,0.3879,0.5003,0.5608,0.5285,0.2147,0.065,0.0595,0.2903,0.3965,0.4774,0.4215,0.0964,0.3697,0.5022,0.5693,0.5269,0.2155,0.0646,0.0581,0.2842,0.3816,0.5117,0.4916,0.0921,0.3649,0.505,0.5702,0.5136,0.2159,0.063,0.063,0.3044,0.4566,0.5571,0.5424,0.0938,0.3607,0.4872,0.5373,0.52,0.2134,0.0597,0.0615,0.309,0.4738,0.5497,0.5273,0.0913,0.3489,0.4483,0.5062,0.499,0.2218,0.0625,0.0607,0.0615,0.0608,0.0612,0.0617,0.0625,0.0618,0.0619,0.0611,0.0605,0.0606,0.0584 16008s,0.065,0.0678,0.0637,0.0648,0.0656,0.064,0.0645,0.0663,0.0648,0.0679,0.0634,0.0624,0.0613,0.2265,0.3152,0.2472,0.2129,0.0929,0.3954,0.5624,0.6067,0.608,0.2229,0.0815,0.0688,0.271,0.3602,0.3883,0.3503,0.094,0.3984,0.5191,0.5861,0.553,0.2149,0.0653,0.0595,0.3021,0.418,0.4944,0.4447,0.0963,0.3793,0.5219,0.5947,0.5516,0.2157,0.0676,0.0583,0.2965,0.4028,0.5401,0.5197,0.0921,0.3722,0.5232,0.5949,0.538,0.2159,0.0635,0.063,0.3194,0.4841,0.5865,0.5702,0.0941,0.3684,0.5046,0.5603,0.5448,0.2134,0.0597,0.0611,0.3218,0.5007,0.5759,0.5544,0.0915,0.3556,0.4644,0.526,0.5186,0.222,0.0623,0.0605,0.0616,0.0605,0.0613,0.0618,0.0625,0.062,0.0619,0.0613,0.0602,0.0604,0.0573 16648s,0.0652,0.0679,0.0639,0.0649,0.0656,0.064,0.0647,0.0663,0.0656,0.0678,0.0629,0.0623,0.0615,0.2273,0.3161,0.2477,0.2136,0.0928,0.4074,0.5834,0.6335,0.6326,0.223,0.0697,0.0622,0.2812,0.3701,0.3914,0.3549,0.0939,0.4094,0.5386,0.6126,0.5759,0.2149,0.0651,0.0597,0.315,0.4398,0.5087,0.4685,0.0962,0.3884,0.5406,0.6196,0.5732,0.2157,0.0654,0.0587,0.3098,0.4258,0.569,0.5508,0.092,0.3817,0.5433,0.621,0.5603,0.2159,0.0633,0.0631,0.335,0.5122,0.6176,0.6015,0.0942,0.3776,0.5241,0.5862,0.5677,0.2135,0.0626,0.059,0.3353,0.5264,0.6041,0.5835,0.0911,0.3623,0.4801,0.5486,0.5437,0.2243,0.0624,0.0607,0.0613,0.0605,0.0611,0.0618,0.0626,0.0621,0.0618,0.0611,0.06,0.0603,0.057 17289s,0.0648,0.068,0.064,0.0648,0.0653,0.0638,0.0647,0.0667,0.0649,0.0679,0.063,0.0624,0.0614,0.2289,0.3173,0.2495,0.2147,0.0928,0.4183,0.6063,0.6581,0.6616,0.2231,0.0682,0.0605,0.2925,0.3806,0.3955,0.3587,0.094,0.4211,0.5593,0.6392,0.6037,0.2151,0.0651,0.0596,0.3292,0.4638,0.5221,0.4905,0.0964,0.3983,0.5619,0.6479,0.5999,0.2159,0.0687,0.0594,0.3245,0.4521,0.601,0.5809,0.0921,0.3907,0.5647,0.6494,0.5876,0.2163,0.0635,0.0629,0.3529,0.5418,0.647,0.6353,0.0944,0.3849,0.5434,0.6119,0.5927,0.2137,0.0639,0.0594,0.351,0.5558,0.6331,0.6131,0.0914,0.3695,0.4972,0.5715,0.5664,0.2221,0.062,0.0609,0.0614,0.0608,0.0612,0.0621,0.0627,0.0614,0.062,0.0612,0.0601,0.0605,0.0575 17929s,0.0652,0.0679,0.0634,0.0648,0.066,0.0637,0.0647,0.0668,0.0652,0.0682,0.0629,0.0625,0.0615,0.2299,0.3184,0.2505,0.2157,0.0929,0.431,0.6301,0.6892,0.6922,0.2233,0.0735,0.0618,0.3024,0.3883,0.3981,0.3614,0.0941,0.4334,0.5801,0.6689,0.6295,0.2152,0.0653,0.0598,0.3429,0.4884,0.5357,0.5079,0.0964,0.4084,0.5844,0.6746,0.6266,0.216,0.0685,0.0613,0.3388,0.478,0.6326,0.6143,0.0922,0.3995,0.5868,0.6765,0.6145,0.2164,0.0634,0.0632,0.3715,0.5706,0.6775,0.6692,0.0949,0.3954,0.5633,0.6363,0.6197,0.2139,0.06,0.0614,0.3665,0.5854,0.6622,0.6448,0.0915,0.3776,0.514,0.5947,0.593,0.2222,0.0621,0.0608,0.0611,0.0607,0.0612,0.062,0.0627,0.0614,0.0616,0.0612,0.0599,0.0604,0.0568 18569s,0.0649,0.07,0.0637,0.0647,0.0657,0.0633,0.0648,0.0665,0.0649,0.0677,0.0625,0.0624,0.0614,0.2309,0.3192,0.2512,0.2167,0.0927,0.4433,0.655,0.7205,0.7223,0.2232,0.0673,0.0604,0.312,0.3954,0.4005,0.3644,0.094,0.446,0.6043,0.6984,0.6598,0.2153,0.0652,0.0596,0.3572,0.5109,0.5439,0.5218,0.0963,0.42,0.6065,0.7044,0.6539,0.2161,0.0672,0.0591,0.3544,0.5041,0.6652,0.6438,0.0921,0.4092,0.6093,0.7052,0.6406,0.2163,0.0635,0.0631,0.3904,0.602,0.71,0.7018,0.095,0.405,0.5844,0.6656,0.6496,0.214,0.06,0.0599,0.3831,0.6162,0.6913,0.6778,0.0914,0.3854,0.5332,0.6216,0.6165,0.2223,0.062,0.0609,0.0611,0.0608,0.0611,0.062,0.0625,0.0614,0.0615,0.0612,0.0597,0.0601,0.0575 19209s,0.0652,0.0753,0.0635,0.0646,0.0658,0.0629,0.0646,0.066,0.0648,0.0678,0.0627,0.0622,0.0616,0.2324,0.3201,0.252,0.2177,0.0929,0.4576,0.681,0.7518,0.7562,0.2235,0.065,0.0611,0.3235,0.4017,0.4027,0.367,0.094,0.4606,0.6278,0.7299,0.6907,0.2153,0.0654,0.0599,0.3735,0.5336,0.552,0.5352,0.0963,0.4305,0.6308,0.7344,0.6825,0.2162,0.0712,0.0604,0.3724,0.5328,0.695,0.6735,0.0921,0.4197,0.6341,0.7366,0.6694,0.2166,0.0638,0.0632,0.4107,0.633,0.7431,0.7382,0.0955,0.4161,0.6082,0.6951,0.6789,0.2141,0.0598,0.0605,0.401,0.6475,0.7222,0.7083,0.0913,0.3945,0.5518,0.6458,0.6425,0.2225,0.0625,0.0608,0.061,0.0607,0.0611,0.0621,0.0623,0.0614,0.0614,0.0613,0.0596,0.0597,0.0576 19850s,0.0649,0.074,0.0638,0.0648,0.0657,0.0629,0.0644,0.0658,0.0644,0.0675,0.0624,0.062,0.0615,0.2334,0.3211,0.2532,0.2186,0.0928,0.4723,0.708,0.7827,0.7883,0.2235,0.0641,0.0619,0.3312,0.4069,0.4043,0.3705,0.0942,0.4744,0.6531,0.7611,0.7181,0.2156,0.0654,0.06,0.3894,0.5506,0.5573,0.5457,0.0963,0.443,0.655,0.7671,0.7132,0.2163,0.0725,0.0585,0.3897,0.562,0.7207,0.7027,0.0921,0.4308,0.6596,0.7686,0.6962,0.2166,0.0636,0.0634,0.4325,0.6643,0.7755,0.7737,0.096,0.4276,0.6319,0.7256,0.7075,0.2142,0.0594,0.0601,0.4187,0.6784,0.7542,0.744,0.0916,0.4038,0.5717,0.6731,0.6715,0.2226,0.062,0.0607,0.0606,0.0606,0.0611,0.062,0.0624,0.0613,0.0611,0.0613,0.0596,0.0597,0.0574 20490s,0.0652,0.0678,0.0637,0.0648,0.0654,0.0629,0.064,0.0656,0.0642,0.0674,0.0621,0.0622,0.0614,0.2344,0.3217,0.2539,0.2193,0.0927,0.4883,0.7361,0.8186,0.8228,0.2235,0.0635,0.062,0.3384,0.411,0.4068,0.3719,0.094,0.4884,0.6789,0.7932,0.7518,0.2157,0.0655,0.0599,0.4072,0.5684,0.5625,0.5542,0.0963,0.456,0.6805,0.7987,0.7434,0.2164,0.0717,0.0586,0.409,0.5916,0.7453,0.7307,0.092,0.4422,0.6862,0.7979,0.7273,0.2167,0.0636,0.0633,0.4533,0.6976,0.8095,0.8108,0.0962,0.4389,0.6564,0.7561,0.739,0.2142,0.0611,0.0592,0.438,0.7105,0.7845,0.7762,0.0916,0.4157,0.5936,0.6997,0.6992,0.2227,0.0624,0.0609,0.0604,0.0604,0.061,0.0617,0.0623,0.0611,0.0611,0.0611,0.0595,0.0597,0.0588 21130s,0.0651,0.0727,0.0637,0.0647,0.0654,0.063,0.064,0.0656,0.0643,0.0677,0.0618,0.0624,0.0617,0.2356,0.3229,0.2552,0.2205,0.0928,0.5047,0.7656,0.8502,0.8543,0.2237,0.0764,0.0614,0.3456,0.4153,0.4088,0.3738,0.0941,0.504,0.7071,0.8253,0.7841,0.2157,0.0655,0.06,0.4252,0.5826,0.5646,0.5619,0.0963,0.4691,0.7087,0.8327,0.7764,0.2165,0.0678,0.0586,0.4289,0.62,0.7663,0.7547,0.0922,0.4559,0.7135,0.8329,0.7561,0.2168,0.0641,0.0635,0.4749,0.7316,0.8449,0.8474,0.0967,0.4514,0.6839,0.7874,0.7723,0.2144,0.0605,0.0614,0.4578,0.7446,0.8168,0.8104,0.0914,0.4258,0.6176,0.7294,0.7291,0.2228,0.0623,0.0609,0.0604,0.0603,0.0608,0.0614,0.0621,0.061,0.0609,0.061,0.0595,0.0598,0.0572 21770s,0.0654,0.0733,0.0633,0.0647,0.0659,0.0632,0.0636,0.0655,0.0642,0.0678,0.0615,0.0623,0.0613,0.2364,0.3234,0.2557,0.2215,0.0927,0.5207,0.7943,0.8836,0.8884,0.2237,0.0618,0.062,0.3526,0.4188,0.4099,0.3757,0.094,0.5216,0.7332,0.861,0.8168,0.2158,0.0656,0.0601,0.443,0.5934,0.5682,0.568,0.0963,0.4824,0.7375,0.8659,0.8098,0.2167,0.0762,0.0609,0.4501,0.6504,0.783,0.7699,0.0922,0.4679,0.7409,0.8653,0.7894,0.2169,0.0638,0.0636,0.4967,0.7644,0.8803,0.882,0.0975,0.4631,0.7088,0.8186,0.8032,0.2144,0.059,0.0597,0.4769,0.7759,0.8492,0.8458,0.0915,0.4375,0.6402,0.7601,0.7622,0.2228,0.0622,0.0608,0.0601,0.0601,0.0605,0.0612,0.0617,0.0611,0.0605,0.0608,0.0596,0.0597,0.0575 22410s,0.0651,0.0709,0.0633,0.0645,0.0651,0.063,0.0635,0.0654,0.064,0.0678,0.0629,0.0624,0.0616,0.2375,0.3239,0.2565,0.222,0.0929,0.5386,0.825,0.9179,0.922,0.2239,0.0711,0.0622,0.3582,0.4208,0.4118,0.3766,0.0943,0.5381,0.7628,0.8935,0.851,0.216,0.0657,0.0602,0.4612,0.6017,0.5709,0.5738,0.0964,0.4984,0.7655,0.8981,0.8415,0.2169,0.0692,0.0584,0.4716,0.6816,0.7938,0.7843,0.0922,0.4813,0.7684,0.8988,0.8204,0.2169,0.0643,0.0637,0.5174,0.7986,0.9157,0.9148,0.0981,0.4766,0.7381,0.8513,0.8354,0.2146,0.061,0.0594,0.4979,0.8096,0.8815,0.8801,0.0915,0.4493,0.6637,0.7913,0.7949,0.2229,0.0622,0.0607,0.06,0.0601,0.0605,0.0611,0.0615,0.0609,0.0604,0.0619,0.0596,0.0594,0.0575 23051s,0.0653,0.0677,0.0631,0.0643,0.065,0.0632,0.0637,0.0656,0.0641,0.0675,0.0634,0.0625,0.0615,0.2381,0.3242,0.2571,0.2226,0.0927,0.5575,0.8565,0.9528,0.9536,0.224,0.0719,0.0625,0.364,0.423,0.4126,0.3784,0.094,0.5559,0.7921,0.9282,0.8862,0.2159,0.0658,0.06,0.4783,0.6092,0.573,0.5795,0.0963,0.5135,0.7945,0.9332,0.8769,0.2168,0.0736,0.059,0.4927,0.7103,0.8047,0.7949,0.0921,0.4958,0.8006,0.9319,0.8534,0.2171,0.0642,0.0636,0.5394,0.8319,0.9515,0.9424,0.0987,0.4902,0.7675,0.8842,0.8699,0.2148,0.0661,0.0602,0.5171,0.8442,0.9154,0.914,0.0915,0.4611,0.6897,0.8213,0.8209,0.2229,0.0621,0.0608,0.0602,0.0601,0.0605,0.0609,0.0616,0.0609,0.0603,0.0607,0.0596,0.0596,0.0574 23691s,0.0648,0.0676,0.0628,0.0641,0.0647,0.063,0.0638,0.0657,0.0639,0.0672,0.0636,0.0623,0.0616,0.239,0.3251,0.2579,0.2238,0.0927,0.576,0.8876,0.9873,0.9874,0.2239,0.0668,0.0627,0.3685,0.4256,0.4147,0.3797,0.0939,0.5738,0.8215,0.9612,0.9195,0.216,0.0656,0.06,0.4945,0.6154,0.5752,0.5843,0.0964,0.5299,0.8253,0.9654,0.9094,0.2168,0.0704,0.0586,0.5159,0.7373,0.813,0.8056,0.0919,0.5113,0.8304,0.9654,0.8838,0.2172,0.064,0.0637,0.5609,0.8661,0.9866,0.9706,0.0997,0.5052,0.796,0.9166,0.9027,0.2147,0.0663,0.0608,0.5375,0.8775,0.9473,0.9491,0.0916,0.4735,0.7154,0.8516,0.8528,0.2231,0.0629,0.0609,0.0602,0.0599,0.0601,0.0608,0.0615,0.0605,0.0603,0.0611,0.0596,0.0595,0.0575 24331s,0.0651,0.068,0.0629,0.0641,0.0647,0.0633,0.0638,0.0654,0.0638,0.0675,0.0634,0.0625,0.0615,0.2404,0.3259,0.259,0.2245,0.0928,0.5955,0.9191,1.0218,1.0187,0.2242,0.0578,0.0605,0.3726,0.4293,0.4165,0.3817,0.094,0.5943,0.853,0.9955,0.954,0.2163,0.0658,0.0601,0.5099,0.6202,0.576,0.588,0.0962,0.5455,0.8576,0.9983,0.9424,0.2171,0.0651,0.061,0.5353,0.7648,0.8192,0.8135,0.0921,0.5263,0.8625,0.9989,0.9208,0.2174,0.064,0.064,0.5805,0.899,1.0165,0.9958,0.101,0.5214,0.8277,0.9497,0.9411,0.2148,0.0609,0.0585,0.557,0.9114,0.9814,0.9836,0.0916,0.4881,0.7419,0.8812,0.8882,0.2232,0.0621,0.0608,0.0602,0.0599,0.0601,0.0607,0.0616,0.0606,0.0605,0.0606,0.0596,0.0597,0.0574 24971s,0.0652,0.0715,0.0627,0.0641,0.0644,0.0632,0.0633,0.0654,0.0638,0.0672,0.0638,0.0622,0.0614,0.2411,0.3264,0.2596,0.2251,0.0928,0.6165,0.9512,1.0528,1.0489,0.2243,0.0581,0.0623,0.3759,0.4301,0.418,0.3827,0.0941,0.6135,0.884,1.0279,0.9861,0.2163,0.0658,0.0603,0.522,0.6243,0.5779,0.5913,0.0963,0.5641,0.8875,1.0311,0.9763,0.2172,0.0698,0.0613,0.5581,0.7868,0.8255,0.8207,0.0922,0.5428,0.8942,1.0295,0.954,0.2175,0.0642,0.0639,0.6008,0.9319,1.0455,1.0195,0.1023,0.5355,0.8585,0.983,0.9751,0.2149,0.0606,0.0606,0.5769,0.9442,1.0133,1.0169,0.0917,0.5013,0.771,0.9124,0.9145,0.2233,0.0621,0.061,0.0599,0.0601,0.0599,0.0607,0.0613,0.0606,0.0606,0.0606,0.0598,0.0598,0.0576 25612s,0.0651,0.0678,0.0624,0.0638,0.0642,0.0631,0.0633,0.0652,0.0639,0.067,0.0633,0.0622,0.0611,0.2421,0.3269,0.2603,0.2256,0.0929,0.6376,0.9836,1.0848,1.0764,0.2245,0.0611,0.0615,0.3792,0.4336,0.4198,0.3848,0.094,0.6357,0.9161,1.0609,1.0181,0.2164,0.0662,0.0601,0.5339,0.6273,0.5813,0.5949,0.0962,0.5835,0.92,1.0623,1.0096,0.2172,0.0681,0.0608,0.5804,0.8052,0.8292,0.8275,0.0922,0.5593,0.926,1.0613,0.9876,0.2175,0.0643,0.0639,0.6222,0.9653,1.071,1.0373,0.1037,0.5543,0.8888,1.0138,1.0071,0.2152,0.0608,0.0583,0.5958,0.9773,1.0444,1.0519,0.0916,0.5164,0.7988,0.9416,0.9483,0.2234,0.062,0.0607,0.0601,0.0602,0.0599,0.0606,0.0612,0.0607,0.0605,0.0605,0.0597,0.0598,0.0574 26252s,0.0658,0.0729,0.0627,0.0641,0.0646,0.0634,0.0635,0.0657,0.064,0.0675,0.0634,0.0626,0.0613,0.2432,0.328,0.2612,0.2266,0.0929,0.66,1.0143,1.1134,1.1002,0.2246,0.0597,0.0608,0.3816,0.4358,0.4207,0.3861,0.0943,0.6557,0.9499,1.0937,1.0503,0.2166,0.0664,0.0603,0.5455,0.6307,0.5818,0.5972,0.0964,0.6019,0.9525,1.0941,1.0403,0.2174,0.0695,0.0589,0.603,0.8213,0.8335,0.8337,0.0923,0.5783,0.9576,1.0941,1.02,0.2177,0.0643,0.064,0.6427,0.9964,1.0923,1.0548,0.1054,0.5716,0.9194,1.0461,1.0376,0.2153,0.0662,0.0594,0.6142,1.0109,1.0773,1.0861,0.0917,0.5331,0.8255,0.9737,0.9845,0.2236,0.062,0.061,0.0602,0.0601,0.0601,0.0607,0.0612,0.0608,0.0608,0.0627,0.0599,0.0597,0.0581 26892s,0.0651,0.0677,0.0627,0.0639,0.0642,0.0631,0.0635,0.0657,0.0639,0.0673,0.0636,0.0625,0.0611,0.244,0.3285,0.2619,0.2275,0.093,0.6816,1.0462,1.1418,1.1238,0.2246,0.0595,0.0614,0.3832,0.4367,0.4222,0.3866,0.0942,0.6782,0.9804,1.1229,1.0807,0.2166,0.0666,0.0601,0.555,0.6321,0.5828,0.5992,0.0964,0.6214,0.9841,1.1248,1.0735,0.2174,0.0711,0.0591,0.6225,0.8332,0.8347,0.8384,0.0922,0.5969,0.9901,1.1243,1.0531,0.2178,0.0646,0.0639,0.6638,1.0275,1.1082,1.0677,0.1073,0.5892,0.9516,1.0751,1.0705,0.2154,0.0584,0.059,0.6326,1.0419,1.1089,1.1172,0.0917,0.5475,0.8568,1.0054,1.0142,0.2235,0.0617,0.0608,0.0601,0.0601,0.06,0.0606,0.061,0.0606,0.0608,0.0612,0.0599,0.0597,0.058 27532s,0.065,0.0678,0.0628,0.0638,0.0643,0.063,0.0637,0.0658,0.0638,0.067,0.0634,0.0626,0.0612,0.2451,0.3297,0.2631,0.2284,0.093,0.7054,1.0771,1.1678,1.1453,0.2249,0.0587,0.0629,0.3842,0.4374,0.4229,0.3871,0.0943,0.6998,1.0132,1.1508,1.1086,0.2167,0.0664,0.0604,0.563,0.6346,0.5843,0.6019,0.0964,0.642,1.0143,1.1527,1.1015,0.2175,0.0724,0.0591,0.643,0.842,0.8385,0.843,0.0921,0.6154,1.0209,1.1558,1.0856,0.2179,0.0643,0.0641,0.6835,1.0572,1.1225,1.0796,0.11,0.6091,0.9832,1.1067,1.1047,0.2156,0.0599,0.0607,0.652,1.0729,1.1407,1.1471,0.0917,0.5631,0.887,1.0352,1.0414,0.2237,0.0617,0.0609,0.0602,0.0603,0.06,0.0607,0.0612,0.0607,0.0608,0.0611,0.0601,0.0597,0.0579 28172s,0.0652,0.068,0.0626,0.0637,0.0643,0.0634,0.0634,0.0657,0.0636,0.0671,0.0633,0.0622,0.0611,0.246,0.3295,0.2631,0.2286,0.093,0.729,1.1082,1.1916,1.1675,0.225,0.0579,0.0627,0.3856,0.439,0.4233,0.3874,0.094,0.7236,1.0433,1.1764,1.1328,0.2167,0.0658,0.0603,0.5703,0.6365,0.5855,0.6039,0.0963,0.6635,1.0462,1.1804,1.1296,0.2177,0.077,0.0584,0.661,0.8502,0.8413,0.8461,0.0921,0.6364,1.0506,1.1847,1.1169,0.2179,0.0643,0.064,0.7016,1.0867,1.1334,1.0901,0.1135,0.6298,1.0156,1.1359,1.1349,0.2157,0.0591,0.0587,0.6704,1.1029,1.1692,1.18,0.0916,0.5802,0.9176,1.0648,1.073,0.2236,0.0619,0.0606,0.0601,0.0601,0.06,0.0607,0.0611,0.0605,0.0607,0.0607,0.0599,0.0596,0.0575 28813s,0.065,0.0678,0.0625,0.0636,0.0642,0.0631,0.0637,0.0657,0.0637,0.067,0.0635,0.0623,0.0611,0.247,0.3303,0.2637,0.2291,0.093,0.7524,1.1362,1.2128,1.1859,0.225,0.0583,0.0616,0.3866,0.4408,0.4249,0.3877,0.0941,0.7472,1.0741,1.201,1.1543,0.2169,0.0655,0.0604,0.578,0.6382,0.5879,0.6046,0.0964,0.6833,1.0776,1.2066,1.1523,0.2178,0.0666,0.0611,0.6787,0.8562,0.8432,0.8498,0.0923,0.6556,1.083,1.2111,1.1457,0.2179,0.0646,0.0641,0.7202,1.114,1.1409,1.0979,0.1181,0.6513,1.0452,1.1653,1.1662,0.216,0.0601,0.0609,0.6896,1.1328,1.1978,1.2083,0.0917,0.597,0.9496,1.0937,1.1015,0.2239,0.062,0.0608,0.0602,0.0603,0.0599,0.0608,0.0612,0.0606,0.0609,0.0605,0.0601,0.06,0.0579 29453s,0.0648,0.074,0.0625,0.0638,0.0643,0.0632,0.0635,0.0656,0.0636,0.067,0.0635,0.0625,0.061,0.2479,0.3307,0.2646,0.2298,0.093,0.7762,1.1653,1.2307,1.2026,0.2251,0.0601,0.0628,0.3892,0.4425,0.4252,0.3885,0.0941,0.7712,1.105,1.2251,1.1747,0.2169,0.0649,0.0601,0.5826,0.6392,0.5889,0.6064,0.0963,0.707,1.1088,1.2311,1.1764,0.2177,0.0693,0.06,0.6966,0.8614,0.8446,0.8531,0.0921,0.677,1.1146,1.2371,1.174,0.218,0.0645,0.0641,0.7373,1.1402,1.1482,1.1048,0.1247,0.6719,1.077,1.1939,1.1939,0.2161,0.0587,0.0581,0.7073,1.1604,1.2276,1.2342,0.0918,0.6166,0.9799,1.1224,1.1305,0.2239,0.062,0.0608,0.0603,0.0605,0.0598,0.0608,0.0613,0.0607,0.0609,0.0659,0.0599,0.0599,0.0575 30093s,0.0646,0.0674,0.0625,0.0635,0.0643,0.0631,0.0634,0.0656,0.0635,0.0671,0.0635,0.0626,0.0609,0.2486,0.3311,0.265,0.23,0.0928,0.7999,1.1924,1.2466,1.2176,0.2251,0.0602,0.0619,0.3909,0.4441,0.4256,0.3885,0.0941,0.793,1.1347,1.2465,1.1933,0.2171,0.0647,0.0604,0.5869,0.6397,0.5896,0.6077,0.0964,0.7301,1.1379,1.2538,1.1956,0.2179,0.0714,0.0583,0.7109,0.8655,0.8466,0.8554,0.0922,0.6989,1.1442,1.2625,1.1991,0.2181,0.0647,0.064,0.7533,1.1635,1.1533,1.1112,0.1337,0.6932,1.1062,1.2204,1.2213,0.2163,0.0596,0.0595,0.7247,1.1878,1.2535,1.2622,0.0916,0.6351,1.0116,1.1484,1.1579,0.224,0.0622,0.0607,0.0603,0.0606,0.0599,0.0607,0.0614,0.0607,0.0607,0.0611,0.06,0.06,0.0573 30733s,0.0649,0.0677,0.0626,0.0638,0.0643,0.0633,0.0635,0.0657,0.0636,0.0669,0.0633,0.0626,0.061,0.2498,0.332,0.2659,0.2309,0.0931,0.8243,1.2194,1.26,1.23,0.2253,0.0585,0.0615,0.3926,0.4446,0.4257,0.3894,0.0941,0.8164,1.1628,1.2651,1.211,0.2171,0.0646,0.0605,0.59,0.6408,0.5898,0.6092,0.0964,0.7526,1.1656,1.2751,1.2145,0.218,0.0696,0.0591,0.7247,0.8682,0.8467,0.8577,0.0923,0.7198,1.173,1.2845,1.2198,0.2182,0.0644,0.0641,0.7689,1.1828,1.1576,1.1167,0.1442,0.7171,1.1364,1.2476,1.2482,0.2166,0.0597,0.0585,0.7398,1.2146,1.2807,1.2875,0.0917,0.656,1.0413,1.1736,1.1838,0.2242,0.062,0.0609,0.0604,0.0606,0.0599,0.0608,0.0615,0.0608,0.0609,0.0615,0.06,0.0602,0.058 31373s,0.065,0.0682,0.0627,0.0637,0.0644,0.0634,0.0634,0.0658,0.0639,0.0669,0.0634,0.0624,0.0609,0.2507,0.3328,0.2668,0.2316,0.0931,0.8487,1.2441,1.2708,1.2393,0.2254,0.0598,0.0629,0.3934,0.4454,0.4259,0.3897,0.094,0.8412,1.19,1.2806,1.2264,0.2172,0.0647,0.0605,0.5931,0.6417,0.5903,0.609,0.0963,0.7759,1.1937,1.2939,1.2312,0.2181,0.0775,0.0587,0.7384,0.8712,0.8478,0.8592,0.0921,0.7428,1.2016,1.3057,1.24,0.2183,0.0644,0.0641,0.7839,1.1983,1.161,1.1204,0.157,0.7385,1.1662,1.2729,1.2718,0.2168,0.0591,0.0587,0.7552,1.2396,1.3063,1.3105,0.0915,0.6768,1.0718,1.1998,1.2077,0.2239,0.0623,0.0609,0.0605,0.0605,0.06,0.0608,0.0614,0.061,0.0606,0.0607,0.0598,0.0602,0.0589 32014s,0.0649,0.0695,0.0625,0.0636,0.0642,0.0631,0.0634,0.0656,0.0638,0.0669,0.0635,0.0624,0.0606,0.2513,0.3329,0.2671,0.232,0.0929,0.874,1.2685,1.2805,1.2474,0.2254,0.0584,0.0629,0.3945,0.4455,0.4262,0.3901,0.0941,0.8658,1.217,1.2944,1.24,0.2173,0.0646,0.0603,0.5949,0.6428,0.591,0.6104,0.0963,0.8001,1.2203,1.3093,1.2475,0.2181,0.0724,0.0585,0.7496,0.8728,0.8491,0.861,0.0921,0.7674,1.2282,1.3266,1.2584,0.2183,0.0648,0.0642,0.7986,1.2093,1.1633,1.1245,0.1681,0.7609,1.1947,1.2964,1.2928,0.217,0.0594,0.0587,0.7692,1.2626,1.3278,1.3309,0.0917,0.6958,1.1032,1.2249,1.2338,0.2242,0.0621,0.0606,0.0603,0.0606,0.0598,0.0606,0.0614,0.0608,0.0605,0.0614,0.0597,0.06,0.0571 32654s,0.0651,0.0674,0.0628,0.0638,0.0645,0.0633,0.0635,0.0656,0.0634,0.0669,0.0634,0.0625,0.061,0.252,0.333,0.2675,0.2323,0.0929,0.8963,1.2913,1.2887,1.255,0.2255,0.0581,0.063,0.3948,0.4458,0.4258,0.3904,0.0941,0.8898,1.2436,1.3057,1.2522,0.2172,0.0653,0.0604,0.5975,0.644,0.5918,0.612,0.0965,0.8238,1.2461,1.3238,1.2609,0.2184,0.0772,0.0603,0.7608,0.8749,0.8503,0.8626,0.0922,0.7896,1.2543,1.3463,1.2786,0.2185,0.0644,0.0639,0.8124,1.2188,1.1653,1.1277,0.1773,0.7836,1.2226,1.3179,1.3132,0.2171,0.0604,0.058,0.7828,1.286,1.3496,1.3488,0.0916,0.7162,1.1318,1.2501,1.2586,0.2243,0.0621,0.0605,0.0603,0.0604,0.0599,0.0607,0.0617,0.0609,0.0608,0.0609,0.0597,0.0601,0.0574 33294s,0.065,0.0701,0.0627,0.0637,0.0642,0.0632,0.0632,0.0655,0.0636,0.0668,0.0634,0.0622,0.0608,0.2526,0.3336,0.2684,0.2326,0.0929,0.92,1.311,1.2962,1.2623,0.2256,0.0592,0.0625,0.3956,0.4477,0.427,0.391,0.0941,0.9142,1.266,1.3162,1.2622,0.2174,0.0648,0.0604,0.5988,0.645,0.5922,0.6128,0.0963,0.847,1.2709,1.3355,1.2732,0.2183,0.0646,0.0596,0.7706,0.8766,0.8506,0.8645,0.0921,0.8126,1.2796,1.3629,1.2931,0.2186,0.0638,0.0639,0.8255,1.2261,1.1687,1.1313,0.1863,0.806,1.25,1.3408,1.3325,0.2174,0.0589,0.0608,0.7958,1.3074,1.37,1.3656,0.0917,0.7372,1.1618,1.2722,1.2822,0.2242,0.0624,0.0608,0.0603,0.0606,0.0598,0.0606,0.0616,0.0607,0.0604,0.0606,0.0595,0.0601,0.058 33934s,0.065,0.067,0.0626,0.0634,0.0641,0.0632,0.063,0.0656,0.0636,0.0667,0.0635,0.0623,0.0607,0.2531,0.3334,0.2685,0.2328,0.093,0.945,1.3301,1.302,1.2671,0.2258,0.0607,0.0624,0.3954,0.4477,0.4276,0.3918,0.0941,0.9364,1.2895,1.3241,1.2698,0.2175,0.0649,0.0605,0.5998,0.6449,0.5916,0.6137,0.0964,0.8701,1.294,1.3453,1.2838,0.2184,0.0614,0.0586,0.7825,0.8778,0.8519,0.866,0.0922,0.8362,1.3042,1.3767,1.3085,0.2187,0.064,0.0639,0.8362,1.2316,1.1691,1.1342,0.1949,0.8301,1.276,1.3595,1.3484,0.2179,0.06,0.0588,0.8084,1.3291,1.3869,1.3809,0.0918,0.7575,1.1895,1.2954,1.3042,0.2244,0.0635,0.0607,0.0604,0.0603,0.0598,0.0606,0.0615,0.0607,0.0605,0.0619,0.0594,0.0599,0.0573 34575s,0.0648,0.0725,0.0627,0.0635,0.0642,0.063,0.0631,0.0656,0.0636,0.0669,0.0634,0.0623,0.0607,0.254,0.3343,0.269,0.2332,0.0931,0.9658,1.3463,1.3062,1.2726,0.2258,0.0582,0.0629,0.3966,0.4484,0.4273,0.3922,0.0941,0.9598,1.3107,1.331,1.277,0.2175,0.0649,0.0601,0.6021,0.6457,0.5925,0.6135,0.0964,0.8946,1.3161,1.3536,1.2934,0.2185,0.0662,0.0588,0.791,0.8791,0.8517,0.8667,0.0922,0.86,1.3266,1.3887,1.3226,0.2187,0.0636,0.0637,0.8495,1.2363,1.1704,1.1357,0.2031,0.8544,1.3014,1.3793,1.3644,0.2183,0.0591,0.0578,0.8199,1.3486,1.4027,1.3937,0.0917,0.778,1.2164,1.3165,1.3264,0.2245,0.0623,0.0609,0.0603,0.0604,0.0596,0.0606,0.0614,0.0606,0.0605,0.0603,0.0592,0.0598,0.0574 35215s,0.0651,0.0672,0.0629,0.0637,0.0644,0.0633,0.0632,0.0658,0.064,0.0671,0.0635,0.0625,0.0609,0.255,0.3348,0.2697,0.2339,0.0931,0.9864,1.3597,1.3106,1.2763,0.2261,0.0594,0.0624,0.3975,0.4492,0.4283,0.3931,0.0942,0.9825,1.3307,1.3371,1.2832,0.2177,0.0649,0.0601,0.6024,0.6469,0.5923,0.6146,0.0966,0.9197,1.3375,1.3611,1.2994,0.2186,0.0631,0.0583,0.7991,0.8805,0.8515,0.8676,0.0923,0.8829,1.3492,1.3987,1.3352,0.2187,0.0634,0.0639,0.8598,1.2393,1.171,1.1377,0.2135,0.8776,1.3244,1.3985,1.3782,0.2186,0.0593,0.0593,0.8321,1.3674,1.4175,1.4058,0.0918,0.7995,1.2439,1.3376,1.3466,0.2246,0.0627,0.0605,0.0604,0.0603,0.0597,0.0606,0.0614,0.0606,0.0606,0.0614,0.0593,0.0598,0.0577 35855s,0.0648,0.0669,0.0629,0.0636,0.0645,0.0633,0.0634,0.0659,0.0638,0.0669,0.0635,0.0638,0.0608,0.2556,0.3355,0.2701,0.2339,0.0931,1.0077,1.3723,1.3147,1.2808,0.2262,0.061,0.0626,0.3984,0.4497,0.4288,0.3933,0.0943,1.0038,1.3469,1.3411,1.2892,0.2178,0.0649,0.0601,0.6033,0.6465,0.5923,0.6144,0.0965,0.9416,1.3556,1.3658,1.3056,0.2186,0.0647,0.0584,0.8058,0.881,0.8522,0.8686,0.0922,0.9057,1.3694,1.4073,1.3449,0.2189,0.0633,0.0638,0.8699,1.2417,1.1717,1.1389,0.2217,0.8998,1.3473,1.4142,1.3913,0.2191,0.0588,0.0578,0.8415,1.3854,1.4284,1.4162,0.0915,0.8225,1.2698,1.3571,1.3675,0.2247,0.0633,0.0609,0.0604,0.0605,0.0597,0.0606,0.0614,0.0606,0.0605,0.0615,0.0592,0.0598,0.0578 36495s,0.0648,0.0745,0.063,0.0636,0.0645,0.0634,0.0647,0.066,0.0638,0.067,0.0635,0.0625,0.0609,0.2565,0.3356,0.2705,0.2344,0.093,1.0275,1.3812,1.3168,1.2844,0.2261,0.0605,0.069,0.3983,0.4497,0.4285,0.3937,0.0941,1.0239,1.3621,1.3457,1.2939,0.2177,0.0648,0.0597,0.6034,0.6464,0.5926,0.615,0.0964,0.9641,1.3739,1.3724,1.3113,0.2187,0.0608,0.0581,0.8111,0.8818,0.8519,0.8696,0.0921,0.9292,1.3894,1.4148,1.3549,0.2189,0.0632,0.0637,0.8797,1.2439,1.1725,1.141,0.2314,0.9223,1.3681,1.4291,1.403,0.2192,0.0609,0.0582,0.8518,1.4007,1.4397,1.4249,0.0917,0.844,1.2934,1.3784,1.3861,0.2247,0.0622,0.0608,0.0602,0.0604,0.0594,0.0604,0.0614,0.0605,0.0605,0.062,0.0592,0.0596,0.0574 37135s,0.0646,0.0667,0.063,0.0635,0.0645,0.0631,0.0631,0.0658,0.0635,0.0669,0.0637,0.0625,0.0608,0.2567,0.3359,0.2705,0.2344,0.0932,1.047,1.3901,1.3194,1.2875,0.2262,0.059,0.0623,0.3987,0.4504,0.4294,0.394,0.0943,1.0454,1.3754,1.3484,1.2975,0.2178,0.0652,0.0598,0.6039,0.6474,0.5925,0.6157,0.0964,0.9856,1.3889,1.376,1.3161,0.2189,0.0614,0.0584,0.8158,0.8826,0.8515,0.8701,0.0923,0.9522,1.4075,1.4208,1.3623,0.2191,0.0633,0.0636,0.8895,1.2457,1.1732,1.1424,0.2406,0.9445,1.3898,1.4416,1.4138,0.2197,0.0598,0.0581,0.8612,1.4172,1.4477,1.4319,0.0917,0.865,1.3165,1.3974,1.4046,0.2248,0.0624,0.0607,0.0604,0.0602,0.0596,0.0607,0.0612,0.0606,0.0604,0.0604,0.0591,0.0597,0.0573 37776s,0.0646,0.0725,0.0628,0.0633,0.0641,0.0631,0.063,0.0657,0.0636,0.0668,0.0635,0.0624,0.0606,0.2573,0.336,0.2706,0.2345,0.0931,1.0669,1.3979,1.3216,1.29,0.2263,0.0607,0.0624,0.3994,0.4511,0.4296,0.3946,0.0942,1.0652,1.386,1.3518,1.301,0.218,0.0649,0.0598,0.6045,0.6475,0.5928,0.6168,0.0964,1.0077,1.403,1.38,1.3211,0.219,0.0626,0.0588,0.8196,0.883,0.8527,0.871,0.0923,0.9735,1.4253,1.4263,1.3696,0.2191,0.0631,0.0635,0.8993,1.2468,1.1735,1.1444,0.2507,0.9655,1.4096,1.4535,1.4251,0.2202,0.0587,0.0586,0.871,1.4319,1.4545,1.4381,0.0918,0.887,1.338,1.4149,1.4227,0.2264,0.0624,0.0607,0.0602,0.0602,0.0592,0.0603,0.0613,0.0606,0.0602,0.0611,0.059,0.0597,0.0578 38417s,0.0646,0.0668,0.0628,0.0633,0.0643,0.0631,0.0631,0.0657,0.0636,0.0669,0.0637,0.0626,0.0608,0.258,0.3366,0.2712,0.2353,0.0931,1.0848,1.4023,1.323,1.2919,0.2264,0.0644,0.0584,0.3994,0.4498,0.4301,0.3951,0.0941,1.0856,1.3957,1.3544,1.305,0.218,0.0648,0.0595,0.6056,0.6476,0.5932,0.6173,0.0964,1.0279,1.4154,1.3826,1.3248,0.2189,0.061,0.0584,0.8217,0.8826,0.8523,0.8721,0.0923,0.9947,1.4398,1.4306,1.3751,0.2192,0.0633,0.0635,0.9081,1.2477,1.1734,1.1453,0.2614,0.987,1.4276,1.4623,1.4321,0.2207,0.0599,0.0581,0.8798,1.4459,1.4605,1.4445,0.0917,0.9061,1.3597,1.4322,1.4385,0.2249,0.0623,0.0606,0.0603,0.0603,0.0594,0.0605,0.0614,0.0606,0.0602,0.06,0.0589,0.0599,0.0572 39058s,0.0648,0.0718,0.063,0.0635,0.0645,0.0631,0.0629,0.0657,0.0639,0.0669,0.0636,0.0625,0.0608,0.2583,0.3367,0.2711,0.2353,0.093,1.1023,1.4072,1.3245,1.2948,0.2262,0.0596,0.0613,0.4001,0.451,0.4303,0.3956,0.0943,1.1054,1.4037,1.3571,1.3074,0.218,0.0649,0.0595,0.6055,0.6472,0.5936,0.618,0.0965,1.0471,1.4254,1.3846,1.3273,0.2189,0.0603,0.0583,0.8236,0.8824,0.8522,0.8722,0.0923,1.0145,1.4521,1.434,1.3792,0.2191,0.0631,0.0633,0.916,1.2479,1.1738,1.146,0.2733,1.007,1.444,1.4712,1.4408,0.2211,0.0598,0.0591,0.8885,1.4586,1.4648,1.4494,0.0917,0.9273,1.3793,1.4477,1.4541,0.225,0.0623,0.0607,0.0602,0.0604,0.0593,0.0603,0.0612,0.0605,0.0601,0.0611,0.0588,0.0595,0.0576 39698s,0.0645,0.0665,0.0628,0.0634,0.0641,0.063,0.0629,0.0656,0.0634,0.0668,0.0637,0.0623,0.0608,0.2593,0.3373,0.2718,0.2357,0.0931,1.1171,1.4116,1.3255,1.2962,0.2265,0.0596,0.0612,0.4005,0.4525,0.4308,0.3965,0.0943,1.1216,1.4102,1.3582,1.3093,0.2182,0.0646,0.0596,0.6053,0.6489,0.5935,0.6179,0.0965,1.0665,1.4349,1.3872,1.33,0.2191,0.0598,0.0585,0.8258,0.8828,0.8519,0.8729,0.0923,1.0346,1.4644,1.4375,1.384,0.2192,0.0631,0.0633,0.9233,1.2476,1.1732,1.1467,0.2869,1.0263,1.4591,1.4774,1.4466,0.2217,0.0588,0.0593,0.898,1.4715,1.4682,1.4526,0.0919,0.9462,1.3984,1.4638,1.4681,0.2252,0.063,0.0606,0.0602,0.0604,0.0593,0.0605,0.0614,0.0606,0.0601,0.0615,0.0589,0.0595,0.0572 40338s,0.0646,0.0741,0.0629,0.0633,0.0645,0.0633,0.0627,0.0658,0.0634,0.0669,0.0635,0.0625,0.0607,0.2601,0.3383,0.2727,0.2364,0.0932,1.131,1.4143,1.3267,1.2979,0.2267,0.0582,0.061,0.4005,0.4521,0.4313,0.3965,0.0942,1.139,1.4162,1.36,1.3122,0.2183,0.0648,0.0594,0.6061,0.6485,0.5942,0.6182,0.0964,1.0857,1.4429,1.3893,1.3332,0.2192,0.061,0.0598,0.8259,0.8831,0.8513,0.8728,0.0924,1.055,1.4748,1.4398,1.3872,0.2194,0.0632,0.0629,0.9306,1.2492,1.1733,1.1481,0.2966,1.0456,1.4746,1.4844,1.4534,0.222,0.0595,0.059,0.9062,1.4831,1.4716,1.4553,0.0918,0.9667,1.417,1.4776,1.482,0.2251,0.0627,0.0608,0.0603,0.0604,0.0593,0.0606,0.0613,0.0604,0.0601,0.0605,0.0588,0.0595,0.0593 40978s,0.0648,0.0665,0.0628,0.0634,0.0643,0.0629,0.0629,0.0655,0.0634,0.0668,0.0636,0.0623,0.0607,0.2608,0.3386,0.2729,0.2367,0.0933,1.1438,1.4172,1.3279,1.3001,0.2268,0.0579,0.0614,0.4006,0.4522,0.4315,0.3967,0.0944,1.1557,1.4219,1.3622,1.3142,0.2184,0.0649,0.0596,0.6065,0.6482,0.5941,0.6184,0.0966,1.104,1.4492,1.3914,1.3352,0.2193,0.0608,0.0587,0.8274,0.8837,0.851,0.873,0.0925,1.0731,1.4848,1.442,1.3915,0.2195,0.0634,0.0632,0.9386,1.2501,1.1734,1.1495,0.3075,1.0652,1.4884,1.4897,1.4589,0.2225,0.0589,0.0583,0.9146,1.4935,1.4739,1.4598,0.0918,0.9859,1.4366,1.4936,1.4958,0.2253,0.0632,0.0609,0.0601,0.0604,0.0593,0.0604,0.0613,0.0605,0.06,0.0624,0.0586,0.0595,0.0573 41619s,0.0648,0.0734,0.0629,0.0634,0.0643,0.0629,0.0629,0.0654,0.0636,0.0668,0.0636,0.0623,0.0608,0.261,0.3384,0.2727,0.2367,0.0933,1.1553,1.4216,1.3283,1.3015,0.2269,0.0637,0.0621,0.4013,0.4525,0.4316,0.3974,0.0944,1.1703,1.4263,1.3635,1.3167,0.2187,0.0649,0.0595,0.6067,0.649,0.5942,0.6193,0.0966,1.1223,1.454,1.3925,1.3378,0.2194,0.0588,0.0581,0.8278,0.884,0.8509,0.8737,0.0925,1.0939,1.4921,1.4444,1.3937,0.2196,0.0631,0.063,0.9453,1.2508,1.1744,1.1513,0.316,1.0842,1.5025,1.4953,1.465,0.2232,0.0587,0.0581,0.9221,1.503,1.4755,1.4619,0.0918,1.0031,1.4527,1.5069,1.5051,0.2252,0.0628,0.0609,0.0603,0.06,0.0594,0.0604,0.0611,0.0604,0.0599,0.064,0.0588,0.0594,0.0574 42259s,0.0646,0.0666,0.0629,0.0634,0.0642,0.0628,0.0629,0.0655,0.0636,0.0669,0.0636,0.0624,0.0608,0.2618,0.3389,0.2731,0.2368,0.0932,1.166,1.424,1.3297,1.3035,0.2271,0.0581,0.0615,0.4012,0.4531,0.4319,0.3978,0.0944,1.1841,1.4293,1.3636,1.3181,0.2185,0.065,0.0594,0.6066,0.6494,0.5944,0.6194,0.0966,1.1401,1.4576,1.3935,1.3396,0.2195,0.0618,0.0583,0.8294,0.8838,0.8513,0.8745,0.0924,1.1109,1.499,1.445,1.3969,0.2196,0.0631,0.063,0.9514,1.2506,1.1744,1.1512,0.3303,1.1021,1.5137,1.4981,1.4688,0.2239,0.0586,0.0583,0.9304,1.5102,1.4766,1.462,0.0919,1.0211,1.4689,1.5182,1.5142,0.2253,0.0626,0.0606,0.0601,0.06,0.0593,0.0603,0.0611,0.0602,0.0598,0.0624,0.0587,0.0595,0.0575 42899s,0.0646,0.0738,0.0627,0.0633,0.0641,0.0629,0.0629,0.0652,0.0633,0.0669,0.0637,0.0625,0.0607,0.2624,0.3393,0.2737,0.2373,0.0933,1.1746,1.4258,1.3299,1.3045,0.2271,0.0583,0.0614,0.4024,0.4532,0.4321,0.3984,0.0944,1.1959,1.432,1.3647,1.3201,0.2186,0.0648,0.0595,0.607,0.6484,0.5938,0.62,0.0967,1.1579,1.4619,1.3948,1.3413,0.2195,0.0639,0.0587,0.8301,0.8842,0.8516,0.8752,0.0924,1.1295,1.5044,1.4472,1.4,0.2197,0.0632,0.063,0.9569,1.2511,1.1745,1.1522,0.3433,1.1188,1.5239,1.5019,1.4713,0.225,0.059,0.0581,0.9397,1.5167,1.4767,1.4644,0.092,1.0403,1.4834,1.5296,1.5238,0.2255,0.063,0.0608,0.0601,0.0602,0.0592,0.0604,0.0611,0.0601,0.0598,0.0643,0.0586,0.0593,0.0576 43539s,0.0647,0.0668,0.063,0.0635,0.064,0.0628,0.063,0.0653,0.0632,0.067,0.0635,0.0623,0.0608,0.2632,0.34,0.2741,0.2378,0.0934,1.1837,1.427,1.3305,1.3058,0.2273,0.0603,0.0611,0.4026,0.454,0.4332,0.3988,0.0944,1.2068,1.4345,1.365,1.3215,0.2187,0.0648,0.0596,0.6079,0.6479,0.5941,0.6208,0.0966,1.1744,1.4652,1.3955,1.3436,0.2197,0.0596,0.0583,0.8306,0.8843,0.8509,0.8753,0.0926,1.1473,1.5089,1.4481,1.4016,0.2199,0.0633,0.0629,0.9614,1.2515,1.1736,1.1531,0.3551,1.1362,1.5334,1.5046,1.474,0.226,0.0595,0.0579,0.9487,1.5232,1.4779,1.4655,0.0921,1.0571,1.4979,1.5398,1.5329,0.2257,0.0632,0.0606,0.0601,0.0602,0.0592,0.0603,0.061,0.0602,0.0597,0.0615,0.0587,0.0595,0.0577 44179s,0.0649,0.0667,0.0627,0.0635,0.0643,0.0627,0.0631,0.0653,0.0634,0.067,0.0635,0.0626,0.061,0.2639,0.3406,0.275,0.2386,0.0935,1.1908,1.4278,1.3299,1.3072,0.2274,0.0583,0.0612,0.4028,0.4537,0.4335,0.3992,0.0945,1.2172,1.4375,1.3652,1.3227,0.219,0.0649,0.0595,0.6083,0.649,0.5942,0.6204,0.0969,1.189,1.4684,1.3963,1.3441,0.2198,0.0636,0.0584,0.8303,0.8844,0.8512,0.8754,0.0926,1.1648,1.5131,1.4488,1.4028,0.2199,0.0634,0.063,0.9663,1.2511,1.1736,1.1538,0.3688,1.1536,1.5402,1.5064,1.4767,0.2271,0.0608,0.0585,0.9556,1.5266,1.477,1.4668,0.092,1.0743,1.5121,1.5501,1.5398,0.2257,0.0634,0.0609,0.0604,0.0604,0.0594,0.0605,0.0613,0.0603,0.06,0.0649,0.0588,0.0595,0.0584 44820s,0.0646,0.0738,0.0629,0.0637,0.0643,0.0628,0.063,0.0653,0.0632,0.0668,0.0634,0.0625,0.0609,0.2639,0.3404,0.2746,0.2383,0.0933,1.1985,1.4302,1.3305,1.3086,0.2274,0.0578,0.0616,0.4027,0.4545,0.4331,0.3995,0.0944,1.2258,1.4398,1.3661,1.3236,0.2188,0.0648,0.0594,0.6081,0.6493,0.5941,0.6209,0.0968,1.2033,1.4708,1.3974,1.3448,0.2199,0.0649,0.0583,0.8308,0.8844,0.8507,0.8759,0.0925,1.1813,1.516,1.4505,1.4045,0.22,0.0632,0.0629,0.9715,1.2522,1.1738,1.1542,0.3808,1.1703,1.5477,1.5085,1.4782,0.2279,0.0601,0.0585,0.9641,1.5299,1.4782,1.4681,0.0918,1.0896,1.5262,1.5584,1.5469,0.2257,0.0634,0.0607,0.0601,0.06,0.0593,0.0602,0.061,0.0601,0.0595,0.0618,0.0584,0.0594,0.0578 45460s,0.0648,0.0668,0.0629,0.0635,0.0642,0.0628,0.063,0.0651,0.0635,0.0667,0.0634,0.0624,0.0608,0.2645,0.3402,0.2744,0.2384,0.0934,1.2047,1.4315,1.3301,1.3092,0.2275,0.0576,0.0616,0.403,0.4537,0.4331,0.4,0.0944,1.2336,1.44,1.3663,1.324,0.2188,0.0648,0.0595,0.6086,0.6499,0.5952,0.6214,0.0968,1.2155,1.4724,1.3972,1.3467,0.2199,0.0616,0.0593,0.8318,0.8841,0.8508,0.8762,0.0926,1.1983,1.5185,1.4507,1.4059,0.2202,0.0629,0.0628,0.9758,1.2527,1.1733,1.1549,0.3922,1.1878,1.5528,1.5104,1.4811,0.2297,0.0589,0.058,0.9707,1.5324,1.4775,1.4678,0.092,1.1063,1.5368,1.5661,1.5532,0.2258,0.0628,0.0606,0.0601,0.0599,0.0592,0.0602,0.0609,0.06,0.0596,0.0604,0.0585,0.0592,0.0575 46100s,0.0649,0.0726,0.0631,0.0637,0.0644,0.0629,0.0629,0.0653,0.0636,0.067,0.0634,0.0626,0.0608,0.2648,0.3408,0.275,0.2387,0.0934,1.2097,1.4324,1.3302,1.3099,0.2276,0.0579,0.0606,0.4037,0.4541,0.4332,0.4003,0.0945,1.2418,1.4417,1.3677,1.3256,0.219,0.0649,0.0594,0.6088,0.6509,0.5953,0.6216,0.0968,1.2262,1.4742,1.3971,1.3471,0.22,0.0614,0.059,0.8326,0.8842,0.8504,0.8765,0.0926,1.2128,1.5216,1.4508,1.4072,0.2202,0.0629,0.063,0.9784,1.2522,1.173,1.156,0.406,1.2034,1.5592,1.5117,1.4827,0.2313,0.06,0.0591,0.9788,1.5338,1.4782,1.4696,0.092,1.1226,1.5472,1.5736,1.5608,0.2258,0.0623,0.0608,0.0601,0.0601,0.0591,0.0604,0.0609,0.0601,0.0597,0.061,0.0586,0.0592,0.0573 46740s,0.0646,0.0665,0.0627,0.0635,0.0642,0.0629,0.0632,0.0652,0.0634,0.0668,0.0634,0.0624,0.0607,0.2648,0.3404,0.2746,0.2385,0.0933,1.2158,1.4345,1.3308,1.3109,0.2276,0.0618,0.0614,0.4042,0.4561,0.4344,0.401,0.0945,1.248,1.4426,1.3672,1.3259,0.2192,0.0648,0.0592,0.6094,0.6505,0.5957,0.6218,0.0967,1.2359,1.4756,1.3975,1.3482,0.2201,0.0628,0.0585,0.8329,0.884,0.8508,0.8773,0.0925,1.2292,1.5236,1.4515,1.4088,0.2202,0.0628,0.0626,0.9827,1.2525,1.1732,1.1564,0.42,1.2196,1.5621,1.5122,1.4844,0.2334,0.0592,0.0588,0.9861,1.5362,1.4774,1.4695,0.092,1.1388,1.5593,1.5802,1.5661,0.2259,0.0618,0.0606,0.06,0.0599,0.0592,0.0602,0.0607,0.0601,0.0596,0.0605,0.0584,0.0592,0.0574 47380s,0.0649,0.0744,0.0628,0.0636,0.0645,0.0628,0.0631,0.0655,0.0634,0.0671,0.0634,0.0625,0.0609,0.2655,0.3414,0.2755,0.2394,0.0935,1.2207,1.4352,1.3303,1.312,0.2278,0.062,0.0612,0.4045,0.4566,0.4348,0.4016,0.0946,1.2548,1.4444,1.3674,1.327,0.2192,0.0649,0.0595,0.6094,0.6503,0.5958,0.6217,0.0968,1.2463,1.4774,1.3979,1.3489,0.2202,0.0603,0.0585,0.8329,0.884,0.8494,0.8781,0.0927,1.243,1.5253,1.4511,1.4094,0.2204,0.0631,0.0629,0.9865,1.2524,1.1731,1.1571,0.4343,1.2361,1.5658,1.5125,1.4855,0.2358,0.059,0.0585,0.9936,1.5366,1.4779,1.4701,0.0922,1.1569,1.5691,1.5851,1.5716,0.226,0.0619,0.0609,0.06,0.0599,0.0592,0.0605,0.061,0.0603,0.0596,0.0605,0.0587,0.0593,0.0571 48021s,0.0648,0.0737,0.0628,0.0634,0.0641,0.0627,0.063,0.0655,0.0632,0.0676,0.0636,0.0625,0.0608,0.2657,0.3413,0.2754,0.2393,0.0934,1.2247,1.436,1.3307,1.3135,0.2277,0.059,0.0613,0.4045,0.4567,0.4348,0.4019,0.0945,1.26,1.4448,1.3671,1.3274,0.2192,0.0648,0.0592,0.6099,0.6502,0.5953,0.6224,0.0967,1.2543,1.4788,1.3975,1.3497,0.2202,0.0629,0.0588,0.8344,0.8842,0.8501,0.8784,0.0925,1.2559,1.5271,1.452,1.4112,0.2202,0.063,0.0626,0.9897,1.2515,1.1721,1.1572,0.4503,1.251,1.5672,1.5132,1.4862,0.2388,0.0588,0.0593,1.0015,1.5381,1.477,1.47,0.092,1.1711,1.5792,1.5908,1.5763,0.2259,0.0615,0.0606,0.06,0.0598,0.0593,0.0602,0.0605,0.0599,0.0596,0.0607,0.0585,0.0592,0.0575 48661s,0.0648,0.0666,0.0626,0.0636,0.0643,0.063,0.063,0.0657,0.0631,0.0672,0.0633,0.0625,0.0609,0.2667,0.3423,0.2767,0.2403,0.0935,1.2277,1.4351,1.3301,1.3134,0.228,0.0582,0.0614,0.4048,0.4562,0.435,0.4022,0.0947,1.2647,1.4453,1.3676,1.3291,0.2193,0.0647,0.0594,0.6105,0.6501,0.596,0.6232,0.0969,1.2625,1.4794,1.3977,1.3511,0.2203,0.0619,0.0589,0.8345,0.8837,0.8498,0.8781,0.0926,1.2661,1.5272,1.4512,1.4118,0.2204,0.0632,0.0628,0.9918,1.2521,1.1726,1.1582,0.4622,1.2666,1.5718,1.5143,1.4877,0.2428,0.0598,0.0583,1.0084,1.538,1.4761,1.4701,0.0921,1.1871,1.5871,1.5948,1.58,0.2262,0.0618,0.0608,0.06,0.0597,0.0592,0.0603,0.0607,0.06,0.0596,0.0614,0.0585,0.0593,0.0572 49301s,0.0648,0.0742,0.0628,0.0637,0.0644,0.063,0.0631,0.0654,0.0633,0.067,0.0635,0.0626,0.061,0.2672,0.3423,0.2764,0.2406,0.0936,1.2308,1.4368,1.3303,1.3145,0.2281,0.0601,0.0614,0.4052,0.4562,0.4349,0.4025,0.0946,1.2698,1.4463,1.3672,1.3291,0.2194,0.065,0.0594,0.611,0.6505,0.5962,0.6237,0.097,1.2701,1.48,1.3976,1.3513,0.2204,0.0618,0.0593,0.835,0.8842,0.8495,0.8786,0.0928,1.2772,1.5289,1.4516,1.4121,0.2205,0.0632,0.0625,0.994,1.2522,1.1724,1.1586,0.478,1.2799,1.5737,1.5151,1.4886,0.2475,0.0593,0.0582,1.0168,1.5378,1.4757,1.4719,0.0922,1.2027,1.5969,1.5995,1.5839,0.2262,0.0617,0.0609,0.0602,0.0599,0.0592,0.06,0.0606,0.06,0.0596,0.0601,0.0586,0.0593,0.0575 49941s,0.0648,0.0669,0.0628,0.0638,0.0643,0.063,0.0629,0.0654,0.063,0.067,0.0637,0.0625,0.0608,0.2673,0.3425,0.2765,0.2404,0.0935,1.2341,1.4374,1.3299,1.3153,0.2281,0.0611,0.0609,0.4054,0.4565,0.435,0.4031,0.0948,1.2738,1.4476,1.3678,1.3301,0.2194,0.0648,0.0594,0.6115,0.6508,0.5969,0.6241,0.0969,1.2763,1.4813,1.3979,1.3523,0.2204,0.0609,0.0588,0.8349,0.8844,0.8494,0.8787,0.0928,1.2863,1.5296,1.4517,1.4133,0.2207,0.0631,0.0625,0.9961,1.253,1.1727,1.1591,0.4943,1.2947,1.5749,1.5151,1.4899,0.2527,0.0588,0.0581,1.0233,1.5385,1.4755,1.4717,0.0922,1.2177,1.6058,1.6031,1.5883,0.2262,0.0617,0.0608,0.0601,0.0597,0.0592,0.0601,0.0606,0.0599,0.0594,0.0618,0.0586,0.0593,0.0577 50582s,0.0649,0.0741,0.0629,0.0635,0.0642,0.0629,0.0628,0.0651,0.0629,0.0668,0.0635,0.0623,0.0607,0.2676,0.3427,0.277,0.2409,0.0936,1.2356,1.4367,1.3295,1.316,0.2282,0.0579,0.0615,0.405,0.456,0.4351,0.4036,0.0946,1.276,1.4482,1.3664,1.3304,0.2195,0.0649,0.059,0.6112,0.6514,0.5966,0.6245,0.0969,1.2817,1.4817,1.3978,1.3529,0.2204,0.0611,0.0581,0.836,0.8841,0.8491,0.8795,0.0927,1.2951,1.5309,1.4516,1.4134,0.2206,0.0629,0.0625,0.9984,1.252,1.1719,1.1592,0.5122,1.3065,1.5763,1.5155,1.49,0.2585,0.0596,0.0586,1.0301,1.539,1.4752,1.4721,0.0921,1.2324,1.6136,1.6055,1.5907,0.2262,0.0614,0.0609,0.06,0.0597,0.0591,0.0603,0.0606,0.0599,0.0595,0.0601,0.0585,0.0592,0.058 51222s,0.0647,0.0666,0.0627,0.0635,0.0642,0.063,0.0627,0.0655,0.0633,0.0667,0.0631,0.0623,0.0607,0.2682,0.3426,0.2769,0.2409,0.0935,1.2385,1.4395,1.3298,1.3174,0.2283,0.0587,0.0611,0.4061,0.4588,0.4361,0.4045,0.0947,1.279,1.4486,1.3674,1.3311,0.2196,0.0648,0.0592,0.6115,0.6518,0.5969,0.625,0.097,1.2875,1.4822,1.3977,1.353,0.2207,0.063,0.0588,0.8369,0.8843,0.8491,0.8804,0.0928,1.3035,1.5328,1.452,1.4149,0.2207,0.063,0.0625,1.0001,1.253,1.1728,1.1607,0.5289,1.3187,1.5791,1.5162,1.4918,0.2654,0.0587,0.058,1.0368,1.54,1.4753,1.4718,0.0923,1.247,1.6211,1.6085,1.5943,0.2264,0.0616,0.0608,0.0598,0.0597,0.0593,0.06,0.0604,0.0598,0.0594,0.0609,0.0584,0.0591,0.0577 51862s,0.065,0.0741,0.0627,0.0636,0.0642,0.0629,0.0629,0.0655,0.0629,0.067,0.0633,0.0627,0.0609,0.2685,0.3429,0.2772,0.2413,0.0934,1.2395,1.4388,1.3298,1.3178,0.2285,0.0591,0.0614,0.406,0.4584,0.436,0.4048,0.0947,1.2809,1.4491,1.3668,1.3312,0.2197,0.0649,0.0593,0.6122,0.6514,0.5969,0.6259,0.0971,1.292,1.4835,1.398,1.3534,0.2207,0.0602,0.0589,0.837,0.8839,0.8496,0.8806,0.0928,1.3108,1.5334,1.4518,1.4157,0.2207,0.063,0.0625,1.0015,1.2528,1.1716,1.1603,0.5478,1.3292,1.5792,1.5153,1.493,0.2731,0.0594,0.0584,1.0447,1.5397,1.4738,1.4723,0.0922,1.2611,1.6278,1.6091,1.5952,0.2264,0.0616,0.0607,0.06,0.0597,0.0593,0.0601,0.0606,0.0597,0.0594,0.0593,0.0583,0.0591,0.0572 52502s,0.0647,0.0667,0.0627,0.0635,0.0639,0.0628,0.0628,0.0653,0.063,0.0669,0.0633,0.0625,0.0607,0.2691,0.3432,0.2775,0.2414,0.0936,1.2418,1.4391,1.3292,1.3182,0.2285,0.0579,0.0612,0.4067,0.4581,0.4367,0.4049,0.0946,1.2841,1.4496,1.3671,1.3324,0.2197,0.065,0.0593,0.6124,0.6513,0.597,0.6265,0.0969,1.2951,1.4838,1.3971,1.3541,0.2206,0.0606,0.0583,0.8381,0.884,0.8496,0.881,0.0928,1.3176,1.5331,1.4521,1.4162,0.2208,0.0628,0.0624,1.003,1.2528,1.1716,1.1606,0.566,1.3389,1.5805,1.5155,1.4927,0.2815,0.0598,0.0584,1.0517,1.5394,1.4735,1.4726,0.0921,1.2743,1.6341,1.6105,1.597,0.2265,0.0615,0.0608,0.06,0.0596,0.0592,0.06,0.0605,0.0595,0.0594,0.0593,0.0585,0.0591,0.0575 53142s,0.0648,0.0669,0.063,0.0637,0.0641,0.0628,0.0631,0.0652,0.0631,0.0675,0.0636,0.0625,0.0611,0.2702,0.3441,0.2785,0.2423,0.0937,1.2432,1.4396,1.329,1.319,0.2288,0.0596,0.0611,0.407,0.4585,0.4374,0.4056,0.0948,1.2868,1.4513,1.3674,1.3337,0.2199,0.065,0.0595,0.6133,0.6513,0.5969,0.6274,0.0971,1.2993,1.4845,1.3983,1.3556,0.221,0.0603,0.0586,0.8388,0.8839,0.8498,0.8808,0.0929,1.3238,1.5351,1.4525,1.4171,0.221,0.063,0.0626,1.0036,1.2524,1.172,1.1614,0.5869,1.3478,1.582,1.5158,1.4934,0.2937,0.0596,0.058,1.0592,1.54,1.4752,1.4747,0.0922,1.2895,1.6398,1.6135,1.6007,0.2267,0.0617,0.0608,0.06,0.0596,0.059,0.0601,0.0606,0.0598,0.0595,0.0598,0.0585,0.059,0.0572 53783s,0.0649,0.0733,0.0628,0.0636,0.0643,0.0629,0.0629,0.0652,0.0631,0.0669,0.0636,0.0625,0.0608,0.2705,0.3441,0.2785,0.2423,0.0936,1.2444,1.4401,1.329,1.3204,0.2287,0.0589,0.0612,0.4069,0.4582,0.4376,0.4057,0.0947,1.288,1.4515,1.3664,1.3334,0.2199,0.0649,0.0593,0.6138,0.652,0.5974,0.6266,0.0971,1.3024,1.4848,1.3977,1.3552,0.2209,0.0601,0.0587,0.8394,0.8841,0.8495,0.8813,0.0929,1.3293,1.5347,1.4528,1.417,0.2209,0.0631,0.0622,1.0046,1.253,1.1718,1.1618,0.6066,1.3551,1.5833,1.5156,1.4946,0.304,0.0599,0.0588,1.0657,1.5403,1.4745,1.4738,0.0923,1.3017,1.6448,1.6142,1.6005,0.2265,0.0613,0.0607,0.0599,0.0596,0.0591,0.06,0.0605,0.0595,0.0593,0.0595,0.0585,0.0591,0.0579 54423s,0.0649,0.0667,0.0629,0.0635,0.0642,0.0631,0.0629,0.0654,0.0632,0.0668,0.0633,0.0624,0.0608,0.2713,0.3445,0.2791,0.2431,0.0936,1.2454,1.4392,1.3285,1.3197,0.2289,0.0577,0.061,0.4068,0.4588,0.4373,0.4055,0.0949,1.2895,1.4506,1.3655,1.334,0.2199,0.0648,0.0595,0.6147,0.6515,0.5973,0.6277,0.097,1.3038,1.4837,1.3968,1.3557,0.221,0.0607,0.0581,0.8394,0.8841,0.8495,0.8813,0.0929,1.3331,1.5344,1.4508,1.4177,0.221,0.063,0.0627,1.0048,1.2519,1.1711,1.1612,0.6264,1.3629,1.583,1.5138,1.4939,0.3164,0.0615,0.058,1.073,1.54,1.4736,1.473,0.0921,1.3141,1.6473,1.614,1.6017,0.2267,0.0614,0.0608,0.0599,0.0595,0.0592,0.06,0.0606,0.0594,0.0593,0.0596,0.0585,0.0588,0.0572 55063s,0.0651,0.0745,0.0631,0.0638,0.0645,0.063,0.063,0.0654,0.0631,0.0668,0.0634,0.0626,0.0609,0.2713,0.3441,0.2785,0.2426,0.0935,1.2467,1.4416,1.3293,1.3215,0.2291,0.06,0.0609,0.4073,0.459,0.4373,0.4063,0.0949,1.2912,1.4514,1.3669,1.3349,0.22,0.0647,0.0592,0.6151,0.6521,0.5976,0.6273,0.0971,1.3065,1.4851,1.3974,1.3565,0.2212,0.0615,0.0578,0.84,0.8842,0.8497,0.8815,0.093,1.3387,1.5351,1.4517,1.4182,0.2213,0.0631,0.0626,1.0067,1.2536,1.1721,1.1626,0.6473,1.3702,1.5848,1.516,1.4956,0.3282,0.0592,0.0583,1.0804,1.5413,1.4737,1.4749,0.0924,1.3272,1.6542,1.617,1.604,0.2268,0.0614,0.061,0.06,0.0596,0.0591,0.0601,0.0605,0.0596,0.0593,0.0596,0.0584,0.0592,0.058 55706s,0.0648,0.0666,0.0628,0.0635,0.0639,0.0627,0.0629,0.0654,0.0631,0.0669,0.0631,0.0624,0.0608,0.2715,0.3443,0.2789,0.243,0.0936,1.247,1.4408,1.3286,1.3221,0.2291,0.0606,0.0613,0.4082,0.4594,0.438,0.4065,0.0948,1.2914,1.4507,1.3657,1.334,0.2201,0.0648,0.0596,0.6155,0.6532,0.5985,0.6277,0.0971,1.3083,1.485,1.3963,1.3552,0.2212,0.0619,0.0579,0.8407,0.884,0.8498,0.8819,0.093,1.3418,1.5353,1.4513,1.4187,0.2213,0.0627,0.0627,1.006,1.253,1.1719,1.1631,0.6682,1.3762,1.5839,1.5148,1.4957,0.3409,0.0593,0.0584,1.0864,1.5399,1.4727,1.4743,0.0924,1.3393,1.6541,1.6154,1.6033,0.2269,0.0615,0.0609,0.06,0.0597,0.0591,0.0601,0.0607,0.0595,0.0593,0.0596,0.0585,0.0591,0.058 56346s,0.0648,0.0668,0.0629,0.0636,0.0641,0.0628,0.0627,0.065,0.0629,0.0667,0.0631,0.0622,0.0609,0.272,0.3448,0.2791,0.2432,0.0937,1.2473,1.4411,1.3284,1.3224,0.2293,0.0625,0.06,0.4082,0.4586,0.4378,0.4067,0.0949,1.2934,1.4525,1.366,1.3358,0.2201,0.0647,0.0594,0.616,0.653,0.5986,0.6281,0.0972,1.3104,1.4855,1.3959,1.3574,0.2213,0.0613,0.0588,0.8418,0.8843,0.8495,0.8829,0.093,1.3456,1.5366,1.452,1.4192,0.2212,0.0628,0.0625,1.0062,1.2533,1.1715,1.1635,0.69,1.3825,1.5858,1.5149,1.4961,0.3554,0.0593,0.0588,1.0926,1.5404,1.4734,1.475,0.0923,1.3508,1.6585,1.6179,1.6051,0.2268,0.0614,0.0608,0.06,0.0596,0.059,0.0599,0.0605,0.0593,0.0592,0.0593,0.0585,0.059,0.0577 56987s,0.0649,0.0737,0.0628,0.0636,0.0643,0.0629,0.0627,0.065,0.0627,0.0667,0.063,0.0623,0.0609,0.2726,0.345,0.2789,0.2434,0.0937,1.249,1.4412,1.3282,1.3235,0.2295,0.0591,0.0611,0.408,0.46,0.4383,0.4071,0.0949,1.2942,1.4519,1.3657,1.336,0.2202,0.0648,0.0596,0.6159,0.653,0.5982,0.6285,0.0972,1.3125,1.4849,1.3961,1.3574,0.2214,0.0618,0.0583,0.8424,0.8841,0.8497,0.8836,0.093,1.3487,1.5369,1.4517,1.4196,0.2213,0.0628,0.0625,1.0069,1.254,1.1719,1.1638,0.7109,1.3879,1.5852,1.5152,1.4965,0.3683,0.0607,0.0583,1.0978,1.5398,1.4729,1.475,0.0924,1.3628,1.6596,1.6176,1.6063,0.227,0.0614,0.0607,0.0599,0.0596,0.0591,0.06,0.0604,0.0595,0.0593,0.0593,0.0585,0.0589,0.058 57627s,0.0649,0.0712,0.0629,0.0636,0.0639,0.0629,0.0626,0.0651,0.0631,0.0669,0.0632,0.0625,0.0609,0.2734,0.3453,0.28,0.2443,0.0938,1.2484,1.4413,1.3281,1.3235,0.2296,0.0624,0.0611,0.4087,0.4606,0.4392,0.4079,0.095,1.2948,1.4518,1.3654,1.3363,0.2204,0.0648,0.0595,0.6168,0.6527,0.5988,0.6292,0.0974,1.3135,1.4857,1.3966,1.358,0.2215,0.0609,0.0582,0.8434,0.8845,0.8498,0.884,0.0931,1.3508,1.5362,1.4512,1.4204,0.2215,0.0628,0.0624,1.0067,1.254,1.1714,1.1639,0.734,1.3921,1.5857,1.5156,1.4962,0.3839,0.059,0.0596,1.1036,1.5395,1.4729,1.4754,0.0924,1.3733,1.663,1.6189,1.6068,0.2271,0.0613,0.0608,0.0599,0.0596,0.0592,0.06,0.0605,0.0594,0.0593,0.0594,0.0585,0.059,0.0579 58267s,0.0647,0.0686,0.0629,0.0635,0.0642,0.0629,0.0627,0.0651,0.0629,0.0673,0.0632,0.0624,0.061,0.2739,0.3461,0.2808,0.2448,0.0939,1.2482,1.4409,1.3271,1.3239,0.2299,0.0581,0.0612,0.4084,0.4604,0.4389,0.408,0.095,1.2955,1.453,1.3652,1.337,0.2204,0.0649,0.0596,0.6171,0.6523,0.5993,0.6295,0.0973,1.3149,1.4863,1.3966,1.3597,0.2215,0.0628,0.0594,0.8434,0.8844,0.8501,0.8845,0.0931,1.353,1.5371,1.4512,1.4207,0.2215,0.0626,0.0624,1.0071,1.2538,1.1713,1.1642,0.758,1.3963,1.5857,1.5157,1.4968,0.3997,0.0598,0.0579,1.1099,1.5408,1.4731,1.4758,0.0925,1.3845,1.6644,1.6187,1.6062,0.2271,0.0611,0.0608,0.0599,0.0594,0.059,0.06,0.0604,0.0595,0.0593,0.0595,0.0585,0.059,0.0573 58907s,0.0647,0.0668,0.0627,0.0635,0.0641,0.063,0.0629,0.065,0.0631,0.0667,0.063,0.0624,0.061,0.2739,0.3458,0.2804,0.2445,0.0938,1.2488,1.4414,1.3275,1.3246,0.23,0.0577,0.061,0.4079,0.4601,0.4389,0.4078,0.0949,1.2964,1.4523,1.3655,1.3376,0.2204,0.0647,0.0595,0.6171,0.6532,0.5998,0.6287,0.0973,1.3151,1.4858,1.3957,1.359,0.2215,0.0621,0.0586,0.8434,0.8845,0.8497,0.8842,0.0931,1.3541,1.5375,1.451,1.4199,0.2215,0.0625,0.0625,1.0072,1.2537,1.1712,1.1647,0.7801,1.3999,1.5862,1.5147,1.4969,0.417,0.0606,0.0586,1.1149,1.5403,1.4725,1.4767,0.0924,1.3952,1.6645,1.6187,1.6069,0.2271,0.0612,0.0605,0.0598,0.0596,0.0591,0.06,0.0602,0.0592,0.0592,0.0593,0.0584,0.0589,0.0571 59547s,0.0652,0.0742,0.063,0.0637,0.0643,0.063,0.0626,0.0653,0.0632,0.0668,0.0633,0.0628,0.0609,0.2746,0.3461,0.2808,0.245,0.0938,1.249,1.441,1.327,1.3257,0.2303,0.0578,0.0616,0.4083,0.4603,0.4392,0.4085,0.095,1.2963,1.4528,1.3656,1.3376,0.2204,0.0649,0.0597,0.6178,0.6539,0.6002,0.6293,0.0972,1.3159,1.4863,1.3965,1.3598,0.2219,0.0618,0.058,0.8448,0.8848,0.8496,0.885,0.0931,1.3566,1.5369,1.4505,1.4216,0.2217,0.0627,0.0623,1.0085,1.2543,1.1719,1.1658,0.8034,1.4038,1.5868,1.5146,1.4981,0.4314,0.0601,0.0578,1.1216,1.5406,1.4723,1.4764,0.0925,1.4052,1.6684,1.6181,1.6091,0.2273,0.0613,0.0607,0.0599,0.0594,0.0589,0.0599,0.0604,0.0594,0.0593,0.0594,0.0585,0.059,0.0578 60188s,0.0648,0.0745,0.0628,0.0634,0.0642,0.0628,0.0628,0.0652,0.0629,0.0665,0.063,0.0625,0.0608,0.2748,0.3464,0.2807,0.2452,0.0937,1.2489,1.4413,1.3271,1.326,0.2305,0.0625,0.0607,0.4088,0.4609,0.439,0.4087,0.0949,1.2971,1.4535,1.3651,1.3378,0.2205,0.0647,0.0593,0.6179,0.6542,0.6001,0.6302,0.0973,1.3169,1.4871,1.3952,1.3607,0.2217,0.0621,0.0581,0.8464,0.8848,0.8495,0.8853,0.0933,1.3573,1.5379,1.4505,1.4214,0.2217,0.0624,0.0625,1.0088,1.2542,1.1711,1.1657,0.8278,1.4063,1.5884,1.514,1.4979,0.4485,0.0601,0.0581,1.1277,1.5403,1.4727,1.4773,0.0924,1.4153,1.67,1.6207,1.6094,0.2273,0.0612,0.0609,0.06,0.0595,0.0589,0.06,0.0603,0.0594,0.0592,0.0593,0.0584,0.0591,0.0573 60828s,0.0647,0.067,0.0628,0.0635,0.0642,0.0627,0.0626,0.0651,0.063,0.0668,0.0632,0.063,0.0608,0.2749,0.3465,0.2812,0.2455,0.0938,1.2494,1.4414,1.3267,1.3265,0.2306,0.0597,0.0607,0.4088,0.4618,0.4402,0.4095,0.095,1.2969,1.453,1.3651,1.338,0.2207,0.0647,0.0595,0.6182,0.6546,0.6002,0.6305,0.0973,1.3169,1.4866,1.3957,1.3604,0.222,0.0594,0.0584,0.8459,0.8852,0.8497,0.8855,0.0934,1.3581,1.5372,1.45,1.4218,0.2218,0.0625,0.0624,1.0087,1.2545,1.171,1.1663,0.8505,1.4091,1.5882,1.5149,1.4983,0.4658,0.0598,0.0594,1.1336,1.54,1.4722,1.4762,0.0924,1.4243,1.6697,1.6193,1.6086,0.2274,0.0612,0.061,0.06,0.0596,0.059,0.06,0.0604,0.0595,0.0593,0.0594,0.0585,0.059,0.0571 61468s,0.0648,0.0743,0.0629,0.0635,0.0643,0.063,0.0626,0.0653,0.063,0.0668,0.0632,0.0624,0.061,0.2752,0.3464,0.2811,0.2456,0.0939,1.2497,1.4425,1.3273,1.3271,0.231,0.0581,0.0613,0.4093,0.463,0.4409,0.4102,0.0951,1.2971,1.453,1.3649,1.3395,0.2209,0.0649,0.0596,0.6183,0.6545,0.6004,0.6311,0.0975,1.3181,1.487,1.3953,1.3615,0.2221,0.0631,0.0584,0.8471,0.8855,0.8497,0.8866,0.0934,1.3596,1.5391,1.4496,1.4227,0.2221,0.0625,0.0627,1.0097,1.2546,1.1722,1.1664,0.8748,1.411,1.5879,1.5149,1.4987,0.4835,0.0599,0.058,1.1404,1.5405,1.4718,1.4775,0.0926,1.4327,1.6713,1.6187,1.6096,0.2276,0.0617,0.061,0.06,0.0595,0.0589,0.0599,0.0602,0.0594,0.0593,0.0595,0.0586,0.0588,0.0575 62108s,0.065,0.0667,0.0631,0.0637,0.0644,0.063,0.0626,0.0653,0.0631,0.0669,0.0633,0.0624,0.061,0.2754,0.3465,0.2813,0.2458,0.0939,1.2495,1.4422,1.3272,1.3274,0.2312,0.061,0.0615,0.4093,0.4623,0.441,0.4102,0.0952,1.2971,1.4525,1.3645,1.3395,0.221,0.0652,0.0597,0.6193,0.6548,0.601,0.6319,0.0975,1.318,1.4875,1.3952,1.3616,0.2222,0.0597,0.059,0.8477,0.8854,0.8503,0.8866,0.0936,1.361,1.5385,1.4505,1.4219,0.2222,0.0624,0.0625,1.0097,1.2553,1.1713,1.1669,0.9028,1.4132,1.5875,1.514,1.4994,0.5025,0.0598,0.0597,1.149,1.5403,1.4726,1.4778,0.0926,1.4416,1.6719,1.6205,1.6091,0.2278,0.0616,0.0609,0.0601,0.0594,0.0592,0.0601,0.0603,0.0593,0.0594,0.0595,0.0587,0.059,0.057 62749s,0.0651,0.0667,0.063,0.0638,0.0642,0.0627,0.0627,0.0651,0.063,0.0669,0.0634,0.0624,0.061,0.276,0.3473,0.282,0.2465,0.094,1.2489,1.4413,1.3268,1.328,0.2313,0.0605,0.0612,0.41,0.4632,0.4416,0.4108,0.0952,1.2966,1.4531,1.3636,1.3392,0.2211,0.0647,0.0597,0.6194,0.6543,0.6008,0.6324,0.0974,1.319,1.4871,1.395,1.3618,0.222,0.0633,0.058,0.8482,0.8855,0.85,0.8866,0.0932,1.3614,1.5386,1.4502,1.4232,0.2221,0.0626,0.0623,1.0101,1.2546,1.1715,1.1665,0.9276,1.4142,1.5875,1.5139,1.4988,0.5225,0.0593,0.059,1.1547,1.5406,1.4718,1.477,0.0925,1.4491,1.6713,1.6192,1.6092,0.2278,0.0617,0.0607,0.0599,0.0594,0.059,0.0598,0.0601,0.0593,0.0593,0.0595,0.0586,0.0588,0.0573 63389s,0.065,0.0738,0.0629,0.0637,0.0642,0.0628,0.0625,0.065,0.0629,0.0673,0.0632,0.0624,0.0609,0.2761,0.3474,0.2823,0.2465,0.0939,1.2498,1.4429,1.3279,1.3289,0.2316,0.0623,0.0614,0.4104,0.4636,0.4421,0.4113,0.0951,1.2974,1.4534,1.365,1.3402,0.2211,0.0647,0.0597,0.6201,0.6549,0.6013,0.6329,0.0976,1.3199,1.4879,1.3948,1.3623,0.2223,0.0606,0.0587,0.8492,0.8854,0.8497,0.8872,0.0934,1.3619,1.5396,1.4499,1.4232,0.2223,0.0624,0.0625,1.0113,1.2549,1.1716,1.1671,0.9557,1.4167,1.5892,1.5138,1.5003,0.5422,0.0585,0.0599,1.1625,1.5416,1.4724,1.4788,0.0926,1.4569,1.6739,1.6206,1.612,0.2281,0.0619,0.0608,0.0599,0.0594,0.059,0.0599,0.0603,0.0593,0.0592,0.0594,0.0587,0.0589,0.0571 64029s,0.0648,0.07,0.0627,0.0637,0.064,0.0629,0.0624,0.065,0.0631,0.0666,0.0631,0.0626,0.0609,0.2762,0.3472,0.2821,0.2465,0.0941,1.25,1.4436,1.3266,1.3292,0.2319,0.0639,0.0623,0.4099,0.463,0.4419,0.4111,0.0952,1.2976,1.454,1.3644,1.341,0.2212,0.0647,0.0597,0.6199,0.655,0.6012,0.6335,0.0976,1.3202,1.488,1.3949,1.3625,0.2224,0.0616,0.059,0.8493,0.8852,0.8503,0.8877,0.0935,1.3635,1.5394,1.4502,1.4246,0.2222,0.0623,0.0624,1.0115,1.2551,1.1713,1.1676,0.9818,1.4174,1.5892,1.5135,1.5004,0.5629,0.0591,0.0585,1.1688,1.5411,1.4725,1.4787,0.0926,1.464,1.6745,1.6199,1.6122,0.2282,0.0615,0.0607,0.06,0.0595,0.0591,0.0599,0.0601,0.0591,0.0593,0.0597,0.0585,0.0588,0.0577 64669s,0.0651,0.0668,0.063,0.0639,0.0643,0.0628,0.0626,0.0653,0.0631,0.0668,0.0632,0.0626,0.061,0.2768,0.3477,0.2827,0.247,0.094,1.249,1.4417,1.3267,1.3288,0.232,0.0586,0.0611,0.4103,0.4628,0.4417,0.4113,0.0952,1.2967,1.453,1.364,1.3406,0.2213,0.0648,0.0595,0.6207,0.6545,0.6014,0.6335,0.0976,1.3192,1.4874,1.3939,1.3626,0.2224,0.0638,0.0588,0.8497,0.8854,0.8503,0.8875,0.0933,1.3628,1.5375,1.45,1.4232,0.2224,0.0624,0.0623,1.0121,1.2549,1.1717,1.1684,1.0071,1.4186,1.5881,1.5128,1.4994,0.5829,0.0598,0.0578,1.1752,1.5408,1.4724,1.4793,0.0926,1.47,1.674,1.6184,1.6105,0.2284,0.0614,0.0606,0.06,0.0595,0.0589,0.0599,0.06,0.0592,0.0593,0.0594,0.0586,0.0588,0.0574 65309s,0.0653,0.0749,0.063,0.0637,0.0641,0.0629,0.0624,0.0652,0.0631,0.0668,0.0632,0.0625,0.0609,0.2772,0.3479,0.2829,0.2472,0.0941,1.2493,1.4422,1.3267,1.3301,0.2322,0.0617,0.0593,0.4103,0.4625,0.4419,0.4116,0.0951,1.2968,1.453,1.3638,1.3408,0.2212,0.0646,0.0596,0.6204,0.6555,0.602,0.6334,0.0976,1.3184,1.4868,1.3936,1.3619,0.2225,0.062,0.0582,0.8495,0.8847,0.8492,0.887,0.0935,1.3625,1.5381,1.4481,1.4226,0.2225,0.0624,0.0622,1.0124,1.2548,1.1714,1.1677,1.0318,1.4187,1.5878,1.5123,1.4993,0.6025,0.0607,0.0585,1.1817,1.5394,1.4715,1.4788,0.0926,1.4764,1.6751,1.6182,1.6102,0.2284,0.0612,0.0609,0.0601,0.0597,0.059,0.0599,0.0602,0.0592,0.0592,0.0595,0.0586,0.059,0.0576 65950s,0.0648,0.0669,0.0628,0.0635,0.064,0.0626,0.0624,0.0652,0.0627,0.0666,0.0632,0.0626,0.0608,0.2776,0.3482,0.2833,0.2476,0.094,1.2492,1.4426,1.3269,1.3302,0.2323,0.0587,0.0615,0.4105,0.4637,0.4425,0.4118,0.095,1.2966,1.4532,1.363,1.3406,0.2213,0.0646,0.0593,0.6208,0.6552,0.6017,0.6336,0.0976,1.3191,1.4871,1.3936,1.3625,0.2226,0.0604,0.0582,0.8509,0.8849,0.8484,0.888,0.0934,1.3633,1.5381,1.4489,1.4237,0.2224,0.0623,0.0622,1.0128,1.2547,1.1711,1.1675,1.0584,1.4194,1.588,1.5118,1.4996,0.6239,0.0595,0.0584,1.188,1.5408,1.4706,1.4796,0.0926,1.4821,1.6761,1.6186,1.6111,0.2287,0.0611,0.0607,0.06,0.0595,0.059,0.0599,0.0602,0.0592,0.0593,0.0595,0.0585,0.0589,0.0574 66590s,0.0648,0.0669,0.0628,0.0638,0.0641,0.0628,0.0626,0.0651,0.0629,0.0668,0.063,0.0624,0.061,0.2784,0.3486,0.2837,0.2481,0.094,1.2491,1.4415,1.3261,1.3308,0.2324,0.0617,0.0607,0.4106,0.4633,0.4427,0.412,0.0951,1.2973,1.4535,1.3636,1.3413,0.2214,0.0645,0.0595,0.6205,0.6556,0.6014,0.6339,0.0975,1.3191,1.4877,1.3934,1.3624,0.2227,0.0596,0.0584,0.8515,0.8851,0.8491,0.8878,0.0934,1.3639,1.5387,1.449,1.4245,0.2225,0.0622,0.0622,1.0135,1.2552,1.1714,1.1685,1.0835,1.4208,1.5883,1.5125,1.5003,0.6449,0.0604,0.0595,1.1947,1.5412,1.472,1.4796,0.0927,1.4883,1.6771,1.6195,1.6117,0.2289,0.0612,0.0608,0.06,0.0596,0.059,0.0599,0.0603,0.0594,0.0593,0.0595,0.0586,0.059,0.0582 67230s,0.0648,0.0672,0.0628,0.0636,0.0642,0.0629,0.0625,0.0653,0.063,0.0668,0.0632,0.0625,0.0608,0.2784,0.3484,0.2836,0.248,0.0941,1.2489,1.4427,1.3263,1.3313,0.2326,0.0625,0.0611,0.4116,0.4655,0.4429,0.4128,0.0951,1.2964,1.4523,1.3625,1.341,0.2216,0.0646,0.0595,0.6213,0.6556,0.6009,0.6342,0.0976,1.3196,1.4874,1.3934,1.3629,0.2228,0.0631,0.0583,0.8514,0.8854,0.8494,0.888,0.0935,1.3637,1.5384,1.4487,1.4237,0.2227,0.0623,0.0622,1.014,1.2549,1.172,1.1681,1.107,1.4211,1.5883,1.5118,1.5002,0.6668,0.059,0.0595,1.1999,1.5403,1.4699,1.4785,0.0928,1.4926,1.6763,1.6186,1.6103,0.2293,0.0613,0.0607,0.06,0.0595,0.0589,0.0598,0.0604,0.0592,0.0594,0.0596,0.0586,0.0588,0.0579 67870s,0.0653,0.0668,0.0628,0.0637,0.064,0.0626,0.0624,0.065,0.0629,0.0668,0.0629,0.0625,0.0606,0.2788,0.349,0.2843,0.2485,0.0941,1.2487,1.4413,1.3261,1.3308,0.2328,0.0605,0.0608,0.4118,0.4646,0.443,0.4127,0.0951,1.2962,1.4527,1.363,1.3415,0.2216,0.0644,0.0593,0.6215,0.6554,0.6012,0.6343,0.0976,1.3189,1.4874,1.3933,1.3633,0.2227,0.062,0.0601,0.8522,0.8855,0.8498,0.8886,0.0934,1.3633,1.5384,1.4479,1.4244,0.2227,0.0625,0.0618,1.0142,1.2549,1.1714,1.1687,1.1294,1.4213,1.5883,1.5115,1.501,0.6888,0.0609,0.0577,1.2061,1.5404,1.4707,1.4791,0.0926,1.4986,1.6751,1.618,1.6111,0.2295,0.061,0.0604,0.0597,0.0594,0.0588,0.0596,0.0601,0.0591,0.0592,0.0606,0.0586,0.0586,0.0575 68510s,0.0652,0.0744,0.0629,0.0635,0.064,0.0626,0.0625,0.0652,0.0628,0.0668,0.0631,0.0624,0.061,0.2791,0.3491,0.2843,0.2486,0.0942,1.2488,1.4422,1.3266,1.3318,0.2329,0.0609,0.0631,0.412,0.4647,0.4438,0.4131,0.0953,1.2968,1.4539,1.3634,1.3428,0.2217,0.0643,0.0594,0.6218,0.6551,0.6015,0.6355,0.0975,1.3197,1.4879,1.3934,1.3652,0.2229,0.0612,0.0583,0.853,0.8853,0.8496,0.8891,0.0935,1.3642,1.5393,1.4491,1.426,0.2229,0.0622,0.0621,1.0148,1.2554,1.1719,1.169,1.1524,1.4223,1.5883,1.512,1.5015,0.712,0.0591,0.0592,1.2121,1.5415,1.4723,1.481,0.0928,1.5038,1.6779,1.6189,1.6129,0.23,0.061,0.0605,0.0599,0.0597,0.0589,0.0598,0.0599,0.0592,0.0594,0.0601,0.0587,0.0586,0.0574 69154s,0.065,0.0669,0.063,0.0638,0.0641,0.0628,0.0625,0.0651,0.063,0.0669,0.0632,0.0625,0.061,0.2796,0.3495,0.2849,0.2493,0.0942,1.2492,1.4419,1.327,1.3317,0.2331,0.058,0.0612,0.4118,0.4653,0.4438,0.4135,0.0954,1.2968,1.4533,1.3632,1.3428,0.2218,0.0645,0.0594,0.6223,0.6562,0.6019,0.6358,0.0977,1.3189,1.4874,1.3931,1.3648,0.2229,0.0616,0.0582,0.8532,0.8856,0.8495,0.889,0.0936,1.3641,1.5387,1.4476,1.4256,0.2229,0.0624,0.0621,1.0152,1.2557,1.1719,1.1695,1.1714,1.4221,1.5884,1.5113,1.5014,0.7346,0.0594,0.0601,1.2174,1.5409,1.4713,1.4801,0.0928,1.5085,1.677,1.6192,1.6121,0.2301,0.061,0.0606,0.0599,0.0595,0.0589,0.0598,0.06,0.0592,0.0593,0.0601,0.0586,0.0589,0.0574 69794s,0.0649,0.0747,0.063,0.0637,0.064,0.0627,0.0626,0.0649,0.0631,0.0667,0.0632,0.0625,0.0611,0.2796,0.3496,0.2853,0.2494,0.0944,1.2491,1.4422,1.3263,1.3324,0.233,0.0603,0.0623,0.4122,0.4649,0.444,0.414,0.0953,1.2967,1.4538,1.3639,1.3432,0.2219,0.0644,0.0597,0.6219,0.6563,0.6022,0.6361,0.0977,1.3185,1.4884,1.3933,1.3639,0.2231,0.0619,0.0579,0.8536,0.8855,0.8498,0.8899,0.0937,1.3643,1.5392,1.4486,1.4255,0.223,0.0623,0.062,1.016,1.2559,1.1716,1.1698,1.1873,1.4223,1.589,1.5112,1.5021,0.7575,0.0588,0.0584,1.2238,1.5402,1.4718,1.4809,0.0929,1.512,1.677,1.6185,1.6125,0.2302,0.061,0.0609,0.06,0.0594,0.0591,0.0598,0.0601,0.0594,0.0594,0.0595,0.0585,0.059,0.0586 70434s,0.0651,0.0745,0.0629,0.0636,0.0642,0.0627,0.0625,0.0651,0.063,0.0667,0.0631,0.0622,0.0609,0.2797,0.3493,0.285,0.2492,0.0944,1.2492,1.443,1.3265,1.3323,0.2333,0.0592,0.0612,0.412,0.4642,0.4438,0.4141,0.0952,1.2966,1.4548,1.3639,1.3438,0.222,0.0645,0.0594,0.6228,0.6562,0.6022,0.6357,0.0976,1.3186,1.4884,1.3925,1.3646,0.223,0.0615,0.0583,0.8544,0.8857,0.8501,0.89,0.0936,1.3647,1.5389,1.4486,1.4263,0.2231,0.0622,0.0623,1.0165,1.2559,1.1717,1.1699,1.2009,1.4224,1.5901,1.5114,1.5018,0.7798,0.06,0.0582,1.2288,1.5405,1.4717,1.4808,0.0928,1.5149,1.6783,1.6186,1.6129,0.2303,0.0612,0.0606,0.0598,0.0595,0.059,0.06,0.0601,0.0591,0.0593,0.0601,0.0587,0.0588,0.058 71074s,0.0649,0.0668,0.0629,0.0636,0.064,0.0627,0.0624,0.0652,0.0629,0.0667,0.0632,0.0623,0.0609,0.28,0.3496,0.2851,0.2497,0.0943,1.2481,1.4421,1.3261,1.3319,0.2333,0.0614,0.0604,0.4121,0.4662,0.4441,0.4149,0.0953,1.2956,1.4521,1.3631,1.3432,0.222,0.0643,0.0596,0.6232,0.657,0.6025,0.6362,0.0977,1.3192,1.4873,1.3926,1.3648,0.2232,0.0617,0.0583,0.8542,0.8855,0.8503,0.8897,0.0935,1.364,1.5383,1.4475,1.4254,0.2231,0.0622,0.0622,1.0166,1.2556,1.1715,1.1699,1.2121,1.422,1.5883,1.51,1.5018,0.8061,0.0603,0.0585,1.2326,1.5414,1.47,1.4804,0.0929,1.5174,1.6764,1.6171,1.611,0.2305,0.0612,0.0607,0.0597,0.0593,0.0589,0.0597,0.0599,0.0591,0.0593,0.0602,0.0587,0.0588,0.0572 71714s,0.0649,0.0746,0.0629,0.0637,0.064,0.0625,0.0627,0.0653,0.0629,0.0669,0.0632,0.0626,0.0609,0.2803,0.3499,0.2857,0.2501,0.0943,1.248,1.4414,1.326,1.3325,0.2331,0.0585,0.0603,0.4123,0.4649,0.4438,0.4149,0.0952,1.2963,1.4544,1.3633,1.3438,0.2219,0.0642,0.0594,0.6232,0.6572,0.6019,0.6358,0.0977,1.3184,1.4877,1.3925,1.3649,0.2231,0.061,0.0587,0.8548,0.886,0.8501,0.8902,0.0934,1.3643,1.5389,1.448,1.4266,0.2231,0.0622,0.0623,1.0172,1.2554,1.1713,1.1698,1.2225,1.422,1.5882,1.5099,1.5017,0.829,0.0594,0.0584,1.2377,1.5408,1.4698,1.4812,0.0926,1.5198,1.6784,1.6163,1.6124,0.2305,0.0612,0.0606,0.0597,0.0592,0.0589,0.0596,0.0599,0.0591,0.0593,0.0607,0.0587,0.0587,0.0573 72355s,0.0648,0.0668,0.0629,0.0636,0.064,0.0629,0.0626,0.0652,0.0628,0.0667,0.063,0.0625,0.0609,0.2802,0.3497,0.2854,0.2501,0.0942,1.2487,1.4427,1.3269,1.3334,0.2334,0.0593,0.0593,0.4122,0.4653,0.4439,0.415,0.0954,1.2963,1.4542,1.3639,1.3444,0.2221,0.0645,0.0595,0.6233,0.6574,0.6025,0.6362,0.0978,1.3187,1.4875,1.3927,1.3649,0.2233,0.0633,0.0593,0.8558,0.886,0.8501,0.8904,0.0935,1.3642,1.5394,1.4478,1.4259,0.2232,0.0621,0.0625,1.018,1.2561,1.1719,1.1701,1.2305,1.4221,1.5887,1.5107,1.5027,0.8534,0.0606,0.0581,1.242,1.5407,1.4707,1.4812,0.0928,1.5225,1.6773,1.6178,1.6128,0.231,0.061,0.0606,0.0598,0.0592,0.0588,0.0598,0.0599,0.0592,0.0593,0.0603,0.0587,0.0587,0.0578 72995s,0.0649,0.0668,0.0627,0.0635,0.0641,0.0627,0.0625,0.0649,0.0628,0.0667,0.0629,0.0625,0.0608,0.281,0.3505,0.2863,0.2508,0.0945,1.2481,1.4418,1.3261,1.3324,0.2334,0.0621,0.0605,0.4129,0.4672,0.4447,0.4156,0.0953,1.296,1.4536,1.3625,1.3435,0.2222,0.0643,0.0593,0.6239,0.6571,0.6021,0.6365,0.0977,1.3178,1.4873,1.392,1.3655,0.2235,0.0631,0.0588,0.8566,0.8861,0.8497,0.8904,0.0935,1.3638,1.5392,1.4476,1.4266,0.2234,0.0621,0.0623,1.0183,1.2563,1.1721,1.171,1.2361,1.4223,1.5896,1.5099,1.5016,0.8759,0.0598,0.0581,1.2458,1.5407,1.4705,1.4815,0.0927,1.5242,1.6778,1.6175,1.6117,0.2311,0.0611,0.0607,0.0598,0.0593,0.0588,0.0597,0.06,0.0591,0.0594,0.0607,0.0586,0.0587,0.0577 73635s,0.0652,0.0667,0.0629,0.0636,0.0638,0.0625,0.0625,0.065,0.0629,0.0667,0.0628,0.0622,0.0608,0.2811,0.3505,0.2864,0.2512,0.0945,1.2485,1.4428,1.3273,1.3335,0.2333,0.0618,0.06,0.4129,0.4675,0.4449,0.4161,0.0953,1.2962,1.4534,1.3639,1.3446,0.2223,0.0644,0.0595,0.6243,0.6572,0.6023,0.6374,0.0976,1.3183,1.4886,1.393,1.3661,0.2236,0.0617,0.0585,0.8561,0.8863,0.8502,0.8906,0.0935,1.3643,1.5395,1.4477,1.4269,0.2235,0.0619,0.0624,1.0193,1.257,1.1719,1.1713,1.2418,1.4233,1.589,1.509,1.5028,0.9009,0.0599,0.0581,1.25,1.5409,1.4714,1.4832,0.093,1.5271,1.6786,1.6181,1.6141,0.2311,0.061,0.0607,0.0598,0.0593,0.059,0.0596,0.06,0.0591,0.0593,0.0607,0.0586,0.0587,0.058 74275s,0.065,0.0742,0.0627,0.0636,0.064,0.0627,0.0624,0.0653,0.063,0.0669,0.0629,0.0623,0.0609,0.2814,0.3508,0.2869,0.2513,0.0945,1.2484,1.442,1.3274,1.3338,0.2333,0.0627,0.0625,0.413,0.4672,0.4449,0.4162,0.0954,1.2964,1.4534,1.3633,1.345,0.2223,0.0643,0.0592,0.6244,0.6577,0.6025,0.6381,0.0977,1.3175,1.4887,1.3929,1.366,0.2236,0.0617,0.0594,0.8571,0.8864,0.8504,0.8908,0.0936,1.3647,1.5394,1.4484,1.4276,0.2234,0.0618,0.0623,1.0195,1.2566,1.1722,1.1713,1.2464,1.4221,1.5896,1.51,1.503,0.9237,0.0631,0.0587,1.2533,1.5413,1.4692,1.4809,0.0928,1.5283,1.6789,1.6178,1.6125,0.2314,0.061,0.0605,0.0598,0.0594,0.059,0.0595,0.0599,0.0591,0.0593,0.0609,0.0585,0.0586,0.0582 74915s,0.0648,0.0747,0.0629,0.0635,0.0641,0.0627,0.0624,0.0651,0.0626,0.0667,0.0631,0.0625,0.0609,0.2823,0.3516,0.2875,0.2522,0.0949,1.2486,1.4423,1.3275,1.3341,0.2335,0.06,0.0609,0.4132,0.4678,0.4455,0.4164,0.0955,1.296,1.4547,1.3637,1.3449,0.2225,0.0645,0.0594,0.6248,0.6569,0.6024,0.6388,0.0977,1.3182,1.4892,1.3937,1.3668,0.2237,0.0621,0.059,0.858,0.8866,0.8501,0.8914,0.0936,1.3639,1.5394,1.4486,1.4275,0.2235,0.0621,0.0626,1.0198,1.2568,1.1716,1.1715,1.2503,1.423,1.5906,1.5098,1.5029,0.9492,0.0602,0.0592,1.2568,1.5421,1.4705,1.4835,0.0929,1.5301,1.6791,1.6167,1.6131,0.2315,0.061,0.0609,0.06,0.0595,0.0589,0.0597,0.0602,0.0593,0.0592,0.0598,0.0586,0.0588,0.0586 75556s,0.0652,0.0672,0.0628,0.0636,0.064,0.0628,0.0626,0.0651,0.063,0.0667,0.0632,0.0624,0.061,0.282,0.3511,0.2875,0.252,0.0948,1.249,1.4427,1.3281,1.3341,0.2335,0.0594,0.0614,0.4128,0.4667,0.445,0.4163,0.0954,1.2963,1.4547,1.3642,1.3451,0.2225,0.0648,0.0593,0.6248,0.6579,0.6028,0.6384,0.0979,1.3176,1.4891,1.3923,1.3671,0.2238,0.0617,0.0591,0.8584,0.8867,0.8495,0.8916,0.0937,1.3629,1.5396,1.447,1.4274,0.2236,0.0623,0.0625,1.0202,1.2568,1.1715,1.1713,1.2537,1.4223,1.5879,1.5088,1.5031,0.9736,0.06,0.0594,1.2605,1.5414,1.4707,1.4825,0.0929,1.5307,1.679,1.6181,1.6129,0.2315,0.0611,0.0606,0.0598,0.0595,0.059,0.0597,0.0599,0.0592,0.0592,0.0596,0.0586,0.0587,0.0574 76196s,0.0651,0.0669,0.0629,0.0636,0.0642,0.0626,0.0623,0.065,0.0627,0.0666,0.0629,0.0623,0.0608,0.2821,0.3513,0.2873,0.2519,0.0947,1.249,1.4431,1.328,1.3353,0.2335,0.0594,0.0608,0.4135,0.4671,0.445,0.4166,0.0954,1.2961,1.4548,1.3645,1.3451,0.2226,0.0645,0.0594,0.6248,0.6584,0.6035,0.639,0.0978,1.318,1.4886,1.393,1.3673,0.224,0.063,0.0605,0.859,0.8866,0.8504,0.8916,0.0937,1.3632,1.5395,1.4479,1.4279,0.2237,0.0621,0.0623,1.0209,1.2575,1.1721,1.1722,1.2565,1.423,1.5906,1.5093,1.5035,0.9957,0.0607,0.0581,1.2629,1.5411,1.4702,1.4838,0.0929,1.5325,1.679,1.6175,1.613,0.2316,0.0609,0.0606,0.0598,0.0595,0.0589,0.0596,0.0599,0.0592,0.0593,0.06,0.0585,0.0586,0.0573 76836s,0.0652,0.0748,0.0629,0.0634,0.0641,0.0625,0.0626,0.0652,0.0628,0.0666,0.063,0.0623,0.0609,0.2828,0.3514,0.288,0.2527,0.0948,1.2486,1.4421,1.3274,1.3347,0.2335,0.0599,0.0604,0.4133,0.4667,0.4453,0.4167,0.0954,1.2958,1.4545,1.3645,1.3462,0.2225,0.0644,0.0594,0.6255,0.6584,0.603,0.639,0.0979,1.3179,1.4883,1.3927,1.3666,0.2239,0.0626,0.0581,0.8589,0.8867,0.85,0.8907,0.0939,1.362,1.5398,1.4478,1.427,0.2239,0.0618,0.0625,1.0214,1.2576,1.1721,1.1718,1.258,1.4221,1.5887,1.5087,1.5033,1.021,0.0615,0.0582,1.2648,1.5409,1.4695,1.4843,0.093,1.5335,1.6797,1.6167,1.6137,0.2319,0.061,0.0606,0.0599,0.0596,0.0589,0.0596,0.0599,0.0591,0.0593,0.0594,0.0586,0.0585,0.0576 77476s,0.0649,0.0674,0.0631,0.0636,0.0642,0.0627,0.0627,0.0652,0.0629,0.0669,0.0631,0.0623,0.061,0.2827,0.3515,0.2881,0.2529,0.0949,1.249,1.4424,1.3279,1.3355,0.2336,0.0616,0.0608,0.4136,0.4681,0.4459,0.4173,0.0956,1.2964,1.4538,1.3637,1.3452,0.2228,0.0645,0.0595,0.626,0.6587,0.6034,0.6396,0.0979,1.3172,1.4886,1.3925,1.3669,0.2242,0.0616,0.0586,0.8595,0.887,0.85,0.8916,0.0938,1.363,1.5393,1.4475,1.4268,0.2239,0.0621,0.0624,1.0214,1.2575,1.1717,1.1725,1.2598,1.4215,1.5888,1.5088,1.5035,1.0461,0.0601,0.0584,1.2667,1.5411,1.47,1.4836,0.0931,1.5333,1.6788,1.6166,1.6125,0.2321,0.0611,0.0607,0.0599,0.0595,0.0589,0.0598,0.0599,0.0592,0.0594,0.0607,0.0587,0.0587,0.0578 78117s,0.0649,0.0749,0.0628,0.0635,0.064,0.0626,0.0624,0.0651,0.063,0.0667,0.0629,0.0624,0.061,0.283,0.3517,0.2882,0.253,0.0949,1.2485,1.4428,1.3278,1.335,0.2334,0.0577,0.0603,0.4138,0.4683,0.4464,0.4175,0.0954,1.2962,1.4535,1.3647,1.3454,0.2228,0.0642,0.0591,0.6259,0.6583,0.6034,0.6403,0.0979,1.3172,1.4884,1.393,1.3673,0.2241,0.0617,0.0586,0.8608,0.8867,0.8497,0.8918,0.0937,1.3627,1.5398,1.4476,1.4275,0.2239,0.0618,0.0622,1.0221,1.2575,1.1716,1.1728,1.2613,1.422,1.5896,1.5085,1.5039,1.0708,0.0595,0.0579,1.2681,1.5411,1.4695,1.4837,0.093,1.5343,1.6791,1.6161,1.6129,0.2319,0.0608,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0603,0.0586,0.0585,0.0581 78757s,0.0649,0.0671,0.0628,0.0636,0.0642,0.0626,0.0627,0.0649,0.0628,0.0667,0.0629,0.0625,0.061,0.2835,0.352,0.2881,0.2533,0.0951,1.2489,1.4421,1.3282,1.3356,0.2333,0.0616,0.0611,0.414,0.4688,0.4461,0.4177,0.0956,1.2954,1.4536,1.3649,1.3468,0.223,0.0643,0.0591,0.6263,0.6588,0.6035,0.6397,0.0979,1.3173,1.4882,1.3925,1.3673,0.2242,0.0617,0.0587,0.8607,0.8868,0.8497,0.8924,0.0937,1.3629,1.5397,1.4477,1.4281,0.2239,0.0617,0.0625,1.0222,1.2571,1.1723,1.1729,1.2629,1.4213,1.5884,1.5087,1.5047,1.0942,0.0593,0.0579,1.2711,1.5411,1.4708,1.4835,0.093,1.5353,1.6785,1.6166,1.6137,0.2321,0.0607,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0614,0.0587,0.0586,0.0574 79397s,0.0652,0.0747,0.0629,0.0635,0.0638,0.0626,0.0626,0.065,0.0629,0.0667,0.0631,0.063,0.0608,0.2833,0.352,0.2881,0.2533,0.0951,1.2488,1.4424,1.3286,1.3362,0.2333,0.0592,0.0602,0.4139,0.4686,0.4464,0.4178,0.0955,1.2952,1.4549,1.3647,1.3459,0.2229,0.0644,0.0595,0.6261,0.6582,0.6042,0.6404,0.0979,1.3178,1.4886,1.393,1.3676,0.2242,0.062,0.0594,0.8615,0.8868,0.8499,0.893,0.0939,1.3628,1.5399,1.4474,1.4288,0.2241,0.0618,0.0624,1.0222,1.2571,1.1718,1.1729,1.2629,1.4213,1.5896,1.5079,1.5039,1.1196,0.0605,0.0583,1.2718,1.5412,1.4696,1.4833,0.093,1.536,1.6777,1.6155,1.6128,0.2322,0.0606,0.0607,0.0597,0.0594,0.0588,0.0595,0.0598,0.0591,0.0593,0.0599,0.0586,0.0587,0.0571 80037s,0.0655,0.075,0.063,0.0634,0.064,0.0628,0.0624,0.065,0.0627,0.0668,0.063,0.0625,0.061,0.284,0.3521,0.2889,0.2537,0.0952,1.2494,1.4421,1.3286,1.3367,0.2332,0.065,0.0615,0.4144,0.4693,0.4471,0.4185,0.0956,1.2962,1.4541,1.3651,1.3466,0.2232,0.0643,0.0595,0.626,0.6586,0.604,0.6401,0.098,1.3173,1.4888,1.3941,1.3687,0.2243,0.0644,0.0599,0.8615,0.8869,0.8499,0.8931,0.0938,1.3628,1.5404,1.4482,1.4288,0.2243,0.0615,0.0624,1.0232,1.2579,1.1727,1.1739,1.2654,1.421,1.5907,1.5083,1.5052,1.1443,0.0601,0.059,1.2741,1.5424,1.47,1.4844,0.0932,1.5373,1.681,1.6164,1.6145,0.2322,0.0606,0.0607,0.0599,0.0595,0.0589,0.0597,0.0601,0.0592,0.0594,0.0606,0.0586,0.0585,0.0577 80677s,0.0658,0.0706,0.063,0.0639,0.064,0.0628,0.0624,0.0655,0.0629,0.0676,0.0631,0.0627,0.0611,0.2841,0.3522,0.2891,0.2538,0.0954,1.2492,1.4424,1.3294,1.3365,0.2333,0.0591,0.0611,0.4145,0.4697,0.4472,0.4184,0.0956,1.2957,1.4538,1.3651,1.347,0.2232,0.0644,0.0595,0.6267,0.6586,0.604,0.6408,0.0981,1.3172,1.4893,1.3931,1.3681,0.2245,0.0611,0.0587,0.8622,0.8869,0.8498,0.8932,0.094,1.362,1.5402,1.448,1.4286,0.2244,0.0619,0.0625,1.023,1.2572,1.1729,1.1734,1.2657,1.4201,1.5904,1.5076,1.5042,1.1692,0.0598,0.059,1.275,1.5417,1.4696,1.4834,0.0932,1.5367,1.678,1.6172,1.6133,0.2324,0.0608,0.0608,0.0598,0.0597,0.0589,0.0597,0.06,0.0593,0.0594,0.0596,0.0586,0.0587,0.0573 81318s,0.065,0.0668,0.0628,0.0636,0.0639,0.0627,0.0624,0.0651,0.0627,0.0668,0.063,0.0625,0.0611,0.2848,0.3531,0.2899,0.2546,0.0954,1.2486,1.4416,1.3287,1.3366,0.2331,0.0629,0.061,0.4148,0.4701,0.4475,0.4191,0.0955,1.2954,1.4537,1.3648,1.3469,0.2232,0.0642,0.0592,0.6267,0.6588,0.6042,0.6419,0.098,1.3173,1.4889,1.394,1.3686,0.2245,0.0606,0.059,0.8622,0.8869,0.8497,0.8934,0.0938,1.3618,1.5394,1.4478,1.4285,0.2245,0.0617,0.0626,1.0235,1.2572,1.1727,1.1736,1.2664,1.4199,1.5884,1.5076,1.5039,1.192,0.0621,0.0582,1.276,1.5424,1.4694,1.4841,0.0931,1.5367,1.6791,1.6158,1.613,0.2324,0.0606,0.0606,0.0597,0.0596,0.0588,0.0595,0.0599,0.0593,0.0592,0.0603,0.0585,0.0586,0.0574 81958s,0.065,0.0748,0.0628,0.0635,0.0639,0.0625,0.0624,0.0648,0.0628,0.0665,0.063,0.0626,0.061,0.2849,0.3531,0.29,0.2549,0.0956,1.2491,1.4425,1.3288,1.3375,0.2333,0.0611,0.0608,0.4146,0.4687,0.4472,0.419,0.0956,1.2967,1.4546,1.3664,1.3483,0.2233,0.0643,0.0594,0.6271,0.6591,0.6045,0.6419,0.098,1.3178,1.49,1.3947,1.3695,0.2247,0.0615,0.0622,0.863,0.8873,0.8502,0.8941,0.0938,1.3621,1.5405,1.4482,1.4297,0.2246,0.0617,0.0625,1.0245,1.2578,1.173,1.1741,1.2677,1.4198,1.5902,1.5087,1.5048,1.2161,0.0605,0.0581,1.2781,1.5423,1.4708,1.485,0.0932,1.5389,1.6802,1.6164,1.615,0.2327,0.0606,0.0606,0.0597,0.0595,0.0589,0.0595,0.0598,0.0591,0.0593,0.0603,0.0585,0.0585,0.057 82598s,0.065,0.067,0.063,0.0638,0.0641,0.0626,0.0626,0.0651,0.0628,0.0668,0.0634,0.0627,0.061,0.2849,0.3529,0.2901,0.2548,0.0956,1.2497,1.4429,1.3301,1.3375,0.2332,0.0588,0.0611,0.4144,0.4694,0.4471,0.4194,0.0956,1.2966,1.4545,1.3661,1.3486,0.2234,0.0644,0.0595,0.6269,0.6603,0.6048,0.6422,0.0981,1.3169,1.4891,1.3944,1.3692,0.2249,0.0622,0.0582,0.8633,0.8873,0.8502,0.8938,0.0941,1.3614,1.5402,1.4479,1.429,0.2247,0.0618,0.0624,1.0248,1.2583,1.1738,1.1751,1.2672,1.4206,1.5901,1.5077,1.5053,1.238,0.0594,0.0586,1.2786,1.5419,1.4704,1.486,0.0932,1.5394,1.6796,1.6165,1.6133,0.2326,0.0607,0.0608,0.0597,0.0595,0.0591,0.0597,0.06,0.0592,0.0594,0.0606,0.0586,0.0586,0.0577 83238s,0.065,0.0672,0.0631,0.0636,0.064,0.0627,0.0627,0.0651,0.063,0.0669,0.0636,0.0628,0.0609,0.2855,0.3533,0.2903,0.2553,0.0957,1.2495,1.4426,1.3299,1.338,0.2331,0.0603,0.0612,0.4148,0.4695,0.4478,0.4196,0.0957,1.2958,1.4548,1.3664,1.3482,0.2235,0.0642,0.0594,0.6275,0.6599,0.6055,0.6428,0.0981,1.3169,1.4886,1.3948,1.3691,0.225,0.0625,0.0584,0.8642,0.8876,0.8501,0.8944,0.0941,1.3618,1.5395,1.4484,1.43,0.2247,0.0618,0.0626,1.0253,1.258,1.1739,1.1751,1.2676,1.4201,1.5897,1.5085,1.5055,1.2615,0.0621,0.0583,1.2793,1.5422,1.4694,1.4843,0.0936,1.539,1.6798,1.6152,1.6132,0.2328,0.0606,0.0608,0.0598,0.0595,0.059,0.0597,0.0601,0.0592,0.0594,0.0602,0.0588,0.0587,0.0581 83879s,0.0648,0.0671,0.0631,0.0639,0.0641,0.0628,0.0626,0.065,0.0627,0.0667,0.0632,0.0625,0.061,0.2856,0.3536,0.2908,0.2554,0.0957,1.249,1.442,1.3296,1.3383,0.2331,0.0617,0.0602,0.4151,0.4703,0.4482,0.4195,0.0959,1.2958,1.4552,1.3665,1.3483,0.2236,0.0643,0.0594,0.6278,0.6599,0.6052,0.6427,0.0982,1.3165,1.4897,1.3942,1.3691,0.225,0.06,0.0585,0.8644,0.8875,0.8499,0.8946,0.094,1.3612,1.5399,1.4476,1.4297,0.2248,0.0616,0.0626,1.0249,1.2578,1.1729,1.175,1.2681,1.4196,1.5895,1.5076,1.505,1.2814,0.06,0.0584,1.28,1.5423,1.4689,1.4849,0.0935,1.5391,1.6798,1.6161,1.6137,0.2328,0.0608,0.0608,0.0596,0.0596,0.0589,0.0597,0.0599,0.059,0.0594,0.0599,0.0587,0.0585,0.0577 84519s,0.0655,0.075,0.063,0.0637,0.064,0.0625,0.0624,0.0652,0.0629,0.0668,0.0631,0.0627,0.0611,0.2857,0.3536,0.2908,0.2556,0.0958,1.2492,1.4426,1.3295,1.3379,0.2331,0.063,0.0611,0.4152,0.4707,0.448,0.4197,0.0958,1.2957,1.4538,1.3666,1.3487,0.2236,0.0642,0.0593,0.628,0.6592,0.6051,0.6431,0.098,1.3169,1.4897,1.3948,1.3693,0.225,0.06,0.0582,0.8645,0.8878,0.8503,0.8949,0.094,1.3608,1.5394,1.448,1.4298,0.225,0.0616,0.0625,1.0255,1.2579,1.1729,1.175,1.2685,1.4187,1.5882,1.5069,1.5053,1.3019,0.0606,0.0587,1.2805,1.5411,1.4695,1.4851,0.0935,1.5385,1.6798,1.6151,1.6127,0.2327,0.0607,0.0607,0.0598,0.0595,0.0588,0.0596,0.06,0.0591,0.0592,0.0602,0.0587,0.0585,0.0569 85159s,0.0647,0.075,0.0629,0.0635,0.0642,0.0625,0.0627,0.065,0.0628,0.0666,0.0627,0.0624,0.0611,0.2861,0.354,0.2915,0.2563,0.0958,1.249,1.4417,1.3309,1.338,0.2332,0.0638,0.0622,0.4152,0.4702,0.448,0.4198,0.0958,1.296,1.4541,1.3673,1.3491,0.2238,0.0644,0.059,0.628,0.66,0.605,0.643,0.0982,1.3166,1.4893,1.3947,1.3691,0.2253,0.0637,0.0589,0.8653,0.888,0.8503,0.8948,0.0941,1.3611,1.5408,1.4484,1.4305,0.2252,0.0614,0.0627,1.0259,1.2581,1.1737,1.175,1.2686,1.4191,1.5891,1.5077,1.5053,1.3231,0.0609,0.0583,1.2809,1.5417,1.4704,1.4855,0.0937,1.5385,1.6788,1.6149,1.6131,0.233,0.0606,0.0609,0.06,0.0595,0.059,0.0597,0.06,0.0592,0.0593,0.0597,0.0586,0.0585,0.058 85799s,0.0655,0.0671,0.0632,0.0638,0.0641,0.0629,0.0625,0.0653,0.0631,0.0667,0.063,0.0627,0.061,0.2862,0.3541,0.2914,0.2565,0.0959,1.2495,1.4424,1.3307,1.3389,0.233,0.0592,0.061,0.4148,0.4694,0.4481,0.4195,0.0958,1.2963,1.4548,1.3669,1.349,0.2238,0.0642,0.0592,0.6278,0.6598,0.6047,0.6435,0.0981,1.3169,1.489,1.395,1.3695,0.2253,0.0612,0.0597,0.8651,0.888,0.8498,0.895,0.094,1.3606,1.5396,1.448,1.4295,0.2252,0.0616,0.0625,1.026,1.2581,1.1742,1.1753,1.2687,1.4182,1.5893,1.5073,1.5055,1.3417,0.0608,0.0581,1.2814,1.5418,1.4701,1.4863,0.0938,1.5394,1.6789,1.6147,1.6138,0.2332,0.0605,0.0608,0.0598,0.0595,0.059,0.0595,0.0598,0.0591,0.0593,0.0643,0.0586,0.0585,0.0576 Date of measurement: 2010-02-24/Time of measurement: 13:30:10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, C:\Users\Public\Documents\Tecan\Magellan\mth\YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, C:\Users\Public\Documents\Tecan\Magellan\wsp\24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 595nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Unknown user,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, infinite 500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Instrument serial number: ##########,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate Description: [NUN96ft] - Nunclon 96 Flat Transparent,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate with Cover: Yes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Barcode: No,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Temperature,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mode: On,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Temperature: 30.0 C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Shaking,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Duration: 10 sec,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mode: Linear,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Amplitude: 2 mm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Frequency: 70.8 rpm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Kinetic Cycle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Duration: 23:59:59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Absorbance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Measurement wavelength: 595 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Measurement bandwidth: 10 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Number of reads: 10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Settle time: 0 ms,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Label: Label1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Incubation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Total kinetic run time: 23h 49min 59s ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/Rails/public/resources/YPDAFEXglucoseTests_2-25-10_Layout.csv b/Rails/public/resources/YPDAFEXglucoseTests_2-25-10_Layout.csv new file mode 100644 index 0000000..d4df5ba --- /dev/null +++ b/Rails/public/resources/YPDAFEXglucoseTests_2-25-10_Layout.csv @@ -0,0 +1,97 @@ +Destination plate name,Row,Column,Well ID,Plate source,Well Source,Strain,Media Definition +Control strain plate,A,1,Empty,Empty,Empty,Empty,None +Control strain plate,A,2,Empty,Empty,Empty,Empty,None +Control strain plate,A,3,Empty,Empty,Empty,Empty,None +Control strain plate,A,4,Empty,Empty,Empty,Empty,None +Control strain plate,A,5,Empty,Empty,Empty,Empty,None +Control strain plate,A,6,Empty,Empty,Empty,Empty,None +Control strain plate,A,7,Empty,Empty,Empty,Empty,None +Control strain plate,A,8,Empty,Empty,Empty,Empty,None +Control strain plate,A,9,Empty,Empty,Empty,Empty,None +Control strain plate,A,10,Empty,Empty,Empty,Empty,None +Control strain plate,A,11,Empty,Empty,Empty,Empty,None +Control strain plate,A,12,Empty,Empty,Empty,Empty,None +Control strain plate,B,1,Empty,Empty,Empty,Empty,None +Control strain plate,B,2,Sample,USDA,,Lab strain,YP +Control strain plate,B,3,Sample,USDA,,Wild strain,YP +Control strain plate,B,4,Sample,Internal source,,Industrial strain,YP +Control strain plate,B,5,Sample,ATCC,,Engineered strain,YP +Control strain plate,B,6,Empty,Empty,Empty,Empty,None +Control strain plate,B,7,Sample,USDA,,Lab strain,AFEX +Control strain plate,B,8,Sample,USDA,,Wild strain,AFEX +Control strain plate,B,9,Sample,Internal source,,Industrial strain,AFEX +Control strain plate,B,10,Sample,ATCC,,Engineered strain,AFEX +Control strain plate,B,11,Empty,Empty,Empty,Empty,None +Control strain plate,B,12,Empty,Empty,Empty,Empty,None +Control strain plate,C,1,Empty,Empty,Empty,Empty,None +Control strain plate,C,2,Sample,USDA,,Lab strain,YP+0.25% glucose +Control strain plate,C,3,Sample,USDA,,Wild strain,YP+0.25% glucose +Control strain plate,C,4,Sample,Internal source,,Industrial strain,YP+0.25% glucose +Control strain plate,C,5,Sample,ATCC,,Engineered strain,YP+0.25% glucose +Control strain plate,C,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,C,7,Sample,USDA,,Lab strain,AFEX+0.25% glucose +Control strain plate,C,8,Sample,USDA,,Wild strain,AFEX+0.25% glucose +Control strain plate,C,9,Sample,Internal source,,Industrial strain,AFEX+0.25% glucose +Control strain plate,C,10,Sample,ATCC,,Engineered strain,AFEX+0.25% glucose +Control strain plate,C,11,Empty,Empty,Empty,Empty,None +Control strain plate,C,12,Empty,Empty,Empty,Empty,None +Control strain plate,D,1,Empty,Empty,Empty,Empty,None +Control strain plate,D,2,Sample,USDA,,Lab strain,YP+0.5% glucose +Control strain plate,D,3,Sample,USDA,,Wild strain,YP+0.5% glucose +Control strain plate,D,4,Sample,Internal source,,Industrial strain,YP+0.5% glucose +Control strain plate,D,5,Sample,ATCC,,Engineered strain,YP+0.5% glucose +Control strain plate,D,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,D,7,Sample,USDA,,Lab strain,AFEX+0.5% glucose +Control strain plate,D,8,Sample,USDA,,Wild strain,AFEX+0.5% glucose +Control strain plate,D,9,Sample,Internal source,,Industrial strain,AFEX+0.5% glucose +Control strain plate,D,10,Sample,ATCC,,Engineered strain,AFEX+0.5% glucose +Control strain plate,D,11,Empty,Empty,Empty,Empty,None +Control strain plate,D,12,Empty,Empty,Empty,Empty,None +Control strain plate,E,1,Empty,Empty,Empty,Empty,None +Control strain plate,E,2,Sample,USDA,,Lab strain,YP+1% glucose +Control strain plate,E,3,Sample,USDA,,Wild strain,YP+1% glucose +Control strain plate,E,4,Sample,Internal source,,Industrial strain,YP+1% glucose +Control strain plate,E,5,Sample,ATCC,,Engineered strain,YP+1% glucose +Control strain plate,E,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,E,7,Sample,USDA,,Lab strain,AFEX+1% glucose +Control strain plate,E,8,Sample,USDA,,Wild strain,AFEX+1% glucose +Control strain plate,E,9,Sample,Internal source,,Industrial strain,AFEX+1% glucose +Control strain plate,E,10,Sample,ATCC,,Engineered strain,AFEX+1% glucose +Control strain plate,E,11,Empty,Empty,Empty,Empty,None +Control strain plate,E,12,Empty,Empty,Empty,Empty,None +Control strain plate,F,1,Empty,Empty,Empty,Empty,None +Control strain plate,F,2,Sample,USDA,,Lab strain,YP+2% glucose +Control strain plate,F,3,Sample,USDA,,Wild strain,YP+2% glucose +Control strain plate,F,4,Sample,Internal source,,Industrial strain,YP+2% glucose +Control strain plate,F,5,Sample,ATCC,,Engineered strain,YP+2% glucose +Control strain plate,F,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,F,7,Sample,USDA,,Lab strain,AFEX+2% glucose +Control strain plate,F,8,Sample,USDA,,Wild strain,AFEX+2% glucose +Control strain plate,F,9,Sample,Internal source,,Industrial strain,AFEX+2% glucose +Control strain plate,F,10,Sample,ATCC,,Engineered strain,AFEX+2% glucose +Control strain plate,F,11,Empty,Empty,Empty,Empty,None +Control strain plate,F,12,Empty,Empty,Empty,Empty,None +Control strain plate,G,1,Empty,Empty,Empty,Empty,None +Control strain plate,G,2,Sample,USDA,,Lab strain,YP+5% glucose +Control strain plate,G,3,Sample,USDA,,Wild strain,YP+5% glucose +Control strain plate,G,4,Sample,Internal source,,Industrial strain,YP+5% glucose +Control strain plate,G,5,Sample,ATCC,,Engineered strain,YP+5% glucose +Control strain plate,G,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,G,7,Sample,USDA,,Lab strain,AFEX+5% glucose +Control strain plate,G,8,Sample,USDA,,Wild strain,AFEX+5% glucose +Control strain plate,G,9,Sample,Internal source,,Industrial strain,AFEX+5% glucose +Control strain plate,G,10,Sample,ATCC,,Engineered strain,AFEX+5% glucose +Control strain plate,G,11,Empty,Empty,Empty,Empty,None +Control strain plate,G,12,Empty,Empty,Empty,Empty,None +Control strain plate,H,1,Empty,Empty,Empty,Empty,None +Control strain plate,H,2,Empty,Empty,Empty,Empty,None +Control strain plate,H,3,Empty,Empty,Empty,Empty,None +Control strain plate,H,4,Empty,Empty,Empty,Empty,None +Control strain plate,H,5,Empty,Empty,Empty,Empty,None +Control strain plate,H,6,Empty,Empty,Empty,Empty,None +Control strain plate,H,7,Empty,Empty,Empty,Empty,None +Control strain plate,H,8,Empty,Empty,Empty,Empty,None +Control strain plate,H,9,Empty,Empty,Empty,Empty,None +Control strain plate,H,10,Empty,Empty,Empty,Empty,None +Control strain plate,H,11,Empty,Empty,Empty,Empty,None +Control strain plate,H,12,Empty,Empty,Empty,Empty,None diff --git a/Rails/public/resources/test_YYYY_MM_DD_HH_MM_SS.csv b/Rails/public/resources/test_YYYY_MM_DD_HH_MM_SS.csv new file mode 100644 index 0000000..1151936 --- /dev/null +++ b/Rails/public/resources/test_YYYY_MM_DD_HH_MM_SS.csv @@ -0,0 +1,5761 @@ +Plate ID,Time,Well,OD +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B12,0.0622 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H10,0.065 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H07,0.0653 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H02,0.0657 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H09,0.0658 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C01,0.0668 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F12,0.067 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H12,0.0672 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H01,0.0674 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A05,0.0677 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A10,0.0677 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E01,0.0678 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H03,0.0683 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A04,0.0685 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A06,0.069 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A07,0.0693 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D01,0.0711 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G12,0.0714 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B01,0.0741 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E12,0.0791 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A09,0.0796 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B08,0.106 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C07,0.1144 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B07,0.115 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B10,0.118 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D03,0.1182 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D08,0.1182 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D11,0.1198 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E08,0.1224 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F07,0.123 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D04,0.123 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G06,0.1241 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F09,0.1244 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F01,0.0631 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G01,0.0636 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D12,0.0639 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H08,0.0651 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H11,0.0662 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A11,0.0673 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A02,0.0687 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A01,0.0695 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A03,0.0699 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B09,0.117 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C11,0.1188 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D10,0.1189 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G07,0.12 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G05,0.1212 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C09,0.1218 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C12,0.0641 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A12,0.0667 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H06,0.0671 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H05,0.0672 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,H04,0.0676 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,A08,0.0681 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E05,0.1176 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F02,0.1196 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F11,0.1253 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D09,0.1247 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E03,0.1272 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E07,0.1279 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C08,0.1285 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C02,0.1289 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C10,0.1291 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C06,0.1294 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G04,0.1298 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F06,0.1308 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B04,0.1317 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G11,0.1326 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B06,0.1255 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B11,0.1271 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F10,0.1284 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E09,0.1285 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D02,0.1285 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G08,0.129 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D06,0.1319 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D05,0.1329 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E11,0.1337 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B02,0.1338 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F08,0.1304 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F03,0.1319 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F04,0.1349 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G03,0.136 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,F05,0.1364 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B03,0.141 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G10,0.1427 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C04,0.1348 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E10,0.1361 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C05,0.1415 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G02,0.1343 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,B05,0.1374 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E06,0.1413 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,C03,0.145 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,D07,0.1458 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E02,0.1506 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,G09,0.1466 +022510b.GLBRC200DH.1,2010-02-25 16:15:00,E04,0.1462 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C02,0.1171 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B01,0.1206 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B11,0.1211 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B04,0.1218 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C06,0.122 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B02,0.1232 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A05,0.1202 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C01,0.1266 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C03,0.1256 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D11,0.1283 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B07,0.1285 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C09,0.1287 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D08,0.1301 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B09,0.1303 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C08,0.1304 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C04,0.1305 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A02,0.1308 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F12,0.1309 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B06,0.1315 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A11,0.132 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B12,0.1321 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D12,0.1323 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F10,0.1324 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C11,0.1267 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C10,0.1271 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B03,0.1273 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G12,0.1285 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B05,0.1299 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C05,0.1303 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C12,0.132 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D02,0.1269 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D05,0.1311 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,C07,0.1328 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A01,0.1336 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B10,0.1338 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D09,0.1347 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D06,0.1352 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G09,0.1363 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D04,0.1367 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F09,0.1388 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G07,0.1388 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D07,0.139 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G10,0.1391 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F04,0.1391 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H12,0.1394 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,B08,0.1395 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G11,0.1398 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A12,0.14 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G05,0.1402 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G04,0.1406 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D03,0.1412 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A06,0.1415 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A10,0.1356 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D01,0.1363 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A07,0.137 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A08,0.1372 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G01,0.1399 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,D10,0.1401 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A03,0.141 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F07,0.1432 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H11,0.1435 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F03,0.1442 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H06,0.1446 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F01,0.1458 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H07,0.146 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H10,0.1465 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E10,0.1471 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E12,0.1477 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H04,0.1481 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E05,0.1487 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H03,0.1488 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E11,0.1489 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E04,0.149 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E08,0.15 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E07,0.1438 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E06,0.1446 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G06,0.1447 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E01,0.1453 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E02,0.1468 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A04,0.1475 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F08,0.1475 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F02,0.148 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G02,0.1486 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F06,0.1424 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F11,0.1445 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G08,0.1455 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,G03,0.1458 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E03,0.1466 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H08,0.1531 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H09,0.1536 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H02,0.1572 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,F05,0.1507 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,A09,0.151 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H01,0.1531 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,H05,0.1543 +022510b.GLBRC200DH.1,2010-02-25 16:20:20,E09,0.1571 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H12,0.1209 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A12,0.1276 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B12,0.1607 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A11,0.2207 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G12,0.2226 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F12,0.223 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H11,0.2259 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H01,0.2261 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C12,0.2352 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A01,0.2367 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E12,0.2435 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A10,0.2486 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H10,0.253 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F01,0.2576 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A09,0.2609 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G01,0.2621 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C01,0.2625 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B11,0.2566 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B10,0.2668 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E01,0.2671 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B01,0.2674 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D01,0.2746 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A08,0.2894 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E10,0.2944 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A07,0.3009 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E11,0.3086 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A04,0.3091 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C11,0.3094 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A02,0.31 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A05,0.318 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G11,0.3029 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B09,0.3155 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A03,0.3161 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D11,0.3204 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D10,0.3226 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C10,0.3234 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B02,0.324 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C02,0.3193 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,A06,0.3247 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B04,0.3259 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C04,0.3269 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F11,0.3276 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C03,0.3284 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B06,0.3341 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C06,0.335 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H08,0.3358 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F08,0.3308 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F10,0.3321 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H09,0.3324 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H06,0.3366 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B03,0.3373 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D08,0.3388 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D05,0.3389 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C08,0.3392 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B08,0.3396 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D02,0.3402 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E06,0.3416 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E05,0.3435 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B07,0.3364 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,B05,0.337 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E02,0.3371 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F02,0.3379 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D09,0.3437 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G10,0.3439 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C05,0.3445 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F09,0.3452 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E08,0.3472 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H04,0.3417 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C09,0.3431 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H07,0.3448 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E09,0.3474 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D07,0.35 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D06,0.3513 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H02,0.3547 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,C07,0.3622 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F07,0.3484 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F06,0.3634 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F05,0.3689 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D04,0.3696 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G09,0.3587 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D03,0.3663 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G05,0.3766 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F04,0.3677 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G07,0.3726 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G02,0.3727 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,F03,0.3772 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G03,0.3914 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G06,0.3955 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E07,0.3787 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G04,0.3846 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H03,0.3865 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E04,0.3987 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,G08,0.4019 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,E03,0.4081 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,H05,0.3972 +022510b.GLBRC200DH.1,2010-02-25 17:06:55,D12,0.2517 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B01,0.1109 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H07,0.1228 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D12,0.1248 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C01,0.1169 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A05,0.1178 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D01,0.1233 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H06,0.1222 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F01,0.1257 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E01,0.1276 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F12,0.1284 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A01,0.1285 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A07,0.1297 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B12,0.13 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E12,0.1277 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H04,0.1319 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A12,0.1327 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A06,0.1321 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A04,0.133 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G09,0.1346 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E11,0.1358 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C12,0.1398 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C10,0.1407 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B08,0.1412 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B09,0.1414 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D11,0.1374 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A03,0.1407 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H08,0.1412 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A11,0.1438 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H12,0.1443 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G01,0.1459 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A10,0.146 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A02,0.146 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C11,0.1501 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A08,0.1454 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F11,0.1475 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G10,0.1484 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B10,0.1496 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B11,0.1427 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F10,0.153 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C09,0.1542 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H10,0.1549 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H11,0.1555 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,A09,0.1558 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H02,0.1576 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H03,0.1596 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H01,0.1611 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G12,0.1623 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G11,0.1632 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E10,0.1648 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B02,0.1712 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H09,0.1739 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B07,0.1713 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G02,0.1818 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G07,0.1836 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B06,0.1843 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C08,0.1849 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,H05,0.1854 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F09,0.1857 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G08,0.1846 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F02,0.1874 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D09,0.1882 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D10,0.1902 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B04,0.1919 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E02,0.1898 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C02,0.1924 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G04,0.1984 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D02,0.1989 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D08,0.2026 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G06,0.2029 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B03,0.2036 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C06,0.2052 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,B05,0.1991 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C07,0.2089 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E09,0.2 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G05,0.2081 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F06,0.2106 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,G03,0.215 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C04,0.2195 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F07,0.2215 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F05,0.2225 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C03,0.2227 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F04,0.2204 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F03,0.2215 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D07,0.2218 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E08,0.2176 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E03,0.2268 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,C05,0.2269 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E06,0.2289 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D06,0.2294 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E04,0.2329 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D05,0.2336 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E07,0.2372 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,E05,0.24 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D04,0.2503 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,D03,0.2482 +022510b.GLBRC200DH.1,2010-02-25 17:51:31,F08,0.2011 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E01,0.1284 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B01,0.1289 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A01,0.1308 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H01,0.1313 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D01,0.1267 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H07,0.1294 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C01,0.1336 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H06,0.1344 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C02,0.1346 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E02,0.1364 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F12,0.1374 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F03,0.1375 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H12,0.1376 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B04,0.1383 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C06,0.139 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G05,0.1396 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G04,0.1418 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F04,0.1421 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F01,0.1387 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C03,0.1392 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B12,0.1393 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F09,0.1404 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E12,0.1407 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F05,0.1418 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B03,0.1424 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E06,0.1431 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A05,0.1407 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G07,0.143 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G09,0.1434 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G02,0.1442 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B02,0.1448 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G01,0.145 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C05,0.1458 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B07,0.1471 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H11,0.1488 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D02,0.1489 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D12,0.1449 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B06,0.1451 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F08,0.1464 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E11,0.1465 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B05,0.1478 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F10,0.1455 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G03,0.1485 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A11,0.1506 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C04,0.1518 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G06,0.1519 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A12,0.1523 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F07,0.1523 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H03,0.1525 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G10,0.1539 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C12,0.154 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B11,0.154 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C09,0.1541 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A02,0.1552 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H02,0.1554 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A07,0.1558 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C07,0.156 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G11,0.1562 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E07,0.1563 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H08,0.1575 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H04,0.1575 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A03,0.1583 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E10,0.1585 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A10,0.1594 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B09,0.1595 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G12,0.1524 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F11,0.1539 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C08,0.154 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E08,0.1549 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E03,0.1549 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H10,0.1576 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B08,0.1584 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C10,0.1549 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A04,0.1585 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,G08,0.1592 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D08,0.1618 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D06,0.1623 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E09,0.1626 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D07,0.1633 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H05,0.1636 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,B10,0.1643 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A08,0.1664 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,H09,0.1665 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A09,0.1681 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,C11,0.1618 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D03,0.1661 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D11,0.171 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E04,0.174 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,E05,0.1709 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D09,0.1763 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D05,0.1792 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,A06,0.1824 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D10,0.1825 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,D04,0.1884 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F06,0.1421 +022510b.GLBRC200DH.1,2010-02-25 18:36:07,F02,0.1429 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B01,0.1454 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C02,0.1463 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C01,0.1533 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H06,0.1541 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B04,0.1543 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F04,0.1553 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F12,0.1563 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A05,0.1576 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H07,0.1594 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D01,0.1504 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E01,0.1527 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B03,0.1553 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C06,0.1582 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B02,0.152 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E02,0.1585 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C03,0.1592 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E12,0.1597 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D02,0.1612 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F09,0.1617 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B06,0.1627 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F01,0.1634 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F06,0.1646 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F10,0.1652 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E11,0.1652 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F03,0.1658 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B12,0.1668 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F05,0.1671 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G06,0.1673 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B05,0.1683 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G05,0.1688 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C04,0.1626 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F02,0.1627 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G04,0.1627 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B07,0.164 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G07,0.1641 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G09,0.1655 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C05,0.1679 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E06,0.1685 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G12,0.1701 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A02,0.1712 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A07,0.1712 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A12,0.1715 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H12,0.1716 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D12,0.1718 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A11,0.1723 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D04,0.1725 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F08,0.173 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A03,0.1731 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C09,0.1739 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C08,0.1742 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A01,0.1747 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H11,0.1723 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E05,0.1729 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A04,0.175 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F11,0.1757 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D05,0.1762 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B11,0.1763 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E04,0.1763 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C10,0.1773 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G02,0.1748 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D03,0.1753 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G08,0.1754 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G03,0.1783 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E10,0.1784 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D06,0.1798 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A10,0.18 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G11,0.1804 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E03,0.1807 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G01,0.1764 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,F07,0.1779 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E08,0.178 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B09,0.1805 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B08,0.1808 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,G10,0.1813 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H10,0.1829 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H08,0.1831 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C12,0.179 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D08,0.1844 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H01,0.1859 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E07,0.1867 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,E09,0.1877 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A08,0.1884 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D07,0.1888 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C11,0.1855 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A06,0.1869 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,A09,0.187 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H02,0.1877 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H05,0.1903 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,B10,0.1874 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H09,0.1977 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D11,0.1992 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D09,0.2008 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H03,0.199 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,D10,0.2062 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,H04,0.2087 +022510b.GLBRC200DH.1,2010-02-25 19:20:42,C07,0.178 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B01,0.1439 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H06,0.1455 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D01,0.1485 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H01,0.1543 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F12,0.1587 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E01,0.15 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H07,0.1505 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C02,0.1569 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C01,0.1543 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G05,0.1577 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F04,0.1605 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F01,0.1619 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G07,0.1627 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A05,0.1638 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H12,0.1649 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B04,0.166 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F06,0.1676 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F09,0.1681 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G01,0.1684 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G04,0.1685 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B12,0.1694 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B02,0.1697 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A01,0.1624 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E12,0.1631 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F10,0.1692 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C06,0.1661 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E02,0.1667 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B07,0.1713 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F03,0.1716 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F05,0.1726 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F08,0.1733 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G09,0.1742 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C04,0.1747 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B03,0.1701 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D12,0.1702 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C03,0.1703 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E06,0.1703 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G02,0.1714 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A07,0.1742 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B06,0.1744 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A02,0.1747 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F02,0.1748 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G12,0.1756 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C12,0.1765 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H03,0.1776 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B05,0.1774 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F07,0.1777 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C05,0.1781 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H11,0.1786 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H02,0.1786 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E11,0.1797 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G03,0.1798 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H08,0.1799 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A12,0.1809 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A03,0.1821 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C09,0.1826 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E04,0.1826 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,F11,0.1828 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E05,0.1828 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C08,0.1831 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D02,0.1782 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G08,0.1808 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D04,0.1851 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E08,0.1853 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A04,0.1855 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D06,0.1857 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H05,0.1863 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H10,0.1863 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H04,0.1854 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D05,0.1865 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E03,0.1867 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C07,0.187 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G10,0.1879 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D08,0.1903 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C10,0.1865 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E10,0.187 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B11,0.1874 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A10,0.1879 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E07,0.1887 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B09,0.1908 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B08,0.1911 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A11,0.1887 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,H09,0.1944 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A06,0.1948 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,B10,0.1972 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D07,0.1946 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G11,0.1953 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A08,0.196 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D11,0.199 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,E09,0.2015 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D09,0.2072 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D03,0.1939 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,A09,0.1943 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,D10,0.2142 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,G06,0.1658 +022510b.GLBRC200DH.1,2010-02-25 20:05:16,C11,0.1898 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C02,0.1668 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E01,0.1698 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B01,0.1646 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H06,0.1677 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D01,0.1686 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H07,0.1725 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C01,0.1755 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H01,0.1776 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F04,0.1741 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E02,0.1752 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B03,0.1806 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B02,0.1782 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F12,0.1813 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B04,0.1822 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F01,0.1828 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G05,0.182 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G07,0.1833 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G02,0.1848 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F09,0.1849 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F10,0.1855 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G04,0.1813 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F02,0.1835 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C03,0.1839 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F03,0.1843 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E12,0.1866 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E06,0.1871 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G01,0.189 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D02,0.1895 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A01,0.1899 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F05,0.1915 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G09,0.1865 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A05,0.1868 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F06,0.1877 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H12,0.1924 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G12,0.1935 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C06,0.1901 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E03,0.1937 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C04,0.194 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G10,0.1965 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D12,0.1969 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H03,0.1971 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A02,0.1975 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F08,0.1929 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B07,0.1939 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G08,0.1993 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E04,0.2003 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B06,0.2006 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C05,0.2015 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B05,0.2022 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A07,0.2029 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H05,0.2034 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D04,0.2038 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C09,0.2042 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C08,0.2049 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C12,0.2067 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B12,0.2069 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A03,0.2074 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G03,0.194 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E05,0.1974 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G06,0.1977 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E11,0.198 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,G11,0.204 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H08,0.2041 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E10,0.2056 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E08,0.2057 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D06,0.2082 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D03,0.2091 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A12,0.2091 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H11,0.1979 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F11,0.1998 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H02,0.2005 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,F07,0.201 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H04,0.2079 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D05,0.208 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C07,0.2084 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H10,0.2086 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E07,0.2111 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A04,0.2113 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B11,0.2092 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A06,0.2092 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C10,0.2097 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A11,0.2137 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,C11,0.2152 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B09,0.2156 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,H09,0.2166 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B08,0.2169 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A10,0.2173 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,B10,0.2198 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A08,0.2206 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,A09,0.2216 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D07,0.2195 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D08,0.2114 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,E09,0.2175 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D11,0.2274 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D09,0.2315 +022510b.GLBRC200DH.1,2010-02-25 20:49:52,D10,0.2384 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B01,0.1865 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C02,0.1893 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E01,0.1958 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H06,0.1988 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B03,0.2009 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B02,0.2017 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B04,0.2029 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G04,0.2061 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G02,0.2066 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D01,0.196 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E02,0.1983 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F04,0.1991 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C01,0.2033 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G05,0.2048 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A05,0.2084 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H07,0.2023 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F12,0.2073 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F02,0.2093 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F09,0.2094 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C03,0.2094 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A01,0.2095 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F01,0.2108 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F10,0.211 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G07,0.2115 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G09,0.2126 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C06,0.2134 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F03,0.2136 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H01,0.2137 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F06,0.2171 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H12,0.2174 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G03,0.2191 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E03,0.2195 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G12,0.2211 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F05,0.222 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B07,0.2226 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E12,0.2124 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G01,0.216 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D12,0.2174 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D02,0.2175 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C04,0.2182 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F08,0.2213 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G10,0.2237 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E06,0.216 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H03,0.2227 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H11,0.2251 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D04,0.2265 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A02,0.2267 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B06,0.2269 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B05,0.2273 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D05,0.2308 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C08,0.2309 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A07,0.2271 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E05,0.2279 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C05,0.2292 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H02,0.2302 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C09,0.2308 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G06,0.2312 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D08,0.2312 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C12,0.232 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D03,0.2324 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G11,0.2338 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A03,0.234 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B12,0.234 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E08,0.2342 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H05,0.2344 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C10,0.2346 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F07,0.2351 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H08,0.2352 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A12,0.2352 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A04,0.2365 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,G08,0.2283 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E04,0.2285 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D06,0.231 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E11,0.2327 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H04,0.2329 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B11,0.234 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C07,0.2355 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A11,0.2395 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A10,0.2431 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B09,0.2432 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E10,0.2365 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B10,0.2449 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E09,0.2506 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H09,0.2517 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D11,0.2532 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A06,0.2551 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,H10,0.2395 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,C11,0.24 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,B08,0.2417 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,E07,0.2422 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D07,0.2439 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A08,0.2471 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,A09,0.2474 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D09,0.257 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,D10,0.264 +022510b.GLBRC200DH.1,2010-02-25 21:34:27,F11,0.2309 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B01,0.2151 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H06,0.2236 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C02,0.2186 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E02,0.2268 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F04,0.2272 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G05,0.2312 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B03,0.2328 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D01,0.2331 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C01,0.235 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A05,0.2377 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B04,0.2325 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E01,0.2341 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G04,0.2394 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H07,0.2395 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F09,0.2399 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A01,0.2429 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G02,0.243 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C06,0.2434 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F10,0.2409 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E06,0.2412 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F02,0.2416 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F03,0.2446 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F06,0.2449 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H01,0.2454 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G07,0.2462 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G01,0.248 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F01,0.2484 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D02,0.2528 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E12,0.2528 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F12,0.2451 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C03,0.2461 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E03,0.2489 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F05,0.2491 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H12,0.2564 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H03,0.257 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E04,0.2571 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F08,0.2591 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F07,0.2592 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G12,0.2595 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B07,0.2601 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H04,0.2616 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H11,0.2624 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B06,0.2636 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G08,0.2642 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G09,0.2449 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C04,0.2517 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G03,0.2559 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D04,0.258 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D12,0.2595 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G06,0.2603 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G10,0.2636 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B05,0.2643 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C05,0.2648 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H02,0.265 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E11,0.2662 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A02,0.2667 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C08,0.2673 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C09,0.2677 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,F11,0.2682 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E05,0.2637 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D05,0.264 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D08,0.2653 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E08,0.2673 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H05,0.2688 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E10,0.2707 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H08,0.2708 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B11,0.2724 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C07,0.2728 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A04,0.2732 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C12,0.2734 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,G11,0.2737 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E07,0.274 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A03,0.2764 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A12,0.2794 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B08,0.2811 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A11,0.2816 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B09,0.2824 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,E09,0.2846 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D06,0.2685 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A07,0.2691 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C11,0.2778 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A10,0.2802 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A09,0.2842 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B10,0.2868 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D11,0.2941 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D09,0.2976 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D03,0.2718 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,C10,0.2724 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H10,0.2737 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B12,0.2781 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D07,0.2859 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A08,0.286 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,H09,0.2873 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,A06,0.3004 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,D10,0.3059 +022510b.GLBRC200DH.1,2010-02-25 22:19:01,B02,0.2337 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B01,0.2556 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C02,0.2674 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H06,0.271 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E02,0.2744 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D01,0.2792 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A05,0.2793 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F10,0.2819 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B04,0.2828 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E01,0.2833 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E06,0.284 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G04,0.2845 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F04,0.2684 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C01,0.2817 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B03,0.2824 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H07,0.2874 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G02,0.291 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F02,0.2912 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C03,0.296 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F09,0.2826 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C06,0.2848 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G05,0.2862 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B02,0.2865 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G07,0.2892 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A01,0.2906 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F03,0.2956 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E12,0.2995 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H01,0.3014 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C04,0.3018 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E03,0.3021 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G09,0.2879 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F06,0.2881 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F12,0.2938 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F05,0.2939 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F08,0.2987 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F01,0.2988 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G01,0.3001 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H12,0.3043 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F07,0.3051 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D05,0.3062 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G12,0.3063 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H11,0.3071 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G10,0.3078 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E04,0.3078 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D04,0.3079 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H04,0.3085 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E05,0.31 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E10,0.3127 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D08,0.314 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A07,0.3149 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,F11,0.3161 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C08,0.317 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G06,0.3047 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G03,0.3078 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H03,0.3105 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G08,0.3111 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B06,0.3132 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C09,0.3149 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B05,0.315 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E11,0.3158 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H05,0.3163 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H08,0.3174 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H10,0.3195 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,G11,0.3202 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C07,0.3202 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C10,0.3259 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D02,0.3062 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B07,0.3094 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E08,0.3109 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D06,0.3113 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D12,0.3128 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C05,0.3142 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E07,0.3186 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A02,0.3227 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B11,0.3238 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H02,0.32 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A06,0.3278 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A04,0.3279 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C11,0.3293 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,C12,0.3301 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,H09,0.3308 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B09,0.3315 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A09,0.3318 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A10,0.332 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A12,0.3325 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D07,0.3329 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A03,0.3335 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B12,0.3339 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B08,0.335 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,E09,0.3291 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A11,0.3313 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,A08,0.338 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,B10,0.3444 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D03,0.327 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D11,0.3459 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D09,0.3451 +022510b.GLBRC200DH.1,2010-02-25 23:03:36,D10,0.3598 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B01,0.3064 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H06,0.3174 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C02,0.3183 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F04,0.3185 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G05,0.3216 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E02,0.3246 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A05,0.3261 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F09,0.3283 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F10,0.3319 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B03,0.3321 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C06,0.3328 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H07,0.3333 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B04,0.3338 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C01,0.3352 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G09,0.3355 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E06,0.3293 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E01,0.3299 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B02,0.3399 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F05,0.3402 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E03,0.3407 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F03,0.341 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E12,0.3414 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F12,0.3415 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F02,0.3448 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D01,0.3271 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G04,0.3366 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F06,0.3374 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G07,0.3395 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C03,0.3472 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A01,0.3429 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G01,0.3495 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F08,0.3513 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E04,0.3522 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G03,0.3526 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E08,0.3533 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F07,0.3539 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C04,0.3539 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H12,0.3542 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E10,0.3548 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B07,0.3584 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G12,0.3586 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H11,0.3591 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A07,0.3607 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D02,0.361 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D12,0.3617 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G02,0.3493 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H01,0.3496 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E05,0.353 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D06,0.3554 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H04,0.3566 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H03,0.3572 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E07,0.359 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D04,0.3596 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D08,0.3601 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G10,0.3626 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C09,0.365 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C05,0.3658 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E11,0.3661 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F11,0.3666 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H05,0.3682 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H08,0.3716 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H10,0.3722 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,F01,0.3496 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D05,0.3552 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G06,0.3576 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B06,0.3615 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G08,0.363 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B05,0.3659 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C08,0.3669 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H02,0.3731 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B11,0.3737 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D03,0.3763 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A12,0.3773 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,E09,0.3686 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C07,0.3699 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A10,0.3759 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A04,0.3778 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A09,0.378 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A08,0.3806 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B12,0.3859 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,H09,0.3896 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D09,0.3939 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D11,0.3953 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C10,0.3751 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,G11,0.3752 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A11,0.3797 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C11,0.3809 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B09,0.3811 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A03,0.3827 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B08,0.3831 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,B10,0.3937 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D10,0.4035 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A02,0.3776 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,C12,0.3795 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,D07,0.3846 +022510b.GLBRC200DH.1,2010-02-25 23:48:11,A06,0.3707 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B01,0.3538 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F04,0.3626 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G05,0.368 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E02,0.3693 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C02,0.3754 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E06,0.3754 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H06,0.3623 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D01,0.3692 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A05,0.3763 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C01,0.3767 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H07,0.3774 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E01,0.3778 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G04,0.378 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F06,0.3809 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G02,0.3814 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F09,0.3815 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F12,0.3848 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F02,0.3883 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H12,0.3945 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F01,0.3955 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F10,0.3819 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E12,0.3838 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B04,0.3843 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F05,0.3874 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G09,0.3876 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A01,0.3889 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E03,0.3934 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B02,0.397 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E04,0.3963 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G06,0.3989 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G01,0.4001 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D06,0.4026 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E07,0.4026 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F07,0.4027 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G03,0.4029 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E10,0.4031 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D05,0.4034 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H04,0.4037 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G10,0.4038 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E11,0.4061 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F11,0.4092 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G08,0.4093 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D04,0.4102 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H01,0.4109 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D08,0.4123 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C05,0.4128 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B05,0.4152 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H08,0.4159 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C08,0.4162 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D02,0.4162 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H02,0.4164 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E09,0.4165 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G11,0.4188 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A12,0.4225 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H10,0.4235 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A04,0.4249 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C10,0.4251 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D03,0.4275 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A08,0.4278 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B09,0.4288 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A02,0.4288 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G12,0.3986 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C03,0.3988 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H11,0.404 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H03,0.4073 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A07,0.4078 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H05,0.4121 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C09,0.4129 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C07,0.4163 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A09,0.4236 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A10,0.426 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A11,0.4267 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D07,0.4294 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A03,0.4309 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B12,0.4311 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,H09,0.4325 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B08,0.4327 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D09,0.4407 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D11,0.443 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D10,0.4531 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C06,0.382 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,G07,0.3844 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F03,0.3884 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B03,0.3896 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,F08,0.3934 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E08,0.3954 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,E05,0.4001 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C04,0.4014 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B07,0.4065 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,D12,0.4101 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B06,0.4105 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,A06,0.4181 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B11,0.4228 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C12,0.4261 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,B10,0.4484 +022510b.GLBRC200DH.1,2010-02-26 00:32:46,C11,0.4279 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B01,0.3994 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D01,0.4185 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G05,0.4186 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E02,0.4233 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E01,0.4247 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H06,0.425 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C01,0.4261 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E06,0.424 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F06,0.4302 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F09,0.4312 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A05,0.4318 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C06,0.4333 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E12,0.4333 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C02,0.4335 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G04,0.4339 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F03,0.435 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E03,0.435 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G07,0.4362 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G09,0.4375 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B03,0.4429 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E08,0.4432 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E04,0.4438 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E05,0.4438 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G01,0.4462 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G03,0.4494 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G06,0.4497 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E07,0.4506 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C04,0.4508 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F07,0.4527 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E11,0.4537 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H12,0.4543 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G10,0.4544 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D06,0.4545 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F05,0.4344 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H07,0.438 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B04,0.4398 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F12,0.4399 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F08,0.4404 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A01,0.4425 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F02,0.4433 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G02,0.4458 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C03,0.4481 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G12,0.4526 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B02,0.4553 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D05,0.4553 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B07,0.4567 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G08,0.4589 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A07,0.4594 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B06,0.4615 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H11,0.4618 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C09,0.4623 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C08,0.4631 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C07,0.4645 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D04,0.4647 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H05,0.4649 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D08,0.4656 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H03,0.4664 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A06,0.4698 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D02,0.4718 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E09,0.4726 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A04,0.4735 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H04,0.4738 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H08,0.474 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A08,0.4746 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F11,0.4585 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C05,0.4587 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B05,0.4656 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D12,0.4701 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B11,0.473 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A09,0.4741 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C10,0.4742 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A10,0.4767 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D03,0.4786 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H10,0.4787 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A03,0.4795 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B08,0.48 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H01,0.481 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H09,0.49 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D09,0.4922 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D11,0.4936 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A11,0.4774 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B09,0.4781 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C11,0.4781 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,H02,0.4805 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A02,0.481 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,A12,0.4823 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,C12,0.4826 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B12,0.4864 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,B10,0.5047 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D10,0.501 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F04,0.416 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F10,0.4317 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,F01,0.4434 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,E10,0.4489 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,G11,0.4703 +022510b.GLBRC200DH.1,2010-02-26 01:17:21,D07,0.4785 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B01,0.4281 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F04,0.4336 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E06,0.4376 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D01,0.4384 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G04,0.4477 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C01,0.4505 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G05,0.4513 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E01,0.4517 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F10,0.4519 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H07,0.4521 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C02,0.453 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E12,0.4545 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G07,0.4545 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H06,0.4303 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F06,0.4433 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E02,0.444 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G02,0.4548 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F09,0.4548 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A05,0.4559 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F05,0.4584 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A01,0.4591 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F02,0.4595 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E04,0.4632 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G12,0.4637 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F01,0.4644 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H12,0.4644 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E03,0.4645 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E05,0.4668 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H04,0.4674 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G10,0.4683 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G01,0.4687 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E10,0.4708 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F11,0.4715 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H11,0.472 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F07,0.4736 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C04,0.4742 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C05,0.4757 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C06,0.4564 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G06,0.4573 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F12,0.4576 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F03,0.4588 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B03,0.4642 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E08,0.4677 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B02,0.4703 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C03,0.471 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E07,0.4725 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G08,0.4732 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D05,0.4748 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H03,0.4772 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H05,0.4772 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C07,0.4782 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B05,0.4797 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H01,0.4806 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C09,0.4826 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H08,0.4826 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B06,0.4839 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E09,0.4865 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D12,0.4876 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A06,0.488 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D04,0.4884 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C10,0.4886 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H10,0.4894 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D07,0.4899 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B11,0.4914 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A12,0.4919 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A09,0.4924 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A08,0.4938 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D06,0.476 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A07,0.4774 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C08,0.4797 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G11,0.4811 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D08,0.4859 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H02,0.4862 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D02,0.4895 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C11,0.4933 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A11,0.4948 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D03,0.4955 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A04,0.4953 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,C12,0.4956 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A02,0.4958 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A10,0.4961 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B08,0.4972 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,A03,0.4978 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D09,0.5077 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B09,0.4958 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,H09,0.4973 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B12,0.5 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D11,0.5088 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,D10,0.5183 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B10,0.5248 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G09,0.4569 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B04,0.4634 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,G03,0.4707 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,E11,0.4711 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,B07,0.4745 +022510b.GLBRC200DH.1,2010-02-26 02:01:56,F08,0.458 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F04,0.4763 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B01,0.4668 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D01,0.474 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G05,0.4765 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E01,0.4812 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C01,0.4868 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E12,0.4883 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G04,0.4907 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G07,0.4918 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H07,0.4922 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H06,0.4813 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F09,0.4916 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C06,0.4929 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A05,0.4945 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F12,0.4955 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F03,0.4972 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G01,0.4973 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G06,0.4998 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F10,0.4999 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E05,0.501 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G03,0.5048 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E08,0.5049 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B04,0.5084 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F07,0.4958 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E02,0.4996 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A01,0.5006 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E07,0.5021 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G09,0.5025 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E04,0.5026 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E03,0.506 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G12,0.5107 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H05,0.5126 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B03,0.5129 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A07,0.513 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F02,0.513 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E11,0.5132 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C08,0.5142 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E10,0.5142 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F11,0.5146 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D06,0.515 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C04,0.516 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B05,0.5162 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E09,0.5164 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C03,0.5175 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B02,0.5182 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G08,0.5187 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C05,0.5121 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H12,0.5149 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C07,0.5165 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D05,0.5188 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A06,0.5212 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G02,0.5212 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D12,0.522 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H03,0.5253 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H08,0.5268 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H04,0.5271 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H01,0.5274 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A08,0.5276 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D08,0.528 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C12,0.5291 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A04,0.5292 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H11,0.5301 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A10,0.5311 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B09,0.5317 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C11,0.5326 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A02,0.5337 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B08,0.5339 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H02,0.5361 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G11,0.5365 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C09,0.5196 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C10,0.5238 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A09,0.5255 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A03,0.5378 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D02,0.5379 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B12,0.5415 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H10,0.5438 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D07,0.5295 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B11,0.5311 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A11,0.5353 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D04,0.5382 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D03,0.5472 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D09,0.5477 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D11,0.5491 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,E06,0.4797 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,H09,0.5486 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,D10,0.5532 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B10,0.5676 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F06,0.4849 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F05,0.4899 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F01,0.4949 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,C02,0.503 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B07,0.5093 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,B06,0.5154 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,A12,0.5272 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,G10,0.5299 +022510b.GLBRC200DH.1,2010-02-26 02:46:31,F08,0.5069 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H06,0.4704 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F04,0.4725 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E06,0.4734 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D01,0.4777 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G04,0.484 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G06,0.4926 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G05,0.4931 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B01,0.4774 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F06,0.4804 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E01,0.49 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E12,0.4955 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E04,0.4948 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F05,0.4983 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C01,0.4992 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F03,0.4994 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C06,0.5015 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A01,0.5017 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E07,0.5042 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F01,0.5046 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G09,0.5051 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F12,0.5077 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A05,0.5081 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E08,0.4964 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G07,0.4985 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E05,0.4994 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G02,0.5015 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F10,0.5026 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G12,0.5095 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G01,0.5104 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F11,0.5098 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G03,0.5104 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H04,0.5111 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G08,0.5113 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E10,0.513 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F07,0.5168 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H05,0.5175 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D06,0.5187 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E11,0.5153 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B04,0.5175 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H03,0.52 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H11,0.5203 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G11,0.5207 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C08,0.5215 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C05,0.522 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H08,0.5237 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H01,0.5241 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B03,0.5244 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C04,0.5244 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C07,0.5248 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A07,0.5254 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B06,0.5261 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D05,0.5269 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A06,0.527 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C03,0.5272 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B05,0.5288 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H02,0.5289 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C09,0.5294 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D08,0.5325 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C10,0.5336 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B02,0.5355 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A09,0.5371 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,G10,0.5191 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E09,0.5194 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H12,0.5213 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C02,0.5227 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B07,0.5231 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D07,0.538 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B11,0.538 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C11,0.5405 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A10,0.5409 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H09,0.541 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B09,0.5424 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A12,0.533 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A08,0.5339 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B12,0.5458 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,C12,0.5464 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D03,0.5507 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A02,0.5516 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A11,0.5406 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A04,0.5418 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D04,0.5449 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,A03,0.5516 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D02,0.5526 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D09,0.5547 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D11,0.5586 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D10,0.5599 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E02,0.4872 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F08,0.4933 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H07,0.4956 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B10,0.5759 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F09,0.4993 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,E03,0.5023 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,F02,0.5031 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,H10,0.5358 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,D12,0.5384 +022510b.GLBRC200DH.1,2010-02-26 03:31:06,B08,0.539 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H06,0.4869 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G05,0.4873 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F04,0.4906 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B01,0.4916 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F06,0.4933 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D01,0.4903 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G04,0.5028 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E05,0.5057 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E03,0.5059 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E08,0.506 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G07,0.5064 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E12,0.5067 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E01,0.4979 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F05,0.5009 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F03,0.5025 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E02,0.5064 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C06,0.5085 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G06,0.5094 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E07,0.5102 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G01,0.5087 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A01,0.5091 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C01,0.5093 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F01,0.5104 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F09,0.5108 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G03,0.5116 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F12,0.5123 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F10,0.5132 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A05,0.5141 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G09,0.5141 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E10,0.5186 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H01,0.5187 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G12,0.5168 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F07,0.5175 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F11,0.518 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E11,0.5192 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H05,0.5192 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G08,0.5234 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B04,0.5243 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H03,0.5255 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B07,0.5256 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D06,0.5257 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H04,0.5264 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C05,0.5265 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C08,0.5271 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D05,0.5273 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H11,0.5279 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C09,0.5282 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A07,0.5302 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C04,0.5318 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G11,0.5319 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C03,0.5333 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C02,0.5335 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B06,0.5345 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H08,0.5357 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G02,0.5198 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H12,0.5254 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E09,0.5374 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D07,0.5382 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B09,0.5399 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B11,0.5407 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A09,0.5408 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A08,0.542 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H02,0.5435 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C11,0.5437 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,G10,0.529 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B03,0.5311 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D08,0.5381 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A06,0.5383 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A11,0.5459 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H09,0.5479 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A04,0.5487 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A03,0.5515 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D09,0.5516 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A12,0.5407 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D12,0.5443 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B02,0.5451 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B08,0.5451 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C12,0.5499 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B12,0.55 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D04,0.553 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A02,0.5594 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D10,0.5622 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D02,0.5629 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D11,0.56 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B10,0.5778 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H07,0.5064 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F08,0.5066 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E04,0.5116 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,F02,0.5174 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C07,0.5266 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,B05,0.5324 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,C10,0.5366 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,H10,0.5453 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,A10,0.5458 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,D03,0.554 +022510b.GLBRC200DH.1,2010-02-26 04:15:41,E06,0.4897 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B01,0.5029 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D01,0.504 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H06,0.5049 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E06,0.5061 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F06,0.5079 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G05,0.5034 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F04,0.5053 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F05,0.5139 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E01,0.5156 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G04,0.516 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F03,0.5186 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E08,0.5206 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C01,0.5219 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E02,0.524 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H07,0.5241 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E12,0.5242 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G01,0.5259 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F01,0.5274 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F09,0.5282 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A01,0.5283 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F10,0.5308 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F02,0.5323 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G12,0.5332 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F12,0.5341 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F11,0.5341 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H05,0.5356 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G07,0.521 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E05,0.5225 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F08,0.5233 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E07,0.5233 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,F07,0.5254 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E03,0.5261 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E11,0.5386 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G08,0.5391 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E09,0.5427 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G11,0.5434 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G10,0.5436 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C05,0.5448 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C06,0.5284 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E04,0.5288 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G02,0.5338 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H11,0.5454 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D06,0.5456 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C08,0.546 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B07,0.5473 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H12,0.5496 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H04,0.5516 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A05,0.5394 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B04,0.5437 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H03,0.5439 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C07,0.5448 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C02,0.5476 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C04,0.548 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C03,0.5515 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C09,0.5517 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D05,0.552 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H08,0.5532 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B06,0.5555 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C10,0.5564 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D07,0.5579 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A06,0.5603 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B02,0.561 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B11,0.5634 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H10,0.5635 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A12,0.5683 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D12,0.5684 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A08,0.5686 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A11,0.5702 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B05,0.5529 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A07,0.5535 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H01,0.5538 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D08,0.5633 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H09,0.5639 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A09,0.5644 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B09,0.5648 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A10,0.5715 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B12,0.5742 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D09,0.5751 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D03,0.5751 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B08,0.5688 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A04,0.5693 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D04,0.5722 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A03,0.5759 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,A02,0.5756 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D02,0.5793 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G03,0.5297 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G09,0.5303 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D11,0.5838 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,D10,0.5872 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,E10,0.536 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B03,0.552 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,H02,0.5603 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C12,0.5723 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,B10,0.6049 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,G06,0.526 +022510b.GLBRC200DH.1,2010-02-26 05:00:16,C11,0.5637 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F04,0.5151 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E06,0.5188 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B01,0.5202 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D01,0.524 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G04,0.5284 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H06,0.5309 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E08,0.5385 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F08,0.5394 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C01,0.5406 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G05,0.5409 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G07,0.5421 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C06,0.5434 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E02,0.5439 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E05,0.5456 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F09,0.5463 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A01,0.5488 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E12,0.5488 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G09,0.5492 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F10,0.5508 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F05,0.5411 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E04,0.5428 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F03,0.5469 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E07,0.5474 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E01,0.5492 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F11,0.5526 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H07,0.553 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F02,0.5532 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E10,0.5534 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G02,0.5536 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F12,0.555 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F01,0.5568 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F07,0.5568 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A05,0.5574 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B04,0.5582 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G08,0.5582 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G03,0.5587 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E11,0.5594 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C08,0.5609 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C07,0.5611 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B07,0.5617 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G10,0.5626 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C05,0.5628 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C09,0.5641 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H04,0.5643 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E09,0.5645 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G01,0.5671 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C03,0.5694 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,E03,0.5544 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G12,0.556 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D06,0.5616 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C04,0.5622 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G11,0.564 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C02,0.5652 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B06,0.5704 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H11,0.5715 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C10,0.5716 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B05,0.5723 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B03,0.5729 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H05,0.5698 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D05,0.5709 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A07,0.5732 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H12,0.5744 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B11,0.5769 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B02,0.5777 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A09,0.5791 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A06,0.5797 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C11,0.5797 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D08,0.5805 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A04,0.5821 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H03,0.5832 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H08,0.5785 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A08,0.5835 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,F06,0.5215 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D04,0.5863 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D09,0.5882 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H02,0.5887 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A10,0.59 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B08,0.5833 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A11,0.5868 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H10,0.5876 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,C12,0.5909 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B12,0.5915 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H01,0.593 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D02,0.5964 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D03,0.5975 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D12,0.59 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A02,0.5915 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A12,0.5918 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,H09,0.5954 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,A03,0.5977 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B10,0.6219 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D11,0.5987 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D07,0.5731 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,B09,0.577 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,D10,0.6015 +022510b.GLBRC200DH.1,2010-02-26 05:44:51,G06,0.5384 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E06,0.5223 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G05,0.5235 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H06,0.5273 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B01,0.5277 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F05,0.5355 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E01,0.5361 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G04,0.5366 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D01,0.5244 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F04,0.5261 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F06,0.5277 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F03,0.5372 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E03,0.542 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G09,0.5427 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F09,0.5433 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H07,0.5445 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E12,0.5454 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G07,0.5369 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E08,0.5454 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G06,0.5458 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G03,0.5461 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C06,0.5469 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E04,0.5473 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F10,0.5497 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C01,0.5395 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E07,0.5403 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E05,0.5409 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F07,0.5444 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E02,0.5452 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G01,0.5481 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F01,0.5486 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A01,0.5505 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G02,0.5562 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H05,0.5574 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G11,0.5605 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A05,0.5606 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G10,0.5619 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H03,0.564 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D06,0.5642 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C07,0.5649 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B04,0.5674 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B07,0.5687 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C04,0.5696 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D05,0.5696 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C09,0.5702 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F11,0.5523 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G12,0.5543 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F12,0.5552 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E10,0.5563 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,G08,0.5577 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E09,0.5593 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C05,0.5627 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C02,0.5636 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H11,0.5647 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C03,0.5704 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H04,0.5725 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H01,0.574 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H12,0.5714 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B05,0.5715 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B02,0.5762 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B03,0.5752 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C10,0.5759 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A07,0.5777 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H02,0.5814 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H10,0.5814 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A06,0.5815 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C11,0.5815 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A09,0.5837 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B09,0.5839 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D08,0.584 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A08,0.5874 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A02,0.5895 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H09,0.5844 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B08,0.5876 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D12,0.5906 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C12,0.592 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A10,0.5924 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D09,0.5925 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D04,0.5926 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A12,0.5931 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D02,0.5967 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A03,0.5976 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A11,0.5908 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,A04,0.5909 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F08,0.54 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D11,0.6028 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D10,0.6049 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B12,0.5955 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,F02,0.5542 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,E11,0.5558 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,C08,0.565 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B10,0.6284 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B06,0.5747 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,H08,0.5758 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D07,0.5784 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,B11,0.5827 +022510b.GLBRC200DH.1,2010-02-26 06:29:25,D03,0.5958 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E06,0.5242 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F04,0.5269 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F06,0.53 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G05,0.5309 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D01,0.5323 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G04,0.5365 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B01,0.5308 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H06,0.5323 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E07,0.5456 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F08,0.5456 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E05,0.5474 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F03,0.548 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C01,0.5493 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E04,0.5504 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F05,0.5413 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G07,0.5456 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E12,0.5462 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G06,0.5467 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E01,0.5497 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H07,0.5513 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A01,0.552 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E02,0.5529 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F09,0.5536 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E11,0.5539 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G12,0.554 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E10,0.5554 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E03,0.5561 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D06,0.5564 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F07,0.5572 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F01,0.5573 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G01,0.5574 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G03,0.5574 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F02,0.5594 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A05,0.5606 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H05,0.5621 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H12,0.5631 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G11,0.5632 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E09,0.564 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C08,0.5655 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C04,0.5664 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C05,0.5682 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F11,0.5531 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B04,0.5613 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C02,0.5635 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G08,0.5638 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G02,0.5646 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H11,0.5648 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H03,0.5741 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C03,0.5743 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D07,0.5751 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B07,0.5671 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B06,0.569 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C09,0.5702 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H04,0.5702 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D05,0.5728 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C10,0.5755 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H08,0.5768 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H01,0.5761 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B03,0.5776 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A06,0.5777 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A07,0.5783 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D08,0.5789 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A09,0.5804 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A12,0.5807 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A08,0.582 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B09,0.5823 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H10,0.5825 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C11,0.5832 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A10,0.5844 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B08,0.5853 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H02,0.586 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A11,0.5865 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D04,0.5867 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A04,0.584 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,H09,0.5846 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D12,0.5905 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B12,0.5914 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D09,0.5919 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A03,0.5975 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D03,0.598 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,A02,0.5895 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C12,0.5912 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C06,0.5424 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,E08,0.5434 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D10,0.599 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D02,0.5962 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G09,0.5509 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F10,0.552 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,G10,0.5588 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,C07,0.5651 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B10,0.6232 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,D11,0.6024 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B05,0.5755 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B11,0.5835 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,F12,0.5524 +022510b.GLBRC200DH.1,2010-02-26 07:14:00,B02,0.5765 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H06,0.5447 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B01,0.5461 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F04,0.5498 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D01,0.5403 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G05,0.5488 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F06,0.5499 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E01,0.5536 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F05,0.5581 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E12,0.5586 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H07,0.5621 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G01,0.5625 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C06,0.5627 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F01,0.5643 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E07,0.565 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F08,0.5665 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F09,0.5665 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A01,0.5665 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F07,0.5686 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G04,0.561 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G07,0.5638 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E05,0.5639 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F12,0.5649 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F11,0.5721 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E04,0.5742 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G03,0.5747 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E08,0.5666 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F03,0.5674 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F10,0.5734 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H05,0.5745 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E11,0.5761 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E09,0.5766 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G12,0.577 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E03,0.5787 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A05,0.5788 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D06,0.5794 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B04,0.5803 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B07,0.5812 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C07,0.5815 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C08,0.5821 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G08,0.5829 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E10,0.5792 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E02,0.58 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C04,0.5831 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,F02,0.5857 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C09,0.586 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C02,0.5865 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H01,0.5866 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C05,0.587 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G11,0.5876 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G10,0.5901 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H03,0.5834 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B06,0.5858 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A07,0.5906 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H04,0.5907 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A06,0.5912 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C10,0.5915 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G02,0.5925 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A09,0.5927 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A12,0.5934 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B05,0.5944 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H11,0.5958 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B03,0.5968 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D05,0.5971 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B09,0.5981 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A08,0.5982 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H08,0.59 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C12,0.6 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D12,0.6006 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H02,0.6007 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A10,0.6015 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A11,0.6045 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A02,0.6084 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D09,0.6084 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H10,0.609 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H09,0.5954 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A04,0.5976 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,A03,0.6161 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D11,0.6165 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,E06,0.5455 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C01,0.5616 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G09,0.5661 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D02,0.6195 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D03,0.6199 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C11,0.5983 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B11,0.601 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D08,0.602 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B08,0.6031 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,G06,0.5675 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B10,0.6482 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D04,0.6092 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B12,0.6153 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,H12,0.5841 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D07,0.5926 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,C03,0.5927 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,B02,0.5997 +022510b.GLBRC200DH.1,2010-02-26 07:58:35,D10,0.6216 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E06,0.5381 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F04,0.5378 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B01,0.5473 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H06,0.5478 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G04,0.547 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D01,0.552 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G05,0.5567 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G06,0.5609 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E01,0.5619 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E04,0.5619 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G07,0.5634 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E07,0.5645 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E05,0.565 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F09,0.5654 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F11,0.5674 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F01,0.5694 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E08,0.559 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G09,0.5594 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C01,0.5629 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F08,0.5633 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C06,0.5639 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C02,0.565 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F10,0.5703 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E03,0.5707 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F12,0.5709 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E09,0.5713 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G03,0.5719 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G11,0.5722 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B04,0.5733 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C03,0.5737 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B03,0.5748 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F03,0.5666 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G01,0.5676 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E12,0.5685 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G12,0.5692 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H07,0.57 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E11,0.5712 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F07,0.5723 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A01,0.5749 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B02,0.5762 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G08,0.577 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E10,0.5758 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F02,0.5766 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H11,0.58 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A05,0.5802 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D06,0.581 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C04,0.5772 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G10,0.5787 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H04,0.5801 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C08,0.5825 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C09,0.5851 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H05,0.5852 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,G02,0.5858 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D05,0.588 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H03,0.5893 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H12,0.5849 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B07,0.588 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C10,0.5917 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H08,0.594 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A03,0.5947 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D03,0.5947 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D07,0.595 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A04,0.5967 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B06,0.5925 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D04,0.601 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A09,0.6026 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B08,0.6053 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H02,0.6061 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C12,0.6071 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A06,0.6078 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A11,0.6088 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D12,0.6096 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H01,0.5941 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H10,0.595 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B09,0.5981 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B12,0.6109 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A10,0.6114 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F06,0.5451 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D11,0.6179 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,H09,0.5986 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B11,0.5991 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D02,0.6004 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D08,0.6033 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,F05,0.5663 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A07,0.6052 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D09,0.6065 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A08,0.61 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C07,0.5834 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B05,0.5889 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A02,0.5923 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C11,0.5968 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,B10,0.6479 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,A12,0.6076 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,D10,0.6222 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,E02,0.5722 +022510b.GLBRC200DH.1,2010-02-26 08:43:08,C05,0.5799 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G05,0.5602 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E06,0.5616 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F04,0.5623 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F06,0.5642 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B01,0.5627 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E05,0.5717 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F05,0.5723 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E07,0.5726 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G09,0.5735 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G04,0.5742 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D01,0.5689 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E08,0.5743 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F07,0.5761 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F09,0.5765 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F03,0.5763 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G07,0.577 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H06,0.5786 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C01,0.5791 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E09,0.5818 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F11,0.5826 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F08,0.5793 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E03,0.5802 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G06,0.5811 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E04,0.5815 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G03,0.5854 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C02,0.5861 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E10,0.5866 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G01,0.587 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E12,0.5873 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G12,0.5898 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F12,0.5899 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E02,0.5865 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C03,0.5878 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A01,0.591 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C04,0.5936 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G08,0.5951 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G10,0.5952 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B04,0.5957 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C08,0.5957 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B03,0.5965 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C05,0.5977 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G11,0.5893 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A05,0.599 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H11,0.6012 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B07,0.604 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,G02,0.605 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C09,0.6072 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B06,0.6087 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H12,0.6089 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D05,0.6093 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A03,0.6103 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B05,0.6104 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A02,0.6135 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D07,0.6147 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H10,0.6156 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A04,0.6169 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C11,0.6189 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H09,0.6213 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A07,0.6226 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A06,0.6245 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D06,0.5992 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H05,0.5994 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C07,0.6 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B02,0.6014 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B12,0.629 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H02,0.6297 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D09,0.6303 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A12,0.6311 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D10,0.638 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B10,0.6659 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E01,0.5742 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C10,0.6063 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H04,0.614 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H03,0.6141 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H01,0.6177 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C06,0.5804 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F01,0.5848 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F10,0.5851 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B08,0.6188 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D08,0.62 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B09,0.6207 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,B11,0.622 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D04,0.6221 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A08,0.6232 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D02,0.6236 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A09,0.624 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,E11,0.586 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H07,0.5895 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,F02,0.5936 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,C12,0.6259 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A11,0.6317 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D11,0.6448 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D03,0.6146 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,H08,0.6159 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,A10,0.6258 +022510b.GLBRC200DH.1,2010-02-26 09:27:40,D12,0.6315 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E06,0.5477 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F04,0.5532 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G05,0.57 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B01,0.5552 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D01,0.5576 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H06,0.5612 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G04,0.5643 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E08,0.5656 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G09,0.5713 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E05,0.5723 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C01,0.572 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E04,0.5733 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G06,0.5754 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E09,0.5768 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E12,0.5771 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A01,0.5771 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H07,0.5798 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F03,0.5806 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E11,0.5811 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C06,0.5819 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F10,0.5821 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E10,0.5827 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E02,0.5771 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F09,0.5784 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F05,0.5788 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F11,0.5793 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E03,0.5832 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G12,0.5837 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E01,0.5843 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G02,0.5844 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F07,0.5844 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G11,0.5848 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F02,0.585 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F12,0.5858 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H04,0.5902 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G03,0.5904 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F01,0.5916 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H11,0.5943 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G08,0.5896 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G10,0.5909 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H12,0.5992 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C08,0.6 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A05,0.6 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B07,0.6004 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C05,0.6008 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C03,0.6017 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C09,0.6021 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H03,0.6041 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D07,0.6067 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B03,0.6072 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H09,0.6084 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B06,0.6098 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D05,0.6103 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C07,0.5955 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C02,0.5965 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H05,0.5978 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D06,0.5979 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B05,0.6123 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C11,0.6127 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H01,0.6137 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A09,0.6138 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A07,0.6141 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B11,0.6156 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F06,0.5566 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A11,0.6193 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A10,0.6216 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A02,0.6218 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D08,0.6221 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A08,0.6222 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B08,0.6224 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A12,0.624 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C04,0.5993 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B04,0.6008 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,E07,0.5703 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D04,0.6246 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D03,0.6248 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C12,0.625 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A03,0.6257 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D10,0.6345 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D11,0.6358 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B10,0.6661 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H10,0.6062 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H08,0.607 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,C10,0.6074 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B02,0.6102 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,H02,0.6111 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B09,0.6141 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,F08,0.5774 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G07,0.5783 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A06,0.6196 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,A04,0.6204 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D09,0.6248 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,B12,0.6262 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,G01,0.5972 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D02,0.6374 +022510b.GLBRC200DH.1,2010-02-26 10:12:12,D12,0.625 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G05,0.5644 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F04,0.5673 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E07,0.5732 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H06,0.5699 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E08,0.5759 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E05,0.5758 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G04,0.5794 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E12,0.5804 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F07,0.5817 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F03,0.5827 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G09,0.5788 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E01,0.5822 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G07,0.5824 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C01,0.5844 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F11,0.5849 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C06,0.5859 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F09,0.5879 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E11,0.5879 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E03,0.589 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E10,0.5892 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G12,0.5896 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E09,0.5899 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E02,0.59 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E04,0.5843 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H07,0.5857 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G11,0.5905 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G03,0.5928 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A01,0.593 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G10,0.594 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F02,0.5953 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F10,0.5891 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F12,0.5917 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C04,0.5997 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G08,0.6 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C02,0.6008 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C08,0.6026 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H05,0.6029 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C05,0.6036 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H12,0.604 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A05,0.6052 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C03,0.6064 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C09,0.6076 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B07,0.6077 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F01,0.5927 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G02,0.5965 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H10,0.6119 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C10,0.6119 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D05,0.6137 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B03,0.6139 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B05,0.6155 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,E06,0.5619 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C11,0.6176 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B11,0.6194 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B09,0.62 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H01,0.6201 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A04,0.6241 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D08,0.6244 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H11,0.5994 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C07,0.6015 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D06,0.6016 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B04,0.6023 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D01,0.5665 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B01,0.567 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F06,0.5673 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B08,0.6255 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A06,0.6261 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A08,0.6274 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D12,0.6279 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A10,0.6282 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D09,0.6297 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B12,0.6334 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A12,0.6341 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D02,0.637 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H04,0.6062 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B06,0.613 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B02,0.6131 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H09,0.6148 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H08,0.6168 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F05,0.5808 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G06,0.585 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A07,0.6188 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H02,0.621 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A09,0.6225 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,G01,0.5926 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A11,0.6247 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D04,0.6249 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,C12,0.6313 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A03,0.6337 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D10,0.6387 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,B10,0.673 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,H03,0.608 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D07,0.6121 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,A02,0.6256 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D03,0.6299 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,D11,0.6387 +022510b.GLBRC200DH.1,2010-02-26 10:56:45,F08,0.5895 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F06,0.5676 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F04,0.5678 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B01,0.5691 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G05,0.5621 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D01,0.5733 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E07,0.5739 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H06,0.5765 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E05,0.5769 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F05,0.5779 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G07,0.5812 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F11,0.5822 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F07,0.5831 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G04,0.5775 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F03,0.5779 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G09,0.5788 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C06,0.5822 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C01,0.5836 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G03,0.5836 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G06,0.5839 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E11,0.5862 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F09,0.5863 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E03,0.5865 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G11,0.5874 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E12,0.5877 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C02,0.5878 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E09,0.5883 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G12,0.5887 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H07,0.5899 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F08,0.5835 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F10,0.5868 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G10,0.592 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C03,0.5923 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B04,0.5949 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G08,0.5949 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F01,0.5961 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F02,0.5964 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A01,0.5968 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C08,0.5973 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G01,0.5981 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E01,0.5905 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,G02,0.5993 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H11,0.6014 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H05,0.6016 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A05,0.6027 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B07,0.6031 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C10,0.6041 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C09,0.6043 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D07,0.6063 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H03,0.6068 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B05,0.6078 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E02,0.5934 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C07,0.5952 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C05,0.5971 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B03,0.5977 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B06,0.6118 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C11,0.612 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H10,0.612 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D03,0.6126 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H09,0.6134 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H08,0.6141 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A03,0.6148 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B11,0.6165 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H01,0.6174 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E06,0.5648 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A04,0.6177 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D08,0.6196 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A09,0.6213 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B08,0.6213 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D02,0.6228 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C12,0.6239 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A08,0.6239 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A10,0.624 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H02,0.624 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B02,0.5994 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D06,0.6006 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A11,0.6249 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B12,0.6275 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A06,0.6288 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B10,0.6687 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E08,0.5742 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H12,0.6057 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,H04,0.6082 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D05,0.6082 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A02,0.6148 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,B09,0.6173 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E04,0.5856 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D04,0.6217 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A07,0.6231 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,E10,0.5877 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,F12,0.5913 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D09,0.6252 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,A12,0.6288 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D12,0.6303 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,C04,0.594 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D10,0.6354 +022510b.GLBRC200DH.1,2010-02-26 11:41:17,D11,0.637 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B01,0.5687 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E06,0.5703 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G05,0.5719 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F06,0.5759 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F04,0.5759 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D01,0.5782 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E08,0.5804 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E07,0.5836 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E05,0.584 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G09,0.5873 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C01,0.5878 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F05,0.5882 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G04,0.5892 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F03,0.5895 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F07,0.5909 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F09,0.5916 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F08,0.5917 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G07,0.5922 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E04,0.5922 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E11,0.5947 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F10,0.5955 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E01,0.599 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E09,0.5901 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F11,0.5911 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G11,0.6008 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D06,0.6013 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C08,0.6025 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C05,0.6064 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B04,0.607 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C07,0.6078 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F02,0.6079 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G01,0.6092 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A01,0.5942 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E10,0.5975 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C03,0.6115 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H07,0.6115 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C10,0.6117 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C02,0.6126 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C09,0.6129 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A05,0.6139 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D05,0.6184 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G02,0.62 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H12,0.62 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H05,0.623 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H04,0.6234 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B09,0.6242 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D08,0.6242 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H06,0.5985 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G03,0.5993 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G12,0.5998 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C04,0.603 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B08,0.6251 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B02,0.6263 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H10,0.6265 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H03,0.6306 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A09,0.6307 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A10,0.6312 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D04,0.6312 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H08,0.6319 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A03,0.6348 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D09,0.6369 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A11,0.6376 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A02,0.638 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C12,0.6385 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A07,0.6391 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D10,0.6397 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D12,0.6426 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H02,0.6451 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H01,0.6528 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B10,0.6768 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G08,0.6042 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F01,0.6044 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G10,0.6062 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B07,0.6132 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B06,0.6133 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H11,0.6159 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C06,0.5852 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D07,0.6201 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B03,0.6231 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,C11,0.6237 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E03,0.5938 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A08,0.6319 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,G06,0.5954 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E12,0.597 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,H09,0.6362 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D03,0.6372 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B12,0.6381 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A12,0.641 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D02,0.65 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,D11,0.6507 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,F12,0.6 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B05,0.6195 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,B11,0.6266 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A04,0.6289 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,A06,0.6372 +022510b.GLBRC200DH.1,2010-02-26 12:25:50,E02,0.6039 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E06,0.5762 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D01,0.5768 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F04,0.5771 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G05,0.578 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F06,0.5792 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B01,0.5839 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F05,0.5875 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G04,0.5888 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H06,0.5869 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F07,0.592 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G07,0.5937 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E12,0.5941 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F09,0.595 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E09,0.5954 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F11,0.5958 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C01,0.5962 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C06,0.5969 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G09,0.5919 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F10,0.5998 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F12,0.5999 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G02,0.6014 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E01,0.6016 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E10,0.6035 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C02,0.6051 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F03,0.6054 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C04,0.6093 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G08,0.6095 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H05,0.61 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C08,0.6109 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G12,0.6115 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C03,0.6122 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G03,0.6126 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G10,0.613 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G01,0.6138 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A05,0.6175 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B02,0.6183 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H04,0.6192 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C09,0.6222 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B03,0.6236 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B06,0.6241 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A01,0.6022 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B05,0.6247 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H03,0.625 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D05,0.6271 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A04,0.6312 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A09,0.6334 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B09,0.6339 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H01,0.6347 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B08,0.635 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A03,0.6356 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A10,0.6358 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C12,0.6359 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B11,0.6362 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A08,0.6369 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D02,0.6405 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D04,0.6406 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D09,0.6428 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A12,0.6446 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B12,0.6521 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D10,0.6534 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D11,0.6547 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B10,0.6907 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E02,0.6051 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F02,0.6082 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E03,0.6112 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G11,0.6115 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F01,0.6118 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C07,0.6134 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B04,0.6152 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D06,0.6162 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,B07,0.6182 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C10,0.6185 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H12,0.6217 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E08,0.5863 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E07,0.5869 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E05,0.5884 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H08,0.6247 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H02,0.6256 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H11,0.6284 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A02,0.6287 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H09,0.6305 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C11,0.6308 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E04,0.5969 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H10,0.6365 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A06,0.638 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D08,0.6388 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A07,0.6392 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D03,0.6411 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D12,0.6422 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,A11,0.6436 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,E11,0.5984 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,H07,0.5986 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,F08,0.5993 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,C05,0.6107 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,D07,0.6284 +022510b.GLBRC200DH.1,2010-02-26 13:10:22,G06,0.5988 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B12,0.0625 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F01,0.0634 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H02,0.0644 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H10,0.0652 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A11,0.0653 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H11,0.0659 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H09,0.066 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H08,0.0661 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A08,0.0661 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H05,0.0667 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H01,0.0667 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H06,0.0672 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A09,0.0673 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A10,0.0674 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A07,0.0684 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A04,0.0687 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A02,0.0689 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H12,0.0698 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A01,0.0704 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A12,0.071 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F03,0.1011 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B05,0.102 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B03,0.1024 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C05,0.1038 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C04,0.1041 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F02,0.1052 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B04,0.1079 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G04,0.1111 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D03,0.1156 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D04,0.1166 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G11,0.117 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B06,0.1171 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C03,0.1186 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E05,0.1189 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B09,0.1193 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F06,0.1223 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B07,0.1226 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G08,0.1227 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E03,0.1247 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B11,0.1256 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G05,0.1259 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D06,0.1268 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G09,0.1273 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F11,0.1278 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D08,0.1315 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G10,0.1324 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C09,0.1363 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F09,0.1365 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D07,0.1412 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F10,0.1413 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D05,0.1426 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E11,0.1448 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D12,0.065 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F12,0.0651 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G12,0.0662 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H03,0.0674 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A05,0.0674 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H04,0.0675 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E01,0.0678 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A06,0.0689 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B01,0.0691 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,H07,0.0696 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,A03,0.0708 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D01,0.072 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E12,0.0752 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B02,0.0768 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G02,0.1025 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D02,0.1146 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F04,0.1154 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F07,0.1194 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E10,0.1473 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E07,0.148 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D11,0.1495 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E09,0.1503 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G07,0.1239 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F05,0.1254 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C06,0.1307 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,F08,0.1307 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C07,0.1312 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C08,0.1374 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B08,0.1393 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E08,0.1415 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D10,0.1466 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,D09,0.1478 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C12,0.0636 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G01,0.0637 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C01,0.0679 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G03,0.1016 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E02,0.1021 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C02,0.1022 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,G06,0.1102 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E06,0.126 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C10,0.1608 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,C11,0.1314 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,B10,0.1318 +022510b.GLBRC200DH.2,2010-02-25 16:17:00,E04,0.1343 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C09,0.1047 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A11,0.1056 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C02,0.1059 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B12,0.1059 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A10,0.1074 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B10,0.109 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B03,0.1101 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C03,0.1102 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B09,0.1121 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F11,0.1121 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C08,0.1131 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A02,0.1132 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B07,0.1133 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B08,0.1138 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C01,0.1151 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D02,0.1152 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C07,0.1157 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B04,0.1161 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B06,0.1164 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D11,0.1182 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D10,0.1185 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A08,0.1192 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D01,0.1203 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D07,0.1204 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D05,0.1211 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A05,0.1211 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A03,0.1215 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D12,0.1215 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A04,0.1219 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A09,0.1219 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D08,0.1219 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D04,0.1233 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A06,0.1242 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A07,0.1243 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A12,0.126 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G02,0.1262 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H12,0.127 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E02,0.1285 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G10,0.1286 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D09,0.13 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E12,0.1316 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E10,0.132 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G03,0.1329 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G09,0.1343 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G08,0.1345 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F01,0.1348 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G04,0.1349 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G05,0.1365 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E01,0.1369 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H02,0.137 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H01,0.1375 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F08,0.1377 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E05,0.1385 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H10,0.1386 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F10,0.1395 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F06,0.1399 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E03,0.1405 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E07,0.1416 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E06,0.1418 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E08,0.1422 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E09,0.1456 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H08,0.1465 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G11,0.1082 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B02,0.1086 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B11,0.11 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C12,0.1115 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C10,0.1118 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C11,0.112 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E11,0.1143 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C04,0.1146 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C05,0.1179 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H05,0.147 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H04,0.1474 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H07,0.1478 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H11,0.1232 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,A01,0.1254 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G01,0.1271 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H09,0.1507 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F02,0.1317 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G07,0.1333 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F03,0.1355 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F09,0.1377 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G06,0.1378 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F04,0.1384 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F07,0.1387 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,E04,0.1415 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H03,0.1443 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,H06,0.1507 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F12,0.1159 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,C06,0.1169 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B01,0.1174 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D03,0.1189 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,G12,0.1193 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,D06,0.1254 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,F05,0.1371 +022510b.GLBRC200DH.2,2010-02-25 16:22:02,B05,0.1032 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B12,0.1036 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C12,0.1055 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A11,0.1136 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H12,0.1081 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H01,0.1578 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F12,0.1643 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A10,0.1921 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A12,0.1212 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A01,0.1987 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A09,0.2117 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G12,0.1578 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D12,0.1581 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H11,0.1833 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G01,0.261 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C01,0.2652 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F01,0.227 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H10,0.2302 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E01,0.2333 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D01,0.2658 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A02,0.29 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A03,0.3022 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B10,0.3025 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B01,0.2634 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H09,0.3046 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A08,0.306 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A04,0.3096 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A05,0.314 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H04,0.3194 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E11,0.3206 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H03,0.3229 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H05,0.3231 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G10,0.3292 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C11,0.2966 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H02,0.3005 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B09,0.3054 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C10,0.3059 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A07,0.3138 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G11,0.3156 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E12,0.1623 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F11,0.3195 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D11,0.3396 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,A06,0.3396 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H06,0.3436 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H08,0.3446 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F02,0.3958 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B07,0.4158 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C08,0.4184 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E02,0.4231 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C09,0.3593 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G02,0.3748 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B03,0.4279 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C07,0.4292 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G08,0.4303 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G03,0.4323 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F10,0.4324 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C02,0.4431 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G07,0.4436 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B04,0.4529 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E09,0.455 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F08,0.4556 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G04,0.4671 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C04,0.4681 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F06,0.4694 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C06,0.4695 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E08,0.4712 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B11,0.2097 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B02,0.4005 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D10,0.4046 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E10,0.4146 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F05,0.4735 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F04,0.4766 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G05,0.4773 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D03,0.478 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D07,0.4844 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D09,0.442 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C05,0.4876 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F03,0.492 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E07,0.4925 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D06,0.4961 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,H07,0.3587 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G09,0.3847 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B08,0.4038 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B06,0.4473 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D08,0.4517 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D05,0.4551 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D02,0.4628 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E03,0.5039 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E05,0.5057 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E06,0.5059 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,C03,0.4679 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,E04,0.4931 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F09,0.4284 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,D04,0.513 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,B05,0.4568 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,G06,0.46 +022510b.GLBRC200DH.2,2010-02-25 17:09:03,F07,0.48 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C12,0.1164 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E01,0.1177 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B01,0.1193 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E12,0.1242 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H06,0.1275 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F09,0.128 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A07,0.1281 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A12,0.1288 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G07,0.1305 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B09,0.1314 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C09,0.1316 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H07,0.1318 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F11,0.1319 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G09,0.132 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B07,0.1322 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B06,0.1324 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C08,0.1327 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A11,0.1336 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H04,0.1355 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A05,0.1358 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C10,0.1363 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E08,0.1372 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B08,0.1374 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C11,0.1377 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G12,0.1377 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E09,0.1386 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E10,0.1391 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D06,0.1392 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G11,0.1402 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F10,0.141 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F07,0.1412 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A03,0.1413 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H01,0.1426 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B10,0.1426 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D07,0.1438 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H12,0.1444 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H03,0.1455 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A09,0.1456 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B12,0.113 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D01,0.1149 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A01,0.1203 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E07,0.1467 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D08,0.1471 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A10,0.1479 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C05,0.149 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D09,0.1497 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H09,0.1502 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H08,0.1504 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F01,0.1266 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C06,0.1276 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A06,0.1292 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D11,0.1514 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H10,0.1525 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D05,0.1527 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F06,0.1595 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B04,0.1623 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F02,0.1644 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C02,0.167 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F12,0.1323 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F08,0.1324 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C07,0.1334 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G08,0.137 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A04,0.1372 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C03,0.1767 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G04,0.1774 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G03,0.1861 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E05,0.1888 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F04,0.1956 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G10,0.1374 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H05,0.1392 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G01,0.1395 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G06,0.1464 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H02,0.1465 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B05,0.1482 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D10,0.1508 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,H11,0.1521 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B03,0.1554 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C01,0.1203 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D12,0.1278 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D04,0.2103 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E02,0.1662 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G02,0.1688 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,G05,0.1717 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E06,0.1772 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F05,0.1793 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E04,0.2043 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,F03,0.2102 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E03,0.2217 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A02,0.1342 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B11,0.1403 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,E11,0.141 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,A08,0.1467 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,B02,0.1504 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,C04,0.1592 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D02,0.1708 +022510b.GLBRC200DH.2,2010-02-25 17:53:41,D03,0.1961 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D01,0.1104 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E01,0.1122 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E12,0.1183 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B01,0.1186 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H06,0.1199 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H07,0.1232 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C01,0.1249 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F01,0.1253 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F06,0.1275 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H01,0.1281 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F08,0.1286 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B02,0.129 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D12,0.1293 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G09,0.1295 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F09,0.1301 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F11,0.1303 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G05,0.1306 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G01,0.1323 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G12,0.1324 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E07,0.1329 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E05,0.1341 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C06,0.135 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A12,0.135 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E09,0.1352 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H05,0.1355 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A11,0.1357 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B09,0.1359 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E08,0.136 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C08,0.1373 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E06,0.1376 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B07,0.1376 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C10,0.1382 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H09,0.1392 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B06,0.1392 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D05,0.1395 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F10,0.1398 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C11,0.1407 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B10,0.1415 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A07,0.1437 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E04,0.144 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A05,0.1444 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D04,0.1454 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A04,0.1457 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F04,0.146 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A01,0.1125 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B12,0.1161 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A09,0.1473 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E10,0.1475 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C02,0.149 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D02,0.1494 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D06,0.1506 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C03,0.1506 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C12,0.1207 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G06,0.1289 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G07,0.1295 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G08,0.1308 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A10,0.1508 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D10,0.1564 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D11,0.1587 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A06,0.1594 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D09,0.1604 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H03,0.1311 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H04,0.1314 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C04,0.1316 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B04,0.1332 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B03,0.1334 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H12,0.1353 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G11,0.1363 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C09,0.1372 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F02,0.1712 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G03,0.1774 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F03,0.1839 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G02,0.1899 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H11,0.1379 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H10,0.1389 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B08,0.1398 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H08,0.1405 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A03,0.1421 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C07,0.1427 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D07,0.1512 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D03,0.1523 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A08,0.1541 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G04,0.1547 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,D08,0.1567 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E03,0.1708 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,H02,0.1283 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F12,0.1293 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F05,0.1295 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,F07,0.1307 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,G10,0.1331 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,C05,0.1339 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,A02,0.1363 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B11,0.1429 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E11,0.1526 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,B05,0.1355 +022510b.GLBRC200DH.2,2010-02-25 18:38:16,E02,0.1639 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D01,0.1247 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E01,0.1278 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A01,0.1318 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F01,0.1374 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B02,0.1382 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E12,0.1419 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G06,0.1421 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G07,0.1439 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C05,0.1449 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H06,0.1452 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H04,0.1455 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B05,0.1457 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D05,0.1484 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F05,0.1484 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G08,0.1488 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F09,0.1488 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G01,0.149 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D02,0.1491 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C09,0.1496 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A12,0.1497 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A02,0.1503 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B07,0.1503 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B09,0.1504 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F08,0.1505 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B01,0.1305 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G10,0.1509 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C08,0.1511 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G12,0.1515 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C07,0.1517 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H05,0.1517 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C10,0.1518 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H03,0.1535 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E09,0.154 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G11,0.1546 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C11,0.1549 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H02,0.1551 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E08,0.1556 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F07,0.1565 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A03,0.1569 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C03,0.1575 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E06,0.1586 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H11,0.1596 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F10,0.1601 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A06,0.1606 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A04,0.1612 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B11,0.1613 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D04,0.1617 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H10,0.1625 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H09,0.164 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D06,0.1658 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E04,0.167 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D03,0.1672 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B12,0.1355 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C01,0.1372 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F04,0.1672 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A09,0.1686 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D11,0.1713 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A10,0.1715 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D10,0.1739 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E02,0.1751 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F02,0.1775 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D09,0.178 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E03,0.1906 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G05,0.1408 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C04,0.1421 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G09,0.1444 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H01,0.1469 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F12,0.1472 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C06,0.1474 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H07,0.1477 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C12,0.149 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F06,0.1491 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D12,0.153 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B08,0.1553 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F03,0.2005 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E05,0.157 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B10,0.1571 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H08,0.161 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A11,0.1647 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,H12,0.165 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G04,0.1688 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E10,0.1695 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A08,0.1722 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D08,0.1748 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G02,0.1892 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B03,0.1379 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,C02,0.1429 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,F11,0.1448 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B04,0.1462 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E07,0.1495 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,B06,0.1519 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,E11,0.1545 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A07,0.1559 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,A05,0.1597 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,D07,0.1661 +022510b.GLBRC200DH.2,2010-02-25 19:22:51,G03,0.1901 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E01,0.1248 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E12,0.1348 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H06,0.135 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F01,0.1366 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H07,0.1366 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H03,0.1421 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B02,0.1427 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H02,0.1427 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C12,0.1428 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B03,0.1429 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F12,0.1439 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G01,0.1448 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G07,0.145 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A06,0.1466 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H04,0.1467 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F11,0.1477 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B04,0.1482 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H12,0.1486 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A02,0.1487 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G08,0.15 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D01,0.1228 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A01,0.1266 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B06,0.1519 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C08,0.1519 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A12,0.152 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B07,0.1527 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B08,0.1539 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G05,0.1546 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H08,0.1551 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A11,0.1563 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A03,0.1564 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G11,0.1569 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A04,0.1574 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A05,0.158 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F09,0.1611 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D06,0.1619 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E07,0.1628 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F06,0.1639 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C03,0.166 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A09,0.1667 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D11,0.1669 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B01,0.1325 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C01,0.1338 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E09,0.1678 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D10,0.1706 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E06,0.172 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E08,0.1726 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E05,0.1731 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D03,0.1757 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E11,0.1757 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D09,0.1773 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G04,0.1858 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H01,0.1411 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G06,0.1419 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C04,0.144 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D12,0.1449 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G12,0.1453 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C02,0.1455 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A07,0.1478 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B05,0.1482 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C06,0.1488 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H05,0.1499 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D02,0.1502 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D05,0.1512 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C09,0.1517 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B09,0.1518 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C10,0.1536 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H11,0.1538 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H10,0.1541 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,H09,0.1549 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C11,0.1555 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G03,0.2201 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B10,0.1565 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B11,0.157 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D07,0.1656 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D04,0.1665 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A08,0.169 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,D08,0.1695 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F07,0.1742 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F10,0.1791 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E04,0.1797 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,B12,0.1326 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E10,0.1901 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E02,0.1962 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,E03,0.2062 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F02,0.2079 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G02,0.2193 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F03,0.2259 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G09,0.1451 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C05,0.1477 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,G10,0.1535 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F05,0.1654 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,A10,0.1674 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F08,0.1675 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,F04,0.1884 +022510b.GLBRC200DH.2,2010-02-25 20:07:26,C07,0.1573 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E01,0.1452 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B01,0.151 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H06,0.1515 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A01,0.153 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B12,0.1544 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H02,0.1564 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H07,0.1581 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H04,0.1587 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E12,0.1599 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H03,0.1601 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G01,0.1603 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G07,0.1607 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B02,0.1608 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G05,0.161 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G09,0.1615 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C02,0.162 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F09,0.1642 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G10,0.1656 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C05,0.1665 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F12,0.1671 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E07,0.1672 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C12,0.1692 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G08,0.1693 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F06,0.1697 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B04,0.1714 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D05,0.1727 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A06,0.1738 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F07,0.1739 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H08,0.174 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C09,0.1744 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H10,0.1747 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E09,0.1748 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C07,0.1756 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B06,0.1758 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H12,0.1761 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C10,0.1766 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C11,0.1778 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D03,0.1784 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A03,0.1801 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E04,0.1828 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A04,0.1843 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G04,0.1863 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F10,0.1864 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D06,0.1872 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D07,0.1879 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D11,0.195 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D01,0.1405 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F01,0.1548 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F04,0.1957 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D10,0.1962 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A10,0.198 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D09,0.2051 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H01,0.1575 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G06,0.1586 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C04,0.1643 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F11,0.1648 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G12,0.1674 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H05,0.1682 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E05,0.1687 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C06,0.1697 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G11,0.1697 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B05,0.1698 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D12,0.1699 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A02,0.1714 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E11,0.1714 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C08,0.1726 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E06,0.1729 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A12,0.175 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E08,0.1751 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H09,0.1754 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B09,0.1763 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F05,0.1815 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B10,0.1825 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D04,0.1841 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B11,0.1848 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A05,0.1861 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A11,0.1903 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D08,0.1946 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A09,0.1962 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E03,0.2198 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G02,0.2241 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,G03,0.2291 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C01,0.1544 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B03,0.161 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,C03,0.161 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F08,0.1701 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,D02,0.171 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A07,0.1717 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,H11,0.1731 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B07,0.1749 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,B08,0.1793 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,A08,0.1965 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E10,0.199 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F02,0.2179 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,F03,0.2439 +022510b.GLBRC200DH.2,2010-02-25 20:52:01,E02,0.1919 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E01,0.1614 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A01,0.1643 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B01,0.1674 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F01,0.1716 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H06,0.1719 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G05,0.1752 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H07,0.1759 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C03,0.1761 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E12,0.1762 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H03,0.1763 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G01,0.1764 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B02,0.1772 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B03,0.1779 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F12,0.1822 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C05,0.1827 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H05,0.1846 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F11,0.1853 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C06,0.1857 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D02,0.1868 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C09,0.1872 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C08,0.1887 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D05,0.1894 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D03,0.1902 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B07,0.1903 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G11,0.1908 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A07,0.191 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B06,0.1912 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E06,0.1919 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H12,0.1921 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E05,0.1931 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H08,0.1932 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C11,0.1933 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F09,0.1933 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A03,0.1941 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B08,0.1945 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H09,0.1948 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B10,0.1965 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E08,0.1974 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A05,0.1989 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E09,0.1993 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B11,0.2007 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A11,0.2008 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G04,0.2023 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F07,0.2029 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D06,0.2036 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E02,0.2039 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A09,0.208 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D08,0.21 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E04,0.2101 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A08,0.2103 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A10,0.2107 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D09,0.2237 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F04,0.2247 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E03,0.2369 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F02,0.2393 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G06,0.1739 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B12,0.174 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H02,0.1755 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G07,0.1756 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H01,0.176 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C02,0.1768 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C04,0.1793 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G09,0.1798 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H04,0.1806 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G12,0.1829 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C12,0.1846 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B04,0.1854 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B05,0.1855 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A02,0.1864 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D12,0.1868 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,B09,0.1885 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E07,0.1901 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C07,0.1913 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F06,0.1951 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A12,0.1964 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H11,0.1964 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A04,0.1968 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D04,0.1974 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G02,0.2447 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G03,0.2471 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F08,0.1999 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D07,0.2041 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,A06,0.2069 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D11,0.2078 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D10,0.2104 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F10,0.216 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F03,0.2587 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,D01,0.1583 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C01,0.1671 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G08,0.1817 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,G10,0.1851 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,C10,0.1926 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E11,0.1927 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,F05,0.203 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,E10,0.2307 +022510b.GLBRC200DH.2,2010-02-25 21:36:36,H10,0.196 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D01,0.184 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E01,0.1842 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A01,0.1888 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B01,0.1936 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F01,0.1974 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E12,0.1999 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H06,0.2002 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H07,0.2011 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G06,0.2014 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C02,0.2016 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B12,0.2018 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H01,0.202 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G07,0.2021 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B03,0.2026 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G05,0.2036 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G09,0.206 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F08,0.2062 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F09,0.2065 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F07,0.2067 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E07,0.2073 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G08,0.2083 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H04,0.2089 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G10,0.2098 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F12,0.2104 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A02,0.2109 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E08,0.211 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E06,0.2111 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B05,0.2114 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E05,0.2114 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C06,0.2116 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G12,0.2123 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H05,0.2128 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E11,0.213 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C12,0.2132 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E09,0.2138 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D05,0.2145 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B07,0.2168 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G11,0.2169 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C11,0.2182 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B06,0.2185 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B08,0.2188 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H12,0.2193 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A03,0.2194 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A11,0.2209 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H09,0.2209 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A12,0.2216 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C07,0.2216 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B10,0.2222 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A04,0.2225 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A05,0.2225 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H08,0.2226 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A06,0.223 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B11,0.2241 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D06,0.2287 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A09,0.2308 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D11,0.2323 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A10,0.2347 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D10,0.2375 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C01,0.196 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D09,0.2558 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E03,0.256 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G02,0.2595 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F02,0.2608 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F06,0.2021 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B02,0.2023 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H03,0.2031 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C04,0.2043 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H02,0.2076 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D02,0.2078 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B04,0.2086 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F11,0.2088 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C08,0.2118 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D03,0.2121 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C09,0.2128 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E04,0.2139 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D12,0.2144 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,B09,0.2156 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D04,0.2192 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C10,0.2195 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G04,0.2208 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H11,0.2222 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D08,0.2334 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A08,0.236 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F10,0.2428 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F04,0.2469 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G03,0.2673 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F03,0.2861 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E02,0.1991 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C03,0.2012 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,G01,0.2034 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,C05,0.2067 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,A07,0.2137 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,F05,0.2211 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,H10,0.2221 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,E10,0.2231 +022510b.GLBRC200DH.2,2010-02-25 22:21:11,D07,0.2257 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A01,0.2281 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B01,0.2324 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G07,0.2378 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C03,0.2396 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G05,0.2416 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E02,0.2443 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G09,0.2458 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H06,0.246 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G08,0.246 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G04,0.2491 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E11,0.2493 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D03,0.2499 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B12,0.2499 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E05,0.2502 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E08,0.2518 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G10,0.2528 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F08,0.2538 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H05,0.2546 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B04,0.2549 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F07,0.2557 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G11,0.2568 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E09,0.2572 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E04,0.2573 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F09,0.2578 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C07,0.2579 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G12,0.2588 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F12,0.2593 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A03,0.26 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B07,0.2609 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A07,0.2612 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B09,0.2627 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H08,0.2635 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C11,0.264 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D04,0.2645 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C12,0.2647 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H11,0.2648 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H10,0.2657 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D01,0.2253 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C01,0.2335 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F01,0.2376 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G06,0.2405 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C02,0.2414 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H03,0.2415 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H01,0.2441 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C04,0.2449 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H07,0.2463 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C05,0.2474 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F11,0.2479 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E07,0.2479 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E12,0.2483 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H04,0.2497 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H02,0.25 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F06,0.2502 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D02,0.2512 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C06,0.2523 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B05,0.2525 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D05,0.2528 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E06,0.254 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C08,0.2554 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A06,0.2562 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C09,0.2579 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,C10,0.2661 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B08,0.2673 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A04,0.2674 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A05,0.2693 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D07,0.2701 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H12,0.2731 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B10,0.2758 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A11,0.2806 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D11,0.2841 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A09,0.2843 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A08,0.285 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F04,0.2878 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E03,0.2929 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F10,0.294 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F02,0.2951 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B06,0.2605 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,H09,0.2665 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D06,0.2684 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G02,0.2702 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A12,0.2734 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B11,0.276 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E10,0.2764 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D08,0.282 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D10,0.2897 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G03,0.3045 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F03,0.3245 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D09,0.3067 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,E01,0.2267 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B02,0.2409 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,G01,0.2431 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,B03,0.2439 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A02,0.2518 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,F05,0.2655 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,A10,0.289 +022510b.GLBRC200DH.2,2010-02-25 23:05:46,D12,0.2676 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D01,0.2762 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A01,0.2863 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C01,0.2874 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F06,0.2906 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F01,0.2906 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C03,0.2909 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C02,0.2925 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B02,0.294 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E07,0.295 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B03,0.2959 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F07,0.2961 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C04,0.2971 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F11,0.2973 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G09,0.298 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C05,0.2986 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H06,0.2999 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G08,0.3 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H01,0.3001 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E12,0.301 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E08,0.301 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E05,0.3016 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E01,0.2773 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B01,0.2843 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G07,0.2903 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G04,0.2916 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E02,0.2941 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F09,0.2947 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G05,0.2958 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H02,0.3031 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E09,0.3036 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G10,0.305 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H04,0.3051 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D03,0.3061 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B12,0.3061 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D05,0.3073 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H05,0.3085 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B04,0.3094 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A06,0.3108 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G12,0.311 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F05,0.3116 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B06,0.3139 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E10,0.3143 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A03,0.3157 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C10,0.3165 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G02,0.3176 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D04,0.3177 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B08,0.3185 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H08,0.3201 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C11,0.3201 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D06,0.3205 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H09,0.3208 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D07,0.3214 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A04,0.3234 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H12,0.325 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A05,0.3255 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A12,0.3263 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B10,0.3288 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B11,0.3308 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D08,0.3325 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F08,0.2959 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E06,0.3003 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E04,0.3007 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E11,0.3011 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D02,0.3024 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C06,0.3031 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B05,0.3058 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A02,0.3062 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C08,0.3066 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G11,0.3075 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C09,0.3082 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F12,0.3116 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B09,0.3125 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H11,0.3204 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C12,0.3214 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D12,0.3246 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F04,0.3382 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D11,0.341 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G03,0.3422 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,E03,0.3423 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A09,0.338 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A11,0.3399 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A08,0.3409 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A10,0.3421 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F02,0.345 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D09,0.3617 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F03,0.3757 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H03,0.2937 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H07,0.2951 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G01,0.2956 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,C07,0.3073 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,B07,0.3129 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,A07,0.3162 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,F10,0.3405 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,D10,0.3424 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,G06,0.2922 +022510b.GLBRC200DH.2,2010-02-25 23:50:21,H10,0.3168 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D01,0.3289 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G07,0.3349 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G06,0.3358 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E01,0.3264 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B01,0.3336 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F01,0.3372 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C02,0.3414 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B02,0.3421 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H07,0.3425 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G01,0.3431 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H03,0.3437 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H01,0.3456 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G04,0.3483 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G05,0.3484 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G09,0.3493 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C06,0.3514 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D02,0.3516 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D03,0.3517 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E04,0.3519 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G10,0.3525 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A02,0.3536 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H04,0.3537 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C01,0.3368 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A01,0.3385 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E12,0.3432 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C03,0.3433 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E02,0.3435 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C04,0.3435 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B03,0.3442 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E11,0.3477 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G08,0.3485 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C05,0.3487 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F06,0.3497 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E07,0.3507 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H02,0.352 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B12,0.3522 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C07,0.3539 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E06,0.3541 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G11,0.3542 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C09,0.3556 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B05,0.3556 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G12,0.3559 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B04,0.356 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F08,0.3564 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C08,0.3567 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F12,0.3573 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F09,0.3576 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H05,0.3541 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B09,0.3595 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B07,0.3604 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A06,0.3611 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A03,0.362 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B06,0.3625 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D04,0.3632 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H12,0.3639 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H08,0.3651 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E09,0.3653 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F05,0.3672 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E10,0.3685 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D06,0.3686 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H09,0.3717 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C12,0.3725 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A12,0.3782 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B10,0.3838 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A09,0.3867 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A10,0.3941 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F10,0.3964 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E03,0.3968 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D11,0.3972 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D10,0.3981 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G03,0.3986 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F02,0.4003 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D09,0.4096 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D05,0.3598 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F07,0.3599 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E08,0.3605 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H11,0.3656 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A07,0.3664 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C10,0.3669 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B08,0.3674 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A04,0.3681 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D07,0.3701 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,G02,0.3785 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,B11,0.3833 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D08,0.3837 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A11,0.392 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F04,0.392 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A08,0.3938 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F11,0.3446 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H06,0.3473 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,E05,0.3543 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,H10,0.3569 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,D12,0.374 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,C11,0.375 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,F03,0.4298 +022510b.GLBRC200DH.2,2010-02-26 00:34:55,A05,0.3738 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A01,0.3775 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B01,0.3808 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C01,0.3872 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G07,0.3899 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C04,0.3966 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F07,0.3972 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F11,0.3982 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F08,0.3983 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F09,0.3985 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E06,0.399 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E05,0.4007 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E08,0.4012 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E04,0.4016 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B02,0.4017 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B12,0.4032 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C08,0.4034 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G05,0.4053 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C07,0.4066 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B04,0.4078 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H03,0.4081 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B09,0.4088 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H06,0.4101 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G11,0.4111 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H05,0.4116 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B08,0.4118 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F12,0.412 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H02,0.4124 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A02,0.4125 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G12,0.4135 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A03,0.4137 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H10,0.4138 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D02,0.4143 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D04,0.4148 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D05,0.415 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H12,0.4191 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G02,0.4197 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A04,0.4208 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D07,0.4211 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H08,0.4223 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A05,0.4251 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C11,0.4275 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E01,0.3794 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F06,0.3885 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F01,0.391 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B03,0.3936 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G04,0.3945 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G09,0.395 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G08,0.3957 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C12,0.4278 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F10,0.4284 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B11,0.4289 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D12,0.4301 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A09,0.4364 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H09,0.4369 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F04,0.4411 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B10,0.4412 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E03,0.4442 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A10,0.4474 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D11,0.4514 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D10,0.4576 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C05,0.3963 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C03,0.3977 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C06,0.4 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C02,0.4005 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G01,0.4025 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B05,0.4036 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E11,0.404 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C09,0.4063 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G10,0.4066 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D03,0.4075 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B07,0.4093 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H01,0.4093 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E09,0.4098 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H04,0.4112 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,B06,0.4116 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F05,0.416 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A06,0.4176 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F03,0.4778 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A07,0.4176 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,C10,0.4185 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A11,0.4391 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G03,0.4396 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D01,0.377 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,G06,0.3884 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E07,0.39 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H07,0.3962 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E12,0.3971 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E02,0.4026 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,E10,0.4048 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A08,0.4464 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,F02,0.461 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D09,0.4615 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,H11,0.4267 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,A12,0.4284 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D08,0.4354 +022510b.GLBRC200DH.2,2010-02-26 01:19:31,D06,0.4197 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D01,0.4042 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B01,0.4123 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E12,0.4221 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G01,0.4259 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H03,0.4294 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C02,0.4297 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C05,0.4307 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B03,0.4316 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C06,0.4338 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C04,0.435 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C07,0.435 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C08,0.4364 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G09,0.438 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H02,0.4383 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H04,0.4384 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F11,0.4395 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B09,0.4406 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E06,0.4417 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H12,0.4419 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H08,0.4425 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F12,0.4431 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B06,0.4438 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H11,0.4441 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A07,0.4445 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A06,0.4454 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E02,0.4457 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A02,0.4469 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E08,0.4478 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G02,0.4482 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C10,0.4502 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A04,0.4503 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E04,0.4506 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D06,0.4511 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F08,0.4515 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E09,0.4516 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F07,0.4531 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G11,0.4556 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D07,0.458 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D12,0.46 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H09,0.4608 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G10,0.4643 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F05,0.469 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A01,0.4038 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H07,0.4139 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C01,0.4154 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A11,0.4726 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D08,0.4752 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A10,0.4783 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A08,0.4784 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F01,0.4212 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E11,0.4255 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H06,0.4258 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H01,0.4298 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B02,0.4323 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G06,0.4328 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B12,0.4328 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H05,0.433 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E07,0.4383 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B07,0.4385 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G07,0.4387 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F06,0.4416 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G12,0.4422 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C03,0.4428 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F04,0.4886 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F02,0.4925 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G03,0.4935 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E01,0.4075 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B08,0.4446 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E05,0.4448 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G08,0.4453 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G04,0.4462 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A03,0.4464 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F09,0.4483 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A05,0.4542 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D03,0.4569 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D05,0.4578 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E10,0.4609 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,G05,0.4617 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A12,0.4628 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B11,0.4643 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D04,0.4645 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,A09,0.4665 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B10,0.4808 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,E03,0.4868 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D11,0.492 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D09,0.495 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D10,0.5019 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B05,0.4353 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,H10,0.4365 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C09,0.438 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,B04,0.4438 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,D02,0.446 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F03,0.5249 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C12,0.4588 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,C11,0.4657 +022510b.GLBRC200DH.2,2010-02-26 02:04:05,F10,0.4755 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E01,0.4417 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B01,0.4497 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G06,0.4499 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C01,0.4544 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G07,0.4553 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E12,0.4577 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H07,0.4635 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B03,0.4648 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G01,0.4672 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C06,0.4679 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H01,0.4684 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C02,0.469 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C04,0.4696 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B05,0.4698 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H06,0.4707 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C08,0.4725 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E06,0.4728 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B09,0.4736 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C09,0.4736 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A02,0.4748 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H04,0.4757 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C07,0.4764 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H03,0.4766 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A03,0.477 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E05,0.4779 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B04,0.4783 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B08,0.4788 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A06,0.4809 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E09,0.4822 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C10,0.4841 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G11,0.4846 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F09,0.4848 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E08,0.4855 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A01,0.4411 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D01,0.4427 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D06,0.4859 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H08,0.4864 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A04,0.4872 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F08,0.4876 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F07,0.4886 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A05,0.489 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F01,0.4578 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B12,0.4614 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E11,0.4624 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F11,0.4631 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G09,0.4635 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B11,0.497 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G05,0.497 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G02,0.4974 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A09,0.5001 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C11,0.5039 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A11,0.5071 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E07,0.4705 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B07,0.4735 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H05,0.4737 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C03,0.4744 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E04,0.4752 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A07,0.4775 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B06,0.478 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H10,0.4787 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H12,0.4803 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D02,0.481 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G04,0.4815 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F12,0.4823 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A12,0.4853 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H11,0.4854 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G10,0.4881 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E10,0.4883 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D04,0.4884 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D12,0.4923 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C12,0.495 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H09,0.5014 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E03,0.5108 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F04,0.5143 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A08,0.5182 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D09,0.5205 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G03,0.5286 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F02,0.5306 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D08,0.5068 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F10,0.5092 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,A10,0.5093 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B10,0.5147 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,C05,0.4647 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,B02,0.4667 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G08,0.4775 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F06,0.479 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,H02,0.4807 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D10,0.5299 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,G12,0.4811 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D03,0.4875 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D07,0.4876 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D05,0.4921 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F05,0.5063 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,F03,0.56 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,D11,0.5305 +022510b.GLBRC200DH.2,2010-02-26 02:48:40,E02,0.4721 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A01,0.4652 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B01,0.4696 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F01,0.473 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G09,0.4733 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F11,0.4794 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H01,0.4795 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G01,0.48 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C05,0.4801 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B02,0.4811 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H05,0.4835 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H06,0.4839 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C02,0.4842 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C06,0.4856 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C08,0.4882 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C09,0.4885 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E07,0.4885 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C03,0.4894 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B07,0.4905 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H10,0.491 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E06,0.4916 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H02,0.4927 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H04,0.4946 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A07,0.4947 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A03,0.4948 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B04,0.4963 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D01,0.4634 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H12,0.4965 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B06,0.4968 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H08,0.4986 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D02,0.499 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D03,0.4994 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G10,0.4995 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C10,0.4998 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F12,0.5005 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D06,0.503 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E04,0.5038 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F06,0.5039 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D07,0.5055 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G04,0.5075 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G06,0.4675 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G07,0.4703 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C01,0.4715 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E12,0.4737 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B03,0.4796 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G08,0.4796 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C04,0.4858 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E05,0.4912 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A02,0.4948 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E02,0.4962 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G12,0.4983 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A06,0.499 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H11,0.5008 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A04,0.5018 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A05,0.5045 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D05,0.5082 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E08,0.5083 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D04,0.509 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F09,0.5097 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G05,0.514 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E09,0.5198 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B11,0.5212 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D08,0.5216 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C11,0.5246 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A11,0.5249 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A10,0.5266 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A08,0.5331 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G02,0.5351 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B10,0.5391 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A12,0.511 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D12,0.5117 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F07,0.5135 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F08,0.5136 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E01,0.4595 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H07,0.4729 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B12,0.4811 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,A09,0.5168 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H09,0.5236 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F10,0.5244 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F05,0.53 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D09,0.5353 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E03,0.5401 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F04,0.5457 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D10,0.5496 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E11,0.4811 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,H03,0.4845 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B05,0.4855 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C07,0.4862 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G11,0.4937 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,E10,0.5476 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B08,0.4947 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,D11,0.5546 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,C12,0.5169 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F02,0.5795 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,G03,0.5508 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,F03,0.5889 +022510b.GLBRC200DH.2,2010-02-26 03:33:15,B09,0.4901 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D01,0.4798 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G07,0.4802 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G06,0.4807 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A01,0.4836 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B01,0.4848 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C01,0.4876 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G08,0.4904 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F01,0.4923 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E12,0.4923 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E06,0.4934 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B03,0.4949 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F11,0.4956 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H05,0.4967 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E11,0.4975 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B02,0.4985 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C07,0.4988 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H03,0.499 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H10,0.5023 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C08,0.5043 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C09,0.5045 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C03,0.5057 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B09,0.5063 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B07,0.5066 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H07,0.4822 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G09,0.4852 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H01,0.4857 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E07,0.4875 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E05,0.4884 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H06,0.4959 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C04,0.4992 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C06,0.5002 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C02,0.5006 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E04,0.5016 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H02,0.5079 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A03,0.5084 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H04,0.5089 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H08,0.5098 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G11,0.5108 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A02,0.5116 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A07,0.5126 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A04,0.5132 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B08,0.5132 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G05,0.514 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A06,0.5141 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H11,0.5169 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D03,0.5174 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F12,0.5179 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D06,0.518 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A05,0.5185 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D05,0.5213 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D07,0.5219 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G04,0.5234 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F06,0.5275 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A12,0.5323 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F09,0.5336 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A09,0.5361 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C12,0.5371 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E02,0.5079 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B04,0.5085 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B06,0.5124 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H12,0.5127 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G10,0.5128 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E01,0.4679 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E08,0.5178 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C10,0.5186 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D04,0.5251 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D12,0.5338 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E09,0.5355 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D08,0.54 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C11,0.5435 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F05,0.5447 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B11,0.5449 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D09,0.5494 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A08,0.5495 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G01,0.4874 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,C05,0.4932 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,H09,0.5381 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F10,0.542 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A10,0.5448 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E03,0.5448 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B12,0.5006 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F04,0.5615 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G02,0.5617 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B10,0.5657 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G12,0.5145 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D11,0.5807 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D10,0.5722 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F07,0.5292 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F08,0.5349 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F02,0.5946 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,E10,0.5462 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,A11,0.5462 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,F03,0.603 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,G03,0.5723 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,B05,0.4985 +022510b.GLBRC200DH.2,2010-02-26 04:17:48,D02,0.5165 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E01,0.4892 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D01,0.4987 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G06,0.4989 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A01,0.4993 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B01,0.502 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G07,0.5021 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H07,0.503 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F01,0.5043 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C01,0.5048 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E07,0.4955 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E06,0.5012 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E04,0.5093 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G01,0.5102 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B03,0.5118 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E11,0.5141 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B02,0.5143 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H05,0.5154 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B05,0.5173 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H03,0.5177 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B07,0.518 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C07,0.5184 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H06,0.5186 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C08,0.5192 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C04,0.5195 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C09,0.52 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C02,0.5202 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E08,0.5214 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B12,0.523 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B06,0.5245 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B08,0.5248 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H10,0.5249 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H02,0.5262 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A03,0.5274 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A02,0.5281 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D06,0.5299 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A06,0.5307 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H08,0.531 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H12,0.5324 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A04,0.5329 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D02,0.533 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C10,0.5335 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F07,0.5348 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H11,0.5362 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A05,0.5367 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F09,0.5368 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F12,0.5388 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G09,0.5055 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H01,0.5066 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E12,0.5089 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C05,0.5123 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F11,0.5135 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G04,0.5187 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B09,0.5204 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C03,0.5274 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B04,0.5278 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H04,0.5297 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F10,0.5306 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G11,0.5309 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G05,0.5327 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D07,0.5344 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G10,0.5354 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D04,0.5415 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D05,0.5428 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E03,0.5458 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A09,0.5489 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D03,0.5367 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G12,0.537 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F08,0.54 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E10,0.5405 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A12,0.5424 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E09,0.5471 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D12,0.5484 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D08,0.5533 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F05,0.5555 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A11,0.5591 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C12,0.5592 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B11,0.5587 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C11,0.5608 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,H09,0.561 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G02,0.5627 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A08,0.5636 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D09,0.5649 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E05,0.5071 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G08,0.5086 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,C06,0.5122 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F04,0.5739 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A10,0.56 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,G03,0.5802 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,B10,0.5835 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D10,0.589 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,A07,0.5246 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F06,0.5271 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,D11,0.5947 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F03,0.6198 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,F02,0.6135 +022510b.GLBRC200DH.2,2010-02-26 05:02:23,E02,0.5296 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A01,0.5102 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E06,0.5152 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G06,0.5158 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B01,0.5161 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E07,0.518 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G09,0.5232 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C05,0.5259 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C06,0.5268 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F01,0.5271 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C07,0.5276 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G04,0.5291 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E12,0.5304 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F11,0.5325 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B05,0.5336 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C04,0.5352 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C09,0.5364 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B02,0.5372 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B09,0.5374 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E01,0.5119 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D01,0.514 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G07,0.5234 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E05,0.5278 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B03,0.5314 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E04,0.5317 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B07,0.5337 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C08,0.5356 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G01,0.5359 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B12,0.5396 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H01,0.5428 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H05,0.5431 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H06,0.5434 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C03,0.5442 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E02,0.5447 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B04,0.5451 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D06,0.5453 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A07,0.5457 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A03,0.5471 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H04,0.5473 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A06,0.5503 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H10,0.5506 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G11,0.5512 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F06,0.5518 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C02,0.5388 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B06,0.5399 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B08,0.5422 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E08,0.5433 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A04,0.5509 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D07,0.5514 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C10,0.5517 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H02,0.5518 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A02,0.5523 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A05,0.5546 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G05,0.5555 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F12,0.5576 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D05,0.5577 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G10,0.5579 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H08,0.5579 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G12,0.558 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F10,0.5583 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D04,0.5588 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D02,0.5545 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H12,0.5558 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A12,0.5589 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D03,0.5593 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F09,0.5614 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F07,0.5626 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E09,0.5675 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A09,0.569 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D08,0.5703 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G02,0.5705 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C12,0.5787 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H11,0.5632 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B11,0.5797 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A10,0.5807 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F05,0.5834 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A08,0.5854 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E03,0.587 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C01,0.5214 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G08,0.5264 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D12,0.5676 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E10,0.5945 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,E11,0.5363 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D09,0.5796 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,A11,0.58 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,B10,0.6089 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D10,0.6089 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F02,0.6175 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H03,0.5584 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F08,0.5626 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F04,0.5876 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H09,0.5887 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,D11,0.6164 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,F03,0.6448 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,C11,0.5815 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,G03,0.6014 +022510b.GLBRC200DH.2,2010-02-26 05:46:58,H07,0.5268 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E07,0.5155 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D01,0.518 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E06,0.5181 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A01,0.5183 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B01,0.5222 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C01,0.5236 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G09,0.5249 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E05,0.5269 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G08,0.5297 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H01,0.5341 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C07,0.5354 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B03,0.536 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F11,0.5362 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E01,0.5147 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G07,0.5242 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F01,0.5275 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E04,0.5291 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H07,0.5313 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G01,0.5326 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E12,0.5347 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C05,0.5363 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B02,0.5422 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C02,0.543 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C04,0.543 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C08,0.544 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C09,0.5443 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B12,0.5444 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H06,0.545 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B09,0.5459 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E08,0.5481 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H02,0.5485 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E02,0.5499 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A03,0.5504 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H04,0.5535 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B06,0.5538 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H08,0.5543 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A07,0.5544 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E11,0.5372 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H05,0.5401 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G04,0.541 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B07,0.5436 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B05,0.5447 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H03,0.5468 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C03,0.5526 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B08,0.5534 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A02,0.5548 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H12,0.5569 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G10,0.5586 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A04,0.5592 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A06,0.5595 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B04,0.5548 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D06,0.5575 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G05,0.5581 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D07,0.5605 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F10,0.5621 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A05,0.5643 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F12,0.5655 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F06,0.5668 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D05,0.5689 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F08,0.5741 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E03,0.5761 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G12,0.5609 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C10,0.563 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D04,0.5657 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F07,0.5675 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D09,0.5867 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H09,0.5869 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G02,0.5882 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G06,0.5201 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C11,0.5907 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A08,0.5931 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B11,0.5933 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F09,0.5702 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A12,0.5711 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C06,0.5409 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A09,0.5758 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D12,0.5766 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E10,0.6052 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F04,0.6067 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,E09,0.5801 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D08,0.5828 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D10,0.6212 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G11,0.5556 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D02,0.5593 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H11,0.5602 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D03,0.5607 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A10,0.5891 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,C12,0.5905 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F02,0.6319 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,D11,0.6339 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F03,0.6538 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,F05,0.5929 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,G03,0.6213 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,B10,0.6298 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,A11,0.5906 +022510b.GLBRC200DH.2,2010-02-26 06:31:32,H10,0.5465 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E01,0.5151 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E07,0.5196 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D01,0.5273 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F01,0.5312 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A01,0.5314 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C01,0.5317 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G08,0.5318 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B01,0.5328 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E05,0.5328 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H01,0.5344 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C07,0.538 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B02,0.5387 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B03,0.5392 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C05,0.5395 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F11,0.5396 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G06,0.5249 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H07,0.5289 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G09,0.5293 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C06,0.5405 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E12,0.543 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C02,0.5437 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E08,0.5443 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C08,0.5446 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C04,0.5449 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C09,0.5453 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B05,0.5467 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H06,0.547 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B08,0.5507 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A03,0.5515 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H03,0.5517 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A07,0.5524 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B04,0.553 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B06,0.5533 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D02,0.5543 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E11,0.5401 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B07,0.5439 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H05,0.5442 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G04,0.5446 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B09,0.5451 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H10,0.5505 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E03,0.5548 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H08,0.5574 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A04,0.558 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E02,0.5567 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C03,0.5571 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H02,0.5572 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D06,0.5575 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G11,0.559 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H12,0.5595 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A06,0.5595 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H04,0.5618 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H11,0.5639 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G10,0.5664 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G05,0.5666 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G12,0.5676 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F12,0.5706 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A09,0.5739 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F07,0.5741 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F06,0.5781 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E09,0.5787 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D07,0.5612 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C10,0.5614 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D04,0.5645 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A05,0.5661 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D08,0.5802 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A12,0.5833 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A10,0.586 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F08,0.5878 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G07,0.5275 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D09,0.59 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A11,0.5915 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A08,0.5925 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D05,0.5735 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E04,0.5327 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G01,0.5353 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E10,0.5952 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C11,0.5971 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G02,0.5979 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B12,0.5498 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,A02,0.5519 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D12,0.5859 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F04,0.6168 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,G03,0.6258 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D03,0.5648 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F10,0.5681 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F09,0.5873 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F03,0.6576 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,H09,0.5922 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B11,0.5946 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,C12,0.5979 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D10,0.6213 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F02,0.6347 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,B10,0.6371 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,D11,0.6377 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,F05,0.5971 +022510b.GLBRC200DH.2,2010-02-26 07:16:08,E06,0.524 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E05,0.5369 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D01,0.5388 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E07,0.5347 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G06,0.5419 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E06,0.542 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A01,0.5424 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B01,0.5444 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C01,0.5449 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G08,0.5487 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E04,0.5504 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E08,0.5512 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F01,0.5516 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E12,0.5526 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H05,0.5543 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G07,0.5422 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G09,0.5477 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E01,0.5484 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B03,0.5547 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B02,0.5552 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G01,0.5553 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C05,0.5562 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G04,0.5585 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C06,0.5576 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H01,0.5582 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G02,0.5587 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C04,0.5598 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C08,0.5611 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B05,0.5614 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B07,0.5622 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B09,0.5638 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E03,0.5669 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H10,0.5672 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E02,0.568 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B08,0.569 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A07,0.57 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H03,0.5706 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C03,0.5718 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H12,0.5734 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H08,0.5737 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A04,0.5739 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A06,0.5743 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D06,0.5756 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G05,0.577 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C02,0.5599 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B12,0.5608 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C09,0.562 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H06,0.5658 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F07,0.5666 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A03,0.5668 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H02,0.5674 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H11,0.5801 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G12,0.5802 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D07,0.5825 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E09,0.5848 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F12,0.5849 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D04,0.5856 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G11,0.5865 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G10,0.5902 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A09,0.5904 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D05,0.5907 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F08,0.5927 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F09,0.5931 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B04,0.5702 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D02,0.5721 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F10,0.5725 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H07,0.5415 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F06,0.5752 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H04,0.5766 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C10,0.5784 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F05,0.6018 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A08,0.6093 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A11,0.6103 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F02,0.6106 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C11,0.6154 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E11,0.5568 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F11,0.5575 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A02,0.5686 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B06,0.5696 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,E10,0.5899 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F04,0.6282 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D10,0.6411 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D11,0.6625 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B10,0.6668 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A12,0.5942 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D12,0.5951 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D08,0.6012 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A10,0.6016 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,H09,0.6114 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,B11,0.613 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D03,0.5783 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C12,0.6197 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,G03,0.6373 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,A05,0.5809 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,D09,0.6063 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,F03,0.6744 +022510b.GLBRC200DH.2,2010-02-26 08:00:42,C07,0.5566 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E01,0.5366 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E06,0.5401 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D01,0.543 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G06,0.5435 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A01,0.5437 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G09,0.5464 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E08,0.547 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C01,0.5473 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B01,0.5495 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G08,0.5509 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E09,0.5511 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H07,0.5512 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E07,0.5382 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G07,0.5473 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E04,0.551 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E05,0.5547 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F06,0.5551 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F07,0.5575 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E12,0.5582 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C07,0.5593 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G01,0.5599 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H01,0.5599 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E11,0.5601 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E03,0.5602 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C05,0.561 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F11,0.5626 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B02,0.5629 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C06,0.5643 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F10,0.5664 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B05,0.5673 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H05,0.5684 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C08,0.569 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B09,0.5694 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A03,0.5701 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H06,0.5711 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G02,0.5732 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A02,0.5749 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B06,0.5749 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F09,0.5756 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H02,0.5768 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A04,0.5774 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H08,0.5778 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H03,0.5788 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C03,0.5789 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B03,0.5598 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G04,0.564 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C02,0.5651 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A06,0.5797 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E02,0.5798 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H12,0.58 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D02,0.5801 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H04,0.582 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A05,0.5832 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D07,0.5853 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G11,0.5853 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,E10,0.5854 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D04,0.5867 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H11,0.587 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D03,0.5877 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G12,0.5881 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F08,0.5882 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F12,0.5909 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C09,0.5687 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H10,0.5704 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G05,0.5949 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D05,0.5979 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B04,0.5764 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D06,0.579 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F01,0.5539 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A12,0.6025 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F05,0.6037 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A10,0.6053 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D08,0.608 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,H09,0.6125 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A11,0.6147 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C10,0.5835 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B11,0.6199 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C11,0.6259 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B07,0.566 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C04,0.5665 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A07,0.5722 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G10,0.5906 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F04,0.6278 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,G03,0.6325 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,C12,0.6389 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F02,0.6507 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D11,0.6753 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B10,0.6842 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A09,0.5939 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D12,0.6078 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D09,0.611 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B12,0.5734 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,B08,0.5763 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,A08,0.616 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,F03,0.676 +022510b.GLBRC200DH.2,2010-02-26 08:45:15,D10,0.6485 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E01,0.5545 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E07,0.5552 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E05,0.5561 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C01,0.5583 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A01,0.5571 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D01,0.5594 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G09,0.5648 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G07,0.5652 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E08,0.5673 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B03,0.5677 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E04,0.5703 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F01,0.5726 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C06,0.5744 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C04,0.5748 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G08,0.5766 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C02,0.5783 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B01,0.5637 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A03,0.5799 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F11,0.5801 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E11,0.5818 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E09,0.5837 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E12,0.5839 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B07,0.5861 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C03,0.588 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A04,0.5885 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F10,0.589 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G02,0.59 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C05,0.5706 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B02,0.5722 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B08,0.5935 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F05,0.5946 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H10,0.5951 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A05,0.5986 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C07,0.577 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B05,0.577 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H07,0.5784 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G01,0.5791 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E10,0.5993 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H06,0.6028 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H04,0.6029 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B12,0.6029 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H02,0.6054 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F09,0.6057 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H03,0.6062 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H08,0.6063 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D07,0.6063 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F08,0.609 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H12,0.6096 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G12,0.6109 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H11,0.612 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A09,0.6139 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F12,0.6145 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E03,0.58 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G04,0.5801 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H05,0.5806 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C08,0.5851 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B04,0.5853 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C09,0.5854 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A12,0.6212 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D09,0.6273 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E06,0.5631 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H01,0.5861 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B09,0.5864 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A02,0.5872 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B06,0.588 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F06,0.5894 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D08,0.6286 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A10,0.6299 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A08,0.6374 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B11,0.6385 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A11,0.639 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F04,0.6392 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C11,0.648 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C12,0.6632 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,B10,0.7145 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F07,0.591 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D02,0.5963 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A06,0.5966 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,E02,0.5987 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,A07,0.5988 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D04,0.5989 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,C10,0.6025 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G05,0.6031 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G11,0.6049 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D05,0.6096 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G10,0.6108 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D12,0.6357 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G03,0.6374 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,H09,0.6459 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F02,0.6487 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D10,0.6736 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,F03,0.691 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D11,0.7031 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D03,0.5944 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,G06,0.5656 +022510b.GLBRC200DH.2,2010-02-26 09:29:47,D06,0.5935 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E07,0.5531 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E01,0.5545 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D01,0.558 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C01,0.5593 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E06,0.5581 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G09,0.5581 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G06,0.5613 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A01,0.5622 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E05,0.5626 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G08,0.5655 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E04,0.5681 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B03,0.5745 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B02,0.575 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C06,0.576 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H05,0.5774 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C05,0.5775 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E11,0.5786 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G07,0.5639 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H07,0.5648 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E08,0.566 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F07,0.5795 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B07,0.581 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C08,0.5812 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C04,0.5815 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E03,0.5815 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B05,0.5838 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C09,0.5839 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H10,0.5862 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B09,0.5864 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B06,0.5896 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B08,0.5898 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E09,0.5901 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A02,0.5901 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B04,0.5934 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F01,0.57 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H06,0.5935 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G02,0.5936 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D06,0.5962 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A04,0.5968 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A06,0.5978 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B12,0.5988 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G01,0.5751 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C02,0.5772 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H01,0.5773 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F10,0.5789 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G04,0.5794 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E02,0.6011 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H04,0.6013 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G10,0.6051 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D04,0.6053 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G05,0.608 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F09,0.6081 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A03,0.5852 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D05,0.621 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E10,0.6213 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A12,0.6234 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D09,0.6273 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B01,0.5644 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D08,0.6276 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A10,0.6297 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A08,0.6352 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H09,0.6371 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C12,0.6683 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F02,0.6702 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D11,0.7036 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F03,0.7054 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B10,0.726 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C03,0.5924 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H08,0.5938 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F06,0.5952 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H02,0.5952 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H12,0.596 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H03,0.5961 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G11,0.5992 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D03,0.5995 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G12,0.6024 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C10,0.6031 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A05,0.6032 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A09,0.6122 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C07,0.5735 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F11,0.5762 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D12,0.6271 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A11,0.6392 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F04,0.6432 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,C11,0.6463 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,G03,0.6528 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D10,0.6762 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,E12,0.5794 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D02,0.5921 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,A07,0.5926 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,D07,0.599 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F05,0.6012 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,H11,0.6031 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F12,0.6099 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,F08,0.6157 +022510b.GLBRC200DH.2,2010-02-26 10:14:20,B11,0.6346 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D01,0.5622 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E01,0.5641 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C01,0.5665 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A01,0.5673 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E08,0.5685 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B01,0.5722 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G08,0.5752 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H07,0.5763 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E05,0.5776 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E07,0.5636 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E03,0.5798 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C07,0.5813 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F11,0.5818 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B02,0.5826 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F01,0.5829 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E09,0.5831 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E11,0.5831 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C05,0.5841 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E12,0.5842 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C06,0.5844 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C02,0.5847 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F07,0.5874 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F06,0.5884 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H01,0.5908 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C08,0.5909 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C09,0.5912 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B09,0.5927 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G09,0.5692 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G07,0.573 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E04,0.5744 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H05,0.5935 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A02,0.5955 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H06,0.5957 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B06,0.5967 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D02,0.5981 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G02,0.5988 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E10,0.6014 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C03,0.6022 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H03,0.6034 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G11,0.6042 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H12,0.6047 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H02,0.6056 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H08,0.6056 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A05,0.6086 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D07,0.6086 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D04,0.61 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B12,0.6104 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H04,0.6114 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G10,0.6148 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B03,0.5824 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G12,0.6165 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F05,0.6174 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F09,0.6179 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A09,0.6189 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F08,0.6236 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E06,0.5632 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G06,0.5681 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B07,0.5887 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G04,0.589 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G01,0.5897 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D05,0.6274 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D08,0.6346 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D12,0.6378 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A08,0.6426 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F04,0.651 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G03,0.652 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C11,0.662 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F02,0.6671 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C12,0.6874 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B05,0.5909 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F10,0.5916 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C04,0.592 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A07,0.5937 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H10,0.5954 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D06,0.6013 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B04,0.6032 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A06,0.6036 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A04,0.6043 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,E02,0.6092 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H11,0.6119 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D03,0.612 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,G05,0.6281 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A10,0.6323 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D09,0.6335 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A11,0.6458 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,H09,0.6511 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D10,0.6822 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,D11,0.7187 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B10,0.7342 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A03,0.5917 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B08,0.5987 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F12,0.6223 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,A12,0.6347 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,F03,0.7034 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,C10,0.6075 +022510b.GLBRC200DH.2,2010-02-26 10:58:55,B11,0.6433 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E07,0.5589 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D01,0.5653 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E01,0.5677 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C01,0.5681 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E05,0.5691 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G07,0.5697 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E04,0.5724 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A01,0.5724 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B01,0.5737 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F07,0.5827 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C05,0.5842 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F01,0.5844 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C07,0.5862 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C06,0.5888 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G04,0.5896 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B03,0.5897 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H05,0.5902 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B02,0.5914 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C02,0.5915 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E06,0.5679 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G09,0.5683 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E08,0.5743 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H01,0.5936 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B05,0.5938 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E09,0.5942 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C04,0.5943 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E12,0.5949 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F06,0.5975 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G08,0.5752 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F02,0.5991 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E02,0.602 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H06,0.6029 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B06,0.6035 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H08,0.6054 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B04,0.6068 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A04,0.6094 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C03,0.6096 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H03,0.6106 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A06,0.6108 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H12,0.6113 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G11,0.6114 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H04,0.6155 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H11,0.6156 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D07,0.6162 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F10,0.5849 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F11,0.5853 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D03,0.6194 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E10,0.6209 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F09,0.6226 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A09,0.626 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G06,0.5714 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H07,0.5714 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G01,0.587 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E11,0.5871 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G02,0.59 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F12,0.6277 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F08,0.6315 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D05,0.6334 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A10,0.6397 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D08,0.6411 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A12,0.6459 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A08,0.649 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D12,0.6499 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A11,0.6532 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H09,0.6568 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F04,0.6616 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D10,0.6936 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C12,0.6951 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D11,0.7305 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B10,0.7462 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C08,0.5929 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,E03,0.5947 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B07,0.5961 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C09,0.5973 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H10,0.5973 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A03,0.6001 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B08,0.6019 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A02,0.605 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,H02,0.6066 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A07,0.6067 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D02,0.6076 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B12,0.6106 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D04,0.6128 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,A05,0.6132 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C10,0.6134 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G12,0.6197 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G05,0.6239 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F05,0.6316 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D09,0.6419 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B11,0.6466 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,F03,0.7249 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,B09,0.6002 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G10,0.617 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,G03,0.65 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,C11,0.6669 +022510b.GLBRC200DH.2,2010-02-26 11:43:27,D06,0.6076 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E07,0.5715 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E06,0.5749 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C01,0.5751 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D01,0.5758 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A01,0.576 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G09,0.5773 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G06,0.5794 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E01,0.5795 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B01,0.5803 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E08,0.5805 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B03,0.5844 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E05,0.588 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B02,0.5884 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F01,0.5913 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F06,0.5915 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C04,0.5934 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F11,0.596 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H07,0.596 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C06,0.5971 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G04,0.5971 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G01,0.5972 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A03,0.5975 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B07,0.6026 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B04,0.6034 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E12,0.6075 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B09,0.6087 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B08,0.6098 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H01,0.6099 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E09,0.6101 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H10,0.6106 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B06,0.6113 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G07,0.5821 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E04,0.5832 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D06,0.6163 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A07,0.6171 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G11,0.6202 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H08,0.6202 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H02,0.6203 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E02,0.6208 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C10,0.623 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A06,0.6242 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D07,0.6243 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H06,0.6246 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H04,0.6251 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H12,0.6252 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H03,0.6269 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G08,0.586 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C05,0.5906 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F05,0.6279 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F09,0.6281 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G12,0.6308 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H11,0.6325 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A09,0.6337 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G05,0.6391 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D05,0.6397 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F02,0.6413 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D09,0.6513 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D08,0.6518 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A12,0.6521 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A08,0.6568 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F04,0.658 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C11,0.6801 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D10,0.7045 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C12,0.7062 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D11,0.7443 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C02,0.593 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F10,0.5932 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C07,0.5943 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E11,0.5979 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F07,0.5979 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B05,0.5987 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E03,0.5989 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A02,0.6008 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G02,0.6033 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H05,0.6053 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C09,0.6066 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D02,0.6073 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A04,0.6081 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C03,0.6086 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D04,0.6138 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F12,0.6381 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A10,0.6479 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,E10,0.6639 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D12,0.6643 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,H09,0.6663 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F03,0.7228 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B10,0.7606 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,C08,0.6006 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,D03,0.6141 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A05,0.6187 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B12,0.6241 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G10,0.6279 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,F08,0.633 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,G03,0.6494 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,A11,0.6631 +022510b.GLBRC200DH.2,2010-02-26 12:28:00,B11,0.6571 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D01,0.5718 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A01,0.5799 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H07,0.5815 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B01,0.5821 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F01,0.5888 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B02,0.5914 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C05,0.592 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C07,0.5921 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C02,0.5934 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G01,0.5939 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E06,0.595 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C08,0.5954 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G08,0.5956 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H05,0.5982 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E08,0.5989 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C01,0.5761 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B09,0.6035 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H10,0.604 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E05,0.6042 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E12,0.6049 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F07,0.6049 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A02,0.6059 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A04,0.6079 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E09,0.6092 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B06,0.6105 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E03,0.611 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H03,0.611 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A07,0.612 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B12,0.6126 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C03,0.6132 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H02,0.6135 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A06,0.6167 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H12,0.6175 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C10,0.6191 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G04,0.6199 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G12,0.6243 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H04,0.6259 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F05,0.6266 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E07,0.5877 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G07,0.5894 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A09,0.6276 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G11,0.6293 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F09,0.6331 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F12,0.6336 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G10,0.6358 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F08,0.6425 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D05,0.6477 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G05,0.6552 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A12,0.6569 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D12,0.6598 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A11,0.6619 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F02,0.6687 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C11,0.6766 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G06,0.5937 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C04,0.5941 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F11,0.595 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C06,0.596 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A03,0.5968 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E11,0.5978 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B05,0.5994 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B10,0.7642 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E04,0.6013 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C09,0.6016 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H01,0.6026 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B04,0.6058 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F10,0.6085 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H08,0.6113 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H06,0.6132 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E01,0.5754 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D02,0.6133 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F06,0.6148 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D06,0.6178 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D07,0.6182 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A05,0.6184 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G02,0.6243 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D04,0.6277 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H11,0.629 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E02,0.6366 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D08,0.6491 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,E10,0.6514 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B11,0.6532 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,H09,0.6621 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F04,0.665 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D10,0.7032 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G09,0.5813 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,C12,0.7048 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D11,0.7416 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B03,0.5876 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B07,0.5991 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,B08,0.6046 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D03,0.6252 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,G03,0.6404 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A10,0.6429 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,D09,0.6469 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,A08,0.6538 +022510b.GLBRC200DH.2,2010-02-26 13:12:32,F03,0.7182 diff --git a/Rails/public/robots.txt b/Rails/public/robots.txt new file mode 100644 index 0000000..085187f --- /dev/null +++ b/Rails/public/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-Agent: * +# Disallow: / diff --git a/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10.csv b/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10.csv new file mode 100644 index 0000000..8cc6b42 --- /dev/null +++ b/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10.csv @@ -0,0 +1 @@ +Well positions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Raw data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,G1,G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12 Blank,0.0623,0.0626,0.0596,0.0602,0.061,0.0598,0.0604,0.0623,0.062,0.0648,0.0601,0.0602,0.0583,0.093,0.0934,0.0929,0.0927,0.093,0.2159,0.2214,0.2249,0.224,0.223,0.0617,0.0604,0.0921,0.0926,0.0943,0.0937,0.094,0.2207,0.22,0.2199,0.2191,0.2133,0.0623,0.0569,0.0932,0.0965,0.0943,0.094,0.0971,0.2214,0.2256,0.2236,0.2196,0.2163,0.0589,0.0583,0.0927,0.0924,0.0941,0.0935,0.0929,0.2204,0.2211,0.2209,0.2197,0.2142,0.0606,0.0601,0.0921,0.0919,0.0958,0.0925,0.0933,0.2211,0.2246,0.2202,0.22,0.212,0.0588,0.0575,0.0923,0.0923,0.0942,0.0973,0.0921,0.2217,0.2218,0.221,0.2195,0.2198,0.059,0.0586,0.058,0.0577,0.0576,0.0581,0.0585,0.0582,0.0582,0.0585,0.0577,0.0577,0.0572 0s,0.0631,0.0633,0.0607,0.0613,0.0623,0.0612,0.0617,0.0636,0.063,0.0657,0.0607,0.0612,0.0592,0.2053,0.2676,0.2104,0.1872,0.0926,0.2631,0.3007,0.2867,0.2736,0.2197,0.0622,0.0606,0.1578,0.1811,0.1762,0.156,0.0939,0.2681,0.2907,0.2769,0.2603,0.212,0.0634,0.0581,0.1686,0.1948,0.1673,0.1432,0.0963,0.26,0.2915,0.2799,0.2631,0.2127,0.061,0.0585,0.1601,0.1703,0.1704,0.162,0.0919,0.2608,0.2906,0.2729,0.26,0.213,0.0617,0.0608,0.1734,0.1982,0.1829,0.1778,0.0927,0.2591,0.2884,0.2715,0.2627,0.2106,0.0591,0.0581,0.1656,0.2065,0.1829,0.1707,0.0913,0.2637,0.2925,0.2752,0.2741,0.2186,0.06,0.0593,0.0585,0.0587,0.0584,0.0589,0.0595,0.0592,0.0592,0.0596,0.0586,0.0584,0.0577 640s,0.0642,0.0645,0.0612,0.0616,0.0624,0.0613,0.063,0.0639,0.0632,0.0659,0.0608,0.0616,0.059,0.2046,0.2813,0.2226,0.1947,0.0927,0.2767,0.3375,0.3023,0.2892,0.2194,0.0627,0.0604,0.1712,0.2078,0.1926,0.1708,0.0938,0.2808,0.3185,0.2881,0.2706,0.2117,0.0636,0.0579,0.1824,0.224,0.1858,0.1559,0.0961,0.2702,0.319,0.2898,0.2711,0.2128,0.0592,0.0587,0.1709,0.2068,0.1943,0.1793,0.0917,0.2713,0.3203,0.2858,0.2682,0.2129,0.0613,0.0608,0.1832,0.2254,0.1973,0.1904,0.0927,0.2671,0.3156,0.2802,0.2709,0.2104,0.0593,0.0588,0.178,0.2312,0.1937,0.184,0.0915,0.2695,0.3126,0.2787,0.2706,0.2183,0.06,0.0594,0.0587,0.0591,0.0586,0.0591,0.0597,0.0591,0.0593,0.0598,0.0589,0.0585,0.0573 1280s,0.0641,0.0635,0.0612,0.0616,0.0624,0.0613,0.0619,0.0638,0.0631,0.0659,0.0613,0.0617,0.0592,0.2043,0.2854,0.2256,0.1985,0.0925,0.283,0.3447,0.3134,0.3022,0.2194,0.0594,0.0602,0.1707,0.2156,0.1999,0.1751,0.0938,0.2866,0.3256,0.2996,0.2818,0.2119,0.0637,0.0579,0.1862,0.2311,0.1961,0.1602,0.0959,0.2767,0.3247,0.3,0.2817,0.2126,0.0602,0.0586,0.1735,0.2129,0.2028,0.1844,0.092,0.2791,0.328,0.2994,0.2788,0.2129,0.0614,0.061,0.1866,0.2379,0.2086,0.1986,0.0927,0.2734,0.3239,0.2896,0.2806,0.2105,0.0592,0.0585,0.1842,0.2422,0.2047,0.1951,0.0915,0.274,0.3176,0.2859,0.277,0.2186,0.0602,0.0596,0.0589,0.0589,0.0586,0.0593,0.0599,0.0592,0.0594,0.0598,0.059,0.0585,0.0577 1921s,0.0646,0.0642,0.0613,0.062,0.0626,0.0614,0.0621,0.064,0.0634,0.0661,0.0615,0.0619,0.0592,0.2054,0.2872,0.2262,0.1994,0.0927,0.2846,0.3478,0.3224,0.3119,0.2197,0.0585,0.0599,0.1681,0.2164,0.2006,0.1736,0.0937,0.2875,0.3279,0.3066,0.2894,0.2118,0.0636,0.0579,0.1898,0.2348,0.1991,0.1629,0.096,0.2801,0.3264,0.3091,0.29,0.2125,0.0595,0.0588,0.1772,0.2149,0.2047,0.1855,0.0918,0.2822,0.3287,0.3075,0.2856,0.213,0.0615,0.0611,0.1875,0.2419,0.2129,0.2033,0.0925,0.2772,0.3252,0.2981,0.2885,0.2106,0.0591,0.0584,0.1874,0.2472,0.2141,0.1983,0.0914,0.2771,0.3178,0.2926,0.2837,0.2209,0.0602,0.0597,0.059,0.0593,0.0589,0.0594,0.06,0.0594,0.0594,0.0601,0.0589,0.0587,0.0575 2561s,0.0641,0.0637,0.0609,0.0616,0.0626,0.0612,0.0619,0.0639,0.0631,0.0657,0.0619,0.0618,0.0592,0.2061,0.2873,0.2247,0.1979,0.0925,0.2858,0.352,0.3305,0.3176,0.2197,0.0601,0.0597,0.1658,0.2185,0.2016,0.1748,0.0938,0.2888,0.331,0.3153,0.2951,0.212,0.0637,0.0581,0.1916,0.2381,0.1997,0.1644,0.0962,0.2818,0.3296,0.3175,0.2959,0.2127,0.0608,0.0581,0.1805,0.2172,0.2046,0.1876,0.0918,0.2846,0.3317,0.3173,0.2911,0.2131,0.0615,0.061,0.1868,0.2421,0.2198,0.2071,0.0926,0.2796,0.3284,0.3055,0.2955,0.2107,0.0593,0.0585,0.1914,0.2444,0.2191,0.2043,0.0915,0.2788,0.3184,0.2996,0.2917,0.2189,0.0603,0.06,0.0591,0.059,0.0588,0.0594,0.06,0.0595,0.0597,0.0601,0.0592,0.059,0.0573 3201s,0.064,0.0675,0.061,0.0619,0.0627,0.0613,0.0621,0.0639,0.0633,0.0659,0.0623,0.0619,0.0596,0.2072,0.2892,0.2249,0.1965,0.0927,0.2884,0.3553,0.3405,0.3248,0.2199,0.0593,0.0595,0.1664,0.2186,0.204,0.177,0.0937,0.2906,0.3346,0.3246,0.3015,0.2121,0.0638,0.0581,0.1925,0.2384,0.2003,0.17,0.0961,0.2845,0.3347,0.3269,0.302,0.2129,0.0615,0.0588,0.1821,0.2156,0.2047,0.1887,0.092,0.2871,0.3354,0.326,0.2962,0.2132,0.0616,0.0612,0.1884,0.2396,0.2267,0.2061,0.0926,0.2833,0.3328,0.3144,0.3026,0.2109,0.0595,0.0587,0.196,0.2392,0.2231,0.206,0.0914,0.2811,0.3215,0.3075,0.298,0.2191,0.0603,0.0601,0.0592,0.0593,0.0591,0.0596,0.0602,0.0597,0.0598,0.0603,0.0594,0.0593,0.0572 3841s,0.0646,0.0719,0.0613,0.0619,0.0627,0.0614,0.0621,0.064,0.0634,0.0658,0.0624,0.0618,0.0592,0.2087,0.2903,0.224,0.1958,0.0925,0.2911,0.3565,0.3501,0.3288,0.2199,0.063,0.0595,0.1693,0.2208,0.2078,0.1793,0.0936,0.2935,0.3375,0.3339,0.3073,0.2121,0.0638,0.0579,0.1943,0.2387,0.2039,0.1718,0.096,0.2888,0.3394,0.3367,0.3075,0.2129,0.0623,0.059,0.1838,0.2143,0.2092,0.1895,0.0918,0.2908,0.3383,0.3356,0.3026,0.2135,0.0617,0.0611,0.1893,0.2368,0.2226,0.1997,0.0925,0.2855,0.3365,0.3227,0.3084,0.2108,0.061,0.0589,0.1997,0.238,0.2296,0.2076,0.0915,0.2845,0.3249,0.3157,0.3037,0.2192,0.0607,0.0602,0.0591,0.0595,0.0591,0.0596,0.0602,0.0596,0.0597,0.0604,0.0595,0.0594,0.0574 4482s,0.0645,0.0652,0.0614,0.0623,0.0628,0.0617,0.0624,0.0639,0.0637,0.0657,0.0626,0.0621,0.0595,0.2104,0.2921,0.2249,0.1959,0.0925,0.2937,0.3564,0.3536,0.3303,0.2202,0.0674,0.0625,0.1722,0.2233,0.2134,0.1827,0.0939,0.2966,0.3392,0.3402,0.3089,0.2123,0.0639,0.0584,0.197,0.2382,0.2094,0.1755,0.0959,0.2913,0.3407,0.3438,0.311,0.213,0.0632,0.0585,0.1848,0.2155,0.2138,0.1901,0.0917,0.2939,0.3396,0.3424,0.3069,0.2135,0.0616,0.0614,0.1909,0.2352,0.2293,0.207,0.0926,0.2893,0.3387,0.3313,0.3134,0.211,0.0599,0.0591,0.2022,0.2387,0.2344,0.2078,0.0914,0.2878,0.3274,0.3231,0.3095,0.2194,0.0609,0.0609,0.0593,0.0596,0.0591,0.0597,0.0603,0.06,0.0602,0.0604,0.0597,0.0597,0.0581 5122s,0.0642,0.0647,0.0613,0.062,0.0628,0.0615,0.0624,0.064,0.0635,0.0657,0.0627,0.0619,0.0596,0.2111,0.2933,0.2267,0.1965,0.0926,0.2977,0.3589,0.356,0.3284,0.2202,0.0633,0.0603,0.1741,0.2251,0.2186,0.1866,0.0937,0.3002,0.3402,0.3474,0.309,0.2124,0.0643,0.0582,0.1994,0.2393,0.2152,0.178,0.096,0.2951,0.3427,0.349,0.313,0.2131,0.0631,0.058,0.1875,0.2173,0.2188,0.1939,0.0918,0.2975,0.3412,0.347,0.3099,0.2136,0.0617,0.0613,0.1907,0.2369,0.2376,0.2155,0.0926,0.2929,0.3401,0.3376,0.3146,0.2111,0.0596,0.0592,0.2025,0.2358,0.2361,0.2144,0.0912,0.2906,0.3294,0.3304,0.3131,0.2195,0.0608,0.0609,0.0596,0.0598,0.0595,0.0599,0.0605,0.0601,0.0602,0.0606,0.0597,0.0597,0.0593 5762s,0.0647,0.065,0.062,0.0626,0.0637,0.0624,0.0626,0.0646,0.064,0.0661,0.0631,0.0627,0.0598,0.2125,0.2945,0.2275,0.197,0.0927,0.3008,0.3591,0.3601,0.3354,0.2206,0.0642,0.0603,0.1758,0.2266,0.2248,0.1905,0.0938,0.3038,0.3415,0.346,0.3099,0.2127,0.064,0.0586,0.2003,0.2386,0.22,0.1823,0.0961,0.2993,0.3456,0.3524,0.3137,0.2134,0.0644,0.0597,0.1894,0.2179,0.2271,0.2016,0.092,0.3019,0.3443,0.3467,0.3105,0.2139,0.0621,0.0617,0.1913,0.2378,0.2474,0.2263,0.0928,0.2963,0.341,0.3417,0.3145,0.2114,0.0616,0.0596,0.2013,0.2385,0.2492,0.226,0.0914,0.2939,0.3309,0.334,0.313,0.2198,0.0609,0.0613,0.0597,0.0599,0.0596,0.06,0.0608,0.0605,0.0605,0.0606,0.0599,0.0598,0.0583 6402s,0.0648,0.0653,0.062,0.0629,0.0636,0.0621,0.0626,0.0646,0.0638,0.0661,0.0634,0.0624,0.0599,0.2144,0.2956,0.2287,0.1975,0.0927,0.304,0.3623,0.3598,0.3338,0.2208,0.0663,0.0605,0.1787,0.2278,0.2308,0.1966,0.0938,0.3072,0.3422,0.3517,0.313,0.2129,0.0642,0.0585,0.2006,0.2401,0.2276,0.1889,0.0961,0.3032,0.3464,0.3536,0.3175,0.2137,0.0633,0.06,0.191,0.2193,0.2344,0.21,0.0919,0.3051,0.3477,0.3559,0.3134,0.2141,0.062,0.0617,0.1916,0.2408,0.2573,0.2357,0.0928,0.2996,0.3432,0.3403,0.3162,0.2116,0.0596,0.0586,0.2006,0.2437,0.259,0.2343,0.0916,0.2976,0.3319,0.3411,0.3201,0.22,0.061,0.0615,0.0598,0.0603,0.0597,0.0602,0.0609,0.0605,0.0607,0.0608,0.0599,0.06,0.0584 7042s,0.0644,0.0725,0.062,0.0626,0.0634,0.062,0.0629,0.0646,0.0641,0.0663,0.0634,0.0626,0.0601,0.2148,0.2964,0.2294,0.198,0.0926,0.3064,0.3678,0.3629,0.3452,0.2209,0.0608,0.0611,0.1808,0.2306,0.2406,0.2049,0.0937,0.3099,0.3463,0.3558,0.3177,0.213,0.0644,0.0584,0.2003,0.2409,0.236,0.1974,0.0962,0.3057,0.3492,0.363,0.3245,0.2138,0.0634,0.0593,0.1928,0.2212,0.2429,0.2221,0.0919,0.3069,0.3503,0.3638,0.3179,0.2142,0.0621,0.0615,0.1921,0.2458,0.2687,0.2486,0.0929,0.3022,0.3442,0.3477,0.3211,0.2118,0.0597,0.0595,0.2033,0.2513,0.2708,0.2464,0.0914,0.2999,0.3333,0.3377,0.3206,0.2202,0.0612,0.0615,0.0598,0.0602,0.0598,0.0604,0.0609,0.0605,0.0607,0.061,0.0599,0.0601,0.0577 7683s,0.0641,0.0651,0.0621,0.0629,0.0639,0.0622,0.0631,0.0648,0.0641,0.0663,0.0636,0.0627,0.0602,0.2158,0.299,0.2315,0.1992,0.0926,0.3084,0.3703,0.3751,0.3562,0.221,0.0695,0.0609,0.1839,0.2345,0.2531,0.2144,0.0939,0.3131,0.3495,0.3632,0.3282,0.2131,0.0643,0.0587,0.2022,0.2437,0.2468,0.2077,0.096,0.3079,0.3549,0.3655,0.3326,0.2139,0.0629,0.06,0.1958,0.2241,0.2525,0.234,0.092,0.3091,0.3563,0.3642,0.3239,0.2143,0.0624,0.0618,0.194,0.253,0.2812,0.264,0.0929,0.305,0.3497,0.3563,0.3284,0.2118,0.059,0.0595,0.2069,0.2594,0.2835,0.262,0.0915,0.303,0.3352,0.3467,0.3267,0.2203,0.0612,0.0616,0.0601,0.0604,0.0599,0.0606,0.0613,0.0606,0.0608,0.0608,0.0598,0.0602,0.0573 8323s,0.0642,0.066,0.0623,0.0632,0.0643,0.0626,0.0633,0.0648,0.0642,0.0664,0.0636,0.0632,0.0601,0.217,0.3001,0.2325,0.2002,0.0926,0.3092,0.3826,0.3836,0.3687,0.2214,0.0676,0.061,0.1866,0.2378,0.2653,0.2271,0.0938,0.314,0.3578,0.3722,0.3404,0.2133,0.0643,0.0587,0.2045,0.2484,0.2591,0.2192,0.0962,0.3104,0.3586,0.3775,0.343,0.2141,0.0642,0.0595,0.1987,0.2297,0.2664,0.248,0.092,0.3116,0.3596,0.3799,0.3339,0.2145,0.0625,0.0617,0.198,0.2616,0.2964,0.2809,0.0929,0.3066,0.3542,0.3624,0.3389,0.2119,0.0603,0.0593,0.211,0.2699,0.2979,0.2782,0.0914,0.3045,0.3387,0.3523,0.3327,0.2205,0.0613,0.0617,0.0603,0.0604,0.0602,0.0607,0.0613,0.0609,0.061,0.0609,0.0599,0.0604,0.0574 8963s,0.0645,0.0662,0.0625,0.0631,0.0641,0.0623,0.0636,0.0649,0.0642,0.0665,0.0639,0.0633,0.0601,0.2179,0.3024,0.2343,0.2014,0.0928,0.3081,0.3918,0.3935,0.3828,0.2215,0.0647,0.0605,0.1905,0.2424,0.28,0.241,0.094,0.3123,0.3653,0.3817,0.3507,0.2134,0.0645,0.0587,0.2086,0.2565,0.2735,0.2333,0.0963,0.3113,0.3692,0.389,0.3533,0.2144,0.0641,0.0597,0.2029,0.2369,0.2825,0.2654,0.092,0.3125,0.3695,0.3878,0.3454,0.2147,0.0624,0.062,0.2031,0.2725,0.3135,0.2988,0.093,0.308,0.3607,0.3694,0.3496,0.2122,0.0591,0.0599,0.2161,0.2805,0.3141,0.295,0.0914,0.3062,0.3427,0.3597,0.3436,0.2207,0.0614,0.0614,0.0605,0.0607,0.0603,0.061,0.0617,0.0609,0.0611,0.061,0.0601,0.0604,0.0572 9603s,0.0643,0.0662,0.0626,0.0634,0.0644,0.0626,0.0638,0.0652,0.0642,0.0664,0.0638,0.0637,0.0602,0.2184,0.3032,0.2349,0.203,0.0925,0.3103,0.4032,0.4061,0.397,0.2215,0.0617,0.0638,0.194,0.2486,0.2953,0.2556,0.0937,0.3154,0.3751,0.3938,0.3626,0.2134,0.0644,0.0588,0.2138,0.2637,0.289,0.2463,0.0962,0.3124,0.3783,0.4018,0.3664,0.2143,0.0634,0.0583,0.2077,0.2444,0.2988,0.2826,0.0918,0.3133,0.3797,0.4004,0.3566,0.2145,0.0623,0.0621,0.2093,0.2854,0.3322,0.3181,0.0929,0.3108,0.3705,0.3822,0.3617,0.2121,0.0619,0.06,0.2219,0.2929,0.3323,0.3135,0.0913,0.3093,0.3491,0.3696,0.3549,0.2206,0.0613,0.061,0.0604,0.0609,0.0603,0.0611,0.0618,0.061,0.0611,0.0618,0.0599,0.0604,0.0574 10243s,0.0641,0.0678,0.0628,0.0635,0.0647,0.0631,0.0639,0.0653,0.0645,0.0669,0.0639,0.0642,0.0604,0.2194,0.3046,0.2363,0.2033,0.0926,0.3189,0.4149,0.4203,0.4126,0.2217,0.0636,0.0611,0.1987,0.2548,0.3093,0.2699,0.0941,0.3231,0.3855,0.4072,0.3758,0.2137,0.0648,0.059,0.2196,0.2736,0.3055,0.2617,0.0963,0.3176,0.3879,0.4159,0.3804,0.2147,0.0647,0.0603,0.2139,0.255,0.3182,0.3013,0.092,0.3159,0.3898,0.4149,0.3699,0.215,0.0626,0.0624,0.2169,0.2989,0.3533,0.3381,0.093,0.313,0.3812,0.395,0.3752,0.2124,0.0595,0.0592,0.2297,0.3094,0.3526,0.3318,0.0915,0.3091,0.3578,0.3798,0.3682,0.2224,0.0615,0.0611,0.0606,0.0609,0.0606,0.0613,0.0618,0.061,0.0616,0.0612,0.0602,0.0606,0.0577 10884s,0.064,0.0726,0.0632,0.064,0.0652,0.0633,0.0642,0.0655,0.0644,0.0673,0.064,0.0645,0.0605,0.22,0.3059,0.2377,0.2044,0.0927,0.3255,0.4272,0.4384,0.4296,0.222,0.0656,0.0609,0.2042,0.263,0.3224,0.2838,0.0941,0.3294,0.397,0.4226,0.3896,0.2139,0.0647,0.0592,0.2266,0.2837,0.3236,0.2773,0.0962,0.3219,0.3997,0.4314,0.3927,0.2147,0.0667,0.0608,0.2226,0.2662,0.3363,0.3199,0.0919,0.321,0.4017,0.4304,0.3826,0.215,0.0629,0.0623,0.225,0.3127,0.3741,0.3603,0.0932,0.3173,0.3908,0.4074,0.3881,0.2126,0.0602,0.0604,0.2374,0.3241,0.3736,0.3522,0.0914,0.3117,0.3678,0.3931,0.3784,0.221,0.0617,0.061,0.0609,0.0608,0.0607,0.0614,0.0591,0.0612,0.0615,0.0615,0.0604,0.0607,0.0574 11527s,0.0646,0.067,0.0632,0.0642,0.0651,0.0633,0.0641,0.0655,0.0644,0.0672,0.0638,0.0644,0.0606,0.2209,0.3074,0.239,0.2056,0.0927,0.3338,0.4412,0.4551,0.4463,0.2219,0.0638,0.0613,0.2097,0.2727,0.335,0.2954,0.0939,0.3363,0.4079,0.4392,0.4064,0.214,0.0649,0.0593,0.2343,0.2965,0.3437,0.2949,0.0962,0.3271,0.412,0.4468,0.4097,0.2147,0.0635,0.0588,0.2302,0.2779,0.3572,0.3426,0.092,0.3261,0.4135,0.4471,0.3975,0.2151,0.0628,0.0626,0.2334,0.3288,0.3958,0.3845,0.0931,0.3215,0.4017,0.425,0.4032,0.2126,0.0603,0.0593,0.2455,0.3409,0.3956,0.3748,0.0913,0.317,0.378,0.4058,0.3924,0.2211,0.0617,0.061,0.0611,0.0611,0.0607,0.0614,0.0621,0.0613,0.0616,0.0669,0.0603,0.0607,0.0578 12167s,0.0647,0.0672,0.0632,0.0638,0.065,0.0631,0.0647,0.0657,0.0643,0.0671,0.0635,0.0639,0.0607,0.2212,0.308,0.2398,0.2063,0.0926,0.3411,0.455,0.4721,0.466,0.2222,0.0667,0.0612,0.2161,0.2835,0.3466,0.3068,0.0938,0.3431,0.422,0.4568,0.4223,0.2141,0.0648,0.0594,0.2415,0.3098,0.3647,0.3136,0.0965,0.3326,0.4245,0.4643,0.4269,0.2149,0.0634,0.0589,0.2364,0.2914,0.3782,0.363,0.092,0.3302,0.4254,0.4633,0.4129,0.2151,0.0627,0.0627,0.2422,0.3459,0.42,0.4084,0.0931,0.3269,0.4147,0.4396,0.4188,0.2127,0.06,0.06,0.2545,0.359,0.4181,0.4007,0.0913,0.3202,0.3872,0.4198,0.4049,0.2212,0.062,0.0606,0.061,0.0607,0.0608,0.0614,0.0622,0.0614,0.0618,0.0659,0.0602,0.0607,0.0577 12807s,0.0649,0.0674,0.0629,0.0643,0.0654,0.0635,0.0642,0.0662,0.0647,0.0671,0.0636,0.0641,0.0606,0.2219,0.3102,0.2416,0.2078,0.0928,0.3485,0.4704,0.4894,0.4872,0.2223,0.0677,0.0605,0.2236,0.2968,0.3581,0.317,0.0939,0.3501,0.4348,0.475,0.4427,0.2144,0.0647,0.0594,0.25,0.3242,0.3882,0.333,0.0962,0.339,0.4384,0.4825,0.4448,0.215,0.0653,0.0592,0.2442,0.3071,0.4019,0.3872,0.0918,0.3362,0.4395,0.4823,0.4305,0.2154,0.0628,0.0626,0.2524,0.3651,0.4448,0.4349,0.0933,0.3331,0.4273,0.4569,0.4364,0.2128,0.0594,0.0602,0.2647,0.3788,0.4432,0.4255,0.0914,0.3245,0.3987,0.4352,0.4217,0.2213,0.0621,0.0607,0.0612,0.061,0.061,0.0616,0.0623,0.0614,0.0617,0.0617,0.0604,0.0607,0.0571 13447s,0.0648,0.0672,0.0638,0.0644,0.0655,0.0638,0.0644,0.066,0.0645,0.0674,0.0635,0.063,0.0608,0.2229,0.3111,0.2427,0.2089,0.0927,0.3565,0.4867,0.5093,0.5086,0.2223,0.0665,0.0614,0.2317,0.311,0.3676,0.3263,0.094,0.3588,0.4497,0.4939,0.4629,0.2143,0.0647,0.0595,0.26,0.3422,0.4117,0.3547,0.0963,0.346,0.4523,0.502,0.463,0.2153,0.0648,0.0607,0.2535,0.3246,0.4273,0.413,0.092,0.3429,0.4537,0.5019,0.4513,0.2155,0.063,0.0626,0.2643,0.3855,0.4717,0.4593,0.0933,0.3392,0.4401,0.4744,0.4546,0.213,0.0611,0.0604,0.2743,0.4006,0.4687,0.4499,0.0916,0.3292,0.4096,0.4506,0.4377,0.2214,0.0623,0.0606,0.0614,0.0609,0.061,0.0615,0.0622,0.0616,0.0617,0.0612,0.0605,0.0606,0.0571 14088s,0.065,0.0675,0.0638,0.0646,0.0651,0.0634,0.0644,0.066,0.0646,0.0674,0.0636,0.0626,0.0613,0.2236,0.3125,0.2442,0.2102,0.0927,0.3651,0.5037,0.5321,0.5319,0.2227,0.0721,0.0615,0.2407,0.3224,0.3741,0.3337,0.094,0.3677,0.466,0.514,0.4856,0.2145,0.0648,0.0596,0.2697,0.3587,0.435,0.3758,0.0963,0.3538,0.4676,0.5225,0.483,0.2154,0.0647,0.0614,0.2634,0.3419,0.4559,0.4401,0.0921,0.3498,0.4702,0.5226,0.4716,0.2156,0.063,0.0632,0.277,0.4085,0.4989,0.4868,0.0935,0.3463,0.4555,0.4936,0.4764,0.2132,0.0591,0.0581,0.2849,0.4223,0.4941,0.4779,0.0914,0.3358,0.4218,0.4669,0.4579,0.2216,0.0625,0.0607,0.0613,0.0606,0.0612,0.0616,0.0625,0.0616,0.0618,0.0612,0.0606,0.0608,0.0586 14728s,0.0653,0.0677,0.0635,0.0646,0.0654,0.064,0.0644,0.0661,0.0645,0.0674,0.0633,0.0624,0.0609,0.2243,0.3134,0.2456,0.2111,0.0928,0.3747,0.5219,0.5554,0.5582,0.2226,0.0645,0.0616,0.2504,0.3352,0.3795,0.3403,0.094,0.3762,0.4825,0.5363,0.5077,0.2146,0.0649,0.0596,0.2798,0.3757,0.4559,0.3987,0.0963,0.3612,0.4844,0.545,0.5045,0.2154,0.0654,0.0611,0.2729,0.3611,0.4824,0.465,0.092,0.3573,0.4862,0.5453,0.4922,0.2157,0.0632,0.0627,0.2897,0.4313,0.5289,0.5125,0.0936,0.3534,0.4704,0.5146,0.4983,0.2131,0.0601,0.0594,0.2968,0.4485,0.5221,0.5008,0.0914,0.3419,0.4349,0.4855,0.4771,0.2217,0.0625,0.0607,0.0616,0.0607,0.0613,0.0617,0.0626,0.0617,0.0617,0.0612,0.0607,0.0606,0.0574 15368s,0.0653,0.0679,0.0637,0.0647,0.0656,0.064,0.0647,0.066,0.0649,0.0678,0.0634,0.0623,0.0613,0.2255,0.3147,0.2463,0.2118,0.0927,0.3852,0.5413,0.5801,0.5828,0.2228,0.0716,0.0616,0.2604,0.349,0.384,0.3453,0.0939,0.3879,0.5003,0.5608,0.5285,0.2147,0.065,0.0595,0.2903,0.3965,0.4774,0.4215,0.0964,0.3697,0.5022,0.5693,0.5269,0.2155,0.0646,0.0581,0.2842,0.3816,0.5117,0.4916,0.0921,0.3649,0.505,0.5702,0.5136,0.2159,0.063,0.063,0.3044,0.4566,0.5571,0.5424,0.0938,0.3607,0.4872,0.5373,0.52,0.2134,0.0597,0.0615,0.309,0.4738,0.5497,0.5273,0.0913,0.3489,0.4483,0.5062,0.499,0.2218,0.0625,0.0607,0.0615,0.0608,0.0612,0.0617,0.0625,0.0618,0.0619,0.0611,0.0605,0.0606,0.0584 16008s,0.065,0.0678,0.0637,0.0648,0.0656,0.064,0.0645,0.0663,0.0648,0.0679,0.0634,0.0624,0.0613,0.2265,0.3152,0.2472,0.2129,0.0929,0.3954,0.5624,0.6067,0.608,0.2229,0.0815,0.0688,0.271,0.3602,0.3883,0.3503,0.094,0.3984,0.5191,0.5861,0.553,0.2149,0.0653,0.0595,0.3021,0.418,0.4944,0.4447,0.0963,0.3793,0.5219,0.5947,0.5516,0.2157,0.0676,0.0583,0.2965,0.4028,0.5401,0.5197,0.0921,0.3722,0.5232,0.5949,0.538,0.2159,0.0635,0.063,0.3194,0.4841,0.5865,0.5702,0.0941,0.3684,0.5046,0.5603,0.5448,0.2134,0.0597,0.0611,0.3218,0.5007,0.5759,0.5544,0.0915,0.3556,0.4644,0.526,0.5186,0.222,0.0623,0.0605,0.0616,0.0605,0.0613,0.0618,0.0625,0.062,0.0619,0.0613,0.0602,0.0604,0.0573 16648s,0.0652,0.0679,0.0639,0.0649,0.0656,0.064,0.0647,0.0663,0.0656,0.0678,0.0629,0.0623,0.0615,0.2273,0.3161,0.2477,0.2136,0.0928,0.4074,0.5834,0.6335,0.6326,0.223,0.0697,0.0622,0.2812,0.3701,0.3914,0.3549,0.0939,0.4094,0.5386,0.6126,0.5759,0.2149,0.0651,0.0597,0.315,0.4398,0.5087,0.4685,0.0962,0.3884,0.5406,0.6196,0.5732,0.2157,0.0654,0.0587,0.3098,0.4258,0.569,0.5508,0.092,0.3817,0.5433,0.621,0.5603,0.2159,0.0633,0.0631,0.335,0.5122,0.6176,0.6015,0.0942,0.3776,0.5241,0.5862,0.5677,0.2135,0.0626,0.059,0.3353,0.5264,0.6041,0.5835,0.0911,0.3623,0.4801,0.5486,0.5437,0.2243,0.0624,0.0607,0.0613,0.0605,0.0611,0.0618,0.0626,0.0621,0.0618,0.0611,0.06,0.0603,0.057 17289s,0.0648,0.068,0.064,0.0648,0.0653,0.0638,0.0647,0.0667,0.0649,0.0679,0.063,0.0624,0.0614,0.2289,0.3173,0.2495,0.2147,0.0928,0.4183,0.6063,0.6581,0.6616,0.2231,0.0682,0.0605,0.2925,0.3806,0.3955,0.3587,0.094,0.4211,0.5593,0.6392,0.6037,0.2151,0.0651,0.0596,0.3292,0.4638,0.5221,0.4905,0.0964,0.3983,0.5619,0.6479,0.5999,0.2159,0.0687,0.0594,0.3245,0.4521,0.601,0.5809,0.0921,0.3907,0.5647,0.6494,0.5876,0.2163,0.0635,0.0629,0.3529,0.5418,0.647,0.6353,0.0944,0.3849,0.5434,0.6119,0.5927,0.2137,0.0639,0.0594,0.351,0.5558,0.6331,0.6131,0.0914,0.3695,0.4972,0.5715,0.5664,0.2221,0.062,0.0609,0.0614,0.0608,0.0612,0.0621,0.0627,0.0614,0.062,0.0612,0.0601,0.0605,0.0575 17929s,0.0652,0.0679,0.0634,0.0648,0.066,0.0637,0.0647,0.0668,0.0652,0.0682,0.0629,0.0625,0.0615,0.2299,0.3184,0.2505,0.2157,0.0929,0.431,0.6301,0.6892,0.6922,0.2233,0.0735,0.0618,0.3024,0.3883,0.3981,0.3614,0.0941,0.4334,0.5801,0.6689,0.6295,0.2152,0.0653,0.0598,0.3429,0.4884,0.5357,0.5079,0.0964,0.4084,0.5844,0.6746,0.6266,0.216,0.0685,0.0613,0.3388,0.478,0.6326,0.6143,0.0922,0.3995,0.5868,0.6765,0.6145,0.2164,0.0634,0.0632,0.3715,0.5706,0.6775,0.6692,0.0949,0.3954,0.5633,0.6363,0.6197,0.2139,0.06,0.0614,0.3665,0.5854,0.6622,0.6448,0.0915,0.3776,0.514,0.5947,0.593,0.2222,0.0621,0.0608,0.0611,0.0607,0.0612,0.062,0.0627,0.0614,0.0616,0.0612,0.0599,0.0604,0.0568 18569s,0.0649,0.07,0.0637,0.0647,0.0657,0.0633,0.0648,0.0665,0.0649,0.0677,0.0625,0.0624,0.0614,0.2309,0.3192,0.2512,0.2167,0.0927,0.4433,0.655,0.7205,0.7223,0.2232,0.0673,0.0604,0.312,0.3954,0.4005,0.3644,0.094,0.446,0.6043,0.6984,0.6598,0.2153,0.0652,0.0596,0.3572,0.5109,0.5439,0.5218,0.0963,0.42,0.6065,0.7044,0.6539,0.2161,0.0672,0.0591,0.3544,0.5041,0.6652,0.6438,0.0921,0.4092,0.6093,0.7052,0.6406,0.2163,0.0635,0.0631,0.3904,0.602,0.71,0.7018,0.095,0.405,0.5844,0.6656,0.6496,0.214,0.06,0.0599,0.3831,0.6162,0.6913,0.6778,0.0914,0.3854,0.5332,0.6216,0.6165,0.2223,0.062,0.0609,0.0611,0.0608,0.0611,0.062,0.0625,0.0614,0.0615,0.0612,0.0597,0.0601,0.0575 19209s,0.0652,0.0753,0.0635,0.0646,0.0658,0.0629,0.0646,0.066,0.0648,0.0678,0.0627,0.0622,0.0616,0.2324,0.3201,0.252,0.2177,0.0929,0.4576,0.681,0.7518,0.7562,0.2235,0.065,0.0611,0.3235,0.4017,0.4027,0.367,0.094,0.4606,0.6278,0.7299,0.6907,0.2153,0.0654,0.0599,0.3735,0.5336,0.552,0.5352,0.0963,0.4305,0.6308,0.7344,0.6825,0.2162,0.0712,0.0604,0.3724,0.5328,0.695,0.6735,0.0921,0.4197,0.6341,0.7366,0.6694,0.2166,0.0638,0.0632,0.4107,0.633,0.7431,0.7382,0.0955,0.4161,0.6082,0.6951,0.6789,0.2141,0.0598,0.0605,0.401,0.6475,0.7222,0.7083,0.0913,0.3945,0.5518,0.6458,0.6425,0.2225,0.0625,0.0608,0.061,0.0607,0.0611,0.0621,0.0623,0.0614,0.0614,0.0613,0.0596,0.0597,0.0576 19850s,0.0649,0.074,0.0638,0.0648,0.0657,0.0629,0.0644,0.0658,0.0644,0.0675,0.0624,0.062,0.0615,0.2334,0.3211,0.2532,0.2186,0.0928,0.4723,0.708,0.7827,0.7883,0.2235,0.0641,0.0619,0.3312,0.4069,0.4043,0.3705,0.0942,0.4744,0.6531,0.7611,0.7181,0.2156,0.0654,0.06,0.3894,0.5506,0.5573,0.5457,0.0963,0.443,0.655,0.7671,0.7132,0.2163,0.0725,0.0585,0.3897,0.562,0.7207,0.7027,0.0921,0.4308,0.6596,0.7686,0.6962,0.2166,0.0636,0.0634,0.4325,0.6643,0.7755,0.7737,0.096,0.4276,0.6319,0.7256,0.7075,0.2142,0.0594,0.0601,0.4187,0.6784,0.7542,0.744,0.0916,0.4038,0.5717,0.6731,0.6715,0.2226,0.062,0.0607,0.0606,0.0606,0.0611,0.062,0.0624,0.0613,0.0611,0.0613,0.0596,0.0597,0.0574 20490s,0.0652,0.0678,0.0637,0.0648,0.0654,0.0629,0.064,0.0656,0.0642,0.0674,0.0621,0.0622,0.0614,0.2344,0.3217,0.2539,0.2193,0.0927,0.4883,0.7361,0.8186,0.8228,0.2235,0.0635,0.062,0.3384,0.411,0.4068,0.3719,0.094,0.4884,0.6789,0.7932,0.7518,0.2157,0.0655,0.0599,0.4072,0.5684,0.5625,0.5542,0.0963,0.456,0.6805,0.7987,0.7434,0.2164,0.0717,0.0586,0.409,0.5916,0.7453,0.7307,0.092,0.4422,0.6862,0.7979,0.7273,0.2167,0.0636,0.0633,0.4533,0.6976,0.8095,0.8108,0.0962,0.4389,0.6564,0.7561,0.739,0.2142,0.0611,0.0592,0.438,0.7105,0.7845,0.7762,0.0916,0.4157,0.5936,0.6997,0.6992,0.2227,0.0624,0.0609,0.0604,0.0604,0.061,0.0617,0.0623,0.0611,0.0611,0.0611,0.0595,0.0597,0.0588 21130s,0.0651,0.0727,0.0637,0.0647,0.0654,0.063,0.064,0.0656,0.0643,0.0677,0.0618,0.0624,0.0617,0.2356,0.3229,0.2552,0.2205,0.0928,0.5047,0.7656,0.8502,0.8543,0.2237,0.0764,0.0614,0.3456,0.4153,0.4088,0.3738,0.0941,0.504,0.7071,0.8253,0.7841,0.2157,0.0655,0.06,0.4252,0.5826,0.5646,0.5619,0.0963,0.4691,0.7087,0.8327,0.7764,0.2165,0.0678,0.0586,0.4289,0.62,0.7663,0.7547,0.0922,0.4559,0.7135,0.8329,0.7561,0.2168,0.0641,0.0635,0.4749,0.7316,0.8449,0.8474,0.0967,0.4514,0.6839,0.7874,0.7723,0.2144,0.0605,0.0614,0.4578,0.7446,0.8168,0.8104,0.0914,0.4258,0.6176,0.7294,0.7291,0.2228,0.0623,0.0609,0.0604,0.0603,0.0608,0.0614,0.0621,0.061,0.0609,0.061,0.0595,0.0598,0.0572 21770s,0.0654,0.0733,0.0633,0.0647,0.0659,0.0632,0.0636,0.0655,0.0642,0.0678,0.0615,0.0623,0.0613,0.2364,0.3234,0.2557,0.2215,0.0927,0.5207,0.7943,0.8836,0.8884,0.2237,0.0618,0.062,0.3526,0.4188,0.4099,0.3757,0.094,0.5216,0.7332,0.861,0.8168,0.2158,0.0656,0.0601,0.443,0.5934,0.5682,0.568,0.0963,0.4824,0.7375,0.8659,0.8098,0.2167,0.0762,0.0609,0.4501,0.6504,0.783,0.7699,0.0922,0.4679,0.7409,0.8653,0.7894,0.2169,0.0638,0.0636,0.4967,0.7644,0.8803,0.882,0.0975,0.4631,0.7088,0.8186,0.8032,0.2144,0.059,0.0597,0.4769,0.7759,0.8492,0.8458,0.0915,0.4375,0.6402,0.7601,0.7622,0.2228,0.0622,0.0608,0.0601,0.0601,0.0605,0.0612,0.0617,0.0611,0.0605,0.0608,0.0596,0.0597,0.0575 22410s,0.0651,0.0709,0.0633,0.0645,0.0651,0.063,0.0635,0.0654,0.064,0.0678,0.0629,0.0624,0.0616,0.2375,0.3239,0.2565,0.222,0.0929,0.5386,0.825,0.9179,0.922,0.2239,0.0711,0.0622,0.3582,0.4208,0.4118,0.3766,0.0943,0.5381,0.7628,0.8935,0.851,0.216,0.0657,0.0602,0.4612,0.6017,0.5709,0.5738,0.0964,0.4984,0.7655,0.8981,0.8415,0.2169,0.0692,0.0584,0.4716,0.6816,0.7938,0.7843,0.0922,0.4813,0.7684,0.8988,0.8204,0.2169,0.0643,0.0637,0.5174,0.7986,0.9157,0.9148,0.0981,0.4766,0.7381,0.8513,0.8354,0.2146,0.061,0.0594,0.4979,0.8096,0.8815,0.8801,0.0915,0.4493,0.6637,0.7913,0.7949,0.2229,0.0622,0.0607,0.06,0.0601,0.0605,0.0611,0.0615,0.0609,0.0604,0.0619,0.0596,0.0594,0.0575 23051s,0.0653,0.0677,0.0631,0.0643,0.065,0.0632,0.0637,0.0656,0.0641,0.0675,0.0634,0.0625,0.0615,0.2381,0.3242,0.2571,0.2226,0.0927,0.5575,0.8565,0.9528,0.9536,0.224,0.0719,0.0625,0.364,0.423,0.4126,0.3784,0.094,0.5559,0.7921,0.9282,0.8862,0.2159,0.0658,0.06,0.4783,0.6092,0.573,0.5795,0.0963,0.5135,0.7945,0.9332,0.8769,0.2168,0.0736,0.059,0.4927,0.7103,0.8047,0.7949,0.0921,0.4958,0.8006,0.9319,0.8534,0.2171,0.0642,0.0636,0.5394,0.8319,0.9515,0.9424,0.0987,0.4902,0.7675,0.8842,0.8699,0.2148,0.0661,0.0602,0.5171,0.8442,0.9154,0.914,0.0915,0.4611,0.6897,0.8213,0.8209,0.2229,0.0621,0.0608,0.0602,0.0601,0.0605,0.0609,0.0616,0.0609,0.0603,0.0607,0.0596,0.0596,0.0574 23691s,0.0648,0.0676,0.0628,0.0641,0.0647,0.063,0.0638,0.0657,0.0639,0.0672,0.0636,0.0623,0.0616,0.239,0.3251,0.2579,0.2238,0.0927,0.576,0.8876,0.9873,0.9874,0.2239,0.0668,0.0627,0.3685,0.4256,0.4147,0.3797,0.0939,0.5738,0.8215,0.9612,0.9195,0.216,0.0656,0.06,0.4945,0.6154,0.5752,0.5843,0.0964,0.5299,0.8253,0.9654,0.9094,0.2168,0.0704,0.0586,0.5159,0.7373,0.813,0.8056,0.0919,0.5113,0.8304,0.9654,0.8838,0.2172,0.064,0.0637,0.5609,0.8661,0.9866,0.9706,0.0997,0.5052,0.796,0.9166,0.9027,0.2147,0.0663,0.0608,0.5375,0.8775,0.9473,0.9491,0.0916,0.4735,0.7154,0.8516,0.8528,0.2231,0.0629,0.0609,0.0602,0.0599,0.0601,0.0608,0.0615,0.0605,0.0603,0.0611,0.0596,0.0595,0.0575 24331s,0.0651,0.068,0.0629,0.0641,0.0647,0.0633,0.0638,0.0654,0.0638,0.0675,0.0634,0.0625,0.0615,0.2404,0.3259,0.259,0.2245,0.0928,0.5955,0.9191,1.0218,1.0187,0.2242,0.0578,0.0605,0.3726,0.4293,0.4165,0.3817,0.094,0.5943,0.853,0.9955,0.954,0.2163,0.0658,0.0601,0.5099,0.6202,0.576,0.588,0.0962,0.5455,0.8576,0.9983,0.9424,0.2171,0.0651,0.061,0.5353,0.7648,0.8192,0.8135,0.0921,0.5263,0.8625,0.9989,0.9208,0.2174,0.064,0.064,0.5805,0.899,1.0165,0.9958,0.101,0.5214,0.8277,0.9497,0.9411,0.2148,0.0609,0.0585,0.557,0.9114,0.9814,0.9836,0.0916,0.4881,0.7419,0.8812,0.8882,0.2232,0.0621,0.0608,0.0602,0.0599,0.0601,0.0607,0.0616,0.0606,0.0605,0.0606,0.0596,0.0597,0.0574 24971s,0.0652,0.0715,0.0627,0.0641,0.0644,0.0632,0.0633,0.0654,0.0638,0.0672,0.0638,0.0622,0.0614,0.2411,0.3264,0.2596,0.2251,0.0928,0.6165,0.9512,1.0528,1.0489,0.2243,0.0581,0.0623,0.3759,0.4301,0.418,0.3827,0.0941,0.6135,0.884,1.0279,0.9861,0.2163,0.0658,0.0603,0.522,0.6243,0.5779,0.5913,0.0963,0.5641,0.8875,1.0311,0.9763,0.2172,0.0698,0.0613,0.5581,0.7868,0.8255,0.8207,0.0922,0.5428,0.8942,1.0295,0.954,0.2175,0.0642,0.0639,0.6008,0.9319,1.0455,1.0195,0.1023,0.5355,0.8585,0.983,0.9751,0.2149,0.0606,0.0606,0.5769,0.9442,1.0133,1.0169,0.0917,0.5013,0.771,0.9124,0.9145,0.2233,0.0621,0.061,0.0599,0.0601,0.0599,0.0607,0.0613,0.0606,0.0606,0.0606,0.0598,0.0598,0.0576 25612s,0.0651,0.0678,0.0624,0.0638,0.0642,0.0631,0.0633,0.0652,0.0639,0.067,0.0633,0.0622,0.0611,0.2421,0.3269,0.2603,0.2256,0.0929,0.6376,0.9836,1.0848,1.0764,0.2245,0.0611,0.0615,0.3792,0.4336,0.4198,0.3848,0.094,0.6357,0.9161,1.0609,1.0181,0.2164,0.0662,0.0601,0.5339,0.6273,0.5813,0.5949,0.0962,0.5835,0.92,1.0623,1.0096,0.2172,0.0681,0.0608,0.5804,0.8052,0.8292,0.8275,0.0922,0.5593,0.926,1.0613,0.9876,0.2175,0.0643,0.0639,0.6222,0.9653,1.071,1.0373,0.1037,0.5543,0.8888,1.0138,1.0071,0.2152,0.0608,0.0583,0.5958,0.9773,1.0444,1.0519,0.0916,0.5164,0.7988,0.9416,0.9483,0.2234,0.062,0.0607,0.0601,0.0602,0.0599,0.0606,0.0612,0.0607,0.0605,0.0605,0.0597,0.0598,0.0574 26252s,0.0658,0.0729,0.0627,0.0641,0.0646,0.0634,0.0635,0.0657,0.064,0.0675,0.0634,0.0626,0.0613,0.2432,0.328,0.2612,0.2266,0.0929,0.66,1.0143,1.1134,1.1002,0.2246,0.0597,0.0608,0.3816,0.4358,0.4207,0.3861,0.0943,0.6557,0.9499,1.0937,1.0503,0.2166,0.0664,0.0603,0.5455,0.6307,0.5818,0.5972,0.0964,0.6019,0.9525,1.0941,1.0403,0.2174,0.0695,0.0589,0.603,0.8213,0.8335,0.8337,0.0923,0.5783,0.9576,1.0941,1.02,0.2177,0.0643,0.064,0.6427,0.9964,1.0923,1.0548,0.1054,0.5716,0.9194,1.0461,1.0376,0.2153,0.0662,0.0594,0.6142,1.0109,1.0773,1.0861,0.0917,0.5331,0.8255,0.9737,0.9845,0.2236,0.062,0.061,0.0602,0.0601,0.0601,0.0607,0.0612,0.0608,0.0608,0.0627,0.0599,0.0597,0.0581 26892s,0.0651,0.0677,0.0627,0.0639,0.0642,0.0631,0.0635,0.0657,0.0639,0.0673,0.0636,0.0625,0.0611,0.244,0.3285,0.2619,0.2275,0.093,0.6816,1.0462,1.1418,1.1238,0.2246,0.0595,0.0614,0.3832,0.4367,0.4222,0.3866,0.0942,0.6782,0.9804,1.1229,1.0807,0.2166,0.0666,0.0601,0.555,0.6321,0.5828,0.5992,0.0964,0.6214,0.9841,1.1248,1.0735,0.2174,0.0711,0.0591,0.6225,0.8332,0.8347,0.8384,0.0922,0.5969,0.9901,1.1243,1.0531,0.2178,0.0646,0.0639,0.6638,1.0275,1.1082,1.0677,0.1073,0.5892,0.9516,1.0751,1.0705,0.2154,0.0584,0.059,0.6326,1.0419,1.1089,1.1172,0.0917,0.5475,0.8568,1.0054,1.0142,0.2235,0.0617,0.0608,0.0601,0.0601,0.06,0.0606,0.061,0.0606,0.0608,0.0612,0.0599,0.0597,0.058 27532s,0.065,0.0678,0.0628,0.0638,0.0643,0.063,0.0637,0.0658,0.0638,0.067,0.0634,0.0626,0.0612,0.2451,0.3297,0.2631,0.2284,0.093,0.7054,1.0771,1.1678,1.1453,0.2249,0.0587,0.0629,0.3842,0.4374,0.4229,0.3871,0.0943,0.6998,1.0132,1.1508,1.1086,0.2167,0.0664,0.0604,0.563,0.6346,0.5843,0.6019,0.0964,0.642,1.0143,1.1527,1.1015,0.2175,0.0724,0.0591,0.643,0.842,0.8385,0.843,0.0921,0.6154,1.0209,1.1558,1.0856,0.2179,0.0643,0.0641,0.6835,1.0572,1.1225,1.0796,0.11,0.6091,0.9832,1.1067,1.1047,0.2156,0.0599,0.0607,0.652,1.0729,1.1407,1.1471,0.0917,0.5631,0.887,1.0352,1.0414,0.2237,0.0617,0.0609,0.0602,0.0603,0.06,0.0607,0.0612,0.0607,0.0608,0.0611,0.0601,0.0597,0.0579 28172s,0.0652,0.068,0.0626,0.0637,0.0643,0.0634,0.0634,0.0657,0.0636,0.0671,0.0633,0.0622,0.0611,0.246,0.3295,0.2631,0.2286,0.093,0.729,1.1082,1.1916,1.1675,0.225,0.0579,0.0627,0.3856,0.439,0.4233,0.3874,0.094,0.7236,1.0433,1.1764,1.1328,0.2167,0.0658,0.0603,0.5703,0.6365,0.5855,0.6039,0.0963,0.6635,1.0462,1.1804,1.1296,0.2177,0.077,0.0584,0.661,0.8502,0.8413,0.8461,0.0921,0.6364,1.0506,1.1847,1.1169,0.2179,0.0643,0.064,0.7016,1.0867,1.1334,1.0901,0.1135,0.6298,1.0156,1.1359,1.1349,0.2157,0.0591,0.0587,0.6704,1.1029,1.1692,1.18,0.0916,0.5802,0.9176,1.0648,1.073,0.2236,0.0619,0.0606,0.0601,0.0601,0.06,0.0607,0.0611,0.0605,0.0607,0.0607,0.0599,0.0596,0.0575 28813s,0.065,0.0678,0.0625,0.0636,0.0642,0.0631,0.0637,0.0657,0.0637,0.067,0.0635,0.0623,0.0611,0.247,0.3303,0.2637,0.2291,0.093,0.7524,1.1362,1.2128,1.1859,0.225,0.0583,0.0616,0.3866,0.4408,0.4249,0.3877,0.0941,0.7472,1.0741,1.201,1.1543,0.2169,0.0655,0.0604,0.578,0.6382,0.5879,0.6046,0.0964,0.6833,1.0776,1.2066,1.1523,0.2178,0.0666,0.0611,0.6787,0.8562,0.8432,0.8498,0.0923,0.6556,1.083,1.2111,1.1457,0.2179,0.0646,0.0641,0.7202,1.114,1.1409,1.0979,0.1181,0.6513,1.0452,1.1653,1.1662,0.216,0.0601,0.0609,0.6896,1.1328,1.1978,1.2083,0.0917,0.597,0.9496,1.0937,1.1015,0.2239,0.062,0.0608,0.0602,0.0603,0.0599,0.0608,0.0612,0.0606,0.0609,0.0605,0.0601,0.06,0.0579 29453s,0.0648,0.074,0.0625,0.0638,0.0643,0.0632,0.0635,0.0656,0.0636,0.067,0.0635,0.0625,0.061,0.2479,0.3307,0.2646,0.2298,0.093,0.7762,1.1653,1.2307,1.2026,0.2251,0.0601,0.0628,0.3892,0.4425,0.4252,0.3885,0.0941,0.7712,1.105,1.2251,1.1747,0.2169,0.0649,0.0601,0.5826,0.6392,0.5889,0.6064,0.0963,0.707,1.1088,1.2311,1.1764,0.2177,0.0693,0.06,0.6966,0.8614,0.8446,0.8531,0.0921,0.677,1.1146,1.2371,1.174,0.218,0.0645,0.0641,0.7373,1.1402,1.1482,1.1048,0.1247,0.6719,1.077,1.1939,1.1939,0.2161,0.0587,0.0581,0.7073,1.1604,1.2276,1.2342,0.0918,0.6166,0.9799,1.1224,1.1305,0.2239,0.062,0.0608,0.0603,0.0605,0.0598,0.0608,0.0613,0.0607,0.0609,0.0659,0.0599,0.0599,0.0575 30093s,0.0646,0.0674,0.0625,0.0635,0.0643,0.0631,0.0634,0.0656,0.0635,0.0671,0.0635,0.0626,0.0609,0.2486,0.3311,0.265,0.23,0.0928,0.7999,1.1924,1.2466,1.2176,0.2251,0.0602,0.0619,0.3909,0.4441,0.4256,0.3885,0.0941,0.793,1.1347,1.2465,1.1933,0.2171,0.0647,0.0604,0.5869,0.6397,0.5896,0.6077,0.0964,0.7301,1.1379,1.2538,1.1956,0.2179,0.0714,0.0583,0.7109,0.8655,0.8466,0.8554,0.0922,0.6989,1.1442,1.2625,1.1991,0.2181,0.0647,0.064,0.7533,1.1635,1.1533,1.1112,0.1337,0.6932,1.1062,1.2204,1.2213,0.2163,0.0596,0.0595,0.7247,1.1878,1.2535,1.2622,0.0916,0.6351,1.0116,1.1484,1.1579,0.224,0.0622,0.0607,0.0603,0.0606,0.0599,0.0607,0.0614,0.0607,0.0607,0.0611,0.06,0.06,0.0573 30733s,0.0649,0.0677,0.0626,0.0638,0.0643,0.0633,0.0635,0.0657,0.0636,0.0669,0.0633,0.0626,0.061,0.2498,0.332,0.2659,0.2309,0.0931,0.8243,1.2194,1.26,1.23,0.2253,0.0585,0.0615,0.3926,0.4446,0.4257,0.3894,0.0941,0.8164,1.1628,1.2651,1.211,0.2171,0.0646,0.0605,0.59,0.6408,0.5898,0.6092,0.0964,0.7526,1.1656,1.2751,1.2145,0.218,0.0696,0.0591,0.7247,0.8682,0.8467,0.8577,0.0923,0.7198,1.173,1.2845,1.2198,0.2182,0.0644,0.0641,0.7689,1.1828,1.1576,1.1167,0.1442,0.7171,1.1364,1.2476,1.2482,0.2166,0.0597,0.0585,0.7398,1.2146,1.2807,1.2875,0.0917,0.656,1.0413,1.1736,1.1838,0.2242,0.062,0.0609,0.0604,0.0606,0.0599,0.0608,0.0615,0.0608,0.0609,0.0615,0.06,0.0602,0.058 31373s,0.065,0.0682,0.0627,0.0637,0.0644,0.0634,0.0634,0.0658,0.0639,0.0669,0.0634,0.0624,0.0609,0.2507,0.3328,0.2668,0.2316,0.0931,0.8487,1.2441,1.2708,1.2393,0.2254,0.0598,0.0629,0.3934,0.4454,0.4259,0.3897,0.094,0.8412,1.19,1.2806,1.2264,0.2172,0.0647,0.0605,0.5931,0.6417,0.5903,0.609,0.0963,0.7759,1.1937,1.2939,1.2312,0.2181,0.0775,0.0587,0.7384,0.8712,0.8478,0.8592,0.0921,0.7428,1.2016,1.3057,1.24,0.2183,0.0644,0.0641,0.7839,1.1983,1.161,1.1204,0.157,0.7385,1.1662,1.2729,1.2718,0.2168,0.0591,0.0587,0.7552,1.2396,1.3063,1.3105,0.0915,0.6768,1.0718,1.1998,1.2077,0.2239,0.0623,0.0609,0.0605,0.0605,0.06,0.0608,0.0614,0.061,0.0606,0.0607,0.0598,0.0602,0.0589 32014s,0.0649,0.0695,0.0625,0.0636,0.0642,0.0631,0.0634,0.0656,0.0638,0.0669,0.0635,0.0624,0.0606,0.2513,0.3329,0.2671,0.232,0.0929,0.874,1.2685,1.2805,1.2474,0.2254,0.0584,0.0629,0.3945,0.4455,0.4262,0.3901,0.0941,0.8658,1.217,1.2944,1.24,0.2173,0.0646,0.0603,0.5949,0.6428,0.591,0.6104,0.0963,0.8001,1.2203,1.3093,1.2475,0.2181,0.0724,0.0585,0.7496,0.8728,0.8491,0.861,0.0921,0.7674,1.2282,1.3266,1.2584,0.2183,0.0648,0.0642,0.7986,1.2093,1.1633,1.1245,0.1681,0.7609,1.1947,1.2964,1.2928,0.217,0.0594,0.0587,0.7692,1.2626,1.3278,1.3309,0.0917,0.6958,1.1032,1.2249,1.2338,0.2242,0.0621,0.0606,0.0603,0.0606,0.0598,0.0606,0.0614,0.0608,0.0605,0.0614,0.0597,0.06,0.0571 32654s,0.0651,0.0674,0.0628,0.0638,0.0645,0.0633,0.0635,0.0656,0.0634,0.0669,0.0634,0.0625,0.061,0.252,0.333,0.2675,0.2323,0.0929,0.8963,1.2913,1.2887,1.255,0.2255,0.0581,0.063,0.3948,0.4458,0.4258,0.3904,0.0941,0.8898,1.2436,1.3057,1.2522,0.2172,0.0653,0.0604,0.5975,0.644,0.5918,0.612,0.0965,0.8238,1.2461,1.3238,1.2609,0.2184,0.0772,0.0603,0.7608,0.8749,0.8503,0.8626,0.0922,0.7896,1.2543,1.3463,1.2786,0.2185,0.0644,0.0639,0.8124,1.2188,1.1653,1.1277,0.1773,0.7836,1.2226,1.3179,1.3132,0.2171,0.0604,0.058,0.7828,1.286,1.3496,1.3488,0.0916,0.7162,1.1318,1.2501,1.2586,0.2243,0.0621,0.0605,0.0603,0.0604,0.0599,0.0607,0.0617,0.0609,0.0608,0.0609,0.0597,0.0601,0.0574 33294s,0.065,0.0701,0.0627,0.0637,0.0642,0.0632,0.0632,0.0655,0.0636,0.0668,0.0634,0.0622,0.0608,0.2526,0.3336,0.2684,0.2326,0.0929,0.92,1.311,1.2962,1.2623,0.2256,0.0592,0.0625,0.3956,0.4477,0.427,0.391,0.0941,0.9142,1.266,1.3162,1.2622,0.2174,0.0648,0.0604,0.5988,0.645,0.5922,0.6128,0.0963,0.847,1.2709,1.3355,1.2732,0.2183,0.0646,0.0596,0.7706,0.8766,0.8506,0.8645,0.0921,0.8126,1.2796,1.3629,1.2931,0.2186,0.0638,0.0639,0.8255,1.2261,1.1687,1.1313,0.1863,0.806,1.25,1.3408,1.3325,0.2174,0.0589,0.0608,0.7958,1.3074,1.37,1.3656,0.0917,0.7372,1.1618,1.2722,1.2822,0.2242,0.0624,0.0608,0.0603,0.0606,0.0598,0.0606,0.0616,0.0607,0.0604,0.0606,0.0595,0.0601,0.058 33934s,0.065,0.067,0.0626,0.0634,0.0641,0.0632,0.063,0.0656,0.0636,0.0667,0.0635,0.0623,0.0607,0.2531,0.3334,0.2685,0.2328,0.093,0.945,1.3301,1.302,1.2671,0.2258,0.0607,0.0624,0.3954,0.4477,0.4276,0.3918,0.0941,0.9364,1.2895,1.3241,1.2698,0.2175,0.0649,0.0605,0.5998,0.6449,0.5916,0.6137,0.0964,0.8701,1.294,1.3453,1.2838,0.2184,0.0614,0.0586,0.7825,0.8778,0.8519,0.866,0.0922,0.8362,1.3042,1.3767,1.3085,0.2187,0.064,0.0639,0.8362,1.2316,1.1691,1.1342,0.1949,0.8301,1.276,1.3595,1.3484,0.2179,0.06,0.0588,0.8084,1.3291,1.3869,1.3809,0.0918,0.7575,1.1895,1.2954,1.3042,0.2244,0.0635,0.0607,0.0604,0.0603,0.0598,0.0606,0.0615,0.0607,0.0605,0.0619,0.0594,0.0599,0.0573 34575s,0.0648,0.0725,0.0627,0.0635,0.0642,0.063,0.0631,0.0656,0.0636,0.0669,0.0634,0.0623,0.0607,0.254,0.3343,0.269,0.2332,0.0931,0.9658,1.3463,1.3062,1.2726,0.2258,0.0582,0.0629,0.3966,0.4484,0.4273,0.3922,0.0941,0.9598,1.3107,1.331,1.277,0.2175,0.0649,0.0601,0.6021,0.6457,0.5925,0.6135,0.0964,0.8946,1.3161,1.3536,1.2934,0.2185,0.0662,0.0588,0.791,0.8791,0.8517,0.8667,0.0922,0.86,1.3266,1.3887,1.3226,0.2187,0.0636,0.0637,0.8495,1.2363,1.1704,1.1357,0.2031,0.8544,1.3014,1.3793,1.3644,0.2183,0.0591,0.0578,0.8199,1.3486,1.4027,1.3937,0.0917,0.778,1.2164,1.3165,1.3264,0.2245,0.0623,0.0609,0.0603,0.0604,0.0596,0.0606,0.0614,0.0606,0.0605,0.0603,0.0592,0.0598,0.0574 35215s,0.0651,0.0672,0.0629,0.0637,0.0644,0.0633,0.0632,0.0658,0.064,0.0671,0.0635,0.0625,0.0609,0.255,0.3348,0.2697,0.2339,0.0931,0.9864,1.3597,1.3106,1.2763,0.2261,0.0594,0.0624,0.3975,0.4492,0.4283,0.3931,0.0942,0.9825,1.3307,1.3371,1.2832,0.2177,0.0649,0.0601,0.6024,0.6469,0.5923,0.6146,0.0966,0.9197,1.3375,1.3611,1.2994,0.2186,0.0631,0.0583,0.7991,0.8805,0.8515,0.8676,0.0923,0.8829,1.3492,1.3987,1.3352,0.2187,0.0634,0.0639,0.8598,1.2393,1.171,1.1377,0.2135,0.8776,1.3244,1.3985,1.3782,0.2186,0.0593,0.0593,0.8321,1.3674,1.4175,1.4058,0.0918,0.7995,1.2439,1.3376,1.3466,0.2246,0.0627,0.0605,0.0604,0.0603,0.0597,0.0606,0.0614,0.0606,0.0606,0.0614,0.0593,0.0598,0.0577 35855s,0.0648,0.0669,0.0629,0.0636,0.0645,0.0633,0.0634,0.0659,0.0638,0.0669,0.0635,0.0638,0.0608,0.2556,0.3355,0.2701,0.2339,0.0931,1.0077,1.3723,1.3147,1.2808,0.2262,0.061,0.0626,0.3984,0.4497,0.4288,0.3933,0.0943,1.0038,1.3469,1.3411,1.2892,0.2178,0.0649,0.0601,0.6033,0.6465,0.5923,0.6144,0.0965,0.9416,1.3556,1.3658,1.3056,0.2186,0.0647,0.0584,0.8058,0.881,0.8522,0.8686,0.0922,0.9057,1.3694,1.4073,1.3449,0.2189,0.0633,0.0638,0.8699,1.2417,1.1717,1.1389,0.2217,0.8998,1.3473,1.4142,1.3913,0.2191,0.0588,0.0578,0.8415,1.3854,1.4284,1.4162,0.0915,0.8225,1.2698,1.3571,1.3675,0.2247,0.0633,0.0609,0.0604,0.0605,0.0597,0.0606,0.0614,0.0606,0.0605,0.0615,0.0592,0.0598,0.0578 36495s,0.0648,0.0745,0.063,0.0636,0.0645,0.0634,0.0647,0.066,0.0638,0.067,0.0635,0.0625,0.0609,0.2565,0.3356,0.2705,0.2344,0.093,1.0275,1.3812,1.3168,1.2844,0.2261,0.0605,0.069,0.3983,0.4497,0.4285,0.3937,0.0941,1.0239,1.3621,1.3457,1.2939,0.2177,0.0648,0.0597,0.6034,0.6464,0.5926,0.615,0.0964,0.9641,1.3739,1.3724,1.3113,0.2187,0.0608,0.0581,0.8111,0.8818,0.8519,0.8696,0.0921,0.9292,1.3894,1.4148,1.3549,0.2189,0.0632,0.0637,0.8797,1.2439,1.1725,1.141,0.2314,0.9223,1.3681,1.4291,1.403,0.2192,0.0609,0.0582,0.8518,1.4007,1.4397,1.4249,0.0917,0.844,1.2934,1.3784,1.3861,0.2247,0.0622,0.0608,0.0602,0.0604,0.0594,0.0604,0.0614,0.0605,0.0605,0.062,0.0592,0.0596,0.0574 37135s,0.0646,0.0667,0.063,0.0635,0.0645,0.0631,0.0631,0.0658,0.0635,0.0669,0.0637,0.0625,0.0608,0.2567,0.3359,0.2705,0.2344,0.0932,1.047,1.3901,1.3194,1.2875,0.2262,0.059,0.0623,0.3987,0.4504,0.4294,0.394,0.0943,1.0454,1.3754,1.3484,1.2975,0.2178,0.0652,0.0598,0.6039,0.6474,0.5925,0.6157,0.0964,0.9856,1.3889,1.376,1.3161,0.2189,0.0614,0.0584,0.8158,0.8826,0.8515,0.8701,0.0923,0.9522,1.4075,1.4208,1.3623,0.2191,0.0633,0.0636,0.8895,1.2457,1.1732,1.1424,0.2406,0.9445,1.3898,1.4416,1.4138,0.2197,0.0598,0.0581,0.8612,1.4172,1.4477,1.4319,0.0917,0.865,1.3165,1.3974,1.4046,0.2248,0.0624,0.0607,0.0604,0.0602,0.0596,0.0607,0.0612,0.0606,0.0604,0.0604,0.0591,0.0597,0.0573 37776s,0.0646,0.0725,0.0628,0.0633,0.0641,0.0631,0.063,0.0657,0.0636,0.0668,0.0635,0.0624,0.0606,0.2573,0.336,0.2706,0.2345,0.0931,1.0669,1.3979,1.3216,1.29,0.2263,0.0607,0.0624,0.3994,0.4511,0.4296,0.3946,0.0942,1.0652,1.386,1.3518,1.301,0.218,0.0649,0.0598,0.6045,0.6475,0.5928,0.6168,0.0964,1.0077,1.403,1.38,1.3211,0.219,0.0626,0.0588,0.8196,0.883,0.8527,0.871,0.0923,0.9735,1.4253,1.4263,1.3696,0.2191,0.0631,0.0635,0.8993,1.2468,1.1735,1.1444,0.2507,0.9655,1.4096,1.4535,1.4251,0.2202,0.0587,0.0586,0.871,1.4319,1.4545,1.4381,0.0918,0.887,1.338,1.4149,1.4227,0.2264,0.0624,0.0607,0.0602,0.0602,0.0592,0.0603,0.0613,0.0606,0.0602,0.0611,0.059,0.0597,0.0578 38417s,0.0646,0.0668,0.0628,0.0633,0.0643,0.0631,0.0631,0.0657,0.0636,0.0669,0.0637,0.0626,0.0608,0.258,0.3366,0.2712,0.2353,0.0931,1.0848,1.4023,1.323,1.2919,0.2264,0.0644,0.0584,0.3994,0.4498,0.4301,0.3951,0.0941,1.0856,1.3957,1.3544,1.305,0.218,0.0648,0.0595,0.6056,0.6476,0.5932,0.6173,0.0964,1.0279,1.4154,1.3826,1.3248,0.2189,0.061,0.0584,0.8217,0.8826,0.8523,0.8721,0.0923,0.9947,1.4398,1.4306,1.3751,0.2192,0.0633,0.0635,0.9081,1.2477,1.1734,1.1453,0.2614,0.987,1.4276,1.4623,1.4321,0.2207,0.0599,0.0581,0.8798,1.4459,1.4605,1.4445,0.0917,0.9061,1.3597,1.4322,1.4385,0.2249,0.0623,0.0606,0.0603,0.0603,0.0594,0.0605,0.0614,0.0606,0.0602,0.06,0.0589,0.0599,0.0572 39058s,0.0648,0.0718,0.063,0.0635,0.0645,0.0631,0.0629,0.0657,0.0639,0.0669,0.0636,0.0625,0.0608,0.2583,0.3367,0.2711,0.2353,0.093,1.1023,1.4072,1.3245,1.2948,0.2262,0.0596,0.0613,0.4001,0.451,0.4303,0.3956,0.0943,1.1054,1.4037,1.3571,1.3074,0.218,0.0649,0.0595,0.6055,0.6472,0.5936,0.618,0.0965,1.0471,1.4254,1.3846,1.3273,0.2189,0.0603,0.0583,0.8236,0.8824,0.8522,0.8722,0.0923,1.0145,1.4521,1.434,1.3792,0.2191,0.0631,0.0633,0.916,1.2479,1.1738,1.146,0.2733,1.007,1.444,1.4712,1.4408,0.2211,0.0598,0.0591,0.8885,1.4586,1.4648,1.4494,0.0917,0.9273,1.3793,1.4477,1.4541,0.225,0.0623,0.0607,0.0602,0.0604,0.0593,0.0603,0.0612,0.0605,0.0601,0.0611,0.0588,0.0595,0.0576 39698s,0.0645,0.0665,0.0628,0.0634,0.0641,0.063,0.0629,0.0656,0.0634,0.0668,0.0637,0.0623,0.0608,0.2593,0.3373,0.2718,0.2357,0.0931,1.1171,1.4116,1.3255,1.2962,0.2265,0.0596,0.0612,0.4005,0.4525,0.4308,0.3965,0.0943,1.1216,1.4102,1.3582,1.3093,0.2182,0.0646,0.0596,0.6053,0.6489,0.5935,0.6179,0.0965,1.0665,1.4349,1.3872,1.33,0.2191,0.0598,0.0585,0.8258,0.8828,0.8519,0.8729,0.0923,1.0346,1.4644,1.4375,1.384,0.2192,0.0631,0.0633,0.9233,1.2476,1.1732,1.1467,0.2869,1.0263,1.4591,1.4774,1.4466,0.2217,0.0588,0.0593,0.898,1.4715,1.4682,1.4526,0.0919,0.9462,1.3984,1.4638,1.4681,0.2252,0.063,0.0606,0.0602,0.0604,0.0593,0.0605,0.0614,0.0606,0.0601,0.0615,0.0589,0.0595,0.0572 40338s,0.0646,0.0741,0.0629,0.0633,0.0645,0.0633,0.0627,0.0658,0.0634,0.0669,0.0635,0.0625,0.0607,0.2601,0.3383,0.2727,0.2364,0.0932,1.131,1.4143,1.3267,1.2979,0.2267,0.0582,0.061,0.4005,0.4521,0.4313,0.3965,0.0942,1.139,1.4162,1.36,1.3122,0.2183,0.0648,0.0594,0.6061,0.6485,0.5942,0.6182,0.0964,1.0857,1.4429,1.3893,1.3332,0.2192,0.061,0.0598,0.8259,0.8831,0.8513,0.8728,0.0924,1.055,1.4748,1.4398,1.3872,0.2194,0.0632,0.0629,0.9306,1.2492,1.1733,1.1481,0.2966,1.0456,1.4746,1.4844,1.4534,0.222,0.0595,0.059,0.9062,1.4831,1.4716,1.4553,0.0918,0.9667,1.417,1.4776,1.482,0.2251,0.0627,0.0608,0.0603,0.0604,0.0593,0.0606,0.0613,0.0604,0.0601,0.0605,0.0588,0.0595,0.0593 40978s,0.0648,0.0665,0.0628,0.0634,0.0643,0.0629,0.0629,0.0655,0.0634,0.0668,0.0636,0.0623,0.0607,0.2608,0.3386,0.2729,0.2367,0.0933,1.1438,1.4172,1.3279,1.3001,0.2268,0.0579,0.0614,0.4006,0.4522,0.4315,0.3967,0.0944,1.1557,1.4219,1.3622,1.3142,0.2184,0.0649,0.0596,0.6065,0.6482,0.5941,0.6184,0.0966,1.104,1.4492,1.3914,1.3352,0.2193,0.0608,0.0587,0.8274,0.8837,0.851,0.873,0.0925,1.0731,1.4848,1.442,1.3915,0.2195,0.0634,0.0632,0.9386,1.2501,1.1734,1.1495,0.3075,1.0652,1.4884,1.4897,1.4589,0.2225,0.0589,0.0583,0.9146,1.4935,1.4739,1.4598,0.0918,0.9859,1.4366,1.4936,1.4958,0.2253,0.0632,0.0609,0.0601,0.0604,0.0593,0.0604,0.0613,0.0605,0.06,0.0624,0.0586,0.0595,0.0573 41619s,0.0648,0.0734,0.0629,0.0634,0.0643,0.0629,0.0629,0.0654,0.0636,0.0668,0.0636,0.0623,0.0608,0.261,0.3384,0.2727,0.2367,0.0933,1.1553,1.4216,1.3283,1.3015,0.2269,0.0637,0.0621,0.4013,0.4525,0.4316,0.3974,0.0944,1.1703,1.4263,1.3635,1.3167,0.2187,0.0649,0.0595,0.6067,0.649,0.5942,0.6193,0.0966,1.1223,1.454,1.3925,1.3378,0.2194,0.0588,0.0581,0.8278,0.884,0.8509,0.8737,0.0925,1.0939,1.4921,1.4444,1.3937,0.2196,0.0631,0.063,0.9453,1.2508,1.1744,1.1513,0.316,1.0842,1.5025,1.4953,1.465,0.2232,0.0587,0.0581,0.9221,1.503,1.4755,1.4619,0.0918,1.0031,1.4527,1.5069,1.5051,0.2252,0.0628,0.0609,0.0603,0.06,0.0594,0.0604,0.0611,0.0604,0.0599,0.064,0.0588,0.0594,0.0574 42259s,0.0646,0.0666,0.0629,0.0634,0.0642,0.0628,0.0629,0.0655,0.0636,0.0669,0.0636,0.0624,0.0608,0.2618,0.3389,0.2731,0.2368,0.0932,1.166,1.424,1.3297,1.3035,0.2271,0.0581,0.0615,0.4012,0.4531,0.4319,0.3978,0.0944,1.1841,1.4293,1.3636,1.3181,0.2185,0.065,0.0594,0.6066,0.6494,0.5944,0.6194,0.0966,1.1401,1.4576,1.3935,1.3396,0.2195,0.0618,0.0583,0.8294,0.8838,0.8513,0.8745,0.0924,1.1109,1.499,1.445,1.3969,0.2196,0.0631,0.063,0.9514,1.2506,1.1744,1.1512,0.3303,1.1021,1.5137,1.4981,1.4688,0.2239,0.0586,0.0583,0.9304,1.5102,1.4766,1.462,0.0919,1.0211,1.4689,1.5182,1.5142,0.2253,0.0626,0.0606,0.0601,0.06,0.0593,0.0603,0.0611,0.0602,0.0598,0.0624,0.0587,0.0595,0.0575 42899s,0.0646,0.0738,0.0627,0.0633,0.0641,0.0629,0.0629,0.0652,0.0633,0.0669,0.0637,0.0625,0.0607,0.2624,0.3393,0.2737,0.2373,0.0933,1.1746,1.4258,1.3299,1.3045,0.2271,0.0583,0.0614,0.4024,0.4532,0.4321,0.3984,0.0944,1.1959,1.432,1.3647,1.3201,0.2186,0.0648,0.0595,0.607,0.6484,0.5938,0.62,0.0967,1.1579,1.4619,1.3948,1.3413,0.2195,0.0639,0.0587,0.8301,0.8842,0.8516,0.8752,0.0924,1.1295,1.5044,1.4472,1.4,0.2197,0.0632,0.063,0.9569,1.2511,1.1745,1.1522,0.3433,1.1188,1.5239,1.5019,1.4713,0.225,0.059,0.0581,0.9397,1.5167,1.4767,1.4644,0.092,1.0403,1.4834,1.5296,1.5238,0.2255,0.063,0.0608,0.0601,0.0602,0.0592,0.0604,0.0611,0.0601,0.0598,0.0643,0.0586,0.0593,0.0576 43539s,0.0647,0.0668,0.063,0.0635,0.064,0.0628,0.063,0.0653,0.0632,0.067,0.0635,0.0623,0.0608,0.2632,0.34,0.2741,0.2378,0.0934,1.1837,1.427,1.3305,1.3058,0.2273,0.0603,0.0611,0.4026,0.454,0.4332,0.3988,0.0944,1.2068,1.4345,1.365,1.3215,0.2187,0.0648,0.0596,0.6079,0.6479,0.5941,0.6208,0.0966,1.1744,1.4652,1.3955,1.3436,0.2197,0.0596,0.0583,0.8306,0.8843,0.8509,0.8753,0.0926,1.1473,1.5089,1.4481,1.4016,0.2199,0.0633,0.0629,0.9614,1.2515,1.1736,1.1531,0.3551,1.1362,1.5334,1.5046,1.474,0.226,0.0595,0.0579,0.9487,1.5232,1.4779,1.4655,0.0921,1.0571,1.4979,1.5398,1.5329,0.2257,0.0632,0.0606,0.0601,0.0602,0.0592,0.0603,0.061,0.0602,0.0597,0.0615,0.0587,0.0595,0.0577 44179s,0.0649,0.0667,0.0627,0.0635,0.0643,0.0627,0.0631,0.0653,0.0634,0.067,0.0635,0.0626,0.061,0.2639,0.3406,0.275,0.2386,0.0935,1.1908,1.4278,1.3299,1.3072,0.2274,0.0583,0.0612,0.4028,0.4537,0.4335,0.3992,0.0945,1.2172,1.4375,1.3652,1.3227,0.219,0.0649,0.0595,0.6083,0.649,0.5942,0.6204,0.0969,1.189,1.4684,1.3963,1.3441,0.2198,0.0636,0.0584,0.8303,0.8844,0.8512,0.8754,0.0926,1.1648,1.5131,1.4488,1.4028,0.2199,0.0634,0.063,0.9663,1.2511,1.1736,1.1538,0.3688,1.1536,1.5402,1.5064,1.4767,0.2271,0.0608,0.0585,0.9556,1.5266,1.477,1.4668,0.092,1.0743,1.5121,1.5501,1.5398,0.2257,0.0634,0.0609,0.0604,0.0604,0.0594,0.0605,0.0613,0.0603,0.06,0.0649,0.0588,0.0595,0.0584 44820s,0.0646,0.0738,0.0629,0.0637,0.0643,0.0628,0.063,0.0653,0.0632,0.0668,0.0634,0.0625,0.0609,0.2639,0.3404,0.2746,0.2383,0.0933,1.1985,1.4302,1.3305,1.3086,0.2274,0.0578,0.0616,0.4027,0.4545,0.4331,0.3995,0.0944,1.2258,1.4398,1.3661,1.3236,0.2188,0.0648,0.0594,0.6081,0.6493,0.5941,0.6209,0.0968,1.2033,1.4708,1.3974,1.3448,0.2199,0.0649,0.0583,0.8308,0.8844,0.8507,0.8759,0.0925,1.1813,1.516,1.4505,1.4045,0.22,0.0632,0.0629,0.9715,1.2522,1.1738,1.1542,0.3808,1.1703,1.5477,1.5085,1.4782,0.2279,0.0601,0.0585,0.9641,1.5299,1.4782,1.4681,0.0918,1.0896,1.5262,1.5584,1.5469,0.2257,0.0634,0.0607,0.0601,0.06,0.0593,0.0602,0.061,0.0601,0.0595,0.0618,0.0584,0.0594,0.0578 45460s,0.0648,0.0668,0.0629,0.0635,0.0642,0.0628,0.063,0.0651,0.0635,0.0667,0.0634,0.0624,0.0608,0.2645,0.3402,0.2744,0.2384,0.0934,1.2047,1.4315,1.3301,1.3092,0.2275,0.0576,0.0616,0.403,0.4537,0.4331,0.4,0.0944,1.2336,1.44,1.3663,1.324,0.2188,0.0648,0.0595,0.6086,0.6499,0.5952,0.6214,0.0968,1.2155,1.4724,1.3972,1.3467,0.2199,0.0616,0.0593,0.8318,0.8841,0.8508,0.8762,0.0926,1.1983,1.5185,1.4507,1.4059,0.2202,0.0629,0.0628,0.9758,1.2527,1.1733,1.1549,0.3922,1.1878,1.5528,1.5104,1.4811,0.2297,0.0589,0.058,0.9707,1.5324,1.4775,1.4678,0.092,1.1063,1.5368,1.5661,1.5532,0.2258,0.0628,0.0606,0.0601,0.0599,0.0592,0.0602,0.0609,0.06,0.0596,0.0604,0.0585,0.0592,0.0575 46100s,0.0649,0.0726,0.0631,0.0637,0.0644,0.0629,0.0629,0.0653,0.0636,0.067,0.0634,0.0626,0.0608,0.2648,0.3408,0.275,0.2387,0.0934,1.2097,1.4324,1.3302,1.3099,0.2276,0.0579,0.0606,0.4037,0.4541,0.4332,0.4003,0.0945,1.2418,1.4417,1.3677,1.3256,0.219,0.0649,0.0594,0.6088,0.6509,0.5953,0.6216,0.0968,1.2262,1.4742,1.3971,1.3471,0.22,0.0614,0.059,0.8326,0.8842,0.8504,0.8765,0.0926,1.2128,1.5216,1.4508,1.4072,0.2202,0.0629,0.063,0.9784,1.2522,1.173,1.156,0.406,1.2034,1.5592,1.5117,1.4827,0.2313,0.06,0.0591,0.9788,1.5338,1.4782,1.4696,0.092,1.1226,1.5472,1.5736,1.5608,0.2258,0.0623,0.0608,0.0601,0.0601,0.0591,0.0604,0.0609,0.0601,0.0597,0.061,0.0586,0.0592,0.0573 46740s,0.0646,0.0665,0.0627,0.0635,0.0642,0.0629,0.0632,0.0652,0.0634,0.0668,0.0634,0.0624,0.0607,0.2648,0.3404,0.2746,0.2385,0.0933,1.2158,1.4345,1.3308,1.3109,0.2276,0.0618,0.0614,0.4042,0.4561,0.4344,0.401,0.0945,1.248,1.4426,1.3672,1.3259,0.2192,0.0648,0.0592,0.6094,0.6505,0.5957,0.6218,0.0967,1.2359,1.4756,1.3975,1.3482,0.2201,0.0628,0.0585,0.8329,0.884,0.8508,0.8773,0.0925,1.2292,1.5236,1.4515,1.4088,0.2202,0.0628,0.0626,0.9827,1.2525,1.1732,1.1564,0.42,1.2196,1.5621,1.5122,1.4844,0.2334,0.0592,0.0588,0.9861,1.5362,1.4774,1.4695,0.092,1.1388,1.5593,1.5802,1.5661,0.2259,0.0618,0.0606,0.06,0.0599,0.0592,0.0602,0.0607,0.0601,0.0596,0.0605,0.0584,0.0592,0.0574 47380s,0.0649,0.0744,0.0628,0.0636,0.0645,0.0628,0.0631,0.0655,0.0634,0.0671,0.0634,0.0625,0.0609,0.2655,0.3414,0.2755,0.2394,0.0935,1.2207,1.4352,1.3303,1.312,0.2278,0.062,0.0612,0.4045,0.4566,0.4348,0.4016,0.0946,1.2548,1.4444,1.3674,1.327,0.2192,0.0649,0.0595,0.6094,0.6503,0.5958,0.6217,0.0968,1.2463,1.4774,1.3979,1.3489,0.2202,0.0603,0.0585,0.8329,0.884,0.8494,0.8781,0.0927,1.243,1.5253,1.4511,1.4094,0.2204,0.0631,0.0629,0.9865,1.2524,1.1731,1.1571,0.4343,1.2361,1.5658,1.5125,1.4855,0.2358,0.059,0.0585,0.9936,1.5366,1.4779,1.4701,0.0922,1.1569,1.5691,1.5851,1.5716,0.226,0.0619,0.0609,0.06,0.0599,0.0592,0.0605,0.061,0.0603,0.0596,0.0605,0.0587,0.0593,0.0571 48021s,0.0648,0.0737,0.0628,0.0634,0.0641,0.0627,0.063,0.0655,0.0632,0.0676,0.0636,0.0625,0.0608,0.2657,0.3413,0.2754,0.2393,0.0934,1.2247,1.436,1.3307,1.3135,0.2277,0.059,0.0613,0.4045,0.4567,0.4348,0.4019,0.0945,1.26,1.4448,1.3671,1.3274,0.2192,0.0648,0.0592,0.6099,0.6502,0.5953,0.6224,0.0967,1.2543,1.4788,1.3975,1.3497,0.2202,0.0629,0.0588,0.8344,0.8842,0.8501,0.8784,0.0925,1.2559,1.5271,1.452,1.4112,0.2202,0.063,0.0626,0.9897,1.2515,1.1721,1.1572,0.4503,1.251,1.5672,1.5132,1.4862,0.2388,0.0588,0.0593,1.0015,1.5381,1.477,1.47,0.092,1.1711,1.5792,1.5908,1.5763,0.2259,0.0615,0.0606,0.06,0.0598,0.0593,0.0602,0.0605,0.0599,0.0596,0.0607,0.0585,0.0592,0.0575 48661s,0.0648,0.0666,0.0626,0.0636,0.0643,0.063,0.063,0.0657,0.0631,0.0672,0.0633,0.0625,0.0609,0.2667,0.3423,0.2767,0.2403,0.0935,1.2277,1.4351,1.3301,1.3134,0.228,0.0582,0.0614,0.4048,0.4562,0.435,0.4022,0.0947,1.2647,1.4453,1.3676,1.3291,0.2193,0.0647,0.0594,0.6105,0.6501,0.596,0.6232,0.0969,1.2625,1.4794,1.3977,1.3511,0.2203,0.0619,0.0589,0.8345,0.8837,0.8498,0.8781,0.0926,1.2661,1.5272,1.4512,1.4118,0.2204,0.0632,0.0628,0.9918,1.2521,1.1726,1.1582,0.4622,1.2666,1.5718,1.5143,1.4877,0.2428,0.0598,0.0583,1.0084,1.538,1.4761,1.4701,0.0921,1.1871,1.5871,1.5948,1.58,0.2262,0.0618,0.0608,0.06,0.0597,0.0592,0.0603,0.0607,0.06,0.0596,0.0614,0.0585,0.0593,0.0572 49301s,0.0648,0.0742,0.0628,0.0637,0.0644,0.063,0.0631,0.0654,0.0633,0.067,0.0635,0.0626,0.061,0.2672,0.3423,0.2764,0.2406,0.0936,1.2308,1.4368,1.3303,1.3145,0.2281,0.0601,0.0614,0.4052,0.4562,0.4349,0.4025,0.0946,1.2698,1.4463,1.3672,1.3291,0.2194,0.065,0.0594,0.611,0.6505,0.5962,0.6237,0.097,1.2701,1.48,1.3976,1.3513,0.2204,0.0618,0.0593,0.835,0.8842,0.8495,0.8786,0.0928,1.2772,1.5289,1.4516,1.4121,0.2205,0.0632,0.0625,0.994,1.2522,1.1724,1.1586,0.478,1.2799,1.5737,1.5151,1.4886,0.2475,0.0593,0.0582,1.0168,1.5378,1.4757,1.4719,0.0922,1.2027,1.5969,1.5995,1.5839,0.2262,0.0617,0.0609,0.0602,0.0599,0.0592,0.06,0.0606,0.06,0.0596,0.0601,0.0586,0.0593,0.0575 49941s,0.0648,0.0669,0.0628,0.0638,0.0643,0.063,0.0629,0.0654,0.063,0.067,0.0637,0.0625,0.0608,0.2673,0.3425,0.2765,0.2404,0.0935,1.2341,1.4374,1.3299,1.3153,0.2281,0.0611,0.0609,0.4054,0.4565,0.435,0.4031,0.0948,1.2738,1.4476,1.3678,1.3301,0.2194,0.0648,0.0594,0.6115,0.6508,0.5969,0.6241,0.0969,1.2763,1.4813,1.3979,1.3523,0.2204,0.0609,0.0588,0.8349,0.8844,0.8494,0.8787,0.0928,1.2863,1.5296,1.4517,1.4133,0.2207,0.0631,0.0625,0.9961,1.253,1.1727,1.1591,0.4943,1.2947,1.5749,1.5151,1.4899,0.2527,0.0588,0.0581,1.0233,1.5385,1.4755,1.4717,0.0922,1.2177,1.6058,1.6031,1.5883,0.2262,0.0617,0.0608,0.0601,0.0597,0.0592,0.0601,0.0606,0.0599,0.0594,0.0618,0.0586,0.0593,0.0577 50582s,0.0649,0.0741,0.0629,0.0635,0.0642,0.0629,0.0628,0.0651,0.0629,0.0668,0.0635,0.0623,0.0607,0.2676,0.3427,0.277,0.2409,0.0936,1.2356,1.4367,1.3295,1.316,0.2282,0.0579,0.0615,0.405,0.456,0.4351,0.4036,0.0946,1.276,1.4482,1.3664,1.3304,0.2195,0.0649,0.059,0.6112,0.6514,0.5966,0.6245,0.0969,1.2817,1.4817,1.3978,1.3529,0.2204,0.0611,0.0581,0.836,0.8841,0.8491,0.8795,0.0927,1.2951,1.5309,1.4516,1.4134,0.2206,0.0629,0.0625,0.9984,1.252,1.1719,1.1592,0.5122,1.3065,1.5763,1.5155,1.49,0.2585,0.0596,0.0586,1.0301,1.539,1.4752,1.4721,0.0921,1.2324,1.6136,1.6055,1.5907,0.2262,0.0614,0.0609,0.06,0.0597,0.0591,0.0603,0.0606,0.0599,0.0595,0.0601,0.0585,0.0592,0.058 51222s,0.0647,0.0666,0.0627,0.0635,0.0642,0.063,0.0627,0.0655,0.0633,0.0667,0.0631,0.0623,0.0607,0.2682,0.3426,0.2769,0.2409,0.0935,1.2385,1.4395,1.3298,1.3174,0.2283,0.0587,0.0611,0.4061,0.4588,0.4361,0.4045,0.0947,1.279,1.4486,1.3674,1.3311,0.2196,0.0648,0.0592,0.6115,0.6518,0.5969,0.625,0.097,1.2875,1.4822,1.3977,1.353,0.2207,0.063,0.0588,0.8369,0.8843,0.8491,0.8804,0.0928,1.3035,1.5328,1.452,1.4149,0.2207,0.063,0.0625,1.0001,1.253,1.1728,1.1607,0.5289,1.3187,1.5791,1.5162,1.4918,0.2654,0.0587,0.058,1.0368,1.54,1.4753,1.4718,0.0923,1.247,1.6211,1.6085,1.5943,0.2264,0.0616,0.0608,0.0598,0.0597,0.0593,0.06,0.0604,0.0598,0.0594,0.0609,0.0584,0.0591,0.0577 51862s,0.065,0.0741,0.0627,0.0636,0.0642,0.0629,0.0629,0.0655,0.0629,0.067,0.0633,0.0627,0.0609,0.2685,0.3429,0.2772,0.2413,0.0934,1.2395,1.4388,1.3298,1.3178,0.2285,0.0591,0.0614,0.406,0.4584,0.436,0.4048,0.0947,1.2809,1.4491,1.3668,1.3312,0.2197,0.0649,0.0593,0.6122,0.6514,0.5969,0.6259,0.0971,1.292,1.4835,1.398,1.3534,0.2207,0.0602,0.0589,0.837,0.8839,0.8496,0.8806,0.0928,1.3108,1.5334,1.4518,1.4157,0.2207,0.063,0.0625,1.0015,1.2528,1.1716,1.1603,0.5478,1.3292,1.5792,1.5153,1.493,0.2731,0.0594,0.0584,1.0447,1.5397,1.4738,1.4723,0.0922,1.2611,1.6278,1.6091,1.5952,0.2264,0.0616,0.0607,0.06,0.0597,0.0593,0.0601,0.0606,0.0597,0.0594,0.0593,0.0583,0.0591,0.0572 52502s,0.0647,0.0667,0.0627,0.0635,0.0639,0.0628,0.0628,0.0653,0.063,0.0669,0.0633,0.0625,0.0607,0.2691,0.3432,0.2775,0.2414,0.0936,1.2418,1.4391,1.3292,1.3182,0.2285,0.0579,0.0612,0.4067,0.4581,0.4367,0.4049,0.0946,1.2841,1.4496,1.3671,1.3324,0.2197,0.065,0.0593,0.6124,0.6513,0.597,0.6265,0.0969,1.2951,1.4838,1.3971,1.3541,0.2206,0.0606,0.0583,0.8381,0.884,0.8496,0.881,0.0928,1.3176,1.5331,1.4521,1.4162,0.2208,0.0628,0.0624,1.003,1.2528,1.1716,1.1606,0.566,1.3389,1.5805,1.5155,1.4927,0.2815,0.0598,0.0584,1.0517,1.5394,1.4735,1.4726,0.0921,1.2743,1.6341,1.6105,1.597,0.2265,0.0615,0.0608,0.06,0.0596,0.0592,0.06,0.0605,0.0595,0.0594,0.0593,0.0585,0.0591,0.0575 53142s,0.0648,0.0669,0.063,0.0637,0.0641,0.0628,0.0631,0.0652,0.0631,0.0675,0.0636,0.0625,0.0611,0.2702,0.3441,0.2785,0.2423,0.0937,1.2432,1.4396,1.329,1.319,0.2288,0.0596,0.0611,0.407,0.4585,0.4374,0.4056,0.0948,1.2868,1.4513,1.3674,1.3337,0.2199,0.065,0.0595,0.6133,0.6513,0.5969,0.6274,0.0971,1.2993,1.4845,1.3983,1.3556,0.221,0.0603,0.0586,0.8388,0.8839,0.8498,0.8808,0.0929,1.3238,1.5351,1.4525,1.4171,0.221,0.063,0.0626,1.0036,1.2524,1.172,1.1614,0.5869,1.3478,1.582,1.5158,1.4934,0.2937,0.0596,0.058,1.0592,1.54,1.4752,1.4747,0.0922,1.2895,1.6398,1.6135,1.6007,0.2267,0.0617,0.0608,0.06,0.0596,0.059,0.0601,0.0606,0.0598,0.0595,0.0598,0.0585,0.059,0.0572 53783s,0.0649,0.0733,0.0628,0.0636,0.0643,0.0629,0.0629,0.0652,0.0631,0.0669,0.0636,0.0625,0.0608,0.2705,0.3441,0.2785,0.2423,0.0936,1.2444,1.4401,1.329,1.3204,0.2287,0.0589,0.0612,0.4069,0.4582,0.4376,0.4057,0.0947,1.288,1.4515,1.3664,1.3334,0.2199,0.0649,0.0593,0.6138,0.652,0.5974,0.6266,0.0971,1.3024,1.4848,1.3977,1.3552,0.2209,0.0601,0.0587,0.8394,0.8841,0.8495,0.8813,0.0929,1.3293,1.5347,1.4528,1.417,0.2209,0.0631,0.0622,1.0046,1.253,1.1718,1.1618,0.6066,1.3551,1.5833,1.5156,1.4946,0.304,0.0599,0.0588,1.0657,1.5403,1.4745,1.4738,0.0923,1.3017,1.6448,1.6142,1.6005,0.2265,0.0613,0.0607,0.0599,0.0596,0.0591,0.06,0.0605,0.0595,0.0593,0.0595,0.0585,0.0591,0.0579 54423s,0.0649,0.0667,0.0629,0.0635,0.0642,0.0631,0.0629,0.0654,0.0632,0.0668,0.0633,0.0624,0.0608,0.2713,0.3445,0.2791,0.2431,0.0936,1.2454,1.4392,1.3285,1.3197,0.2289,0.0577,0.061,0.4068,0.4588,0.4373,0.4055,0.0949,1.2895,1.4506,1.3655,1.334,0.2199,0.0648,0.0595,0.6147,0.6515,0.5973,0.6277,0.097,1.3038,1.4837,1.3968,1.3557,0.221,0.0607,0.0581,0.8394,0.8841,0.8495,0.8813,0.0929,1.3331,1.5344,1.4508,1.4177,0.221,0.063,0.0627,1.0048,1.2519,1.1711,1.1612,0.6264,1.3629,1.583,1.5138,1.4939,0.3164,0.0615,0.058,1.073,1.54,1.4736,1.473,0.0921,1.3141,1.6473,1.614,1.6017,0.2267,0.0614,0.0608,0.0599,0.0595,0.0592,0.06,0.0606,0.0594,0.0593,0.0596,0.0585,0.0588,0.0572 55063s,0.0651,0.0745,0.0631,0.0638,0.0645,0.063,0.063,0.0654,0.0631,0.0668,0.0634,0.0626,0.0609,0.2713,0.3441,0.2785,0.2426,0.0935,1.2467,1.4416,1.3293,1.3215,0.2291,0.06,0.0609,0.4073,0.459,0.4373,0.4063,0.0949,1.2912,1.4514,1.3669,1.3349,0.22,0.0647,0.0592,0.6151,0.6521,0.5976,0.6273,0.0971,1.3065,1.4851,1.3974,1.3565,0.2212,0.0615,0.0578,0.84,0.8842,0.8497,0.8815,0.093,1.3387,1.5351,1.4517,1.4182,0.2213,0.0631,0.0626,1.0067,1.2536,1.1721,1.1626,0.6473,1.3702,1.5848,1.516,1.4956,0.3282,0.0592,0.0583,1.0804,1.5413,1.4737,1.4749,0.0924,1.3272,1.6542,1.617,1.604,0.2268,0.0614,0.061,0.06,0.0596,0.0591,0.0601,0.0605,0.0596,0.0593,0.0596,0.0584,0.0592,0.058 55706s,0.0648,0.0666,0.0628,0.0635,0.0639,0.0627,0.0629,0.0654,0.0631,0.0669,0.0631,0.0624,0.0608,0.2715,0.3443,0.2789,0.243,0.0936,1.247,1.4408,1.3286,1.3221,0.2291,0.0606,0.0613,0.4082,0.4594,0.438,0.4065,0.0948,1.2914,1.4507,1.3657,1.334,0.2201,0.0648,0.0596,0.6155,0.6532,0.5985,0.6277,0.0971,1.3083,1.485,1.3963,1.3552,0.2212,0.0619,0.0579,0.8407,0.884,0.8498,0.8819,0.093,1.3418,1.5353,1.4513,1.4187,0.2213,0.0627,0.0627,1.006,1.253,1.1719,1.1631,0.6682,1.3762,1.5839,1.5148,1.4957,0.3409,0.0593,0.0584,1.0864,1.5399,1.4727,1.4743,0.0924,1.3393,1.6541,1.6154,1.6033,0.2269,0.0615,0.0609,0.06,0.0597,0.0591,0.0601,0.0607,0.0595,0.0593,0.0596,0.0585,0.0591,0.058 56346s,0.0648,0.0668,0.0629,0.0636,0.0641,0.0628,0.0627,0.065,0.0629,0.0667,0.0631,0.0622,0.0609,0.272,0.3448,0.2791,0.2432,0.0937,1.2473,1.4411,1.3284,1.3224,0.2293,0.0625,0.06,0.4082,0.4586,0.4378,0.4067,0.0949,1.2934,1.4525,1.366,1.3358,0.2201,0.0647,0.0594,0.616,0.653,0.5986,0.6281,0.0972,1.3104,1.4855,1.3959,1.3574,0.2213,0.0613,0.0588,0.8418,0.8843,0.8495,0.8829,0.093,1.3456,1.5366,1.452,1.4192,0.2212,0.0628,0.0625,1.0062,1.2533,1.1715,1.1635,0.69,1.3825,1.5858,1.5149,1.4961,0.3554,0.0593,0.0588,1.0926,1.5404,1.4734,1.475,0.0923,1.3508,1.6585,1.6179,1.6051,0.2268,0.0614,0.0608,0.06,0.0596,0.059,0.0599,0.0605,0.0593,0.0592,0.0593,0.0585,0.059,0.0577 56987s,0.0649,0.0737,0.0628,0.0636,0.0643,0.0629,0.0627,0.065,0.0627,0.0667,0.063,0.0623,0.0609,0.2726,0.345,0.2789,0.2434,0.0937,1.249,1.4412,1.3282,1.3235,0.2295,0.0591,0.0611,0.408,0.46,0.4383,0.4071,0.0949,1.2942,1.4519,1.3657,1.336,0.2202,0.0648,0.0596,0.6159,0.653,0.5982,0.6285,0.0972,1.3125,1.4849,1.3961,1.3574,0.2214,0.0618,0.0583,0.8424,0.8841,0.8497,0.8836,0.093,1.3487,1.5369,1.4517,1.4196,0.2213,0.0628,0.0625,1.0069,1.254,1.1719,1.1638,0.7109,1.3879,1.5852,1.5152,1.4965,0.3683,0.0607,0.0583,1.0978,1.5398,1.4729,1.475,0.0924,1.3628,1.6596,1.6176,1.6063,0.227,0.0614,0.0607,0.0599,0.0596,0.0591,0.06,0.0604,0.0595,0.0593,0.0593,0.0585,0.0589,0.058 57627s,0.0649,0.0712,0.0629,0.0636,0.0639,0.0629,0.0626,0.0651,0.0631,0.0669,0.0632,0.0625,0.0609,0.2734,0.3453,0.28,0.2443,0.0938,1.2484,1.4413,1.3281,1.3235,0.2296,0.0624,0.0611,0.4087,0.4606,0.4392,0.4079,0.095,1.2948,1.4518,1.3654,1.3363,0.2204,0.0648,0.0595,0.6168,0.6527,0.5988,0.6292,0.0974,1.3135,1.4857,1.3966,1.358,0.2215,0.0609,0.0582,0.8434,0.8845,0.8498,0.884,0.0931,1.3508,1.5362,1.4512,1.4204,0.2215,0.0628,0.0624,1.0067,1.254,1.1714,1.1639,0.734,1.3921,1.5857,1.5156,1.4962,0.3839,0.059,0.0596,1.1036,1.5395,1.4729,1.4754,0.0924,1.3733,1.663,1.6189,1.6068,0.2271,0.0613,0.0608,0.0599,0.0596,0.0592,0.06,0.0605,0.0594,0.0593,0.0594,0.0585,0.059,0.0579 58267s,0.0647,0.0686,0.0629,0.0635,0.0642,0.0629,0.0627,0.0651,0.0629,0.0673,0.0632,0.0624,0.061,0.2739,0.3461,0.2808,0.2448,0.0939,1.2482,1.4409,1.3271,1.3239,0.2299,0.0581,0.0612,0.4084,0.4604,0.4389,0.408,0.095,1.2955,1.453,1.3652,1.337,0.2204,0.0649,0.0596,0.6171,0.6523,0.5993,0.6295,0.0973,1.3149,1.4863,1.3966,1.3597,0.2215,0.0628,0.0594,0.8434,0.8844,0.8501,0.8845,0.0931,1.353,1.5371,1.4512,1.4207,0.2215,0.0626,0.0624,1.0071,1.2538,1.1713,1.1642,0.758,1.3963,1.5857,1.5157,1.4968,0.3997,0.0598,0.0579,1.1099,1.5408,1.4731,1.4758,0.0925,1.3845,1.6644,1.6187,1.6062,0.2271,0.0611,0.0608,0.0599,0.0594,0.059,0.06,0.0604,0.0595,0.0593,0.0595,0.0585,0.059,0.0573 58907s,0.0647,0.0668,0.0627,0.0635,0.0641,0.063,0.0629,0.065,0.0631,0.0667,0.063,0.0624,0.061,0.2739,0.3458,0.2804,0.2445,0.0938,1.2488,1.4414,1.3275,1.3246,0.23,0.0577,0.061,0.4079,0.4601,0.4389,0.4078,0.0949,1.2964,1.4523,1.3655,1.3376,0.2204,0.0647,0.0595,0.6171,0.6532,0.5998,0.6287,0.0973,1.3151,1.4858,1.3957,1.359,0.2215,0.0621,0.0586,0.8434,0.8845,0.8497,0.8842,0.0931,1.3541,1.5375,1.451,1.4199,0.2215,0.0625,0.0625,1.0072,1.2537,1.1712,1.1647,0.7801,1.3999,1.5862,1.5147,1.4969,0.417,0.0606,0.0586,1.1149,1.5403,1.4725,1.4767,0.0924,1.3952,1.6645,1.6187,1.6069,0.2271,0.0612,0.0605,0.0598,0.0596,0.0591,0.06,0.0602,0.0592,0.0592,0.0593,0.0584,0.0589,0.0571 59547s,0.0652,0.0742,0.063,0.0637,0.0643,0.063,0.0626,0.0653,0.0632,0.0668,0.0633,0.0628,0.0609,0.2746,0.3461,0.2808,0.245,0.0938,1.249,1.441,1.327,1.3257,0.2303,0.0578,0.0616,0.4083,0.4603,0.4392,0.4085,0.095,1.2963,1.4528,1.3656,1.3376,0.2204,0.0649,0.0597,0.6178,0.6539,0.6002,0.6293,0.0972,1.3159,1.4863,1.3965,1.3598,0.2219,0.0618,0.058,0.8448,0.8848,0.8496,0.885,0.0931,1.3566,1.5369,1.4505,1.4216,0.2217,0.0627,0.0623,1.0085,1.2543,1.1719,1.1658,0.8034,1.4038,1.5868,1.5146,1.4981,0.4314,0.0601,0.0578,1.1216,1.5406,1.4723,1.4764,0.0925,1.4052,1.6684,1.6181,1.6091,0.2273,0.0613,0.0607,0.0599,0.0594,0.0589,0.0599,0.0604,0.0594,0.0593,0.0594,0.0585,0.059,0.0578 60188s,0.0648,0.0745,0.0628,0.0634,0.0642,0.0628,0.0628,0.0652,0.0629,0.0665,0.063,0.0625,0.0608,0.2748,0.3464,0.2807,0.2452,0.0937,1.2489,1.4413,1.3271,1.326,0.2305,0.0625,0.0607,0.4088,0.4609,0.439,0.4087,0.0949,1.2971,1.4535,1.3651,1.3378,0.2205,0.0647,0.0593,0.6179,0.6542,0.6001,0.6302,0.0973,1.3169,1.4871,1.3952,1.3607,0.2217,0.0621,0.0581,0.8464,0.8848,0.8495,0.8853,0.0933,1.3573,1.5379,1.4505,1.4214,0.2217,0.0624,0.0625,1.0088,1.2542,1.1711,1.1657,0.8278,1.4063,1.5884,1.514,1.4979,0.4485,0.0601,0.0581,1.1277,1.5403,1.4727,1.4773,0.0924,1.4153,1.67,1.6207,1.6094,0.2273,0.0612,0.0609,0.06,0.0595,0.0589,0.06,0.0603,0.0594,0.0592,0.0593,0.0584,0.0591,0.0573 60828s,0.0647,0.067,0.0628,0.0635,0.0642,0.0627,0.0626,0.0651,0.063,0.0668,0.0632,0.063,0.0608,0.2749,0.3465,0.2812,0.2455,0.0938,1.2494,1.4414,1.3267,1.3265,0.2306,0.0597,0.0607,0.4088,0.4618,0.4402,0.4095,0.095,1.2969,1.453,1.3651,1.338,0.2207,0.0647,0.0595,0.6182,0.6546,0.6002,0.6305,0.0973,1.3169,1.4866,1.3957,1.3604,0.222,0.0594,0.0584,0.8459,0.8852,0.8497,0.8855,0.0934,1.3581,1.5372,1.45,1.4218,0.2218,0.0625,0.0624,1.0087,1.2545,1.171,1.1663,0.8505,1.4091,1.5882,1.5149,1.4983,0.4658,0.0598,0.0594,1.1336,1.54,1.4722,1.4762,0.0924,1.4243,1.6697,1.6193,1.6086,0.2274,0.0612,0.061,0.06,0.0596,0.059,0.06,0.0604,0.0595,0.0593,0.0594,0.0585,0.059,0.0571 61468s,0.0648,0.0743,0.0629,0.0635,0.0643,0.063,0.0626,0.0653,0.063,0.0668,0.0632,0.0624,0.061,0.2752,0.3464,0.2811,0.2456,0.0939,1.2497,1.4425,1.3273,1.3271,0.231,0.0581,0.0613,0.4093,0.463,0.4409,0.4102,0.0951,1.2971,1.453,1.3649,1.3395,0.2209,0.0649,0.0596,0.6183,0.6545,0.6004,0.6311,0.0975,1.3181,1.487,1.3953,1.3615,0.2221,0.0631,0.0584,0.8471,0.8855,0.8497,0.8866,0.0934,1.3596,1.5391,1.4496,1.4227,0.2221,0.0625,0.0627,1.0097,1.2546,1.1722,1.1664,0.8748,1.411,1.5879,1.5149,1.4987,0.4835,0.0599,0.058,1.1404,1.5405,1.4718,1.4775,0.0926,1.4327,1.6713,1.6187,1.6096,0.2276,0.0617,0.061,0.06,0.0595,0.0589,0.0599,0.0602,0.0594,0.0593,0.0595,0.0586,0.0588,0.0575 62108s,0.065,0.0667,0.0631,0.0637,0.0644,0.063,0.0626,0.0653,0.0631,0.0669,0.0633,0.0624,0.061,0.2754,0.3465,0.2813,0.2458,0.0939,1.2495,1.4422,1.3272,1.3274,0.2312,0.061,0.0615,0.4093,0.4623,0.441,0.4102,0.0952,1.2971,1.4525,1.3645,1.3395,0.221,0.0652,0.0597,0.6193,0.6548,0.601,0.6319,0.0975,1.318,1.4875,1.3952,1.3616,0.2222,0.0597,0.059,0.8477,0.8854,0.8503,0.8866,0.0936,1.361,1.5385,1.4505,1.4219,0.2222,0.0624,0.0625,1.0097,1.2553,1.1713,1.1669,0.9028,1.4132,1.5875,1.514,1.4994,0.5025,0.0598,0.0597,1.149,1.5403,1.4726,1.4778,0.0926,1.4416,1.6719,1.6205,1.6091,0.2278,0.0616,0.0609,0.0601,0.0594,0.0592,0.0601,0.0603,0.0593,0.0594,0.0595,0.0587,0.059,0.057 62749s,0.0651,0.0667,0.063,0.0638,0.0642,0.0627,0.0627,0.0651,0.063,0.0669,0.0634,0.0624,0.061,0.276,0.3473,0.282,0.2465,0.094,1.2489,1.4413,1.3268,1.328,0.2313,0.0605,0.0612,0.41,0.4632,0.4416,0.4108,0.0952,1.2966,1.4531,1.3636,1.3392,0.2211,0.0647,0.0597,0.6194,0.6543,0.6008,0.6324,0.0974,1.319,1.4871,1.395,1.3618,0.222,0.0633,0.058,0.8482,0.8855,0.85,0.8866,0.0932,1.3614,1.5386,1.4502,1.4232,0.2221,0.0626,0.0623,1.0101,1.2546,1.1715,1.1665,0.9276,1.4142,1.5875,1.5139,1.4988,0.5225,0.0593,0.059,1.1547,1.5406,1.4718,1.477,0.0925,1.4491,1.6713,1.6192,1.6092,0.2278,0.0617,0.0607,0.0599,0.0594,0.059,0.0598,0.0601,0.0593,0.0593,0.0595,0.0586,0.0588,0.0573 63389s,0.065,0.0738,0.0629,0.0637,0.0642,0.0628,0.0625,0.065,0.0629,0.0673,0.0632,0.0624,0.0609,0.2761,0.3474,0.2823,0.2465,0.0939,1.2498,1.4429,1.3279,1.3289,0.2316,0.0623,0.0614,0.4104,0.4636,0.4421,0.4113,0.0951,1.2974,1.4534,1.365,1.3402,0.2211,0.0647,0.0597,0.6201,0.6549,0.6013,0.6329,0.0976,1.3199,1.4879,1.3948,1.3623,0.2223,0.0606,0.0587,0.8492,0.8854,0.8497,0.8872,0.0934,1.3619,1.5396,1.4499,1.4232,0.2223,0.0624,0.0625,1.0113,1.2549,1.1716,1.1671,0.9557,1.4167,1.5892,1.5138,1.5003,0.5422,0.0585,0.0599,1.1625,1.5416,1.4724,1.4788,0.0926,1.4569,1.6739,1.6206,1.612,0.2281,0.0619,0.0608,0.0599,0.0594,0.059,0.0599,0.0603,0.0593,0.0592,0.0594,0.0587,0.0589,0.0571 64029s,0.0648,0.07,0.0627,0.0637,0.064,0.0629,0.0624,0.065,0.0631,0.0666,0.0631,0.0626,0.0609,0.2762,0.3472,0.2821,0.2465,0.0941,1.25,1.4436,1.3266,1.3292,0.2319,0.0639,0.0623,0.4099,0.463,0.4419,0.4111,0.0952,1.2976,1.454,1.3644,1.341,0.2212,0.0647,0.0597,0.6199,0.655,0.6012,0.6335,0.0976,1.3202,1.488,1.3949,1.3625,0.2224,0.0616,0.059,0.8493,0.8852,0.8503,0.8877,0.0935,1.3635,1.5394,1.4502,1.4246,0.2222,0.0623,0.0624,1.0115,1.2551,1.1713,1.1676,0.9818,1.4174,1.5892,1.5135,1.5004,0.5629,0.0591,0.0585,1.1688,1.5411,1.4725,1.4787,0.0926,1.464,1.6745,1.6199,1.6122,0.2282,0.0615,0.0607,0.06,0.0595,0.0591,0.0599,0.0601,0.0591,0.0593,0.0597,0.0585,0.0588,0.0577 64669s,0.0651,0.0668,0.063,0.0639,0.0643,0.0628,0.0626,0.0653,0.0631,0.0668,0.0632,0.0626,0.061,0.2768,0.3477,0.2827,0.247,0.094,1.249,1.4417,1.3267,1.3288,0.232,0.0586,0.0611,0.4103,0.4628,0.4417,0.4113,0.0952,1.2967,1.453,1.364,1.3406,0.2213,0.0648,0.0595,0.6207,0.6545,0.6014,0.6335,0.0976,1.3192,1.4874,1.3939,1.3626,0.2224,0.0638,0.0588,0.8497,0.8854,0.8503,0.8875,0.0933,1.3628,1.5375,1.45,1.4232,0.2224,0.0624,0.0623,1.0121,1.2549,1.1717,1.1684,1.0071,1.4186,1.5881,1.5128,1.4994,0.5829,0.0598,0.0578,1.1752,1.5408,1.4724,1.4793,0.0926,1.47,1.674,1.6184,1.6105,0.2284,0.0614,0.0606,0.06,0.0595,0.0589,0.0599,0.06,0.0592,0.0593,0.0594,0.0586,0.0588,0.0574 65309s,0.0653,0.0749,0.063,0.0637,0.0641,0.0629,0.0624,0.0652,0.0631,0.0668,0.0632,0.0625,0.0609,0.2772,0.3479,0.2829,0.2472,0.0941,1.2493,1.4422,1.3267,1.3301,0.2322,0.0617,0.0593,0.4103,0.4625,0.4419,0.4116,0.0951,1.2968,1.453,1.3638,1.3408,0.2212,0.0646,0.0596,0.6204,0.6555,0.602,0.6334,0.0976,1.3184,1.4868,1.3936,1.3619,0.2225,0.062,0.0582,0.8495,0.8847,0.8492,0.887,0.0935,1.3625,1.5381,1.4481,1.4226,0.2225,0.0624,0.0622,1.0124,1.2548,1.1714,1.1677,1.0318,1.4187,1.5878,1.5123,1.4993,0.6025,0.0607,0.0585,1.1817,1.5394,1.4715,1.4788,0.0926,1.4764,1.6751,1.6182,1.6102,0.2284,0.0612,0.0609,0.0601,0.0597,0.059,0.0599,0.0602,0.0592,0.0592,0.0595,0.0586,0.059,0.0576 65950s,0.0648,0.0669,0.0628,0.0635,0.064,0.0626,0.0624,0.0652,0.0627,0.0666,0.0632,0.0626,0.0608,0.2776,0.3482,0.2833,0.2476,0.094,1.2492,1.4426,1.3269,1.3302,0.2323,0.0587,0.0615,0.4105,0.4637,0.4425,0.4118,0.095,1.2966,1.4532,1.363,1.3406,0.2213,0.0646,0.0593,0.6208,0.6552,0.6017,0.6336,0.0976,1.3191,1.4871,1.3936,1.3625,0.2226,0.0604,0.0582,0.8509,0.8849,0.8484,0.888,0.0934,1.3633,1.5381,1.4489,1.4237,0.2224,0.0623,0.0622,1.0128,1.2547,1.1711,1.1675,1.0584,1.4194,1.588,1.5118,1.4996,0.6239,0.0595,0.0584,1.188,1.5408,1.4706,1.4796,0.0926,1.4821,1.6761,1.6186,1.6111,0.2287,0.0611,0.0607,0.06,0.0595,0.059,0.0599,0.0602,0.0592,0.0593,0.0595,0.0585,0.0589,0.0574 66590s,0.0648,0.0669,0.0628,0.0638,0.0641,0.0628,0.0626,0.0651,0.0629,0.0668,0.063,0.0624,0.061,0.2784,0.3486,0.2837,0.2481,0.094,1.2491,1.4415,1.3261,1.3308,0.2324,0.0617,0.0607,0.4106,0.4633,0.4427,0.412,0.0951,1.2973,1.4535,1.3636,1.3413,0.2214,0.0645,0.0595,0.6205,0.6556,0.6014,0.6339,0.0975,1.3191,1.4877,1.3934,1.3624,0.2227,0.0596,0.0584,0.8515,0.8851,0.8491,0.8878,0.0934,1.3639,1.5387,1.449,1.4245,0.2225,0.0622,0.0622,1.0135,1.2552,1.1714,1.1685,1.0835,1.4208,1.5883,1.5125,1.5003,0.6449,0.0604,0.0595,1.1947,1.5412,1.472,1.4796,0.0927,1.4883,1.6771,1.6195,1.6117,0.2289,0.0612,0.0608,0.06,0.0596,0.059,0.0599,0.0603,0.0594,0.0593,0.0595,0.0586,0.059,0.0582 67230s,0.0648,0.0672,0.0628,0.0636,0.0642,0.0629,0.0625,0.0653,0.063,0.0668,0.0632,0.0625,0.0608,0.2784,0.3484,0.2836,0.248,0.0941,1.2489,1.4427,1.3263,1.3313,0.2326,0.0625,0.0611,0.4116,0.4655,0.4429,0.4128,0.0951,1.2964,1.4523,1.3625,1.341,0.2216,0.0646,0.0595,0.6213,0.6556,0.6009,0.6342,0.0976,1.3196,1.4874,1.3934,1.3629,0.2228,0.0631,0.0583,0.8514,0.8854,0.8494,0.888,0.0935,1.3637,1.5384,1.4487,1.4237,0.2227,0.0623,0.0622,1.014,1.2549,1.172,1.1681,1.107,1.4211,1.5883,1.5118,1.5002,0.6668,0.059,0.0595,1.1999,1.5403,1.4699,1.4785,0.0928,1.4926,1.6763,1.6186,1.6103,0.2293,0.0613,0.0607,0.06,0.0595,0.0589,0.0598,0.0604,0.0592,0.0594,0.0596,0.0586,0.0588,0.0579 67870s,0.0653,0.0668,0.0628,0.0637,0.064,0.0626,0.0624,0.065,0.0629,0.0668,0.0629,0.0625,0.0606,0.2788,0.349,0.2843,0.2485,0.0941,1.2487,1.4413,1.3261,1.3308,0.2328,0.0605,0.0608,0.4118,0.4646,0.443,0.4127,0.0951,1.2962,1.4527,1.363,1.3415,0.2216,0.0644,0.0593,0.6215,0.6554,0.6012,0.6343,0.0976,1.3189,1.4874,1.3933,1.3633,0.2227,0.062,0.0601,0.8522,0.8855,0.8498,0.8886,0.0934,1.3633,1.5384,1.4479,1.4244,0.2227,0.0625,0.0618,1.0142,1.2549,1.1714,1.1687,1.1294,1.4213,1.5883,1.5115,1.501,0.6888,0.0609,0.0577,1.2061,1.5404,1.4707,1.4791,0.0926,1.4986,1.6751,1.618,1.6111,0.2295,0.061,0.0604,0.0597,0.0594,0.0588,0.0596,0.0601,0.0591,0.0592,0.0606,0.0586,0.0586,0.0575 68510s,0.0652,0.0744,0.0629,0.0635,0.064,0.0626,0.0625,0.0652,0.0628,0.0668,0.0631,0.0624,0.061,0.2791,0.3491,0.2843,0.2486,0.0942,1.2488,1.4422,1.3266,1.3318,0.2329,0.0609,0.0631,0.412,0.4647,0.4438,0.4131,0.0953,1.2968,1.4539,1.3634,1.3428,0.2217,0.0643,0.0594,0.6218,0.6551,0.6015,0.6355,0.0975,1.3197,1.4879,1.3934,1.3652,0.2229,0.0612,0.0583,0.853,0.8853,0.8496,0.8891,0.0935,1.3642,1.5393,1.4491,1.426,0.2229,0.0622,0.0621,1.0148,1.2554,1.1719,1.169,1.1524,1.4223,1.5883,1.512,1.5015,0.712,0.0591,0.0592,1.2121,1.5415,1.4723,1.481,0.0928,1.5038,1.6779,1.6189,1.6129,0.23,0.061,0.0605,0.0599,0.0597,0.0589,0.0598,0.0599,0.0592,0.0594,0.0601,0.0587,0.0586,0.0574 69154s,0.065,0.0669,0.063,0.0638,0.0641,0.0628,0.0625,0.0651,0.063,0.0669,0.0632,0.0625,0.061,0.2796,0.3495,0.2849,0.2493,0.0942,1.2492,1.4419,1.327,1.3317,0.2331,0.058,0.0612,0.4118,0.4653,0.4438,0.4135,0.0954,1.2968,1.4533,1.3632,1.3428,0.2218,0.0645,0.0594,0.6223,0.6562,0.6019,0.6358,0.0977,1.3189,1.4874,1.3931,1.3648,0.2229,0.0616,0.0582,0.8532,0.8856,0.8495,0.889,0.0936,1.3641,1.5387,1.4476,1.4256,0.2229,0.0624,0.0621,1.0152,1.2557,1.1719,1.1695,1.1714,1.4221,1.5884,1.5113,1.5014,0.7346,0.0594,0.0601,1.2174,1.5409,1.4713,1.4801,0.0928,1.5085,1.677,1.6192,1.6121,0.2301,0.061,0.0606,0.0599,0.0595,0.0589,0.0598,0.06,0.0592,0.0593,0.0601,0.0586,0.0589,0.0574 69794s,0.0649,0.0747,0.063,0.0637,0.064,0.0627,0.0626,0.0649,0.0631,0.0667,0.0632,0.0625,0.0611,0.2796,0.3496,0.2853,0.2494,0.0944,1.2491,1.4422,1.3263,1.3324,0.233,0.0603,0.0623,0.4122,0.4649,0.444,0.414,0.0953,1.2967,1.4538,1.3639,1.3432,0.2219,0.0644,0.0597,0.6219,0.6563,0.6022,0.6361,0.0977,1.3185,1.4884,1.3933,1.3639,0.2231,0.0619,0.0579,0.8536,0.8855,0.8498,0.8899,0.0937,1.3643,1.5392,1.4486,1.4255,0.223,0.0623,0.062,1.016,1.2559,1.1716,1.1698,1.1873,1.4223,1.589,1.5112,1.5021,0.7575,0.0588,0.0584,1.2238,1.5402,1.4718,1.4809,0.0929,1.512,1.677,1.6185,1.6125,0.2302,0.061,0.0609,0.06,0.0594,0.0591,0.0598,0.0601,0.0594,0.0594,0.0595,0.0585,0.059,0.0586 70434s,0.0651,0.0745,0.0629,0.0636,0.0642,0.0627,0.0625,0.0651,0.063,0.0667,0.0631,0.0622,0.0609,0.2797,0.3493,0.285,0.2492,0.0944,1.2492,1.443,1.3265,1.3323,0.2333,0.0592,0.0612,0.412,0.4642,0.4438,0.4141,0.0952,1.2966,1.4548,1.3639,1.3438,0.222,0.0645,0.0594,0.6228,0.6562,0.6022,0.6357,0.0976,1.3186,1.4884,1.3925,1.3646,0.223,0.0615,0.0583,0.8544,0.8857,0.8501,0.89,0.0936,1.3647,1.5389,1.4486,1.4263,0.2231,0.0622,0.0623,1.0165,1.2559,1.1717,1.1699,1.2009,1.4224,1.5901,1.5114,1.5018,0.7798,0.06,0.0582,1.2288,1.5405,1.4717,1.4808,0.0928,1.5149,1.6783,1.6186,1.6129,0.2303,0.0612,0.0606,0.0598,0.0595,0.059,0.06,0.0601,0.0591,0.0593,0.0601,0.0587,0.0588,0.058 71074s,0.0649,0.0668,0.0629,0.0636,0.064,0.0627,0.0624,0.0652,0.0629,0.0667,0.0632,0.0623,0.0609,0.28,0.3496,0.2851,0.2497,0.0943,1.2481,1.4421,1.3261,1.3319,0.2333,0.0614,0.0604,0.4121,0.4662,0.4441,0.4149,0.0953,1.2956,1.4521,1.3631,1.3432,0.222,0.0643,0.0596,0.6232,0.657,0.6025,0.6362,0.0977,1.3192,1.4873,1.3926,1.3648,0.2232,0.0617,0.0583,0.8542,0.8855,0.8503,0.8897,0.0935,1.364,1.5383,1.4475,1.4254,0.2231,0.0622,0.0622,1.0166,1.2556,1.1715,1.1699,1.2121,1.422,1.5883,1.51,1.5018,0.8061,0.0603,0.0585,1.2326,1.5414,1.47,1.4804,0.0929,1.5174,1.6764,1.6171,1.611,0.2305,0.0612,0.0607,0.0597,0.0593,0.0589,0.0597,0.0599,0.0591,0.0593,0.0602,0.0587,0.0588,0.0572 71714s,0.0649,0.0746,0.0629,0.0637,0.064,0.0625,0.0627,0.0653,0.0629,0.0669,0.0632,0.0626,0.0609,0.2803,0.3499,0.2857,0.2501,0.0943,1.248,1.4414,1.326,1.3325,0.2331,0.0585,0.0603,0.4123,0.4649,0.4438,0.4149,0.0952,1.2963,1.4544,1.3633,1.3438,0.2219,0.0642,0.0594,0.6232,0.6572,0.6019,0.6358,0.0977,1.3184,1.4877,1.3925,1.3649,0.2231,0.061,0.0587,0.8548,0.886,0.8501,0.8902,0.0934,1.3643,1.5389,1.448,1.4266,0.2231,0.0622,0.0623,1.0172,1.2554,1.1713,1.1698,1.2225,1.422,1.5882,1.5099,1.5017,0.829,0.0594,0.0584,1.2377,1.5408,1.4698,1.4812,0.0926,1.5198,1.6784,1.6163,1.6124,0.2305,0.0612,0.0606,0.0597,0.0592,0.0589,0.0596,0.0599,0.0591,0.0593,0.0607,0.0587,0.0587,0.0573 72355s,0.0648,0.0668,0.0629,0.0636,0.064,0.0629,0.0626,0.0652,0.0628,0.0667,0.063,0.0625,0.0609,0.2802,0.3497,0.2854,0.2501,0.0942,1.2487,1.4427,1.3269,1.3334,0.2334,0.0593,0.0593,0.4122,0.4653,0.4439,0.415,0.0954,1.2963,1.4542,1.3639,1.3444,0.2221,0.0645,0.0595,0.6233,0.6574,0.6025,0.6362,0.0978,1.3187,1.4875,1.3927,1.3649,0.2233,0.0633,0.0593,0.8558,0.886,0.8501,0.8904,0.0935,1.3642,1.5394,1.4478,1.4259,0.2232,0.0621,0.0625,1.018,1.2561,1.1719,1.1701,1.2305,1.4221,1.5887,1.5107,1.5027,0.8534,0.0606,0.0581,1.242,1.5407,1.4707,1.4812,0.0928,1.5225,1.6773,1.6178,1.6128,0.231,0.061,0.0606,0.0598,0.0592,0.0588,0.0598,0.0599,0.0592,0.0593,0.0603,0.0587,0.0587,0.0578 72995s,0.0649,0.0668,0.0627,0.0635,0.0641,0.0627,0.0625,0.0649,0.0628,0.0667,0.0629,0.0625,0.0608,0.281,0.3505,0.2863,0.2508,0.0945,1.2481,1.4418,1.3261,1.3324,0.2334,0.0621,0.0605,0.4129,0.4672,0.4447,0.4156,0.0953,1.296,1.4536,1.3625,1.3435,0.2222,0.0643,0.0593,0.6239,0.6571,0.6021,0.6365,0.0977,1.3178,1.4873,1.392,1.3655,0.2235,0.0631,0.0588,0.8566,0.8861,0.8497,0.8904,0.0935,1.3638,1.5392,1.4476,1.4266,0.2234,0.0621,0.0623,1.0183,1.2563,1.1721,1.171,1.2361,1.4223,1.5896,1.5099,1.5016,0.8759,0.0598,0.0581,1.2458,1.5407,1.4705,1.4815,0.0927,1.5242,1.6778,1.6175,1.6117,0.2311,0.0611,0.0607,0.0598,0.0593,0.0588,0.0597,0.06,0.0591,0.0594,0.0607,0.0586,0.0587,0.0577 73635s,0.0652,0.0667,0.0629,0.0636,0.0638,0.0625,0.0625,0.065,0.0629,0.0667,0.0628,0.0622,0.0608,0.2811,0.3505,0.2864,0.2512,0.0945,1.2485,1.4428,1.3273,1.3335,0.2333,0.0618,0.06,0.4129,0.4675,0.4449,0.4161,0.0953,1.2962,1.4534,1.3639,1.3446,0.2223,0.0644,0.0595,0.6243,0.6572,0.6023,0.6374,0.0976,1.3183,1.4886,1.393,1.3661,0.2236,0.0617,0.0585,0.8561,0.8863,0.8502,0.8906,0.0935,1.3643,1.5395,1.4477,1.4269,0.2235,0.0619,0.0624,1.0193,1.257,1.1719,1.1713,1.2418,1.4233,1.589,1.509,1.5028,0.9009,0.0599,0.0581,1.25,1.5409,1.4714,1.4832,0.093,1.5271,1.6786,1.6181,1.6141,0.2311,0.061,0.0607,0.0598,0.0593,0.059,0.0596,0.06,0.0591,0.0593,0.0607,0.0586,0.0587,0.058 74275s,0.065,0.0742,0.0627,0.0636,0.064,0.0627,0.0624,0.0653,0.063,0.0669,0.0629,0.0623,0.0609,0.2814,0.3508,0.2869,0.2513,0.0945,1.2484,1.442,1.3274,1.3338,0.2333,0.0627,0.0625,0.413,0.4672,0.4449,0.4162,0.0954,1.2964,1.4534,1.3633,1.345,0.2223,0.0643,0.0592,0.6244,0.6577,0.6025,0.6381,0.0977,1.3175,1.4887,1.3929,1.366,0.2236,0.0617,0.0594,0.8571,0.8864,0.8504,0.8908,0.0936,1.3647,1.5394,1.4484,1.4276,0.2234,0.0618,0.0623,1.0195,1.2566,1.1722,1.1713,1.2464,1.4221,1.5896,1.51,1.503,0.9237,0.0631,0.0587,1.2533,1.5413,1.4692,1.4809,0.0928,1.5283,1.6789,1.6178,1.6125,0.2314,0.061,0.0605,0.0598,0.0594,0.059,0.0595,0.0599,0.0591,0.0593,0.0609,0.0585,0.0586,0.0582 74915s,0.0648,0.0747,0.0629,0.0635,0.0641,0.0627,0.0624,0.0651,0.0626,0.0667,0.0631,0.0625,0.0609,0.2823,0.3516,0.2875,0.2522,0.0949,1.2486,1.4423,1.3275,1.3341,0.2335,0.06,0.0609,0.4132,0.4678,0.4455,0.4164,0.0955,1.296,1.4547,1.3637,1.3449,0.2225,0.0645,0.0594,0.6248,0.6569,0.6024,0.6388,0.0977,1.3182,1.4892,1.3937,1.3668,0.2237,0.0621,0.059,0.858,0.8866,0.8501,0.8914,0.0936,1.3639,1.5394,1.4486,1.4275,0.2235,0.0621,0.0626,1.0198,1.2568,1.1716,1.1715,1.2503,1.423,1.5906,1.5098,1.5029,0.9492,0.0602,0.0592,1.2568,1.5421,1.4705,1.4835,0.0929,1.5301,1.6791,1.6167,1.6131,0.2315,0.061,0.0609,0.06,0.0595,0.0589,0.0597,0.0602,0.0593,0.0592,0.0598,0.0586,0.0588,0.0586 75556s,0.0652,0.0672,0.0628,0.0636,0.064,0.0628,0.0626,0.0651,0.063,0.0667,0.0632,0.0624,0.061,0.282,0.3511,0.2875,0.252,0.0948,1.249,1.4427,1.3281,1.3341,0.2335,0.0594,0.0614,0.4128,0.4667,0.445,0.4163,0.0954,1.2963,1.4547,1.3642,1.3451,0.2225,0.0648,0.0593,0.6248,0.6579,0.6028,0.6384,0.0979,1.3176,1.4891,1.3923,1.3671,0.2238,0.0617,0.0591,0.8584,0.8867,0.8495,0.8916,0.0937,1.3629,1.5396,1.447,1.4274,0.2236,0.0623,0.0625,1.0202,1.2568,1.1715,1.1713,1.2537,1.4223,1.5879,1.5088,1.5031,0.9736,0.06,0.0594,1.2605,1.5414,1.4707,1.4825,0.0929,1.5307,1.679,1.6181,1.6129,0.2315,0.0611,0.0606,0.0598,0.0595,0.059,0.0597,0.0599,0.0592,0.0592,0.0596,0.0586,0.0587,0.0574 76196s,0.0651,0.0669,0.0629,0.0636,0.0642,0.0626,0.0623,0.065,0.0627,0.0666,0.0629,0.0623,0.0608,0.2821,0.3513,0.2873,0.2519,0.0947,1.249,1.4431,1.328,1.3353,0.2335,0.0594,0.0608,0.4135,0.4671,0.445,0.4166,0.0954,1.2961,1.4548,1.3645,1.3451,0.2226,0.0645,0.0594,0.6248,0.6584,0.6035,0.639,0.0978,1.318,1.4886,1.393,1.3673,0.224,0.063,0.0605,0.859,0.8866,0.8504,0.8916,0.0937,1.3632,1.5395,1.4479,1.4279,0.2237,0.0621,0.0623,1.0209,1.2575,1.1721,1.1722,1.2565,1.423,1.5906,1.5093,1.5035,0.9957,0.0607,0.0581,1.2629,1.5411,1.4702,1.4838,0.0929,1.5325,1.679,1.6175,1.613,0.2316,0.0609,0.0606,0.0598,0.0595,0.0589,0.0596,0.0599,0.0592,0.0593,0.06,0.0585,0.0586,0.0573 76836s,0.0652,0.0748,0.0629,0.0634,0.0641,0.0625,0.0626,0.0652,0.0628,0.0666,0.063,0.0623,0.0609,0.2828,0.3514,0.288,0.2527,0.0948,1.2486,1.4421,1.3274,1.3347,0.2335,0.0599,0.0604,0.4133,0.4667,0.4453,0.4167,0.0954,1.2958,1.4545,1.3645,1.3462,0.2225,0.0644,0.0594,0.6255,0.6584,0.603,0.639,0.0979,1.3179,1.4883,1.3927,1.3666,0.2239,0.0626,0.0581,0.8589,0.8867,0.85,0.8907,0.0939,1.362,1.5398,1.4478,1.427,0.2239,0.0618,0.0625,1.0214,1.2576,1.1721,1.1718,1.258,1.4221,1.5887,1.5087,1.5033,1.021,0.0615,0.0582,1.2648,1.5409,1.4695,1.4843,0.093,1.5335,1.6797,1.6167,1.6137,0.2319,0.061,0.0606,0.0599,0.0596,0.0589,0.0596,0.0599,0.0591,0.0593,0.0594,0.0586,0.0585,0.0576 77476s,0.0649,0.0674,0.0631,0.0636,0.0642,0.0627,0.0627,0.0652,0.0629,0.0669,0.0631,0.0623,0.061,0.2827,0.3515,0.2881,0.2529,0.0949,1.249,1.4424,1.3279,1.3355,0.2336,0.0616,0.0608,0.4136,0.4681,0.4459,0.4173,0.0956,1.2964,1.4538,1.3637,1.3452,0.2228,0.0645,0.0595,0.626,0.6587,0.6034,0.6396,0.0979,1.3172,1.4886,1.3925,1.3669,0.2242,0.0616,0.0586,0.8595,0.887,0.85,0.8916,0.0938,1.363,1.5393,1.4475,1.4268,0.2239,0.0621,0.0624,1.0214,1.2575,1.1717,1.1725,1.2598,1.4215,1.5888,1.5088,1.5035,1.0461,0.0601,0.0584,1.2667,1.5411,1.47,1.4836,0.0931,1.5333,1.6788,1.6166,1.6125,0.2321,0.0611,0.0607,0.0599,0.0595,0.0589,0.0598,0.0599,0.0592,0.0594,0.0607,0.0587,0.0587,0.0578 78117s,0.0649,0.0749,0.0628,0.0635,0.064,0.0626,0.0624,0.0651,0.063,0.0667,0.0629,0.0624,0.061,0.283,0.3517,0.2882,0.253,0.0949,1.2485,1.4428,1.3278,1.335,0.2334,0.0577,0.0603,0.4138,0.4683,0.4464,0.4175,0.0954,1.2962,1.4535,1.3647,1.3454,0.2228,0.0642,0.0591,0.6259,0.6583,0.6034,0.6403,0.0979,1.3172,1.4884,1.393,1.3673,0.2241,0.0617,0.0586,0.8608,0.8867,0.8497,0.8918,0.0937,1.3627,1.5398,1.4476,1.4275,0.2239,0.0618,0.0622,1.0221,1.2575,1.1716,1.1728,1.2613,1.422,1.5896,1.5085,1.5039,1.0708,0.0595,0.0579,1.2681,1.5411,1.4695,1.4837,0.093,1.5343,1.6791,1.6161,1.6129,0.2319,0.0608,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0603,0.0586,0.0585,0.0581 78757s,0.0649,0.0671,0.0628,0.0636,0.0642,0.0626,0.0627,0.0649,0.0628,0.0667,0.0629,0.0625,0.061,0.2835,0.352,0.2881,0.2533,0.0951,1.2489,1.4421,1.3282,1.3356,0.2333,0.0616,0.0611,0.414,0.4688,0.4461,0.4177,0.0956,1.2954,1.4536,1.3649,1.3468,0.223,0.0643,0.0591,0.6263,0.6588,0.6035,0.6397,0.0979,1.3173,1.4882,1.3925,1.3673,0.2242,0.0617,0.0587,0.8607,0.8868,0.8497,0.8924,0.0937,1.3629,1.5397,1.4477,1.4281,0.2239,0.0617,0.0625,1.0222,1.2571,1.1723,1.1729,1.2629,1.4213,1.5884,1.5087,1.5047,1.0942,0.0593,0.0579,1.2711,1.5411,1.4708,1.4835,0.093,1.5353,1.6785,1.6166,1.6137,0.2321,0.0607,0.0606,0.0597,0.0594,0.0588,0.0596,0.0599,0.0591,0.0593,0.0614,0.0587,0.0586,0.0574 79397s,0.0652,0.0747,0.0629,0.0635,0.0638,0.0626,0.0626,0.065,0.0629,0.0667,0.0631,0.063,0.0608,0.2833,0.352,0.2881,0.2533,0.0951,1.2488,1.4424,1.3286,1.3362,0.2333,0.0592,0.0602,0.4139,0.4686,0.4464,0.4178,0.0955,1.2952,1.4549,1.3647,1.3459,0.2229,0.0644,0.0595,0.6261,0.6582,0.6042,0.6404,0.0979,1.3178,1.4886,1.393,1.3676,0.2242,0.062,0.0594,0.8615,0.8868,0.8499,0.893,0.0939,1.3628,1.5399,1.4474,1.4288,0.2241,0.0618,0.0624,1.0222,1.2571,1.1718,1.1729,1.2629,1.4213,1.5896,1.5079,1.5039,1.1196,0.0605,0.0583,1.2718,1.5412,1.4696,1.4833,0.093,1.536,1.6777,1.6155,1.6128,0.2322,0.0606,0.0607,0.0597,0.0594,0.0588,0.0595,0.0598,0.0591,0.0593,0.0599,0.0586,0.0587,0.0571 80037s,0.0655,0.075,0.063,0.0634,0.064,0.0628,0.0624,0.065,0.0627,0.0668,0.063,0.0625,0.061,0.284,0.3521,0.2889,0.2537,0.0952,1.2494,1.4421,1.3286,1.3367,0.2332,0.065,0.0615,0.4144,0.4693,0.4471,0.4185,0.0956,1.2962,1.4541,1.3651,1.3466,0.2232,0.0643,0.0595,0.626,0.6586,0.604,0.6401,0.098,1.3173,1.4888,1.3941,1.3687,0.2243,0.0644,0.0599,0.8615,0.8869,0.8499,0.8931,0.0938,1.3628,1.5404,1.4482,1.4288,0.2243,0.0615,0.0624,1.0232,1.2579,1.1727,1.1739,1.2654,1.421,1.5907,1.5083,1.5052,1.1443,0.0601,0.059,1.2741,1.5424,1.47,1.4844,0.0932,1.5373,1.681,1.6164,1.6145,0.2322,0.0606,0.0607,0.0599,0.0595,0.0589,0.0597,0.0601,0.0592,0.0594,0.0606,0.0586,0.0585,0.0577 80677s,0.0658,0.0706,0.063,0.0639,0.064,0.0628,0.0624,0.0655,0.0629,0.0676,0.0631,0.0627,0.0611,0.2841,0.3522,0.2891,0.2538,0.0954,1.2492,1.4424,1.3294,1.3365,0.2333,0.0591,0.0611,0.4145,0.4697,0.4472,0.4184,0.0956,1.2957,1.4538,1.3651,1.347,0.2232,0.0644,0.0595,0.6267,0.6586,0.604,0.6408,0.0981,1.3172,1.4893,1.3931,1.3681,0.2245,0.0611,0.0587,0.8622,0.8869,0.8498,0.8932,0.094,1.362,1.5402,1.448,1.4286,0.2244,0.0619,0.0625,1.023,1.2572,1.1729,1.1734,1.2657,1.4201,1.5904,1.5076,1.5042,1.1692,0.0598,0.059,1.275,1.5417,1.4696,1.4834,0.0932,1.5367,1.678,1.6172,1.6133,0.2324,0.0608,0.0608,0.0598,0.0597,0.0589,0.0597,0.06,0.0593,0.0594,0.0596,0.0586,0.0587,0.0573 81318s,0.065,0.0668,0.0628,0.0636,0.0639,0.0627,0.0624,0.0651,0.0627,0.0668,0.063,0.0625,0.0611,0.2848,0.3531,0.2899,0.2546,0.0954,1.2486,1.4416,1.3287,1.3366,0.2331,0.0629,0.061,0.4148,0.4701,0.4475,0.4191,0.0955,1.2954,1.4537,1.3648,1.3469,0.2232,0.0642,0.0592,0.6267,0.6588,0.6042,0.6419,0.098,1.3173,1.4889,1.394,1.3686,0.2245,0.0606,0.059,0.8622,0.8869,0.8497,0.8934,0.0938,1.3618,1.5394,1.4478,1.4285,0.2245,0.0617,0.0626,1.0235,1.2572,1.1727,1.1736,1.2664,1.4199,1.5884,1.5076,1.5039,1.192,0.0621,0.0582,1.276,1.5424,1.4694,1.4841,0.0931,1.5367,1.6791,1.6158,1.613,0.2324,0.0606,0.0606,0.0597,0.0596,0.0588,0.0595,0.0599,0.0593,0.0592,0.0603,0.0585,0.0586,0.0574 81958s,0.065,0.0748,0.0628,0.0635,0.0639,0.0625,0.0624,0.0648,0.0628,0.0665,0.063,0.0626,0.061,0.2849,0.3531,0.29,0.2549,0.0956,1.2491,1.4425,1.3288,1.3375,0.2333,0.0611,0.0608,0.4146,0.4687,0.4472,0.419,0.0956,1.2967,1.4546,1.3664,1.3483,0.2233,0.0643,0.0594,0.6271,0.6591,0.6045,0.6419,0.098,1.3178,1.49,1.3947,1.3695,0.2247,0.0615,0.0622,0.863,0.8873,0.8502,0.8941,0.0938,1.3621,1.5405,1.4482,1.4297,0.2246,0.0617,0.0625,1.0245,1.2578,1.173,1.1741,1.2677,1.4198,1.5902,1.5087,1.5048,1.2161,0.0605,0.0581,1.2781,1.5423,1.4708,1.485,0.0932,1.5389,1.6802,1.6164,1.615,0.2327,0.0606,0.0606,0.0597,0.0595,0.0589,0.0595,0.0598,0.0591,0.0593,0.0603,0.0585,0.0585,0.057 82598s,0.065,0.067,0.063,0.0638,0.0641,0.0626,0.0626,0.0651,0.0628,0.0668,0.0634,0.0627,0.061,0.2849,0.3529,0.2901,0.2548,0.0956,1.2497,1.4429,1.3301,1.3375,0.2332,0.0588,0.0611,0.4144,0.4694,0.4471,0.4194,0.0956,1.2966,1.4545,1.3661,1.3486,0.2234,0.0644,0.0595,0.6269,0.6603,0.6048,0.6422,0.0981,1.3169,1.4891,1.3944,1.3692,0.2249,0.0622,0.0582,0.8633,0.8873,0.8502,0.8938,0.0941,1.3614,1.5402,1.4479,1.429,0.2247,0.0618,0.0624,1.0248,1.2583,1.1738,1.1751,1.2672,1.4206,1.5901,1.5077,1.5053,1.238,0.0594,0.0586,1.2786,1.5419,1.4704,1.486,0.0932,1.5394,1.6796,1.6165,1.6133,0.2326,0.0607,0.0608,0.0597,0.0595,0.0591,0.0597,0.06,0.0592,0.0594,0.0606,0.0586,0.0586,0.0577 83238s,0.065,0.0672,0.0631,0.0636,0.064,0.0627,0.0627,0.0651,0.063,0.0669,0.0636,0.0628,0.0609,0.2855,0.3533,0.2903,0.2553,0.0957,1.2495,1.4426,1.3299,1.338,0.2331,0.0603,0.0612,0.4148,0.4695,0.4478,0.4196,0.0957,1.2958,1.4548,1.3664,1.3482,0.2235,0.0642,0.0594,0.6275,0.6599,0.6055,0.6428,0.0981,1.3169,1.4886,1.3948,1.3691,0.225,0.0625,0.0584,0.8642,0.8876,0.8501,0.8944,0.0941,1.3618,1.5395,1.4484,1.43,0.2247,0.0618,0.0626,1.0253,1.258,1.1739,1.1751,1.2676,1.4201,1.5897,1.5085,1.5055,1.2615,0.0621,0.0583,1.2793,1.5422,1.4694,1.4843,0.0936,1.539,1.6798,1.6152,1.6132,0.2328,0.0606,0.0608,0.0598,0.0595,0.059,0.0597,0.0601,0.0592,0.0594,0.0602,0.0588,0.0587,0.0581 83879s,0.0648,0.0671,0.0631,0.0639,0.0641,0.0628,0.0626,0.065,0.0627,0.0667,0.0632,0.0625,0.061,0.2856,0.3536,0.2908,0.2554,0.0957,1.249,1.442,1.3296,1.3383,0.2331,0.0617,0.0602,0.4151,0.4703,0.4482,0.4195,0.0959,1.2958,1.4552,1.3665,1.3483,0.2236,0.0643,0.0594,0.6278,0.6599,0.6052,0.6427,0.0982,1.3165,1.4897,1.3942,1.3691,0.225,0.06,0.0585,0.8644,0.8875,0.8499,0.8946,0.094,1.3612,1.5399,1.4476,1.4297,0.2248,0.0616,0.0626,1.0249,1.2578,1.1729,1.175,1.2681,1.4196,1.5895,1.5076,1.505,1.2814,0.06,0.0584,1.28,1.5423,1.4689,1.4849,0.0935,1.5391,1.6798,1.6161,1.6137,0.2328,0.0608,0.0608,0.0596,0.0596,0.0589,0.0597,0.0599,0.059,0.0594,0.0599,0.0587,0.0585,0.0577 84519s,0.0655,0.075,0.063,0.0637,0.064,0.0625,0.0624,0.0652,0.0629,0.0668,0.0631,0.0627,0.0611,0.2857,0.3536,0.2908,0.2556,0.0958,1.2492,1.4426,1.3295,1.3379,0.2331,0.063,0.0611,0.4152,0.4707,0.448,0.4197,0.0958,1.2957,1.4538,1.3666,1.3487,0.2236,0.0642,0.0593,0.628,0.6592,0.6051,0.6431,0.098,1.3169,1.4897,1.3948,1.3693,0.225,0.06,0.0582,0.8645,0.8878,0.8503,0.8949,0.094,1.3608,1.5394,1.448,1.4298,0.225,0.0616,0.0625,1.0255,1.2579,1.1729,1.175,1.2685,1.4187,1.5882,1.5069,1.5053,1.3019,0.0606,0.0587,1.2805,1.5411,1.4695,1.4851,0.0935,1.5385,1.6798,1.6151,1.6127,0.2327,0.0607,0.0607,0.0598,0.0595,0.0588,0.0596,0.06,0.0591,0.0592,0.0602,0.0587,0.0585,0.0569 85159s,0.0647,0.075,0.0629,0.0635,0.0642,0.0625,0.0627,0.065,0.0628,0.0666,0.0627,0.0624,0.0611,0.2861,0.354,0.2915,0.2563,0.0958,1.249,1.4417,1.3309,1.338,0.2332,0.0638,0.0622,0.4152,0.4702,0.448,0.4198,0.0958,1.296,1.4541,1.3673,1.3491,0.2238,0.0644,0.059,0.628,0.66,0.605,0.643,0.0982,1.3166,1.4893,1.3947,1.3691,0.2253,0.0637,0.0589,0.8653,0.888,0.8503,0.8948,0.0941,1.3611,1.5408,1.4484,1.4305,0.2252,0.0614,0.0627,1.0259,1.2581,1.1737,1.175,1.2686,1.4191,1.5891,1.5077,1.5053,1.3231,0.0609,0.0583,1.2809,1.5417,1.4704,1.4855,0.0937,1.5385,1.6788,1.6149,1.6131,0.233,0.0606,0.0609,0.06,0.0595,0.059,0.0597,0.06,0.0592,0.0593,0.0597,0.0586,0.0585,0.058 85799s,0.0655,0.0671,0.0632,0.0638,0.0641,0.0629,0.0625,0.0653,0.0631,0.0667,0.063,0.0627,0.061,0.2862,0.3541,0.2914,0.2565,0.0959,1.2495,1.4424,1.3307,1.3389,0.233,0.0592,0.061,0.4148,0.4694,0.4481,0.4195,0.0958,1.2963,1.4548,1.3669,1.349,0.2238,0.0642,0.0592,0.6278,0.6598,0.6047,0.6435,0.0981,1.3169,1.489,1.395,1.3695,0.2253,0.0612,0.0597,0.8651,0.888,0.8498,0.895,0.094,1.3606,1.5396,1.448,1.4295,0.2252,0.0616,0.0625,1.026,1.2581,1.1742,1.1753,1.2687,1.4182,1.5893,1.5073,1.5055,1.3417,0.0608,0.0581,1.2814,1.5418,1.4701,1.4863,0.0938,1.5394,1.6789,1.6147,1.6138,0.2332,0.0605,0.0608,0.0598,0.0595,0.059,0.0595,0.0598,0.0591,0.0593,0.0643,0.0586,0.0585,0.0576 Date of measurement: 2010-02-24/Time of measurement: 13:30:10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, C:\Users\Public\Documents\Tecan\Magellan\mth\YeastOD595growth30degreesMultireadNoshake_HTMPSversion.mth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, C:\Users\Public\Documents\Tecan\Magellan\wsp\24022010-SG_Glctests_YPD-AFEXNo1.wsp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 595nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Unknown user,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, infinite 500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Instrument serial number: ##########,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate Description: [NUN96ft] - Nunclon 96 Flat Transparent,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Plate with Cover: Yes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Barcode: No,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Temperature,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mode: On,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Temperature: 30.0 C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Shaking,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Duration: 10 sec,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mode: Linear,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Amplitude: 2 mm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Frequency: 70.8 rpm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Kinetic Cycle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Duration: 23:59:59,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Absorbance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Measurement wavelength: 595 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Measurement bandwidth: 10 nm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Number of reads: 10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Settle time: 0 ms,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Label: Label1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Incubation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Total kinetic run time: 23h 49min 59s ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_Layout.csv b/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_Layout.csv new file mode 100644 index 0000000..d4df5ba --- /dev/null +++ b/Rails/public/uploadedFiles/20150407-1428438865/YPDAFEXglucoseTests_2-25-10_Layout.csv @@ -0,0 +1,97 @@ +Destination plate name,Row,Column,Well ID,Plate source,Well Source,Strain,Media Definition +Control strain plate,A,1,Empty,Empty,Empty,Empty,None +Control strain plate,A,2,Empty,Empty,Empty,Empty,None +Control strain plate,A,3,Empty,Empty,Empty,Empty,None +Control strain plate,A,4,Empty,Empty,Empty,Empty,None +Control strain plate,A,5,Empty,Empty,Empty,Empty,None +Control strain plate,A,6,Empty,Empty,Empty,Empty,None +Control strain plate,A,7,Empty,Empty,Empty,Empty,None +Control strain plate,A,8,Empty,Empty,Empty,Empty,None +Control strain plate,A,9,Empty,Empty,Empty,Empty,None +Control strain plate,A,10,Empty,Empty,Empty,Empty,None +Control strain plate,A,11,Empty,Empty,Empty,Empty,None +Control strain plate,A,12,Empty,Empty,Empty,Empty,None +Control strain plate,B,1,Empty,Empty,Empty,Empty,None +Control strain plate,B,2,Sample,USDA,,Lab strain,YP +Control strain plate,B,3,Sample,USDA,,Wild strain,YP +Control strain plate,B,4,Sample,Internal source,,Industrial strain,YP +Control strain plate,B,5,Sample,ATCC,,Engineered strain,YP +Control strain plate,B,6,Empty,Empty,Empty,Empty,None +Control strain plate,B,7,Sample,USDA,,Lab strain,AFEX +Control strain plate,B,8,Sample,USDA,,Wild strain,AFEX +Control strain plate,B,9,Sample,Internal source,,Industrial strain,AFEX +Control strain plate,B,10,Sample,ATCC,,Engineered strain,AFEX +Control strain plate,B,11,Empty,Empty,Empty,Empty,None +Control strain plate,B,12,Empty,Empty,Empty,Empty,None +Control strain plate,C,1,Empty,Empty,Empty,Empty,None +Control strain plate,C,2,Sample,USDA,,Lab strain,YP+0.25% glucose +Control strain plate,C,3,Sample,USDA,,Wild strain,YP+0.25% glucose +Control strain plate,C,4,Sample,Internal source,,Industrial strain,YP+0.25% glucose +Control strain plate,C,5,Sample,ATCC,,Engineered strain,YP+0.25% glucose +Control strain plate,C,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,C,7,Sample,USDA,,Lab strain,AFEX+0.25% glucose +Control strain plate,C,8,Sample,USDA,,Wild strain,AFEX+0.25% glucose +Control strain plate,C,9,Sample,Internal source,,Industrial strain,AFEX+0.25% glucose +Control strain plate,C,10,Sample,ATCC,,Engineered strain,AFEX+0.25% glucose +Control strain plate,C,11,Empty,Empty,Empty,Empty,None +Control strain plate,C,12,Empty,Empty,Empty,Empty,None +Control strain plate,D,1,Empty,Empty,Empty,Empty,None +Control strain plate,D,2,Sample,USDA,,Lab strain,YP+0.5% glucose +Control strain plate,D,3,Sample,USDA,,Wild strain,YP+0.5% glucose +Control strain plate,D,4,Sample,Internal source,,Industrial strain,YP+0.5% glucose +Control strain plate,D,5,Sample,ATCC,,Engineered strain,YP+0.5% glucose +Control strain plate,D,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,D,7,Sample,USDA,,Lab strain,AFEX+0.5% glucose +Control strain plate,D,8,Sample,USDA,,Wild strain,AFEX+0.5% glucose +Control strain plate,D,9,Sample,Internal source,,Industrial strain,AFEX+0.5% glucose +Control strain plate,D,10,Sample,ATCC,,Engineered strain,AFEX+0.5% glucose +Control strain plate,D,11,Empty,Empty,Empty,Empty,None +Control strain plate,D,12,Empty,Empty,Empty,Empty,None +Control strain plate,E,1,Empty,Empty,Empty,Empty,None +Control strain plate,E,2,Sample,USDA,,Lab strain,YP+1% glucose +Control strain plate,E,3,Sample,USDA,,Wild strain,YP+1% glucose +Control strain plate,E,4,Sample,Internal source,,Industrial strain,YP+1% glucose +Control strain plate,E,5,Sample,ATCC,,Engineered strain,YP+1% glucose +Control strain plate,E,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,E,7,Sample,USDA,,Lab strain,AFEX+1% glucose +Control strain plate,E,8,Sample,USDA,,Wild strain,AFEX+1% glucose +Control strain plate,E,9,Sample,Internal source,,Industrial strain,AFEX+1% glucose +Control strain plate,E,10,Sample,ATCC,,Engineered strain,AFEX+1% glucose +Control strain plate,E,11,Empty,Empty,Empty,Empty,None +Control strain plate,E,12,Empty,Empty,Empty,Empty,None +Control strain plate,F,1,Empty,Empty,Empty,Empty,None +Control strain plate,F,2,Sample,USDA,,Lab strain,YP+2% glucose +Control strain plate,F,3,Sample,USDA,,Wild strain,YP+2% glucose +Control strain plate,F,4,Sample,Internal source,,Industrial strain,YP+2% glucose +Control strain plate,F,5,Sample,ATCC,,Engineered strain,YP+2% glucose +Control strain plate,F,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,F,7,Sample,USDA,,Lab strain,AFEX+2% glucose +Control strain plate,F,8,Sample,USDA,,Wild strain,AFEX+2% glucose +Control strain plate,F,9,Sample,Internal source,,Industrial strain,AFEX+2% glucose +Control strain plate,F,10,Sample,ATCC,,Engineered strain,AFEX+2% glucose +Control strain plate,F,11,Empty,Empty,Empty,Empty,None +Control strain plate,F,12,Empty,Empty,Empty,Empty,None +Control strain plate,G,1,Empty,Empty,Empty,Empty,None +Control strain plate,G,2,Sample,USDA,,Lab strain,YP+5% glucose +Control strain plate,G,3,Sample,USDA,,Wild strain,YP+5% glucose +Control strain plate,G,4,Sample,Internal source,,Industrial strain,YP+5% glucose +Control strain plate,G,5,Sample,ATCC,,Engineered strain,YP+5% glucose +Control strain plate,G,6,Empty,Empty,Empty,Empty,Empty +Control strain plate,G,7,Sample,USDA,,Lab strain,AFEX+5% glucose +Control strain plate,G,8,Sample,USDA,,Wild strain,AFEX+5% glucose +Control strain plate,G,9,Sample,Internal source,,Industrial strain,AFEX+5% glucose +Control strain plate,G,10,Sample,ATCC,,Engineered strain,AFEX+5% glucose +Control strain plate,G,11,Empty,Empty,Empty,Empty,None +Control strain plate,G,12,Empty,Empty,Empty,Empty,None +Control strain plate,H,1,Empty,Empty,Empty,Empty,None +Control strain plate,H,2,Empty,Empty,Empty,Empty,None +Control strain plate,H,3,Empty,Empty,Empty,Empty,None +Control strain plate,H,4,Empty,Empty,Empty,Empty,None +Control strain plate,H,5,Empty,Empty,Empty,Empty,None +Control strain plate,H,6,Empty,Empty,Empty,Empty,None +Control strain plate,H,7,Empty,Empty,Empty,Empty,None +Control strain plate,H,8,Empty,Empty,Empty,Empty,None +Control strain plate,H,9,Empty,Empty,Empty,Empty,None +Control strain plate,H,10,Empty,Empty,Empty,Empty,None +Control strain plate,H,11,Empty,Empty,Empty,Empty,None +Control strain plate,H,12,Empty,Empty,Empty,Empty,None diff --git a/Rails/script/rails b/Rails/script/rails new file mode 100755 index 0000000..f8da2cf --- /dev/null +++ b/Rails/script/rails @@ -0,0 +1,6 @@ +#!/usr/bin/env ruby +# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. + +APP_PATH = File.expand_path('../../config/application', __FILE__) +require File.expand_path('../../config/boot', __FILE__) +require 'rails/commands' diff --git a/Rails/test/fixtures/.gitkeep b/Rails/test/fixtures/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/test/functional/.gitkeep b/Rails/test/functional/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/test/functional/assays_controller_test.rb b/Rails/test/functional/assays_controller_test.rb new file mode 100644 index 0000000..37b332e --- /dev/null +++ b/Rails/test/functional/assays_controller_test.rb @@ -0,0 +1,27 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require 'test_helper' + +class AssaysControllerTest < ActionController::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/Rails/test/integration/.gitkeep b/Rails/test/integration/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/test/performance/browsing_test.rb b/Rails/test/performance/browsing_test.rb new file mode 100644 index 0000000..5626e33 --- /dev/null +++ b/Rails/test/performance/browsing_test.rb @@ -0,0 +1,32 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require 'test_helper' +require 'rails/performance_test_help' + +class BrowsingTest < ActionDispatch::PerformanceTest + # Refer to the documentation for all available options + # self.profile_options = { :runs => 5, :metrics => [:wall_time, :memory] + # :output => 'tmp/performance', :formats => [:flat] } + + def test_homepage + get '/' + end +end \ No newline at end of file diff --git a/Rails/test/test_helper.rb b/Rails/test/test_helper.rb new file mode 100644 index 0000000..3793e8b --- /dev/null +++ b/Rails/test/test_helper.rb @@ -0,0 +1,33 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +ENV["RAILS_ENV"] = "test" +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. + # + # Note: You'll currently still have to declare fixtures explicitly in integration tests + # -- they do not yet inherit this setting + fixtures :all + + # Add more helper methods to be used by all tests here... +end \ No newline at end of file diff --git a/Rails/test/unit/.gitkeep b/Rails/test/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Rails/test/unit/helpers/assays_helper_test.rb b/Rails/test/unit/helpers/assays_helper_test.rb new file mode 100644 index 0000000..00b6169 --- /dev/null +++ b/Rails/test/unit/helpers/assays_helper_test.rb @@ -0,0 +1,24 @@ +# +# Copyright 2012 The Board of Regents of the University of Wisconsin System. +# Contributors: Jason Shao, James McCurdy, Enhai Xie, Adam G.W. Halstead, +# Michael H. Whitney, Nathan DiPiazza, Trey K. Sato and Yury V. Bukhman +# +# This file is part of GCAT. +# +# GCAT 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 3 of the License, or +# (at your option) any later version. +# +# GCAT 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 GCAT. If not, see . +# +require 'test_helper' + +class AssaysHelperTest < ActionView::TestCase +end diff --git a/Rails/vendor/assets/images/ajax-loader.gif b/Rails/vendor/assets/images/ajax-loader.gif new file mode 100644 index 0000000..488f982 Binary files /dev/null and b/Rails/vendor/assets/images/ajax-loader.gif differ diff --git a/Rails/vendor/assets/javascripts/bootstrap.js b/Rails/vendor/assets/javascripts/bootstrap.js new file mode 100644 index 0000000..53da1c7 --- /dev/null +++ b/Rails/vendor/assets/javascripts/bootstrap.js @@ -0,0 +1,2114 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } + +/* ======================================================================== + * Bootstrap: transition.js v3.2.0 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.2.0 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.2.0' + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.2.0 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.2.0' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + $el[val](data[state] == null ? this.options[state] : data[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.2.0 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this)) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.2.0' + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.keydown = function (e) { + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.2.0 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.2.0' + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + Plugin.call(actives, 'hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var href + var $this = $(this) + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.2.0 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.2.0' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('