MGI-tech-bioinformatics / DNBelab_C_Series_HT_scRNA-analysis-software

An open source and flexible pipeline to analysis high-throughput DNBelab C Series single-cell RNA datasets
MIT License
52 stars 20 forks source link

matrix.mtx.gz文件表头汇总信息中raw与filter matrix基因数和非零数值与行数不一致的问题 #59

Closed antecede closed 4 months ago

antecede commented 4 months ago

感谢作者提供的高效pipeline工具!

  1. pbmc4k原始(raw)和过滤后(filter)矩阵的基因数(第一列,例如图1中的33694)是一致的(如图1、2)。

但是dnbc原始(12769)和过滤后(12743)两者不一致(图3、4)

  1. 第三列非零数值(例如图1中的8520816)和行号是匹配的。

但是dnbc的第三列非零数值(例如图3中的281373862)比行数(例如图3中的2839021)多两个数量级。那么这些非零数值是如何能够存储的呢,理论上只能比总行数少吧?

  1. 关注到这个问题是在用decontX根据原始和过滤后矩阵进行去污染时候返回报错Error: The number of rows in 'eta' must be equal to the number of rows in 'counts'.,猜测是由于这两个矩阵的基因数不同(行数)导致的,而pbmc4k的基因数两者是一样的

image image image image

antecede commented 4 months ago
  1. 基于同样的软件版本(图中所示2.1.1),区别仅仅在于参考基因组的质量。两图中部分2是一致的,参考基因组质量更好的部分3的比对率更高。

1.但是为什么这两者细胞数会有如此大的差异呢?差了将近5千个细胞 2.细胞数量理论上应该只跟barcode计数有关嘛? 3.参考基因组的质量应该影响不到细胞数嘛?影响的应该是mapping和annotation等结果嘛?

热切盼望作者的回复,感谢您的辛勤付出!!!

image image

antecede commented 4 months ago

感谢作者提供的高效pipeline工具!

  1. pbmc4k原始(raw)和过滤后(filter)矩阵的基因数(第一列,例如图1中的33694)是一致的(如图1、2)。

但是dnbc原始(12769)和过滤后(12743)两者不一致(图3、4)

  1. 第三列非零数值(例如图1中的8520816)和行号是匹配的。

但是dnbc的第三列非零数值(例如图3中的281373862)比行数(例如图3中的2839021)多两个数量级。那么这些非零数值是如何能够存储的呢,理论上只能比总行数少吧?

  1. 关注到这个问题是在用decontX根据原始和过滤后矩阵进行去污染时候返回报错Error: The number of rows in 'eta' must be equal to the number of rows in 'counts'.,猜测是由于这两个矩阵的基因数不同(行数)导致的,而pbmc4k的基因数两者是一样的

image image image image

SoupX给出的报错更加清晰明了: Error in SoupChannel(tod, toc) : The provided table of droplets (tod) and table of counts (toc) have different numbers of genes. Both tod and toc must have the same genes in the same order.

那么在这种情况下,该如何设置软件的运行参数使得原始和过滤后矩阵满足上述需求呢?

运行代码根据GitHub quick start,具体如下,其中--genomeDir路径为运行头两条命令所在路径,这三条代码运行均成功:

dnbc4tools tools mkgtf --ingtf ensembl_GCF_001442555.1_ACSNU-2.0_genomic.gtf --output genes.filter.gtf --type gene_biotype

dnbc4tools rna mkref --ingtf genes.filter.gtf --fasta GCF_001442555.1_ACSNU-2.0_genomic.fna --threads 10 --species Apis_cerana

dnbc4tools rna run \
    --cDNAfastq1 FP1.fq.gz \
    --cDNAfastq2 FP2.fq.gz \
    --oligofastq1 DP1.fq.gz \
    --oligofastq2 DP2.fq.gz \
    --genomeDir ./  \
    --name test --threads 10
antecede commented 4 months ago
  1. 基因名前缀不为mt或MT的线粒体基因。运行命令过程中也未指定自定义mtgenes的列表文件,会对结果造成什么影响吗?如果指定了,会更有利于过滤掉破损失活细胞吗?
  2. 当前版本命令的参数是否仍为--mtgenes
lishuangshuang0616 commented 4 months ago

问题1:raw_matrix和filter_matrix的feature.tsv文件中基因数是不一样的,C4只保留基因表达的基因。对于不表达的基因不会记录。 问题2:soupX可增加一行tod <- tod[rownames(toc),]来获取一致的基因 问题3:不同的基因组导致细胞数量存在差异,是会存在这样的情况,因为cell calling是和细胞的UMI基因表达量相关,不同的基因组和gtf会导致比较大的差异。 问题4:如果未指定线粒体染色体名称,则mtgenes为None,不会对矩阵文件有任何影响。只会影响聚类展示前细胞过滤步骤(线粒体基因过程使用默认mt MT来过滤)以及小提琴图那块展示线粒体基因比例。

antecede commented 4 months ago

问题1:raw_matrix和filter_matrix的feature.tsv文件中基因数是不一样的,C4只保留基因表达的基因。对于不表达的基因不会记录。 问题2:soupX可增加一行tod <- tod[rownames(toc),]来获取一致的基因 问题3:不同的基因组导致细胞数量存在差异,是会存在这样的情况,因为cell calling是和细胞的UMI基因表达量相关,不同的基因组和gtf会导致比较大的差异。 问题4:如果未指定线粒体染色体名称,则mtgenes为None,不会对矩阵文件有任何影响。只会影响聚类展示前细胞过滤步骤(线粒体基因过程使用默认mt MT来过滤)以及小提琴图那块展示线粒体基因比例。

非常感谢作者的耐心细致回复!春节期间还及时解答,祝春节快乐,工作顺利!

  1. 通过--chrM参数得到了mtgene.list里边确实是线粒体基因。不过有个小问题是,除了额外加了这个参数外,其他均一致的情况下,Estimated number of cellMean reads per cell有些小差异,感觉也涉及到重复性问题

image image

lishuangshuang0616 commented 4 months ago

嗯嗯,还是会有些重复性问题,比对时多线程导致,后续将继续优化。 谢谢,春节快乐。

antecede commented 4 months ago

嗯嗯,还是会有些重复性问题,比对时多线程导致,后续将继续优化。 谢谢,春节快乐。

是因为没有用线程锁的缘故嘛?