Fork me on GitHub

User Manual Sections

Section Description
Commands Documentation for all FFX commands including structure analysis, molecular dynamics, optimization, thermodynamics and refinement.
Properties Documentation of properties that control potential energy functions, electrostatic methods, implicit solvents and sampling.
Examples Examples including input formats, structural optimization, polymorph search and biomolecular refinement.
Parallelization Parallelization using shared memory, message passing and GPU approaches.
Binder Use FFX online within a Java or Kotlin Jupyter notebook.
Colab Use FFX online within Colab including access to a GPU.
Docker Instructions for how to build a Docker image and use FFX from a Java or Kotlin Jupyter notebook on your local machine.
Mathematica Instructions for how to use FFX within Mathematica.

Polyglot Language Support

Our goal is to help everyone easily use their preferred software environment across Linux, MacOS and Windows platforms.

Groovy

Commands are generally written in Groovy because the syntax is convenient for refactoring between command scripts and the core Java libraries. The Groovy commands are compiled ahead of time into Java bytecode for syntax checking, better performance and for unit testing. Groovy commands are also available from the "groovy" directory for custom modification. Modified scripts or new commands can be evaluated using the "ffx" or "ffxc" start-up commands for execution.

Java

The core libraries are written in Java, which is being explored as an alternative to traditional CPU languages (e.g., C, C++ and Fortran). With the introduction of a unified "single instruction multiple data" (SIMD) API for either AVX instructions on x64 or NEON instructions on AArch64, the JVM is increasingly competitive with natively compiled languages for performance on CPUs.

Kotlin

Kotlin is an emerging language from JetBrains that is interoperable with Java. You can use Kotlin to control FFX from within a Jupyter Notebook, including convenient support directly within the IntelliJ IDE. The "Lets-Plot" Kotlin library is especially interesting.

Python

Python is a popular language for scientific computing, which is now supported in by an embedded Python v. 3.10 engine. Example Python scripts can be found in the "python" directory. Just like for Groovy, you can send Python scripts to the "ffx" or "ffxc" start-up commands for execution.

Graphical User Interface

Shown below is a screenshot of the Force Field X graphical user interface (GUI) with a crystal structure of yeast "proliferating cell nuclear antigen" (PCNA) from the lab of M. Todd Washington and solved by Schnieders' lab PhD graduate Dr. Jacob Litman (PDB ID: 4YHR). All Force Field X commands can be run with interactive visualization or with a command line interface for use on high performance computing clusters.

Force Field X