mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
better docstrings (#144)
* first example of returns statement in docstring * added a some return statements for pandas API * last return statements in pandas input * added returns to bdio docstrings * few returns statements added to docstring * finished docstrings for hadrons submodule * also finished docstrings for json submodule * finished misc submodule * added returns in docstrings in openqQCD * made some cosmetic chanes to dostrings * added return nad return statement in docstring * linting * Improved docstrings of mpm, fits, roots, misc to have return statements returns added for misc.py returns added for mpm.py reutrns added for fits.py * linting... * Some polishing of docstrings
This commit is contained in:
parent
b9cdebd442
commit
26447d658c
14 changed files with 276 additions and 6 deletions
|
@ -26,6 +26,11 @@ def epsilon_tensor(i, j, k):
|
||||||
"""Rank-3 epsilon tensor
|
"""Rank-3 epsilon tensor
|
||||||
|
|
||||||
Based on https://codegolf.stackexchange.com/a/160375
|
Based on https://codegolf.stackexchange.com/a/160375
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
elem : int
|
||||||
|
Element (i,j,k) of the epsilon tensor of rank 3
|
||||||
"""
|
"""
|
||||||
test_set = set((i, j, k))
|
test_set = set((i, j, k))
|
||||||
if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))):
|
if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))):
|
||||||
|
@ -38,6 +43,12 @@ def epsilon_tensor_rank4(i, j, k, o):
|
||||||
"""Rank-4 epsilon tensor
|
"""Rank-4 epsilon tensor
|
||||||
|
|
||||||
Extension of https://codegolf.stackexchange.com/a/160375
|
Extension of https://codegolf.stackexchange.com/a/160375
|
||||||
|
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
elem : int
|
||||||
|
Element (i,j,k,o) of the epsilon tensor of rank 4
|
||||||
"""
|
"""
|
||||||
test_set = set((i, j, k, o))
|
test_set = set((i, j, k, o))
|
||||||
if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))):
|
if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))):
|
||||||
|
|
|
@ -129,6 +129,11 @@ def least_squares(x, y, func, priors=None, silent=False, **kwargs):
|
||||||
If True, a quantile-quantile plot of the fit result is generated (default False).
|
If True, a quantile-quantile plot of the fit result is generated (default False).
|
||||||
num_grad : bool
|
num_grad : bool
|
||||||
Use numerical differentation instead of automatic differentiation to perform the error propagation (default False).
|
Use numerical differentation instead of automatic differentiation to perform the error propagation (default False).
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
output : Fit_result
|
||||||
|
Parameters and information on the fitted result.
|
||||||
'''
|
'''
|
||||||
if priors is not None:
|
if priors is not None:
|
||||||
return _prior_fit(x, y, func, priors, silent=silent, **kwargs)
|
return _prior_fit(x, y, func, priors, silent=silent, **kwargs)
|
||||||
|
@ -180,7 +185,12 @@ def total_least_squares(x, y, func, silent=False, **kwargs):
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
Based on the orthogonal distance regression module of scipy
|
Based on the orthogonal distance regression module of scipy.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
output : Fit_result
|
||||||
|
Parameters and information on the fitted result.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
output = Fit_result()
|
output = Fit_result()
|
||||||
|
@ -668,6 +678,11 @@ def fit_lin(x, y, **kwargs):
|
||||||
a list of Obs, where the dvalues of the Obs are used as xerror for the fit.
|
a list of Obs, where the dvalues of the Obs are used as xerror for the fit.
|
||||||
y : list
|
y : list
|
||||||
List of Obs, the dvalues of the Obs are used as yerror for the fit.
|
List of Obs, the dvalues of the Obs are used as yerror for the fit.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
fit_parameters : list[Obs]
|
||||||
|
LIist of fitted observables.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def f(a, x):
|
def f(a, x):
|
||||||
|
@ -687,6 +702,10 @@ def fit_lin(x, y, **kwargs):
|
||||||
def qqplot(x, o_y, func, p):
|
def qqplot(x, o_y, func, p):
|
||||||
"""Generates a quantile-quantile plot of the fit result which can be used to
|
"""Generates a quantile-quantile plot of the fit result which can be used to
|
||||||
check if the residuals of the fit are gaussian distributed.
|
check if the residuals of the fit are gaussian distributed.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
residuals = []
|
residuals = []
|
||||||
|
@ -711,7 +730,12 @@ def qqplot(x, o_y, func, p):
|
||||||
|
|
||||||
|
|
||||||
def residual_plot(x, y, func, fit_res):
|
def residual_plot(x, y, func, fit_res):
|
||||||
""" Generates a plot which compares the fit to the data and displays the corresponding residuals"""
|
"""Generates a plot which compares the fit to the data and displays the corresponding residuals
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
|
"""
|
||||||
sorted_x = sorted(x)
|
sorted_x = sorted(x)
|
||||||
xstart = sorted_x[0] - 0.5 * (sorted_x[1] - sorted_x[0])
|
xstart = sorted_x[0] - 0.5 * (sorted_x[1] - sorted_x[0])
|
||||||
xstop = sorted_x[-1] + 0.5 * (sorted_x[-1] - sorted_x[-2])
|
xstop = sorted_x[-1] + 0.5 * (sorted_x[-1] - sorted_x[-2])
|
||||||
|
@ -741,7 +765,13 @@ def residual_plot(x, y, func, fit_res):
|
||||||
|
|
||||||
|
|
||||||
def error_band(x, func, beta):
|
def error_band(x, func, beta):
|
||||||
"""Returns the error band for an array of sample values x, for given fit function func with optimized parameters beta."""
|
"""Calculate the error band for an array of sample values x, for given fit function func with optimized parameters beta.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
err : np.array(Obs)
|
||||||
|
Error band for an array of sample values x
|
||||||
|
"""
|
||||||
cov = covariance(beta)
|
cov = covariance(beta)
|
||||||
if np.any(np.abs(cov - cov.T) > 1000 * np.finfo(np.float64).eps):
|
if np.any(np.abs(cov - cov.T) > 1000 * np.finfo(np.float64).eps):
|
||||||
warnings.warn("Covariance matrix is not symmetric within floating point precision", RuntimeWarning)
|
warnings.warn("Covariance matrix is not symmetric within floating point precision", RuntimeWarning)
|
||||||
|
@ -765,6 +795,10 @@ def ks_test(objects=None):
|
||||||
----------
|
----------
|
||||||
objects : list
|
objects : list
|
||||||
List of fit results to include in the analysis (optional).
|
List of fit results to include in the analysis (optional).
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if objects is None:
|
if objects is None:
|
||||||
|
|
|
@ -18,6 +18,11 @@ def read_ADerrors(file_path, bdio_path='./libbdio.so', **kwargs):
|
||||||
----------
|
----------
|
||||||
file_path -- path to the bdio file
|
file_path -- path to the bdio file
|
||||||
bdio_path -- path to the shared bdio library libbdio.so (default ./libbdio.so)
|
bdio_path -- path to the shared bdio library libbdio.so (default ./libbdio.so)
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
data : List[Obs]
|
||||||
|
Extracted data
|
||||||
"""
|
"""
|
||||||
bdio = ctypes.cdll.LoadLibrary(bdio_path)
|
bdio = ctypes.cdll.LoadLibrary(bdio_path)
|
||||||
|
|
||||||
|
@ -169,6 +174,11 @@ def write_ADerrors(obs_list, file_path, bdio_path='./libbdio.so', **kwargs):
|
||||||
----------
|
----------
|
||||||
file_path -- path to the bdio file
|
file_path -- path to the bdio file
|
||||||
bdio_path -- path to the shared bdio library libbdio.so (default ./libbdio.so)
|
bdio_path -- path to the shared bdio library libbdio.so (default ./libbdio.so)
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
success : int
|
||||||
|
returns 0 is successful
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for obs in obs_list:
|
for obs in obs_list:
|
||||||
|
@ -314,6 +324,11 @@ def read_mesons(file_path, bdio_path='./libbdio.so', **kwargs):
|
||||||
Fixed step size between two measurements (default 1)
|
Fixed step size between two measurements (default 1)
|
||||||
alternative_ensemble_name : str
|
alternative_ensemble_name : str
|
||||||
Manually overwrite ensemble name
|
Manually overwrite ensemble name
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
data : dict
|
||||||
|
Extracted meson data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
start = kwargs.get('start', 1)
|
start = kwargs.get('start', 1)
|
||||||
|
|
|
@ -106,6 +106,11 @@ def create_pobs_string(obsl, name, spec='', origin='', symbol=[], enstag=None):
|
||||||
A list of symbols that describe the observables to be written. May be empty.
|
A list of symbols that describe the observables to be written. May be empty.
|
||||||
enstag : str
|
enstag : str
|
||||||
Enstag that is written to pobs. If None, the ensemble name is used.
|
Enstag that is written to pobs. If None, the ensemble name is used.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
xml_str : str
|
||||||
|
XML formatted string of the input data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
od = {}
|
od = {}
|
||||||
|
@ -196,6 +201,10 @@ def write_pobs(obsl, fname, name, spec='', origin='', symbol=[], enstag=None, gz
|
||||||
Enstag that is written to pobs. If None, the ensemble name is used.
|
Enstag that is written to pobs. If None, the ensemble name is used.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, the output is a gzipped xml. If False, the output is an xml file.
|
If True, the output is a gzipped xml. If False, the output is an xml file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
pobsstring = create_pobs_string(obsl, name, spec, origin, symbol, enstag)
|
pobsstring = create_pobs_string(obsl, name, spec, origin, symbol, enstag)
|
||||||
|
|
||||||
|
@ -305,6 +314,14 @@ def read_pobs(fname, full_output=False, gz=True, separator_insertion=None):
|
||||||
by "|%s" % (separator_insertion) when constructing the names of the replica.
|
by "|%s" % (separator_insertion) when constructing the names of the replica.
|
||||||
int: Insert the separator "|" at the position given by separator_insertion.
|
int: Insert the separator "|" at the position given by separator_insertion.
|
||||||
None (default): Replica names remain unchanged.
|
None (default): Replica names remain unchanged.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
res : list[Obs]
|
||||||
|
Imported data
|
||||||
|
or
|
||||||
|
res : dict
|
||||||
|
Imported data and meta-data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not fname.endswith('.xml') and not fname.endswith('.gz'):
|
if not fname.endswith('.xml') and not fname.endswith('.gz'):
|
||||||
|
@ -402,6 +419,14 @@ def import_dobs_string(content, noempty=False, full_output=False, separator_inse
|
||||||
True (default): separator "|" is inserted after len(ensname), assuming that the
|
True (default): separator "|" is inserted after len(ensname), assuming that the
|
||||||
ensemble name is a prefix to the replica name.
|
ensemble name is a prefix to the replica name.
|
||||||
None or False: No separator is inserted.
|
None or False: No separator is inserted.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
res : list[Obs]
|
||||||
|
Imported data
|
||||||
|
or
|
||||||
|
res : dict
|
||||||
|
Imported data and meta-data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
root = et.fromstring(content)
|
root = et.fromstring(content)
|
||||||
|
@ -567,6 +592,14 @@ def read_dobs(fname, noempty=False, full_output=False, gz=True, separator_insert
|
||||||
True (default): separator "|" is inserted after len(ensname), assuming that the
|
True (default): separator "|" is inserted after len(ensname), assuming that the
|
||||||
ensemble name is a prefix to the replica name.
|
ensemble name is a prefix to the replica name.
|
||||||
None or False: No separator is inserted.
|
None or False: No separator is inserted.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
res : list[Obs]
|
||||||
|
Imported data
|
||||||
|
or
|
||||||
|
res : dict
|
||||||
|
Imported data and meta-data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not fname.endswith('.xml') and not fname.endswith('.gz'):
|
if not fname.endswith('.xml') and not fname.endswith('.gz'):
|
||||||
|
@ -669,6 +702,11 @@ def create_dobs_string(obsl, name, spec='dobs v1.0', origin='', symbol=[], who=N
|
||||||
enstags : dict
|
enstags : dict
|
||||||
Provide alternative enstag for ensembles in the form enstags = {ename: enstag}
|
Provide alternative enstag for ensembles in the form enstags = {ename: enstag}
|
||||||
Otherwise, the ensemble name is used.
|
Otherwise, the ensemble name is used.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
xml_str : str
|
||||||
|
XML string generated from the data
|
||||||
"""
|
"""
|
||||||
if enstags is None:
|
if enstags is None:
|
||||||
enstags = {}
|
enstags = {}
|
||||||
|
@ -857,6 +895,10 @@ def write_dobs(obsl, fname, name, spec='dobs v1.0', origin='', symbol=[], who=No
|
||||||
Otherwise, the ensemble name is used.
|
Otherwise, the ensemble name is used.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, the output is a gzipped XML. If False, the output is a XML file.
|
If True, the output is a gzipped XML. If False, the output is a XML file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
if enstags is None:
|
if enstags is None:
|
||||||
enstags = {}
|
enstags = {}
|
||||||
|
|
|
@ -74,6 +74,11 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', idl=None, gammas=Non
|
||||||
two-point function. The gammas argument dominateds over meson.
|
two-point function. The gammas argument dominateds over meson.
|
||||||
idl : range
|
idl : range
|
||||||
If specified only configurations in the given range are read in.
|
If specified only configurations in the given range are read in.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
corr : Corr
|
||||||
|
Correlator of the source sink combination in question.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
files, idx = _get_files(path, filestem, idl)
|
files, idx = _get_files(path, filestem, idl)
|
||||||
|
@ -129,6 +134,11 @@ def read_DistillationContraction_hd5(path, ens_id, diagrams=["direct"], idl=None
|
||||||
List of strings of the diagrams to extract, e.g. ["direct", "box", "cross"].
|
List of strings of the diagrams to extract, e.g. ["direct", "box", "cross"].
|
||||||
idl : range
|
idl : range
|
||||||
If specified only configurations in the given range are read in.
|
If specified only configurations in the given range are read in.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : dict
|
||||||
|
extracted DistillationContration data
|
||||||
"""
|
"""
|
||||||
|
|
||||||
res_dict = {}
|
res_dict = {}
|
||||||
|
@ -258,6 +268,11 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, idl=None):
|
||||||
name of the ensemble, required for internal bookkeeping
|
name of the ensemble, required for internal bookkeeping
|
||||||
idl : range
|
idl : range
|
||||||
If specified only configurations in the given range are read in.
|
If specified only configurations in the given range are read in.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : Npr_matrix
|
||||||
|
read Cobs-matrix
|
||||||
"""
|
"""
|
||||||
|
|
||||||
files, idx = _get_files(path, filestem, idl)
|
files, idx = _get_files(path, filestem, idl)
|
||||||
|
@ -298,6 +313,11 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None):
|
||||||
name of the ensemble, required for internal bookkeeping
|
name of the ensemble, required for internal bookkeeping
|
||||||
idl : range
|
idl : range
|
||||||
If specified only configurations in the given range are read in.
|
If specified only configurations in the given range are read in.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result_dict: dict[Npr_matrix]
|
||||||
|
extracted Bilinears
|
||||||
"""
|
"""
|
||||||
|
|
||||||
files, idx = _get_files(path, filestem, idl)
|
files, idx = _get_files(path, filestem, idl)
|
||||||
|
@ -354,6 +374,11 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]):
|
||||||
If specified only configurations in the given range are read in.
|
If specified only configurations in the given range are read in.
|
||||||
vertices : list
|
vertices : list
|
||||||
Vertex functions to be extracted.
|
Vertex functions to be extracted.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result_dict : dict
|
||||||
|
extracted fourquark matrizes
|
||||||
"""
|
"""
|
||||||
|
|
||||||
files, idx = _get_files(path, filestem, idl)
|
files, idx = _get_files(path, filestem, idl)
|
||||||
|
|
|
@ -29,6 +29,11 @@ def create_json_string(ol, description='', indent=1):
|
||||||
indent : int
|
indent : int
|
||||||
Specify the indentation level of the json file. None or 0 is permissible and
|
Specify the indentation level of the json file. None or 0 is permissible and
|
||||||
saves disk space.
|
saves disk space.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
json_string : str
|
||||||
|
String for export to .json(.gz) file
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _gen_data_d_from_list(ol):
|
def _gen_data_d_from_list(ol):
|
||||||
|
@ -212,6 +217,10 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True):
|
||||||
saves disk space.
|
saves disk space.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, the output is a gzipped json. If False, the output is a json file.
|
If True, the output is a gzipped json. If False, the output is a json file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
Null
|
||||||
"""
|
"""
|
||||||
|
|
||||||
jsonstring = create_json_string(ol, description, indent)
|
jsonstring = create_json_string(ol, description, indent)
|
||||||
|
@ -247,6 +256,17 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
full_output : bool
|
full_output : bool
|
||||||
If True, a dict containing auxiliary information and the data is returned.
|
If True, a dict containing auxiliary information and the data is returned.
|
||||||
If False, only the data is returned.
|
If False, only the data is returned.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : list[Obs]
|
||||||
|
reconstructed list of observables from the json string
|
||||||
|
or
|
||||||
|
result : Obs
|
||||||
|
only one observable if the list only has one entry
|
||||||
|
or
|
||||||
|
result : dict
|
||||||
|
if full_output=True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _gen_obsd_from_datad(d):
|
def _gen_obsd_from_datad(d):
|
||||||
|
@ -447,6 +467,17 @@ def import_json_string(json_string, verbose=True, full_output=False):
|
||||||
full_output : bool
|
full_output : bool
|
||||||
If True, a dict containing auxiliary information and the data is returned.
|
If True, a dict containing auxiliary information and the data is returned.
|
||||||
If False, only the data is returned.
|
If False, only the data is returned.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : list[Obs]
|
||||||
|
reconstructed list of observables from the json string
|
||||||
|
or
|
||||||
|
result : Obs
|
||||||
|
only one observable if the list only has one entry
|
||||||
|
or
|
||||||
|
result : dict
|
||||||
|
if full_output=True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return _parse_json_dict(json.loads(json_string), verbose, full_output)
|
return _parse_json_dict(json.loads(json_string), verbose, full_output)
|
||||||
|
@ -469,6 +500,17 @@ def load_json(fname, verbose=True, gz=True, full_output=False):
|
||||||
full_output : bool
|
full_output : bool
|
||||||
If True, a dict containing auxiliary information and the data is returned.
|
If True, a dict containing auxiliary information and the data is returned.
|
||||||
If False, only the data is returned.
|
If False, only the data is returned.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : list[Obs]
|
||||||
|
reconstructed list of observables from the json string
|
||||||
|
or
|
||||||
|
result : Obs
|
||||||
|
only one observable if the list only has one entry
|
||||||
|
or
|
||||||
|
result : dict
|
||||||
|
if full_output=True
|
||||||
"""
|
"""
|
||||||
if not fname.endswith('.json') and not fname.endswith('.gz'):
|
if not fname.endswith('.json') and not fname.endswith('.gz'):
|
||||||
fname += '.json'
|
fname += '.json'
|
||||||
|
@ -586,6 +628,10 @@ def dump_dict_to_json(od, fname, description='', indent=1, reps='DICTOBS', gz=Tr
|
||||||
Specify the structure of the placeholder in exported dict to be reps[0-9]+.
|
Specify the structure of the placeholder in exported dict to be reps[0-9]+.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, the output is a gzipped json. If False, the output is a json file.
|
If True, the output is a gzipped json. If False, the output is a json file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not isinstance(od, dict):
|
if not isinstance(od, dict):
|
||||||
|
@ -683,6 +729,14 @@ def load_json_dict(fname, verbose=True, gz=True, full_output=False, reps='DICTOB
|
||||||
If False, only the data is returned.
|
If False, only the data is returned.
|
||||||
reps : str
|
reps : str
|
||||||
Specify the structure of the placeholder in imported dict to be reps[0-9]+.
|
Specify the structure of the placeholder in imported dict to be reps[0-9]+.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
data : Obs / list / Corr
|
||||||
|
Read data
|
||||||
|
or
|
||||||
|
data : dict
|
||||||
|
Read data and meta-data
|
||||||
"""
|
"""
|
||||||
indata = load_json(fname, verbose=verbose, gz=gz, full_output=True)
|
indata = load_json(fname, verbose=verbose, gz=gz, full_output=True)
|
||||||
description = indata['description']['description']
|
description = indata['description']['description']
|
||||||
|
|
|
@ -7,7 +7,7 @@ from ..obs import Obs
|
||||||
|
|
||||||
|
|
||||||
def read_pbp(path, prefix, **kwargs):
|
def read_pbp(path, prefix, **kwargs):
|
||||||
"""Read pbp format from given folder structure. Returns a list of length nrw
|
"""Read pbp format from given folder structure.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
@ -15,6 +15,11 @@ def read_pbp(path, prefix, **kwargs):
|
||||||
list which contains the first config to be read for each replicum
|
list which contains the first config to be read for each replicum
|
||||||
r_stop : list
|
r_stop : list
|
||||||
list which contains the last config to be read for each replicum
|
list which contains the last config to be read for each replicum
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : list[Obs]
|
||||||
|
list of observables read
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ls = []
|
ls = []
|
||||||
|
|
|
@ -42,6 +42,11 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs):
|
||||||
files performed if given.
|
files performed if given.
|
||||||
print_err : bool
|
print_err : bool
|
||||||
Print additional information that is useful for debugging.
|
Print additional information that is useful for debugging.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
rwms : Obs
|
||||||
|
Reweighting factors read
|
||||||
"""
|
"""
|
||||||
known_oqcd_versions = ['1.4', '1.6', '2.0']
|
known_oqcd_versions = ['1.4', '1.6', '2.0']
|
||||||
if not (version in known_oqcd_versions):
|
if not (version in known_oqcd_versions):
|
||||||
|
@ -285,6 +290,11 @@ def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, **kwar
|
||||||
1, it is assumed that this is due to thermalization and the first measurement belongs
|
1, it is assumed that this is due to thermalization and the first measurement belongs
|
||||||
to the first config (default).
|
to the first config (default).
|
||||||
If False: The config numbers are assumed to be traj_number // difference
|
If False: The config numbers are assumed to be traj_number // difference
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
t0 : Obs
|
||||||
|
Extracted t0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ls = []
|
ls = []
|
||||||
|
@ -565,6 +575,11 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="openQCD", **kwargs):
|
||||||
for version=='sfqcd' If False, the Wilson flow is used.
|
for version=='sfqcd' If False, the Wilson flow is used.
|
||||||
integer_charge : bool
|
integer_charge : bool
|
||||||
If True, the charge is rounded towards the nearest integer on each config.
|
If True, the charge is rounded towards the nearest integer on each config.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : Obs
|
||||||
|
Read topological charge
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return _read_flow_obs(path, prefix, c, dtr_cnfg=dtr_cnfg, version=version, obspos=0, **kwargs)
|
return _read_flow_obs(path, prefix, c, dtr_cnfg=dtr_cnfg, version=version, obspos=0, **kwargs)
|
||||||
|
@ -689,6 +704,11 @@ def _read_flow_obs(path, prefix, c, dtr_cnfg=1, version="openQCD", obspos=0, sum
|
||||||
for version=='sfqcd' If False, the Wilson flow is used.
|
for version=='sfqcd' If False, the Wilson flow is used.
|
||||||
integer_charge : bool
|
integer_charge : bool
|
||||||
If True, the charge is rounded towards the nearest integer on each config.
|
If True, the charge is rounded towards the nearest integer on each config.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : Obs
|
||||||
|
flow observable specified
|
||||||
"""
|
"""
|
||||||
known_versions = ["openQCD", "sfqcd"]
|
known_versions = ["openQCD", "sfqcd"]
|
||||||
|
|
||||||
|
@ -923,6 +943,11 @@ def qtop_projection(qtop, target=0):
|
||||||
Topological charge.
|
Topological charge.
|
||||||
target : int
|
target : int
|
||||||
Specifies the topological sector to be reweighted to (default 0)
|
Specifies the topological sector to be reweighted to (default 0)
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
reto : Obs
|
||||||
|
projection to the topological charge sector defined by target
|
||||||
"""
|
"""
|
||||||
if qtop.reweighted:
|
if qtop.reweighted:
|
||||||
raise Exception('You can not use a reweighted observable for reweighting!')
|
raise Exception('You can not use a reweighted observable for reweighting!')
|
||||||
|
@ -977,6 +1002,11 @@ def read_qtop_sector(path, prefix, c, target=0, **kwargs):
|
||||||
Zeuthen_flow : bool
|
Zeuthen_flow : bool
|
||||||
(optional) If True, the Zeuthen flow is used for Qtop. Only possible
|
(optional) If True, the Zeuthen flow is used for Qtop. Only possible
|
||||||
for version=='sfqcd' If False, the Wilson flow is used.
|
for version=='sfqcd' If False, the Wilson flow is used.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
reto : Obs
|
||||||
|
projection to the topological charge sector defined by target
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not isinstance(target, int):
|
if not isinstance(target, int):
|
||||||
|
|
|
@ -22,6 +22,10 @@ def to_sql(df, table_name, db, if_exists='fail', gz=True, **kwargs):
|
||||||
How to behave if table already exists. Options 'fail', 'replace', 'append'.
|
How to behave if table already exists. Options 'fail', 'replace', 'append'.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True the json strings are gzipped.
|
If True the json strings are gzipped.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
se_df = _serialize_df(df, gz=gz)
|
se_df = _serialize_df(df, gz=gz)
|
||||||
con = sqlite3.connect(db)
|
con = sqlite3.connect(db)
|
||||||
|
@ -41,6 +45,11 @@ def read_sql(sql, db, auto_gamma=False, **kwargs):
|
||||||
auto_gamma : bool
|
auto_gamma : bool
|
||||||
If True applies the gamma_method to all imported Obs objects with the default parameters for
|
If True applies the gamma_method to all imported Obs objects with the default parameters for
|
||||||
the error analysis. Default False.
|
the error analysis. Default False.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
data : pandas.DataFrame
|
||||||
|
Dataframe with the content of the sqlite database.
|
||||||
"""
|
"""
|
||||||
con = sqlite3.connect(db)
|
con = sqlite3.connect(db)
|
||||||
extract_df = pd.read_sql(sql, con, **kwargs)
|
extract_df = pd.read_sql(sql, con, **kwargs)
|
||||||
|
@ -62,6 +71,10 @@ def dump_df(df, fname, gz=True):
|
||||||
Filename of the output file.
|
Filename of the output file.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, the output is a gzipped csv file. If False, the output is a csv file.
|
If True, the output is a gzipped csv file. If False, the output is a csv file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
out = _serialize_df(df, gz=False)
|
out = _serialize_df(df, gz=False)
|
||||||
|
|
||||||
|
@ -88,6 +101,11 @@ def load_df(fname, auto_gamma=False, gz=True):
|
||||||
the error analysis. Default False.
|
the error analysis. Default False.
|
||||||
gz : bool
|
gz : bool
|
||||||
If True, assumes that data is gzipped. If False, assumes JSON file.
|
If True, assumes that data is gzipped. If False, assumes JSON file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
data : pandas.DataFrame
|
||||||
|
Dataframe with the content of the sqlite database.
|
||||||
"""
|
"""
|
||||||
if not fname.endswith('.csv') and not fname.endswith('.gz'):
|
if not fname.endswith('.csv') and not fname.endswith('.gz'):
|
||||||
fname += '.csv'
|
fname += '.csv'
|
||||||
|
|
|
@ -55,9 +55,15 @@ def read_sfcf(path, prefix, name, quarks='.*', corr_type='bi', noffset=0, wf=0,
|
||||||
files: list
|
files: list
|
||||||
list of files to be read per replica, default is all.
|
list of files to be read per replica, default is all.
|
||||||
for non-compact output format, hand the folders to be read here.
|
for non-compact output format, hand the folders to be read here.
|
||||||
check_configs:
|
check_configs: list[list[int]]
|
||||||
list of list of supposed configs, eg. [range(1,1000)]
|
list of list of supposed configs, eg. [range(1,1000)]
|
||||||
for one replicum with 1000 configs
|
for one replicum with 1000 configs
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result: list[Obs]
|
||||||
|
list of Observables with length T, observable per timeslice.
|
||||||
|
bb-type correlators have length 1.
|
||||||
"""
|
"""
|
||||||
if kwargs.get('im'):
|
if kwargs.get('im'):
|
||||||
im = 1
|
im = 1
|
||||||
|
|
|
@ -10,6 +10,11 @@ def check_idl(idl, che):
|
||||||
idl of the current replicum
|
idl of the current replicum
|
||||||
che : list
|
che : list
|
||||||
list of configurations to be checked against
|
list of configurations to be checked against
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
miss_str : str
|
||||||
|
string with integers of which idls are missing
|
||||||
"""
|
"""
|
||||||
missing = []
|
missing = []
|
||||||
for c in che:
|
for c in che:
|
||||||
|
@ -22,3 +27,4 @@ def check_idl(idl, che):
|
||||||
for i in missing[1:]:
|
for i in missing[1:]:
|
||||||
miss_str += "," + str(i)
|
miss_str += "," + str(i)
|
||||||
print(miss_str)
|
print(miss_str)
|
||||||
|
return miss_str
|
||||||
|
|
|
@ -14,6 +14,10 @@ def dump_object(obj, name, **kwargs):
|
||||||
name of the file
|
name of the file
|
||||||
path : str
|
path : str
|
||||||
specifies a custom path for the file (default '.')
|
specifies a custom path for the file (default '.')
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
None
|
||||||
"""
|
"""
|
||||||
if 'path' in kwargs:
|
if 'path' in kwargs:
|
||||||
file_name = kwargs.get('path') + '/' + name + '.p'
|
file_name = kwargs.get('path') + '/' + name + '.p'
|
||||||
|
@ -30,6 +34,11 @@ def load_object(path):
|
||||||
----------
|
----------
|
||||||
path : str
|
path : str
|
||||||
path to the file
|
path to the file
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
object : Obs
|
||||||
|
Loaded Object
|
||||||
"""
|
"""
|
||||||
with open(path, 'rb') as file:
|
with open(path, 'rb') as file:
|
||||||
return pickle.load(file)
|
return pickle.load(file)
|
||||||
|
@ -48,6 +57,11 @@ def pseudo_Obs(value, dvalue, name, samples=1000):
|
||||||
name of the ensemble for which the Obs is to be generated.
|
name of the ensemble for which the Obs is to be generated.
|
||||||
samples: int
|
samples: int
|
||||||
number of samples for the Obs (default 1000).
|
number of samples for the Obs (default 1000).
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
res : Obs
|
||||||
|
Generated Observable
|
||||||
"""
|
"""
|
||||||
if dvalue <= 0.0:
|
if dvalue <= 0.0:
|
||||||
return Obs([np.zeros(samples) + value], [name])
|
return Obs([np.zeros(samples) + value], [name])
|
||||||
|
@ -83,6 +97,11 @@ def gen_correlated_data(means, cov, name, tau=0.5, samples=1000):
|
||||||
every dataset.
|
every dataset.
|
||||||
samples : int
|
samples : int
|
||||||
number of samples to be generated for each observable.
|
number of samples to be generated for each observable.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
corr_obs : list[Obs]
|
||||||
|
Generated observable list
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert len(means) == cov.shape[-1]
|
assert len(means) == cov.shape[-1]
|
||||||
|
|
|
@ -21,6 +21,11 @@ def matrix_pencil_method(corrs, k=1, p=None, **kwargs):
|
||||||
matrix pencil parameter which filters noise. The optimal value is expected between
|
matrix pencil parameter which filters noise. The optimal value is expected between
|
||||||
len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is
|
len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is
|
||||||
to len(data)/2 but could possibly suppress more noise (default len(data)//2).
|
to len(data)/2 but could possibly suppress more noise (default len(data)//2).
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
energy_levels : list[Obs]
|
||||||
|
Extracted energy levels
|
||||||
"""
|
"""
|
||||||
if isinstance(corrs[0], Obs):
|
if isinstance(corrs[0], Obs):
|
||||||
data = [corrs]
|
data = [corrs]
|
||||||
|
|
|
@ -24,7 +24,7 @@ def find_root(d, func, guess=1.0, **kwargs):
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
Obs
|
res : Obs
|
||||||
`Obs` valued root of the function.
|
`Obs` valued root of the function.
|
||||||
'''
|
'''
|
||||||
d_val = np.vectorize(lambda x: x.value)(np.array(d))
|
d_val = np.vectorize(lambda x: x.value)(np.array(d))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue