High-Performance Computing at the NIH
GitHub YouTube @nih_hpc RSS Feed
freecontact on Biowulf & Helix


FreeContact predicts interactions between pairs of residues in a protein based on information about correlated changes in multiple sequence alignments.

There may be multiple versions of freecontact available. An easy way of selecting the version is to use modules. To see the modules available, type

module avail freecontact 

To select a module use

module load freecontact/[version]

where [version] is the version of choice.

freecontact is a multithreaded application. By default it will attempt to use as many threads as there are cores present. Make sure to match the number of cpus requested with the number of threads for cluster jobs and limit to 4 threads on helix.

Environment variables set


Loaded automatically by the freecontact module.



On Helix

The input file used here is a multiple sequence alignment of the Rev protein obtained from the Los Alamos HIV Database

helix$ module load freecontact
helix$ TEST=/usr/local/apps/freecontact/TEST_DATA/HIV1_ALL_2015_rev_PRO.aln
helix$ freecontact -f $TEST --threads 2 > HIV1_ALL_2015_rev_PRO.out

Note that it is required to limit the number of threads when running on helix as freecontact will otherwise attempt to use all cores.

Batch job on Biowulf

Create a batch script similar to the following example:

#! /bin/bash
# this file is freecontact.batch
module load freecontact || exit 1
freecontact \
  -f /usr/local/apps/freecontact/TEST_DATA/HIV1_ALL_2015_rev_PRO.aln \
  --threads $SLURM_CPUS_PER_TASK \
  > HIV1_ALL_2015_rev_PRO.out

Submit to the queue with sbatch:

biowulf$ sbatch --cpus-per-task=6 freecontact.batch
Swarm of jobs on Biowulf

Create a swarm command file similar to the following example:

# this file is freecontact.swarm
freecontact -f input1.aln --threads $SLURM_CPUS_PER_TASK > output1
freecontact -f input2.aln --threads $SLURM_CPUS_PER_TASK > output2
freecontact -f input3.aln --threads $SLURM_CPUS_PER_TASK > output3

And submit to the queue with swarm

biowulf$ swarm -f freecontact.swarm --module=freecontact
Interactive job on Biowulf

Allocate an interactive session with sinteractive and use as described above

biowulf$ sinteractive --cpus-per-task=6
node$ module load freecontact
node$ freecontact --threads 6 -f input > output
node$ exit