diff --git a/R/GATKReport.R b/R/GATKReport.R new file mode 100644 index 000000000..07137353b --- /dev/null +++ b/R/GATKReport.R @@ -0,0 +1,47 @@ +read.gatkreport <- function(filename) { + con = file(filename, "r", blocking = TRUE); + lines = readLines(con); + close(con); + + tableEnv = new.env(); + + tableName = NA; + tableHeader = c(); + tableRows = c(); + + for (line in lines) { + if (length(grep("^#:table[[:space:]]+", line, ignore.case=TRUE)) > 0) { + headerFields = unlist(strsplit(line, "[[:space:]]+")); + + if (!is.na(tableName)) { + d = data.frame(tableRows, row.names=NULL, stringsAsFactors=FALSE); + colnames(d) = tableHeader; + + assign(tableName, d, envir=tableEnv); + } + + tableName = headerFields[2]; + tableHeader = c(); + tableRows = c(); + } else if (length(grep("^[[:space:]]*$", line)) > 0 | length(grep("^[[:space:]]*#", line)) > 0) { + # do nothing + } else if (!is.na(tableName)) { + row = unlist(strsplit(line, "[[:space:]]+")); + + if (length(tableHeader) == 0) { + tableHeader = row; + } else { + tableRows = rbind(tableRows, row); + } + } + } + + if (!is.na(tableName)) { + d = data.frame(tableRows, row.names=NULL); + colnames(d) = tableHeader; + + assign(tableName, d, envir=tableEnv); + } + + gatkreport = as.list(tableEnv); +}