The computational engine for most of HADDOCK3's modules is the Crystallography and NMR System (CNS). Once you have cloned the HADDOCK3 repository, please follow these instructions to compile a CNS executable that can be used to run HADDOCK.
Downloading CNS requires a license, which academic users can request for free. You will be sent a password for the download via e-mail.
Using the link provided in the same e-mail, download CNS ("Source installer (compilation required on your system)") to the directory in which you want to install it (for example software
). Navigate to this directory, then uncompress and extract the archive:
cd ~/software/
gunzip cns_solve_1.3_all.tar.gz
tar -xvf cns_solve_1.3_all.tar
Go to the CNS directory:
cd cns_solve_1.3
If you are using csh/tcsh, edit cns_solve_env
to point to the correct location (the current directory):
# CHANGE THE NEXT LINE TO POINT TO THE LOCATION OF THE CNSsolve DIRECTORY
setenv CNS_SOLVE /PATH/TO/cns_solve_1.3
If you are using sh/bash, edit .cns_solve_env_sh
:
# CHANGE THE NEXT LINE TO POINT TO THE LOCATION OF THE CNSsolve DIRECTORY
CNS_SOLVE=/PATH/TO/cns_solve_1.3
HADDOCK requires some adjustments in CNS to function properly.
The set of routines to add is provided in the haddock3 repository under varia/cns1.3/
.
Copy all of these files into the CNS source directory (/PATH/TO/cns_solve_1.3/source/
), for example:
cp ~/software/haddock3/varia/cns1.3/* source/
Make sure you are inside the main cns_solve_1.3
directory.
If a suitable compiler is installed on your system, the following command should start the compilation of CNS:
make install
If needed, you can specify the compiler you want to use by adding the compiler
option, for example:
make install compiler=gfortran
You should see the progress of the compilation, followed by a confirmation that an executable has been created. For example (with gfortran):
created executable file cns_solve-2206031450.exe
If this does not work, check the troubleshooting section below.
Lastly, CNS needs to be loaded in the current shell before it can be used.
For csh/tcsh:
source cns_solve_env
For sh/bash:
source .cns_solve_env_sh
To check that CNS has been installed, start the program with the following command:
cns
If the installation was successful, CNS will open in your terminal with a header including the following information:
============================================================
| |
| Crystallography & NMR System (CNS) |
| CNSsolve |
| |
============================================================
Version: 1.3 at patch level U
Status: Special UU release with Rg, paramagnetic
and Z-restraints (A. Bonvin, UU 2013)
============================================================
The command to exit CNS is STOP
.
You now have a suitable CNS executable to finish installing HADDOCK3.
If no suitable compiler is found, you will get an error message:
Error: no suitable compiler (ifort, pgf95, ifort_i4, ifort_mp or pgf95_mp) found
In this case, you will have to install a compiler. For more information, check the CNS Installation page.
One Fortran compiler that is easy (and free) to install is gfortran
. It is part of the GNU Compiler Collection (GCC), which can be installed with one command if you have homebrew:
brew install gcc
Alternatively, gfortran can be downloaded as a separate binary.
If a suitable compiler is installed but no corresponding Makefile.header
is found, make install
will give an error as well. For example (with gfortran):
Error: Makefile template for compiler gfortran is not available
Makefile headers for each supported system-compiler combination are provided in instlib/machine/supported/
(for unsupported systems, see instlib/machine/unsupported/
). If you already tried make install
, the appropriate directory for your system (eg. mac-intel-darwin
) will have been copied to the main cns_solve_1.3
directory.
If this directory does not contain the desired file (eg. Makefile.header.2.gfortran
), you can create one manually.
For example, for gfortran
, create a new file named Makefile.header.6.gfortran
inside the directory containing Makefile headers for your system. Save the following lines in this file:
# fortran options
F77 = gfortran
F77STD = -fdefault-integer-8 -w -fallow-argument-mismatch
F77OPT = -O3 $(CNS_MALIGN_I86) -funroll-loops -ffast-math -march=native -mtune=native -static
F77FLAGS = $(F77STD) $(F77OPT) $(EXT_F77FLAGS) $(F77BUG)
# C options
CC = gcc
CPP = g++
CCFLAGS = -O -DINTEGER='long int' -DCNS_ARCH_TYPE_$(CNS_ARCH_TYPE) $(EXT_CCFLAGS)
# link options
LD = gfortran
LDFLAGS = -w $(EXT_LDFLAGS)
Note the -fallow-argument-mismatch
flag. From gfortran version 10 onward, type mismatches by default give an error rather than a warning. This flag returns warnings instead, so that CNS compilation can successfully complete. If a Makefile.header.x.gfortran
is provided for your system but compilation fails with (many) Error: Type mismatch
, you may need to add this flag to the provided file.