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.
źródło
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.
źródło
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.
źródło
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/
źródło
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 ).
źródło
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.
źródło
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:
Wynik:
Aby uzyskać więcej informacji, zobacz dokumentację klas przedstawionych powyżej:
źródło
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ś.
źródło