Деякі алгоритми доступні у вихідному коді для різних пакетів. PyMol - одна з таких, і джерело VMD також доступне.
Я реалізував стрічковий алгоритм VMD у 1990-х. Перший крок - визначення структури - де знаходяться амінокислоти? які з'єднані в ланцюг? де є атоми С-альфа?
Далі, як сказав Кайл, сплайн. VMD використовує сплайнер Catmull – Rom, із контрольними точками C-альфа. Це сплайн 3-го порядку, і сплайни проходять через С-альфа. Якщо ви відпрацьовуєте математику, є єдиний вільний параметр, який відповідає тому, наскільки жорсткий сплайн навколо контрольної точки. Я спробував кілька значень, поки не знайшов того, яке було естетично.
Існує також певна хитрість щодо того, як впоратися з кінцем, у якому недостатньо С-альфа. Я екстраполювався, щоб отримати інші бали.
Це дає шлях. Кругова екструзія вздовж шляху дає трубочку. Ви можете змінити радіуси поперечного перерізу, щоб надати еліпс, і трохи більше роботи визначити стрічку.
Проблема полягає в тому, щоб знайти правильну норму, щоб стрічки були вирівняні альфа-спіраллю. Я спробував різні речі, потім відмовився, подивився на реалізацію Raster3D, отримав дозвіл на його використання та додав це до VMD. Це сукупна сума попередньої векторної норми та поточної норми, визначена слідом С-альфа. Мені доведеться подивитися на джерело, як воно працює знову. Цікаво, що Етан Меррітт, автор Raster3D, зазначив, що отримав цей фрагмент коду від FRODO, тому він має давню історію.
Тепер VMD має "NewRibbons", який був реалізований після мого часу. Я не знаю, як це працює.
Найпростіший спосіб зробити альфа-спіраль - провести лінію від першого до останнього залишку; видавити коло по лінії, і у вас є циліндр. Ви також можете зробити лінійну найкращу підгонку до спіралі, але я думаю, що це викликало проблеми для коротких спіралей. Можливо, є більш розумні способи зробити це, включаючи такі способи, як запропонував Кайл, який дозволяє м'які вигини.
Бета-пасма легкі. Є два контури управління, по одному для кожної сторони. Ті визначають шлях пасма, і нормальний. Вам потрібно бути трохи обережним з поворотами, щоб ваша пасмо не крутилася на 290 градусів, коли вона повинна скручуватися на 70 градусів, але це було не важко впоратися.
Важкою частиною, про яку ви не згадували, є те, як визначити, де розташовані альфа-спіралі та бета-нитки. Деякі записи PDB містять це, але не всі. Я карав і використовував для цього сторонній інструмент, STRIDE. Воррен реалізував власний алгоритм. Роджер Сейл реалізував власну версію DSSP для Raster3D.