dellacortelab/prospr

What is everyone using to construct 3D structures from distance and torsion angles?

Opened this issue · 1 comments

The original AlphaFold paper describes the second stage of 3D structure prediction as using Gradient Descent to converge on a structure based on distance and angle samples taken from the output of the first step (what prospr implements). It then describes a final fine-tuning step involving Rosetta.

How is everyone here implementing this pipeline? Are you using something off the shelf for the structure prediction based on the output of this model, or did you implement something custom made?
Also, are you using gradient descent like what the paper described, or did you do it a different way?

I implemented that part from scratch.
I essentially use PyRosetta to do an energy minimization for the structure (initialized with the results from the NN prediction), and using the L2 distances in Distogram and Ramachandran angle space as additional loss terms so the minimization does not stray too far away from the predicted structure.

To get an initial set of backbone atom coordinates from the Distogram prediction you can use a simple sklearn fit:

from sklearn import manifold
def mds(D):
	n = D.shape[0]
	seed = np.random.RandomState(seed=3)
	mds = manifold.MDS(n_components=3, max_iter=5000, eps=1e-9, random_state=seed, dissimilarity="precomputed", n_jobs=1)
	Xtag = mds.fit(D).embedding_
	return Xtag