pyadmd 3.2.2__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. {pyadmd-3.2.2/src/pyadmd.egg-info → pyadmd-3.3.0}/PKG-INFO +124 -111
  2. {pyadmd-3.2.2 → pyadmd-3.3.0}/README.md +123 -110
  3. {pyadmd-3.2.2 → pyadmd-3.3.0}/pyproject.toml +1 -1
  4. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/__init__.py +1 -1
  5. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/analysis/analyzer.py +271 -2
  6. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/charmm/wrt-nm.mdu +3 -3
  7. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/cli/commands.py +12 -24
  8. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/cli/main.py +1 -1
  9. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/cli/parser.py +99 -75
  10. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/console.py +1 -1
  11. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/fel/calculator.py +332 -389
  12. pyadmd-3.3.0/src/pyadmd/modes/projection.py +251 -0
  13. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/simulation/engine.py +68 -12
  14. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/simulation/runner.py +8 -2
  15. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/utils.py +5 -3
  16. {pyadmd-3.2.2 → pyadmd-3.3.0/src/pyadmd.egg-info}/PKG-INFO +124 -111
  17. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd.egg-info/SOURCES.txt +1 -0
  18. {pyadmd-3.2.2 → pyadmd-3.3.0}/LICENSE +0 -0
  19. {pyadmd-3.2.2 → pyadmd-3.3.0}/setup.cfg +0 -0
  20. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/__main__.py +0 -0
  21. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/analysis/__init__.py +0 -0
  22. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/analysis/completion.py +0 -0
  23. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/charmm/charmm_toppar.zip +0 -0
  24. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/cli/__init__.py +0 -0
  25. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/constants.py +0 -0
  26. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/enm/__init__.py +0 -0
  27. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/enm/analysis.py +0 -0
  28. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/enm/calculator.py +0 -0
  29. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/fel/__init__.py +0 -0
  30. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/fel/completion.py +0 -0
  31. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/geometry.py +0 -0
  32. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/__init__.py +0 -0
  33. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/dcd.py +0 -0
  34. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/namd.py +0 -0
  35. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/openmm_restart.py +0 -0
  36. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/params.py +0 -0
  37. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/io/state.py +0 -0
  38. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/modes/__init__.py +0 -0
  39. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/modes/exciter.py +0 -0
  40. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/simulation/__init__.py +0 -0
  41. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd/simulation/system_builder.py +0 -0
  42. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd.egg-info/dependency_links.txt +0 -0
  43. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd.egg-info/entry_points.txt +0 -0
  44. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd.egg-info/requires.txt +0 -0
  45. {pyadmd-3.2.2 → pyadmd-3.3.0}/src/pyadmd.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyadmd
3
- Version: 3.2.2
3
+ Version: 3.3.0
4
4
  Summary: Adaptive Molecular Dynamics with Excited Normal Modes (aMDeNM) on OpenMM.
5
5
  Author-email: Pedro Túlio Resende-Lara <laraptr@unicamp.br>
6
6
  License-Expression: GPL-3.0-or-later
@@ -104,13 +104,13 @@ The **Adaptive Molecular Dynamics with Excited Normal Modes (aMDeNM)** method ap
104
104
  - [Extending a Previous Free Energy Calculation](#extending-a-previous-free-energy-calculation)
105
105
  - [Output Structure](#output-structure-1)
106
106
  - [Directory Organization](#directory-organization-1)
107
- - [Output Files Description](#output-files-description-1)
107
+ - [Output Files Description](#output-files-description-1)
108
108
  - [Analysis](#analysis-1)
109
109
  - [Basic Structural Properties Calculated](#basic-structural-properties-calculated)
110
- - [Analysis Modes](#analysis-modes)
111
- - [Standard Analysis](#standard-analysis)
112
- - [Rough Analysis](#rough-analysis)
113
- - [Selective Analysis (Skip Flags)](#selective-analysis-skip-flags)
110
+ - [Analysis Modes](#analysis-modes)
111
+ - [Standard Analysis](#standard-analysis)
112
+ - [Rough Analysis](#rough-analysis)
113
+ - [Selective Analysis (Skip Flags)](#selective-analysis-skip-flags)
114
114
  - [Trajectory Source](#trajectory-source)
115
115
  - [Handling Incomplete Units](#handling-incomplete-units)
116
116
  - [Configuration Parameters](#configuration-parameters)
@@ -384,7 +384,7 @@ $$
384
384
 
385
385
  where $`\mathbf{M}_{\mathrm{nm}}^+`$ denotes the Moore–Penrose pseudoinverse of $`\mathbf{M}_{\mathrm{nm}}`$. These approximate coefficients are written to the `factors.csv` output file for reference but do not influence the simulation; the physical vectors $`\mathbf{q}_i`$ are used directly as excitation directions.
386
386
 
387
- **Reproducibility:** the only stochastic step in this procedure is the initial placement of the $`P`$ points on $`S^{N-1}`$ before the repulsion loop runs (skipped entirely when $`P=2N`$, see above). This is now controlled by a seeded RNG (`-seed`/`--seed`, default `42`), so `pyadmd run` calls with identical arguments produce identical excitation vectors and `factors.csv` — see [Run Parameters](#parameters).
387
+ **Reproducibility:** the only stochastic step in this procedure is the initial placement of the $`P`$ points on $`S^{N-1}`$ before the repulsion loop runs (skipped entirely when $`P=2N`$, see above). This is controlled by a seeded RNG (`-seed`/`--seed`, default `42`), so `pyadmd run` calls with identical arguments produce identical excitation vectors and `factors.csv` — see [Run Parameters](#parameters).
388
388
 
389
389
  **Note:** ENM recomputation under `--recalc` (see [Excitation Direction Update](#excitation-direction-update)) draws a *new* random combination each time it fires and is intentionally **not** covered by `--seed`, since its purpose is to re-diversify the excitation direction mid-simulation.
390
390
 
@@ -479,7 +479,7 @@ Create an atom selection to apply the energy injection using *[MDAnalysis select
479
479
 
480
480
  - **`-rep`/`--replicas`**: Number of replicas to run (**optional**. Default: **`10`**)
481
481
 
482
- - **`-seed`/`--seed`**: Random seed for the uniform mode-combination generation (the repulsion-algorithm initialization described in [Uniform Normal Modes Combination](#uniform-normal-modes-combination)) (**optional**. Default: **`42`**). Fixing this makes `run` reproducible: identical CLI arguments always produce identical excitation vectors and `factors.csv`. Pass a different value to obtain an independent replicate ensemble. Does **not** affect the `--recalc` mid-simulation re-excitation, which remains stochastic by design — see [Excitation Direction Update](#excitation-direction-update).
482
+ - **`-seed`/`--seed`**: Random seed for the uniform mode-combination generation (the repulsion-algorithm initialization described in [Uniform Normal Modes Combination](#uniform-normal-modes-combination)) (**optional**. Default: **`42`**). Fixing this value makes `run` more reproducible: identical CLI arguments always produce identical excitation vectors and `factors.csv`. Pass a different value to obtain an independent replicate ensemble. Does **not** affect the `--recalc` mid-simulation re-excitation, which remains stochastic by design — see [Excitation Direction Update](#excitation-direction-update). **Note:** fixing the random seed will create the same start conditions to `run`, but the simulation will diverge after a given point due to stochasticity and floating point precision.
483
483
 
484
484
  ### Files
485
485
  `pyadmd run` automatically creates the `inputs/` directory in the current
@@ -502,13 +502,13 @@ below into it.
502
502
  - **`-rst`/`--rstfile`**: OpenMM XML restart file (`.rst`), written via `XmlSerializer.serialize(state)` from a state built with `getPositions=True, getVelocities=True`
503
503
 
504
504
  ### Feature Flags
505
- - **`-n`/`--no_correc`**: Disable excitation vector direction correction and compute standard MDeNM
505
+ - **`-n`/`--no-correc`**: Disable excitation vector direction correction and compute standard MDeNM
506
506
 
507
507
  - **`-f`/`--fixed`**: Disable excitation vector correction and keep constant excitation energy injections
508
508
 
509
509
  - **`-r`/`--recalc`**: Recompute ENM modes instead of correcting the excitation vector direction. **Note:** the new mode combination generated after each recomputation is drawn from a fresh random unit vector and is not controlled by `-seed`/`--seed` — see [Excitation Direction Update](#excitation-direction-update).
510
510
 
511
- - **`--full_ener`**: Write per-term energy decomposition (BOND, ANGLE, DIHED, IMPRP, CMAP, UBREY, NBFIX, NONBONDED, etc.) to `rep{N}_ener_decomp.log` every cycle
511
+ - **`--full-ener`**: Write per-term energy decomposition (BOND, ANGLE, DIHED, IMPRP, CMAP, UBREY, NBFIX, NONBONDED, etc.) to `rep{N}_ener_decomp.log` every cycle
512
512
 
513
513
  ## Append
514
514
  ### Parameters
@@ -517,15 +517,15 @@ below into it.
517
517
  ## Free Energy
518
518
  All parameters are optional; the `fel` subcommand reads its input trajectories and reference state from files already produced by `run`/`restart`/`append`, so no additional files need to be supplied.
519
519
 
520
- - **`-c`/`--cutoff`**: GROMOS RMSD clustering cutoff, in Å (**optional**. Default: **`0.8`**)
520
+ - **`-c`/`--cutoff`**: GROMOS RMSD clustering cutoff, in Å (**optional**. Default: **`1.0`**)
521
521
  - **`-d`/`--deexcite`**: Total restrained de-excitation MD length per centroid, in ps, split evenly over 4 restraint phases (**optional**. Default: **`200`**)
522
522
  - **`-p`/`--production`**: Unrestrained production MD length per centroid, in ps (**optional**. Default: **`800`**)
523
523
  - **`-nm`/`--modes`**: Comma-separated mode indices to project for the FEL (**optional**. Default: same modes used in `run`, *e.g.* `7,8,9`)
524
- - **`--modes_2d`**: Mode pairs for 2D FEL plots, as space-separated `"m1,m2"` tokens, *e.g.* `"7,8 7,9 8,9"` (**optional**. Default: all pairwise combinations of `--modes`)
525
- - **`-b`/`--bins`**: Number of histogram bins used for the FEL (**optional**. Default: **`50`**)
524
+ - **`--modes-2d`**: Mode pairs for 2D FEL plots, as space-separated `"m1,m2"` tokens (**optional**. Default: all pairwise combinations of --modes, *e.g.* "7,8 7,9 8,9")
525
+ - **`-b`/`--bins`**: Number of histogram bins used for the FEL (**optional**. Default: **`100`**)
526
526
  - **`-T`/`--temp`**: Temperature for k<sub>B</sub>T scaling and the production ensemble, in K (**optional**. Default: **`303.15`**)
527
527
  - **`-s`/`--sel`**: MDAnalysis selection string used for GROMOS RMSD clustering (**optional**. Default: **`"protein and name CA"`**)
528
- - **`--max_centroids`**: Maximum number of centroids submitted to MD. When the cluster count exceeds this value, exactly this many centroids are selected by greedy farthest-point (MaxMin) sampling to maximize conformational diversity (**optional**. Default: **`50`**)
528
+ - **`--max-centroids`**: Maximum number of centroids submitted to MD. When the cluster count exceeds this value, exactly this many centroids are selected by greedy farthest-point (MaxMin) sampling to maximize conformational diversity (**optional**. Default: **`50`**)
529
529
 
530
530
  **Note:** `-s`/`--sel` and `-T`/`--temp` must stay the same across repeated `fel` calls on the same simulation — see [Extending a Previous Free Energy Calculation](#extending-a-previous-free-energy-calculation). This `-s`/`--sel` selection is independent of `run`'s `-sel`/`--selection`: it controls GROMOS clustering only, while `run`'s selection controls both energy injection and (by default) the scope of most `pyadmd analyze` metrics — see [Analysis Selection Scope](#analysis-selection-scope).
531
531
 
@@ -539,19 +539,20 @@ All parameters are optional; the `fel` subcommand reads its input trajectories a
539
539
  ### Skip Flags
540
540
  Each analysis step can be independently disabled. When skipped, that metric will not appear in any CSV, plot, or HTML summary output.
541
541
 
542
- - **`--no_rmsd`**: Skip RMSD calculation
543
- - **`--no_rg`**: Skip radius of gyration calculation
544
- - **`--no_sasa`**: Skip SASA and hydrophobic exposure calculation
545
- - **`--no_rmsf`**: Skip RMSF calculation
546
- - **`--no_dssp`**: Skip secondary structure analysis via DSSP
547
- - **`--no_dccm`**: Skip DCCM (dynamic cross-correlation matrix) calculation
548
- - **`--no_lmi`**: Skip LMI (Linear Mutual Information) calculation
542
+ - **`--no-rmsd`**: Skip RMSD calculation
543
+ - **`--no-rg`**: Skip radius of gyration calculation
544
+ - **`--no-sasa`**: Skip SASA and hydrophobic exposure calculation
545
+ - **`--no-rmsf`**: Skip RMSF calculation
546
+ - **`--no-dssp`**: Skip secondary structure analysis via DSSP
547
+ - **`--no-dccm`**: Skip DCCM (dynamic cross-correlation matrix) calculation
548
+ - **`--no-lmi`**: Skip LMI (Linear Mutual Information) calculation
549
+ - **`--no-modeproj`**: Skip mode-projection analysis
549
550
 
550
551
  **Note:** Before analysis, the program checks if `pyadmd` or `fel` calls are properly completed. If any unit (pyAdMD replica or free energy centroid) hasn't finished running, `analyze` prints a warning listing the incomplete units and their cycles completed/target, but proceeds anyway — see [Handling Incomplete Units](#handling-incomplete-units) below.
551
552
 
552
553
  ## ENM
553
554
  ### Parameters
554
- - **`-i`/`--input`**: Input PDB file (**required**, unless **`-w`/`--write_modes`** is used)
555
+ - **`-i`/`--input`**: Input PDB file (**required**, unless **`-w`/`--write-modes`** is used)
555
556
 
556
557
  - **`-o`/`--output`**: Output folder name (**optional**. Default: **`output`**)
557
558
 
@@ -561,25 +562,25 @@ Each analysis step can be independently disabled. When skipped, that metric will
561
562
 
562
563
  - **`-c`/`--cutoff`**: Interaction cutoff distance, in Å (**optional**. Default: **`15.0`** for CA, **`12.0`** for HEAVY)
563
564
 
564
- - **`-k`/`--spring_constant`**: ENM harmonic spring constant, in kcal/mol/Ų (**optional**. Default: **`1.0`**)
565
+ - **`-k`/`--spring-constant`**: ENM harmonic spring constant, in kcal/mol/Ų (**optional**. Default: **`1.0`**)
565
566
 
566
- - **`--max_modes`**: Number of non-rigid-body vibrational modes to compute (**optional**. Default: **`50`**)
567
+ - **`--max-modes`**: Number of non-rigid-body vibrational modes to compute (**optional**. Default: **`50`**)
567
568
 
568
- - **`--output_modes`**: Number of modes (file-labeled 1 through N, where label 1 is the first non-rigid mode) to write vectors/trajectories for (**optional**. Default: **`10`**)
569
+ - **`--output-modes`**: Number of modes (file-labeled 1 through N, where label 1 is the first non-rigid mode) to write vectors/trajectories for (**optional**. Default: **`10`**)
569
570
 
570
571
  ### Skip Flags
571
572
  Collectivity, contributions, RMSF, DCCM, and mode vector/trajectory writing can each be independently disabled:
572
573
 
573
- - **`--no_nm_vec`**: Skip writing mode vectors (`.xyz`)
574
- - **`--no_nm_trj`**: Skip writing mode trajectories (`_traj.pdb`)
575
- - **`--no_collectivity`**: Skip mode collectivity calculation
576
- - **`--no_contributions`**: Skip the variance-contributions plot
577
- - **`--no_rmsf`**: Skip the NMA-predicted RMSF plot (analytical, from the harmonic approximation — not derived from an MD trajectory; see [Analysis](#analysis-1) for the trajectory-based RMSF computed elsewhere in the package)
578
- - **`--no_dccm`**: Skip the NMA-predicted DCCM plot (same analytical distinction as RMSF above)
579
- - **`--no_gpu`**: Disable GPU acceleration
574
+ - **`--no-vec`**: Skip writing mode vectors (`.xyz`)
575
+ - **`--no-trj`**: Skip writing mode trajectories (`_traj.pdb`)
576
+ - **`--no-collectivity`**: Skip mode collectivity calculation
577
+ - **`--no-contributions`**: Skip the variance-contributions plot
578
+ - **`--no-rmsf`**: Skip the NMA-predicted RMSF plot (analytical, from the harmonic approximation — not derived from an MD trajectory; see [Analysis](#analysis-1) for the trajectory-based RMSF computed elsewhere in the package)
579
+ - **`--no-dccm`**: Skip the NMA-predicted DCCM plot (same analytical distinction as RMSF above)
580
+ - **`--no-gpu`**: Disable GPU acceleration
580
581
 
581
582
  ### Post-hoc Mode Re-writer
582
- - **`-w`/`--write_modes`**: Write mode vectors/trajectories from a previously completed `enm` run's saved `*_modes.npy`/`*_frequencies.npy`/structure PDB, without recomputing the ENM. Accepts comma-separated integers and inclusive ranges (`start:end`), *e.g.* `"26,41"`, `"7:10"`, `"42,44:50"`. Requires **`-o`/`--output`** pointing to an existing `enm` output directory.
583
+ - **`-w`/`--write-modes`**: Write mode vectors/trajectories from a previously completed `enm` run's saved `*_modes.npy`/`*_frequencies.npy`/structure PDB, without recomputing the ENM. Accepts comma-separated integers and inclusive ranges (`start:end`), *e.g.* `"26,41"`, `"7:10"`, `"42,44:50"`. Requires **`-o`/`--output`** pointing to an existing `enm` output directory.
583
584
 
584
585
  **Note on mode-file resolution:** `pyadmd enm`'s mode vector/trajectory files (`_mode_{N}.xyz`/`_mode_{N}_traj.pdb`) are written at the ENM's **native reduced resolution** (Cα-only or heavy-atom only, matching whatever the modes were computed on).
585
586
 
@@ -590,21 +591,21 @@ enm_output/
590
591
  ├── {base_name}_{model}_structure.pdb # reduced‑resolution structure (Cα or heavy atoms)
591
592
  ├── {base_name}_{model}_frequencies.npy # vibrational frequencies (filtered, non‑rigid modes)
592
593
  ├── {base_name}_{model}_modes.npy # eigenvector matrix (filtered, non‑rigid modes)
593
- ├── collectivity.csv # per‑mode collectivity (κ) and frequency (cm⁻¹) (omitted with --no_collectivity)
594
- ├── mode_contributions.png # per‑mode and cumulative variance contributions (omitted with --no_contributions)
595
- ├── rmsf_plot.png # NMA‑predicted residue RMSF (harmonic approximation) (omitted with --no_rmsf)
596
- ├── dccm_plot.png # NMA‑predicted residue cross‑correlation matrix (omitted with --no_dccm)
597
- ├── dccm_matrix.npy # raw NMA‑DCCM matrix (omitted with --no_dccm)
598
- ├── {base_name}_{model}_mode_{N}.xyz # displacement vector of mode N (XYZ format) (omitted with --no_nm_vec)
599
- └── {base_name}_{model}_mode_{N}_traj.pdb # oscillatory PDB trajectory along mode N (multi‑model) (omitted with --no_nm_trj)
594
+ ├── collectivity.csv # per‑mode collectivity (κ) and frequency (cm⁻¹) (omitted with --no-collectivity)
595
+ ├── mode_contributions.png # per‑mode and cumulative variance contributions (omitted with --no-contributions)
596
+ ├── rmsf_plot.png # NMA‑predicted residue RMSF (harmonic approximation) (omitted with --no-rmsf)
597
+ ├── dccm_plot.png # NMA‑predicted residue cross‑correlation matrix (omitted with --no-dccm)
598
+ ├── dccm_matrix.npy # raw NMA‑DCCM matrix (omitted with --no-dccm)
599
+ ├── {base_name}_{model}_mode_{N}.xyz # displacement vector of mode N (XYZ format) (omitted with --no-vec)
600
+ └── {base_name}_{model}_mode_{N}_traj.pdb # oscillatory PDB trajectory along mode N (multi‑model) (omitted with --no-trj)
600
601
  ```
601
602
 
602
603
 
603
604
  **Notes:**
604
605
  - `{base_name}` is the stem of the input PDB file (e.g., `system`).
605
606
  - `{model}` is either `ca` (Cα‑only) or `heavy` (heavy atoms).
606
- - The mode vector and trajectory files are written only for the modes specified by `‑‑output_modes` (default: first 10 non‑rigid modes).
607
- - The `-w` / `‑‑write_modes` option re‑uses an existing output directory to write **additional** mode files (vectors/trajectories) without recomputing the ENM.
607
+ - The mode vector and trajectory files are written only for the modes specified by `‑‑output-modes` (default: first 10 non‑rigid modes).
608
+ - The `-w` / `‑‑write-modes` option re‑uses an existing output directory to write **additional** mode files (vectors/trajectories) without recomputing the ENM.
608
609
 
609
610
  ### Output Files Description
610
611
 
@@ -614,17 +615,17 @@ enm_output/
614
615
  - **`{base_name}_{model}_modes.npy`**: 2D array of shape `(3N, M)`, where column `i` is the mass‑weighted eigenvector for mode `i` (matching the order of `frequencies`). These two NumPy files enable fast post‑hoc re‑writing of vectors/trajectories via `-w`.
615
616
 
616
617
  2. **Collectivity and Variance Contributions**
617
- - **`collectivity.csv`**: CSV with columns `Mode`, `Frequency (cm⁻¹)`, and `Collectivity`. Omitted with `‑‑no_collectivity`.
618
- - **`mode_contributions.png`**: Two‑panel figure showing (left) the proportion of total mean‑square fluctuation contributed by each of the first `‑‑max_modes` non‑rigid modes (proportional to `1/λ_k` under equipartition), and (right) the cumulative fraction. Omitted with `‑‑no_contributions`.
618
+ - **`collectivity.csv`**: CSV with columns `Mode`, `Frequency (cm⁻¹)`, and `Collectivity`. Omitted with `‑‑no-collectivity`.
619
+ - **`mode_contributions.png`**: Two‑panel figure showing (left) the proportion of total mean‑square fluctuation contributed by each of the first `‑‑max-modes` non‑rigid modes (proportional to `1/λ_k` under equipartition), and (right) the cumulative fraction. Omitted with `‑‑no-contributions`.
619
620
 
620
621
  3. **NMA‑Predicted RMSF and DCCM**
621
- - **`rmsf_plot.png`**: Residue‑averaged root‑mean‑square fluctuation (Å) derived from the harmonic approximation. The plot is based on the sum over modes of `(kBT/λ_k) * |u_i^(k)|² / m_i`. Omitted with `‑‑no_rmsf`.
622
+ - **`rmsf_plot.png`**: Residue‑averaged root‑mean‑square fluctuation (Å) derived from the harmonic approximation. The plot is based on the sum over modes of `(kBT/λ_k) * |u_i^(k)|² / m_i`. Omitted with `‑‑no-rmsf`.
622
623
  - **`dccm_plot.png`**: DCCM heatmap, diverging colormap (red = fully correlated, white = uncorrelated, blue = fully anti-correlated).
623
- - **`dccm_matrix.npy`**: Raw correlation matrix, saved alongside the plot. Both are omitted with `‑‑no_dccm`.
624
+ - **`dccm_matrix.npy`**: Raw correlation matrix, saved alongside the plot. Both are omitted with `‑‑no-dccm`.
624
625
 
625
626
  4. **Mode‑Specific Vector and Trajectory Files**
626
- - **`{base_name}_{model}_mode_{N}.xyz`**: XYZ‑formatted file listing the displacement vector for mode `N`. The header includes the mode frequency in cm⁻¹. Omitted with `‑‑no_nm_vec`.
627
- - **`{base_name}_{model}_mode_{N}_traj.pdb`**: Multi‑model PDB showing a smooth oscillation along mode `N`. The trajectory is mass‑weighted and scaled to a peak amplitude (default 4 Å). Omitted with `‑‑no_nm_trj`.
627
+ - **`{base_name}_{model}_mode_{N}.xyz`**: XYZ‑formatted file listing the displacement vector for mode `N`. The header includes the mode frequency in cm⁻¹. Omitted with `‑‑no-vec`.
628
+ - **`{base_name}_{model}_mode_{N}_traj.pdb`**: Multi‑model PDB showing a smooth oscillation along mode `N`. The trajectory is mass‑weighted and scaled to a peak amplitude (default 4 Å). Omitted with `‑‑no-trj`.
628
629
 
629
630
  **Note:** When using the post‑hoc mode re‑writer (`pyadmd enm -w "..." -o enm_output`), only the mode‑specific vector and trajectory files are newly written for the requested modes; all other files (core data, collectivity, plots) are left untouched and must already exist from a previous full ENM run.
630
631
 
@@ -636,17 +637,21 @@ The **`fel`** subcommand computes a free energy landscape (FEL) from a completed
636
637
 
637
638
  ## Method Overview
638
639
  1. **Merge trajectories**: all `rep*.dcd` replica trajectories are concatenated into a single pseudo-trajectory.
639
- 2. **GROMOS clustering**: frames are clustered by Cα RMSD (`-s`/`-c`); when the number of clusters exceeds `--max_centroids`, a maximally diverse subset is selected via greedy farthest-point (MaxMin) sampling on the cluster centroids.
640
- 3. **Centroid MD**: each centroid undergoes a 4-phase restrained de-excitation (`-d`, progressively decreasing positional restraints on backbone and sidechain heavy atoms) followed by unrestrained production MD (`-p`).
640
+ 2. **GROMOS clustering**: frames are clustered by Cα RMSD (`-s`/`-c`); when the number of clusters exceeds `--max-centroids`, a maximally diverse subset is selected via greedy farthest-point (MaxMin) sampling on the cluster centroids.
641
+ 3. **Centroid MD**: each centroid undergoes a 4-phase NVT restrained
642
+ de-excitation (`-d`, progressively decreasing positional restraints on
643
+ backbone and sidechain heavy atoms) followed by unrestrained NPT production
644
+ MD (`-p`). Each de-excitation phase is further split into a
645
+ 30%/20%/30%/20% pattern of nominal restraint / brief relief dip, where the dip targets a gentler restraint level rather than the nominal one, periodically releasing local strain due to the force constraints. If a centroid's de-excitation fails, it is automatically retried using an alternative member frame from the same cluster (up to 4 substitutes), and if all of those also fail, retried once more with a reinforced integrator ($`1 fs`$ timestep, $`5 ps^{-1}`$ friction, applied to de-excitation only) before the centroid is finally marked failed and excluded from the FEL.
641
646
  4. **Mode projection**: every production frame is projected onto each individual normal mode vector as a signed mass-weighted RMS displacement.
642
- 5. **FEL computation**: a population histogram (`-b` bins) is converted to $`\Delta G`$ via $`\Delta G = -k_{BT} \cdot ln[P(q)/P_{max}]`$, computed independently per mode (1D) and for user-specified mode pairs (2D, `--modes_2d`).
647
+ 5. **FEL computation**: a population histogram (`-b` bins) is converted to $`\Delta G`$ via $`\Delta G = -k_{BT} \cdot ln[P(q)/P_{max}]`$, computed independently per mode (1D) and for user-specified mode pairs (2D, `--modes-2d`).
643
648
 
644
649
  ## Extending a Previous Free Energy Calculation
645
- `fel` can be re-invoked on the same simulation with a larger `--max_centroids` and/or longer `-p`/`--production` to extend an earlier calculation, rather than starting over:
650
+ `fel` can be re-invoked on the same simulation with a larger `--max-centroids` and/or longer `-p`/`--production` to extend an earlier calculation, rather than starting over:
646
651
 
647
652
  - **Free to change**: `-c`/`--cutoff` and `-d`/`--deexcite`. Changing the cutoff only affects the re-thresholding of the cached pairwise-RMSD matrix. Changing the de-excitation length only affects newly-created centroids going forward; existing centroids keep whatever de-excitation they originally had and are simply extended in production.
648
653
  - **Must stay the same**: `-s`/`--sel`, `-T`/`--temp`. Mixing clustering selections or temperatures inside one pooled FEL is not physically valid.
649
- - **Never shrinks existing work**: if `--max_centroids` or `-p`/`--production` is *smaller* than the previous call, the program warns and uses the larger of the two values instead. We suggest start with smaller values and append more data, if necessary.
654
+ - **Never shrinks existing work**: if `--max-centroids` or `-p`/`--production` is *smaller* than the previous call, the program warns and uses the larger of the two values instead. We suggest start with smaller values and append more data, if necessary.
650
655
 
651
656
  ## Output Structure
652
657
  ### Directory Organization
@@ -656,7 +661,7 @@ fel/
656
661
  ├── clustering_rmsd_cache.npz # cached pairwise-RMSD matrix (reused across calls)
657
662
  ├── clustering_rmsd_cache.json # cache validity metadata (selection, frame count, stride)
658
663
  ├── clustering_summary.csv # per-cluster frame index, size, and production status
659
- ├── projections_mode[N].npy # raw mode projections (Å)
664
+ ├── mode_projections.csv # combined per-frame mode projections (centroid_frame, time, mode_N...)
660
665
  ├── fel_mode[N].csv # 1D FEL data (coordinate, ΔG)
661
666
  ├── fel_mode[N]_plot.png # 1D FEL plot
662
667
  ├── fel_2d_mode[N]_mode[M].png # 2D FEL plot for a mode pair
@@ -669,16 +674,19 @@ fel/
669
674
  └── checkpoint.chk # periodic (every 10 cycles) checkpoint
670
675
  ```
671
676
 
672
- ## Output Files Description
677
+ ### Output Files Description
673
678
  1. **Cache Files**
674
- - **`run_metadata.json`**: the clustering selection, temperature, cutoff, de-excitation length, `max_centroids`, and production length used.
675
- - **`clustering_rmsd_cache.npz`/`.json`**: the pairwise-RMSD matrix over subsampled frames.
676
- - **`clustering_summary.csv`**: summary containing cluster ID, frame index, cluster size, status this run (fresh/extended/skipped), and cycles/ps completed.
679
+ - **`run_metadata.json`**: the clustering selection, temperature, cutoff, de-excitation length, `max-centroids`, and production length used.
680
+ - **`clustering_rmsd_cache.npz`/`.json`**: the pairwise-RMSD matrix over subsampled frames.
681
+ - **`clustering_summary.csv`**: summary containing cluster ID, frame index, cluster size, status this run (`fresh`/`extended`/`skipped`/`failed`, annotated with `substitute frame {N}` and/or `reinforced` when a centroid needed those fallbacks), `source_frame_used` (the frame whose coordinates actually produced a successful run — equal to `centroid_frame` unless a substitute member was used), `md_attempts` (total attempts across the standard and reinforced passes), and cycles/ps completed. A `status` of `failed` means every attempt (original frame + substitutes, standard + reinforced settings) failed; that centroid is excluded from the FEL rather than blocking the run.
682
+ - **`mode_projections.csv`**: every production frame's signed mass-weighted MRMS displacement (Å) along each mode in `--modes`, one row per `(centroid_frame, time)` pair, columns `centroid_frame, time, mode_{N}, ...`. Reused directly by `pyadmd analyze -src fel`'s mode-projection analysis (see [Analysis](#analysis-1)) whenever it already covers every mode that call needs, skipping recomputation entirely.
683
+
677
684
  2. **Plot Files**
678
- - **`fel_mode[N].csv`/`fel_mode[N]_plot.png`**: 1D free energy landscape per mode, in Å and kcal/mol.
679
- - **`fel_2d_mode[N]_mode[M].png`**: 2D free energy landscape for a mode pair.
685
+ - **`fel_mode[N].csv`/`fel_mode[N]_plot.png`**: 1D free energy landscape per mode, in Å and kcal/mol.
686
+ - **`fel_2d_mode[N]_mode[M].png`**: 2D free energy landscape for a mode pair.
687
+
680
688
  3. **HTML Summary**
681
- - **`fel_summary.html`**: interactive summary with protocol parameters, per-mode FEL statistics, per-centroid production status, and embedded plots.
689
+ - **`fel_summary.html`**: interactive summary with protocol parameters, per-mode FEL statistics, per-centroid production status, and embedded plots.
682
690
 
683
691
  [Back to top ↩](#)
684
692
  * ****
@@ -700,22 +708,24 @@ The PyAdMD **`analysis`** module provides comprehensive analysis capabilities fo
700
708
 
701
709
  6. **Secondary Structure Content:** Calculates secondary structure elements using DSSP. Tracks helix, sheet, coil, turn, and other structural elements over time and reports the number of residues in each secondary structure type.
702
710
 
703
- 7. **Dynamic Cross-Correlation Matrix (DCCM):** Measures pairwise linear correlation of Cα residue motions after Kabsch superposition to remove rigid-body rotation/translation. Values range from +1 (fully correlated motion) through 0 (uncorrelated) to −1 (fully anti-correlated motion), useful for identifying coupled domains, allosteric communication paths, and correlated/anti-correlated collective motions.
711
+ 7. **Dynamic Cross-Correlation Matrix (DCCM):** Measures pairwise linear correlation of Cα residue motions after Kabsch superposition to remove rigid-body rotation/translation. Values range from $`+1`$ (fully correlated motion) through $`0`$ (uncorrelated) to $`−1`$ (fully anti-correlated motion), useful for identifying coupled domains, allosteric communication paths, and correlated/anti-correlated collective motions.
704
712
 
705
- 8. **Linear Mutual Information (LMI):** An alternative, signless measure of residue-residue coupling strength (range [0, 1]) computed via the Gaussian approximation of generalized correlation. Unlike DCCM, LMI reports strongly anti-correlated motion with the same high value as strongly correlated motion, since it measures total coupling rather than its direction.
713
+ 8. **Linear Mutual Information (LMI):** An alternative, signless measure of residue-residue coupling strength (range $`[0, 1]`$) computed via the Gaussian approximation of generalized correlation. Unlike DCCM, LMI reports strongly anti-correlated motion with the same high value as strongly correlated motion, since it measures total coupling rather than its direction.
706
714
 
707
- ## Analysis Modes
708
- ### Standard Analysis
715
+ 9. **Mode Projections:** Every analyzed frame's signed mass-weighted MRMS displacement (Å) along each individually excited normal mode. Pairs of excited modes are additionally visualized as 2D scatter plots colored by KDE density, useful for seeing which combinations of mode directions the trajectory actually populates.
716
+
717
+ ### Analysis Modes
718
+ #### Standard Analysis
709
719
  - Analyzes every frame of the trajectory
710
720
  - Provides the highest resolution data
711
721
  - May be computationally intensive
712
722
 
713
- ### Rough Analysis
714
- - Analyzes frames at *5ps* intervals
723
+ #### Rough Analysis
724
+ - Analyzes frames at $`5ps`$ intervals
715
725
  - Significantly reduces computation time
716
726
  - Suitable for quick overviews or large systems
717
727
 
718
- ### Selective Analysis (Skip Flags)
728
+ #### Selective Analysis (Skip Flags)
719
729
  Individual analyses can be disabled at the command line. This is useful when:
720
730
  - DSSP is not installed (avoid exception error)
721
731
  - Only a subset of metrics is needed (*e.g.* RMSD + RMSF only)
@@ -751,55 +761,58 @@ When `-src fel` is used, the shared production time axis (applied uniformly acro
751
761
  ```
752
762
  analysis/{fel/}
753
763
  ├── analysis_results.csv # Combined analysis data from all units
754
- ├── rmsf.csv # Combined RMSF data (omitted with --no_rmsf)
764
+ ├── rmsf.csv # Combined RMSF data (omitted with --no-rmsf)
765
+ ├── mode_projections.csv # Combined mode-projection data from all units (omitted with --no-modeproj)
766
+ ├── mode_proj_scatter_mode[N]_mode[M].png # KDE-colored scatter plot for a pair of excited modes (omitted with --no-modeproj)
755
767
  ├── analysis_summary.html # HTML summary report
756
- ├── rmsd_plot.png # RMSD plot (omitted with --no_rmsd)
757
- ├── radius_gyration_plot.png # Radius of gyration plot (omitted with --no_rg)
758
- ├── sasa_plot.png # SASA plot (omitted with --no_sasa)
759
- ├── hydrophobic_exposure_plot.png # Hydrophobic exposure plot (omitted with --no_sasa)
760
- ├── rmsf_average.png # Average RMSF plot (omitted with --no_rmsf)
761
- ├── secondary_structure_average.png # Average secondary structure plot (omitted with --no_dssp)
762
- ├── dccm_average.png # Average DCCM heatmap (omitted with --no_dccm)
763
- ├── dccm_average.npy # Average DCCM matrix, raw (omitted with --no_dccm)
764
- ├── lmi_average.png # Average LMI heatmap (omitted with --no_lmi)
765
- ├── lmi_average.npy # Average LMI matrix, raw (omitted with --no_lmi)
768
+ ├── rmsd_plot.png # RMSD plot (omitted with --no-rmsd)
769
+ ├── radius_gyration_plot.png # Radius of gyration plot (omitted with --no-rg)
770
+ ├── sasa_plot.png # SASA plot (omitted with --no-sasa)
771
+ ├── hydrophobic_exposure_plot.png # Hydrophobic exposure plot (omitted with --no-sasa)
772
+ ├── rmsf_average.png # Average RMSF plot (omitted with --no-rmsf)
773
+ ├── secondary_structure_average.png # Average secondary structure plot (omitted with --no-dssp)
774
+ ├── dccm_average.png # Average DCCM heatmap (omitted with --no-dccm)
775
+ ├── dccm_average.npy # Average DCCM matrix, raw (omitted with --no-dccm)
776
+ ├── lmi_average.png # Average LMI heatmap (omitted with --no-lmi)
777
+ ├── lmi_average.npy # Average LMI matrix, raw (omitted with --no-lmi)
766
778
  └── {rep[1-N]}/ or {centroid_frame[F]}/ # Unit-specific directories
767
779
  ├── analysis_results.csv # Unit-specific analysis data
768
- ├── rmsf.csv # Unit-specific RMSF data (omitted with --no_rmsf)
769
- ├── rmsd_plot.png # Unit-specific RMSD plot (omitted with --no_rmsd)
770
- ├── radius_gyration_plot.png # Unit-specific RoG plot (omitted with --no_rg)
771
- ├── sasa_plot.png # Unit-specific SASA plot (omitted with --no_sasa)
772
- ├── hydrophobic_exposure_plot.png # Unit-specific hydrophobic exposure plot (omitted with --no_sasa)
773
- ├── rmsf_plot.png # Unit-specific RMSF plot (omitted with --no_rmsf)
774
- ├── secondary_structure.png # Unit-specific secondary structure plot (omitted with --no_dssp)
775
- ├── dccm_matrix.npy # Unit-specific DCCM matrix, raw (omitted with --no_dccm)
776
- ├── dccm_plot.png # Unit-specific DCCM heatmap (omitted with --no_dccm)
777
- ├── lmi_matrix.npy # Unit-specific LMI matrix, raw (omitted with --no_lmi)
778
- └── lmi_plot.png # Unit-specific LMI heatmap (omitted with --no_lmi)
780
+ ├── rmsf.csv # Unit-specific RMSF data (omitted with --no-rmsf)
781
+ ├── rmsd_plot.png # Unit-specific RMSD plot (omitted with --no-rmsd)
782
+ ├── radius_gyration_plot.png # Unit-specific RoG plot (omitted with --no-rg)
783
+ ├── sasa_plot.png # Unit-specific SASA plot (omitted with --no-sasa)
784
+ ├── hydrophobic_exposure_plot.png # Unit-specific hydrophobic exposure plot (omitted with --no-sasa)
785
+ ├── rmsf_plot.png # Unit-specific RMSF plot (omitted with --no-rmsf)
786
+ ├── secondary_structure.png # Unit-specific secondary structure plot (omitted with --no-dssp)
787
+ ├── dccm_matrix.npy # Unit-specific DCCM matrix, raw (omitted with --no-dccm)
788
+ ├── dccm_plot.png # Unit-specific DCCM heatmap (omitted with --no-dccm)
789
+ ├── lmi_matrix.npy # Unit-specific LMI matrix, raw (omitted with --no-lmi)
790
+ └── lmi_plot.png # Unit-specific LMI heatmap (omitted with --no-lmi)
779
791
  ```
780
792
  **Note:** With `-src fel`, the same set of files is written under `analysis/fel/` instead, with one subdirectory per centroid (named by frame index, mirroring `fel/centroids/centroid_frame[F]/`) in place of `rep[1-N]/`.
781
793
 
782
794
  ## Output Files Description
783
795
  1. **CSV Files**
784
- - **`analysis_results.csv`:** Time-series data for RMSD, RoG, SASA, hydrophobic exposure, and secondary structure content
785
- - **`rmsf.csv`:** Per-residue RMSF values for all analyzed units (all replicas, or all centroids with `-src fel`)
796
+ - **`analysis_results.csv`:** Time-series data for RMSD, RoG, SASA, hydrophobic exposure, and secondary structure content
797
+ - **`rmsf.csv`:** Per-residue RMSF values for all analyzed units (all replicas, or all centroids with `-src fel`)
798
+ - **`mode_projections.csv`:** Combined per-frame mode-projection data across all analyzed units, columns `{unit_col}, time, mode_{N}, ...` where `{unit_col}` is `replica` (`-src pyadmd`) or `centroid_frame` (`-src fel`) and `mode_{N}` are the individual modes excited in `run` (`nm_parsed`). With `-src fel`, reused directly from `fel/mode_projections.csv` when that file already covers every needed mode, instead of being recomputed — see [Mode Projections](#mode-projections). Omitted with `--no-modeproj`.
786
799
 
787
800
  2. **Plot Files**
788
- - Individual property plots for each unit (replica, or centroid with `-src fel`)
789
- - Combined plots showing all units
790
- - Average plots across all units
801
+ - Individual property plots for each unit (replica, or centroid with `-src fel`)
802
+ - Combined plots showing all units
803
+ - Average plots across all units
804
+ - **`dccm_plot.png`** / **`dccm_average.png`**: DCCM heatmap, diverging colormap (red = fully correlated, white = uncorrelated, blue = fully anti-correlated).
805
+ - **`lmi_plot.png`** / **`lmi_average.png`**: LMI heatmap, sequential colormap (LMI has no sign).
806
+ - **`mode_proj_scatter_mode[N]_mode[M].png`:** One 2D scatter plot per pairwise combination of excited modes, pooling frames from every analyzed unit, colored by KDE density. Omitted with `--no-modeproj`.
791
807
 
792
808
  3. **Correlation Matrix Files**
793
- - **`dccm_matrix.npy`** (per-unit) / **`dccm_average.npy`** (cross-unit): raw (n_Cα × n_Cα) DCCM matrix, values in [-1, 1]. Omitted with `--no_dccm`.
794
- - **`dccm_plot.png`** / **`dccm_average.png`**: DCCM heatmap, diverging colormap (red = fully correlated, white = uncorrelated, blue = fully anti-correlated).
795
- - **`lmi_matrix.npy`** / **`lmi_average.npy`**: raw (n_Cα × n_Cα) LMI matrix, values in [0, 1]. Omitted with `--no_lmi`.
796
- - **`lmi_plot.png`** / **`lmi_average.png`**: LMI heatmap, sequential colormap (LMI has no sign).
809
+ - **`dccm_matrix.npy`** (per-unit) / **`dccm_average.npy`** (cross-unit): raw (n_Cα × n_Cα) DCCM matrix, values in $`[-1, 1]`$. Omitted with `--no-dccm`.
810
+ - **`lmi_matrix.npy`** / **`lmi_average.npy`**: raw (n_Cα × n_Cα) LMI matrix, values in $`[0, 1]`$. Omitted with `--no-lmi`.
797
811
 
798
812
  4. **HTML Summary**
799
- - Interactive summary report with tables and embedded plots
800
- - Statistics for each unit and averages across all units
801
- - An "Incomplete Units" section when any unit hadn't reached its target cycle count at analysis time (see [Handling Incomplete Units](#handling-incomplete-units))
802
- - Easy navigation and visualization of results
813
+ - Summary report with tables and embedded plots
814
+ - Statistics for each unit and averages across all units
815
+ - An "Incomplete Units" section when any unit hadn't reached its target cycle count at analysis time (see [Handling Incomplete Units](#handling-incomplete-units))
803
816
 
804
817
 
805
818
  Furthermore, some basic analyses are written inside each replica folder at the end of the simulation, they can be found as follows:
@@ -818,21 +831,21 @@ Example files are available at the **[tutorial](tutorial)** folder (human calmod
818
831
  ## Using OpenMM inputs and heavy atoms NMs
819
832
  ```
820
833
  pyadmd run -src OPENMM \
821
- -m HEAVY \
822
834
  -psf tutorial/system.psf \
823
835
  -rst tutorial/system.rst \
824
- -pdb tutorial/system.pdb
836
+ -pdb tutorial/system.pdb \
837
+ -m HEAVY
825
838
  ```
826
839
  ## Using NAMD inputs and Cα NMs with custom parameters
827
840
  ```
828
841
  pyadmd run -src NAMD \
829
- -m CA \
830
842
  -psf tutorial/system.psf \
831
843
  -pdb tutorial/system.pdb \
832
844
  -coor tutorial/system.coor \
833
845
  -vel tutorial/system.vel \
834
846
  -xsc tutorial/system.xsc \
835
847
  -str tutorial/system.str \
848
+ -m CA \
836
849
  -nm 7,8 \
837
850
  -ek 0.5 \
838
851
  -t 100 \
@@ -842,15 +855,15 @@ pyadmd run -src NAMD \
842
855
  ## Using NAMD inputs and CHARMM NMs without direction correction (standard MDeNM)
843
856
  ```
844
857
  pyadmd run -src NAMD \
845
- -m CHARMM \
846
- -mod tutorial/system.mod \
847
858
  -psf tutorial/system.psf \
848
859
  -pdb tutorial/system.pdb \
849
860
  -coor tutorial/system.coor \
850
861
  -vel tutorial/system.vel \
851
862
  -xsc tutorial/system.xsc \
852
863
  -str tutorial/system.str \
853
- --no_correc
864
+ -m CHARMM \
865
+ -mod tutorial/system.mod \
866
+ --no-correc
854
867
  ```
855
868
  ## Restart unfinished pyAdMD simulations
856
869
  ```
@@ -866,7 +879,7 @@ pyadmd analyze
866
879
  ```
867
880
  ## Analyze every 5 ps skipping DSSP and LMI
868
881
  ```
869
- pyadmd analyze -r --no_dssp --no_lmi
882
+ pyadmd analyze -r --no-dssp --no-lmi
870
883
  ```
871
884
  ## Compute a free energy landscape
872
885
  ```
@@ -874,7 +887,7 @@ pyadmd fel -c 2 -p 100
874
887
  ```
875
888
  ## Extend a previous free energy calculation with more centroids and production time
876
889
  ```
877
- pyadmd fel -c 2 -p 500 --max_centroids 100
890
+ pyadmd fel -c 2 -p 500 --max-centroids 100
878
891
  ```
879
892
  ## Compute a standalone ENM (Cα model, writing modes 7-16)
880
893
  ```