Distance Preserving Transformation
As mentioned in
Engineering cycles we divide the problem of modelling the
structure for the complex into two steps:
-
Localization: Compute structure for the hypothetical framework which
supports the subunits.
-
Registration: Align the subunits together with the hypothetical
substructure.
One of the first steps is to characterize the set of transformations that the
inter atomic distances and angle for the individual subunits do not undergo
alterations. Note that they should not suffer any deformation. In other words,
the subunits must behave as rigid bodies. Such rigid body transformations can
be proved to be composed of only rotation/reflection and translations.
Solving the Localization Problem
For solving the localization problem we do temporary mapping of C\(^\alpha\) atoms
corresponding to residues involved in the crosslinks. Generally they are less
than 15 in number.
-
We have used Sci-py library for Euclidean distance matrix completion (EDMC)
in python to solve the localization problem. We evaluated the peformance
with other packages for low rank approximation of EDMC.
-
We observed that Sci-py's package works best for sparse data. Other
packages available in MATLAB such as the one by Bamdev et al. (2016) works
better for dense data.
-
Our constraints include crosslink data and equality constraints between C\(^\alpha\)
atoms of residues in both subunits, because these are rigid body
transformations.
-
We run this 5 times per iteration and choose the result with minimum error and
no clashes.
After solving the localization problem we remap the temporary indexes to
global indexes. Now the obtained coordinates and global indexes represent the
supporting framework which will be used in Registration.
Registering the Subunits
We use our One-Shot Registration Algorithm to register the subunits. Our
inputs are 3 rigid bodies in this case
- Subunit 1 Coordinates
- Subunit 2 Coordinates
- Supporting Framework
The input format conforms to PDB style. In
order to circumvent the problem of optimization over the non-convex set of
rigid body motions, a non-linear formulations using "Semidefinite
Programming" (Chaudhury et al. 2014) is used. We use the MOSEK library in C++
to solve this problem.
Flip Refinement
After registration we need to check if the subunits are in correct
orientation. Recall from the
Engineering cycles, that although geometrically
mirror images have similar inter-atomic distances, one of the instances do not
occur in nature. We use the flip refinement algorithm to check this. The
operation was coded in Python.
Validation
We validated our structures on the basis of percentage of satisfied
crosslinks.
System Specifications
The implementation, experimentation, and data analysis was performed on a
x86_64, 64 bit processor having "12th Gen Intel(R) Core(TM) i9" CPU, having 24
cores, operating at a maximum clock speed of 5.2 GHz. The size of RAM was 64
GB.