C protein yapısı verilerini ayrıştırma


17

Geçmişim genomikte, ancak son zamanlarda protein yapısı ile ilgili problemlerle çalışıyorum. C'de birkaç ilgili program yazdım, süreçte sıfırdan kendi PDB dosya ayrıştırıcımı oluşturdum. Gerçekten sağlam bir ayrıştırıcı yapma konusunda endişelenmedim, kendimi inşa etmenin kendimi PDB formatını gerçekten anlamaya zorlamanın en iyi yolu olacağını biliyordum.

Şimdi bu süreçten geçtiğime göre, biraz daha sağlam ve olgun bir şey arıyorum. C'de uygulanmış herhangi bir açık kaynaklı protein yapısı kütüphanesi var mı? Google'da birkaç tane bulabildim, ancak daha önce hiçbirini duymamıştım ve çok olgun ya da istikrarlı görünmüyorlar. Biraz ilgili bir soru: Herkes gerçekten bu tür hesaplamaları Python kullanarak yapıyor mu? veya homebrew kodu?

PS. Temelde bir PDB dosya ayrıştırıcı, bağ açıları, bağ uzunlukları, burulma açıları, yüzey erişilebilir yüzey alanı, vb hesaplamak için fonksiyonları içeren bir kütüphane arıyorum.

Yanıtlar:



6

OpenBabel C ++ ' dır , ancak genel yapısal şeyler için yaygın olarak kullanılır - ana odak noktası arasında dönüştürme ve çok çeşitli formatları okuma yeteneğidir. Bildiğim kadarıyla SAS alanlarını hesaplama yeteneğine sahip değil.


3
Sadece bir not. OpenBabel'ın harika olduğunu bildireyim, ancak GPL, onunla geliştirilen yazılımın ticari hale gelmesi gerekiyorsa bir sorun olabilir.
Stefano Borini

Ticari fayda düşünüyorsanız , OpenEye ve onunla ilişkili diğer kütüphanelerden OEChem'e ( eyesopen.com/oechem-tk ) bakmanızı tavsiye ederim ( diğer şeylerin yanı sıra yüzey hesaplamaları için sağlam araçlar içerir). Serbest veya açık kaynak değildir, ancak endüstri genelinde sağlam ve yaygın olarak kullanılmaktadır.
Joe Corkery

4

"İlgili soru" ile başlamak için: Ben sonraki işlem hız için derlenmiş bir dilde yapılması gerektiğinde bile Python PDB ayrıştırma yapmak. C, ayrıştırma için iyi bir dil değildir, özellikle PDB gibi dağınık biçimler için değildir. Ve muhtemelen bu yüzden C'de stabil ve olgun PDB ayrıştırıcıları yoktur.

Hedefinizin PDB'deki yapılarla çalışmak olduğunu varsayarsak, PDB formatı yerine mmCIF formatını kullanmak düşünebilirsiniz. mmCIF çok daha düzenlidir ve bu nedenle ayrıştırılması daha kolaydır. Ayrıca PDB girişlerinin mmCIF sürümünden, PDB sürümlerinden daha ayrıştırılabilir bilgiler elde edersiniz. PDB Web sitesinde (CIFPARSE olarak adlandırılır) mmCIF için bir C ayrıştırıcı bulabilirsiniz, ancak CIFPARSE-OBJ adlı bir C ++ yeniden yazma lehine bırakıldığını göreceksiniz.


3

Bunun C ile ilgili olduğunu biliyorum, ancak bunu OPENGL İşleme (c ++ benzeri sözdizimine sahip java tabanlı bir çerçeve) uygulayan GLGRAPHICS kütüphanesini kullanarak yapmanın harika bir yolu var. OpenGL, hangi dili kullandığınızdan bağımsız olarak temelde aynıdır, bu nedenle Java bir performans farkından çok büyük olmamalıdır. Her neyse, GLGRAPHICS kütüphanesi, kutunun dışında çalışan bir pdb görüntüleyici ile birlikte gelir. Onun tweak süper kolay ve İşleme forum gerçekten duyarlı bir takip var. İyi bir başlangıç ​​noktası olabilir.

GLGRAPHICS Kütüphanesi http://sourceforge.net/projects/glgraphics/files/glgraphics/1.0/ bkz. GLGRAPHICS / örnekler / PDBview

İşleme http://processing.org/

Son olarak, bunu kontrol etmek isteyebilirsiniz (daha az 3d ama yine de harika bir örnek) http://www.mydisk.se/tgn380/webpage/RECEPTOR/


3

C ++ ile gitmek istiyorsanız, o zaman ESBTL öneriyoruz .

PDB biçimindeki dosyalarla uğraşmak yerine, bunları aslında XML olan PDBML biçimindeki Protein Veri Bankası'ndan indirmeyi düşünebilirsiniz . Daha sonra C için favori XML kitaplığınızı kullanarak PDBML dosyalarını ayrıştırabilirsiniz (örneğin, Libxml2 ile ).


1

Bu muhtemelen yazılımın amaçlanan kullanımı olmasa da, VMD içinde bulunan ayrıştırıcıları ve genel protein yapısı işleme yöntemlerini buldum kaynak kodu sağlam ve kapsamlı olduğunu .

VMD açık kaynaklı bir moleküler görselleştirme aracıdır. Uygun olduğunda uzatmak göreceli olarak ileri doğrudur, aksi takdirde kod yamyamlaştırılabilir.


VMD ücretsizdir ancak Açık Kaynak değildir. Kaynak koduna erişim istemeniz gerekir ve kodu yeniden dağıtamazsınız.
khinsen

@khinsen lisans altındadır ks.uiuc.edu/Research/vmd/current/LICENSE.html ve does türev eserlerin dağıtımını sağlamaktadır. Bildiğim kadarıyla kaynak kodunu almak için kayıt olmanız gerekiyor, ancak bu, yürütülebilir paketi almak gibi otomatik bir işlemdir.
Stewart

Türev çalışmalarda ciddi kısıtlamalar vardır. Yalnızca, türev çalışmanın% 50'sinden fazlasını temsil etmeyebilecek VMD kodunun en fazla% 10'unu içeriyorsa serbestçe dağıtabilirsiniz. Uygulamada, VMD'nin biraz değiştirilmiş bir sürümünü dağıtamazsınız. Yalnızca bir yama dağıtabilir ve insanlardan resmi sunucudan VMD almasını isteyebilirsiniz. Bu standartlara göre Açık Kaynak değil.
khinsen

1

PDB dosyaları açık kaynak kodlu (BSD lisanslı) chemkit kütüphanesi kullanılarak C ++ 'da kolayca okunabilir ve değiştirilebilir .

Örnek olarak, hemoglobin (PDB ID: 2DHB ) için bir PDB dosyasında okunacak ve toplam atom sayısını, zincir sayısını ve solvente erişilebilen yüzey alanını yazdıracak bazı kodlar :

#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;
}

Çıktı:

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

Daha fazla bilgi için yukarıda sunulan sınıfların belgelerine bakın:


0

CNS gibi , moleküler yapılarla çalışmak için özel olarak tasarlanmış ve bahsettiğiniz işlevlere sahip başka bir "dili" de düşünebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.