superimpose_structural_homologs
#
- biotite.structure.superimpose_structural_homologs(fixed, mobile, structural_alphabet='3di', substitution_matrix=None, max_iterations=inf, reference_length='shorter')[source]#
Superimpose two remotely homologous protein structures.
This method relies on structural similarity between the two given structures, inspired by the TM-align algorithm. [1]. Thus, this method is better suited for structurally homologous pairs in the twilight zone, i.e. with low amino acid sequence similarity.
- Parameters:
- fixedAtomArray, shape(n,)
The fixed structure. Must contain only peptide chains.
- mobileAtomArray, shape(n,)
The structure which is superimposed on the fixed structure. Must contain only peptide chains. Must contain the same number of chains as fixed.
- structural_alphabet{“3di”, “pb”}, optional
The structural alphabet to use for finding corresponding residues using sequence alignment. Either 3Di or Protein Blocks.
- substitution_matrixSubstitutionMatrix, optional
The substitution matrix to use for finding corresponding residues using sequence alignment.
- max_iterationsint, optional
The maximum number of iterations to perform in the last step.
- reference_lengthint or {“shorter”, “longer”, “reference”}
The reference length used to normalize the TM-score and to compute \(d_0\). If “shorter”, the number of residues in the smaller structure is used. If “longer”, the number of residues in the larger structure is used. If “reference”, the number of residues in the fixed structure is used. The length can also be provided directly as an integer.
- Returns:
- fittedAtomArray or AtomArrayStack
A copy of the mobile structure, superimposed on the fixed structure.
- transformAffineTransformation
This object contains the affine transformation(s) that were applied on mobile.
AffineTransformation.apply()
can be used to transform another AtomArray in the same way.- fixed_indices, mobile_indicesndarray, shape(k,), dtype=int
The indices of the corresponding
CA
atoms in the fixed and mobile structure, respectively. These atoms were used for the superimposition, if their pairwise distance is below the \(d_0\) threshold [2].
See also
superimpose_homologs
Analogous functionality for structures with high sequence similarity.
Notes
The challenge of aligning two structures with different number of residues is finding the corresponding residues between them. This algorithm inspired by TM-align [1] uses a 3 step heuristic:
Find corresponding residues using a structural alphabet alignment and superimpose the chains based on them.
Refine the corresponding residues using a sequence alignment based on a hybrid positional substitution matrix: The scores are a 50/50 combination of the structural alphabet substitution score and the distance-based TM-score between two residues. The superimposition is updated based on the new corresponding residues.
Refine the corresponding residues using a sequence alignment with a pure TM-score based positional substitution matrix. Update the superimposition based on the new corresponding residues. Repeat this step until the correspondences are stable.
References
Examples
>>> fixed = atom_array_stack[0] >>> mobile = atom_array_stack[1] >>> superimposed, _, fix_indices, mob_indices = superimpose_structural_homologs( ... fixed, mobile, max_iterations=1 ... ) >>> print(tm_score(fixed, superimposed, fix_indices, mob_indices)) 0.69... >>> print(rmsd(fixed[fix_indices], superimposed[mob_indices])) 0.83...