Некоторые из алгоритмов доступны из исходного кода для различных пакетов. PyMol является одним из таких источников, и источник VMD также доступен.
Я реализовал ленточный алгоритм VMD в 1990-х годах. Первым шагом является определение структуры - где находятся аминокислоты? которые связаны в цепочку? где атомы C-альфа?
Следующим, как сказал Кайл, является сплайн. VMD использует сплайн Катмулла-Рома с C-альфами в качестве контрольных точек. Это сплайн 3-го порядка, и сплайны проходят через C-альфы. Если вы решите математику, есть единственный свободный параметр, который соответствует тому, насколько жестким является сплайн вокруг контрольной точки. Я попробовал несколько значений, пока не нашел тот, который был эстетически приятен.
Есть также некоторая хитрость в том, как справиться с концом, которому не хватает C-альфа. Я экстраполировал, чтобы получить другие очки.
Это дает путь. Круговое выдавливание вдоль пути дает трубку. Вы можете варьировать радиусы поперечного сечения, чтобы придать эллипс, и немного больше работы определите ленту.
Задача состоит в том, чтобы найти правильную норму, чтобы ленты были выровнены по альфа-спирали. Я попробовал разные вещи, затем сдался, посмотрел на реализацию Raster3D, получил разрешение на ее использование и добавил это в VMD. Это кумулятивная сумма предыдущей векторной нормы и текущей нормы, определенной трассой C-alpha. Я должен был бы посмотреть на источник, как это работает снова. Интересно, что Итан Мерритт, автор Raster3D, отметил, что он получил этот фрагмент кода от FRODO, поэтому у него долгая история.
У VMD теперь есть «NewRibbons», которая была внедрена после моего времени. Я не знаю, как это работает.
Самый простой способ создать альфа-спираль - провести линию от первого до последнего остатка; выдавить круг вдоль линии, и у вас есть цилиндр. Вы также можете сделать линейную наилучшую подгонку к спирали, но я думаю, что это вызвало проблемы для коротких спиралей. Вероятно, есть более умные способы сделать это, включая способы, предложенные Кайлом, которые допускают мягкие изгибы.
Бета-нити легки. Есть два пути управления, по одному для каждой стороны. Они определяют путь и нормальный путь. Вы должны быть немного осторожны с поворотами, чтобы ваша нить не крутилась на 290 градусов, когда она должна поворачиваться на 70 градусов, но с этим было не сложно справиться.
Трудная часть, о которой вы не упомянули, - как определить, где находятся альфа-спираль и бета-нити. Некоторые записи PDB содержат это, но не все. Для этого я использовал сторонний инструмент STRIDE. Уоррен реализовал свой собственный алгоритм. Роджер Сэйл реализовал свою собственную версию DSSP для Raster3D.