专栏首页生信小驿站R语言之分子指纹(1)计算分子指纹及批量保存sdf格式

R语言之分子指纹(1)计算分子指纹及批量保存sdf格式

主要使用rcdk: 一个化学包

# releases
install.packages("rcdk")

# development releases of `cdkr` are also available on github uinsg devtools:
library(devtools)
install_github("https://github.com/CDK-R/rcdklibs")
install_github("https://github.com/CDK-R/cdkr", subdir="rcdk")
#===========================================================================


#===========================================================================

rm(list=ls())
library(dplyr)
library(tibble)
library(tidyr)
set.seed(1234)
library(ROCR)
library(dplyr)
library(rcdk)
setwd('D:\\SCIwork\\F29\\lianxishuju')

#读取数据
data <- read.csv('train.csv', header = T)
# 
# SMILES
# 1 [H][C@]12CCCN1CC1=C(C2)C2=C(C=C(OC)C(OC)=C2)C2=C1C=CC(OC)=C2
# 2         COC1=CC2=C(C=C1)C1=C(CC3CCCN3C1)C1=C2C=C(OC)C(OC)=C1
# 3         COC1=CC2=C(C=C1)C1=C(CN3CCCC3C1)C1=C2C=C(OC)C(OC)=C1
# 4       COC1=CC2=C(C=C1OC)C1=C(C=C(OC)C(OC)=C1)C1=C2CC2CCCN2C1
# 5          COC1=CC2=C(C=C1OC)C1=C(C=C(OC)C(OC)=C1)C(=C2)C(O)=O
# 6  COC1=CC2=C(C=C1OC)C1=C(C=C(OC)C(OC)=C1)C(=C2)C(=O)C1=CC=CN1

#去重
data <- data %>% distinct(SMILES, .keep_all = T)
write.csv(data, file = 'train.csv', row.names = F)


#读取数据
data <- read.csv('train.csv', header = T)
SMILES <- data$SMILES

#iter_num设置为smile的总数
iter_num <- 195
i = 1
mols <- parse.smiles(SMILES[i])
fp <- get.fingerprint (mols[[1]], type = 'standard', fp.mode = 'bit',depth = 6, size = 1024)
num <- fp@bits
dt <- data.frame(mol = 'fpt', fp = 1:1024)
dt$fp = 0 
dt$mol <- paste0(dt$mol, 1:1024)
dt[num, 'fp'] <- 1
rownames(dt) <- dt$mol
dt$mol <- NULL
names(dt)[1] <- paste0('molecule', i)


#合并数据框
for (i in 2:iter_num) {
  
  mols <- parse.smiles(SMILES[i])
  fp <- get.fingerprint (mols[[1]], type = 'standard', fp.mode = 'bit',depth = 6, size = 1024)
  num <- fp@bits
  dta <- data.frame(mol = 'fpt', fp = 1:1024)
  dta$fp = 0 
  dta$mol <- paste0(dta$mol, 1:1024)
  dta[num, 'fp'] <- 1
  rownames(dta) <- dta$mol
  dta$mol <- NULL
  names(dta)[1] <- paste0('molecule', i)
  dt <- cbind(dt, dta)
}

#统计单个指纹的分布
dt$sum <- rowSums(dt)
table(dt$sum)

dt[1:6,1:6]
# molecule1 molecule2 molecule3 molecule4 molecule5 molecule6
# fpt1         0         0         0         0         0         0
# fpt2         0         0         0         0         0         0
# fpt3         0         0         0         0         0         0
# fpt4         0         0         0         0         0         0
# fpt5         0         0         0         0         0         0
# fpt6         0         0         0         0         0         0

setwd('D:\\SCIwork\\F29\\lianxishuju\\ligand')
#循环生成sdf文件
for (i in 1:iter_num) {
  m <- parse.smiles(SMILES[i])
  ## perform operations on this molecule
  file_name <- paste0('molecule', i, '.sdf')
  write.molecules(m,filename=file_name )
}

用DS2019读取这些sdf文件后,全部visible,然后保存为sdf格式,即可将所有小分子保存到一个sdf文件中。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开源化学信息学工具包(Open Access Cheminformatics Toolkits)

    CDK是结构化学信息学和生物信息学的开源Java库。 该项目由Christoph Steinbeck,Egon Willighagen与Jmol和JChemPa...

    DrugAI
  • 三维重建技术综述

    来源丨https://blog.csdn.net/qq_30815237/article/details/91897736

    3D视觉工坊
  • Web指纹识别技术研究与优化实现

    本文通过分析web指纹的检测对象、检测方法、检测原理及常用工具,设计了一个简易的指纹搜集脚本来协助发现新指纹,并提取了多个开源指纹识别工具的规则库并进行了规则重...

    FB客服
  • RDKit | 化学信息学与AI(专辑)

    介绍RDKit相关知识点和运用以及RDKit作为处理化学、生物、药学和材料学科中分子数据作为可输入机器学习和深度学习模型的重要工具应用。内容涵盖了基于RDKit...

    DrugAI
  • Nat. Methods | 基于几何深度学习解密蛋白分子表面的相互作用指纹

    2019年12月,洛桑联邦理工学院和瑞士生物信息研究所的研究者在nature methods上提出使用分子表面的化学和几何指纹,来预测蛋白质和其他分子间的相互作...

    DrugAI
  • 快讯 | 40款智能门锁15%被打开,指纹人脸识别开锁安全吗?

    近几年,智能门锁逐渐进入了越来越多的家庭。截至2018年6月底,我国智能门锁生产企业已经超过1500家,接近甚至超过了传统机械制锁规模以上企业的数量,2018年...

    大数据文摘
  • 浏览器指纹追踪技术简述

    “浏览器指纹”是一种通过浏览器对网站可见的配置和设置信息来跟踪Web浏览器的方法,浏览器指纹就像我们人手上的指纹一样,具有个体辨识度,只不过现阶段浏览器指纹辨别...

    腾讯IVWEB团队
  • Web 指纹识别之路

    攻击者最常用的方法是首先覆盖目标的网络存在并枚举尽可能多的信息。利用此信息,攻击者可以製定出准确的攻击方案,这将有效利用目标主机正在使用的软件类型/版本中的漏洞...

    信安之路
  • Computer Graphics note(4):Shading

    Games101 lecture7-8-9-10 Shading(着色)定义为对不同对象应用不同材质的过程。不同的材质也就是不同的着色方法。有许多着色模型,例...

    Enterprise_

扫码关注云+社区

领取腾讯云代金券