Download scripts/preflight.py from OneScience-Group/RFdiffusion: direct link, hf CLI and curl.
- Browser
- Download file 3.31 kB
-
https://huggingface.co/OneScience-Group/RFdiffusion/resolve/main/scripts/preflight.py
- Command line
-
hf download hf://OneScience-Group/RFdiffusion/scripts/preflight.py
-
curl -L -o preflight.py https://huggingface.co/OneScience-Group/RFdiffusion/resolve/main/scripts/preflight.py
3.31 kB
| #!/usr/bin/env python | |
| """Preflight checks for the standalone RFdiffusion package.""" | |
| from __future__ import annotations | |
| import argparse | |
| import importlib | |
| import os | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| os.environ.setdefault("DGLBACKEND", "pytorch") | |
| REQUIRED_WEIGHTS = [ | |
| "ActiveSite_ckpt.pt", | |
| "Base_ckpt.pt", | |
| "Base_epoch8_ckpt.pt", | |
| "Complex_Fold_base_ckpt.pt", | |
| "Complex_base_ckpt.pt", | |
| "Complex_beta_ckpt.pt", | |
| "InpaintSeq_Fold_ckpt.pt", | |
| "InpaintSeq_ckpt.pt", | |
| "RF_structure_prediction_weights.pt", | |
| ] | |
| REQUIRED_FILES = [ | |
| "README.md", | |
| "configuration.json", | |
| "config/inference/base.yaml", | |
| "config/inference/symmetry.yaml", | |
| "scripts/run_inference.py", | |
| "examples/input_pdbs/1qys.pdb", | |
| "examples/input_pdbs/1YCR.pdb", | |
| ] | |
| TEXT_SUFFIXES = {".py", ".yaml", ".yml", ".json", ".md", ".sh", ".txt", ".tsv"} | |
| GENERATED_DIRS = {"outputs", ".cache", "logs"} | |
| def fail(message: str) -> None: | |
| print(f"[FAIL] {message}") | |
| raise SystemExit(1) | |
| def check_required_files() -> None: | |
| missing = [rel for rel in REQUIRED_FILES if not (ROOT / rel).is_file()] | |
| if missing: | |
| fail("Missing required files: " + ", ".join(missing)) | |
| print(f"[OK] Required files present: {len(REQUIRED_FILES)}") | |
| def check_weights(strict: bool) -> None: | |
| missing = [] | |
| bad = [] | |
| for name in REQUIRED_WEIGHTS: | |
| path = ROOT / "weight" / name | |
| if not path.is_file(): | |
| missing.append(str(path.relative_to(ROOT))) | |
| continue | |
| if strict: | |
| size = path.stat().st_size | |
| head = path.read_bytes()[:128] | |
| lfs_marker = b"version https://git-lfs" + b".github.com" | |
| if size < 1024 * 1024 or head.startswith(lfs_marker): | |
| bad.append(f"{path.relative_to(ROOT)} ({size} bytes)") | |
| if missing: | |
| fail("Missing weight files: " + ", ".join(missing)) | |
| if bad: | |
| fail("Invalid or placeholder weight files: " + ", ".join(bad)) | |
| mode = "strict" if strict else "basic" | |
| print(f"[OK] Weight files present ({mode}): {len(REQUIRED_WEIGHTS)}") | |
| def iter_text_files(): | |
| for path in ROOT.rglob("*"): | |
| if not path.is_file(): | |
| continue | |
| if GENERATED_DIRS.intersection(path.relative_to(ROOT).parts): | |
| continue | |
| if path.name == ".gitattributes" or path.suffix in TEXT_SUFFIXES: | |
| yield path | |
| def check_imports() -> None: | |
| sys.path.insert(0, str(ROOT)) | |
| modules = [ | |
| "onescience.utils.rfdiffusion.inference.utils", | |
| "onescience.utils.rfdiffusion.inference.model_runners", | |
| "onescience.models.rfdiffusion.RoseTTAFoldModel", | |
| "onescience.models.se3_transformer", | |
| ] | |
| for name in modules: | |
| importlib.import_module(name) | |
| print(f"[OK] Strict imports succeeded: {len(modules)} modules") | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--strict-weights", action="store_true") | |
| parser.add_argument("--strict-imports", action="store_true") | |
| args = parser.parse_args() | |
| check_required_files() | |
| check_weights(strict=args.strict_weights) | |
| if args.strict_imports: | |
| check_imports() | |
| print("[OK] RFdiffusion standalone preflight passed") | |
| if __name__ == "__main__": | |
| main() | |