Alcuni algoritmi sono disponibili dal codice sorgente per i diversi pacchetti. PyMol è uno di questi e anche la fonte di VMD è accessibile.
Ho implementato l'algoritmo della barra multifunzione di VMD negli anni '90. Il primo passo è la determinazione della struttura - dove sono gli aminoacidi? quali sono collegati in una catena? dove sono gli atomi di C-alfa?
Successivamente, come ha detto Kyle, è la spline. VMD usa una spline Catmull – Rom, con gli alfa C come punti di controllo. Questa è una spline del 3 ° ordine e le spline attraversano le C-alfa. Se risolvi la matematica, c'è un singolo parametro libero, che corrisponde alla rigidità della spline attorno al punto di controllo. Ho provato alcuni valori fino a quando non ho trovato quello esteticamente piacevole.
C'è anche qualche delicatezza su come gestire la fine, che non ha abbastanza C-alfa. Ho estrapolato per ottenere gli altri punti.
Questo dà il percorso. Un'estrusione circolare lungo il percorso dà un tubo. È possibile variare i raggi della sezione trasversale per dare un'ellisse e con un po 'più di lavoro definire il nastro.
Il problema è trovare la norma corretta, in modo che i nastri siano allineati con un'elica alfa. Ho provato varie cose, poi ho rinunciato, ho visto l'implementazione di Raster3D, ho ottenuto il permesso di usarlo e l'ho aggiunto a VMD. È una somma cumulativa della norma vettoriale precedente e della norma corrente definita dalla traccia C-alfa. Dovrei guardare la fonte per come funziona di nuovo. È interessante notare che Ethan Merritt, l'autore di Raster3D, ha sottolineato che ha ottenuto quel codice da FRODO, quindi ha una lunga storia.
VMD ora ha "NewRibbons", che è stato implementato dopo il mio tempo. Non so come funzioni.
Il modo più semplice per eseguire un'elica alfa è tracciare una linea dal primo all'ultimo residuo; estrudi un cerchio lungo la linea e hai un cilindro. Puoi anche fare un adattamento lineare all'elica, ma penso che ciò abbia causato problemi alle eliche corte. Ci sono probabilmente modi più intelligenti per farlo, inclusi i modi suggeriti da Kyle, che consentono curve morbide.
I fili beta sono facili. Esistono due percorsi di controllo, uno per ciascun lato. Questi definiscono il percorso del filo e il normale. Devi essere un po 'attento con i colpi di scena, in modo che il tuo filo non si attorcigli di 290 gradi quando dovrebbe ruotare di 70 gradi, ma non è stato difficile da gestire.
Una parte difficile, che non hai menzionato, è come rilevare dove si trovano l'alfa-elica e i filamenti beta. Alcuni record PDB lo contengono, ma non tutti. Ho puntato e usato uno strumento di terze parti, STRIDE, per questo. Warren ha implementato il suo algoritmo. Roger Sayle ha implementato la sua versione di DSSP per Raster3D.