R保存与读取单细胞大数据集的正确姿势

\color{blue}{\normalsize{最近分析的单细胞项目}} \color{blue}{\normalsize{数据稍微有点大}} \color{blue}{\normalsize{近20个万细胞}} \color{blue}{\normalsize{虽然无法与百万细胞相比相提并论}} \color{blue}{\normalsize{但是用R处理已经稍显费力}} \color{blue}{\normalsize{与少量细胞时的秒出结果相比}} \color{blue}{\normalsize{这里的每一步都要停顿}} \color{blue}{\normalsize{搞得RDS保存与读取Seurat对象}} \color{blue}{\normalsize{都要半个小时}} \color{blue}{\normalsize{想保存备份一下中间结果}} \color{blue}{\normalsize{都是漫长的等待}}

obj
An object of class Seurat
38989 features across 199538 samples within 1 assay
Active assay: RNA (38989 features, 2000 variable features)
 3 layers present: counts, data, scale.data
 2 dimensional reductions calculated: pca, umap

system.time(saveRDS(obj, 'obj_base.rds'))
    user   system  elapsed
2920.173   52.749 2986.977

system.time(obj <- readRDS('obj_base.rds'))
   user  system elapsed
325.271  34.936 366.520

\color{blue}{\normalsize{这对于交互式分析来说}} \color{blue}{\normalsize{冲击多少有点大}} \color{blue}{\normalsize{相当于中断了施法}} \color{blue}{\normalsize{分析的热情直接减半}} \color{blue}{\normalsize{此时,可以借助qs包来保存与读取}} \color{blue}{\normalsize{速度保证满意}} \color{blue}{\normalsize{保存个数据}} \color{blue}{\normalsize{半个多小时与两分钟}} \color{blue}{\normalsize{高下立见分晓}}

system.time(qsave(obj, 'obj_base.qs', nthreads=10))
   user  system elapsed
713.639 590.818 137.621

system.time(obj <- qread('obj_base.qs', nthreads=10))
   user  system elapsed
726.524 827.763 158.170

\color{blue}{\normalsize{想快点就多给点油}} \color{blue}{\normalsize{线程设置多点}} \color{blue}{\normalsize{在读取数据方面}} \color{blue}{\normalsize{速度略有提升}}

ls -hl obj_base.*
14G May  31 10:04 obj_base.qs
50G May  31 09:52 obj_base.rds

\color{blue}{\normalsize{此外,存储空间上}} \color{blue}{\normalsize{可以节省三分之一}} \color{blue}{\normalsize{存储与时间的平衡可以自行选择}} \color{blue}{\normalsize{要快还是要小}} \color{blue}{\normalsize{你说了算}} \color{blue}{\normalsize{更多细节需要的话}} \color{blue}{\normalsize{可以详细阅读说明}}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容