我们今天给大家介绍一个可以在R语言中对SDF文件进行操作的R包ChemmineR,当然这个包还包含了很多对分子分析的算法,需要通过Bioconductor安装:
代码语言:javascript复制BiocManager::install("ChemmineR")
如果想支持格式的转化还需要安装:
代码语言:javascript复制BiocManager::install("ChemmineOB")
具体的概况如下:
首先我们看下数据的读入函数read.SDFset,这个函数类似read.csv或者read.table,所以我们就不深究了,我们主要看下如何读取读入后的数据。
载入数据:
代码语言:javascript复制a=read.SDFset("http://faculty.ucr.edu/~tgirke/Documents/R_BioCond/Samples/sdfsample.sdf")
其中获取详细信息的函数如下:
1. atomblock 获取每一个化合物的原子矩阵。实例
代码语言:javascript复制 atomblock(a[1])
2. datablock 获取每一个化合物的所有信息。实例:
代码语言:javascript复制datablock(a[1])
代码语言:javascript复制 datablock(a[1])$CMP1[1:4]
3. cid 获取每一个化合物的排序的ID,方便datablock读取其详细信息。实例:
代码语言:javascript复制cid(a)
4. sdfid 获取化合物在数据中标注的ID。实例:
代码语言:javascript复制sdfid(a)
5. makeUnique 主要用来检测数据的ID是否重复,也就是可以看一个sdf文件中是否有重复的数据。
6. datablock2ma 将SDF文件转化为矩阵数据。实例:
代码语言:javascript复制blockmatrix <- datablock2ma(datablocklist=datablock(a))
代码语言:javascript复制 numchar <-splitNumChar(blockmatrix=blockmatrix) #分割字符串和数值型的数据
7. grepSDFset 检索SDF文件。检索的区域包括header, atomblock, bondblock 或者datablock;检索的模式包括index(返回位置)、subset(返回数据列表)。实例:
代码语言:javascript复制grepSDFset("650001", a, field="datablock", mode="index")
接下来我们看另一个重要的功能,获取分子式、分子量以及各原子数量:
代码语言:javascript复制propma <- data.frame(MF=MF(a), MW=MW(a),atomcountMA(a))
当然我们也可以输出我们的分子结构:
代码语言:javascript复制plot(a[1:4], print=FALSE)
或者写入新的sdf文件:
代码语言:javascript复制write.SDF(at[1:4],file="sub.sdf", sig=F)
接下来就是对分子的处理,首先我们看下分子相似性以及聚类分析,直接看实例:
代码语言:javascript复制apset <- sdf2ap(a)# 创建数据库:data(apset) # 载入数据 cmp.search(apset, apset[1], type=3, cutoff =0.3, quiet=TRUE)
cmp.search具体函数参数如下:
Query 指我们想要检索的分子。
Cutoff 相似打分
接下来看下聚类函数cmp.cluster其中主要的是cutoff的两个分子相似性的最小值设置,直接看实例:
代码语言:javascript复制cmp.cluster(db=apset, cutoff = c(0.65,0.5), quiet=TRUE)[1:4,]
CLSZ代表每一聚类的化合物数量,CLID指的类的ID。
基于Openbable的分子指纹计算以及相似性分析我们不在深入探讨,有兴趣的可以接着研究。
欢迎大家学习交流!