perform
Version: v0.1
Project type: theory + simulation
Target: journal-grade large-scale parameter scan for delayed active transport in gated complex environments
Build a reproducible large-scale computation pipeline for a delayed active generalized Langevin model in gated geometries, with the scientific goal of testing the following central claim:
In complex gated environments, memory improves active transport only within a productive window where medium memory and control delay match the gate-crossing dynamics; the fastest transport regime is generally different from the most dissipation-efficient regime.
This document is the single control file for:
There exists an internal ridge in parameter space, rather than a boundary optimum, such that transport efficiency is maximized when
[ \Pi_m + \Pi_f \sim O(1), \qquad \Pi_p \gtrsim 1 ]
where (\Pi_m) is the memory-to-gate time ratio, (\Pi_f) is the feedback-delay-to-gate time ratio, and (\Pi_p) is the persistence-to-gate-length ratio.
The parameter set that minimizes mean first-passage time (MFPT) is generically different from the one that maximizes dissipation-normalized transport efficiency.
Outside the productive-memory window, transport degrades primarily because of prolonged wall trapping, revisit cycles, and stale steering, rather than a simple reduction in instantaneous speed.
A weak co-flow can enlarge the productive window, while strong flow can collapse it by over-biasing trajectories toward wall hugging or wrong-gate overshoot.
The same nondimensional control law should approximately organize results across several geometry families.
State variables per particle:
Dynamics:
Primary observables:
Use a reference geometry and baseline dynamics (no_memory, no_feedback, U=0) to define:
Recommended dimensionless groups:
[ \Pi_p = \frac{\ell_p}{\ell_g} = \frac{v_0 / D_r}{\ell_g} ]
[ \Pi_m = \frac{\tau_{\mathrm{mem}}}{\tau_g} ]
[ \Pi_f = \frac{\tau_f}{\tau_g} ]
[ \Pi_U = \frac{U}{v_0} ]
[ \Pi_W = \frac{w_{\mathrm{gate}}}{L} ]
[ \Pi_B = \frac{\delta_{\mathrm{wall}}}{L} ]
Optional secondary controls:
| Symbol | Meaning | Baseline choice | Notes |
|---|---|---|---|
L | system size | 1.0 | nondimensionalized geometry size |
v0 | self-propulsion speed | 1.0 | defines active advection scale |
Dr | rotational diffusion | 0.2–2.0 | set via target persistence ratio |
gamma0 | instantaneous drag | 1.0 | baseline drag scale |
gamma1 | memory drag strength | 0–10 | scan separately or encode into tau_mem |
tau_v | viscoelastic relaxation | 1e-2–1e2 | broad log scan |
tau_f | feedback delay | 1e-2–1e2 | broad log scan |
U | background flow speed | -1.5 to 1.5 | linear scan relative to v0 |
delta_wall | soft wall range | 0.005–0.05 | geometry dependent |
kf | alignment gain | 0–10 | used for ablation and sensitivity |
Tmax | max run time | 20–50 tau_g | adaptive by regime |
dt | time step | min(timescale)/100 initially | verify via convergence |
| Parameter | Symbol | Range | Grid style | Initial points | Refined points |
|---|---|---|---|---|---|
| Persistence ratio | Pi_p | 1e-1 to 1e2 | log | 16 | 30–40 local |
| Memory ratio | Pi_m | 1e-2 to 1e2 | log | 20 | 40–60 local |
| Feedback ratio | Pi_f | 1e-2 to 1e2 | log | 20 | 40–60 local |
| Flow ratio | Pi_U | -1.5 to 1.5 | linear | 13 | 25 local |
| Gate width ratio | Pi_W | 0.02 to 0.25 | linear/log hybrid | 6 | 10 |
| Wall range ratio | Pi_B | 0.005 to 0.05 | linear | 5 | 8 |
| Memory strength | chi_m | 0 to 1 | linear | 6 | 10 |
| Phase | Goal | Parameters varied | Samples per point | Method |
|---|---|---|---|---|
| A | numerical validation | dt, Tmax, seed count | 1e3–1e4 | deterministic convergence tests |
| B | baseline ablations | Pi_p, Pi_m, Pi_f, Pi_U on sparse set | 1e3 | compare full, no_memory, no_feedback, no_flow |
| C | coarse global scan | Pi_p, Pi_m, Pi_f, Pi_U | 5e2–2e3 | Sobol / Latin hypercube |
| D | adaptive refinement | around ridges, phase boundaries, ranking reversals | up to 1e4 | local densification + bootstrap stopping |
| E | rare-event supplement | low-success regions | effective 1e5–1e6 | weighted ensemble / splitting |
| F | geometry transfer | selected geometry families | 2e3–1e4 | ridge-following slices |
Compute (\ell_g) and (\tau_g) from the reference model:
Output:
reference_scales.jsonbaseline_transition_stats.parquetAcceptance:
Fit a reduced-state description:
Target outputs:
Acceptance:
Derive and verify low-order corrections to crossing rate and alignment phase lag.
Output:
Characterize stale-control regime through revisit rate, trap-time growth, and alignment decorrelation.
Output:
Recommended repository layout:
project_root/
├─ README.md
├─ pyproject.toml
├─ configs/
│ ├─ geometries/
│ │ ├─ maze_main.yaml
│ │ ├─ channel_single_bottleneck.yaml
│ │ ├─ pore_array.yaml
│ │ └─ random_labyrinth.yaml
│ ├─ scans/
│ │ ├─ phaseA_validation.yaml
│ │ ├─ phaseB_ablations.yaml
│ │ ├─ phaseC_global_sobol.yaml
│ │ ├─ phaseD_refinement.yaml
│ │ ├─ phaseE_rare_events.yaml
│ │ └─ phaseF_geometry_transfer.yaml
│ └─ figures/
│ ├─ fig1_productive_memory.yaml
│ ├─ fig2_speed_efficiency_separation.yaml
│ ├─ fig3_trapping_mechanism.yaml
│ └─ fig4_geometry_collapse.yaml
├─ docs/
│ ├─ theory_notes.md
│ ├─ derivations/
│ ├─ manuscript_notes/
│ └─ trae_active_transport_workflow.md
├─ src/
│ ├─ core/
│ │ ├─ geometry.py
│ │ ├─ navigation.py
│ │ ├─ dynamics.py
│ │ ├─ kernels.py
│ │ ├─ observables.py
│ │ └─ rng.py
│ ├─ scans/
│ │ ├─ generate_design.py
│ │ ├─ run_point.py
│ │ ├─ run_batch.py
│ │ ├─ adaptive_refine.py
│ │ └─ rare_event.py
│ ├─ analysis/
│ │ ├─ aggregate.py
│ │ ├─ bootstrap.py
│ │ ├─ ridge_detection.py
│ │ ├─ collapse.py
│ │ └─ diagnostics.py
│ ├─ figures/
│ │ ├─ fig1.py
│ │ ├─ fig2.py
│ │ ├─ fig3.py
│ │ └─ fig4.py
│ └─ cli/
│ ├─ scan_cli.py
│ ├─ analysis_cli.py
│ └─ figure_cli.py
├─ jobs/
│ ├─ local/
│ ├─ slurm/
│ └─ manifests/
├─ data/
│ ├─ raw/
│ ├─ interim/
│ ├─ processed/
│ └─ reference/
├─ outputs/
│ ├─ logs/
│ ├─ tables/
│ ├─ figures/
│ └─ reports/
└─ tests/
├─ test_geometry.py
├─ test_dynamics.py
├─ test_observables.py
├─ test_reproducibility.py
└─ test_figures.py
The atomic unit should be:
(geometry_id, model_variant, state_point_id, seed_chunk_id)