diff --git a/tools/rgenetics/rgGRR.py b/tools/rgenetics/rgGRR.py
index 75c59ed3553..07da056b375 100644
--- a/tools/rgenetics/rgGRR.py
+++ b/tools/rgenetics/rgGRR.py
@@ -78,7 +78,7 @@ class NullDevice:
pass
tempstderr = sys.stderr # save
-sys.stderr = NullDevice()
+#sys.stderr = NullDevice()
# need to avoid blather about deprecation and other strange stuff from scipy
# the current galaxy job runner assumes that
# the job is in error if anything appears on sys.stderr
diff --git a/tools/rgenetics/rgManQQ.py b/tools/rgenetics/rgManQQ.py
index 11715de05c1..6c8fe182b50 100644
--- a/tools/rgenetics/rgManQQ.py
+++ b/tools/rgenetics/rgManQQ.py
@@ -75,25 +75,25 @@ manhattan = function(chrom=NULL,offset=NULL,pvals=NULL, title=NULL, max.y="max",
# only makes sense if genome wide is assumed - we could have a fine mapping region?
if (annotate) d.annotate=d[as.numeric(substr(d$SNP,3,100)) %in% SNPlist, ]
- plot=qplot(pos,logp,data=d, ylab=expression(-log[10](italic(p))) , colour=factor(CHR))
- plot=plot+scale_x_continuous(name="Chromosome", breaks=ticks, labels=(unique(d$CHR)))
- plot=plot+scale_y_continuous(limits=c(0,maxy), breaks=1:maxy, labels=1:maxy)
- plot=plot+scale_colour_manual(value=mycols)
- if (annotate) plot=plot + geom_point(data=d.annotate, colour=I("green3"))
- plot=plot + opts(legend.position = "none")
- plot=plot + opts(title=title)
- plot=plot+opts(
+ manplot=qplot(pos,logp,data=d, ylab=expression(-log[10](italic(p))) , colour=factor(CHR))
+ manplot=manplot+scale_x_continuous(name="Chromosome", breaks=ticks, labels=(unique(d$CHR)))
+ manplot=manplot+scale_y_continuous(limits=c(0,maxy), breaks=1:maxy, labels=1:maxy)
+ manplot=manplot+scale_colour_manual(value=mycols)
+ if (annotate) { manplot=manplot + geom_point(data=d.annotate, colour=I("green3")) }
+ manplot=manplot + opts(legend.position = "none")
+ manplot=manplot + opts(title=title)
+ manplot=manplot+opts(
panel.background=theme_blank(),
axis.text.x=theme_text(size=size.x.labels, colour="grey50"),
axis.text.y=theme_text(size=size.y.labels, colour="grey50"),
axis.ticks=theme_segment(colour=NA)
)
- #plot = plot + opts(panel.grid.y.minor=theme_blank(),panel.grid.y.major=theme_blank())
- #plot = plot + opts(panel.grid.major=theme_blank())
+ #manplot = manplot + opts(panel.grid.y.minor=theme_blank(),panel.grid.y.major=theme_blank())
+ #manplot = manplot + opts(panel.grid.major=theme_blank())
- if (suggestiveline) plot=plot+geom_hline(yintercept=suggestiveline,colour="blue", alpha=I(1/3))
- if (genomewideline) plot=plot+geom_hline(yintercept=genomewideline,colour="red")
- plot
+ if (suggestiveline) manplot=manplot+geom_hline(yintercept=suggestiveline,colour="blue", alpha=I(1/3))
+ if (genomewideline) manplot=manplot+geom_hline(yintercept=genomewideline,colour="red")
+ manplot
} else {
stop("Make sure your data frame contains columns CHR, BP, and P")
}
@@ -110,12 +110,12 @@ qq = function(pvector, title=NULL, spartan=F) {
# ylab=expression(Observed~~-log[10](italic(p))), xlim=c(0,max(e)), ylim=c(0,max(e)))
# lines(e,e,col="red")
#You'll need ggplot2 installed to do the rest
- plot=qplot(e,o, xlim=c(0,max(e)), ylim=c(0,max(o))) + stat_abline(intercept=0,slope=1, col="red")
- plot=plot+opts(title=title)
- plot=plot+scale_x_continuous(name=expression(Expected~~-log[10](italic(p))))
- plot=plot+scale_y_continuous(name=expression(Observed~~-log[10](italic(p))))
+ qq=qplot(e,o, xlim=c(0,max(e)), ylim=c(0,max(o))) + stat_abline(intercept=0,slope=1, col="red")
+ qq=qq+opts(title=title)
+ qq=qq+scale_x_continuous(name=expression(Expected~~-log[10](italic(p))))
+ qq=qq+scale_y_continuous(name=expression(Observed~~-log[10](italic(p))))
if (spartan) plot=plot+opts(panel.background=theme_rect(col="grey50"), panel.grid.minor=theme_blank())
- plot
+ qq
}
"""
@@ -140,6 +140,7 @@ if (plen > 0) {
mytitle = paste('p=',cname,', ',title,sep='')
myfname = chartr(' ','_',cname)
myqqplot = qq(rawd[,pvalscolumn],title=mytitle)
+ ggsave(filename=paste(myfname,"qqplot.png",sep='_'),myqqplot,width=8,height=11)
print(paste('## qqplot on',cname,'done'))
if ((chromcolumn > 0) & (offsetcolumn > 0)) {
if (doreorder) {
@@ -151,13 +152,12 @@ if (plen > 0) {
print(paste('## manhattan on',cname,'starting',chromcolumn,offsetcolumn,pvalscolumn))
mymanplot= manhattan(chrom=rawd[,chromcolumn],offset=rawd[,offsetcolumn],pvals=rawd[,pvalscolumn],title=mytitle,grey=grey)
print(paste('## manhattan plot on',cname,'done'))
- ggsave(file=paste(myfname,"manhattan.png",sep='_'),mymanplot,width=11,height=8,dpi=100)
+ ggsave(filename=paste(myfname,"manhattan.png",sep='_'),mymanplot,width=11,height=8)
}
else {
print(paste('chrom column =',chromcolumn,'offset column = ',offsetcolumn,
'so no Manhattan plot - supply both chromosome and offset as numerics for Manhattan plots if required'))
}
- ggsave(file=paste(myfname,"qqplot.png",sep='_'),myqqplot,width=8,height=11,dpi=100)
}
else {
print(paste('pvalue column =',pvalscolumn,'Cannot parse it so no plots possible'))
@@ -177,9 +177,10 @@ def doManQQ(input_fname,chrom_col,offset_col,pval_cols,title,grey,ctitle,outdir)
to make them do our bidding - and save the resulting code for posterity
this can be called externally, I guess...for QC eg?
"""
-
rcmd = '%s%s' % (rcode,rcode2 % (input_fname,chrom_col,offset_col,pval_cols,title,grey))
rlog,flist = RRun(rcmd=rcmd,title=ctitle,outdir=outdir)
+ rlog.append('## R script=')
+ rlog.append(rcmd)
return rlog,flist
diff --git a/tools/rgenetics/rgManQQ.xml b/tools/rgenetics/rgManQQ.xml
index e307f4e822e..228c3c567b4 100644
--- a/tools/rgenetics/rgManQQ.xml
+++ b/tools/rgenetics/rgManQQ.xml
@@ -42,14 +42,10 @@
-
diff --git a/tools/rgenetics/rgtest.sh b/tools/rgenetics/rgtest.sh
index 07810153969..884b2bba4ff 100755
--- a/tools/rgenetics/rgtest.sh
+++ b/tools/rgenetics/rgtest.sh
@@ -41,7 +41,7 @@ CL="python $TOOLPATH/$TOOL.py "$INPATH/smallwgaP.xls" $NPRE ${OUTPATH}/${NPRE}.h
#python /opt/galaxy/tools/rgenetics/rgManQQ.py /opt/galaxy/test-data/smallwgaP.xls rgManQQtest1
#/opt/galaxy/test-data/rgtestouts/rgManQQ/rgManQQtest1.html /opt/galaxy/test-data/rgtestouts/rgManQQ 1 2 5,7
echo "Testing $TOOL using $CL"
-python $TOOLPATH/$TOOL.py "$INPATH/smallwgaP.xls" $NPRE ${OUTPATH}/${NPRE}.html $OUTPATH 1 2 5,7 0
+python $TOOLPATH/$TOOL.py "$INPATH/smallwgaP.xls" $NPRE ${OUTPATH}/${NPRE}.html $OUTPATH 1 2 7 0
TOOL="rgfakePhe"
NPRE=${TOOL}test1
OUTPATH="$OROOT/$TOOL"
diff --git a/tools/rgenetics/rgutils.py b/tools/rgenetics/rgutils.py
index fb95275ed20..0538d71f93b 100644
--- a/tools/rgenetics/rgutils.py
+++ b/tools/rgenetics/rgutils.py
@@ -122,32 +122,36 @@ def RRun(rcmd=[],outdir=None,title='myR',tidy=True):
tempout=False
rname = '%s.R' % title
stoname = '%s.R.log' % title
+ cwd = os.getcwd()
if outdir: # want a specific path
try:
os.makedirs(outdir) # might not be there yet...
except:
pass
- else:
- tempout = True
- outdir = tempfile.mkdtemp(prefix=title)
+ os.chdir(outdir)
if type(rcmd) == type([]):
script = '\n'.join(rcmd)
else: # string
script = rcmd
sto = file(stoname,'w')
- rscriptname = os.path.join(outdir,rname)
- rscript = file(rscriptname,'w')
+ rscript = file(rname,'w')
rscript.write(script)
rscript.write('\n#R script autogenerated by rgenetics/rgutils.py on %s\n' % timenow())
rscript.close()
- vcl = '%s --slave --vanilla < %s' % (rexe,rscriptname)
- x = subprocess.Popen(vcl,shell=True,stderr=sto,stdout=sto,cwd=outdir)
+ vcl = '%s --slave --vanilla < %s' % (rexe,rname)
+ if outdir:
+ x = subprocess.Popen(vcl,shell=True,stderr=sto,stdout=sto,cwd=outdir)
+ else:
+ x = subprocess.Popen(vcl,shell=True,stderr=sto,stdout=sto)
retval = x.wait()
sto.close()
rlog = file(stoname,'r').readlines()
if retval <> 0:
rlog.insert(0,'Nonzero exit code = %d' % retval) # indicate failure
- flist = os.listdir(outdir)
+ if outdir:
+ flist = os.listdir(outdir)
+ else:
+ flist = os.listdir(os.getcwd())
flist.sort
flist = [(x,x) for x in flist]
for i,x in enumerate(flist):
@@ -155,16 +159,8 @@ def RRun(rcmd=[],outdir=None,title='myR',tidy=True):
flist[i] = (x,'R script for %s' % title)
elif x == stoname:
flist[i] = (x,'R log for %s' % title)
- if tidy and tempout: # we used a temp one - fix that
- flist = os.listdir(outdir)
- for f in flist:
- if os.path.isdir(f):
- flist2 = os.listdir(f)
- for f2 in flist2:
- os.unlink(os.path.abspath(f2))
- else:
- os.unlink(os.path.abspath(f))
- os.rmdir(outdir)
+ if outdir:
+ os.chdir(cwd)
return rlog,flist # for html layout
def runPlink(bfn='bar',ofn='foo',logf=None,plinktasks=[],cd='./',vclbase = []):