wilson.wcxf.converters.eos module
Functions to convert WCxf files to EOS parameter files.
"""Functions to convert WCxf files to EOS parameter files.""" from collections import OrderedDict import yaml import glob import os import re def get_sm_wcs(eos_parameter_dir): """Read SM contributions to EOS Wilson coefficients from the EOS installation parameter directory and return them as a dictionary.""" all_wcs = {} yamlfiles = glob.glob(os.path.join(eos_parameter_dir, '*.yaml')) for yamlfile in yamlfiles: with open(yamlfile) as f: wcs = yaml.safe_load(f) meta = wcs.get('@metadata@', {}) if 'wcxf-relevant' in meta and meta['wcxf-relevant']: del wcs['@metadata@'] all_wcs.update(wcs) return all_wcs def get_eos_np(sm_key, wc): """Get the NP contribution to an EOS Wilson coefficient identified by the name `sm_key` from a wcxf.WC instance `wc`""" if sm_key in wc.dict: return wc.dict[sm_key].real elif r'Re{' in sm_key: # if the EOS name contains "Re" k2 = re.sub(r'Re\{([^\}]+)\}', r'\1', sm_key) # name of the coeff in the basis file if k2 in wc.dict: return wc.dict[k2].real elif k2.replace('lnu', 'enue') in wc.dict or k2.replace('lnu', 'munumu') in wc.dict: # for charged-current WCs, check if the WCxf file is LFU, else raise an error if wc.dict.get(k2.replace('lnu', 'enue'), 0) != wc.dict.get(k2.replace('lnu', 'munumu'), 0): raise ValueError("Found lepton flavour non-universal charged-current coefficients") return wc.dict.get(k2.replace('lnu', 'enue'), 0).real elif r'Im{' in sm_key: # if the EOS name contains "Im" k2 = re.sub(r'Im\{([^\}]+)\}', r'\1', sm_key) # name of the coeff in the basis file if k2 in wc.dict: return wc.dict[k2].imag elif k2.replace('lnu', 'enue') in wc.dict or k2.replace('lnu', 'munumu') in wc.dict: # for charged-current WCs, check if the WCxf file is LFU, else raise an error if wc.dict.get(k2.replace('lnu', 'enue'), 0) != wc.dict.get(k2.replace('lnu', 'munumu'), 0): raise ValueError("Found lepton flavour non-universal charged-current coefficients") return wc.dict.get(k2.replace('lnu', 'enue'), 0).imag return 0 def wcxf2eos(wc, sm_wc_dict): """From a wcxf.WC instance wc and a dictionary of EOS Wilson coefficient SM contributions, return a dictionary of EOS Wilson coefficient parameter values including SM and NP contributions.""" eosd = OrderedDict() for k, v in sm_wc_dict.items(): sm = v['central'] np = get_eos_np(k, wc) eosd[k] = OrderedDict() for q in ['central', 'min', 'max']: eosd[k][q] = sm + np return eosd
Functions
def get_eos_np(
sm_key, wc)
Get the NP contribution to an EOS Wilson coefficient identified
by the name sm_key
from a wcxf.WC instance wc
def get_eos_np(sm_key, wc): """Get the NP contribution to an EOS Wilson coefficient identified by the name `sm_key` from a wcxf.WC instance `wc`""" if sm_key in wc.dict: return wc.dict[sm_key].real elif r'Re{' in sm_key: # if the EOS name contains "Re" k2 = re.sub(r'Re\{([^\}]+)\}', r'\1', sm_key) # name of the coeff in the basis file if k2 in wc.dict: return wc.dict[k2].real elif k2.replace('lnu', 'enue') in wc.dict or k2.replace('lnu', 'munumu') in wc.dict: # for charged-current WCs, check if the WCxf file is LFU, else raise an error if wc.dict.get(k2.replace('lnu', 'enue'), 0) != wc.dict.get(k2.replace('lnu', 'munumu'), 0): raise ValueError("Found lepton flavour non-universal charged-current coefficients") return wc.dict.get(k2.replace('lnu', 'enue'), 0).real elif r'Im{' in sm_key: # if the EOS name contains "Im" k2 = re.sub(r'Im\{([^\}]+)\}', r'\1', sm_key) # name of the coeff in the basis file if k2 in wc.dict: return wc.dict[k2].imag elif k2.replace('lnu', 'enue') in wc.dict or k2.replace('lnu', 'munumu') in wc.dict: # for charged-current WCs, check if the WCxf file is LFU, else raise an error if wc.dict.get(k2.replace('lnu', 'enue'), 0) != wc.dict.get(k2.replace('lnu', 'munumu'), 0): raise ValueError("Found lepton flavour non-universal charged-current coefficients") return wc.dict.get(k2.replace('lnu', 'enue'), 0).imag return 0
def get_sm_wcs(
eos_parameter_dir)
Read SM contributions to EOS Wilson coefficients from the EOS installation parameter directory and return them as a dictionary.
def get_sm_wcs(eos_parameter_dir): """Read SM contributions to EOS Wilson coefficients from the EOS installation parameter directory and return them as a dictionary.""" all_wcs = {} yamlfiles = glob.glob(os.path.join(eos_parameter_dir, '*.yaml')) for yamlfile in yamlfiles: with open(yamlfile) as f: wcs = yaml.safe_load(f) meta = wcs.get('@metadata@', {}) if 'wcxf-relevant' in meta and meta['wcxf-relevant']: del wcs['@metadata@'] all_wcs.update(wcs) return all_wcs
def wcxf2eos(
wc, sm_wc_dict)
From a wcxf.WC instance wc and a dictionary of EOS Wilson coefficient SM contributions, return a dictionary of EOS Wilson coefficient parameter values including SM and NP contributions.
def wcxf2eos(wc, sm_wc_dict): """From a wcxf.WC instance wc and a dictionary of EOS Wilson coefficient SM contributions, return a dictionary of EOS Wilson coefficient parameter values including SM and NP contributions.""" eosd = OrderedDict() for k, v in sm_wc_dict.items(): sm = v['central'] np = get_eos_np(k, wc) eosd[k] = OrderedDict() for q in ['central', 'min', 'max']: eosd[k][q] = sm + np return eosd