前言:之前参加过几个生信培训班也听了一些视频,好几个老师们都是说R语言里面warning不用管,error才重要,我一直牢记于心。Warning从来不看。下面开始正文。
1
首先读入数据,并查看前几行,正常
和单物种的不一样的是,因为是人鼠混样测序比对的是人鼠基因组,基因前面分别有个前缀hg38和mm10,前后几个名称分别看一下,可以看到基因名字和物种代号之间使用的是下划线连接起来的。
2
创建对象
3
计算线粒体基因百分比
为了方便理解,我先把文件读取出来查看下线粒体基因有没有表达,可以看到如图下面的数字。
代码语言:javascript复制write.table(pbmc, file= pbmc.txt)
嗯,那么来计算一下。
因为前面的物种代号和基因名字使用下划线连接,所以代码如下
代码语言:javascript复制pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^hg38_MT-")
重点是:pattern = "^hg38_MT-"
画个图来看看
代码语言:javascript复制VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
结果是--------------
,你没看错,一条直线。
算错了吗?
4
查找错误原因
代码拎出来再看看。单独运行这行
代码语言:javascript复制PercentageFeatureSet(pbmc, pattern = "^hg38_MT-")
结果如下
真的都是0啊。
前期我读出的结果明明不该是0啊????
4.1 去掉前缀
然后我想会不会是通配符不识别这么长又带下划线的前缀啊。把前缀hg38_掉,变成这样。
再计算一遍。代码如下
代码语言:javascript复制PercentageFeatureSet(pbmc, pattern = "^ MT-")
结果真的出来结果了。
但是我总不能每次为了计算都把它去掉吧,还要靠前缀来区分人鼠呢。不过先用着吧,我把小鼠前缀,也去掉,先计算了一遍。
4.2 请教大牛
后面反复思考也想不到办法,想着找大牛发个邮件咨询吧。找了好几个老师的邮箱发了邮件。然后就去吃饭了。
4.3 google搜索
回来不知道为什么就习惯性的把
Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')
粘到google搜索,也没去理解,结果看到这个,大约意思是下划线和短横线的问题。
这时候意识到是不是不识别下划线,然后我把他都改成短横线,然后结果就出来了。
5
总结反思
再回头来看这个warning
发现人家早有警告,说我们已经把下划线改成短横线了。真可谓,不听warning言,吃亏在眼前啊!吃一堑长一智!以后warning也要警惕!这时候,我想着问题解决了,赶紧发邮件给老师们说下,不要再浪费老师们的时间看邮件了。打开邮箱看到健明老师已经回复了,说是下划线的问题。
老师建议我总结下发个帖子被别人做下参考,然后就有了这个踩坑记!我也反思了一下。
我的解决问题步骤不太对,没有充分搜索就去请教别人。应该先充分搜索实践,实在找不到答案了再请教大牛。因为大牛的时间都很宝贵。很多时候可能不会有时间回复这么简单的问题,甚至于我自己都不愿意浪费时间去回复一些被人问的简单问题。还有问题一定注意方法,尽可能简化别人的解答操作步骤。
再次感谢生信技能树,感谢所有为生信发展做出努力的老师!