Finds domains by calculating low cuts in the interaction graph, and evaluates whether the cut would correspond to a viable domain decomposition.

Assuming that interaction within a domain are much stronger than between domains, a domain can be considered a low cut within a suitable constructed interaction graph.

The structure is divided up into chunks, and an interaction network is calculated. This is then turned into an interaction graph, and low cuts are enumerated. Cuts are then enumerated whether they would correspond to viable domains, based on size, compactness and interface strength, and viable domains are stored. The procedure is then repeated recursively until no viable cuts can be found.

The only required input to the program is a structure file (PDB/cif), which will then be analysed. The domain finding algorithm is then repeated for each protein chains, and results will be written to the logfile, and also into PHIL-syntax .eff-files.

The simplest command line:

phenix.structural_domain_search example.pdb

Runtime depends on the structure size, typically 1 min for structures between 200-300 residues, and 10 min for structures up to 1000 residues.

*max_iterations*: controls how many low cuts to enumerate. Increasing this number will make the search more exhaustive, but also slower.*sufficient_count*: terminate the search early if the requested number of cuts have been found. It is probably a good idea to search for more than one, since the lowest cut does not always correspond to the highest domain quality score, but the default value (30) is perhaps slightly conservative, and good results can be achieved with*sufficient_count*= 10. On the other hand, the underlying clustering algorithm gets very slow when more then 100 values need to be clustered, and hence this is a practical upper limit.*min_size*: minimum size for an acceptable domain. Domains smaller than this will not be accepted. Default is 30.*prune_fraction*: controls whether to simplify the interaction graph by joining low-connected vertices. This can make the correct domain decomposition to appear earlier and hence make the search more efficient, at a slight loss of cut precision. A typical*prune_fraction*is 0.05-0.15.*algorithm*: the*quick*algorithm typically gives correct results, but for some tricky (especially multiple domain) structures the*thorough*algorithm may find a better decomposition. Running times up to 10 times of the*quick*algorithm are not uncommon.

The program writes out the best domain decomposition for each chain, as a series of .eff-files containing the residue segments.

All considered decompositions are recorded in the logfile.

**Efficient Algorithms for the Problems of Enumerating Cut by Non-decreasing Weights.** L.-P. Yeh, B.-F. Wang, and H.-H. Su. *Algoritmica* **5626**, 297-312 (2010).

**A simple min-cut algorithm.** M. Stoer, and F. Wagner. *Journal of the ACM* **44**, 585-591 (1997).

**An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision.** Y. Boykov, and V. Kolmogorov. *IEEE Transactions on Pattern Analysis and Machine Intelligence* **26**, 1124-1137 (2004).

**Protein domain decomposition using a graph-theoretic approach.** Y. Xu, D. Xu, and H.N. Gabow. *Bioinformatics* **16**, 1091-1104 (2000).

- inputInput files
- structure = None Structure file

- outputOutput files
- root = "domain" Root for domain files
- write_pdb_file = False Write PDB file for each domain

- configurationCalculation parameters
- interaction_strengthParameters to calculate interaction strength between two residues
- significance_threshold = 0.01 Discard interaction if below this level
- prune_fraction = 0.00 Discard lowest connected segments
- long_range_contactParameters for defining a long-range contact
- max_spatial_distance = 4.0 Maximum distance for atom-atom contact

- short_range_contactParameters controlling the strength of short range contacts
- default = 10.0 Strength of a coil-to-coil and mixed type connections
- helix_to_helix_connection = 50.0 Strength of a helix-to-helix connection
- strand_to_strand_connection = 50.0 Strength of a strand-to-strand connection

- assembly_membershipParameters rewarding membership in a higher order assembly
- sheet_bonus = 20.0 Extra strength if two strands are within the same sheet

- chunkingParameters controlling chunking of segments
- coil_max_size = 15 Minimum chunksize for a coil
- helix_max_size = None Minimum chunksize for a helix
- strand_max_size = None Minimum chunksize for a strand

- evaluationParameters controlling domain acceptance
- min_size = 30 Minimum domain size is residues
- min_compactness = 0.6 Minimum compactness (internal interaction strength to atoms ratio)
- max_interface_strength = 0.4 Maximum inteface strength to internal interaction strength ratio

- searchParameters controlling domain search
- algorithm = *quick thorough Algorithm to use
- max_iterations = 500 Maximum cut iterations to perform
- sufficient_count = 31 Quit search if sufficient number of domains has been located
- cluster_radius = 20 Radius for identifying quasi-equivalent domains
- max_residue_difference_for_equality = 10 Maximum residue differences between two domains
- max_residue_overlap_for_compatibility = 5 Max number of common residues between two domains
- strong_connection = 100 Do not separate multisegment domains that are at least as strongly connected

- interaction_strengthParameters to calculate interaction strength between two residues