公众号里的文章大多数需要编程基础,如果因为代码看不懂,而跟不上正文的节奏,可以来找我学习,相当于给自己一个新手保护期。我的课程都是循环开课,点进去咨询微信↓ 生信分析直播课程(每月初开一期,春节休一个月) 生信新手保护学习小组(每月两期) 单细胞陪伴学习小组(每月两期)
我们在做数据分析时,会遇到不同的作者提供的各种各样的文件格式,一点都不统一。尤其是单细胞数据,格式更是多样。
例如这个GSE176078数据,它提供的格式就很杂乱,我不止一次发现很多同学并不认识这些格式!
我问:你的数据是什么格式?
回答tar的也有,回答gz的也有。tar和gz可不是真正的文件格式啊!
打包和压缩格式
🔖 TAR:想象一下,你有一堆文件想要打包带走,TAR就是那个打包盒。它将多个文件捆绑在一起,方便备份和传输。但它本身并不压缩,想要变小,还得找帮手👇。
🗜️ GZ:GZ就是那个帮手,它是GNU项目出品的压缩专家,能让文件体积大大减小,节省空间。
⚠虽然windows电脑上的gz文件图标像一个文件夹,但它不是文件夹哦。
gz只能压缩一个文件,如果要压缩多个文件,那就使用zip或者是先打包(tar)再压缩👇。
🧳 TAR.GZ:当TAR遇上GZ,就有了TAR.GZ。它结合了TAR的打包和GZ的压缩,是GEO数据库里非常常见的文件存储格式。
要查看别人提供的打包和压缩文件,需要解包和解压,用代码或者用解压软件都可以,例如7zip,右键一点,一看就会。
纯文本格式
或许不学编程时,并不知道表格还有除了xlsx之外的格式。
xlsx是excel的电子表格,他不是纯文本,不够纯粹,很多地方打开不方便。
套用我神奇的曾老板的一句名言:
电脑上的文件只分两类,一类是文本,一类是灰(非)文本!
所以tsv、txt和csv其实没有本质的区别,只是列与列之间的分隔符不同罢了!
这些文件都可以用excel打开,但你在excel里面是看不到分隔符的,因为excel是表格视图,它的竖线其实就是靠分隔符识别而来的。
比如一个csv文件:
如果用sublime或者记事本这类文件打开,就可以看到文件具体的分隔符 ,如果写代码要用到,就知道该写什么分隔符了。
📊 tsv:制表符分隔值,制表符在代码里写作\t,键盘上q前面的tab键按一下就是大概4个空格的宽度,那就是制表符,xlsx文件的分隔符也是制表符。
📋 csv:逗号分隔值。
🔖 txt:空格或者制表符分隔值。
mtx格式
🔢 mtx:只有单细胞数据才会用到mtx格式。10X的标准数据就是3个文件,其实上面的tar.gz里面就是3个文件:
它其实是把一个单细胞表达矩阵拆成3部分,行名列名各是一个tsv,主体部分非零的值,才记录在mtx文件里,主体部分每一行有三个数字,第一个是行号,第二个是列号,第三个是具体的值,没记录的全都是0。
例如这个文件里,总共有32738行,2700列,2286884个非零的值。后面几行则是:
第32709行,第1列的值为4,
第32709行,第1列的值为1...以此类推。
❓那它为什么不直接给咱一个表格文件呢,还要这样一个一个的写?
当然是因为单细胞矩阵里面0值太多,如果你去计算一下2286884/(32738*2700)你会发现只占到2.5%,也就是说绝大多数的格子里都是0,全部提供就太占地方了,所以才有了mtx这种格式,节省空间。
了解这些文件格式,才能知道自己该怎么提取数据和读取它们,读取不同格式的单细胞数据文件,墙裂推荐这一篇:https://mp.weixin.qq.com/s/KVsWoX6hCDl9TAgPR45NiA。