Rdkit을 사용하여 SDF 파일 분해
7952 단어 RDKit
목표·목적
SDF 파일에서 설명자를 가져와 csv 파일로 처리할 수 있습니다.
기술자는 무엇입니까?
묘사부호는 분자 구조에서 수치화할 수 있는 것을 나타낸다.(csv 파일 모양으로 만들기)
참조 소스https://www.yodosha.co.jp/jikkenigaku/keyword/4091.html
부분 구조의 특성과 물리 화학의 성질 등 수치화를 통해 화합물의 화학적 특징을 나타내는 특징 벡터를 나타낸다
참조 소스 2https://future-chem.com/rdkit-descriptors/
묘사부호는 분자의 성질을 결정하는 지표이다
서술자가 필요한 이유
SDF 파일은 여러 분자를 한 파일에 수납하는 파일입니다.(약물 개발 등에서 데이터 전달에는 SDF 파일이 사용된 것으로 보인다.)
SDF 파일의 내용은 가져오려는 DBpubchem와 PDB에 따라 열명(변수명)이 크게 바뀌었지만, SDF 파일의 내용은 기본적으로'분자량','SMILES','몰질량'등 기본 정보만 포함하기 때문에 묘사부호는 계산 등을 통해 안내해야 한다.
그러나 이 설명자는 수치이기 때문에 기계 학습과 DeepLearning에 사용할 수 있다.현재 선별(특징 추출), 단백질과 배체의 상호작용 분석 등 다양한 곳에서 가장 선진적인 기술을 사용하고 있다.
예)https://www.jstage.jst.go.jp/article/tjsai/29/1/29_D-TS13_12/_pdf/-char/ja
(2014년)
https://www.jstage.jst.go.jp/article/jccj/2/4/2_4_119/_pdf
이루어지다
https://datachemeng.com/pythonassignment/
이 사이트에서 다운로드한 SDF 파일을 사용하여 csv 파일을 만들고 싶습니다.(참고로 위의 사이트 코드도 샘플로 만들었습니다. 감사합니다.)
rdkit.pyfrom rdkit.Chem import Draw, PandasTools
from rdkit import Chem
import pandas as pd
from rdkit.Chem import Descriptors
from rdkit.ML.Descriptors import MoleculeDescriptors
이러한 라이브러리를 가져옵니다.
rdkit.pymols = Chem.SDMolSupplier('logSdataset1290_2d.sdf')
mols #=> rdkit.Chem.rdmolfiles.SDMolSupplier....
먼저 SDMolSupplier를 사용하여 SDF 파일에서 가져옵니다.
하지만 변수 mols의 내용이 보이지 않기 때문에 보고 싶은 사람은 판다스툴을 사용해 DataFrame에서 볼 수 있다.
rdkit.pydf = PandasTools.LoadSDF('logSdataset1290_2d.sdf')
df
데이터 정리 중
rdkit.pyy_name = 'logS'
mols = [mol for mol in mols if mol is not None ] #=> SDMolSupplierは入力構造に不備があるとNoneになるため、
len(mols) #=>1290
rdkit.pydescriptor_names = [descriptor_name[0] for descriptor_name in Descriptors._descList]
len(descriptor_names) #=> 200
Descriptors._descList에는 설명자와 계산 방법이 있습니다.200개의 기술자가 있지만 일부분만 있는 것 같다.
rdkit.pydescriptors = pd.DataFrame([descriptor_calculation.CalcDescriptors(mol) for mol in mols])#for文で一つ一つ分子を計算している
그런 다음 데이터 프레임에 계산된 값을 입력합니다.
rdkit.pydescriptors.columns = descriptor_names
smile = [Chem.MolToSmiles(mol) for mol in mols] #=> smileを取得する
descriptors.index = smile
y = pd.DataFrame([float(mol.GetProp(y_name)) for mol in mols]) #分子のlogSを取得
y.index = smile
y.columns = [y_name]
dataset = pd.concat([descriptors, y], axis=1)
dataset.to_csv('dataset.csv') #=> dataset.csvが出力された
y에서 logs를 얻는데 logs는 화합물의 물에 대한 용해도의 지표로 높으면 물에 대한 용해도가 높다고 할 수 있다.이것은 약을 만드는 등 중요한 지표다.
위의 사진은 csv 파일의 수치입니다.
이렇게 되면 구조분자가 수치화돼 여기서부터 PCA(주성분분석)와 심층학습에 적용돼 유사도 평가와 상호작용 분석에 활용될 수 있기를 기대한다.
※ 이 글을 쓴 사람은 생물화학을 거의 모르니 잘못이 있으면 지적해 주십시오.
Reference
이 문제에 관하여(Rdkit을 사용하여 SDF 파일 분해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/beginnerhuman/items/cb1ce16ce7f9cdd667a1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from rdkit.Chem import Draw, PandasTools
from rdkit import Chem
import pandas as pd
from rdkit.Chem import Descriptors
from rdkit.ML.Descriptors import MoleculeDescriptors
mols = Chem.SDMolSupplier('logSdataset1290_2d.sdf')
mols #=> rdkit.Chem.rdmolfiles.SDMolSupplier....
df = PandasTools.LoadSDF('logSdataset1290_2d.sdf')
df
y_name = 'logS'
mols = [mol for mol in mols if mol is not None ] #=> SDMolSupplierは入力構造に不備があるとNoneになるため、
len(mols) #=>1290
descriptor_names = [descriptor_name[0] for descriptor_name in Descriptors._descList]
len(descriptor_names) #=> 200
descriptors = pd.DataFrame([descriptor_calculation.CalcDescriptors(mol) for mol in mols])#for文で一つ一つ分子を計算している
descriptors.columns = descriptor_names
smile = [Chem.MolToSmiles(mol) for mol in mols] #=> smileを取得する
descriptors.index = smile
y = pd.DataFrame([float(mol.GetProp(y_name)) for mol in mols]) #分子のlogSを取得
y.index = smile
y.columns = [y_name]
dataset = pd.concat([descriptors, y], axis=1)
dataset.to_csv('dataset.csv') #=> dataset.csvが出力された
Reference
이 문제에 관하여(Rdkit을 사용하여 SDF 파일 분해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/beginnerhuman/items/cb1ce16ce7f9cdd667a1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)