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.
Commands are generally written in the Groovy scripting language because the syntax is convenient for refactoring between commands and our 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. |
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, code running on a JVM is increasingly competitive with the performance of natively compiled languages on CPUs. |
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 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. |
User Interfaces
The screenshot below of the Force Field X graphical user interface (GUI) shows "Compound 23", which was the 23rd molecule predicted as part of the CCDC crystal structure prediction series. Force Field X commands can be run with the GUI or with the command line interface.