前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >结构分析(4)化合物分子相似性

结构分析(4)化合物分子相似性

作者头像
用户1359560
发布2021-01-29 10:20:34
1.6K1
发布2021-01-29 10:20:34
举报
文章被收录于专栏:生信小驿站生信小驿站

分子相似性:

相似性原理(similar property principle)指出,总体相似的分子应具有相似的生物活性。

相似性评估

化合物的指纹对于使用计算机考虑化合物的相似性是必需的。已经提出了各种评估方法,但是最常用的评估方法称为“ Tanimoto系数 ”。使用以下等式从两个分子A和B的位阵列指纹计算Tanimoto系数:

代码语言:javascript
复制
#===========================================================================


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

rm(list=ls())
library(tibble)
library(tidyr)
set.seed(1234)
options(stringsAsFactors = F)
library(dplyr)
library(rcdk)
setwd('D:\\SCIwork\\F29\\lianxishuju')
library(data.table)
library(plyr)
library(Hmisc)#加载包



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

head(data)
# 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


#计算分子指纹
mols1 <- parse.smiles(SMILES)
fps <- lapply(mols1, get.fingerprint, type='extended')
fp.sim <- fingerprint::fp.sim.matrix(fps, method='tanimoto')




#计算Tanimoto系数
sim_matrix <- as.data.frame(fp.sim)
names(sim_matrix) <- paste0('mol', 1:195)
rownames(sim_matrix) <- paste0('mol', 1:195)



#矩阵整理
flattenCorrMatrix <- function(cormat) {
  ut <- upper.tri(cormat) 
  
  df <-  data.frame( row = rownames(cormat)[row(cormat)[ut]],
                     column = rownames(cormat)[col(cormat)[ut]],
                     cor =(cormat)[ut])
  
  df}



#得到相似度高的分子
sim_dt <- flattenCorrMatrix(sim_matrix)
sim_dt <- subset(sim_dt, sim_dt$cor > 0.7)



# 
# #计算1-Tanimoto系数
# fp.dist <- 1 - fp.sim
# fp.dist <- as.data.frame(fp.dist)
# 
# 
# #计算Tanimoto系数
# dis_matrix <- as.data.frame(fp.dist)
# names(dis_matrix) <- paste0('mol', 1:195)
# rownames(dis_matrix) <- paste0('mol', 1:195)
# 
# 
# #得到相似度低的分子
# dis_dt <- flattenCorrMatrix(dis_matrix)
# dis_dt <- subset(dis_dt, dis_dt$cor > 0.9)
# 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分子相似性:
  • 相似性评估
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档