[Rivet-svn] r2314 - trunk/bin

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Sun Mar 7 13:41:05 GMT 2010


Author: fsiegert
Date: Sun Mar  7 13:41:05 2010
New Revision: 2314

Log:
Two improvements for make-plots:
  - allow plotting in subdirectory: 'make-plots foo/plot.dat' created 'foo/plot.ps'
  - add output format option --pspng which creates both a ps and a preview png
    (I'll use this option in rivet-mkhtml)

rivet-mkhtml:
  - Run make-plots with all generated .dat files at once to make use of its
    superb multithreading option.
  - use --pspng option of make-plots instead of doing it manually

Modified:
   trunk/bin/make-plots
   trunk/bin/rivet-mkhtml

Modified: trunk/bin/make-plots
==============================================================================
--- trunk/bin/make-plots	Thu Mar  4 23:49:06 2010	(r2313)
+++ trunk/bin/make-plots	Sun Mar  7 13:41:05 2010	(r2314)
@@ -1472,20 +1472,22 @@
 import shutil
 def process_datfile(datfile):
     global opts
-
-    filename = datfile.replace('.dat','')
     if not os.access(datfile, os.R_OK):
         raise Exception("Could not read data file '%s'" % datfile)
 
+    dirname = os.path.dirname(datfile)
+    datfile = os.path.basename(datfile)
+    filename = datfile.replace('.dat','')
+
     ## Create a temporary directory
     cwd = os.getcwd()
-    datpath = os.path.join(cwd, datfile)
+    datpath = os.path.join(cwd, dirname, datfile)
     tempdir = tempfile.mkdtemp('.make-plots')
     tempdatpath = os.path.join(tempdir, datfile)
     shutil.copy(datpath, tempdir)
 
     ## Make TeX file
-    inputdata = Inputdata(filename)
+    inputdata = Inputdata(os.path.join(dirname,filename))
     texpath = os.path.join(tempdir, '%s.tex' % filename)
     texfile = open(texpath, 'w')
     p = Plot(inputdata)
@@ -1525,6 +1527,8 @@
             dvipsargs += ' -f | ps2eps > %s.eps 2> /dev/null' % filename
         elif opts.OUTPUT_FORMAT == "PNG":
             dvipsargs += ' -f | convert -density 250 -flatten - %s.png' % filename
+        elif opts.OUTPUT_FORMAT == "PSPNG":
+            dvipsargs += ' -o %s.ps && convert -density 100 -flatten %s.ps %s.png' % (filename, filename, filename)
         else:
             dvipsargs += ' -o %s.ps' % filename
         dvcmd = 'dvips %s %s' % (filename, dvipsargs)
@@ -1536,11 +1540,17 @@
     ## Copy results back to main dir
     outbasename = filename
     outname = outbasename + "." + opts.OUTPUT_FORMAT.lower()
-    outpath = os.path.join(tempdir, outname)
-    if os.path.exists(outpath):
-        shutil.copy(outpath, cwd)
+    if opts.OUTPUT_FORMAT == "PSPNG":
+        outpath = os.path.join(tempdir, outbasename+".ps")
+        shutil.copy(outpath, os.path.join(cwd,dirname))
+        outpath = os.path.join(tempdir, outbasename+".png")
+        shutil.copy(outpath, os.path.join(cwd,dirname))
     else:
-        logging.error("No output file '%s' from processing %s" % (outname, datfile))
+        outpath = os.path.join(tempdir, outname)
+        if os.path.exists(outpath):
+            shutil.copy(outpath, os.path.join(cwd,dirname))
+        else:
+            logging.error("No output file '%s' from processing %s" % (outname, datfile))
 
     ## Clean up
     if opts.NO_CLEANUP:
@@ -1629,6 +1639,8 @@
                       help="Create Encapsulated PostScript output.")
     parser.add_option("--png", dest="OUTPUT_FORMAT", action="store_const", const="PNG", default="PS",
                      help="Create PNG output.")
+    parser.add_option("--pspng", dest="OUTPUT_FORMAT", action="store_const", const="PSPNG", default="PS",
+                     help="Create PS and PNG output.")
     parser.add_option("--tex", dest="OUTPUT_FORMAT", action="store_const", const="TEX", default="PS",
                       help="Create TeX/LaTeX output.")
     parser.add_option("--no-cleanup", dest="NO_CLEANUP", action="store_true", default=False,

Modified: trunk/bin/rivet-mkhtml
==============================================================================
--- trunk/bin/rivet-mkhtml	Thu Mar  4 23:49:06 2010	(r2313)
+++ trunk/bin/rivet-mkhtml	Sun Mar  7 13:41:05 2010	(r2314)
@@ -90,6 +90,24 @@
     ch_cmd.append("%s" % os.path.abspath(file))
 Popen(ch_cmd, cwd=opts.OUTPUTDIR).wait()
 
+
+## run make-plots on all generated .dat files
+mp_cmd = ["make-plots"]
+mp_cmd.append("--pspng")
+mp_cmd.append("--full-range")
+for configfile in opts.CONFIGFILES:
+    if os.access(os.path.expanduser(configfile), os.R_OK):
+        mp_cmd.append("-c")
+        mp_cmd.append(os.path.expanduser(configfile))
+for analysis in sorted(analyses):
+    anapath = os.path.join(opts.OUTPUTDIR, analysis)
+    datfiles = glob.glob("%s/*.dat" % anapath)
+    for datfile in sorted(datfiles):
+        mp_cmd.append(datfile)
+Popen(mp_cmd).wait()
+
+
+## write webpage containing all plots
 style = """<style>
   html { font-family: sans-serif; }
   img { border: 0; }
@@ -152,35 +170,21 @@
     else:
         anaindex = index
 
-    datfiles = glob.glob("%s/*.dat" % anapath)
-    for fulldatfile in sorted(datfiles):
-        datfile = os.path.basename(fulldatfile)
-        obsname = datfile.replace(".dat", "")
-
-        ## make-plots run for each .dat file
-        mp_cmd = ["make-plots"]
-        mp_cmd.append("--full-range")
-        for configfile in opts.CONFIGFILES:
-            if os.access(os.path.expanduser(configfile), os.R_OK):
-                mp_cmd.append("-c")
-                mp_cmd.append(os.path.expanduser(configfile))
-        mp_cmd.append(datfile)
-        Popen(mp_cmd, cwd=anapath).wait()
-
+    pngfiles = glob.glob("%s/*.png" % anapath)
+    for pngfile in sorted(pngfiles):
+        obsname = os.path.basename(pngfile).replace(".png", "")
+        pngfile = obsname+".png"
         psfile = obsname+".ps"
-        if os.access(os.path.join(anapath, psfile), os.R_OK):
-            # Convert to png and add to web page
-            pngfile = obsname+".png"
-            Popen(["convert", "-density", "100", psfile, pngfile], cwd=anapath)
-            if opts.SINGLE:
-                psfile = analysis+"/"+psfile
-                pngfile = analysis+"/"+pngfile
-            anaindex.write('  <div style="float:left; font-size:smaller; font-weight:bold;">\n')
-            anaindex.write('    <a href="#%s-%s">&#9875;</a> %s:<br>\n' % (analysis, obsname, psfile) )
-            anaindex.write('    <a name="%s-%s"><a href="%s">\n' % (analysis,obsname,psfile) )
-            anaindex.write('      <img src="%s">\n' % pngfile )
-            anaindex.write('    </a></a>\n')
-            anaindex.write('  </div>\n')
+        if opts.SINGLE:
+            pngfile = analysis+"/"+pngfile
+            psfile = analysis+"/"+psfile
+        
+        anaindex.write('  <div style="float:left; font-size:smaller; font-weight:bold;">\n')
+        anaindex.write('    <a href="#%s-%s">&#9875;</a> %s:<br>\n' % (analysis, obsname, psfile) )
+        anaindex.write('    <a name="%s-%s"><a href="%s">\n' % (analysis,obsname,psfile) )
+        anaindex.write('      <img src="%s">\n' % pngfile )
+        anaindex.write('    </a></a>\n')
+        anaindex.write('  </div>\n')
 
     if not opts.SINGLE:
         anaindex.write("</body>\n</html>\n")


More information about the Rivet-svn mailing list