pycharm编写五子棋盘要哪些库(使用CocktailShakerRDKit和Pandas在5分钟内生成化学数据)
pycharm编写五子棋盘要哪些库(使用CocktailShakerRDKit和Pandas在5分钟内生成化学数据)for amino_acid in natural_amino_acids: peptide_molecule = PeptideBuilder(length_of_peptide=1) cocktail = Cocktail(peptide_backbone=peptide_molecule ligand_library=[amino_acid] enable_isomers=False) cocktail.shake() molecules = cocktail.enumerate(dimensionality='1D' enumeration_complex
X是氨基酸侧链,用ChemDraw绘制的视觉表示
如何生成这些数据呢? 可以使用名为Cocktail Shaker的包。
首先,让我们安装所需的Python库:cocktail-shaker Pandas
pip install cocktail-shaker # latest version
pip install pandas # latest version
导入所需的Python库
from peptide_builder import PeptideBuilder
from functional_group_enumerator import Cocktail
import pandas as pd
首先要做的是列出包含氨基酸侧链的字符串:
natural_amino_acids = [
"C" "CCCNC(N)=N" "CCC(N)=O" "CC(O)=O"
"CS" "CCC(O)=O" "CCC(O)=O" "CCC(N)=O"
"[H]" "CC1=CNC=N1" "C(CC)([H])C" "CC(C)C"
"CCCCN" "CCSC" "CC1=CC=CC=C1" "CO"
"C(C)([H])O" "CCC1=CNC2=C1C=CC=C2"
"CC1=CC=C(O)C=C1" "C(C)C"
]
接下来声明一个root dataframe,我们将在其中存储所有准备好的数据。
root_dataframe = pd.DataFrame(columns=["smiles" "amino_acid"])
smiles为一维化合物表示,氨基酸为侧链的字符串表示。amino_acid列将充当数据的“标签”。
为了准备数据,我们将遍历每个天然氨基酸并分别构建字符串,这里是完整的for循环:
for amino_acid in natural_amino_acids:
peptide_molecule = PeptideBuilder(length_of_peptide=1)
cocktail = Cocktail(peptide_backbone=peptide_molecule
ligand_library=[amino_acid]
enable_isomers=False)
cocktail.shake()
molecules = cocktail.enumerate(dimensionality='1D'
enumeration_complexity='high')
dataframe = pd.DataFrame(molecules columns=["smiles"])
dataframe["amino_acid"] = amino_acid
root_dataframe = pd.concat([root_dataframe dataframe])
for循环中的第一行将采用1长度肽主链的1D表示
peptide_molecule = PeptideBuilder(length_of_peptide=1)
# NC([*:1])C(NCC(O)=O)=O
接下来,我们用我们的肽主链将cocktail对象wrap起来,只传递单个氨基酸。
cocktail = Cocktail(peptide_backbone=peptide_molecule
ligand_library=[amino_acid]
enable_isomers=False)
接下来是产生所需的氨基酸部分。
cocktail.shake()
接下来,我们想要数据的所有表示,因为最终它将生成各种2D坐标。众所周知,在卷积神经网络社区中,对相同数据的多种描述有助于神经网络的训练和准确性。
molecules = cocktail.enumerate(dimensionality='1D' enumeration_complexity='high')
Cocktail对象将保留您之前生成的组合,这里我们设置dimensionality='1D',我们希望获得尽可能多的不同表示,enumeration_complexity='high'。
接下来,保存到带有氨基酸标签的dataframe,然后加入到主dataframe中!
dataframe = pd.DataFrame(molecules columns=["smiles"])
dataframe["amino_acid"] = amino_acid
root_dataframe = pd.concat([root_dataframe dataframe])
几分钟后,大约产生了7498个氨基酸的smiles。
完整Python代码如下:
from peptide_builder import PeptideBuilder
from functional_group_enumerator import Cocktail
import pandas as pd
if __name__ == '__main__':
natural_amino_acids = ["C" ... "C(C)C"]
root_dataframe = pd.DataFrame(columns=["smiles" "amino_acid"])
for amino_acid in natural_amino_acids:
peptide_molecule = PeptideBuilder(length_of_peptide=1)
cocktail = Cocktail(peptide_backbone=peptide_molecule
ligand_library=[amino_acid]
enable_isomers=False)
molecules = cocktail.shake()
molecules = cocktail.enumerate(dimensionality='1D' enumeration_complexity='high')
dataframe = pd.DataFrame(molecules columns=["smiles"])
dataframe["amino_acid"] = amino_acid
root_dataframe = pd.concat([root_dataframe dataframe])
root_dataframe.to_hdf('data.h5' key='s' mode='w')