If you are using any of the software connected to CoMoDo. please cite:

  • Silke A. Wieninger and G. Matthias Ullmann. CoMoDo: Identifying Dynamic Protein Domains Based on Covariances of Motion. J. Chem. Theory Comput. B, 11: 2841-2854, 2015
    [PDF File] [Supporting Informations]

Identification of Dynamic Protein Domains.

CoMoDo clusters protein structures into dynamic domains based on covariances of motion. As input, only a covariance file is needed, which can be calculated for example by an Elastic Network Model or Principal Component Analysis of conformational ensembles. CoMoDo consists of two methods, DomainTester and DomainClusterer. Exemplary shell scripts which combine the execution of the two methods are provided together with the source files.


DomainTester is used to decide whether a protein or protein part actually consists of more than one dynamic domain. For this purpose, DomainTester assigns positive covariance segments, that is groups of consecutive residues with positive covariance between all residue pairs.

$PATH/DomainTester [name of covariance file] [minimal size of positive covariance segments]

The two arguments are mandatory.

  • The covariance file must consist of three columns and the order of residues must accord with the sequential order of the residues:

    index_residue1 index_residue1 covariance_11
    index_residue1 index_residue2 covariance_12
    index_residueN index_residueN covariance_NN

  • The value given as "minimal size of positive covariance segments" determines the number of consecutive residues with positive covariance needed for a positive covariance segment.

./src/DomainTester protein.cov 40

For each detected positive-covariance segment, DomainTester reads out the position and the segment size. The segments can be overlapping. The final output line gives the total number of nodes, the number of nodes which lie in no positive-covariance segment, the number of overlapping segments and the number of separate segments.

Segment "resiStart1"-"resiEnd1" size "numberResi1"
Segment "resiStart2"-"resiEnd2" size "numberResi2"
Segment "resiStartN"-"resiEndN" size "numberResiN"
nodes: "numberNodesProtein" in no segment: "numberNodes" segmentNo: "N" separate segments: "numberSeparateSegments"


DomainClusterer performs an agglomerative clustering of covariances. First, each residue builds one cluster. Then, the two cluster with highest intercluster covariance are merged and the covariances are recalculated. The clustering is performed until the largest covariance is smaller than a given cutoff value or the desired number of cluster is reached.

$PATH/DomainClusterer [name of covariance file] [-c cutoff_cov or -d domain_number] (-v verbose) (-m step size for printing of intermediate covariance matrices)

The first two arguments are mandatory. The arguments in () and their order are optional.

  • The covariance file is the same as for DomainTester.
  • The second argument determines the stopping criterion of DomainClusterer:
    • -c: Stop clustering when the largest covariance between clusters is smaller than the given cutoff value.
    • -d: Stop clustering when the number of cluster corresponds to the given domain number.
  • -v Verbose output gives information about each clustering step.
  • -m Intermediate covariance matrices are output all m steps. By default, no intermediate covariance matrices are written.

./src/DomainClusterer protein.cov -c -0.01 -v -m 50
./src/DomainClusterer protein.cov -d 2 -m 20 -v

Final Domain Number: "N"
Nodes in Domain 1: "numberNodes1"
nodes "resiStart1"-"resiEnd1"
Nodes in Domain N: "numberNodesN"
nodes "resiStartN"-"resiEndN"


The program is available under the Gnu Affero Public License. The package includes

  • C++ code of DomainTester and DomainClusterer
  • Makefile
  • Shell scripts for CoMoDo, FastCoMoDo and NormCoMoDo
  • Example files


  1. Download the file CoMoDo.tar.gz
  2. Type tar -jxf CoMoDo.tar.gz
  3. Go to the directory CoMoDo/src: cd CoMoDo/src
  4. Type make

Feedback and bug reports

are welcome: