วิเคราะห์ข้อมูลโครงสร้างโปรตีนใน C


17

พื้นหลังของฉันอยู่ในฟังก์ชั่นจีโนม แต่เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับปัญหาที่เกี่ยวข้องกับโครงสร้างโปรตีน ฉันเขียนโปรแกรมที่เกี่ยวข้องใน C สร้างตัวแยกวิเคราะห์ไฟล์ PDB ของตัวเองตั้งแต่เริ่มต้น ฉันไม่ต้องกังวลกับการแยกวิเคราะห์ที่แข็งแกร่งจริง ๆ ฉันเพิ่งรู้ว่าการสร้างตัวเองจะเป็นวิธีที่ดีที่สุดในการบังคับตัวเองให้เข้าใจรูปแบบ PDB

ตอนนี้ฉันได้ผ่านขั้นตอนนี้แล้วฉันกำลังมองหาบางสิ่งที่แข็งแกร่งและเป็นผู้ใหญ่มากกว่านี้ มีไลบรารีโครงสร้างโปรตีนโอเพนซอร์ซที่ถูกใช้งานใน C หรือไม่? ฉันสามารถค้นหาบางอย่างบน Google แต่ฉันไม่เคยได้ยินเกี่ยวกับพวกเขามาก่อนและดูเหมือนว่าพวกเขาจะไม่โตเต็มที่หรือมั่นคง คำถามที่เกี่ยวข้องเล็กน้อย: ทุกคนกำลังทำการคำนวณประเภทนี้ทั้งหมดโดยใช้ Python หรือไม่? หรือรหัส homebrew?

PS ฉันกำลังมองหาไลบรารี่ที่มีตัวแยกวิเคราะห์ไฟล์ PDB, ฟังก์ชั่นสำหรับการคำนวณมุมบอนด์, ความยาวบอนด์, มุมแรงบิด, พื้นที่ผิวที่สามารถเข้าถึงพื้นผิวได้ ฯลฯ

คำตอบ:


8

มีไลบรารี C ++ซึ่งค่อนข้างเป็นผู้ใหญ่ นี่อาจใกล้เคียงกับที่คุณจะไปถึง C ฉันเองยังไม่พบไลบรารี C ที่ใช้งานได้ คุณสามารถใช้ไลบรารี C ++ และยังคงเขียนโค้ดส่วนใหญ่ใน C โดยใช้extern C { }ในรหัส C ++


1
ลิงค์ล้าสมัย
xhg

นี่คือบ้านปัจจุบันของห้องสมุด DSR PDB: graphics.stanford.edu/~drussel/pdb
Steven Darnell

6

OpenBabelคือ C ++ แต่โดยทั่วไปใช้สำหรับสิ่งโครงสร้างทั่วไป - จุดสนใจหลักคือการแปลงระหว่างและความสามารถในการอ่านรูปแบบที่หลากหลาย เท่าที่ฉันรู้ว่ามันไม่สามารถคำนวณพื้นที่ SAS ได้


3
เพียงแค่ทราบ ฉันขอรายงานว่า OpenBabel ยอดเยี่ยม แต่ GPL ซึ่งอาจเป็นปัญหาได้หากซอฟต์แวร์ที่พัฒนาพร้อมที่จะใช้งานเชิงพาณิชย์
Stefano Borini

หากคุณกำลังพิจารณาการใช้ประโยชน์เชิงพาณิชย์ฉันขอแนะนำให้ดูที่ OEChem ( eyesopen.com/oechem-tk ) จาก OpenEye และห้องสมุดอื่น ๆ ที่เกี่ยวข้อง (ซึ่งรวมถึงเครื่องมือที่มีประสิทธิภาพสำหรับการคำนวณพื้นผิวท่ามกลางสิ่งอื่น ๆ ) มันไม่ได้ฟรีหรือโอเพนซอร์ส แต่มันมีความแข็งแกร่งและใช้กันอย่างแพร่หลายทั่วทั้งอุตสาหกรรม
Joe Corkery

4

ในการเริ่มต้นด้วย "คำถามที่เกี่ยวข้อง" ของคุณ: ฉันทำการแยกวิเคราะห์ PDB ใน Python แม้ว่าการประมวลผลที่ตามมาจะต้องดำเนินการในภาษาที่รวบรวมเพื่อความรวดเร็ว C นั้นไม่ใช่ภาษาที่ดีสำหรับการแยกวิเคราะห์โดยเฉพาะอย่างยิ่งไม่ใช่รูปแบบที่ยุ่งเหยิงเช่น PDB และนั่นอาจเป็นสาเหตุที่ไม่มีตัวแยกวิเคราะห์ PDB ที่เสถียรและครบกำหนดใน C.

อย่างอื่นที่คุณสามารถพิจารณาได้สมมติว่าเป้าหมายของคุณคือทำงานกับโครงสร้างจาก PDB คือใช้รูปแบบ mmCIF มากกว่ารูปแบบ PDB mmCIF นั้นปกติมากกว่าและง่ายต่อการวิเคราะห์ คุณยังได้รับข้อมูลที่แยกวิเคราะห์ได้มากขึ้นจากรุ่น mmCIF ของรายการ PDB มากกว่าจากรุ่น PDB คุณสามารถค้นหา C parser สำหรับ mmCIF บนเว็บไซต์ PDB (เรียกว่า CIFPARSE) แม้ว่าคุณจะทราบว่าการพัฒนาของมันลดลงเนื่องจาก C ++ เขียนใหม่เรียกว่า CIFPARSE-OBJ


3

ฉันรู้ว่านี่เป็นเรื่องเกี่ยวกับ C แต่มีวิธีที่ยอดเยี่ยมในการทำเช่นนี้โดยใช้ไลบรารี GLGRAPHICS ซึ่งใช้ OPENGL ในการประมวลผล (เป็นเฟรมเวิร์กที่ใช้ภาษาจาวากับ c ++ เช่นไวยากรณ์) โดยทั่วไปแล้ว OpenGL จะเหมือนกันโดยไม่คำนึงถึงภาษาที่คุณใช้ดังนั้น Java ไม่ควรสร้างความแตกต่างด้านประสิทธิภาพที่ใหญ่เกินไป อย่างไรก็ตามห้องสมุด GLGRAPHICS มาพร้อมกับ pdb Viewer ที่ทำงานนอกกรอบได้ มันง่ายมากที่จะปรับแต่งและฟอรั่มการประมวลผลมีการตอบสนองต่อไปนี้จริงๆ มันอาจเป็นจุดเริ่มต้นที่ดี

ห้องสมุด GLGRAPHICS http://sourceforge.net/projects/glgraphics/files/glgraphics/1.0/ ดู GLGRAPHICS / ตัวอย่าง / PDBview

กำลังประมวลผล http://processing.org/

สุดท้ายคุณอาจต้องการลองดู (ตัวอย่าง 3 มิติน้อย แต่ยังเจ๋ง ๆ ) http://www.mydisk.se/tgn380/webpage/RECEPTOR/


3

หากคุณยินดีที่จะไปกับ C ++ แล้วผมอยากแนะนำให้ESBTL

แทนที่จะจัดการกับไฟล์ในรูปแบบ PDB คุณอาจลองดาวน์โหลดไฟล์จาก Protein Data Bank ในรูปแบบ PDBMLซึ่งเป็น XML จริงๆ จากนั้นคุณสามารถแยกวิเคราะห์ไฟล์ PDBML โดยใช้ไลบรารี XML ที่คุณโปรดปรานสำหรับ C (ตัวอย่างเช่นด้วยLibxml2 )


1

แม้ว่านี่จะไม่ใช่การใช้ซอฟต์แวร์ที่ตั้งใจ แต่ฉันได้พบตัวแยกวิเคราะห์และวิธีการประมวลผลโครงสร้างโปรตีนทั่วไปที่พบในซอร์สโค้ดVMDให้มีประสิทธิภาพและครอบคลุม

VMD เป็นเครื่องมือสร้างภาพโมเลกุลแบบโอเพ่นซอร์ส มันค่อนข้างที่จะมองไปข้างหน้าเพื่อยืดเวลาเมื่อเหมาะสมมิฉะนั้นรหัสสามารถถูกตัดออกจากมันได้


VMD นั้นว่าง แต่ไม่ใช่โอเพ่นซอร์ส คุณต้องขอการเข้าถึงซอร์สโค้ดและคุณไม่สามารถแจกจ่ายซ้ำได้
khinsen

@khinsen ใบอนุญาตที่ks.uiuc.edu/Research/vmd/current/LICENSE.htmlและจะไม่อนุญาตให้มีการกระจายตัวของผลงานอนุพันธ์ เท่าที่ฉันทราบคุณจำเป็นต้องลงทะเบียนเพื่อรับซอร์สโค้ด แต่นั่นเป็นกระบวนการอัตโนมัติเช่นเดียวกับการรับแพ็คเกจปฏิบัติการ
สจ๊วต

มีข้อ จำกัด ที่รุนแรงในการทำงานดัดแปลง คุณสามารถแจกจ่ายได้อย่างอิสระเฉพาะเมื่อมันมีอย่างน้อย 10% ของรหัส VMD ซึ่งอาจไม่ได้เป็นตัวแทนของงานดัดแปลงมากกว่า 50% ในทางปฏิบัติคุณไม่สามารถแจกจ่าย VMD เวอร์ชันที่แก้ไขแล้วได้ คุณสามารถแจกจ่ายโปรแกรมแก้ไขและขอให้ผู้คนรับ VMD จากเซิร์ฟเวอร์อย่างเป็นทางการเท่านั้น นั่นไม่ใช่โอเพ่นซอร์สตามมาตรฐานของฉัน
khinsen

1

ไฟล์ PDB จะสามารถอ่านและจัดการได้อย่างง่ายดายใน C ++ โดยใช้โอเพนซอร์ส (BSD ได้รับใบอนุญาต) chemkitห้องสมุด

ตัวอย่างนี่คือโค้ดบางส่วนที่จะอ่านในไฟล์ PDB สำหรับฮีโมโกลบิน (PDB ID: 2DHB ) และพิมพ์จำนวนรวมของอะตอมจำนวนเชนและพื้นที่ผิวของตัวทำละลายที่สามารถเข้าถึงได้:

#include <iostream>

#include <chemkit/polymer.h>
#include <chemkit/polymerfile.h>
#include <chemkit/molecularsurface.h>

using namespace chemkit;

int main()
{
    PolymerFile file("2DHB.pdb");
    bool ok = file.read();
    if(!ok){
        std::cerr << "Failed to read file: " << file.errorString() << std::endl;
        return -1;
    }

    Polymer *protein = file.polymer();
    if(!protein){
        std::cerr << "File is empty." << std::endl;
        return -1;
    }

    std::cout << "Number of Atoms: " << protein->atomCount() << std::endl;
    std::cout << "Number of Chains: " << protein->chainCount() << std::endl;

    MolecularSurface surface(protein);
    surface.setSurfaceType(MolecularSurface::SolventAccessible);

    std::cout << "Surface Area: " << surface.surfaceArea() << " A^2" << std::endl;

    return 0;
}

เอาท์พุท:

Number of Atoms: 2201
Number of Chains: 2
Surface Area: 14791 A^2

สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารประกอบสำหรับคลาสที่แสดงด้านบน:


0

คุณอาจพิจารณา "ภาษา" อื่น ๆ เช่นCNSซึ่งออกแบบมาโดยเฉพาะสำหรับการทำงานกับโครงสร้างโมเลกุลและมีหน้าที่ที่คุณกล่าวถึง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.