Spaces:
Running on Zero
Running on Zero
| """AF2 self-consistency evaluation.""" | |
| from pathlib import Path | |
| import pandas as pd | |
| from caliby import CalibyModel | |
| from file_utils import _write_zip_from_dir | |
| def _run_self_consistency( | |
| model: CalibyModel, | |
| df: pd.DataFrame, | |
| out_pdb_list: list[str], | |
| out_dir: Path, | |
| download_stem: str, | |
| ) -> tuple[str, dict[str, str]]: | |
| from caliby.eval.eval_utils.folding_utils import clear_mem_torch | |
| clear_mem_torch() | |
| sc_out_dir = out_dir / "self_consistency" | |
| id_to_metrics = model.self_consistency_eval(out_pdb_list, out_dir=str(sc_out_dir)) | |
| for metric in ["sc_ca_rmsd", "avg_ca_plddt", "tmalign_score"]: | |
| df[metric] = [id_to_metrics.get(Path(path).stem, {}).get(metric, float("nan")) for path in out_pdb_list] | |
| af2_pdb_data = {} | |
| for path in out_pdb_list: | |
| af2_path = sc_out_dir / "struct_preds" / f"af2_{Path(path).stem}.pdb" | |
| if af2_path.exists(): | |
| af2_pdb_data[Path(path).stem] = af2_path.read_text() | |
| sc_zip_path = _write_zip_from_dir(sc_out_dir, download_stem, "_self_consistency.zip") | |
| return sc_zip_path, af2_pdb_data | |