---
name: "gmx-gangle"
section: "1"
platform: "linux"
package: "gromacs-data"
version: "2025.2-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gmx-gangle"
---

# gmx-gangle(1)

Calculate angles

## NAME

gmx-gangle - Calculate angles

## SYNOPSIS

```
gmx gangle [-f [<.xtc/.trr/...>]] [-s [<.tpr/.gro/...>]] [-n [<.ndx>]]
           [-oav [<.xvg>]] [-oall [<.xvg>]] [-oh [<.xvg>]]
           [-b <time>] [-e <time>] [-dt <time>] [-tu <enum>]
           [-fgroup <selection>] [-xvg <enum>] [-[no]rmpbc]
           [-[no]pbc] [-sf <file>] [-selrpos <enum>]
           [-seltype <enum>] [-g1 <enum>] [-g2 <enum>] [-binw <real>]
           [-group1 <selection>] [-group2 <selection>]
```

## DESCRIPTION

**gmx gangle** computes different types of angles between vectors. It supports both vectors defined by two positions and normals of planes defined by three positions. The z axis or the local normal of a sphere can also be used as one of the vectors. There are also convenience options 'angle' and 'dihedral' for calculating bond angles and dihedrals defined by three/four positions.

The type of the angle is specified with **-g1** and **-g2**. If **-g1** is **angle** or **dihedral**, **-g2** should not be specified. In this case, **-group1** should specify one or more selections, and each should contain triplets or quartets of positions that define the angles to be calculated.

If **-g1** is **vector** or **plane**, **-group1** should specify selections that contain either pairs (**vector**) or triplets (**plane**) of positions. For vectors, the positions set the endpoints of the vector, and for planes, the three positions are used to calculate the normal of the plane. In both cases, **-g2** specifies the other vector to use (see below).

With **-g2 vector** or **-g2 plane**, **-group2** should specify another set of vectors. **-group1** and **-group2** should specify the same number of selections. It is also allowed to only have a single selection for one of the options, in which case the same selection is used with each selection in the other group. Similarly, for each selection in **-group1**, the corresponding selection in **-group2** should specify the same number of vectors or a single vector. In the latter case, the angle is calculated between that single vector and each vector from the other selection.

With **-g2 sphnorm**, each selection in **-group2** should specify a single position that is the center of the sphere. The second vector is calculated as the vector from the center to the midpoint of the positions specified by **-group1**.

With **-g2 z**, **-group2** is not necessary, and angles between the first vectors and the positive Z axis are calculated.

With **-g2 t0**, **-group2** is not necessary, and angles are calculated from the vectors as they are in the first frame.

There are three options for output: **-oav** writes an xvg file with the time and the average angle for each frame. **-oall** writes all the individual angles. **-oh** writes a histogram of the angles. The bin width can be set with **-binw**. For **-oav** and **-oh**, separate average/histogram is computed for each selection in **-group1**.

## OPTIONS

Options to specify input files:

- **-f \[\<.xtc/.trr/...\>\] (traj.xtc) (Optional)**

  Input trajectory or single configuration: *xtc* *trr* *cpt* *gro* *g96* *pdb* *tng*

- **-s \[\<.tpr/.gro/...\>\] (topol.tpr) (Optional)**

  Input structure: *tpr* *gro* *g96* *pdb* brk ent

- **-n \[\<.ndx\>\] (index.ndx) (Optional)**

  Extra index groups

Options to specify output files:

- **-oav \[\<.xvg\>\] (angaver.xvg) (Optional)**

  Average angles as a function of time

- **-oall \[\<.xvg\>\] (angles.xvg) (Optional)**

  All angles as a function of time

- **-oh \[\<.xvg\>\] (anghist.xvg) (Optional)**

  Histogram of the angles

Other options:

- **-b \<time\> (0)**

  First frame (ps) to read from trajectory

- **-e \<time\> (0)**

  Last frame (ps) to read from trajectory

- **-dt \<time\> (0)**

  Only use frame if t MOD dt == first time (ps)

- **-tu \<enum\> (ps)**

  Unit for time values: fs, ps, ns, us, ms, s

- **-fgroup \<selection\>**

  Atoms stored in the trajectory file (if not set, assume first N atoms)

- **-xvg \<enum\> (xmgrace)**

  Plot formatting: xmgrace, xmgr, none

- **-\[no\]rmpbc (yes)**

  Make molecules whole for each frame

- **-\[no\]pbc (yes)**

  Use periodic boundary conditions for distance calculation

- **-sf \<file\>**

  Provide selections from files

- **-selrpos \<enum\> (atom)**

  Selection reference positions: atom, res\_com, res\_cog, mol\_com, mol\_cog, whole\_res\_com, whole\_res\_cog, whole\_mol\_com, whole\_mol\_cog, part\_res\_com, part\_res\_cog, part\_mol\_com, part\_mol\_cog, dyn\_res\_com, dyn\_res\_cog, dyn\_mol\_com, dyn\_mol\_cog

- **-seltype \<enum\> (atom)**

  Default selection output positions: atom, res\_com, res\_cog, mol\_com, mol\_cog, whole\_res\_com, whole\_res\_cog, whole\_mol\_com, whole\_mol\_cog, part\_res\_com, part\_res\_cog, part\_mol\_com, part\_mol\_cog, dyn\_res\_com, dyn\_res\_cog, dyn\_mol\_com, dyn\_mol\_cog

- **-g1 \<enum\> (angle)**

  Type of analysis/first vector group: angle, dihedral, vector, plane

- **-g2 \<enum\> (none)**

  Type of second vector group: none, vector, plane, t0, z, sphnorm

- **-binw \<real\> (1)**

  Binwidth for -oh in degrees

- **-group1 \<selection\>**

  First analysis/vector selection

- **-group2 \<selection\>**

  Second analysis/vector selection

## SEE ALSO

**[gmx(1)](/gmx/1.md)**

More information about GROMACS is available at \<*http://www.gromacs.org/*\>.

## COPYRIGHT

2025, GROMACS development team
