library(tidyverse) library(maSigPro) ## 1 读入矫正矩阵 -------------------------------...
🚨 错误信息
library(tidyverse)
library(maSigPro)
## 1 读入矫正矩阵 -------------------------------------------------------------
mat <- read_csv("geneMatrix_Control_normalized_log2cpm.csv") %>%
column_to_rownames("symble") %>%
as.matrix()
## 2 读 meta 并严格对齐 -------------------------------------------------------
meta <- read_csv("meta_Control.csv")
## 关键:让矩阵列顺序 与 设计矩阵行顺序 完全一致
meta <- meta %>% arrange(sample) # 先排序
mat <- mat[, meta$sample] # 再按同样顺序重排矩阵列
## 3 构建设计矩阵(行名 = 样本名) -------------------------------------------
design <- data.frame(time = meta$time,
replicate = factor(meta$replicate))
rownames(design) <- meta$sample
## 4 跑 maSigPro(Gaussian,不加 counts)
fit <- p.vector(mat, design, Q = 0.05, family = "gaussian")
tfit <- T.fit(fit, step.method = "two.ways.backward", alfa = 0.05)
sig <- get.siggenes(tfit, rsq = 0.6)
## 5 写出结果
prefix <- "maSigPro_results/Control"
dir.create(dirname(prefix), showWarnings = FALSE)
write_csv(sig$sig.genes %>% as_tibble(rownames = "gene"), str_c(prefix, "_sig_genes.csv"))
write_csv(tfit$sig.models %>% as_tibble(rownames = "gene"), str_c(prefix, "_coef.csv"))
pdf(str_c(prefix, "_trends.pdf"), width = 8, height = 5)
plot(tfit, name = "Control", clustering = TRUE)
dev.off()
🤖 AI解决方案
Error in check.fit(fit) :
The design matrix must have at least two columns.
错误翻译:>
> 错误 in check.fit(fit) : > 设计矩阵必须至少有两列。 >
原因分析:p.vector 函数要求设计矩阵 (design) 至少包含两列,用于描述实验设计。当前提供的 design 矩阵只有一列 time,不符合要求。
解决方案:
在构建 design 矩阵时,确保至少包含两个描述实验条件的列。将 replicate 列也包含进来,并确保其被正确转换为因子类型。
## 3 构建设计矩阵(行名 = 样本名) -------------------------------------------
design <- data.frame(time = meta$time,
replicate = factor(meta$replicate)) # 确保 replicate 是因子类型
rownames(design) <- meta$sample
## 4 跑 maSigPro(Gaussian,不加 counts)
# 确保 design 至少有两列
# 如果您的 meta 中只有 time 信息,需要考虑如何增加一个维度,
# 例如,如果存在 batch 或 other experimental factors,可以将其加入 design。
# 这里我们假设 replicate 是一个有效的分组信息,并已包含在 meta 中。
fit <- p.vector(mat, design, Q = 0.05, family = "gaussian")
tfit <- T.fit(fit, step.method = "two.ways.backward", alfa = 0.05)
sig <- get.siggenes(tfit, rsq = 0.6)
预防措施:
- 在运行
maSigPro之前,仔细检查design矩阵的结构,确保其包含的变量足以描述您的实验设计,并且至少有两列。 - 始终验证
design矩阵的行名(样本名)与输入矩阵mat的列名(样本名)完全一致且顺序匹配。