基因組數據的數據量一般來說都不小,一個細菌基因組測序clean data的壓縮文件都能去到1個G,更別說其他非原核的物種了。實驗室的數據是不能隨便刪除的,更別說公司甚至是公共數據庫級別的了,但為了省空間(省錢)還是要想想辦法的。下面記錄一下降低數據存儲壓力的策略和常用的壓縮算法。
0、問題
如何解決存儲問題
什么樣的數據適合適用壓縮
怎么驗證解壓后的數據是無損的
1、降低存儲壓力的策略
整體的策略在于將數據的大小進行壓縮、將數據轉移到低價的存儲設備。
或許小型實驗室不太需要,小型實驗室而言只需把數據上傳到公共的數據庫即可。公共的類似gnomAD、千人基因組計劃1000genomes這些大數據庫,需要滿足第三方訪問和下載需求的可以考慮云存儲了。而且云存儲有一個好處,存放在云存儲的資料有單獨的訪問防止,方便在網頁、博客里面展示或者引用。
-
存儲設備(實驗室或者公司可以用的):
- 硬盤/光碟等等(別問為什么23年還要用光碟,便宜能用就是好!)
-
云存儲:什么情況下會用到云存儲呢?
- 對象存儲桶bucket/NAS盤
2、什么數據適合壓縮?——數據壓縮原理
數據壓縮技術分為兩種:有損壓縮和無損壓縮,在生信領域里面肯定是用無損壓縮的。
哪什么數據適合壓縮呢?
??下面先看看各種數據壓縮的原理(此處可以可視化)
-
bgzip的
:bgzip使用的壓縮算法是基于游程編碼(Run-Length Encoding)的。游程編碼是一種簡單的無損數據壓縮算法,它通過消除連續重復的數據元素來壓縮數據
。 -
gzip
: LZ77是一種基于字典的壓縮技術,可以有效地處理重復出現
的字符串序列。 -
bzip2 (bz2)
:Burrows-Wheeler變換通過重新排列字符順序來增重復字符
的集中度,這使得之后的壓縮步驟更有效。 -
tar.gz
:
總結:由數據壓縮的原理可見,如果數據中含有具有大量重復元素或者重復結構的大文件都可以考慮壓縮的操作,像測序文件fastq這一類的文件里面含有大量A,T,C,G
的字母元素缺失比較適合壓縮,而基因組壓縮也確實是計算機算法教材中的經典案例。
3、在生信中常用的壓縮算法使用命令(壓縮和解壓縮)
討論完什么數據適合壓縮,那就到了下一個環節了,該怎么壓縮呢?
生信中常見的壓縮文件格式(后綴為例):.zip
、bgzip
、.gz
、bgz
、tar.gz
、tar
常見的壓縮算法:gzip
、bgz
# gzip 壓縮和解壓縮
gzip filename # 壓縮文件
gunzip filename.gz # 解壓縮文件
gzip -d filename.gz # 解壓縮文件(另一種命令)
# bzip2 壓縮和解壓縮
bzip2 filename # 壓縮文件
bunzip2 filename.bz2 # 解壓縮文件
bzip2 -d filename.bz2 # 解壓縮文件(另一種命令)
# xz 壓縮和解壓縮
xz filename # 壓縮文件
unxz filename.xz # 解壓縮文件
xz -d filename.xz # 解壓縮文件(另一種命令)
# ZIP 壓縮和解壓縮
zip filename.zip files # 壓縮文件或文件夾
unzip filename.zip # 解壓縮文件或文件夾
# tar 結合 gzip/bzip2/xz 壓縮和解壓縮
tar -czvf archive.tar.gz directory/ # 使用gzip壓縮文件夾
tar -xzvf archive.tar.gz # 解壓縮.tar.gz文件
tar -cjvf archive.tar.bz2 directory/ # 使用bzip2壓縮文件夾
tar -xjvf archive.tar.bz2 # 解壓縮.tar.bz2文件
tar -cJvf archive.tar.xz directory/ # 使用xz壓縮文件夾
tar -xJvf archive.tar.xz # 解壓縮.tar.xz文件
# samtools (針對SAM/BAM文件)
samtools view -bS filename.sam > filename.bam # 將SAM轉換為BAM
samtools view -h filename.bam > filename.sam # 將BAM轉換為SAM
# bgzip 壓縮和解壓縮
bgzip filename # 壓縮文件
bgzip -d filename.gz # 解壓縮文件
# CRAM (針對基因組序列數據)
samtools view -C -T reference.fa -o filename.cram filename.bam # 將BAM轉換為CRAM
samtools view -b -T reference.fa -o filename.bam filename.cram # 將CRAM轉換為BAM
4、壓縮效果
該怎么評估壓縮的效果呢?下面給出了最直觀的評估,其他不作展示
- 壓縮后文件的大小:這是最直觀的體現壓縮效果的指標
- 壓縮和解壓縮的時長和資源消耗:如果壓縮使用的時間太長且計算資源消耗過大,就應該考慮其他的壓縮算法
- 解壓縮后文件的完整性:就是傳說中的有損還是無損(關于解壓縮后如何驗證文件是否為原來的文件請參考我的這篇日志,日志之間居然聯動起來了喂!)
5、總結
在日常業務中經常會聽到文件太大把盤占滿的消息,特此將這個點記錄一下,或許計算機的同學不需要看這個,但是生物轉生信的同學可以參考一下噢。
PS:碼文不易點個贊再走吧!??
參考及推薦閱讀