Implementation

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.