From a8fd618d022ab58bf5bdedbf1992eb3d75098260 Mon Sep 17 00:00:00 2001 From: Justus Kuhlmann Date: Mon, 12 May 2025 20:54:08 +0000 Subject: [PATCH] use np.isclose for quark-masses --- corrlib/find.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/corrlib/find.py b/corrlib/find.py index 1d6f93d..88aa410 100644 --- a/corrlib/find.py +++ b/corrlib/find.py @@ -4,6 +4,7 @@ import os import json import pandas as pd import numpy as np +from .input.implementations import codes # this will implement the search functionality @@ -30,7 +31,7 @@ def _project_lookup_by_id(db, uuid): return results -def _db_lookup(db, ensemble, correlator_name, project=None, code=None, parameters=None, created_before=None, created_after=None, updated_before=None, updated_after=None, revision=None): +def _db_lookup(db, ensemble, correlator_name,code, project=None, parameters=None, created_before=None, created_after=None, updated_before=None, updated_after=None, revision=None): project_str = project search_expr = f"SELECT * FROM 'backlogs' WHERE name = '{correlator_name}' AND ensemble = '{ensemble}'" @@ -66,7 +67,7 @@ def filter_results(results, **kwargs): continue if 'quark_masses' in kwargs: quark_masses = kwargs['quark_masses'] - if (quark_masses[0] != param['quarks'][0]['mass'] or quark_masses[1] != param['quarks'][1]['mass']) and (quark_masses[0] != param['quarks'][1]['mass'] or quark_masses[1] != param['quarks'][0]['mass']): + if (not np.isclose(quark_masses[0], param['quarks'][0]['mass']) or not np.isclose(quark_masses[1], param['quarks'][1]['mass'])): drops.append(ind) continue if 'quark_thetas' in kwargs: @@ -89,12 +90,15 @@ def filter_results(results, **kwargs): return results.drop(drops) -def find_record(path, ensemble, correlator_name, project=None, code=None, parameters=None, created_before=None, created_after=None, updated_before=None, updated_after=None, revision=None, **kwargs): +def find_record(path, ensemble, correlator_name, code, project=None, parameters=None, created_before=None, created_after=None, updated_before=None, updated_after=None, revision=None, **kwargs): db = path + '/backlogger.db' + if code not in codes: + raise ValueError("Code " + code + "unknown, take one of the following:" + ", ".join(codes)) if os.path.exists(db): dl.get(db, dataset=path) - results = _db_lookup(db, ensemble, correlator_name, project, code=code, parameters=parameters, created_before=created_before, created_after=created_after, updated_before=updated_before, updated_after=updated_after, revision=revision) - results = filter_results(results, **kwargs) + results = _db_lookup(db, ensemble, correlator_name,code, project, parameters=parameters, created_before=created_before, created_after=created_after, updated_before=updated_before, updated_after=updated_after, revision=revision) + if code == "sfcf": + results = sfcf_filter(results, **kwargs) print("Found " + str(len(results)) + " results") return results.reset_index()