首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >作者为什么要上传一个错误的表达量矩阵呢

作者为什么要上传一个错误的表达量矩阵呢

作者头像
生信技能树
发布2023-10-23 19:10:31
发布2023-10-23 19:10:31
29100
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

马拉松授课的一个学员孜孜不倦的互动了十几个问题了,终于到了单细胞环节。

凭我对他的了解,他肯定是提问的方式就是错误的,写一段自己的”感悟“,其实完全没必要,我也压根不会看他给出来的这些“长篇大论” :

提问的方式就是错误的

这样的提问完全没有用,没有代码,没有前因后果,其实给一下数据集就足够了,https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE145173

我们很容易自己去查看这个数据集的文件:

代码语言:javascript
代码运行次数:0
运行
复制
GSM4307836_SI_GA_H1_quants_mat.csv.gz 53.9 Mb
GSM4307836_SI_GA_H1_quants_mat_cols.txt.gz 430.6 Kb
GSM4307836_SI_GA_H1_quants_mat_rows.txt.gz 54.7 Kb

GSM4307837_SI_GA_H4_quants_mat.csv.gz 4.6 Mb
GSM4307837_SI_GA_H4_quants_mat_cols.txt.gz 430.6 Kb
GSM4307837_SI_GA_H4_quants_mat_rows.txt.gz 6.9 K

给人的感觉是,它这个文章作者对每个样品上传了3个文件,是很容易读取的。

代码语言:javascript
代码运行次数:0
运行
复制
GSM4307836 Mouse_PDGFRab_Sham
GSM4307837 Mouse_PDGFRab_UUO

但是实际上,作者给出来的 _quants_mat.csv.gz 并不是常规的表达量矩阵:

代码语言:javascript
代码运行次数:0
运行
复制
> library(data.table) 
> a=fread('GSE145173_RAW/GSM4307836_SI_GA_H1_quants_mat.csv.gz',
+         data.table = F)
There were 50 or more warnings (use warnings() to see the first 50)
> a[1:4,1:4]
  V1 V2 V3 V4
1 19  0  0  0
2 32  0  0  0
3 53  0  0  0
4 37  0  0  0
> dim(a)
[1] 10812 53699

如果是从这个行列式的数量来看,应该是1万多个细胞,然后是五万多个基因啦。

所以,如果是简单的基于这个 _quants_mat.csv.gz 文件去做单细胞转录组降维聚类分群是肯定是会有大麻烦!或者说, 如果是自己学艺不精,就会以为作者上传了错误的矩阵。因为最后这个读取确实是太复杂了:

代码语言:javascript
代码运行次数:0
运行
复制
{
  library(data.table) 
  a=fread('GSE145173_RAW/GSM4307836_SI_GA_H1_quants_mat.csv.gz',
          data.table = F)
  head(a[,1:4])
  tail(a[,1:4])
  head(t(a)[,1:4])
  tail(t(a)[,1:4])
  dim(a)
  cl=fread('GSE145173_RAW/GSM4307836_SI_GA_H1_quants_mat_cols.txt.gz',
           header = F,data.table = F ) 
  dim(cl)
  length(unique(cl$V2))
  kp = duplicated(cl$V2)
  table(kp)
  cl=cl[!kp,]
  # 不知道为什么表达量矩阵跟它给出来的基因名字,行数不匹配,我被迫删除了其中两个基因,但是不知道是否造成了基因错位。。。。
  a=a[,1:(ncol(a)-2)]
  
  rl=fread('GSE145173_RAW/GSM4307836_SI_GA_H1_quants_mat_rows.txt.gz',
           header = F,data.table = F )  
  head(rl) 
  mtx=t(a[,!kp])
  dim(mtx)
  rownames(mtx)=cl$V2 
  colnames(mtx)=rl$V1
  mtx[1:4,1:4]
  sce1=CreateSeuratObject(counts =  mtx,project = 'h1'  )
  sce1
}

但是接下来我检查数据分析结果的时候,发现确实是造成了基因错位。。。。

降维聚类分群结果问题不大

因为后面的降维聚类分群结果问题不大,但是基因在上面就显得很突兀,基本上没有任何一个我认识的基因。。。

基因在上面就显得很突兀

Decoding myofibroblast origins in human kidney fibrosis. Nature 2021 Jan 人家的文章发表在CNS啊!

我实在是没办法理解, 既然同学们要重复使用他们的数据,居然不认真彻底读懂文章,简直是对科研的侮辱!!!但凡看了看文章就知道这个样品:

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM4307836

给出来的是:raw UMI barcode count matrices produced by Alevin in csv files and corresponding row (gene) and column (cell barcode) information

虽然说这个单细胞确实是 10x chromium version 2 ,但是作者,走的是另外一个流程,Data processing Fastq files were processed using Alevin and Salmon (salmon version 0.13.1)

所以给出来的表达量矩阵格式是需要重新学习的,不能说仅仅是照搬10x的cellranger那一套!!!

官方文档写的很清楚:https://salmon.readthedocs.io/en/latest/alevin.html#

A typical run of alevin will generate 4 files:

  • quants_mat.gz – Compressed count matrix.
  • quants_mat_cols.txt – Column Header (Gene-ids) of the matrix.
  • quants_mat_rows.txt – Row Index (CB-ids) of the matrix.
  • quants_tier_mat.gz – Tier categorization of the matrix.

而且文章是给出来了全部的代码:

  • All R and Python packages used in data analysis are described here: https://raw.githubusercontent.com/mahmoudibrahim/KidneyMap/master/requirements.txt. Additional software used for data analysis: Graphpad, FlowJo, ImageJ.
  • All scripts used for single cell RNA-seq data analysis are available here: https://github.com/mahmoudibrahim/KidneyMap/
  • Scripts used imaging in situ hybridization are available here: https://gitlab.com/mklaus/segment_cells_register_marker
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档