progress-music-generation / regenerate_processed.py
cpyang's picture
Upload folder using huggingface_hub
5a32398 verified
Raw
History Blame Contribute Delete
2.2 kB
"""
regenerate_processed.py – Trigger SchenkerDiff dataset preprocessing.
Just constructs SchenkerGraphDataModule, which invokes
SchenkerDiffHeteroGraphData.__init__ β†’ PyG Dataset._process()
β†’ self.process(), writing all <idx>_processed.pt files to disk.
No training, no GPU, no checkpoint writes.
"""
import os
import sys
import time
from pathlib import Path
SCHENKER_ROOT = Path("/mnt/c/Users/Peter/OneDrive/Desktop/Duke/Music ML Research/Diffusion/SchenkerDiff")
DIFFUSION_ROOT = SCHENKER_ROOT.parent
# The dataset's process() method uses glob paths like
# ../../../SchenkerDiff/{directory}/**/*
# That requires cwd to be three levels deep under Diffusion/ β€” which is what
# Hydra's default output dir layout produces. Re-create that shape.
WORK_DIR = DIFFUSION_ROOT / "outputs" / "_regen" / "work"
WORK_DIR.mkdir(parents=True, exist_ok=True)
os.chdir(WORK_DIR)
sys.path.insert(0, str(SCHENKER_ROOT))
# Inference / training code transitively imports spectre_utils β†’ graph_tool,
# which can fail with the libgomp mismatch. Stub them; we only need the dataset.
import types
gt = types.ModuleType("graph_tool"); gt.all = types.ModuleType("graph_tool.all")
sys.modules.setdefault("graph_tool", gt)
sys.modules.setdefault("graph_tool.all", gt.all)
from hydra import compose, initialize_config_dir
from src.datasets.schenker_dataset import SchenkerGraphDataModule
def main() -> None:
print(f"[regen] starting at {time.strftime('%H:%M:%S')}")
cfg_dir = str(SCHENKER_ROOT / "configs")
with initialize_config_dir(config_dir=cfg_dir, version_base="1.3"):
cfg = compose(config_name="config")
processed_dir = SCHENKER_ROOT / cfg.dataset.datadir / "processed"
n_before = len(list(processed_dir.glob("*_processed.pt"))) if processed_dir.exists() else 0
print(f"[regen] processed_dir={processed_dir}")
print(f"[regen] {n_before} processed files present before regeneration")
t0 = time.time()
SchenkerGraphDataModule(cfg)
elapsed = time.time() - t0
n_after = len(list(processed_dir.glob("*_processed.pt")))
print(f"[regen] DONE in {elapsed:.1f}s β†’ {n_after} processed files now present")
if __name__ == "__main__":
main()