代码语言:javascript复制最近帮学徒测试了immunedeconv包,首先它在github上面,所以本身就很难安装:
# deconvolution_methods
# https://github.com/omnideconv/immunedeconv
# remotes::install_github("omnideconv/immunedeconv")
library(immunedeconv)
library(tidyverse)
library(tidymodels)
然后我在运行immunedeconv包里面的mcp_counter时候,发现它需要访问一个在github的文本文件:
代码语言:javascript复制res.mcp <- deconvolute(expr, 'mcp_counter')
那肯定是会报错:
代码语言:javascript复制# genes = read.table(curl:::curl("https://raw.githubusercontent.com/ebecht/MCPcounter/master/Signatures/genes.txt")
# Could not resolve host: raw.githubusercontent.com
然后chatGPT给我了两个解决方案,通过BioinfoArk提供的中国区chatGPT查询:
两个解决方案
第一个方案要在R中设置代理,你可以使用以下代码:
代码语言:javascript复制# 设置HTTP代理
Sys.setenv(http_proxy = "http://your_proxy_server:your_proxy_port")
Sys.setenv(https_proxy = "http://your_proxy_server:your_proxy_port")
# 设置FTP代理(如果需要)
Sys.setenv(ftp_proxy = "http://your_proxy_server:your_proxy_port")
在上述代码中,将 your_proxy_server
替换为你的代理服务器的地址,将 your_proxy_port
替换为代理服务器的端口号。请注意,这些设置是临时的,只在当前R会话中有效。如果你希望在每次启动R时都自动应用代理设置,可以将上述代码添加到你的R配置文件中。R配置文件的位置取决于你的操作系统和R版本,通常是 .Rprofile
或 .Renviron
文件。另外,如果你的代理服务器需要身份验证,你可能需要提供用户名和密码。你可以使用以下代码设置代理服务器的用户名和密码:
Sys.setenv(http_proxy_user = "your_username")
Sys.setenv(http_proxy_password = "your_password")
将 your_username
替换为你的代理服务器的用户名,将 your_password
替换为你的代理服务器的密码。
这个方案我肯定是没办法选择,我根本就没有代理服务器。。。
方案2:下载后读取文件
在代码里面可以看到他们的github链接,然后下载两个txt文件即可:
代码语言:javascript复制library(MCPcounter)
probesets = read.table( 'MCPcounter-Signatures-probesets.txt',
sep = "t", stringsAsFactors = FALSE, colClasses = "character")
genes = read.table('MCPcounter-Signatures-genes.txt',
sep = "t", stringsAsFactors = FALSE, header = TRUE,
colClasses = "character", check.names = FALSE)
相当于绕过了 MCPcounter 包,仅仅是使用了它里面的appendSignatures函数 :
代码语言:javascript复制markers.names = unique(features[, "Cell population"])
features = split(features[, "HUGO symbols"], features[,
"Cell population"])
missing.populations = setdiff(markers.names, names(features))
features = features[intersect(markers.names, names(features))]
# apply(xp[intersect(row.names(xp), x), , drop = F], 2, mean, na.rm = T)
res.mcp = t(appendSignatures(expr, features))
# genes = read.table(curl:::curl("https://raw.githubusercontent.com/ebecht/MCPcounter/master/Signatures/genes.txt")
# Could not resolve host: raw.githubusercontent.com
## connection refused|20230209
knitr::kable(head(res.mcp)[,1:4], digits=2, "rst")
pheatmap::pheatmap(res.mcp)
而且我拆开看appendSignatures函数的时候,好家伙,它就是一个简简单单取平均值。。。。
代码语言:javascript复制 apply(xp[intersect(row.names(xp), x), , drop = F],
2, mean, na.rm = T)
这个算法有待商榷。。。。