Welcome to FreeContact
FreeContact is a protein residue contact predictor optimized for speed. Its input is a multiple sequence alignment. FreeContact can function as an accelerated drop-in for the published contact predictors EVfold-mfDCA of DS. Marks (2011) and PSICOV of D. Jones (2011).
FreeContact is accelerated by a combination of vector instructions, multiple threads, and faster implementation of key parts. Depending on the alignment, 8-fold or higher speedups are possible.
A sufficiently large alignment is required for meaningful results. As a minimum, an alignment with an effective (after-weighting) sequence count bigger than the length of the query sequence should be used. Alignments with tens of thousands of (effective) sequences are considered good input.
jackhmmer(1) from the hmmer package, or hhblits(1) from hhsuite can be used to generate the alignments, for example.
FreeContact in Debian and Derivatives
FreeContact and the Perl and Python modules are available in Debian, and are or will soon be available in derivative operating systems such as Ubuntu, Bio-Linux and CloudBioLinux.
- FreeContact (command line tool and shared library): http://packages.debian.org/freecontact
- FreeContact for Perl: http://packages.debian.org/libfreecontact-perl
- FreeContact for Python: http://packages.debian.org/python-freecontact
Open source code for FreeContact and its Perl and Python modules is available at ftp://rostlab.org/free/.
On a Linux cluster with Intel compilers
Contributed by João Rodrigues:
I managed to compile freecontact and the python interface correctly (tests passing). I am on a 64-bits cluster with the intel compilers. I tried compiling OpenBLAS and using GCC but ran into many problems while linking.. (undefined symbols). Since we have ICC available, I gave it a try. I modified the following bits: Standard C program lib/freecontact.cpp (Line 23) //#include <cblas.h> #include <mkl_cblas.h> Python Interface setup.py added 'mkl_rt', 'mkl_avx', 'mkl_def' to the libraries variable.
Thank you João!
Contributed by Stéphane Téletchéa:
> The dynamic compilation works just fine, but with "make -C src > freecontact.static", > > I have the following error message : > > make -C src freecontact.static > make: entrant dans le r=C3=A9pertoire =C2=AB > /home/alesia/teletchea/tmp/freecontact-1.0.21/src =C2=BB > /bin/sh ../libtool --tag=3DCXX --mode=3Dlink g++ -fopenmp -g -O2 -o > freecontact.static -all-static -L/usr/lib/atlas-base > freecontact-freecontact.o -lboost_program_options-mt > ../lib/libfreecontact.la > libtool: link: g++ -fopenmp -g -O2 -o freecontact.static -static > freecontact-freecontact.o -L/usr/lib/atlas-base > -lboost_program_options-mt ../lib/.libs/libfreecontact.a -lrt > -lgfortran -lquadmath -lcblas -lf77blas -latlas -llapack -pthread > -fopenmp > /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/liblapack.a(xerbla.o)= : > In function `xerbla_': Ok, I have found the problem :-) According to this thread : http://osdir.com/ml/lib.boost.ublas/2008-04/msg00025.html The lapack is not properly indicated in the command line. Just changing its position resolves the "problem" : cd src g++ -fopenmp -g -O2 -o freecontact.static -static freecontact-freecontact.o -L/usr/lib/atlas-base -lboost_program_options-mt ../lib/.libs/libfreecontact.a -lrt -llapack -lgfortran -lquadmath -lcblas -lf77blas -latlas -pthread -fopenmp Note that "-llapack " is now before lgfortran...
Thank you Stephane!
This fix will soon be implemented in the next version of the source.