<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chain Coordinate | Computational Biophysics Group</title><link>https://biophys.uni-saarland.de/workshops/chain-coordinate/</link><atom:link href="https://biophys.uni-saarland.de/workshops/chain-coordinate/index.xml" rel="self" type="application/rss+xml"/><description>Chain Coordinate</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0000</lastBuildDate><image><url>https://biophys.uni-saarland.de/media/logo_hub03ab6ac8ea837daa2f3e3673493bf20_473158_300x300_fit_lanczos_3.png</url><title>Chain Coordinate</title><link>https://biophys.uni-saarland.de/workshops/chain-coordinate/</link></image><item><title>Chain-coordinate workshop: stalk formation</title><link>https://biophys.uni-saarland.de/chain-coordinate-workshop/stalk/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://biophys.uni-saarland.de/chain-coordinate-workshop/stalk/</guid><description>&lt;div class="alert alert-note">
&lt;div>
&lt;p>&lt;strong>Topological-transitions workshop · Part 2 of 2&lt;/strong>&lt;/p>
&lt;p>This guide follows the pore-formation tutorial. You can return to Part 1 at any
time.&lt;/p>
&lt;p>&lt;a class="btn btn-outline-primary" href="../chain-coordinate/" role="button">← Back to Part 1: pore formation&lt;/a>&lt;/p>
&lt;/div>
&lt;/div>
&lt;h1 id="run-the-stalk-formation-showcase">Run the stalk-formation showcase&lt;/h1>
&lt;p>This workflow uses the chain coordinate to connect two facing membrane leaflets
and form a lipid stalk. It uses Martini 2 double-membrane systems.&lt;/p>
&lt;p>Run these commands from the expanded participant workshop directory. The pore
and stalk workflows are independent; stalk scripts are numbered &lt;code>20&lt;/code> and above.&lt;/p>
&lt;h2 id="1-choose-a-system-and-create-a-private-run">1. Choose a system and create a private run&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>System ID&lt;/th>
&lt;th>Membrane&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>dipc-stalk&lt;/code>&lt;/td>
&lt;td>DIPC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>dopc-stalk&lt;/code>&lt;/td>
&lt;td>DOPC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>dope-stalk&lt;/code>&lt;/td>
&lt;td>DOPE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>popc-stalk&lt;/code>&lt;/td>
&lt;td>POPC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>plasmamembraneinner-stalk&lt;/code>&lt;/td>
&lt;td>plasma-membrane inner mixture&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>plasmamembraneouter-stalk&lt;/code>&lt;/td>
&lt;td>plasma-membrane outer mixture&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Set &lt;code>SYSTEM&lt;/code> to one exact ID. &lt;code>RUN&lt;/code> must be a new private directory:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SYSTEM&lt;/span>&lt;span class="o">=&lt;/span>popc-stalk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">RUN&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$PWD&lt;/span>&lt;span class="s2">/runs/&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/20_stalk_create_run.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The packaged system inputs are copied into the private run. Shared workshop
inputs are never modified.&lt;/p>
&lt;h2 id="2-choose-the-number-of-slices">2. Choose the number of slices&lt;/h2>
&lt;p>The chain coordinate divides a cylinder between the two membranes into &lt;code>N&lt;/code>
slices and measures their &lt;strong>hydrophobic lipid-tail occupancy&lt;/strong>. Here
you will determine a suitable &lt;code>N&lt;/code> for your selected system.&lt;/p>
&lt;p>Submit the intact-system scan:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/21_stalk_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --submit
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This starts 31 short CPU tasks. Every task analyses the same saved intact
trajectory with one candidate value from &lt;code>N=20&lt;/code> through &lt;code>N=50&lt;/code>; it does not run
31 new molecular-dynamics simulations.&lt;/p>
&lt;p>Check progress:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/21_stalk_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --status
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wait until the summary reports:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Completed: 31 / 31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Running: 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Pending: 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Other: 0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then collect the results:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/21_stalk_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --collect
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>A &lt;code>FAIL&lt;/code> row means that particular slice count is unsuitable for the coordinate;
it does not mean that the Slurm task failed.&lt;/p>
&lt;p>The baseline is the equilibrium trajectory before the opening restraint is
applied, when the two facing leaflets are still unconnected. Choose a passing
&lt;code>N&lt;/code> whose baseline mean ξ&lt;sub>ch&lt;/sub> is close to &lt;code>0.2&lt;/code>. This places the
unconnected state near the lower part of the coordinate while leaving room for
ξ&lt;sub>ch&lt;/sub> to increase as the stalk forms.&lt;/p>
&lt;p>Choose a passing value near the baseline target of &lt;code>0.2&lt;/code>, then record your
choice. For example, to choose &lt;code>N=36&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/21_stalk_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --choose &lt;span class="m">36&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command verifies that the selected value passed the scan before updating
&lt;code>$RUN/input/coordinate.env&lt;/code>. It records your choice; it does not choose &lt;code>N&lt;/code>
automatically.&lt;/p>
&lt;h2 id="3-understand-the-opening-rate">3. Understand the opening rate&lt;/h2>
&lt;p>The opening simulation lasts 50 ns. During this time, the target value of the
reaction coordinate ξ&lt;sub>ch&lt;/sub> increases linearly from &lt;code>0.1&lt;/code> to &lt;code>1.0&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">opening rate = (final target - initial target) / duration
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> = (1.0 - 0.1) / 50000 ps
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> = 1.8e-05 per ps
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This opening is deliberately fast so that the exercise remains feasible with
limited computational resources. A slower change in the target would give the
membrane more time to relax and could provide better-equilibrated starting
structures.&lt;/p>
&lt;p>The measured ξ&lt;sub>ch&lt;/sub> follows the moving target but does not have to equal
it at every instant. The opening trajectory supplies starting structures for
the umbrella windows; it is not used directly to calculate the PMF. Later,
each umbrella window keeps its target ξ&lt;sub>ch&lt;/sub> fixed.&lt;/p>
&lt;p>The workshop uses the fixed opening rate of &lt;code>1.8e-05&lt;/code> per ps. Before preparing the
simulation, check that your run configuration is complete:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/22_stalk_validate_configuration.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This command does not start a simulation. It runs sanity checks before we submit.&lt;/p>
&lt;p>Do not continue until the configuration check succeeds.&lt;/p>
&lt;h2 id="4-prepare-and-submit-the-opening">4. Prepare and submit the opening&lt;/h2>
&lt;p>First, compile the coordinates, topology, selected slice count, and simulation
settings into a GROMACS run-input file (&lt;code>opening.tpr&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/23_stalk_prepare_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This command checks and prepares the simulation; it does not run molecular
dynamics. It prints the pulling groups, thermostat groups, moving target, output
path, and location of the complete GROMACS preprocessing log.&lt;/p>
&lt;p>Submit the prepared 50 ns simulation:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/24_stalk_submit_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check its status (feel free to run this command as often as needed):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/25_stalk_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The progress summary distinguishes the prescribed target from the reaction
coordinate measured in the simulation. For example, a value of &lt;code>-0.04&lt;/code> for
&lt;code>measured minus target&lt;/code> means that the measured ξ&lt;sub>ch&lt;/sub> is &lt;code>0.04&lt;/code> below
the current target.&lt;/p>
&lt;p>Some lag is expected because the workshop opening moves the target quickly,
while lipids and water need time to rearrange. During the run, check that the
measured ξ&lt;sub>ch&lt;/sub> generally increases. A coordinate that stops increasing
or falls far behind the target may leave some umbrella windows without
suitable starting structures.&lt;/p>
&lt;p>The command also reports the simulated time, completion percentage,
performance when available, and the current Slurm state. Wait until it reports
&lt;code>Own stalk opening: complete&lt;/code>.&lt;/p>
&lt;p>After the opening finishes, select it as the source of umbrella structures:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/25_stalk_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --select-own
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The stalk workflow currently has no packaged fallback opening. An incomplete or
failed opening must be inspected before continuing.&lt;/p>
&lt;h2 id="5-watch-the-stalk-form-in-vmd">5. Watch the stalk form in VMD&lt;/h2>
&lt;p>The opening trajectory provides a direct view of the transition from two
separated membranes to a lipid connection.&lt;/p>
&lt;h3 id="on-rosi">On Rosi&lt;/h3>
&lt;p>From the expanded workshop directory, run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/31_stalk_prepare_vmd.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command creates a PDB containing explicit Martini bonds and a processed XTC
trajectory. It also prints &lt;code>SYSTEM=...&lt;/code> and &lt;code>REMOTE_OPENING=...&lt;/code> lines for the
next step.&lt;/p>
&lt;h3 id="on-your-computer">On your computer&lt;/h3>
&lt;p>Open a new terminal on your own computer, not inside the Rosi SSH session.
Copy and run the &lt;code>SYSTEM=...&lt;/code> and &lt;code>REMOTE_OPENING=...&lt;/code> lines printed on Rosi.&lt;/p>
&lt;p>Set &lt;code>ROSI_LOGIN&lt;/code> to the same hostname or SSH alias that you normally use to
connect to Rosi:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="o">=&lt;/span>rosi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">LOCAL_OPENING&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/workshop-visualization/&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">/opening&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_OPENING&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scp &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">:&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">REMOTE_OPENING&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/structure-conect.pdb&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">:&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">REMOTE_OPENING&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/trajectory-whole.xtc&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_OPENING&lt;/span>&lt;span class="s2">/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Verify that both files were copied:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ls -lh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_OPENING&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start VMD on your computer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">vmd &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_OPENING&lt;/span>&lt;span class="s2">/structure-conect.pdb&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_OPENING&lt;/span>&lt;span class="s2">/trajectory-whole.xtc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Load the PDB first because it supplies the Martini bond connectivity. The XTC
then adds the trajectory frames. Play the trajectory and identify the two
facing membrane leaflets, the intervening water, and the lipid connection that
develops during the opening.&lt;/p>
&lt;h2 id="6-generate-the-umbrella-grid">6. Generate the umbrella grid&lt;/h2>
&lt;p>The default table describes 19 windows from ξ=0.10 through ξ=1.00, with spacing
0.05 and force constant 3000 kJ mol⁻¹.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/26_stalk_generate_window_grid.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/state/window-grid.tsv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The window count is derived from &lt;code>input/window-regions.tsv&lt;/code>; the scripts do not
assume there are always 19 windows.&lt;/p>
&lt;h2 id="7-submit-and-monitor-the-umbrella-windows">7. Submit and monitor the umbrella windows&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/27_stalk_submit_windows.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each array task selects a unique saved opening frame, renders its target
restraint, prepares a TPR, and runs one 20 ns umbrella simulation.&lt;/p>
&lt;p>No minimization is inserted between extraction and umbrella sampling. The first
20% of each window is excluded from WHAM.&lt;/p>
&lt;p>Monitor completion:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/28_stalk_status.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Do not start WHAM until every expected window has finished, every window has a
non-empty &lt;code>pullf.xvg&lt;/code>, and no fatal log is reported.&lt;/p>
&lt;p>&lt;a href="#analyse-the-stalk-formation-pmf">Analyse the stalk PMF →&lt;/a>&lt;/p>
&lt;h1 id="analyse-the-stalk-formation-pmf">Analyse the stalk-formation PMF&lt;/h1>
&lt;p>Run the analysis only after every umbrella window has completed.&lt;/p>
&lt;h2 id="1-check-window-completion">1. Check window completion&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/28_stalk_status.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The expected, finished, and pull-force counts must agree. No fatal log should
be reported. The expected count is read from the generated grid and is not
permanently fixed at 19.&lt;/p>
&lt;h2 id="2-run-wham">2. Run WHAM&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/29_stalk_analyze.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The script reads the umbrella duration from &lt;code>input/umbrella.mdp&lt;/code>. With the
provided protocol, every window lasts 20 ns.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Interval&lt;/th>
&lt;th>Use&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>0–4 ns&lt;/td>
&lt;td>discarded&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4–20 ns&lt;/td>
&lt;td>retained for the main PMF&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4–12 ns&lt;/td>
&lt;td>first convergence block&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12–20 ns&lt;/td>
&lt;td>second convergence block&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>WHAM therefore uses 16 ns of force data from each completed window.&lt;/p>
&lt;p>The two retained 8 ns blocks provide a simple convergence check: their
disagreement is summarized in &lt;code>$RUN/analysis/analysis-summary.txt&lt;/code>, and the
underlying profiles are saved as &lt;code>pmf-first-half.xvg&lt;/code> and
&lt;code>pmf-second-half.xvg&lt;/code>.&lt;/p>
&lt;h2 id="3-inspect-the-report">3. Inspect the report&lt;/h2>
&lt;p>Open:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">RUN/analysis/report.html
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The report contains the stalk-formation PMF, bootstrap uncertainty,
adjacent-window overlap, and the analysis settings.&lt;/p>
&lt;p>Important output files are:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>File&lt;/th>
&lt;th>Meaning&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>pmf-bootstrap-reference-zero.tsv&lt;/code>&lt;/td>
&lt;td>PMF and bootstrap standard deviation&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>histograms.xvg&lt;/code>&lt;/td>
&lt;td>sampled coordinate distributions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>overlap-summary.tsv&lt;/code>&lt;/td>
&lt;td>overlap between adjacent windows&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pmf-first-half.xvg&lt;/code>&lt;/td>
&lt;td>PMF from the first retained 8 ns&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pmf-second-half.xvg&lt;/code>&lt;/td>
&lt;td>PMF from the second retained 8 ns&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>analysis-summary.txt&lt;/code>&lt;/td>
&lt;td>machine-readable analysis record&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>report.html&lt;/code>&lt;/td>
&lt;td>offline participant report&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="understand-the-pmf">Understand the PMF&lt;/h2>
&lt;p>The horizontal axis follows stalk formation: low ξ&lt;sub>ch&lt;/sub> describes
separated membrane leaflets, while values approaching one describe increasing
connectivity between them.&lt;/p>
&lt;p>The PMF reports relative free energy along this coordinate. Lower regions are
more favourable within the sampled pathway; an increase means that progressing
along the coordinate requires free energy. Only differences are meaningful, so
the vertical origin is shifted using the minimum between ξ=0.10 and ξ=0.30.&lt;/p>
&lt;p>This zero is a plotting convention. It does not prove that the minimum is an
absolute thermodynamic reference or a fully converged equilibrium state.&lt;/p>
&lt;h2 id="check-overlap-and-convergence">Check overlap and convergence&lt;/h2>
&lt;p>Each restrained window samples a distribution of ξ&lt;sub>ch&lt;/sub> values rather
than one exact value. Neighbouring distributions must overlap so that WHAM can
connect them into one PMF.&lt;/p>
&lt;p>The adjacent-window chart counts histogram bins occupied by both members of
each neighbouring pair. A zero-height bar is a gap and the PMF must not be
interpreted. A nonzero bar is necessary, but does not by itself prove adequate
sampling or convergence.&lt;/p>
&lt;p>The analysis also compares PMFs calculated from the first and second retained
8 ns blocks. Similar profiles support convergence over this limited interval;
large local differences identify regions that require longer sampling.&lt;/p>
&lt;p>Bootstrap uncertainty measures uncertainty within the available trajectories.
It does not replace longer simulations or independent repeats.&lt;/p>
&lt;h2 id="interpretation-boundary">Interpretation boundary&lt;/h2>
&lt;p>The starting systems and force-field setups are derived from the published
stalk-formation study by &lt;a href="https://doi.org/10.1038/s41467-021-26924-2" target="_blank" rel="noopener">Poojari &lt;em>et al.&lt;/em>, &lt;em>Nature Communications&lt;/em> 12, 6594
(2021)&lt;/a>. The shortened protocol used
here is designed for teaching; it is neither a reproduction nor an independent
publication-quality validation of that study.&lt;/p>
&lt;p>In particular:&lt;/p>
&lt;ul>
&lt;li>each system uses a single opening trajectory;&lt;/li>
&lt;li>each umbrella window lasts only 20 ns;&lt;/li>
&lt;li>the first 4 ns of each window is discarded;&lt;/li>
&lt;li>no independent replicas are included;&lt;/li>
&lt;li>no minimization is inserted between extraction and umbrella sampling;&lt;/li>
&lt;li>no reverse stalk-closure pathway is sampled, so hysteresis is not assessed.&lt;/li>
&lt;/ul>
&lt;p>Use this workflow to learn chain-coordinate calibration, opening, umbrella
sampling, overlap checking, and WHAM reconstruction. Do not use these shortened
runs alone for quantitative lipid comparisons.&lt;/p>
&lt;h2 id="force-field-reference">Force-field reference&lt;/h2>
&lt;p>The stalk systems use the Martini 2.2 force field:&lt;/p>
&lt;p>Marrink, S. J., Risselada, H. J., Yefimov, S., Tieleman, D. P., and de Vries,
A. H. (2007). “The MARTINI Force Field: Coarse Grained Model for Biomolecular
Simulations.” &lt;em>Journal of Physical Chemistry B&lt;/em> 111, 7812–7824.
&lt;a href="https://doi.org/10.1021/jp071097f" target="_blank" rel="noopener">DOI: 10.1021/jp071097f&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="workshop-navigation">Workshop navigation&lt;/h2>
&lt;p>Return to the pore-formation guide to revisit Part 1.&lt;/p>
&lt;p>&lt;a class="btn btn-outline-primary" href="../chain-coordinate/" role="button">← Return to Part 1: pore formation&lt;/a>&lt;/p></description></item><item><title>PMF calculation of transmembrane pore formation with the chain coordinate</title><link>https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/</guid><description>&lt;div class="alert alert-note">
&lt;div>
&lt;p>&lt;strong>Topological-transitions workshop · Part 1 of 2&lt;/strong>&lt;/p>
&lt;p>Start here with pore formation. After completing this guide, continue with
stalk formation.&lt;/p>
&lt;p>&lt;a class="btn btn-primary" href="../stalk/" role="button">Go to Part 2: stalk formation →&lt;/a>&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="start-the-workshop-on-rosi">Start the workshop on Rosi&lt;/h2>
&lt;p>Connect to Rosi in an SSH terminal and initialize your private workshop copy:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">. /home/tut04/pore-workshop/start
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The launcher verifies release 0.9.0, installs it as
&lt;code>~/pore-workshop-0.9.0&lt;/code>, enters that directory, and runs the cluster preflight.
Leave this terminal open for the simulation commands below.&lt;/p>
&lt;h2 id="introduction-and-background-transmembrane-pore-formation">Introduction and Background: transmembrane pore formation&lt;/h2>
&lt;p>A membrane pore is a topological transition: an intact bilayer becomes
connected by a water-filled polar defect. The chain coordinate
ξ&lt;sub>ch&lt;/sub> turns that connectivity into a continuous value that can be
restrained and used to calculate a potential of mean force (PMF).&lt;/p>
&lt;p>The formation of membrane pores plays key roles in numerous processes of biological or medical relevance: Pores are formed during apoptosis, by antimicrobial peptides, or during membrane fusion (which in turn is involved in signaling, viral infection, and fertilization). During electroporation, pores are formed with an external electric pulse with the aim delivering cargos into cells. In MD simulations, pores do not form spontaneously because pore formation is typically associated with a high free energy cost. Therefore, to observe pores formation in MD simulations and to study the roles of lipids, membrane-active pepties, or electric fieds on pore formation, pore formation must be simulated by pulling along reaction coordinate (or collective variable): the chain coordinate.&lt;/p>
&lt;p>A fromation of a transmembrane pore is a topological transition: an intact bilayer becomes
protruded by a water-filled continuous polar defect. The chain coordinate
ξ&lt;sub>ch&lt;/sub> turns the degree of connectivity of the transmembrane defect into a continuous value that can be restrained and used to calculate the potential of mean force (PMF) of pore formation.&lt;/p>
&lt;span style="color:red">
Warning: In this tutorial, we use the MARTINI coarse-grained force field to simulate pore fomation owing to the low computational costs. For a scientific study of pore formation, we strongly discourage the use of MARTINI, see below.
&lt;/span>
&lt;h2 id="warmup-watch-an-equilibrium-membrane">Warmup: watch an equilibrium membrane&lt;/h2>
&lt;p>Before opening a pore, look at a normal Martini 3 bilayer moving at equilibrium.
VMD runs on your own computer; the simulations remain on the cluster.&lt;/p>
&lt;ol>
&lt;li>Download and install the appropriate VMD build from the
&lt;a href="https://www.ks.uiuc.edu/Research/vmd/alpha/" target="_blank" rel="noopener">official VMD alpha download&lt;/a>.&lt;/li>
&lt;li>Add the directory containing the &lt;code>vmd&lt;/code> executable to your local shell&amp;rsquo;s
&lt;code>PATH&lt;/code>. For example, replace the example directory below with the actual
installation directory:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/opt/vmd/bin:&lt;/span>&lt;span class="nv">$PATH&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">command&lt;/span> -v vmd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To keep this setting, add the same &lt;code>export PATH=...&lt;/code> line to &lt;code>~/.bashrc&lt;/code> for
Bash or &lt;code>~/.zshrc&lt;/code> for Zsh, then open a new terminal. The installation directory
depends on your operating system and chosen VMD package.&lt;/p>
&lt;p>Open another terminal on your own computer and copy the prepared example from
Rosi. Set &lt;code>ROSI_LOGIN&lt;/code> to the hostname or SSH alias you normally use for Rosi:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="o">=&lt;/span>rosi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">LOCAL_EXAMPLE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/workshop-visualization/equilibrium-membrane&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_EXAMPLE&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scp &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">:pore-workshop-0.9.0/reference/equilibrium-vmd/equilibrium-conect.pdb&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">ROSI_LOGIN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">:pore-workshop-0.9.0/reference/equilibrium-vmd/equilibrium-whole.xtc&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_EXAMPLE&lt;/span>&lt;span class="s2">/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vmd &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_EXAMPLE&lt;/span>&lt;span class="s2">/equilibrium-conect.pdb&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$LOCAL_EXAMPLE&lt;/span>&lt;span class="s2">/equilibrium-whole.xtc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you already mount your Rosi home directory with SSHFS or an SFTP filesystem
client, you may open the same two files directly from
&lt;code>pore-workshop-0.9.0/reference/equilibrium-vmd/&lt;/code>. Run all simulation commands in
the Rosi SSH terminal, not on your local computer.&lt;/p>
&lt;p>VMD now shows and example of a previously carried out equilibriums simulation of a membrane of POPC, without any pore-opening restraint. Play or
scrub the trajectory, rotate the bilayer, and identify water, headgroups, and
the hydrophobic core.&lt;/p>
&lt;p>The example includes &lt;code>equilibrium.gro&lt;/code>, a one-frame GROMACS structure, and
&lt;code>equilibrium-whole.xtc&lt;/code>, the trajectory. VMD loads
&lt;code>equilibrium-conect.pdb&lt;/code> first because a GRO or XTC does not carry the Martini
bond topology.&lt;/p>
&lt;details class="spoiler " id="spoiler-1">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> why the VMD structure is a PDB&lt;/summary>
&lt;p>&lt;p>VMD may guess missing or incorrect bonds for coarse-grained molecules. The
provided PDB was generated from a compiled topology (&lt;code>.tpr&lt;/code>) with
&lt;code>gmx trjconv -conect&lt;/code>, which writes explicit &lt;code>CONECT&lt;/code> records. The trajectory
was made whole with &lt;code>-pbc whole&lt;/code> and then centred in a separate &lt;code>-pbc mol -center&lt;/code> pass. The generated &lt;code>ENDMDL&lt;/code> record was removed so VMD applies the PDB
connectivity to every XTC frame.&lt;/p>
&lt;p>For another trajectory, the portable helper performs the same preparation:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/14_prepare_vmd.sh topol.tpr traj.xtc index.ndx visualization
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vmd visualization/structure-conect.pdb visualization/trajectory-whole.xtc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Always load the CONECT-enabled PDB first and the processed XTC second.&lt;/p>
&lt;/p>
&lt;/details>
&lt;h2 id="from-polar-connectivity-to-pore-size">From polar connectivity to pore size&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Published illustration of the joint coordinate for pore nucleation and expansion" srcset="
/chain-coordinate-workshop/pore/assets/hub-2021-joint-coordinate_hu0799e5bc19a57f3858bae6f084e3903a_277243_00211e305b343c06b3654d3b59cb4fdd.webp 400w,
/chain-coordinate-workshop/pore/assets/hub-2021-joint-coordinate_hu0799e5bc19a57f3858bae6f084e3903a_277243_1a7b85bd4e693a0042e6dbd6f2325503.webp 760w,
/chain-coordinate-workshop/pore/assets/hub-2021-joint-coordinate_hu0799e5bc19a57f3858bae6f084e3903a_277243_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/assets/hub-2021-joint-coordinate_hu0799e5bc19a57f3858bae6f084e3903a_277243_00211e305b343c06b3654d3b59cb4fdd.webp"
width="760"
height="251"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>The chain coordinate ξ&lt;sub>ch&lt;/sub> measures the degree of connectivity of the transmembrane defect. To quantify &amp;ldquo;connectivity&amp;rdquo;, it uses the fraction of polar-occupied slices in a membrane-spanning cylinder (see left image). In case you also want to simulate pore expansion, an extension of the chain coordinate may be used to switch from pore nucleation (left image) to pore expansion (measured as as the pore radius), together implemented as a joint coordinate ξ&lt;sub>p&lt;/sub> for pore nucleation and expansion. Adapted from Hub, JCTC 2021.&lt;/em>&lt;/p>
&lt;p>In the published atomistic definition, water oxygen and lipid phosphate oxygen
atoms contribute when they lie inside the cylinder. An intact membrane leaves
central slices empty; water entry occupies more slices; ξ&lt;sub>ch&lt;/sub> approaches
unity when the defect spans the entire membrane. The chain coordinate then saturates and
cannot describe further pore expansion. The joint coordinate ξ&lt;sub>p&lt;/sub> solves
that problem by switching smoothly to the expansion term.&lt;/p>
&lt;h2 id="explore-the-full-published-pathway">Explore the full published pathway&lt;/h2>
&lt;p>Use the slider to follow atomistic structures from an intact membrane through
pore nucleation and expansion. The values at the bar are ξ&lt;sub>p&lt;/sub>; in this workshop, however, we only use the chain coordinate ξ&lt;sub>ch&lt;/sub> to focus on the pore nucleation phase.&lt;/p>
&lt;div class="trajectory-explorer" style="margin: 1rem 0;">
&lt;iframe
src="assets/pore-state-slider.html"
title="Explore eight published structures across pore nucleation and expansion"
loading="lazy" style="width: 100%; aspect-ratio: 1280 / 970; border: 0; border-radius: 16px;">
&lt;/iframe>
&lt;/div>
&lt;h2 id="what-you-will-do">What you will do&lt;/h2>
&lt;p>The workshop has two successive applications of the chain coordinate.&lt;/p>
&lt;p>First, you will study pore formation in a Martini 3 membrane. You will choose
the cylinder resolution and opening rate, generate 27 short umbrella windows,
and reconstruct a pore-formation PMF.&lt;/p>
&lt;p>After completing that workflow, you will apply the same ideas to stalk
formation between two facing Martini 2 membranes. You will calibrate the
coordinate for a double membrane, follow a 50 ns stalk-opening trajectory,
generate 19 umbrella windows, and reconstruct a stalk-formation PMF.&lt;/p>
&lt;p>The workflows use separate run directories and scripts, so their simulation
files remain independent. Conceptually, the stalk exercise builds on what you
learned during the pore exercise.&lt;/p>
&lt;p>Everything else uses tested defaults. Optional explanations are available in
expandable &lt;span class='cbjh-focus-font'>Advanced&lt;/span> panels.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
These shortened simulations demonstrate coordinate calibration, umbrella
sampling, overlap diagnosis, and WHAM reconstruction. They are teaching runs,
not publication-quality free-energy calculations.
&lt;/div>
&lt;/div>
&lt;p>&lt;a href="#run-the-showcase">Run the showcase →&lt;/a>&lt;/p>
&lt;hr>
&lt;h1 id="run-the-showcase">Run the showcase&lt;/h1>
&lt;p>Keep this page open beside a terminal. Commands beginning with &lt;code>./scripts/&lt;/code>
must be run from the copied workshop folder.&lt;/p>
&lt;h2 id="1-choose-a-membrane-and-create-your-run">1. Choose a membrane and create your run&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Membrane&lt;/th>
&lt;th>Enter exactly as &lt;code>SYSTEM&lt;/code>&lt;/th>
&lt;th>A useful comparison&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>DIPC&lt;/td>
&lt;td>&lt;code>dipc-small&lt;/code>&lt;/td>
&lt;td>two polyunsaturated tails&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLPC&lt;/td>
&lt;td>&lt;code>dlpc-small&lt;/code>&lt;/td>
&lt;td>short saturated tails&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PAPC&lt;/td>
&lt;td>&lt;code>papc-small&lt;/code>&lt;/td>
&lt;td>one highly unsaturated tail&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPC&lt;/td>
&lt;td>&lt;code>popc-small&lt;/code>&lt;/td>
&lt;td>common phosphatidylcholine reference&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPE&lt;/td>
&lt;td>&lt;code>pope-small&lt;/code>&lt;/td>
&lt;td>smaller PE headgroup&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPG&lt;/td>
&lt;td>&lt;code>popg-small&lt;/code>&lt;/td>
&lt;td>negatively charged headgroup&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;code>SYSTEM&lt;/code> is the exact membrane ID. &lt;code>RUN&lt;/code> is the new private directory that will
hold your calculation. For example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">SYSTEM&lt;/span>&lt;span class="o">=&lt;/span>popc-small
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">RUN&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>realpath -m &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$PWD&lt;/span>&lt;span class="s2">/../&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">USER&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">SYSTEM&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/01_create_run.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/02_inspect_system.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace only &lt;code>popc-small&lt;/code>. Your run is independent and is never combined with
another participant&amp;rsquo;s files.&lt;/p>
&lt;h3 id="gromacs-file-types">GROMACS file types&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>File&lt;/th>
&lt;th>Role&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>.gro&lt;/code>&lt;/td>
&lt;td>one molecular structure and the simulation box&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.top&lt;/code> / &lt;code>.itp&lt;/code>&lt;/td>
&lt;td>molecular composition and force-field definitions (topology)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.ndx&lt;/code>&lt;/td>
&lt;td>definitinos of groups of atoms or beads (index groups)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.mdp&lt;/code>&lt;/td>
&lt;td>simulation and restraint settings&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.tpr&lt;/code>&lt;/td>
&lt;td>compiled run input produced by &lt;code>grompp&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.xtc&lt;/code>&lt;/td>
&lt;td>compressed trajectory produced by &lt;code>mdrun&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.xvg&lt;/code>&lt;/td>
&lt;td>coordinate or force data used for analysis&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">structure + topology + groups + settings → grompp → .tpr
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ mdrun
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .xtc + .xvg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;details class="spoiler " id="spoiler-3">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> shell variables and inspecting every input&lt;/summary>
&lt;p>&lt;p>The leading &lt;code>$&lt;/code> asks Bash to substitute a variable&amp;rsquo;s value. If user &lt;code>alice&lt;/code>
chooses POPC, &lt;code>$SYSTEM&lt;/code> becomes &lt;code>popc-small&lt;/code> and &lt;code>$RUN&lt;/code> might become
&lt;code>/home/alice/alice-popc-small&lt;/code>. Braces in &lt;code>${USER}&lt;/code> mark where a variable name
ends; quotation marks keep a path together.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">printf&lt;/span> &lt;span class="s1">&amp;#39;SYSTEM=%s\nRUN=%s\n&amp;#39;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ls -lh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/base&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tail -1 &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/base/equilibrated.gro&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">less &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/base/topol.top&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">less &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/base/index.ndx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The base is an equilibrated 162-lipid membrane with its normal along z. The
index must contain &lt;code>tails&lt;/code>, &lt;code>Solvent&lt;/code>, &lt;code>Non-Solvent&lt;/code>, and &lt;code>Phosphates&lt;/code>. POPG
also contains counterions. Press &lt;code>q&lt;/code> to leave &lt;code>less&lt;/code>.&lt;/p>
&lt;/p>
&lt;/details>
&lt;h2 id="2-choose-the-number-of-slices-or-length-of-the-cylinder">2. Choose the number of slices (or length of the cylinder)&lt;/h2>
&lt;p>The membrane-spanning cylinder is divided into &lt;code>N&lt;/code> slices with thickness of 2Å (1Å for all-atom simulations). Hence, the definition of ξ&lt;sub>ch&lt;/sub> requires choosing &lt;code>N&lt;/code>. Choose &lt;code>N&lt;/code> (and thereby the length) such that, for a &lt;em>planar&lt;/em> intact membrane (with no pore), ξ&lt;sub>ch&lt;/sub> takes a value of ~0.2 meaning 20% of the cylinder slices are occupied by polar atoms, namely the slices in the two head group regions. This ensures that the cylinder spans the entire membrane including some parts of the polar headgroup reagion. If the cylinder is too short such that no slice contains a polar atom, you get an error message. In practice, you run a series of so-called reruns from a given equilibrium simulation trajectory, compute ξ&lt;sub>ch&lt;/sub> with various values of &lt;code>N&lt;/code> form the frames. Then choose a good value. We did this for you in advance:&lt;/p>
&lt;p>Inspect the results from these reruns, which we did in advance for you:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --reference
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">column -t -s &lt;span class="s1">$&amp;#39;\t&amp;#39;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/calibration/scan-status.tsv&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> less
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Look for three things:&lt;/p>
&lt;ol>
&lt;li>reject values marked &lt;code>FAIL&lt;/code> - cylinder is too short, &lt;code>N&lt;/code> too small;&lt;/li>
&lt;li>observe how the computed ξ&lt;sub>ch&lt;/sub> changes with the choice of &lt;code>N&lt;/code>;&lt;/li>
&lt;li>choose a passing &lt;code>N&lt;/code> with an mean close to 0.2–0.25, making sure that the cylinder spans the membrane.&lt;/li>
&lt;/ol>
&lt;p>Make a provisional choice and replace &lt;code>CHOOSE_FROM_SLICE_SCAN&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="si">${&lt;/span>&lt;span class="nv">EDITOR&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">nano&lt;/span>&lt;span class="si">}&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/coordinate.env&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --check-choice
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Try another plausible value if you want to compare. Your
first choice does not have to match the tested one. Decide from the evidence
before opening the solution, then reconcile your value before selecting a
fallback opening.&lt;/p>
&lt;details class="spoiler " id="spoiler-4">
&lt;summary>Show the tested slice-count solution&lt;/summary>
&lt;p>&lt;p>The release selects the passing value whose intact mean is closest to 0.25:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --solution
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/calibration/selected-slices.tsv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>System&lt;/th>
&lt;th style="text-align:right">Good value for N&lt;/th>
&lt;th style="text-align:right">mean ξ&lt;sub>ch&lt;/sub>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>DIPC&lt;/td>
&lt;td style="text-align:right">16&lt;/td>
&lt;td style="text-align:right">0.269&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DLPC&lt;/td>
&lt;td style="text-align:right">15&lt;/td>
&lt;td style="text-align:right">0.226&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PAPC&lt;/td>
&lt;td style="text-align:right">18&lt;/td>
&lt;td style="text-align:right">0.254&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPC&lt;/td>
&lt;td style="text-align:right">18&lt;/td>
&lt;td style="text-align:right">0.242&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPE&lt;/td>
&lt;td style="text-align:right">19&lt;/td>
&lt;td style="text-align:right">0.234&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POPG&lt;/td>
&lt;td style="text-align:right">17&lt;/td>
&lt;td style="text-align:right">0.233&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>If your choice for &lt;code>N&lt;/code> strongly differs, compare it with the calibration criterion
and use the tested value for the packaged fallback workflow.&lt;/p>
&lt;/p>
&lt;/details>
&lt;details class="spoiler " id="spoiler-5">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> environment variablers for defining the reaction coordinate&lt;/summary>
&lt;p>&lt;p>The scan measures ξ&lt;sub>ch&lt;/sub> on an intact trajectory for candidate slice
counts. A passing value with an intact mean near 0.2–0.25 stays well separated
from a connected defect at ξ&lt;sub>ch&lt;/sub>≈1. The full scan can be reproduced with
&lt;code>--submit&lt;/code>, then &lt;code>--collect&lt;/code> after its Slurm array finishes.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;code>coordinate.env&lt;/code> setting&lt;/th>
&lt;th>Meaning and default&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_N&lt;/code>&lt;/td>
&lt;td>number of slices; important!&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_D&lt;/code>&lt;/td>
&lt;td>slice thickness, 0.2 nm for MARTINI, 0.1 nm for all-atom&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_CYL_R&lt;/code>&lt;/td>
&lt;td>cylinder radius, typically ~1.0 nm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Advanced options:&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_ZETA&lt;/code>&lt;/td>
&lt;td>fraction to which a slice is filled upon addition of the first atom, 0.75&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_NST_OUTPUT&lt;/code>&lt;/td>
&lt;td>coordinate-output interval written to stdout&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_FREEZE_CYLINDER_X/Y&lt;/code>&lt;/td>
&lt;td>freeze lateral position of the cylinder at these x and y positions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_FREEZE_CYLINDER_XIREF&lt;/code>&lt;/td>
&lt;td>freezes cylinder laterally only if reference positino of ξ&lt;sub>ch&lt;/sub> is below this value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_COUNTERFORCE&lt;/code>&lt;/td>
&lt;td>applies the balancing coordinate force&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SLICE_COORD_CYLINDER_FORCE&lt;/code>&lt;/td>
&lt;td>includes the radial cylinder-boundary force&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The MDP files defines the atom groups used to compute ξ&lt;sub>ch&lt;/sub>: Here, we use
&lt;code>Solvent&lt;/code> as group of polar atoms (contributing to ξ&lt;sub>ch&lt;/sub>) and &lt;code>tails&lt;/code> as
the membrane reference pull group. (For all-atom simulations a good choice for the polar atoms
is the water oxygens and lipid phosphate oxygens.) In this workshop with Martini 3, we use
coarse-grained water beads (plus counterions for POPG) as polar atoms; &lt;code>Phosphates&lt;/code> is
supplied for inspection.&lt;/p>
&lt;p>The lateral cylinder position is frozen at the box centre while
ξ&lt;sub>ch&lt;/sub>&amp;lt;0.7. After that, the cylinder may move in the membrane plane, which is important
since also the defect may laterally travel in the membrane plane. This behavious is critital
to avoid undesired hysteresis effects.&lt;/p>
&lt;/p>
&lt;/details>
&lt;h2 id="3-choose-the-opening-rate">3. Choose the opening rate&lt;/h2>
&lt;p>The pore-opening pulling simulation moves the harmonic-restraint centre from
ξ&lt;sub>ch&lt;/sub>=0.1 to 1.0. Inspect the timestep and number of steps in the MDP file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">grep -E &lt;span class="s1">&amp;#39;^[[:space:]]*(dt|nsteps|pull-coord1-init)&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/opening.mdp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>First calculate the duration &lt;code>dt × nsteps&lt;/code> in ps. Then calculate:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">pull rate = (desired final value − initial value) / duration in ps
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>CHOOSE_OPENING_RATE_XI_PER_PS&lt;/code> in the MDP file with your result and test it. An
incorrect value is safe here: the validator reports the endpoint and refuses to
prepare a simulation until it is close to 1.0.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="si">${&lt;/span>&lt;span class="nv">EDITOR&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">nano&lt;/span>&lt;span class="si">}&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/opening.mdp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/04_validate_configuration.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Revise the rate if validation fails. Reveal the solution only after making a
first calculation.&lt;/p>
&lt;details class="spoiler " id="spoiler-6">
&lt;summary>Show the opening-rate solution&lt;/summary>
&lt;p>&lt;p>&lt;code>dt = 0.015 ps&lt;/code> and &lt;code>nsteps = 1,333,333&lt;/code> give approximately 20,000 ps.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">(1.0 − 0.1) / 20,000 ps = 4.5 × 10⁻⁵ ps⁻¹
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Enter &lt;code>4.5e-05&lt;/code> as &lt;code>pull-coord1-rate&lt;/code>, then rerun
&lt;code>04_validate_configuration.sh&lt;/code>.&lt;/p>
&lt;/p>
&lt;/details>
&lt;p>Once both choices validate, prepare and submit. Here the &lt;code>prepare&lt;/code> and &lt;code>submit&lt;/code> scripts essentially run the Gromacs commands &lt;code>gmx grompp&lt;/code> and &lt;code>gmx mdrun&lt;/code>, but help you with getting files into the right folders:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/05_prepare_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/06_submit_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/07_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If the status says your opening is complete, select it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/07_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --select-own
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If it is still queued or running, select the validated opening simulation for the same
membrane instead:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/07_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --use-fallback
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;details class="spoiler " id="spoiler-7">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> opening restraint, MDP flags, and saved data&lt;/summary>
&lt;p>&lt;p>The opening simuliation is a nonequilibrium simulation, using constant-velocity pulling fromξ&lt;sub>ch&lt;/sub>=0.1 to ξ&lt;sub>ch&lt;/sub>=1.0. This simulation is used below to obtain starting frames for umbrella sampling. For Gromacs users, here the MDP parameters used to the pulling simulation:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;code>opening.mdp&lt;/code> setting&lt;/th>
&lt;th>Purpose&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>integrator = md&lt;/code>&lt;/td>
&lt;td>molecular-dynamics integrator&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>dt = 0.015 ps&lt;/code>&lt;/td>
&lt;td>integration step, 15 fs used here with Martini&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>nsteps = 1333333&lt;/code>&lt;/td>
&lt;td>fixed 20 ns duration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-geometry = pore-slices&lt;/code>&lt;/td>
&lt;td>chain coordinate for polar-defect connectivity&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-group1-name = tails&lt;/code>&lt;/td>
&lt;td>pull group 1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-group2-name = Solvent&lt;/code>&lt;/td>
&lt;td>pull group 2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-groups = 1 2&lt;/code>&lt;/td>
&lt;td>Use pull groups 1 and 2 as membrane reference and polar atoms, respectively&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-dim = N N Y&lt;/code>&lt;/td>
&lt;td>coordinate acts along the membrane normal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-init = 0.1&lt;/code>&lt;/td>
&lt;td>initial restraint centre&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-rate&lt;/code>&lt;/td>
&lt;td>participant-selected motion in ξ&lt;sub>ch&lt;/sub> per ps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-coord1-k = 3000&lt;/code>&lt;/td>
&lt;td>force constant along ξ&lt;sub>ch&lt;/sub>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pull-nstxout/fout = 50&lt;/code>&lt;/td>
&lt;td>coordinate and force output every 0.75 ps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>nstxout-compressed = 3300&lt;/code>&lt;/td>
&lt;td>structure every 49.5 ps&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The validator checks duration, endpoint, groups, geometry, and output cadence.
The frame selector uses measured ξ&lt;sub>ch&lt;/sub> rather than assuming that the membrane
follows the moving target without lag. It assigns one distinct opening frame to
each umbrella target.&lt;/p>
&lt;!-- The small tail-only reference group makes the
default PBC reference atom unambiguous for these tested systems. For a new or
larger system, follow the extended chain-coordinate tutorial and explicitly
choose a tail-tip `pull-group1-pbcatom`. -->
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">grep -E &lt;span class="s1">&amp;#39;nsteps|pull-nstfout|pull-coord1-(geometry|init|rate|k)&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/opening/opening.mdp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/p>
&lt;/details>
&lt;p>GROMACS writes the coordinate to &lt;code>opening_pullx.xvg&lt;/code> and the applied
force to &lt;code>opening_pullf.xvg&lt;/code>. Take a look, e.g. with xmgrace:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">xmgrace opening_pullx.xvg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>and inspect the simulation with VMD. Do you see the pore?&lt;/p>
&lt;h2 id="4-generate-and-submit-the-umbrella-sampling-simulations">4. Generate and submit the umbrella sampling simulations&lt;/h2>
&lt;p>Umbrella windows restrain the system at neighboring ξ&lt;sub>ch&lt;/sub> values. From each window,
a histogram along ξ&lt;sub>ch&lt;/sub> is collected. From all histograms the PMF is computed with
the so-called weighted histogram analysis method (WHAM).&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Nucleation umbrella centres and force constants"
src="https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/assets/window-grid.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/08_generate_window_grid.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/10_submit_windows.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/11_status.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This creates 27 independent umbrella windows, each simulated for 2 ns. Slurm starts each one when a GPU is
available.&lt;/p>
&lt;details class="spoiler " id="spoiler-8">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> window spacing, force constants, generated files, and Slurm&lt;/summary>
&lt;p>&lt;p>To optimally sample the critical regions along the pore formation process, we do not use equidistant umbrella windows.
Instead, at at small ξ&lt;sub>ch&lt;/sub>, where the membrane is still intact, we use fewer windows (with smaller force constants);
at larger ξ&lt;sub>ch&lt;/sub>, where the defects is (nearly) connected, we use tighter windows (with larger force constants). The regional table expands to targets from
ξ&lt;sub>ch&lt;/sub>=0.065 to 1.0, so nobody edits 27 MDP
files manually.&lt;/p>
&lt;p>The umbrella master fixes &lt;code>dt = 0.015 ps&lt;/code>, &lt;code>nsteps = 133333&lt;/code>, zero pull rate,
&lt;code>pore-slices&lt;/code> geometry, and force output every 0.75 ps. The representative
preview shows MDP settings for one early window, one intermediate, and one late umbrella window:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./scripts/09_prepare_representatives.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --preview
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">column -t -s &lt;span class="s1">$&amp;#39;\t&amp;#39;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/window-regions.tsv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">less &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/state/window-grid.tsv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">grep -H -E &lt;span class="s1">&amp;#39;pull-coord1-(geometry|init|k)&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>/state/representative-preview/*/umbrella.mdp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each Slurm task extracts its assigned frame, carries out an energy minimization,
creates a run-input TPR file, and runs in its own directory. Production &lt;code>mdrun&lt;/code> commands use a
bound &lt;code>srun&lt;/code> step with explicit CPU and GPU binding so co-located tasks do not
compete for the same CPU cores.&lt;/p>
&lt;/p>
&lt;/details>
&lt;p>&lt;a href="#see-the-result">See the result →&lt;/a>&lt;/p>
&lt;hr>
&lt;h1 id="see-the-result">See the result&lt;/h1>
&lt;h2 id="inspect-a-prepared-result">Inspect a prepared result&lt;/h2>
&lt;p>If your simulations are still running, first inspect the prepared result for
the same membrane:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cat &lt;span class="s2">&amp;#34;reference/results/&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">/analysis-summary.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Open &lt;code>reference/results/$SYSTEM/report.html&lt;/code> in a browser. A useful result has:&lt;/p>
&lt;ol>
&lt;li>all 27 windows completed;&lt;/li>
&lt;li>connected overlap between every neighboring pair;&lt;/li>
&lt;li>a PMF shown with uncertainty only over the sampled ξ&lt;sub>ch&lt;/sub> range.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Connected umbrella distributions and an invalid gap"
src="https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/assets/overlap.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="analyze-your-result">Analyze your result&lt;/h2>
&lt;p>Restore &lt;code>RUN&lt;/code>, check completion, and build your report:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">RUN&lt;/span>&lt;span class="o">=&lt;/span>/home/alice/alice-popc-small
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/11_status.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/12_analyze.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then open &lt;code>$RUN/analysis/report.html&lt;/code>. You now have the complete workflow from
an equilibrated membrane to a diagnosed pore-nucleation PMF.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
&lt;p>Congratulations, you carried out pulling simulations and umbrella sampling simulations along ξ&lt;sub>ch&lt;/sub>
to compute the PMF of pore formation with the MARTINI force field.&lt;/p>
&lt;p>A few points to keep in mind:&lt;/p>
&lt;ul>
&lt;li>We used short simulations, hence the PMF is not fully converged.&lt;/li>
&lt;li>MARTINI works remarkably well for certain applictions, but may have severe shortcomings for other applications. Therefore, compare below with PMFs from all-atom simulations.&lt;/li>
&lt;li>We restricted the tutorial to pore nucleation but did not study pore expansion.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;h2 id="critically-compare-pmf-of-pore-formation-obtaind-with-martini-with-pmf-from-all-atom-simulations">Critically compare PMF of pore formation obtaind with MARTINI with PMF from all-atom simulations&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Atomistic CHARMM36 PMFs for tensionless phosphatidylglycerol membranes" srcset="
/chain-coordinate-workshop/pore/assets/ting-2018-figure-s1_hu510333d16683ec3b5e44c04cf2ab46df_54264_92fab08980a9e2161c569e52e8793051.webp 400w,
/chain-coordinate-workshop/pore/assets/ting-2018-figure-s1_hu510333d16683ec3b5e44c04cf2ab46df_54264_ad0ed242b6fa30b36afaa5a0856f6199.webp 760w,
/chain-coordinate-workshop/pore/assets/ting-2018-figure-s1_hu510333d16683ec3b5e44c04cf2ab46df_54264_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://biophys.uni-saarland.de/chain-coordinate-workshop/pore/assets/ting-2018-figure-s1_hu510333d16683ec3b5e44c04cf2ab46df_54264_92fab08980a9e2161c569e52e8793051.webp"
width="760"
height="584"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>Figure S1 from Ting et al., PRL 2018: atomistic CHARMM36 PMFs for phosphatidylglycerol (PG) membranes.&lt;/em>&lt;/p>
&lt;p>This figure shows PMF of pore formation obtained with all-atom simulations. Check also &lt;a href="https://biophys.uni-saarland.de/storage/publication/Ting_PhysRevLett2018.pdf" target="_blank" rel="noopener">the PDF of Ting et al.&lt;/a> for PMFs with PC lipids. Note the local minima of the PMFs
at ξ&lt;sub>ch&lt;/sub> =1. What do these minima imply, for instance with respect to the life time of open pores?&lt;/p>
&lt;p>Do you see such minimal in the PMFs obtained with MARTINI? Comare with your colleagues who possibly simulated other lipid types.&lt;/p>
&lt;p>What can you say about the free energy cost of pore formation in MARTINI compared to all-atom CHARMM36 simulations? Note that $kT \approx 2.5 \mathrm{kJ/mol}$. Note that the probability of pore formation follows:&lt;/p>
&lt;p>$$
P_\mathrm{pore} \propto \exp(-\Delta G/k_B T),
$$&lt;/p>
&lt;p>where $\Delta G$ is the free energy of pore formation. By which factor is the probability of pore formation underestimated by Martini?&lt;/p>
&lt;details class="spoiler " id="spoiler-10">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> WHAM, edge support, uncertainty, and convergence&lt;/summary>
&lt;p>&lt;p>The analysis uses 400–2000 ps, discarding the first 20% for equilibration. WHAM
combines the umbrella histograms after checking that adjacent windows overlap.
It performs 50 rounds of bootstrapping for computing errors and compares the first and
second halves of the retained interval.&lt;/p>
&lt;p>An empty endpoint bin can look like an unphysical PMF drop. The script therefore
finds the sampled range first, requires at least 20 aggregate force records at
each reported edge, and withholds the report if any zero-count bin remains.
The supported endpoint can be slightly below ξ&lt;sub>ch&lt;/sub>=1 and differs by
membrane.&lt;/p>
&lt;p>Inspect the diagnostics directly with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cat &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/analysis/analysis-summary.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">column -t &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/analysis/overlap-summary.tsv&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> less
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">grep -RE &lt;span class="s1">&amp;#39;Fatal error|Segmentation fault|CUDA error&amp;#39;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">find &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/windows&amp;#34;&lt;/span> -name &lt;span class="s1">&amp;#39;pullf.xvg&amp;#39;&lt;/span> -size +0c &lt;span class="p">|&lt;/span> wc -l
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>A smooth PMF is does not imply convergence. Things to critically check include: Do histograms overlap?
Do PMFs obtained from different time blocks agree? Is the uncertainty from bootstrapping
acceptable? The 2 ns simulations carried out here are certaintly quite short, and longer
simulations are needed for full convergence. For all-atom simulatinos we typically carry out 150 ns per
umbrella window.&lt;/p>
&lt;/p>
&lt;/details>
&lt;h2 id="next-form-a-stalk">Next: form a stalk&lt;/h2>
&lt;p>Now that you have used the chain coordinate to describe pore formation, apply
the same principles to a different topological transition: stalk formation
between two facing membranes. The simulations use separate files, but the
coordinate-calibration, umbrella-sampling, and PMF concepts carry over.&lt;/p>
&lt;p>&lt;a class="btn btn-primary" href="../stalk/" role="button">Continue to Part 2: stalk formation →&lt;/a>&lt;/p>
&lt;h2 id="optional-continue-with-pore-expansion">Optional: continue with pore expansion&lt;/h2>
&lt;p>The workshop stops at a connected polar defect. The
&lt;a href="https://gitlab.com/cbjh/gromacs-chain-coordinate/-/tree/main/documentation-chain-coord/Example-pore-expansion" target="_blank" rel="noopener">extended GROMACS Chain Coordinate example&lt;/a>
continues with the joint reaction coordinate ξ&lt;sub>p&lt;/sub> for pore nucleation and expansion, including its smooth
switch from ξ&lt;sub>ch&lt;/sub> to pore-radius expansion, and provides a more
extensive tutorial.&lt;/p>
&lt;p>&lt;a href="#optional-advanced-reference">Optional advanced reference →&lt;/a>&lt;/p>
&lt;hr>
&lt;h1 id="optional-advanced-reference">Optional advanced reference&lt;/h1>
&lt;p>This page is optional lookup material.&lt;/p>
&lt;h2 id="essential-terms">Essential terms&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Term&lt;/th>
&lt;th>Meaning here&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ξ&lt;sub>ch&lt;/sub>&lt;/td>
&lt;td>chain coordinate: fraction of polar-occupied cylinder slices&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ξ&lt;sub>p&lt;/sub>&lt;/td>
&lt;td>joint coordinate that switches from ξ&lt;sub>ch&lt;/sub> to pore-radius expansion&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>polar defect&lt;/td>
&lt;td>water and headgroups penetrating the hydrophobic core&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>opening&lt;/td>
&lt;td>moving-restraint path used to create starting structures&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>umbrella window&lt;/td>
&lt;td>equilibrium simulation restrained near one coordinate value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PMF&lt;/td>
&lt;td>potential of mean force along a reaction coordinate&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>overlap&lt;/td>
&lt;td>neighboring windows sampling common coordinate values&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WHAM&lt;/td>
&lt;td>method that combines the biased window histograms&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;details class="spoiler " id="spoiler-11">
&lt;summary>&lt;span class='cbjh-focus-font'>Advanced:&lt;/span> complete command sheet&lt;/summary>
&lt;p>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">SYSTEM&lt;/span>&lt;span class="o">=&lt;/span>popc-small &lt;span class="c1"># replace with one listed system ID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">RUN&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>realpath -m &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$PWD&lt;/span>&lt;span class="s2">/../&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">USER&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">SYSTEM&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/00_preflight.sh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/01_create_run.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$SYSTEM&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/02_inspect_system.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --reference
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="si">${&lt;/span>&lt;span class="nv">EDITOR&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">nano&lt;/span>&lt;span class="si">}&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/coordinate.env&amp;#34;&lt;/span> &lt;span class="c1"># enter your provisional N&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --check-choice
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/03_scan_slices.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --solution &lt;span class="c1"># reveal only after choosing&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="si">${&lt;/span>&lt;span class="nv">EDITOR&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">nano&lt;/span>&lt;span class="si">}&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">/input/opening.mdp&amp;#34;&lt;/span> &lt;span class="c1"># calculate and test the rate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/04_validate_configuration.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/05_prepare_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/06_submit_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/07_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Select exactly one opening source:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/07_check_opening.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --select-own
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># or: ./scripts/07_check_opening.sh &amp;#34;$RUN&amp;#34; --use-fallback&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/08_generate_window_grid.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/09_prepare_representatives.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> --preview
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/10_submit_windows.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/11_status.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./scripts/12_analyze.sh &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$RUN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Stop before interpretation if the patched GROMACS executable is wrong, an
index group is missing, &lt;code>grompp&lt;/code> warns, a placeholder remains, a window fails,
two starting structures are identical, or adjacent histograms have a gap.&lt;/p>
&lt;/p>
&lt;/details>
&lt;p>&lt;a href="#sources-and-further-reading">Sources and further reading →&lt;/a>&lt;/p>
&lt;hr>
&lt;h1 id="sources-and-further-reading">Sources and further reading&lt;/h1>
&lt;h2 id="reaction-coordinate">Reaction coordinate&lt;/h2>
&lt;p>Hub, J. S. and Awasthi, N. (2017). “Probing a Continuous Polar Defect: A
Reaction Coordinate for Pore Formation in Lipid Membranes.” &lt;em>Journal of Chemical
Theory and Computation&lt;/em>.
&lt;a href="https://doi.org/10.1021/acs.jctc.7b00106" target="_blank" rel="noopener">DOI: 10.1021/acs.jctc.7b00106&lt;/a>&lt;/p>
&lt;p>Hub, J. S. (2021). “Joint Reaction Coordinate for Computing the Free-Energy
Landscape of Pore Nucleation and Pore Expansion in Lipid Membranes.” &lt;em>Journal of
Chemical Theory and Computation&lt;/em>.
&lt;a href="https://doi.org/10.1021/acs.jctc.0c01134" target="_blank" rel="noopener">DOI: 10.1021/acs.jctc.0c01134&lt;/a> ·
&lt;a href="https://biophys.uni-saarland.de/storage/publication/Hub_JCTC_2021.pdf" target="_blank" rel="noopener">group-hosted PDF&lt;/a>&lt;/p>
&lt;p>Hub group. “Example system illustrating how to use the joint reaction
coordinate for pore formation and expansion.”
&lt;a href="https://gitlab.com/cbjh/gromacs-chain-coordinate/-/tree/main/documentation-chain-coord/Example-pore-expansion" target="_blank" rel="noopener">GROMACS Chain Coordinate tutorial&lt;/a>&lt;/p>
&lt;h2 id="applications-and-interpretation">Applications and interpretation&lt;/h2>
&lt;p>Ting, C. L., Awasthi, N., Müller, M., and Hub, J. S. (2018). “Metastable
Prepores in Tension-Free Lipid Bilayers.” &lt;em>Physical Review Letters&lt;/em> 120,
128103. &lt;a href="https://doi.org/10.1103/PhysRevLett.120.128103" target="_blank" rel="noopener">DOI: 10.1103/PhysRevLett.120.128103&lt;/a> ·
&lt;a href="https://biophys.uni-saarland.de/storage/publication/Ting_PhysRevLett2018_SI.pdf" target="_blank" rel="noopener">Supporting information&lt;/a>&lt;/p>
&lt;p>Starke, S., Allolio, C., and Hub, J. S. (2025). “How pore formation in complex
biological membranes is governed by lipid composition, mechanics, and lateral
sorting.” &lt;em>PNAS Nexus&lt;/em>.
&lt;a href="https://doi.org/10.1093/pnasnexus/pgaf033" target="_blank" rel="noopener">DOI: 10.1093/pnasnexus/pgaf033&lt;/a>&lt;/p>
&lt;h2 id="foundations-convergence-and-finite-size-effects">Foundations, convergence, and finite size effects&lt;/h2>
&lt;p>Awasthi, N. and Hub, J. S. (2016). “Simulations of Pore Formation in Lipid
Membranes: Reaction Coordinates, Convergence, Hysteresis, and Finite-Size
Effects.” &lt;em>Journal of Chemical Theory and Computation&lt;/em>.
&lt;a href="https://doi.org/10.1021/acs.jctc.6b00369" target="_blank" rel="noopener">DOI: 10.1021/acs.jctc.6b00369&lt;/a>&lt;/p>
&lt;p>The published coordinate and pore-state images are adapted from Hub, JCTC
2021. The atomistic PMF comparison is Figure S1 from the supporting information
of Ting &lt;em>et al.&lt;/em>, PRL 2018. Software versions and system provenance are recorded
in &lt;code>PROVENANCE.md&lt;/code>.&lt;/p>
&lt;h2 id="md-simulations-with-gromacs-visualization">MD simulations with Gromacs, visualization&lt;/h2>
&lt;p>University of Illinois. &lt;a href="https://www.ks.uiuc.edu/Research/vmd/alpha/" target="_blank" rel="noopener">VMD alpha downloads&lt;/a>
and &lt;a href="https://www.ks.uiuc.edu/Research/vmd/vmd-1.3/ug/node264.html" target="_blank" rel="noopener">VMD command-line options&lt;/a>.
VMD accepts a PDB structure on its command line and can append a trajectory to
that molecule.&lt;/p>
&lt;p>GROMACS 2021 documentation for
&lt;a href="https://manual.gromacs.org/documentation/2021/onlinehelp/gmx-trjconv.html" target="_blank" rel="noopener">&lt;code>gmx trjconv&lt;/code>&lt;/a>
and
&lt;a href="https://manual.gromacs.org/2021-current/onlinehelp/gmx-editconf.html" target="_blank" rel="noopener">&lt;code>gmx editconf&lt;/code>&lt;/a>.
The &lt;code>-conect&lt;/code> option writes PDB bond records for non-standard molecules such as
coarse-grained lipids; &lt;code>-pbc whole&lt;/code> makes broken bonded molecules whole.&lt;/p>
&lt;p>SSHFS project. &lt;a href="https://github.com/libfuse/sshfs" target="_blank" rel="noopener">SSHFS usage and installation&lt;/a>.
SSHFS exposes a remote SFTP directory as a local filesystem using
&lt;code>sshfs user@host:directory mountpoint&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="continue-to-stalk-formation">Continue to stalk formation&lt;/h2>
&lt;p>You have completed Part 1. Continue with the second chain-coordinate workflow.&lt;/p>
&lt;p>&lt;a class="btn btn-primary" href="../stalk/" role="button">Continue to Part 2: stalk formation →&lt;/a>&lt;/p></description></item></channel></rss>