सी में पार्सिंग प्रोटीन संरचना डेटा


17

मेरी पृष्ठभूमि जीनोमिक्स में है, लेकिन मैं हाल ही में प्रोटीन संरचना से संबंधित समस्याओं के साथ काम कर रहा हूं। मैंने सी में कुछ प्रासंगिक कार्यक्रम लिखे, इस प्रक्रिया में खरोंच से अपनी खुद की पीडीबी फ़ाइल पार्सर का निर्माण किया। मैं वास्तव में मजबूत पार्सर बनाने के बारे में चिंता नहीं करता था, मैं सिर्फ यह जानता था कि खुद को बनाना खुद को पीडीआर प्रारूप को समझने के लिए मजबूर करने का सबसे अच्छा तरीका होगा।

अब जब मैं इस प्रक्रिया से गुजर चुका हूं, तो मैं कुछ अधिक मजबूत और परिपक्व होने की कोशिश कर रहा हूं। क्या सी में कोई ओपन-सोर्स प्रोटीन संरचना पुस्तकालयों को लागू किया गया है? मैं Google पर कुछ खोजने में सक्षम था, लेकिन मैंने उनमें से किसी के बारे में पहले कभी नहीं सुना था और वे बहुत परिपक्व या स्थिर नहीं लगते हैं। थोड़ा संबंधित प्रश्न: क्या वास्तव में पायथन का उपयोग करके सभी इस प्रकार की गणना कर रहे हैं? या homebrew कोड?

पुनश्च। मैं अनिवार्य रूप से एक पुस्तकालय की तलाश में हूं जिसमें एक पीडीबी फ़ाइल पार्सर शामिल है, बॉन्ड कोण, बॉन्ड लंबाई, मरोड़ कोण, सतह सुलभ सतह क्षेत्र, आदि की गणना करने के लिए कार्य करता है।

जवाबों:


8

एक सी ++ लाइब्रेरी है जो काफी परिपक्व है। यह शायद उतना ही करीब है जितना कि आप सी के पास पहुंचेंगे। मैंने खुद अभी तक कोई भी प्रयोग करने योग्य सी लाइब्रेरी नहीं पाया है। आप C ++ लाइब्रेरी का उपयोग कर सकते हैं और फिर भी C में अपने अधिकांश कोड extern C { }C ++ कोड का उपयोग करके लिख सकते हैं ।


1
लिंक अप्रचलित है
xhg

यहाँ DSR PDB लाइब्रेरी का वर्तमान घर है: graphics.stanford.edu/~drussel/pdb
स्टीवन डारनेल

6

ओपनबेल सी ++ है, लेकिन इसका उपयोग आमतौर पर सामान्य संरचनात्मक चीजों के लिए किया जाता है - इसका मुख्य फोकस प्रारूपों की एक विस्तृत श्रृंखला को पढ़ने और क्षमता के बीच रूपांतरण है। जहां तक ​​मुझे पता है कि इसमें एसएएस क्षेत्रों की गणना करने की क्षमता नहीं है, हालांकि।


3
सिर्फ एक नोट। मैं बताता हूं कि ओपनबेल महान है, लेकिन जीपीएल, जो एक समस्या हो सकती है अगर इसके साथ विकसित सॉफ्टवेयर को वाणिज्यिक जाना है।
स्टेफानो बोरीनी

यदि आप वाणिज्यिक उपयोगिता पर विचार कर रहे हैं, तो मैं ओईकेम ( eyesopen.com/oechem-tk ) को OpenEye और इसके संबद्ध अन्य पुस्तकालयों (जिसमें अन्य चीजों के बीच सतह की गणना के लिए मजबूत उपकरण शामिल हैं) से देखने की सलाह दूंगा । यह मुफ़्त या खुला स्रोत नहीं है, लेकिन यह पूरे उद्योग में मजबूत और व्यापक रूप से उपयोग किया जाता है।
जो कॉर्करी

4

अपने "संबंधित प्रश्न" के साथ शुरू करने के लिए: मैं पायथन में पीडीबी पार्सिंग करता हूं, तब भी जब बाद के प्रसंस्करण को गति के लिए कुछ संकलित भाषा में करने की आवश्यकता होती है। सी बस पार्सिंग के लिए एक अच्छी भाषा नहीं है, विशेष रूप से पीडीबी जैसे गड़बड़ प्रारूपों के लिए नहीं। और शायद इसीलिए C में कोई स्थिर और परिपक्व PDB पार्सर नहीं हैं।

कुछ और जिस पर आप विचार कर सकते हैं, अपने लक्ष्य को PDB से संरचनाओं के साथ काम करना है, PDC प्रारूप के बजाय mmCIF प्रारूप का उपयोग करना है। mmCIF बहुत अधिक नियमित है और इस प्रकार पार्स करना आसान है। आपको PDB संस्करणों की तुलना में PDB प्रविष्टियों के mmCIF संस्करण से अधिक पार्स करने योग्य जानकारी भी मिलती है। आप PDB वेब साइट (इसे CIFPARSE कहा जाता है) पर mmCIF के लिए C पार्सर पा सकते हैं, हालाँकि आप ध्यान देंगे कि इसका विकास C ++PARSE-OBJ नामक C ++ पुनर्लेखन के पक्ष में छोड़ दिया गया है।


3

मुझे पता है कि यह C के बारे में है, लेकिन GLGRAPHICS लाइब्रेरी का उपयोग करते हुए ऐसा करने का एक शानदार तरीका है, जो प्रसंस्करण में OPENGL (सिंटैक्स की तरह c ++ के साथ जावा आधारित फ्रेमवर्क) को लागू करता है। OpenGL मूल रूप से समान है कि आप किस भाषा का उपयोग करते हैं, इसलिए जावा को प्रदर्शन के अंतर से बहुत बड़ा नहीं बनाना चाहिए। वैसे भी, GLGRAPHICS पुस्तकालय एक pdb दर्शक के साथ आता है जो बॉक्स से बाहर काम करता है। इसकी सुपर आसान ट्विकिंग और प्रोसेसिंग फ़ोरम के बाद वास्तव में उत्तरदायी है। यह एक अच्छा शुरुआती बिंदु हो सकता है।

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 की सिफारिश करूंगा

पीडीबी प्रारूप में फाइलों से निपटने के बजाय, आप उन्हें पीडीबीएमएल प्रारूप में प्रोटीन डेटा बैंक से डाउनलोड करने पर विचार कर सकते हैं , जो वास्तव में एक्सएमएल है। फिर आप C के लिए अपनी पसंदीदा XML लाइब्रेरी का उपयोग करके PDBML फाइलों को पार्स कर सकते हैं (उदाहरण के लिए, Libxml2 के साथ )।


1

हालांकि यह सॉफ़्टवेयर के इच्छित उपयोग के लिए नहीं है, मैंने VMD स्रोत कोड में पाए गए पार्सर्स और सामान्य प्रोटीन-संरचना प्रसंस्करण विधियों को मजबूत और व्यापक पाया है।

VMD एक ओपन-सोर्स आणविक विज़ुअलाइज़ेशन टूल है। उपयुक्त होने पर इसे विस्तारित करने के लिए अपेक्षाकृत स्टार्च-फॉरवर्ड किया जाता है, अन्यथा कोड से इसे नरभक्षण किया जा सकता है।


वीएमडी मुक्त है लेकिन ओपन सोर्स नहीं है। आपको स्रोत कोड तक पहुंच के लिए पूछना होगा और आप इसे फिर से वितरित नहीं कर सकते।
खिंसन

@khinsen लाइसेंस पर है ks.uiuc.edu/Research/vmd/current/LICENSE.html और यह करता है व्युत्पन्न कार्य वितरित करने की अनुमति। जहाँ तक मैं जानता हूँ कि आपको स्रोत कोड प्राप्त करने के लिए पंजीकरण करने की आवश्यकता है, लेकिन यह एक स्वचालित प्रक्रिया है, जैसे निष्पादन योग्य पैकेज प्राप्त करना।
स्टीवर्ट

व्युत्पन्न कार्य के लिए गंभीर प्रतिबंध हैं। आप इसे केवल तभी वितरित कर सकते हैं जब इसमें वीएमडी कोड का 10% हिस्सा शामिल हो, जो कि व्युत्पन्न कार्य के 50% से अधिक का प्रतिनिधित्व नहीं कर सकता है। व्यवहार में, आप VMD के कुछ संशोधित संस्करण वितरित नहीं कर सकते। आप केवल एक पैच वितरित कर सकते हैं और लोगों को आधिकारिक सर्वर से वीएमडी प्राप्त करने के लिए कह सकते हैं। मेरे मानकों से यह ओपन सोर्स नहीं है।
खिंसन

1

पीडीबी फाइलों को ओपन सोर्स (बीएसडी लाइसेंस प्राप्त) केमेकिट लाइब्रेरी का उपयोग करके सी ++ में आसानी से पढ़ा और हेरफेर किया जा सकता है ।

एक उदाहरण के रूप में यहाँ कुछ कोड है जो हीमोग्लोबिन (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

आप सीएनएस की तरह एक और "भाषा" पर भी विचार कर सकते हैं , जो विशेष रूप से आणविक संरचनाओं के साथ काम करने के लिए डिज़ाइन किया गया है और आपके द्वारा उल्लिखित फ़ंक्शन हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.