add customtFilter

This commit is contained in:
Justus Kuhlmann 2026-03-24 09:24:12 +01:00
commit 3fd557f3ee
Signed by: jkuhl
GPG key ID: 00ED992DD79B85A6

View file

@ -6,9 +6,10 @@ import numpy as np
from .input.implementations import codes
from .tools import k2m, get_db_file
from .tracker import get
from typing import Any, Optional
from typing import Any, Optional, Union
from pathlib import Path
import datetime as dt
from collections.abc import Callable
def _project_lookup_by_alias(db: Path, alias: str) -> str:
@ -251,22 +252,31 @@ def sfcf_filter(results: pd.DataFrame, **kwargs: Any) -> pd.DataFrame:
return results.drop(drops)
def openQCD_filter(results:pd.DataFrame, **kwargs: Any) -> pd.DataFrame:
return results
def find_record(path: Path, ensemble: str, correlator_name: str, code: str, project: Optional[str]=None, parameters: Optional[str]=None,
created_before: Optional[str]=None, created_after: Optional[str]=None, updated_before: Optional[str]=None, updated_after: Optional[str]=None, revision: Optional[str]=None, **kwargs: Any) -> pd.DataFrame:
created_before: Optional[str]=None, created_after: Optional[str]=None, updated_before: Optional[str]=None, updated_after: Optional[str]=None,
revision: Optional[str]=None,
customFilter: Optional[Callable[[pd.DataFrame], pd.DataFrame]] = None,
**kwargs: Any) -> pd.DataFrame:
db_file = get_db_file(path)
db = path / db_file
if code not in codes:
raise ValueError("Code " + code + "unknown, take one of the following:" + ", ".join(codes))
get(path, db_file)
results = _db_lookup(db, ensemble, correlator_name,code, project, parameters=parameters)
if any(arg is not None for arg in [created_before, created_after, updated_before, updated_after]):
if any([arg is not None for arg in [created_before, created_after, updated_before, updated_after]]):
results = _time_filter(results, created_before, created_after, updated_before, updated_after)
if customFilter is not None:
results = customFilter(results)
if code == "sfcf":
results = sfcf_filter(results, **kwargs)
elif code == "openQCD":
pass
results = openQCD_filter(results, **kwargs)
else:
raise Exception
raise ValueError(f"Code {code} is not known.")
print("Found " + str(len(results)) + " result" + ("s" if len(results)>1 else ""))
return results.reset_index()