Compare commits

..

No commits in common. "4516ca3149cac8b2f0420903c41576b471b7ed8f" and "b50ffc4c6b898de970e8ded6c2287c96a6c6389b" have entirely different histories.

2 changed files with 9 additions and 48 deletions

View file

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

View file

@ -70,6 +70,7 @@ def test_db_lookup(tmp_path: Path) -> None:
c.execute("INSERT INTO backlogs (name, ensemble, code, path, project, parameters, parameter_file, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))", c.execute("INSERT INTO backlogs (name, ensemble, code, path, project, parameters, parameter_file, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))",
(corr, ensemble, code, meas_path, uuid, pars, parameter_file)) (corr, ensemble, code, meas_path, uuid, pars, parameter_file))
conn.commit() conn.commit()
conn.close()
results = find._db_lookup(db, ensemble, corr, code) results = find._db_lookup(db, ensemble, corr, code)
assert len(results) == 1 assert len(results) == 1
@ -87,38 +88,8 @@ def test_db_lookup(tmp_path: Path) -> None:
assert len(results) == 1 assert len(results) == 1
results = find._db_lookup(db, ensemble, corr, code, parameters = "{par_A: 3.0, par_B: 4.0}") results = find._db_lookup(db, ensemble, corr, code, parameters = "{par_A: 3.0, par_B: 4.0}")
assert results.empty assert results.empty
#results = find._db_lookup(db, ensemble, corr, code, project, parameters, created_before, created_after, updated_before, updated_after)
corr = "g_A" #results = find._db_lookup(db, ensemble, corr, code, project, parameters, created_before, created_after, updated_before, updated_after)
ensemble = "SF_A"
code = "openQCD"
meas_path = "archive/SF_A/f_A/Project_A.json.gz::asdfasdfasdf"
uuid = "Project_A"
pars = "{par_A: 3.0, par_B: 4.0}"
parameter_file = "projects/Project_A/myinput.in"
c.execute("INSERT INTO backlogs (name, ensemble, code, path, project, parameters, parameter_file, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))",
(corr, ensemble, code, meas_path, uuid, pars, parameter_file))
conn.commit()
corr = "f_A"
results = find._db_lookup(db, ensemble, corr, code)
assert len(results) == 1
results = find._db_lookup(db, "SF_B", corr, code)
assert results.empty
results = find._db_lookup(db, ensemble, "g_A", code)
assert len(results) == 1
results = find._db_lookup(db, ensemble, corr, "sfcf")
assert results.empty
results = find._db_lookup(db, ensemble, corr, code, project = "Project_A")
assert len(results) == 1
results = find._db_lookup(db, ensemble, "g_A", code, project = "Project_A")
assert len(results) == 1
results = find._db_lookup(db, ensemble, corr, code, project = "Project_B")
assert results.empty
results = find._db_lookup(db, ensemble, "g_A", code, project = "Project_B")
assert results.empty
results = find._db_lookup(db, ensemble, corr, code, parameters = pars)
assert results.empty
results = find._db_lookup(db, ensemble, "g_A", code, parameters = "{par_A: 3.0, par_B: 4.0}")
assert len(results) == 1
conn.close()