Analiza danych struktury białka w C


17

Moje pochodzenie dotyczy genomiki, ale ostatnio pracuję nad problemami związanymi ze strukturą białek. Napisałem kilka odpowiednich programów w C, budując swój własny parser plików PDB od samego początku. Nie martwiłem się stworzeniem naprawdę solidnego parsera, po prostu wiedziałem, że samodzielne zbudowanie go byłoby najlepszym sposobem, aby zmusić się do prawdziwego zrozumienia formatu PDB.

Teraz, kiedy przeszedłem ten proces, szukam czegoś bardziej solidnego i dojrzałego. Czy w C są jakieś biblioteki struktur białek typu open source? Udało mi się znaleźć kilka w Google, ale nigdy wcześniej nie słyszałem o żadnym z nich i wydaje się, że nie są zbyt dojrzałe ani stabilne. Nieco powiązane pytanie: czy wszyscy naprawdę wykonują wszystkie tego rodzaju obliczenia przy użyciu Pythona? lub kod homebrew?

PS. Zasadniczo szukam biblioteki, która zawiera parser plików PDB, funkcje do obliczania kątów wiązań, długości wiązań, kątów skrętnych, dostępnej powierzchni itp.

Odpowiedzi:



6

OpenBabel jest C ++, ale jest powszechnie używany do ogólnych rzeczy strukturalnych - jego głównym celem jest konwersja pomiędzy i możliwość odczytu szerokiej gamy formatów. O ile wiem, nie ma jednak możliwości obliczania obszarów SAS.


3
Tylko uwaga. Pozwolę sobie poinformować, że OpenBabel jest świetny, ale GPL, co może stanowić problem, jeśli opracowane z nim oprogramowanie musi przejść na rynek.
Stefano Borini

Jeśli rozważają zastosowanie praktyczne, polecam patrząc na OEChem ( eyesopen.com/oechem-tk ) od OpenEye i związanych z nią innych bibliotek (w tym rozbudowane narzędzia do obliczeń powierzchniowych między innymi). Nie jest darmowy ani open source, ale jest solidny i szeroko stosowany w całej branży.
Joe Corkery,

4

Na początek „powiązane pytanie”: parsuję PDB w Pythonie, nawet jeśli kolejne przetwarzanie musi być wykonane w jakimś skompilowanym języku dla szybkości. C po prostu nie jest dobrym językiem do analizowania, w szczególności nie do nieporządnych formatów, takich jak PDB. I prawdopodobnie dlatego nie ma żadnych stabilnych i dojrzałych parserów PDB w C.

Inną rzeczą, którą możesz rozważyć, zakładając, że Twoim celem jest praca ze strukturami z PDB, jest użycie formatu mmCIF zamiast formatu PDB. mmCIF jest znacznie bardziej regularny i dlatego łatwiej go analizować. Otrzymujesz także więcej analizowalnych informacji z wersji mmCIF wpisów PDB niż z wersji PDB. Możesz znaleźć parser C dla mmCIF na stronie internetowej PDB (nazywa się to CIFPARSE), chociaż zauważysz, że jego rozwój został zarzucony na rzecz przepisania C ++ o nazwie CIFPARSE-OBJ.


3

Wiem, że chodzi o C, ale jest świetny sposób, aby to zrobić za pomocą biblioteki GLGRAPHICS, która implementuje OPENGL w przetwarzaniu (framework oparty na Javie ze składnią podobną do c ++). OpenGL jest w zasadzie taki sam, niezależnie od używanego języka, więc Java nie powinna robić zbyt dużej różnicy w wydajności. W każdym razie biblioteka GLGRAPHICS jest wyposażona w przeglądarkę pdb, która działa od razu po wyjęciu z pudełka. Jest bardzo łatwy do poprawienia, a forum przetwarzania ma bardzo responsywne obserwacje. To może być dobry punkt wyjścia.

GLGRAPHICS Library http://sourceforge.net/projects/glgraphics/files/glgraphics/1.0/ patrz GLGRAPHICS / przykłady / PDBview

Przetwarzanie http://processing.org/

Na koniec możesz sprawdzić ten (mniej 3d, ale wciąż fajny przykład) http://www.mydisk.se/tgn380/webpage/RECEPTOR/


3

Jeśli chcesz korzystać z C ++, polecam ESBTL .

Zamiast zajmować się plikami w formacie PDB, możesz rozważyć pobranie ich z banku danych białek w formacie PDBML , którym w rzeczywistości jest XML. Następnie możesz analizować pliki PDBML za pomocą swojej ulubionej biblioteki XML dla C (na przykład z Libxml2 ).


1

Chociaż prawdopodobnie nie jest to zamierzone użycie oprogramowania, odkryłem, że parsery i ogólne metody przetwarzania struktury białek znalezione w kodzie źródłowym VMD są solidne i wszechstronne.

VMD to narzędzie do wizualizacji molekularnej typu open source. Wydłuża czas, gdy jest to właściwe, w przeciwnym razie kod można kanibalizować z niego.


VMD jest darmowy, ale nie Open Source. Musisz poprosić o dostęp do kodu źródłowego i nie możesz go rozpowszechniać.
khinsen

@khinsen Pozwolenie jest ks.uiuc.edu/Research/vmd/current/LICENSE.html i nie pozwalają na dystrybucję utworów pochodnych. O ile wiem, musisz się zarejestrować, aby uzyskać kod źródłowy, ale jest to zautomatyzowany proces, podobnie jak uzyskanie pakietu wykonywalnego.
Stewart,

Istnieją poważne ograniczenia w pracy z instrumentami pochodnymi. Możesz go dowolnie rozpowszechniać tylko wtedy, gdy zawiera on najwyżej 10% kodu VMD, co nie może stanowić więcej niż 50% pracy pochodnej. W praktyce nie można rozpowszechniać nieco zmodyfikowanej wersji VMD. Możesz dystrybuować łatkę i prosić ludzi o pobranie VMD z oficjalnego serwera. To nie jest Open Source według moich standardów.
khinsen

1

Pliki PDB można łatwo odczytywać i modyfikować w C ++ przy użyciu biblioteki chemikitów typu open source (licencja BSD) .

Jako przykład podajemy kod, który odczyta w pliku PDB hemoglobinę (PDB ID: 2DHB ) i wydrukuje całkowitą liczbę atomów, liczbę łańcuchów i pole powierzchni dostępne dla rozpuszczalnika:

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

Wynik:

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

Aby uzyskać więcej informacji, zobacz dokumentację klas przedstawionych powyżej:


0

Możesz także rozważyć inny „język”, taki jak CNS , który jest specjalnie zaprojektowany do pracy ze strukturami molekularnymi i ma funkcje, o których wspomniałeś.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.