【问题标题】:How to replace row names in DESeq2 rlogTransformation matrix with actual gene name info present on another sheet?如何用另一张纸上存在的实际基因名称信息替换 DESeq2 rlogTransformation 矩阵中的行名?
【发布时间】:2023-03-27 08:18:02
【问题描述】:

我是 R 和 DESeq2 的新手,我正在尝试运行如下差异表达式

library(DESeq2)
count_file_names <- grep("counts",list.files("HTSeq_counts"),value=T)
host_type < c("Damaged","Control")
sample_information <-data.frame(sampleName = count_file_names, fileName = count_file_names, condition = host_type)
DESeq_data <- DESeqDataSetFromHTSeqCount(sampleTable = sample_information, directory = "HTSeq_counts", design = ~condition)
colData(DESeq_data)$condition <- factor(colData(DESeq_data)$condition,levels = c('Damaged','Control'))
rld <- rlogTransformation(DESeq_data, blind=T)

当我查看 rld 矩阵时,它的行名没有注释,因此没有直接用处;注意-我打算在下游步骤中基于此矩阵生成图,因此需要相应的实际基因名称

print(rld)
class: DESeqTransform 
dim: 33219 38 
metadata(1): version
assays(1): ''
rownames(33219): g100.t1 g1000.t1 ... g9998.t1 g9999.t1
rowData names(7): baseMean baseVar ... dispFit rlogIntercept
colnames(38): Damaged_R1.counts Damaged_R2.counts ...
  Control_R4.counts Control_R5.counts
colData names(2): condition sizeFactor

我有一个单独的“Annotations.csv”,其中包含基因名称信息

gene_names <- read.csv("Annotations.csv", header=TRUE, sep=",", stringsAsFactors=FALSE)
head(gene_names)
    gene_id   name                                             product
1 g38227.t1   Stk10                Serine/threonine-protein kinase 10  
2 g38227.t2   Stk10                Serine/threonine-protein kinase 10  
3 g1000.t1    Ccnh                                          Cyclin-H  
4 g46237.t1 fam136a                                   Protein FAM136A  
5 g100.t1     H2B                                       Histone H2B  
6 g40390.t1   STAC2 SH3 and cysteine-rich domain-containing protein 2

并且我想根据gene_names 中指定的正确对应基因名称替换rld 矩阵中的行名。例如,rld 矩阵 rownames(33219) 应该显示为名称“H2B CCnh ... 等等”而不是“g100.t1 g1000.t1 ... 等等”。我尝试了下面的 R代码

new.rld  <- cbind(name=gene_names$name[ match(rownames(rld), gene_names$gene_id) ], rld)

但它给了我这个错误:

(函数(类,fdef,mtable)中的错误: 无法为签名“字符”找到函数“bindCOLS”的继承方法

非常感谢任何有助于正确生成 new.rld 矩阵的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    我为此设计了一个变通解决方案,如下所示:

    x <- rownames(rld)
    write.csv(x, file="rownames.csv")
    library(dplyr)
    bio1=read.csv('Annotations.csv')
    bio2=read.csv('rownames.csv')
    df <- left_join(bio2, bio1, by='gene_id')
    write.csv(df,"mod_rownames.csv")
    gene_names <- read.csv("mod_rownames.csv")
    rownames(rld)=gene_names$name
    

    【讨论】:

    • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多