2013-02-12 6 views
3

.smiles 파일을 작업 중입니다. .smiles 파일의 파일 구조는 다음과 같습니다. http://en.wikipedia.org/wiki/Chemical_file_format#SMILES스마일 파일에서 모든 분자 검색

미소 파일에서 모든 원자를 얻고 싶습니다. 그것은 하나의 'C'원자가있는 경우 4 개의 'H'원자가 연결될 것임을 의미합니다.

파이썬에서 미소 형식을 구문 분석 할 수있는 일부 모듈이 있지만 지원되는 수소 원자를 제공하지 않는다는 것을 검색하는 동안 발견되었습니다. (예 : 'C'만주고 'C'원자에 연결된 다른 4 'H'원자가 없습니다.)

파이썬을 사용하여 연결된 'H'원자를 비롯한 모든 원자를 어떻게 찾을 수 있습니까? 연결 'H'원자를 포함한 모든 원자에 변환 할 필요가 미소 파일의
예 :

[H]OC([H])([H])[[email protected]@]1([H])C([H])=C([H])[[email protected]@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H] 

은 사전에 감사합니다.

+0

내가 그것에서 원자량을 찾으려하기 때문에 bluobelisk http://blueobelisk.shapado.com/이 질문에 – chupvl

답변

3

미소 파일에서 모든 원자를 가져오고 싶습니다. 그것은 하나의 'C'원자가있는 경우 4 개의 'H'원자가 연결될 것임을 의미합니다. 이 가정은 올바르지 않습니다. 1,2,3 수소가 될 수 있습니다.

cheminformatics 용 openbabel, CDK 또는 유사한 라이브러리를 사용해보십시오.

하지만 왜 파일에서 모든 원자가 필요합니까?

+0

내가 원하는 물어 실제로 낫다. 나는 또한 기증자와 수락자를 찾고 싶다. – sam

+0

@sam 그는 (sam) 가장 안정적인 원자 구성의 원자량을 원한다. 그렇다면 1 'C'는 안정적으로 4 'H'와 결합해야합니다. 그게 샘인가요? ... – pradyunsg

+0

네,하지만 4 H는 미소 파일 형식으로 나타나지 않습니다. 그래서 나는 그런 H를 계산해야하고 질량을 계산하고 싶습니다. – sam

2

화학 관련 알고리즘의 신속한 개발을 목표로하는 화학 정보학 툴킷 frowns을 시도하십시오. 이것은 거의 100 % Python으로 작성되었으며 C++로 작성된 작은 부분이 있습니다.

+0

이 있습니다. frowns는 파이썬 2.2 (이전 버전) 용으로 만 보이며 vflib (문제는 아님)도 필요합니다. 또한이 프로젝트는 2004 년 (Old, Big Problem) 이후로 죽은 것으로 보인다. – pradyunsg

+1

http://baoilleach.blogspot.com/2007/06/parsing-smiles-with-frown.html – chupvl

6

Open Babel을 참조하십시오. 열기 바벨 사이트에

유용한 링크

참조 또한, 도구가 포함되어
This blog (모두는 아니지만, 오픈 바벨을 사용하여) 파이썬 화학에 (캐스퍼 된 Steinmann에 의해)

업데이트 이 (테스트되지 않은)이 코드를 참조하십시오 : 화합물의 분자량을 위해

mymol = pybel.readstring("smi", 
"[H]OC([H])([H])[[email protected]@]1([H])C([H])=C([H])[[email protected]@]([H])(n2c([H])nc3c(nc(nc23)" + \ 
"N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H") 
print mymol.addh() 
+0

@sam 내 갱신 (들) – pradyunsg

+0

이 원하는 출력을 참조하십시오? 'OC [C @ H] 1C = C [C @@ H (n2cnc3c (NC (nc23) N) NC2CC2) C1 \t ' – pradyunsg

+0

@sam 답신 Pls는 내 업데이트를 보지하고 pybel을 확인 ... – pradyunsg

3

을, SMILES로 주어진, Openbabel의 파이썬 바인딩 작업을해야합니다 :

import pybel 
mol = pybel.readfile("smi", "stuff.smi").next() 
print mol.molwt 
0

RDKIT 파이썬에서 잘 정의 된 화학 정보학 라이브러리입니다.

은 당신이 RDKIT 분자에 미소에서 읽은 후에는 거의 모든 것을 할 수

from rdkit import Chem 

m = Chem.MolFromSmiles('[H]OC([H])([H])[[email protected]@]1([H])C([H])=C([H])[[email protected]@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]') 

, 미소에서 분자를 읽을 수 있습니다. 자세한 내용은 설명서를 참조하십시오.