Check HEPData BaBar 2012 $\sigma(e^+e^- \rightarrow \pi^+\pi^- (\gamma))$
HEPData check BaBar 2012 $\sigma(e^+e^- \to \pi^+ \pi^- (\gamma))$¶
- go to web page HEPData submission
- select "Download All" in top-center-left of page
- select "YAML with resource files"
- mkdir -p ./hepdata-babar-2012-pip-pim/submission
- unzip the downloaded zip file into ./hepdata-babar-2012-pip-pim/submission
In [1]:
import re
import os
from pathlib import Path
from array import array
from pprint import pprint
import urllib.request
from requests.utils import requote_uri
from math import *
import json
import yaml
import numpy as np
import pandas as pd
In [2]:
##
## globals
##
myfolder = Path("hepdata-babar-2012-pip-pim/submission")
if not os.path.exists(myfolder):
os.makedirs(myfolder)
In [3]:
##
## procedures
##
In [4]:
def json_load_url(url):
return json.load(urllib.request.urlopen(url))
def yaml_load_url(url):
return yaml.safe_load(urllib.request.urlopen(url))
In [5]:
##
## main code
##
In [6]:
##--- list submission folder content
pprint(os.listdir(myfolder))
In [7]:
##
## read bare cross-section value and total uncertainty
##
with open(os.path.join(myfolder, "bare_cross-section.yaml"), 'r') as stream:
hd_115140_table1 = yaml.safe_load(stream)
##
## create data frame from dict with column names and values
##
hd_115140_table1_df = pd.DataFrame(
{
'E_lo': [float(var["low"]) for var in hd_115140_table1["independent_variables"][0]["values"]],
'E_hi': [float(var["high"]) for var in hd_115140_table1["independent_variables"][0]["values"]],
"sigma val": [float(var["value"]) for var in hd_115140_table1["dependent_variables"][0]["values"]],
"sigma unc": [float(var["errors"][0]["symerror"]) for var in hd_115140_table1["dependent_variables"][0]["values"]],
}
)
hd_115140_table1_df
Out[7]:
In [9]:
##
## read systematics table
##
with open(os.path.join(myfolder, "bare_cross-section_systematic_uncertainties.yaml"), 'r') as stream:
hd_115140_table2 = yaml.safe_load(stream)
##
## convert YAML data to data frame of systematic unc per energy bin
##
hd_115140_table2_df = pd.DataFrame(
{
##--- create single dict concatenating array of dicts
key: val for idict in
[
##--- independent variables are energy bin lo-hi
{'E_lo': [float(var["low"]) for var in hd_115140_table2["independent_variables"][0]["values"]]},
{'E_hi': [float(var["high"]) for var in hd_115140_table2["independent_variables"][0]["values"]]}
]
+
[
##--- array of dicts, each has one syst contribution values for all energy bins
{depvar["header"]["name"]: [float(delem["value"]) for delem in depvar["values"]]}
for depvar in hd_115140_table2["dependent_variables"]
]
for key, val in idict.items()
}
)
hd_115140_table2_df
Out[9]:
In [10]:
##
## read statistical covariance
##
with open(os.path.join(myfolder, "bare_cross-section_statistical_covariance.yaml"), 'r') as stream:
hd_115140_table3 = yaml.load(stream, Loader=yaml.CBaseLoader)
##
## create data frame using dict of named columns
##
hd_115140_table3_df = pd.DataFrame(
{
'E_lo_i': [float(var["low"]) for var in hd_115140_table3["independent_variables"][0]["values"]],
'E_hi_i': [float(var["high"]) for var in hd_115140_table3["independent_variables"][0]["values"]],
'E_lo_j': [float(var["low"]) for var in hd_115140_table3["independent_variables"][1]["values"]],
'E_hi_j': [float(var["high"]) for var in hd_115140_table3["independent_variables"][1]["values"]],
'cov': [float(var["value"]) for var in hd_115140_table3["dependent_variables"][0]["values"]]
}
)
hd_115140_table3_df
Out[10]:
In [ ]: