[seqfan] Re: Chewing an old bone
Russ Cox
rsc at swtch.com
Thu Oct 13 15:29:34 CEST 2011
This suggestion sounds interesting. The best way to explore it
would be if someone could implement it in R, and then we can try
both for a little while.
I am including the R program that generates the current graphs below.
The input file read by read.table is the standard b file format,
without any comments or blank lines.
If someone can adapt this program to generate these alternate
plots, then I will be happy to set it up so that we can see both.
Thanks.
Russ
# R CMD BATCH --no-restore --no-save --vanilla -- script.r
infile = "b123.txt"
outfile = "b123.png"
seqname = "Name Of Sequence"
x = read.table(infile)
# Remove infinite values
lgl = is.finite(x[,2])
x = cbind(x[,1][lgl], x[,2][lgl])
png(file=outfile, width=600, height=800)
par(mar=c(5,5,2,2)+0.1, mfcol=c(2,1))
k = min(200, nrow(x))
xsub = x[1:k,]
plot (xsub,
ylim = c(min(0, min(xsub[,2])), max(xsub[,2])),
xlab = "n",
ylab=paste(seqname, "(n)", sep=""),
bty="l",
type="n",
main = paste("Pin plot of", seqname))
segments(xsub[,1], rep(0, k), xsub[,1], xsub[,2])
# Log the data for the scatterplot?
logplot = T
tval = 100.
if (nrow(x) > 10) {
fv = fivenum(abs(x[,2]))
if (all(is.finite(fv))) {
if (((fv[5]-fv[4]) / (fv[2]-fv[1]+1)) < tval) {
logplot = F
}
}
}
if (logplot) {
v = x[,2]
if (all((v+1) >= 0)) {
plot(x[,1], log10(v+1), pch="+", cex=.5,
xlab = "n",
ylab=paste("log(", seqname, "(n)+1)", sep=""),
main=paste("Scatterplot of log(", seqname, "(n)+1)", sep=""),
bty="l")
} else {
plot(x[,1], log10(abs(v)+1), pch="+", cex=.5,
xlab = "n",
ylab=paste("log(|", seqname, "(n)|+1)", sep=""),
main=paste("Scatterplot of log(", seqname, "(n))", sep=""),
bty="l")
}
} else {
plot(x, pch="+", cex=.5,
xlab = "n",
ylab = paste(seqname, "(n)", sep=""),
main = paste("Scatterplot of ", seqname, "(n)", sep=""),
bty="l")
}
dev.off()
More information about the SeqFan
mailing list