Một số thuật toán có sẵn từ mã nguồn cho các gói khác nhau. PyMol là một trong số đó và nguồn của VMD cũng có thể truy cập được.
Tôi đã triển khai thuật toán ruy băng của VMD vào những năm 1990. Bước đầu tiên là xác định cấu trúc - axit amin ở đâu? được kết nối thành một chuỗi? các nguyên tử C-alpha ở đâu?
Tiếp theo, như Kyle nói, là spline. VMD sử dụng spline Catmull của Rom, với C-alphas làm điểm kiểm soát. Đây là một spline bậc 3 và các spline đi qua các chữ cái C. Nếu bạn tính toán, sẽ có một tham số miễn phí duy nhất, tương ứng với độ cứng của spline xung quanh điểm điều khiển. Tôi đã thử một vài giá trị cho đến khi tôi tìm thấy một giá trị thẩm mỹ.
Cũng có một số khó khăn về cách xử lý kết thúc mà không có đủ chữ cái C. Tôi ngoại suy để có được những điểm khác.
Điều đó cho con đường. Một đùn tròn dọc theo đường dẫn cho một ống. Bạn có thể thay đổi bán kính mặt cắt ngang để tạo hình elip và với một chút công việc xác định ruy băng.
Vấn đề là tìm ra định mức chính xác, sao cho các dải băng được căn chỉnh với một chuỗi xoắn alpha. Tôi đã thử nhiều thứ sau đó từ bỏ, xem xét triển khai Raster3D, được phép sử dụng nó và thêm nó vào VMD. Đó là tổng tích lũy của định mức vectơ trước đó và định mức hiện tại được xác định bởi dấu vết C-alpha. Tôi sẽ phải xem nguồn để biết nó hoạt động như thế nào. Thật thú vị, Ethan Merritt, tác giả Raster3D, đã chỉ ra rằng anh ta đã nhận được một chút mã từ FRODO, vì vậy nó có một lịch sử lâu dài.
VMD hiện có "NewR Ribbon", được triển khai sau thời gian của tôi. Tôi không biết làm thế nào nó hoạt động.
Cách dễ nhất để thực hiện một chuỗi xoắn alpha là vẽ một đường thẳng từ phần đầu tiên đến phần dư cuối cùng; đùn một vòng tròn dọc theo đường và bạn có một hình trụ. Bạn cũng có thể thực hiện một tuyến tính phù hợp nhất với chuỗi xoắn, nhưng tôi nghĩ rằng điều đó gây ra vấn đề cho các vòng xoắn ngắn. Có nhiều cách thông minh hơn để làm điều đó, bao gồm cả những cách như Kyle đề xuất, cho phép uốn cong mềm mại.
Chuỗi Beta rất dễ dàng. Có hai đường dẫn điều khiển, một cho mỗi bên. Những người xác định đường dẫn sợi, và bình thường. Bạn phải cẩn thận một chút với các vòng xoắn, để sợi dây của bạn không xoắn 290 độ khi nó phải xoắn 70 độ, nhưng điều đó không khó để xử lý.
Một phần khó, mà bạn không đề cập đến, là làm thế nào để phát hiện vị trí của chuỗi alpha và chuỗi beta. Một số bản ghi PDB chứa điều đó, nhưng không phải tất cả. Tôi đã chơi và sử dụng một công cụ của bên thứ 3, NGHIÊM TÚC, cho điều đó. Warren đã thực hiện thuật toán của riêng mình. Roger Sayle đã triển khai phiên bản DSSP của riêng mình cho Raster3D.