Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8309381
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
View Options
diff --git a/pyext/rivet/hepdatautils.py b/pyext/rivet/hepdatautils.py
--- a/pyext/rivet/hepdatautils.py
+++ b/pyext/rivet/hepdatautils.py
@@ -1,77 +1,76 @@
from __future__ import print_function
def compare_with_hepdata(yodafile, inspire_id=0, yodafile_from_hepdata=None, output=None):
"""\
Compare a YODA reference data file, intended for inclusion in Rivet, with the YODA file downloaded from HEPData.
Make the comparison using the yodadiff script distributed with YODA (https://yoda.hepforge.org/trac/browser/bin/yodadiff).
:param yodafile: name of YODA reference data file (intended for inclusion in Rivet)
:param inspire_id: INSPIRE ID (to download the YODA file from HEPData)
:param yodafile_from_hepdata: name of YODA file already downloaded from HEPData
:param output: name of output file for yodadiff instead of stdout (note: -o option of yodadiff not implemented)
:return: True or False depending on whether YODA files are compatible
"""
if inspire_id:
# Extract Rivet analysis name from last pathname component of yodafile (and discard extension).
import os
tail = os.path.split(yodafile)[1]
rivet_analysis_name = os.path.splitext(tail)[0]
yodafile_from_hepdata = download_from_hepdata(inspire_id, rivet_analysis_name)
if yodafile_from_hepdata:
print('Comparing {} with {}'.format(yodafile, yodafile_from_hepdata))
import subprocess
args = ['yodadiff', yodafile, yodafile_from_hepdata]
if output:
print('Writing output of "{}" to {}'.format(' '.join(args), output))
with open(output, 'w') as out:
# Note: -o|--output option of yodadiff is not implemented.
exit_status = subprocess.call(args, stdout=out, stderr=out)
else:
exit_status = subprocess.call(args)
if exit_status:
return False
else:
print('No YODA file from HEPData specified!')
return False
return True
def download_from_hepdata(inspire_id, rivet_analysis_name=None):
"""\
Download the latest YODA reference data file from HEPData identified by the INSPIRE ID.
Optionally pass the Rivet analysis name to write in the YODA file exported from HEPData.
:param inspire_id: INSPIRE ID
:param rivet_analysis_name: Rivet analysis name to override default
:return: name of YODA file downloaded from HEPData
"""
import tarfile, io, os, requests
hdurl = 'https://hepdata.net/record/ins{}'.format(inspire_id)
payload = {'format': 'yoda', 'rivet': rivet_analysis_name}
response = requests.get(hdurl, params=payload)
if response.history:
print('Downloading from {}'.format(response.history[0].url))
else:
print('Downloading from {}'.format(response.url))
if response.status_code != 200:
print('Download failed ({} {}), does {} exist?'.format(response.status_code, response.reason, hdurl))
return None
try:
tar = tarfile.open(mode='r:gz', fileobj=io.BytesIO(response.content))
tar.extractall()
yodafile_from_hepdata = tar.getnames()[0]
- os.chmod(yodafile_from_hepdata, 0644)
+ os.chmod(yodafile_from_hepdata, 0o644)
except tarfile.TarError as e:
print('Error reading tarfile ({})'.format(str(e)))
return None
print('Downloaded {}'.format(yodafile_from_hepdata))
return yodafile_from_hepdata
-
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Dec 21, 3:11 PM (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4015991
Default Alt Text
(3 KB)
Attached To
rRIVETHG rivethg
Event Timeline
Log In to Comment