C에서 단백질 구조 데이터 파싱


17

저의 배경은 유전체학이지만 최근 단백질 구조와 관련된 문제를 다루고 있습니다. C로 몇 가지 관련 프로그램을 작성하여 프로세스에서 처음부터 내 PDB 파일 파서를 작성했습니다. 나는 정말로 강력한 파서를 만드는 것에 대해 걱정하지 않았다. 나는 스스로 하나를 만드는 것이 PDB 형식을 실제로 이해하도록하는 가장 좋은 방법이라는 것을 알았다.

이제이 과정을 거쳤으므로 좀 더 강력하고 성숙한 무언가를 찾고 있습니다. C로 구현 된 오픈 소스 단백질 구조 라이브러리가 있습니까? Google에서 몇 가지를 찾을 수 있었지만 이전에 들어 본 적이 없으며 성숙하거나 안정적이지 않은 것 같습니다. 약간 관련된 질문 : 모두가 실제로 Python을 사용하여 이러한 유형의 계산을 모두하고 있습니까? 또는 사제 코드?

추신. 필자는 본질적으로 PDB 파일 파서, 본드 각도, 본드 길이, 비틀림 각도, 표면 접근 표면 영역 등을 계산하는 기능을 포함하는 라이브러리를 찾고 있습니다.

답변:


8

C ++ 라이브러리 상당히 성숙되어있다. 이것은 아마도 당신이 C에 가까워지는 것에 가깝습니다. 나 자신은 아직 사용 가능한 C 라이브러리를 찾지 못했습니다. C ++ 라이브러리를 사용하고 C ++ 코드를 사용하여 대부분의 코드를 C로 extern C { }작성할 수 있습니다.


1
링크는 더 이상 사용되지 않습니다
xhg

다음은 DSR PDB 라이브러리의 현재 가정은 다음과 같습니다 graphics.stanford.edu/~drussel/pdb
스티븐 다넬

6

OpenBabel 은 C ++이지만 일반적으로 일반적인 구조에 사용됩니다. 주요 초점은 변환과 광범위한 형식을 읽을 수있는 기능입니다. 내가 아는 한 SAS 영역을 계산하는 기능은 없습니다.


3
그냥 참고하십시오. OpenBabel은 훌륭하지만 GPL은 GPL과 함께 개발 된 소프트웨어가 상용화되면 문제가 될 수 있다고보고하겠습니다.
스테파노 보리 니

상용 유틸리티를 고려하고 있다면 OpenEye 및 관련 라이브러리 에서 OEChem ( eyesopen.com/oechem-tk )을 살펴 보는 것이 좋습니다 (여기서 표면 계산을위한 강력한 도구 포함). 무료 또는 오픈 소스는 아니지만 업계 전체에서 강력하고 널리 사용됩니다.
Joe Corkery

4

"관련 질문"으로 시작하려면 : 후속 처리가 속도를 위해 컴파일 된 언어로 수행되어야하는 경우에도 Python에서 PDB 구문 분석을 수행합니다. C는 단순히 구문 분석에 좋은 언어가 아니며 특히 PDB와 같은 지저분한 형식에는 적합하지 않습니다. 그리고 이것이 아마도 C에 안정적이고 성숙한 PDB 파서가없는 이유 일 것입니다.

PDB의 구조로 작업하는 것이 목표라고 가정 할 때 고려해야 할 사항은 PDB 형식이 아닌 mmCIF 형식을 사용하는 것입니다. mmCIF는 훨씬 더 규칙적이고 구문 분석하기가 더 쉽습니다. PDB 버전보다 mmCIF 버전의 PDB 항목에서 더 많은 구문 분석 정보를 얻을 수 있습니다. CIFPARSE-OBJ라고하는 C ++ 다시 쓰기를 선호하여 PDB 웹 사이트 (CIFPARSE라고 함)에서 mmCIF에 대한 C 파서를 찾을 수 있습니다.


3

나는 이것이 C에 관한 것을 알고 있지만 GLGRAPHICS 라이브러리를 사용 하여이 작업을 수행하는 좋은 방법이 있습니다. OpenGL은 기본적으로 사용하는 언어에 관계없이 동일하므로 Java가 성능 차이를 너무 크게해서는 안됩니다. 어쨌든 GLGRAPHICS 라이브러리는 즉시 사용할 수있는 pdb 뷰어와 함께 제공됩니다. 매우 쉽게 조정할 수 있으며 처리 포럼에는 반응 형이 있습니다. 좋은 출발점이 될 수 있습니다.

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 형식의 파일을 처리하는 대신 Protein Data Bank에서 PDBML 형식 ( 실제로는 XML) 으로 파일을 다운로드하는 것을 고려할 수 있습니다 . 그런 다음 자주 사용하는 C 용 XML 라이브러리 (예 : Libxml2 )를 사용하여 PDBML 파일을 구문 분석 할 수 있습니다 .


1

이것이 소프트웨어의 의도 된 사용은 아니지만, VMD 소스 코드 내에서 발견 된 파서 및 일반적인 단백질 구조 처리 방법은 강력하고 포괄적 인 것으로 나타났습니다 .

VMD는 오픈 소스 분자 시각화 도구입니다. 적절한 경우 확장하는 것이 상대적으로 별 나지 않습니다. 그렇지 않으면 코드를 잠식 할 수 있습니다.


VMD는 무료이지만 오픈 소스는 아닙니다. 소스 코드에 대한 액세스를 요청해야하며 재배포 할 수 없습니다.
khinsen

@khinsen 라이센스는에있다 ks.uiuc.edu/Research/vmd/current/LICENSE.html 그것은 않습니다 차적 저작물의 배포를 허용합니다. 내가 아는 한 소스 코드를 얻으려면 등록해야하지만 실행 패키지를 얻는 것과 같은 자동화 된 프로세스입니다.
스튜어트

파생 작업에는 심각한 제한이 있습니다. 파생 작업의 50 %를 초과하지 않는 VMD 코드가 최대 10 % 인 경우에만 자유롭게 배포 할 수 있습니다. 실제로 약간 수정 된 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.