CMM 4/10/2026
Roughly follows Lipid Bilayer tutorial
Tarball for these examples
You must have the topology files of your new/non-standard molecules. in order to start this process. For example, for TTA, (martini_v3.0.0_TTA.itp):
;;;;;; Martini 3.0 lipid topology for TTA (dodecyl trimethyl ammonium)
;
; CMM 10/2025
;
; Molecular topology and mapping of indices:
; +NC3-C1A-C2A-C3A-C4A
;
; 1 - 2 - 3 - 4 - 5
;
; Name
; n-dodecyltrimethylammonium (TTA)
;
; Alias
; TTA
;
; Force field
; martini3
;
; Version
; 1.0
;
; Category
; Lipids
;
; INSANE BLOCK NEEDS TO ACTUALLY BE FORMED!!!!!!
;
;@INSANE alhead=C P, allink=G G, altail=CC CC, alname=DTPC, charge=0.0
;@RESNTEST DTP==DTPC if: atoms[0]==NC3
;@BEADS NC3 PO4 GL1 GL2 C1A C2A C1B C2B
;@BONDS NC3-PO4 PO4-GL1 PO4-GL2 GL1-GL2 GL1-C1A C1A-C2A GL2-C1B C1B-C2B
;
[moleculetype]
; molname nrexcl
TTA 1
[atoms] ; same as martini2
; id type resnr residu atom cgnr charge (mass)
1 Q1 1 TTA NC3 1 1.0
2 SC1 1 TTA C1A 2 0
3 SC1 1 TTA C2A 3 0
4 C1 1 TTA C3A 4 0
5 C1 1 TTA C4A 5 0
[bonds]
; i j funct length force c.
; taken from Badhe https://doi.org/10.1007/s00894-024-05952-x
; MARTINI3 :
;[bonds]
; i j name (using named bondtypes from martini_v3.0.0_ffbonded_v2.itp)
; i j funct force.c.
;
1 2 b_NC3_GL_def ; uncertain about this one!
2 3 b_SC1_C1_mid
3 4 b_SC1_C1_mid
4 5 b_SC1_C1_end
[ angles ]
; i j k funct angle force.c.
3 4 5 a_NC3_GL_C_def ; uncertain about this one!
1 3 4 a_C1_C1_C1_def
2 3 4 a_C1_C1_C1_def
The values/parameters from the .itp file may be found in the literature or other files — you may use an existing topology from the Martini Lipodome as a guide. The bond/force constant/angle values for this particular .itp file were found/inferred from Badhe, et al https://doi.org/10.1007/s00894-024-05952-x.
You must decide how to translate the molecule into martini3 beads; In this case it is easy as a Q1 bead is charged, and the NC3 name is commonly used for trimethylammonium ion. C1 beads represent 4 carbons, and SC1 represent 3, so C14 = 2xSC1 + 2xC1, Even with this mapping, different amphiphiles may not turn out to be unique; see the discussion in the tutorial, and realize that Martini3 makes this much less of a problem.
Using this particular set of files as a guide, it should be relatively simple to construct the corresponding gemini surfactant.
you must have the following files to make this work:
Assemble the TTA. adjust box size and number depending on what system (standard disclaimer)
/bin/bash $ gmx insert-molecules -ci TTA-em.gro -box 7.5 7.5 7.5 -nmol 128 -radius 0.21 -try 500 -o 128_TTA.gro
NOTE: If you are adding polyatomic anions such as benzoate or sulfate, you must use insert-molecules successively (instead of genion, below):
/bin/bash $ gmx insert-molecules -ci TTA-em.gro -box 10 10 10 -nmol 128 -radius 0.21 -try 500 -o 128_TTA.gro
/bin/bash $ gmx insert-molecules -ci BzO-0.gro -f 128_TTA.gro -box 10 10 10 -nmol 128 -radius 0.21 -try 500 -o 128_TTA_BzO.gro
Add martini water using solvate:
/bin/bash $ gmx solvate -cp 128_TTA_BzO.gro -cs water.gro -o 10.0mM_System.gro -maxsol 5000 -radius 0.21
The bilayer tutorial specification of 768 waters is not enough to create a realistic density; this creates an initial patchy association during minimization. For this reason, the 'maxsol' should be increased to some large number. It is not necessary to put too fine a point on this, as the process will stop at a reasonable density. You could do a rough calculation to decide on the total number of waters required for your box size. It is useful to remember that each W bead represents 4 water, and hence has a mass of 72. Here are some examples:
[ molecules ]
TTA 128
W 3241
Add the bromide ions using genion. You could add positive or negative ions, but in this example we will neutralize with bromides only. A good example of genion use may be found at http://www.mdtutorials.com/gmx/lysozyme/04_ions.html
You must generate an "ions.mdp" despite the fact that you aren't going to actually run anything at this time.
'genion' will ask which group to affect; you should pick the W group (which is probably group 3).
/bin/bash $ gmx grompp -f ions.mdp -c waterbox.gro -p 10.0mM_System.top -o ions.tpr
/bin/bash $ gmx genion -s ions.tpr -o 10.0mM_System.gro -p 10.0mM_System.top -nname BR- -neutral
If you examine your .top file, you should now see the BR- ions added to the end.
/bin/bash $ gmx grompp -f minimization.mdp -c 10.0mM_System.gro -p TTA.top -o 10.0mM_System.tpr
/bin/bash $ gmx mdrun -ntmpi 1 -s 10.0mM_System.tpr -v -c 10.0mM-min.gro
/bin/bash $ gmx grompp -f martini_eq.mdp -c 10.0mM-min.gro -p TTA.top -o 10.0mM-eq.tpr
/bin/bash $ gmx mdrun -ntmpi 4 -s 10.0mM-eq.tpr -v -x 10.0mM-eq.xtc -c 10.0mM-eq.gro
/bin/bash $ gmx grompp -f martini_md.mdp -c 10.0mM-eq.gro -p TTA.top -o 10.0mM-run.tpr
/bin/bash $ gmx mdrun -ntmpi 4 -s 10.0mM-run.tpr -v -x 10.0mM-run.xtc -c 10.0mM-run.gro
You can put all these commands into a file including some variables that allow you to change the concentration/box size, etc. Here is an example. You can save this file, make it executable, and call it like a program:
/bin/bash $ vi run_TTA_BzO_system.sh
…edit file appropriately
/bin/bash $ chmod 755 run_TTA_BzO_system.sh
… watch for output or errors
Use a python virtual environment to run martiniglass. The martiniglass GitHub page describes this. Assuming python (as python3) is installed on your (OS X) machine:
/bin/bash $ python3 -m venv venv && source venv/bin/activate
Once you've created this environment, a "(venv)" will be pre-prended to your cursor. Now you may install martiniglass:
(venv) /bin/bash $ pip install martiniglass
(you may be informed that pip could be upgraded; you could do this if you wanted to by following the instructions given.)
Here is a good example page. I'm assuming that your whole system (amphiphile + ion(s) + water) is described by the files 1.0mM_System.top and 1.0mM-run.gro (the output of the "run" stage). At the end, the files used for visualization and analysis will be named as 1.0mM-run-vis.xxx. It is very important that your martini glass-bound topology file ONLY contains include entries that refer to molecules in your system! This is not really stated anywhere in the documentation. Here is the sequence:
(venv) /bin/bash $ cp 1.0mM_System.top 1.0mM_vis.top
(edit 1.0mM_vis.top to):
#include "../../martini_v3.0.0_TTA.itp"
#include "../BzO_take2.itp"
[ system ]
TTA + BzO 1.0 mM (approx)
[ molecules ]
TTA 200
BzO 200
W 816266
The next step will separate the system components. The '-f' option starts this process using the simulation output gromacs file.
(venv) /bin/bash $ martiniglass -p 1.0mM_vis.top -f 1.0mM-run.gro
This will create the files
Importantly, index.ndx, indexes only the non-water parts of the system. Now, you must use this index file to strip out the waters from your original 1.0mM-run.xxx and put the result into 1.0mM-run-vis.xxx. There are a number of equivalent ways to do this, depending on whether you want to use a trajectory and tpr file, extract one frame from a trajectory, or convert a whole trajectory:
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.gro -s 1.0mM-run.gro -n index.ndx -o 1.0mM-run-vis.gro
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.xtc -s 1.0mM-run.tpr -pbc mol -n index.ndx -e 0 -o 1.0mM-run-vis.gro
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.xtc -s 1.0mM-run.tpr -pbc mol -n index.ndx -o 1.0mM-run-vis.xtc
Now, create the vmd input file 1.0mM-run-vis.vmd (by default, martiniglass creates "vis.vmd"):
(venv) /bin/bash $ martiniglass -p vis.top -vf
(venv) /bin/bash $ mv vis.vmd 1.0mM-run-vis.vmd
Finally, you can load the files into vmd:
(venv) /bin/bash $ vmd 1.0mM-run-vis.gro -e 1.0mM-run-vis.vmd
The trajectory may also be loaded into this representation. All the processed-for-visualization files will have XXX-run-vis.xxx naming convention. Later on, when we perform an aggregation analysis, it will be easy to use these conventions to further modify data as necessary. (Additional information/examples may be found here and here.)
As usual, this process may be automated (for the most part, easily) but putting commands into a file, and running this as a command. Here is an example for the visualization steps: "drymartini.sh".
Martiniglass by default creates many representations; most are un-needed by us. It would be nice to be able to edit or change what is included easily, but for now we have to make some changes in the representations. Find the representation with the lipids (POPC, POPE, etc) and change all those names to "TTA" (or just add TTA). You should see the polar tetraammonium head as purple (from the "name NC3 PO42 PO41 PO4 COO ROH" representation), and the HC tail(s) as grey tubes. If your system includes ions (BzO, for example), you can enter them most conveniently in the "resname CHOL" representation. The other representations besides these three may be turned off. I personally do not like the default colors, so I tend to change them.
If your amphiphiles won't show up as tubes — instead coming out as balls — something has gone wrong in the above process. Common errors include mixing topology files, or the ions being out of order in the topology and structure (.gro) file. If so, carefully troubleshoot and try again.
There can be a problem with visualizing trajectories. Sometimes atoms (beads) cross the periodic boundaries of the box and the molecule appears to stretch across the whole box, giving the appearance of box-length rods. See this link. Often, the initial input .gro file will cause a couple frames at the start of the trajectory to exhibit this; The best thing to do is to simply delete the first one or two frames. If the whole trajectory suffers from this problem (perhaps the "-pbc mol" switch wasn't used in the trajectory conversion above), it may be fixed by a form of periodic recentering (the proper -pbc setting was found by trial-and-error):
(venv) /bin/bash $ gmx trjconv -f TTA_50-md.xtc -s TTA_50-md.tpr -n TTA_50-md.ndx -pbc mol -ur compact -o vis-compact.xtc
(If you have problems of this sort, it is a good idea to test different combinations of the PBC/centering commands (of course .trr could be .xtc or .gro)
Commands are as follows:
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md.trr -o md1.trr -center -pbc whole -n index.ndx
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md1.trr -o md2.trr -pbc nojump -n index.ndx
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md2.trr -o md3.trr -pbc mol -ur compact -n index.ndx
This trajectory file can be read into the previous (static) vmd molecule (which utilized the single-frame .gro file) in order to produce a trajectory and/or movies.
Roughly follows Lipid Bilayer tutorial
Tarball for these examples
PRELUDE: Creating the primary files
You must have the topology files of your new/non-standard molecules. in order to start this process. For example, for TTA, (martini_v3.0.0_TTA.itp):
;;;;;; Martini 3.0 lipid topology for TTA (dodecyl trimethyl ammonium)
;
; CMM 10/2025
;
; Molecular topology and mapping of indices:
; +NC3-C1A-C2A-C3A-C4A
;
; 1 - 2 - 3 - 4 - 5
;
; Name
; n-dodecyltrimethylammonium (TTA)
;
; Alias
; TTA
;
; Force field
; martini3
;
; Version
; 1.0
;
; Category
; Lipids
;
; INSANE BLOCK NEEDS TO ACTUALLY BE FORMED!!!!!!
;
;@INSANE alhead=C P, allink=G G, altail=CC CC, alname=DTPC, charge=0.0
;@RESNTEST DTP==DTPC if: atoms[0]==NC3
;@BEADS NC3 PO4 GL1 GL2 C1A C2A C1B C2B
;@BONDS NC3-PO4 PO4-GL1 PO4-GL2 GL1-GL2 GL1-C1A C1A-C2A GL2-C1B C1B-C2B
;
[moleculetype]
; molname nrexcl
TTA 1
[atoms] ; same as martini2
; id type resnr residu atom cgnr charge (mass)
1 Q1 1 TTA NC3 1 1.0
2 SC1 1 TTA C1A 2 0
3 SC1 1 TTA C2A 3 0
4 C1 1 TTA C3A 4 0
5 C1 1 TTA C4A 5 0
[bonds]
; i j funct length force c.
; taken from Badhe https://doi.org/10.1007/s00894-024-05952-x
; MARTINI3 :
;[bonds]
; i j name (using named bondtypes from martini_v3.0.0_ffbonded_v2.itp)
; i j funct force.c.
;
1 2 b_NC3_GL_def ; uncertain about this one!
2 3 b_SC1_C1_mid
3 4 b_SC1_C1_mid
4 5 b_SC1_C1_end
[ angles ]
; i j k funct angle force.c.
3 4 5 a_NC3_GL_C_def ; uncertain about this one!
1 3 4 a_C1_C1_C1_def
2 3 4 a_C1_C1_C1_def
The values/parameters from the .itp file may be found in the literature or other files — you may use an existing topology from the Martini Lipodome as a guide. The bond/force constant/angle values for this particular .itp file were found/inferred from Badhe, et al https://doi.org/10.1007/s00894-024-05952-x.
You must decide how to translate the molecule into martini3 beads; In this case it is easy as a Q1 bead is charged, and the NC3 name is commonly used for trimethylammonium ion. C1 beads represent 4 carbons, and SC1 represent 3, so C14 = 2xSC1 + 2xC1, Even with this mapping, different amphiphiles may not turn out to be unique; see the discussion in the tutorial, and realize that Martini3 makes this much less of a problem.
Using this particular set of files as a guide, it should be relatively simple to construct the corresponding gemini surfactant.
1 Building the simulation box
you must have the following files to make this work:
- TTA-em.gro -- the coordinates in .gro format of your surfactant
- martini_v3.0.0_TTA.itp -- the itp file for that surfactant
- martini_v3.0.0.itp -- the main martini2 itp file
- martini_v3.0.0_ions_v1.itp
- martini_v3.0.0_BzO.itp
- martini_v3.0.0_solvents_v1.itp
- water.gro -- an equilibrated water box
- various .mdp files as supplied in the tutorial
- TTA.top -- the topology file (easy to make)
Assemble the TTA. adjust box size and number depending on what system (standard disclaimer)
/bin/bash $ gmx insert-molecules -ci TTA-em.gro -box 7.5 7.5 7.5 -nmol 128 -radius 0.21 -try 500 -o 128_TTA.gro
NOTE: If you are adding polyatomic anions such as benzoate or sulfate, you must use insert-molecules successively (instead of genion, below):
/bin/bash $ gmx insert-molecules -ci TTA-em.gro -box 10 10 10 -nmol 128 -radius 0.21 -try 500 -o 128_TTA.gro
/bin/bash $ gmx insert-molecules -ci BzO-0.gro -f 128_TTA.gro -box 10 10 10 -nmol 128 -radius 0.21 -try 500 -o 128_TTA_BzO.gro
2 Solvating with water beads
Add martini water using solvate:
/bin/bash $ gmx solvate -cp 128_TTA_BzO.gro -cs water.gro -o 10.0mM_System.gro -maxsol 5000 -radius 0.21
The bilayer tutorial specification of 768 waters is not enough to create a realistic density; this creates an initial patchy association during minimization. For this reason, the 'maxsol' should be increased to some large number. It is not necessary to put too fine a point on this, as the process will stop at a reasonable density. You could do a rough calculation to decide on the total number of waters required for your box size. It is useful to remember that each W bead represents 4 water, and hence has a mass of 72. Here are some examples:
- 0.5 mM: 50 ion pairs, approx. 1.4M W, box side L = 54.8
- 1.0 mM: 50 pairs, 700k W, box L = 43.5
- 1.5 mM: 75 pairs, 700k W, L = 43.5
- 1.75 mM, 88 pairs, 700k W, L = 43.5
- 2.0 mM, 100 pairs, 700k W, L = 43.5
- 430 nM(!), 480 pairs, 62.1K W, L = 20
[ molecules ]
TTA 128
W 3241
3 Adding bromide counter-ions (Probably not!)
If your system only has small organic anions, you skip this step!!Add the bromide ions using genion. You could add positive or negative ions, but in this example we will neutralize with bromides only. A good example of genion use may be found at http://www.mdtutorials.com/gmx/lysozyme/04_ions.html
You must generate an "ions.mdp" despite the fact that you aren't going to actually run anything at this time.
'genion' will ask which group to affect; you should pick the W group (which is probably group 3).
/bin/bash $ gmx grompp -f ions.mdp -c waterbox.gro -p 10.0mM_System.top -o ions.tpr
/bin/bash $ gmx genion -s ions.tpr -o 10.0mM_System.gro -p 10.0mM_System.top -nname BR- -neutral
If you examine your .top file, you should now see the BR- ions added to the end.
4 Minimization
Now minimize this TTA + water + ion box as specified in the Bilayers tutorial. You may want to make the output file (minimized.gro) something more descriptive. If you are running on Apple Silicon, gromacs will try and grab all the processors by default. You may use the '-ntmpi' switch to tune this; for now, using '-ntmpi 4' is a good choice. It is possible to have some errors that are affected by this choice, specifically "Not all bonded interactions have been properly assigned…". In this case, the safest bet is to use -ntmpi 1', at least for minimization./bin/bash $ gmx grompp -f minimization.mdp -c 10.0mM_System.gro -p TTA.top -o 10.0mM_System.tpr
/bin/bash $ gmx mdrun -ntmpi 1 -s 10.0mM_System.tpr -v -c 10.0mM-min.gro
5 Heating/equilibration
Heat and equilibrate your system. This should be straight-forward, using the appropriate mdp file:/bin/bash $ gmx grompp -f martini_eq.mdp -c 10.0mM-min.gro -p TTA.top -o 10.0mM-eq.tpr
/bin/bash $ gmx mdrun -ntmpi 4 -s 10.0mM-eq.tpr -v -x 10.0mM-eq.xtc -c 10.0mM-eq.gro
6 Running dynamics
Now you should be able to run dynamics!/bin/bash $ gmx grompp -f martini_md.mdp -c 10.0mM-eq.gro -p TTA.top -o 10.0mM-run.tpr
/bin/bash $ gmx mdrun -ntmpi 4 -s 10.0mM-run.tpr -v -x 10.0mM-run.xtc -c 10.0mM-run.gro
You can put all these commands into a file including some variables that allow you to change the concentration/box size, etc. Here is an example. You can save this file, make it executable, and call it like a program:
/bin/bash $ vi run_TTA_BzO_system.sh
…edit file appropriately
/bin/bash $ chmod 755 run_TTA_BzO_system.sh
… watch for output or errors
7 VISUALIZATION — Martiniglass and VMD
Use a python virtual environment to run martiniglass. The martiniglass GitHub page describes this. Assuming python (as python3) is installed on your (OS X) machine:
/bin/bash $ python3 -m venv venv && source venv/bin/activate
Once you've created this environment, a "(venv)" will be pre-prended to your cursor. Now you may install martiniglass:
(venv) /bin/bash $ pip install martiniglass
(you may be informed that pip could be upgraded; you could do this if you wanted to by following the instructions given.)
Here is a good example page. I'm assuming that your whole system (amphiphile + ion(s) + water) is described by the files 1.0mM_System.top and 1.0mM-run.gro (the output of the "run" stage). At the end, the files used for visualization and analysis will be named as 1.0mM-run-vis.xxx. It is very important that your martini glass-bound topology file ONLY contains include entries that refer to molecules in your system! This is not really stated anywhere in the documentation. Here is the sequence:
(venv) /bin/bash $ cp 1.0mM_System.top 1.0mM_vis.top
(edit 1.0mM_vis.top to):
#include "../../martini_v3.0.0_TTA.itp"
#include "../BzO_take2.itp"
[ system ]
TTA + BzO 1.0 mM (approx)
[ molecules ]
TTA 200
BzO 200
W 816266
The next step will separate the system components. The '-f' option starts this process using the simulation output gromacs file.
(venv) /bin/bash $ martiniglass -p 1.0mM_vis.top -f 1.0mM-run.gro
This will create the files
- index.ndx
- TTA_vis.itp
- BzO_vis.itp
- vis.top
Importantly, index.ndx, indexes only the non-water parts of the system. Now, you must use this index file to strip out the waters from your original 1.0mM-run.xxx and put the result into 1.0mM-run-vis.xxx. There are a number of equivalent ways to do this, depending on whether you want to use a trajectory and tpr file, extract one frame from a trajectory, or convert a whole trajectory:
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.gro -s 1.0mM-run.gro -n index.ndx -o 1.0mM-run-vis.gro
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.xtc -s 1.0mM-run.tpr -pbc mol -n index.ndx -e 0 -o 1.0mM-run-vis.gro
(venv) /bin/bash $ gmx trjconv -f 1.0mM-run.xtc -s 1.0mM-run.tpr -pbc mol -n index.ndx -o 1.0mM-run-vis.xtc
Now, create the vmd input file 1.0mM-run-vis.vmd (by default, martiniglass creates "vis.vmd"):
(venv) /bin/bash $ martiniglass -p vis.top -vf
(venv) /bin/bash $ mv vis.vmd 1.0mM-run-vis.vmd
Finally, you can load the files into vmd:
(venv) /bin/bash $ vmd 1.0mM-run-vis.gro -e 1.0mM-run-vis.vmd
The trajectory may also be loaded into this representation. All the processed-for-visualization files will have XXX-run-vis.xxx naming convention. Later on, when we perform an aggregation analysis, it will be easy to use these conventions to further modify data as necessary. (Additional information/examples may be found here and here.)
As usual, this process may be automated (for the most part, easily) but putting commands into a file, and running this as a command. Here is an example for the visualization steps: "drymartini.sh".
Martiniglass by default creates many representations; most are un-needed by us. It would be nice to be able to edit or change what is included easily, but for now we have to make some changes in the representations. Find the representation with the lipids (POPC, POPE, etc) and change all those names to "TTA" (or just add TTA). You should see the polar tetraammonium head as purple (from the "name NC3 PO42 PO41 PO4 COO ROH" representation), and the HC tail(s) as grey tubes. If your system includes ions (BzO, for example), you can enter them most conveniently in the "resname CHOL" representation. The other representations besides these three may be turned off. I personally do not like the default colors, so I tend to change them.
Possible Problems
If your amphiphiles won't show up as tubes — instead coming out as balls — something has gone wrong in the above process. Common errors include mixing topology files, or the ions being out of order in the topology and structure (.gro) file. If so, carefully troubleshoot and try again.
There can be a problem with visualizing trajectories. Sometimes atoms (beads) cross the periodic boundaries of the box and the molecule appears to stretch across the whole box, giving the appearance of box-length rods. See this link. Often, the initial input .gro file will cause a couple frames at the start of the trajectory to exhibit this; The best thing to do is to simply delete the first one or two frames. If the whole trajectory suffers from this problem (perhaps the "-pbc mol" switch wasn't used in the trajectory conversion above), it may be fixed by a form of periodic recentering (the proper -pbc setting was found by trial-and-error):
(venv) /bin/bash $ gmx trjconv -f TTA_50-md.xtc -s TTA_50-md.tpr -n TTA_50-md.ndx -pbc mol -ur compact -o vis-compact.xtc
(If you have problems of this sort, it is a good idea to test different combinations of the PBC/centering commands (of course .trr could be .xtc or .gro)
Commands are as follows:
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md.trr -o md1.trr -center -pbc whole -n index.ndx
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md1.trr -o md2.trr -pbc nojump -n index.ndx
(venv) /bin/bash $ gmx trjconv -s md.tpr -f md2.trr -o md3.trr -pbc mol -ur compact -n index.ndx
This trajectory file can be read into the previous (static) vmd molecule (which utilized the single-frame .gro file) in order to produce a trajectory and/or movies.