33< head >
44 < meta charset ="utf-8 " />
55 < meta name ="viewport " content ="width=device-width, initial-scale=1 " />
6- < title > PerturbDiff-Refactor Interactive Explorer</ title >
6+ < title > PerturbDiff Interactive Explorer</ title >
77 < link rel ="preconnect " href ="https://fonts.googleapis.com " />
88 < link rel ="preconnect " href ="https://fonts.gstatic.com " crossorigin />
99 < link href ="https://fonts.googleapis.com/css2?family=Manrope:wght@400;600;700;800&family=JetBrains+Mono:wght@400;600&display=swap " rel ="stylesheet " />
334334 < div class ="app ">
335335 < header class ="topbar ">
336336 < div >
337- < div class ="title "> PerturbDiff-Refactor Interactive Explorer</ div >
338- < div class ="sub "> A clickable code map for `new_configs ` + `new_src `</ div >
337+ < div class ="title "> PerturbDiff Interactive Explorer</ div >
338+ < div class ="sub "> A clickable code map for `configs ` + `src `</ div >
339339 </ div >
340340 < div class ="badge "> Keyboard: `f` focus search, `[`/`]` flow step</ div >
341341 </ header >
@@ -384,120 +384,120 @@ <h2>Architecture Graph</h2>
384384 < div class ="tags " id ="detail-tags "> </ div >
385385 < div class ="desc " id ="detail-desc "> This area shows the module's role in the repository.</ div >
386386 < div class ="code "> < pre id ="detail-code "> // waiting for selection...</ pre > </ div >
387- < div class ="footnote " id ="detail-footnote "> Tip: start with `new_src /apps/rawdata/rawdata_diffusion_training.py`.</ div >
387+ < div class ="footnote " id ="detail-footnote "> Tip: start with `src /apps/rawdata/rawdata_diffusion_training.py`.</ div >
388388 </ aside >
389389 </ main >
390390 </ div >
391391
392392 < script >
393393 const FILES = [
394394 {
395- path : "new_configs /rawdata_diffusion_training.yaml" ,
396- group : "new_configs " ,
395+ path : "configs /rawdata_diffusion_training.yaml" ,
396+ group : "configs " ,
397397 title : "Training Top Config" ,
398398 tags : [ "hydra" , "entry" , "training" ] ,
399399 desc : "Top-level training config that composes trainer/lightning/data/model/optimization/path/cov_encoding." ,
400400 code : `defaults:\n - trainer: base\n - lightning: base\n - data: pbmc\n - optimization: base\n - path: trixie_path\n - model: base\n - cov_encoding: trixie_onehot\nrun_name: pbmc_from_scratch`
401401 } ,
402402 {
403- path : "new_configs /rawdata_diffusion_sampling.yaml" ,
404- group : "new_configs " ,
403+ path : "configs /rawdata_diffusion_sampling.yaml" ,
404+ group : "configs " ,
405405 title : "Sampling Top Config" ,
406406 tags : [ "hydra" , "entry" , "sampling" ] ,
407407 desc : "Top-level sampling config defining checkpoint/device/DDIM-DDPM and output format." ,
408408 code : `model_checkpoint_path: null\ndevice: auto\nsampling:\n use_ddim: true\n num_sampled_batches: 4\n batch_size: ${ "${..optimization.micro_batch_size}" } \n output_format: npz`
409409 } ,
410410 {
411- path : "new_configs /model/base.yaml" ,
412- group : "new_configs " ,
411+ path : "configs /model/base.yaml" ,
412+ group : "configs " ,
413413 title : "Model Base" ,
414414 tags : [ "cross_dit" , "diffusion" , "hyperparams" ] ,
415415 desc : "Base Cross-DiT parameters and diffusion process hyperparameters." ,
416416 code : `model_type: Cross_DiT\ninput_dim: 2000\ndit_depth: 8\ndit_num_heads: 8\nsteps: 1000\nnoise_schedule: linear\np_drop_cond: 0.5\np_drop_control: 0.5`
417417 } ,
418418 {
419- path : "new_src /apps/rawdata/rawdata_diffusion_training.py" ,
420- group : "new_src /apps" ,
419+ path : "src /apps/rawdata/rawdata_diffusion_training.py" ,
420+ group : "src /apps" ,
421421 title : "Training Entrypoint" ,
422422 tags : [ "hydra.main" , "trainer.fit" , "pipeline" ] ,
423423 desc : "Training entrypoint: resolve cfg -> setup trainer/datamodule/model -> run_pipeline." ,
424424 code : `@hydra.main(..., config_name=\"rawdata_diffusion_training\")\ndef main(cfg):\n trainer = setup_trainer(cfg)\n datamodule = build_datamodule(cfg, logger)\n populate_covariate_cfg(cfg, datamodule)\n model = build_model(cfg, logger, datamodule)\n run_pipeline(trainer, model, datamodule, cfg, logger)`
425425 } ,
426426 {
427- path : "new_src /apps/training/training_runtime.py" ,
428- group : "new_src /apps/training" ,
427+ path : "src /apps/training/training_runtime.py" ,
428+ group : "src /apps/training" ,
429429 title : "Trainer Runtime" ,
430430 tags : [ "pytorch_lightning" , "callbacks" , "strategy" ] ,
431431 desc : "Builds the Lightning Trainer from config with callbacks/logger/profiler/strategy." ,
432432 code : `def setup_trainer(cfg):\n trainer_logger = hydra.utils.instantiate(cfg.lightning.logger)\n strategy = resolve_trainer_strategy(cfg)\n callbacks = build_callbacks(cfg, trainer_logger)\n return pl.Trainer(**cfg.trainer, callbacks=callbacks, strategy=strategy, logger=trainer_logger)`
433433 } ,
434434 {
435- path : "new_src /apps/training/training_datamodule_builder.py" ,
436- group : "new_src /apps/training" ,
435+ path : "src /apps/training/training_datamodule_builder.py" ,
436+ group : "src /apps/training" ,
437437 title : "Datamodule Builder" ,
438438 tags : [ "dataset selection" , "cov dicts" ] ,
439439 desc : "Selects DataModule subclass by data_name and writes pert/celltype/batch dictionaries back to cfg.cov_encoding." ,
440440 code : `if cfg.data.data_name == \"PBMCFinetune\":\n datamodule = PBMCPerturbationDataModule(...)\n...\ncfg.cov_encoding.num_pert = len(datamodule.pert_dict)\ncfg.model.dataset_dict = datamodule.original_dataset_name_list`
441441 } ,
442442 {
443- path : "new_src /apps/training/training_pipeline.py" ,
444- group : "new_src /apps/training" ,
443+ path : "src /apps/training/training_pipeline.py" ,
444+ group : "src /apps/training" ,
445445 title : "Training Pipeline" ,
446446 tags : [ "fit" , "validate" , "checkpoint" ] ,
447447 desc : "Controls fit/validate execution order, including final checkpoint saving." ,
448448 code : `if not validate_only:\n trainer.fit(...)\n trainer.save_checkpoint(cfg.save_dir_path, weights_only=True)\n trainer.validate(..., ckpt_path=\"best\")\nelse:\n trainer.validate(..., ckpt_path=cfg.model.ckpt_path)`
449449 } ,
450450 {
451- path : "new_src /apps/rawdata/rawdata_diffusion_sampling.py" ,
452- group : "new_src /apps" ,
451+ path : "src /apps/rawdata/rawdata_diffusion_sampling.py" ,
452+ group : "src /apps" ,
453453 title : "Sampling Entrypoint" ,
454454 tags : [ "sampling" , "checkpoint" , "generation" ] ,
455455 desc : "Sampling entrypoint: build datamodule, load_from_checkpoint, and run generate_samples." ,
456456 code : `@hydra.main(..., config_name=\"rawdata_diffusion_sampling\")\ndef main(cfg):\n datamodule = build_sampling_datamodule(cfg, logger)\n model = load_sampling_model(cfg, logger, datamodule)\n truths, samples, trajectories, decoded = generate_samples(...)`
457457 } ,
458458 {
459- path : "new_src /apps/sampling/sampling_generation.py" ,
460- group : "new_src /apps/sampling" ,
459+ path : "src /apps/sampling/sampling_generation.py" ,
460+ group : "src /apps/sampling" ,
461461 title : "Sampling Generation Core" ,
462462 tags : [ "DDIM" , "DDPM" , "h5ad" ] ,
463463 desc : "Core sampling loop: read dataloader -> build self_condition -> run DDIM/DDPM -> aggregate and evaluate." ,
464464 code : `sample_fn, kwargs = resolve_sampling_runner(cfg, diffusion, use_ddim)\nsample, traj = sample_fn(model.model, shape, self_condition=self_condition, **kwargs)\nr2_metric = r2_score(truth_np.mean(0), sample_np.mean(0))\nsave_adata(pred_adata, true_adata, cfg, logger)`
465465 } ,
466466 {
467- path : "new_src /data/data_module/data_module.py" ,
468- group : "new_src /data" ,
467+ path : "src /data/data_module/data_module.py" ,
468+ group : "src /data" ,
469469 title : "DataModule Hierarchy" ,
470470 tags : [ "dataloader" , "split" , "sampler" ] ,
471471 desc : "DataModule inheritance chain and dataloader construction; switches split_pbmc/split_tahoe100m/split_cellxgene by scenario." ,
472472 code : `class PretrainingDataModule(pl.LightningDataModule): ...\nclass PBMCPerturbationDataModule(PretrainingDataModule): ...\nclass Tahoe100mPerturbationDataModule(PBMCPerturbationDataModule): ...\nclass PerturbationPretrainingDataModule(CellxGeneDataModule): ...`
473473 } ,
474474 {
475- path : "new_src /models/lightning/lightning_module.py" ,
476- group : "new_src /models/lightning" ,
475+ path : "src /models/lightning/lightning_module.py" ,
476+ group : "src /models/lightning" ,
477477 title : "PlModel" ,
478478 tags : [ "training_step" , "validation_step" , "optimizers" ] ,
479479 desc : "Training model wrapper: covariate encoding, loss computation, logging, and optimizer/scheduler config." ,
480480 code : `loss_dict = self._compute_loss(batch)\nloss = (loss_dict[\"loss\"] * loss_dict[\"weights\"]).mean()\nself.log_data(...)\n...\nreturn [opt_main], [{\"scheduler\": sched_main, \"interval\": \"step\"}]`
481481 } ,
482482 {
483- path : "new_src /models/lightning/lightning_factories.py" ,
484- group : "new_src /models/lightning" ,
483+ path : "src /models/lightning/lightning_factories.py" ,
484+ group : "src /models/lightning" ,
485485 title : "Factories" ,
486486 tags : [ "create_diffusion" , "model_init" , "sampler" ] ,
487487 desc : "Model and diffusion factories: Cross_DiT initialization, beta schedule, and schedule sampler." ,
488488 code : `def model_init_fn(model_cfg):\n if model_type == \"cross_dit\": return Cross_DiT(model_cfg)\n\ndef create_diffusion(model_cfg):\n betas = get_named_beta_schedule(...)\n return GaussianDiffusion(...)`
489489 } ,
490490 {
491- path : "new_src /models/diffusion/diffusion_core.py" ,
492- group : "new_src /models/diffusion" ,
491+ path : "src /models/diffusion/diffusion_core.py" ,
492+ group : "src /models/diffusion" ,
493493 title : "GaussianDiffusion Core" ,
494494 tags : [ "q_sample" , "posterior" , "math" ] ,
495495 desc : "Core diffusion math object defining key transforms like q_sample and q_posterior." ,
496496 code : `class GaussianDiffusion(...):\n def q_sample(self, x_start, t, noise=None):\n return sqrt(alpha_bar)*x_start + sqrt(1-alpha_bar)*noise`
497497 } ,
498498 {
499- path : "new_src /models/diffusion/diffusion_training.py" ,
500- group : "new_src /models/diffusion" ,
499+ path : "src /models/diffusion/diffusion_training.py" ,
500+ group : "src /models/diffusion" ,
501501 title : "Diffusion Training Mixin" ,
502502 tags : [ "training_losses" , "MMD" , "self-conditioning" ] ,
503503 desc : "Training loss composition: Cross-DiT dual-branch outputs + MSE/MMD + condition dropping + self-conditioning." ,
@@ -524,7 +524,7 @@ <h2>Architecture Graph</h2>
524524
525525 const GRAPH = {
526526 nodes : [
527- { id : "cfg" , x : 36 , y : 24 , w : 140 , h : 40 , label : "new_configs " } ,
527+ { id : "cfg" , x : 36 , y : 24 , w : 140 , h : 40 , label : "configs " } ,
528528 { id : "apps" , x : 222 , y : 24 , w : 170 , h : 40 , label : "apps/rawdata" } ,
529529 { id : "runtime" , x : 430 , y : 24 , w : 170 , h : 40 , label : "training_runtime" } ,
530530 { id : "data" , x : 222 , y : 126 , w : 170 , h : 40 , label : "data_module" } ,
@@ -551,11 +551,11 @@ <h2>Architecture Graph</h2>
551551 ]
552552 } ,
553553 baseMapping : {
554- runtime : "new_src /apps/training/training_runtime.py" ,
555- data : "new_src /data/data_module/data_module.py" ,
556- lightning : "new_src /models/lightning/lightning_module.py" ,
557- diff : "new_src /models/diffusion/diffusion_training.py" ,
558- sampling : "new_src /apps/sampling/sampling_generation.py"
554+ runtime : "src /apps/training/training_runtime.py" ,
555+ data : "src /data/data_module/data_module.py" ,
556+ lightning : "src /models/lightning/lightning_module.py" ,
557+ diff : "src /models/diffusion/diffusion_training.py" ,
558+ sampling : "src /apps/sampling/sampling_generation.py"
559559 }
560560 } ;
561561
@@ -807,21 +807,21 @@ <h2>Architecture Graph</h2>
807807
808808 function relatedPaths ( path ) {
809809 const map = {
810- "new_src /apps/rawdata/rawdata_diffusion_training.py" : [
811- "new_src /apps/training/training_runtime.py" ,
812- "new_src /apps/training/training_datamodule_builder.py" ,
813- "new_src /apps/training/training_pipeline.py"
810+ "src /apps/rawdata/rawdata_diffusion_training.py" : [
811+ "src /apps/training/training_runtime.py" ,
812+ "src /apps/training/training_datamodule_builder.py" ,
813+ "src /apps/training/training_pipeline.py"
814814 ] ,
815- "new_src /models/lightning/lightning_module.py" : [
816- "new_src /models/lightning/lightning_factories.py" ,
817- "new_src /models/diffusion/diffusion_training.py"
815+ "src /models/lightning/lightning_module.py" : [
816+ "src /models/lightning/lightning_factories.py" ,
817+ "src /models/diffusion/diffusion_training.py"
818818 ] ,
819- "new_src /apps/sampling/sampling_generation.py" : [
820- "new_src /apps/rawdata/rawdata_diffusion_sampling.py" ,
821- "new_src /apps/sampling/sampling_io.py"
819+ "src /apps/sampling/sampling_generation.py" : [
820+ "src /apps/rawdata/rawdata_diffusion_sampling.py" ,
821+ "src /apps/sampling/sampling_io.py"
822822 ]
823823 } ;
824- return map [ path ] || [ "new_configs /model/base.yaml" , "new_configs /optimization/base.yaml" ] ;
824+ return map [ path ] || [ "configs /model/base.yaml" , "configs /optimization/base.yaml" ] ;
825825 }
826826
827827 function renderFlow ( ) {
@@ -841,14 +841,14 @@ <h2>Architecture Graph</h2>
841841 const flow = FLOWS [ state . flowType ] ;
842842 const step = flow [ state . flowStep ] ;
843843 const hintMap = {
844- "Resolve Hydra" : "new_configs /rawdata_diffusion_training.yaml" ,
845- "Setup Trainer" : "new_src /apps/training/training_runtime.py" ,
846- "Build Data" : "new_src /data/data_module/data_module.py" ,
847- "Build Model" : "new_src /models/lightning/lightning_module.py" ,
848- "Run Pipeline" : "new_src /apps/training/training_pipeline.py" ,
849- "Load CKPT" : "new_src /apps/sampling/sampling_setup.py" ,
850- "Generate" : "new_src /apps/sampling/sampling_generation.py" ,
851- "Save h5ad" : "new_src /apps/sampling/sampling_io.py"
844+ "Resolve Hydra" : "configs /rawdata_diffusion_training.yaml" ,
845+ "Setup Trainer" : "src /apps/training/training_runtime.py" ,
846+ "Build Data" : "src /data/data_module/data_module.py" ,
847+ "Build Model" : "src /models/lightning/lightning_module.py" ,
848+ "Run Pipeline" : "src /apps/training/training_pipeline.py" ,
849+ "Load CKPT" : "src /apps/sampling/sampling_setup.py" ,
850+ "Generate" : "src /apps/sampling/sampling_generation.py" ,
851+ "Save h5ad" : "src /apps/sampling/sampling_io.py"
852852 } ;
853853 const target = hintMap [ step . title ] ;
854854 if ( target && byPath ( target ) ) {
@@ -865,12 +865,12 @@ <h2>Architecture Graph</h2>
865865 archEl . appendChild ( defs ) ;
866866 const nodePathByFlow = {
867867 training : {
868- cfg : "new_configs /rawdata_diffusion_training.yaml" ,
869- apps : "new_src /apps/rawdata/rawdata_diffusion_training.py"
868+ cfg : "configs /rawdata_diffusion_training.yaml" ,
869+ apps : "src /apps/rawdata/rawdata_diffusion_training.py"
870870 } ,
871871 sampling : {
872- cfg : "new_configs /rawdata_diffusion_sampling.yaml" ,
873- apps : "new_src /apps/rawdata/rawdata_diffusion_sampling.py"
872+ cfg : "configs /rawdata_diffusion_sampling.yaml" ,
873+ apps : "src /apps/rawdata/rawdata_diffusion_sampling.py"
874874 }
875875 } ;
876876 const activeEdges = GRAPH . edgesByFlow [ state . flowType ] || GRAPH . edgesByFlow . training ;
0 commit comments