最近开始复现程序了,发现每篇论文中都会使用疾病语义相似度dosim,但是上网搜索之后又没有完整的解释,对于纯小白来说非常不友好 ,准备记录一下,留着自己以后看。
1.下载R语言,配置R语言环境。
由于使用到的DOSE包是R语言的,好像生信分析这些东西都需要使用R语言,所以被迫学习新语言。
配置方面我是参考了这两篇文章,两个写的都差不多,参考一个就行。
🤯 VS Code | 在VS Code中搭建你的R语言运行环境吧!~(图文介绍超详细)-腾讯云开发者社区-腾讯云 (tencent.com)
windows系统VScode配置R语言--配套视频操作 (qq.com)
2.安装生信工具
工具页面在这里。
具体的过程我清除了记录所以忘了,日后若是再安装就再具体补充。大概就是 先安装biomanager,再安其他的,sorry,真的忘了,在上面的网址里有介绍。
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.18")
(2024.6.8)
如果在安装R语言时安装在了别的环境里,那么这里就会报错。
解决方法看错误合集1。
之后安装DOSE文件包,
if (!require("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("DOSE")
我过程记不太清的一个原因就是我没有太按照步骤来,这里给大家介绍一个小窍门,那就是缺什么下什么。bioconductor还提供了一个非常好用的页面,如果提示缺什么包的话,在红框里搜索,点击进去,就会有下载的命令。
有些里面没有的包就意味着不需要特殊的下载命令,直接install.packages(" 包名")
安装时有时会让选镜像,随便选一个就行。
出现的错误合集。
1.Installation path not writeable, unable to update packages
出现这个错误基本上就是你下载的包下载在了两个不同的地方,然后有一个路径没有写入权限,就 比如我 .libPath()之后出现了两个安装路径。
输入 命令,installed.packages()[, c("Package", "LibPath")],如图显示包在不同的路径里,而我的D盘的那个路径没有写入权限,更改也不好使,因为根本无法更改。
我有一个办法,如果某个包出现了这个错误,而这个包在D盘的文件夹里,直接打开两个文件夹,手动把D盘里的文件剪切到C盘那个目录下。
2.Warning message: package(s) not installed when version(s) same as or greater than current; use `force = TRUE` to re-install: 'DOSE'
就是意思说已经有了你想安的文件,不用再安了。
Warning: cannot remove prior installation of package 'RSQLite'
Warning: restored 'RSQLite'
意思是不能移除先前安装的包,但此时你如果移除了再安装还是会出现同样的错误,所以直接在提示更新是选S,然后不更新这个包就好了。
如果最后;library(“DOSE”)没有报错,就是成功了。
3.开始调用函数。
增加一点数据处理部分。
1.从网站上下载数据
2.处理数据集,
原始数据
删除只保留RNA和疾病两列,要有表头!否则数据就会少一行
刚发现DOID号不需要一个一个地搜索,数据库网站主页里有。
然后做一个excel,一列疾病,一列DOID号。
这是某个提供的数据,一行是疾病名字,一行是DOID号,不过这个DOID号里面没有“DOID:”,最好要有,可以省略一步。
更新方便版本,创建R文件,输入下面的命令
library("readxl")
library(openxlsx)
file_path <- "datasets of CircRNA_Disease/CircRNADisease/disease_addDOID.xlsx"
data <- read_excel(file_path)
second_column_vector <- data[[2]]
library("DOSE")
output <- doSim(second_column_vector, second_column_vector, measure = "Wang")
output[is.na(output)] <- 0
df <- data.frame(output)
output_file_path <- "outputs2/circRNAdis_dissemantic.xlsx" # 替换为你希望保存的文件路径
write.xlsx(df, output_file_path)
然后选中所有代码,按ctrl+enter就自动运行了。
详细版本:
第一步,安装读取xlsx文件的包。install.packages("realxl")
有时因为版本问题,会出现package 'realxl' is not available for this version of R的错误,换个镜像地址就行了。
之后library("readxl"),再读取xlsx文件,read_excel("disease_DOID.xlsx",sheet = "DOID")中sheet指的是Excel里有多个表格,每个表格的名字,而不是行列名。
a代表整个表格,b取第二列。
如果此时使用doSim函数,会报错。
首先第一个原因是此时的b和d都是list类型的文件,不是向量。使用typeof()可以查看类型。
再一个,b里面的数据只有数字,必须前面得有“DOID:”前缀似乎才能正常运行dosim函数。
我实验了一下,只有数字和加上前缀的结果是不一样的。
解决方案:先以list形式给里面的数据加上前缀。如果原始数据里有的话,就不用这一步了 。
prefix<-"DOID:"
newlist<-lapply(g,function(x) paste(prefix,x,sep=""))
newlist
这样就添加成功了。
然后把list类型的数据转成向量类型的。vectorlist<-unlist(名字)
或者second_column_vector <- data[[2]],这样生成的second_column_vector可以直接用于dosim函数。
再使用doSim函数,e<-doSim(DOID1,DOID2,measure="Wang")
把结果写入到csv文件比较简单,如下就OK了。
想要把结果写入到xlsx文件中的话,先安装writexl包。install.packages("openxlsx")
然后进行如下步骤。
# 安装 openxlsx 包
install.packages("openxlsx")
# 加载 openxlsx 包
library(openxlsx)
# 创建 double 类型的向量
output <- 输出结果
output[is.na(output)]<-0 #将表中的缺失值替换为0
# 将向量转换为数据框
df <- data.frame(output)
# 创建一个新的 Excel 工作簿
wb <- createWorkbook()
# 创建一个新的工作表
addWorksheet(wb, "My Sheet")
# 在工作表中写入数据
writeData(wb, "My Sheet", df)
# 保存工作簿为 Excel 文件
saveWorkbook(wb, "output.xlsx", overwrite = TRUE)
就大功告成啦!