Skip to content

Instantly share code, notes, and snippets.

@explodecomputer
Created February 23, 2017 20:42
Show Gist options
  • Save explodecomputer/8909ba0b65571cd950f6f44c31d4040c to your computer and use it in GitHub Desktop.
Save explodecomputer/8909ba0b65571cd950f6f44c31d4040c to your computer and use it in GitHub Desktop.
making smaller gwama files
1M = 16mb
a <- read.table('results_9.gz', he=T)
snplist <- as.character(unique(a$SNP))
snplist <- data.frame(SNP=snplist, snpid=1:length(snplist), stringsAsFactors=FALSE)
cpglist <- as.character(unique(a$PHENOTYPE))
cpglist <- data.frame(CPG=cpglist, cpgid=1:length(cpglist), stringsAsFactors=FALSE)
a$cpgid <- cpglist$cpgid[match(a$PHENOTYPE, cpglist$CPG)]
a$snpid <- snplist$snpid[match(a$SNP, snplist$SNP)]
writebin <- function(a, filename="test")
{
unlink(filename)
zz <- file(filename, "wb")
writeBin(as.integer(nrow(a)), con=zz)
writeBin(as.integer(a$snpid), con=zz)
writeBin(as.integer(a$cpgid), con=zz)
writeBin(as.character(a$CISTRANS), con=zz)
writeBin(as.numeric(a$BETA), con=zz)
writeBin(as.numeric(a$SE), con=zz)
writeBin(as.numeric(a$PVAL), con=zz)
writeBin(as.integer(a$N), con=zz)
writeBin(as.character(a$EA), con=zz)
writeBin(as.character(a$NEA), con=zz)
writeBin(as.numeric(a$EAF), con=zz)
close(zz)
}
readbin <- function(filename="test")
{
zz <- file(filename, "rb")
n <- readBin(zz, integer(), 1)
snpid <- readBin(zz, integer(), n)
cpgid <- readBin(zz, integer(), n)
cistrans <- readBin(zz, character(), n)
beta <- readBin(zz, numeric(), n)
se <- readBin(zz, numeric(), n)
pval <- readBin(zz, numeric(), n)
n <- readBin(zz, integer(), n)
ea <- readBin(zz, character(), n)
nea <- readBin(zz, character(), n)
eaf <- readBin(zz, numeric(), n)
close(zz)
}
b <- subset(a, select=c(cpgid, snpid, CISTRANS, BETA, SE, PVAL, N, EA, NEA, EAF))
c <- subset(a, select=c(CISTRANS, BETA, SE, PVAL, N, EA, NEA, EAF))
c$MARKERNAME <- paste0(a$cpgid, "_", a$snpid)
write.table(c, file="test3.txt", row=F, col=T, qu=F)
zz <- file("testbin", "wb")
writeBin(pi, zz)
writeBin(pi, zz)
writeBin(pi, zz, endian = "swap")
writeBin(pi, zz, size = 4)
writeBin(pi^2, zz, size = 4, endian = "swap")
writeBin(pi+3i, zz)
writeBin("A test of a connection", zz)
z <- paste("A very long string", 1:100, collapse = " + ")
writeBin(z, zz)
if(.Machine$sizeof.long == 8 || .Machine$sizeof.longlong == 8)
writeBin(as.integer(5^(1:10)), zz, size = 8)
if((s <- .Machine$sizeof.longdouble) > 8)
writeBin((pi/3)^(1:10), zz, size = s)
close(zz)
zz <- file("testbin", "rb")
readBin(zz, character(), 4)
readBin(zz, integer(), 6)
readBin(zz, numeric(), 1, endian = "swap")
readBin(zz, numeric(), size = 4)
readBin(zz, numeric(), size = 4, endian = "swap")
readBin(zz, complex(), 1)
readBin(zz, character(), 1)
z2 <- readBin(zz, character(), 1)
if(.Machine$sizeof.long == 8 || .Machine$sizeof.longlong == 8)
readBin(zz, integer(), 10, size = 8)
if((s <- .Machine$sizeof.longdouble) > 8)
readBin(zz, numeric(), 10, size = s)
close(zz)
unlink("testbin")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment