Certains algorithmes sont disponibles dans le code source des différents packages. PyMol en fait partie, et la source de VMD est également accessible.
J'ai implémenté l'algorithme ruban de VMD dans les années 1990. La première étape est la détermination de la structure - où sont les acides aminés? qui sont reliés en chaîne? où sont les atomes C-alpha?
Ensuite, comme l'a dit Kyle, c'est la spline. VMD utilise une spline Catmull – Rom, avec les C-alphas comme points de contrôle. Il s'agit d'une spline de troisième ordre, et les splines traversent les C-alphas. Si vous travaillez sur les mathématiques, il y a un seul paramètre libre, qui correspond à la rigidité de la spline autour du point de contrôle. J'ai essayé quelques valeurs jusqu'à ce que je trouve celle qui était esthétiquement agréable.
Il y a aussi une certaine difficulté à gérer la fin, qui n'a pas assez de C-alphas. J'ai extrapolé pour obtenir les autres points.
Cela donne le chemin. Une extrusion circulaire le long du chemin donne un tube. Vous pouvez varier les rayons de section pour donner une ellipse, et avec un peu plus de travail définir le ruban.
Le problème est de trouver la norme correcte, de sorte que les rubans soient alignés avec une hélice alpha. J'ai essayé diverses choses, puis j'ai abandonné, j'ai examiné l'implémentation de Raster3D, j'ai obtenu la permission de l'utiliser et l'ai ajouté à VMD. C'est une somme cumulée de la norme vectorielle précédente et de la norme actuelle définie par la trace C-alpha. Je devrais regarder la source pour savoir comment cela fonctionne à nouveau. Fait intéressant, Ethan Merritt, l'auteur de Raster3D, a souligné qu'il avait obtenu ce morceau de code de FRODO, donc il a une longue histoire.
VMD a maintenant "NewRibbons", qui a été implémenté après mon temps. Je ne sais pas comment ça marche.
La façon la plus simple de faire une hélice alpha est de tracer une ligne du premier au dernier résidu; extrudez un cercle le long de la ligne et vous avez un cylindre. Vous pouvez également faire un ajustement linéaire optimal à l'hélice, mais je pense que cela a causé des problèmes pour les hélices courtes. Il y a probablement des façons plus intelligentes de le faire, y compris des façons comme Kyle l'a suggéré, qui permettent des virages doux.
Les brins bêta sont faciles. Il existe deux voies de contrôle, une pour chaque côté. Ceux-ci définissent le chemin du brin et la normale. Vous devez être un peu prudent avec les torsions, afin que votre brin ne se torde pas à 290 degrés alors qu'il devrait tourner à 70 degrés, mais ce n'était pas difficile à gérer.
Une partie difficile, que vous n'avez pas mentionnée, est de savoir comment localiser l'hélice alpha et les brins bêta. Certains enregistrements PDB contiennent cela, mais pas tous. J'ai punté et utilisé un outil tiers, STRIDE, pour cela. Warren a implémenté son propre algorithme. Roger Sayle a implémenté sa propre version de DSSP pour Raster3D.