Mercurial > repos > morinlab > merge_gzip
changeset 1:d31828d6f3ce draft default tip
Uploaded
| author | morinlab |
|---|---|
| date | Sun, 04 Dec 2016 18:30:39 -0500 |
| parents | c9e0f12c97c2 |
| children | |
| files | merge_gzip.R |
| diffstat | 1 files changed, 55 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/merge_gzip.R Sun Dec 04 18:30:39 2016 -0500 @@ -0,0 +1,55 @@ +args <- commandArgs(trailingOnly = TRUE) + + +my_read_table <- function(x) { + return(read.table(x, stringsAsFactors=F)) + } + + +data_files <- my_read_table(args[1]) +interval_files <- my_read_table(args[2]) +byte_files <- my_read_table(args[3]) +order <- my_read_table(args[4])[,1] +output <- args[5] + + +interval_file_list <- apply(interval_files, 1, my_read_table) +byte_file_list <- apply(byte_files, 1, my_read_table) + +which_equal <- function(a,b) { + which(a == b); + } + +find_indexes <- function(element, a_list) { + a <- lapply(a_list, which_equal, element); + list_index <- which(!is.na(a==0)); + vector_index <- a[[list_index]]; + return(c(list_index, vector_index)); + } + +data <- t(sapply(order, find_indexes, interval_file_list)); + +print(interval_file_list) +print(byte_file_list) + +for ( i in 1:nrow(data)) { + + command <- paste( + "tail -c +", + byte_file_list[[ data[i,1] ]][,1][ data[i,2] ], + " ", + data_files[ data[i,1], 1 ], + " | ", + "head -c ", + byte_file_list[[ data[i,1] ]][,1][ data[i,2]+1 ] - byte_file_list[[ data[i,1] ]][,1][ data[i,2] ], + " >> ", + output, + sep="" + ); + + print(command) + + system(command); + + } +
