Normal Mode Flexible Fitting

NMFF is an evolving package of programs and methods that enable the flexible multi-resolution fitting of large atomically detailed structures into electron density maps from cryoEM, tomography and related lower resolution methods.The theory and methods behind NMFF are described in the papers referenced on the main NMFF page and are based on searching along a few lowest frequency normal mode vectors, constructed from a multi-resolution elastic netork representation of the atomic structure of interest, to maximize the correlation between the computed electron density for the flexible model and the experimental density.

In the text that follows, the installation procedure for the NMFF package is described. If you have questions or comments regarding this procedure, please feel free to email .

 Installation of NMFF

NMFF is packaged as an encrypted gzipped tar file. Upon completion of the licensing you can decrypt and unpack the program as follows:

  • openssl enc -d -k {password} -des-ede-cbc -in nmff.tgz.enc -out nmff.tgz
  • This produces the decrypted gzipped tar file. The {password} should be replaced by the password you received via email upon registering your copy of NMFF.

  • tar -ztf nmff.tgz (or gunzip | tar)
  • This command will produce a directory in the current location called NMFF_V1.0

    Move into the NMFF_V1.0 directory and then into the build directory.

  • cd NMFF_V1.0; cd build
  • Here is where you will make versions of NMFF for the various platforms on which you want to run it. In this example, suppose we are making a version for our Apple OS X machines. Make a directory My_mac_OSX,

  • mkdir My_mac_OSX
  • Now we are ready to use configure to build NMFF for this platform. Note that NMFF requires the additional math/linear algebra libries blas (atlas), lapack, arpack. These libraries will be automatically downloaded and installed for your platform if thy are not already found on your machine. The command configure can take several agruments that will control how NMFF is built and installed on your platform, e.g., different compilers can be used, differnt compiler options, etc. By default NMFF is built using with the g77/gcc (or f77/cc for SGI Unix) with dynamic memory allocation. Additionally, one can build NMFF using fixed array sizes and static memory or using Fortran 90/95 constructs. (Note, because of issues with 32 bit integers and 64 bit pointers on x86_64 - Intel Xeon EMT64 processors - the "default" g77 build will fail to execute correctly. If you need to use g77 on your x86_64 Xeon, then the recommended configureation flags are: FFLAGS="-O3 -DFIXED" CFLAGS="-O3 -DFIXED" - see table below. However, better performance and memory use is available with use of the g95 compiler or the Intel ifort compilers.) The table below provides some of the options that have been tested. To configure NMFF for your platform use the following command:

  • ../../configure {configure options}
  • For example, if I want to build the NMFF suite for my Apple G4 laptop using the g95 and gcc compilers and install the suite of executable files in my own bin directory, the command:

  • ../../configure --prefix=/Users/brooks/bin/NMFF F77=g95 CC=gcc FFLAGS="-O3 -DF95" CFLAGS="-O3"
  • will make ready the following steps to build, test and install the suite.

    You can then make the executables using

  • make all
  • ...and finally test things by running

  • make test
  • This will run a short test run and illustrate how to use NMFF. More details on running NMFF are elucidated through the tutorials!

  • make install
  • This will install the NMFF suite of programs and perl scripts in the location specified in the --prefix=/your_desired_bin_directory. Note that the default installation site is /usr/local/bin and thus may require system privilege to install. If you didn't specify --prefix=/your_desired_bin_directory when you ran configure above, just rerun configure again with the desired installation path and then do this last step (no need to do the intervening steps). (Note, if your path specified above does not end with a bin directory, one will be created.)

    NMFF build configuration options
    Platform
    Configure Options
    Comments
    Linux or OS X w/ g77/gcc (default) FFLAGS="-O3" CFLAGS="-O3 " Generic Linux/Apple box w/ G77 and allocated arrays, using O3 optimization.
    Linux or OS X w/ g77/gcc FFLAGS="-O3 -DFIXED" CFLAGS="-O3 -DFIXED" Generic Linux/Apple box w/ G77 and fixed arrays, using O3 optimization.
    i686 i686 i386 GNU/Linux FFLAGS="-O3 -DF95" F77=ifort CFLAGS="-O3" CC=icc Intel 32-bit processors (e.g., Xeon, PIV, etc) w/Linux using Intel ifort compilers, O3 optimization and adjustable arrays from F90/95 constructs.
    i686 i686 i386 GNU/Linux FFLAGS="-O3 -DFIXED" F77=ifort CFLAGS="-O3 -DFIXED" CC=icc Intel 32-bit processors (e.g., Xeon, PIV, etc) w/Linux using Intel ifort compilers, O3 optimization and fixed arrays.
    i686 i686 i386 GNU/Linux FFLAGS="-O3" F77=ifort CFLAGS="-O3" CC=icc Intel 32-bit processors (e.g., Xeon, PIV, etc) w/Linux using Intel ifort compilers, O3 optimization and adjustable arrays.
    Apple G4/G5 FFLAGS="-O3 -DF95" F77=g95 CFLAGS="-O3" Apple G4/G5 processors w/ OS X and g95 compilers, O3 optimization and adjustable arrays from F90/95 constructs.
    Apple G4/G5 FFLAGS="-O3 -DFIXED" F77=g95 CFLAGS="-O3 -DFIXED" Apple G4/G5 processors w/ OS X and g95 compilers, O3 optimization and fixed arrays.
    Apple G4/G5 FFLAGS="-O3 -qextname -qfixed -WF,-DF95" F77=xlf95 CFLAGS="-O3" CC=xlc Apple G4/G5 processors w/ OS X and IBM xlf95/xlc compilers, O3 optimization and adjustable arrays.
    Apple G4/G5 FFLAGS="-O3 -qextname -qfixed " F77=xlf95 CFLAGS="-O3 " CC=xlc Apple G4/G5 processors w/ OS X and IBM xlf95/xlc compilers, O3 optimization and adjustable arrays using f77/malloc.
    Apple G4/G5 FFLAGS="-O3 -qextname" F77=xlf CFLAGS="-O3 " CC=xlc Apple G4/G5 processors w/ OS X and IBM xlf/xlc compilers, O3 optimization and adjustable arrays using f77/malloc.
    x86_64 GNU/Linux FFLAGS="-O3 -DF95" F77=ifort CFLAGS="-O3" CC=icc Intel EMT-64 w/ Linux using Intel ifort and icc compilers, with optimiation level O3 and Fortran 95 constructs.
    x86_64 GNU/Linux FFLAGS="-O3 -DFIXED" F77=ifort CFLAGS="-O3 -DFIXED" CC=icc Intel EMT-64 w/ Linux using Intel ifort and icc compilers, with optimiation level O3 and fixed array constructs.
    ia64 GNU/Linux FFLAGS="-O3 -DFIXED" F77=ifort CFLAGS="-O3 -DFIXED" CC=icc Intel ia64 w/Linux (SGI Altix box as well) using Intel ifort compilers, O3 optimization and fixed arrays.
    ia64 GNU/Linux FFLAGS="-O3 -DF95" F77=ifort CFLAGS="-O3" CC=icc Intel ia64 w/Linux (SGI Altix box as well) using Intel ifort compilers, O3 optimization and adjustable arrays from F90/95 constructs.
    SGI MIPS w/ IRIX FFLAGS="-O3 -DFIXED" F77=f77 CFLAGS="-O3 -DFIXED" SGI MIPS processors w/ Irix and f77/cc compilers, O3 optimization and fixed arrays.
    SGI MIPS w/ IRIX FFLAGS="-O3 " F77=f77 CFLAGS="-O3" SGI MIPS processors w/ Irix and f77/cc compilers, O3 optimization and adjustable arrays.
    SGI MIPS w/ IRIX FFLAGS="-O3 -DF95 " F77=f90 CFLAGS="-O3" SGI MIPS processors w/ Irix and f90/cc compilers, O3 optimization and adjustable arrays using f90 constructs.