Cでのタンパク質構造データの解析


17

私のバックグラウンドはゲノミクスですが、最近、タンパク質構造に関連する問題に取り組んでいます。Cでいくつかの関連プログラムを作成し、プロセスの最初から独自のPDBファイルパーサーを作成しました。本当に堅牢なパーサーを作成することを心配していませんでした。自分で1つ作成することが、PDBフォーマットを本当に理解するように強制する最良の方法であると思いました。

このプロセスを完了したので、もう少し堅牢で成熟したものを探しています。Cで実装されているオープンソースのタンパク質構造ライブラリはありますか?私はGoogleでいくつかを見つけることができましたが、それらのどれも聞いたことがなく、それらはあまり成熟していないか安定しているようには見えません。少し関連する質問:誰もが実際にPythonを使用してこれらすべてのタイプの計算を行っていますか?または自作コード?

PS。私は基本的に、PDBファイルパーサー、結合角、結合長、ねじれ角、表面アクセス可能表面積などを計算するための関数を含むライブラリを探しています。

回答:


8

かなり成熟したC ++ライブラリがあります。これはおそらくあなたがCに到達するのと同じくらい近いでしょう。私自身はまだ使用可能なCライブラリを見つけていません。C ++ライブラリを使用extern C { }しても、C ++コードを使用して、ほとんどのコードをCで記述できます。


1
リンクは廃止されました
-xhg

ここでDSR PDBライブラリの現在の家がある:graphics.stanford.edu/~drussel/pdb
スティーブン・ダーネル

6

OpenBabelはC ++ですが、一般的な構造的なものによく使用されます-その主な焦点は、幅広い形式間の変換と読み取り機能です。ただし、私が知る限り、SASエリアを計算する機能はありません。


3
ちょっとだけ。OpenBabelは素晴らしいですが、GPLは、それで開発されたソフトウェアが商用化されなければならない場合に問題になる可能性があることを報告しましょう。
ステファノボリーニ

商用ユーティリティを検討している場合は、OpenEyeのOEChem(eyesopen.com/oechem-tk)および関連する他のライブラリ(特に、表面計算用の堅牢なツールを含む)を参照することをお勧めします。無料またはオープンソースではありませんが、堅牢で業界全体で広く使用されています。
ジョーコーケリー

4

あなたの「関連する質問」から始めるために:私はPythonでPDB構文解析を行います。その後の処理を高速化のためにコンパイル済みの言語で行う必要がある場合でもです。Cは解析に適した言語ではなく、特にPDBのような乱雑な形式には適していません。そして、それがおそらくCに安定した成熟したPDBパーサーがない理由です。

PDBの構造を使用することが目的であれば、PDB形式ではなくmmCIF形式を使用することを検討できます。mmCIFははるかに規則的であるため、解析が容易です。また、PDBバージョンよりも、PDBエントリのmmCIFバージョンからより多くの解析可能な情報を取得します。mmCIFのCパーサーは、PDB Webサイト(CIFPARSEと呼ばれます)で見つけることができますが、CIFPARSE-OBJと呼ばれるC ++の書き換えを支持して開発が中止されたことに注意してください。


3

私はこれがCについてであることを知っていますが、Processing(c ++のような構文を持つJavaベースのフレームワーク)でOPENGLを実装するGLGRAPHICSライブラリを使用してこれを行う素晴らしい方法があります。OpenGLは、使用する言語に関係なく基本的に同じなので、Javaがパフォーマンスの違いを大きくしすぎないようにする必要があります。とにかく、GLGRAPHICSライブラリには、すぐに使用できるpdbビューアが付属しています。微調整が非常に簡単で、Processingフォーラムには非常に反応の良いフォローがあります。良い出発点になるかもしれません。

GLGRAPHICSライブラリ http://sourceforge.net/projects/glgraphics/files/glgraphics/1.0/ GLGRAPHICS / examples / PDBviewを参照

http://processing.org/の処理

最後に、これを確認することをお勧めします(3D未満ですが、まだクールな例)http://www.mydisk.se/tgn380/webpage/RECEPTOR/


3

C ++を使用する場合は、ESBTLをお勧めします

PDB形式のファイルを処理する代わりに、PDBML形式(実際はXML)でProtein Data Bankからファイルをダウンロードすることを検討できます。その後、C用のお気に入りのXMLライブラリを使用して(たとえば、Libxml2を使用して)PDBMLファイルを解析できます。


1

これはおそらくソフトウェアの使用目的ではありませんが、VMDソースコード内にあるパーサーと一般的なタンパク質構造処理方法は堅牢で包括的であることがわかりました。

VMDは、オープンソースの分子視覚化ツールです。それが適切な場合に拡張することは比較的困難です。


VMDは無料ですが、オープンソースではありません。ソースコードへのアクセスを要求する必要があり、再配布することはできません。
khinsen

@khinsenライセンスはks.uiuc.edu/Research/vmd/current/LICENSE.htmlにあり、派生著作物の配布を許可してます。私の知る限り、ソースコードを取得するには登録する必要がありますが、それは実行可能パッケージを取得するのと同じように自動化されたプロセスです。
スチュワート

二次的著作物には厳しい制限があります。VMDコードの最大10%を含む場合にのみ自由に配布できます。VMDコードは、派生物の50%を超えない場合があります。実際には、VMDの多少変更されたバージョンを配布することはできません。パッチを配布して、公式サーバーからVMDを取得するように依頼することしかできません。それは私の基準ではオープンソースではありません。
khinsen

1

PDBファイルは、オープンソース(BSDライセンス)のchemkitライブラリを使用して、C ++で簡単に読み取りおよび操作できます。

例として、ヘモグロビンのPDBファイル(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

詳細については、上記のクラスのドキュメントを参照してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.