同样的流程为什么有时候会失败呢

前些天我发布了 cellranger更新到4啦,提到了可以免费做一下10X的单细胞转录组数据上游分析,反正刚刚购买的服务器闲着也是闲着。其中一个项目是12个样品的10X的样本的fastq测序原始数据,每个都是100G左右,跑10x单细胞转录组上游流程(10x的cellranger count 流程),反正运行是超级慢了。我分享了自己踩坑的经历,就是:底层架构真的折磨死个人(急,在线等),搞的我Windows的ubuntu子系统彻底放弃,然后安装了双系统也被一个8T硬盘格式搞得没有脾气,好在最后也是完美解决了。

不过我发现有4个样本其实是失败了,看文件夹大小也能看出来的,如下:

41G./D_145G./C_2201G./B_3236G./A_2206G./A_143G./D_248G./C_146G./A_354G./B_1217G./D_348G./B_241G./C_3

正常运行完10x单细胞转录组上游流程(10x的cellranger count )后,会有bam文件输出,供后续使用:

45G Aug 7 07:49 A_3/outs/possorted_genome_bam.bam52G Aug 7 14:28 B_1/outs/possorted_genome_bam.bam48G Aug 7 20:35 B_2/outs/possorted_genome_bam.bam47G Aug 8 04:29 C_1/outs/possorted_genome_bam.bam44G Aug 8 09:53 C_2/outs/possorted_genome_bam.bam41G Aug 8 14:57 C_3/outs/possorted_genome_bam.bam41G Aug 8 20:10 D_1/outs/possorted_genome_bam.bam42G Aug 9 01:51 D_2/outs/possorted_genome_bam.bam

但是我把这4个样本,重新跑10x单细胞转录组上游流程(10x的cellranger count 流程),居然这次又成功了,如下:

45G./B_346G./A_254G./A_159G./D_3

让我非常好奇,**第一次到底发生了什么,为什么就失败了呢,是服务器的不稳定性?**同样的机器,同样的数据,同样的软件和流程,仅仅是在不同时间运行居然结果还不一样,我们该相信它吗?

首先看看原始数据的大小

总共是1.3T的数据,每个样本的fastq测序原始数据文件夹如下:

124GA_1110GA_2113GA_3125GB_1118GB_2105GB_3107GC_1106GC_298GC_3103GD_1109GD_2119GD_3

看起来也不是因为样本的fastq测序原始数据到达了临界点,我的64Gb内存不应该是不够的。

查看log日志

失败的样本的日志如下:

2020-08-07 22:22:04 [jobmngr] 32.8GB less memory than expected was free2020-08-07 22:22:05 [jobmngr] Need 400 centi-threads to start the next job (200 available). Waiting for jobs to complete.2020-08-07 22:22:05 [jobmngr] Need 21504 MB of memory to start the next job (2203 available). Waiting for jobs to complete.2020-08-07 22:22:05 [jobmngr] Need 21504 MB of memory to start the next job (9822 available). Waiting for jobs to complete.2020-08-07 22:22:05 [runtime] (failed) ID.B_3.SC_RNA_COUNTER_CS.SC_MULTI_CS.SC_MULTI_CORE.MULTI_GEM_WELL_PROCESSOR.COUNT_GEM_WELL_PROCESSOR._BASIC_SC_RNA_COUNTER._MATRIX_COMPUTER.ALIGN_AND_COUNT2020-08-07 22:22:05 [runtime] Waiting 1s before attempting a retry.2020-08-07 22:22:06 [runtime] Transient error detected. Log content:
Job failed in stage code
signal: killed

写的还是蛮清楚的了,内存不够,我的这个服务器,就是64Gb的内存而已。

成功的日志如下:

2020-08-10 02:53:26 Shutting down.2020-08-10 02:53:26 [jobmngr] Highest memory usage observed: { "rss": 35828592640, "shared": 382881792, "vmem": 38134419456, "text": 88621056, "stack": 36670771200, "proc_count": 93}

还是同样的问题,为什么同样的机器,同样的数据,同样的软件和流程,仅仅是在不同时间运行居然结果还不一样。因为是同样的机器,不可能是内存不一样。

除非我在运行这个项目的10x单细胞转录组上游流程(10x的cellranger count 流程)的3天时间,有过其它的操作占用了这个小机器的内存,而那个占用,就恰好堵塞了这个10x单细胞转录组上游流程(10x的cellranger count 流程)的运行,导致失败。

可是,如果是这样的话,这个10x单细胞转录组上游流程(10x的cellranger count 流程)设计的时候,不考虑这一点呢?我完整运行10x的cellranger count 流程的命令如下:

bin=../pipeline/cellranger-4.0.0/bin/cellrangerdb=../pipeline/refdata-gex-GRCh38-2020-Afq_dir=/media/jmzeng/149A-E625/10x/lc_scRNA/
ls -lh $binls -lh $db# id=191598A_1cat sampleID.txt |while read id ;dols -lh "$fq_dir/$id"
$bin count --id=$id \--localcores=10 \--transcriptome=$db \--fastqs="$fq_dir/$id" \--sample=$id \--expect-cells=5000done

因为是超级小的服务,所以我设置了 localcores 是10,反正电脑是有16个线程的,就是我没有规定内存,但是这个小服务器是有64Gb内存的。

(0)

相关推荐