Analyse des données de structure des protéines en C

17

Mon expérience est en génomique, mais j'ai récemment travaillé sur des problèmes liés à la structure des protéines. J'ai écrit quelques programmes pertinents en C, construisant mon propre analyseur de fichiers PDB à partir de zéro dans le processus. Je ne m'inquiétais pas de faire un analyseur vraiment robuste, je savais juste que le construire moi-même serait le meilleur moyen de me forcer à vraiment comprendre le format PDB.

Maintenant que j'ai suivi ce processus, je cherche quelque chose d'un peu plus robuste et mature. Existe-t-il des bibliothèques de structure de protéines open source implémentées en C? J'ai pu en trouver quelques-uns sur Google, mais je n'en avais jamais entendu parler auparavant et ils ne semblent pas très matures ou stables. Une question légèrement connexe: tout le monde fait-il vraiment tous ces types de calculs en utilisant Python? ou code homebrew?

PS. Je recherche essentiellement une bibliothèque qui comprend un analyseur de fichiers PDB, des fonctions de calcul des angles de liaison, des longueurs de liaison, des angles de torsion, des surfaces accessibles, etc.

Daniel Standage
la source

Réponses:

8

Il existe une bibliothèque C ++ qui est assez mature. C'est probablement aussi proche que vous arriverez à C. Je n'ai moi-même pas encore trouvé de bibliothèque C utilisable. Vous pouvez utiliser la bibliothèque C ++ et toujours écrire la plupart de votre code en C en utilisant extern C { }le code C ++.

halfdan
la source
1
Le lien est obsolète
xhg
Voici la maison actuelle de la bibliothèque DSR PDB: graphics.stanford.edu/~drussel/pdb
Steven Darnell
6

OpenBabel est C ++, mais il est couramment utilisé pour les choses structurelles générales - son objectif principal est la conversion entre et la possibilité de lire un large éventail de formats. Pour autant que je sache, il n'a pas la capacité de calculer les zones SAS.

Aesin
la source
3
Juste une note. Je signale qu'OpenBabel est génial, mais la GPL, qui peut être un problème si le logiciel développé avec lui doit devenir commercial.
Stefano Borini
Si vous envisagez une utilité commerciale, je recommanderais de regarder OEChem ( eyesopen.com/oechem-tk ) d'OpenEye et ses autres bibliothèques associées (qui incluent entre autres des outils robustes pour les calculs de surface). Ce n'est pas gratuit ou open source, mais il est robuste et largement utilisé dans l'industrie.
Joe Corkery
4

Pour commencer avec votre "question connexe": je fais l'analyse PDB en Python, même lorsque le traitement ultérieur doit être fait dans un langage compilé pour plus de vitesse. C n'est tout simplement pas un bon langage pour l'analyse, en particulier pas pour les formats salissants comme PDB. Et c'est probablement pourquoi il n'y a pas d'analyseurs PDB stables et matures en C.

Vous pouvez également envisager, en supposant que votre objectif est de travailler avec des structures de la PDB, d'utiliser le format mmCIF plutôt que le format PDB. mmCIF est beaucoup plus régulier et donc plus facile à analyser. Vous obtenez également plus d'informations analysables à partir de la version mmCIF des entrées PDB que des versions PDB. Vous pouvez trouver un analyseur C pour mmCIF sur le site Web PDB (il s'appelle CIFPARSE), bien que vous noterez que son développement a été abandonné au profit d'une réécriture C ++ appelée CIFPARSE-OBJ.

Khinsen
la source
3

Je sais qu'il s'agit de C, mais il existe un excellent moyen de le faire en utilisant la bibliothèque GLGRAPHICS, qui implémente OPENGL dans Processing (un framework basé sur java avec une syntaxe de type C ++). OpenGL est fondamentalement le même quel que soit le langage que vous utilisez, donc Java ne devrait pas faire trop de différence de performance. Quoi qu'il en soit, la bibliothèque GLGRAPHICS est livrée avec une visionneuse pdb qui fonctionne immédiatement. Son super facile à modifier et le forum de traitement a un suivi très réactif. Ce pourrait être un bon point de départ.

Bibliothèque GLGRAPHICS http://sourceforge.net/projects/glgraphics/files/glgraphics/1.0/ voir GLGRAPHICS / examples / PDBview

Traitement http://processing.org/

Enfin, vous voudrez peut-être vérifier cela (exemple moins 3d mais toujours cool) http://www.mydisk.se/tgn380/webpage/RECEPTOR/

D.Deriso
la source
3

Si vous êtes prêt à opter pour C ++, je recommanderais ESBTL .

Au lieu de traiter des fichiers au format PDB, vous pouvez envisager de les télécharger à partir de la Protein Data Bank au format PDBML , qui est en fait XML. Vous pouvez ensuite analyser les fichiers PDBML à l'aide de votre bibliothèque XML préférée pour C (par exemple, avec Libxml2 ).

Juan M. Bello-Rivas
la source
1

Bien que ce ne soit peut-être pas l'utilisation prévue du logiciel, j'ai trouvé que les analyseurs et les méthodes générales de traitement de la structure des protéines trouvés dans le code source VMD étaient robustes et complets.

VMD est un outil de visualisation moléculaire open source. Il est relativement simple d'étendre lorsque cela est approprié, sinon le code peut en être cannibalisé.

Stewart
la source
VMD est gratuit mais pas Open Source. Vous devez demander l'accès au code source et vous ne pouvez pas le redistribuer.
khinsen
@khinsen La licence est à ks.uiuc.edu/Research/vmd/current/LICENSE.html et ne permet la distribution d'œuvres dérivées. Pour autant que je sache, vous devez vous inscrire pour obtenir le code source, mais c'est un processus automatisé, tout comme obtenir le package exécutable.
Stewart
Il existe de sévères restrictions au travail dérivé. Vous ne pouvez le distribuer librement que s'il contient au plus 10% de code VMD, qui ne peut représenter plus de 50% du travail dérivé. En pratique, vous ne pouvez pas distribuer une version quelque peu modifiée de VMD. Vous pouvez uniquement distribuer un correctif et demander aux gens d'obtenir VMD à partir du serveur officiel. Ce n'est pas Open Source selon mes standards.
khinsen
1

Les fichiers PDB peuvent être lus et manipulés facilement en C ++ à l'aide de la bibliothèque chemkit open source (licence BSD) .

À titre d'exemple, voici un code qui lira dans un fichier PDB pour l'hémoglobine (ID PDB: 2DHB ) et imprimera le nombre total d'atomes, le nombre de chaînes et la surface accessible au solvant:

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

Production:

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

Pour plus d'informations, consultez la documentation des classes présentées ci-dessus:

Kyle Lutz
la source
0

Vous pourriez également envisager un autre «langage» comme le SNC , qui est spécialement conçu pour travailler avec des structures moléculaires et qui a les fonctions que vous avez mentionnées.

Christopher Bottoms
la source