Synthesis through an analytic tunnel (cylinder model)¶
The cylinder runner is the analytic-tunnel variant of protein synthesis: it replaces the explicit coarse-grained ribosome of the coarse-grained ribosome model with a cylindrical bore drilled through an infinite wall (a “hole in an infinite wall”). There are no ribosome beads — the simulated system is the nascent chain only — so it is fast, never jams on ribosome excluded volume, and the analytic tunnel keeps the in-tunnel segment extended so the chain threads out the exit.
CLI:
cosmo-cylinder -f cylinder.ini(orpython -m cosmo.csp.cylinder -f cylinder.ini)Worked example:
tutorials/07_csp_cylinder/(α-synuclein); a larger production configuration lives insandbox/validate/cylinder.ini.Module:
cosmo.csp.cylinder— a parallel of the explicit-beadcosmo.csp.protocol. It reuses the shared enginecosmo.csp.core(length model, seed / restrain / output path) and the timing corecosmo.csp.kinetics, adding only the one analytic tunnel force (add_tunnel_cylinder) and a nascent-only synthesis loop.
Tip
Same codon kinetics as the coarse-grained-ribosome runner (cosmo-csp) — each
residue’s MD length comes from its codon dwell time — but the cylinder runs one MD
segment per residue rather than three sub-stages, because the analytic tunnel has no A→P
translocation to model. For the full kinetics derivation (codon → seconds → integration
steps) see the coarse-grained ribosome page; this page
describes the tunnel model and the cylinder.ini options.
Note
Why the cylinder exists. The explicit-bead exit tunnel in the truncated CG ribosome is geometrically tight, and a disordered chain tends to jam or ball up at the PTC rather than thread it. The analytic bore is a clean idealization that reliably extrudes an IDP chain — purely steric, no electrostatics, no bead clashes.
Quick start¶
cd tutorials/07_csp_cylinder
cosmo-cylinder -f cylinder.ini # -> synth_out_cyl/
cosmo-csp-movie -o synth_out_cyl # stitch per-length trajectories into a movie
vmd -e synth_out_cyl/movie.tcl
cosmo-cylinder writes, per residue L, a standalone trajectory under <outdir>/L_<L>/,
optional post-synthesis free runs (ejection/ then dissociation/), and a per-residue
dwell-time log <outdir>/dwell_times.dat.
The model: analytic exit tunnel¶
The tunnel is a cylindrical bore of radius r along the X-axis, drilled through an
infinite wall from the closed PTC end (x_lo) to the exit face
(x_exit = x_lo + tunnel_length):
d (cytosol: free, any d)
^ |##### solid ribosome S #####|
r |···|············ bore ··········|··············> allowed past exit
+---|----------------------------|----------------> x
x_lo (PTC) x_exit
|##### solid ribosome S #####|
^ infinite exit-face wall (d > r)
A single CustomExternalForce over every nascent bead penalises its penetration depth
into the solid region S:
S = { x < x_exit AND d > r } ∪ { x < x_lo }, d = |(y,z) − (y0,z0)|
U = k·max(0, pen)² + k·min(0, x − x_lo)²
pen = (rounded) min( x_exit − x , d − r ) # 0 outside S; > 0 inside S
A bead escapes S via whichever face is nearer — the bore wall (d − r, a radial
inward push that keeps the in-tunnel chain extended) or the exit face (x_exit − x, a
+x push), so a cytosol bead can only re-enter through the bore, never off-axis. The 90°
inner corner at the mouth is rounded by a fillet of radius rho = tunnel_mouth_round so the
potential stays continuous and the MD stays stable.
The C-terminus is seeded and position-restrained on the tunnel axis at the PTC
(x_lo, y0, z0) (stiffness restraint_k); each new residue is seeded there. There is no
A/P tRNA tether and no translocation switch — the chain simply extrudes forward as it grows.
Note
How it differs from the coarse-grained ribosome model.
(1) No ribosome PDB — the tunnel is analytic, its geometry set by the tunnel_* keys.
(2) One MD segment per residue (no peptidyl-transfer / translocation / tRNA-binding
sub-stages), so time_stage_1 / time_stage_2 are inherited but unused — the whole
codon dwell is a single segment. (3) The post-synthesis free runs are ejection_steps
then dissociation_steps (same keywords as the explicit-ribosome runner, both drop the
C-terminus restraint). (4) The explicit-ribosome
knobs (trna_tether, tunnel_wall) and the always-on PTC-geometry optimization do not apply.
(5) Purely steric — no ribosome electrostatics.
Configuration reference (cylinder.ini)¶
Read by cosmo.csp.cylinder.read_cylinder_config. Units are OpenMM defaults. The
kinetics and MD keys share the semantics of the Synthesis control options page; the tunnel
geometry and post-elongation phase are specific to this runner.
Example cylinder.ini:
[OPTIONS]
; --- inputs (no `ribosome` PDB: the tunnel is analytic) ---
pdb_file = asyn.pdb ; full native PDB of the nascent chain
model = hps_kr ; nascent IDP force field
; --- length schedule ---
L0 = 5
L_max = 10 ; blank -> full residue count
; --- kinetics (same O'Brien codon timing as cosmo-csp) ---
mrna = mrna.txt ; one codon per residue (required for per-codon timing);
; or "fastest"/"slowest"/"median" to auto-build a synonymous-codon mRNA
codon_times = ../../assets/csp/codon_dwell_times/ecoli/ecoli_codon_dwell_times_310K.txt ; table path (required; or a number of s = uniform)
scale_factor = 4331293
random_seed = 1
max_steps_per_stage = 60 ; TEST CLAMP (delete for production)
min_steps_per_stage = 30
; --- mechanics / integrator ---
restraint_k = 83680 ; C-terminus -> PTC restraint (kJ/mol/nm^2)
minimize = yes
dt = 0.01 ; ref_t = 300 ; tau_t = 0.01 ; nstout = 20
; --- analytic exit tunnel ---
tunnel_radius = 0.9 ; bore radius r (nm); ~3 CG beads wide
tunnel_length = 10.0 ; bore length (nm); x_exit = x_lo + length
tunnel_x_lo = 0.0 ; PTC / closed end (nm); C-terminus seeded on-axis here
tunnel_center = 0.0, 0.0 ; tunnel axis (y0, z0) (nm)
tunnel_k = 8368 ; wall stiffness (kJ/mol/nm^2 = 20 kcal/mol/A^2)
tunnel_mouth_round = 0.2 ; mouth-corner fillet radius rho (nm)
; --- post-synthesis free runs (both release the C-terminus restraint) ---
ejection_steps = 40 ; release restraint -> chain diffuses out the exit; 0 -> skip
dissociation_steps = 40 ; second free run -> chain drifts fully clear; 0 -> skip
; --- hardware / output ---
device = CPU ; ppn = 1 ; outdir = synth_out_cyl
Analytic tunnel geometry¶
Key |
Default |
Meaning |
|---|---|---|
|
|
Bore radius |
|
|
Bore length (nm). |
|
|
PTC / closed end (nm); the C-terminus is seeded on-axis here. |
|
|
Tunnel axis |
|
|
Wall stiffness (kJ/mol/nm² = 20 kcal/mol/Ų). |
|
|
Mouth-corner fillet radius |
Post-elongation¶
Key |
Default |
Meaning |
|---|---|---|
|
|
Free run with the C-terminus restraint released so the finished chain diffuses out the exit (+x); |
|
|
Second free run (restraint still off) so the chain drifts fully clear of the exit; |
Outputs¶
<outdir>/
├── L_<L>/ # one folder per residue L (single MD segment)
│ ├── traj.dcd # (nascent-only) trajectory for that length
│ ├── traj_final.pdb # last conformation (seeds the next residue)
│ └── traj.log, traj.psf, ...
├── ejection/ # free run, restraint off (if ejection_steps > 0)
├── dissociation/ # second free run (if dissociation_steps > 0)
└── dwell_times.dat # per-residue: codon, sampled dwell (s), ns, integration steps
Movie. cosmo-csp-movie -o <outdir> stitches the per-length trajectories (it
auto-detects the flat L_<L>/ layout used here vs. the 3-stage layout of cosmo-csp).
See also¶
Synthesis on a coarse-grained ribosome — the explicit coarse-grained ribosome runner (
cosmo-csp): the same codon kinetics with three MD sub-stages per residue and an explicit-bead tunnel.Synthesis control options — the shared kinetics / MD control options in full.
cosmo.csp package — the API reference.