MGI-tech-bioinformatics / DNBelab_C_Series_HT_scRNA-analysis-software

An open source and flexible pipeline to analysis high-throughput DNBelab C Series single-cell RNA datasets
MIT License
72 stars 24 forks source link

关于dnbc4tools vdj run运行时间过长的咨询 #114

Closed biginfor closed 2 months ago

biginfor commented 2 months ago

尊敬的开发者: 您好! 感谢您在DEV版本中提供了5‘端scBCR/TCR-seq数据的分析工具,然而我在使用过程中出现了如下问题: 《1》.程序运行时间过长,执行完dnbc4tools vdj run后至今已32个小时,在log文件中可看出程序分别执行了两个命令

PISA parse -q 20 -t 15 -config dnbc4tools2.1.3/lib/python/dnbc4tools/config/cellbarcode/scVDJv1/scVDJ_beads_dark_PE.json -report /BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/sequencing_report.csv -1 /BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/clean_R1.fastq -2 /BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/clean_R2.fastq test1_1.fq.gz,test2_1.fq.gz,test3_1.fq.gz test1_2.fq.gz,test2_2.fq.gz,test3_2.fq.gz

上述命令运行时间为30个小时,随后的命令为: dnbc4tools2.1.3/lib/python/dnbc4tools/software/TRUST4/fastq-extractor -t 15 -f dnbc4tools2.1.3/lib/python/dnbc4tools/config/vdj/GRCh38_bcrtcr.fa -o 01.data/tcrbcr --barcode 01.data/cb_cut.fastq --UMI 01.data/ub_cut.fastq --barcodeTranslate 01.data/barcodeTranslate.txt --barcodeWhitelist /media/fangzj/Expansion/BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/barcodeWhitelist.list -1 /media/fangzj/Expansion/BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/fq1_cut.fastq -2 /media/fangzj/Expansion/BGI_scRNA_scBCR_TCR/scBCRseq_out/sample_202308022_BCR/01.data/fq2_cut.fastq 目前已运行了两个小时 《2》.CPU多线程运行似乎并未发挥作用,htop 状态显示大部分线程长期为D/S状态,似乎一直在等待PISA命令将文件写入01.data/。 请问正常情况下一个跑完一个样本的scBCR-Seq数据大概需要多久?目前的运行时间是否过长?dnbc4tools是否能开放源码以使得用户可以进行优化?

lishuangshuang0616 commented 2 months ago

这个时间肯定是不对的,PISA parse结果的report显示有多少条序列? 可以使用cngb数据测试看下,仅下载组合文件和TCR/BCR数据测试。https://db.cngb.org/search/project/CNP0006116/ dev版本较早,存在较多bug,不清楚您是否能联系到MGI的FBS获取测试版本的软件。

biginfor commented 2 months ago

您好,感谢您的回复! 首先 sequencing_report.csv中包含以下信息: Number of Fragments,441436039 Fragments pass QC,416363940 Fragments with Exactly Matched Barcodes,390439623 Fragments with Failed Barcodes,25072053 Fragments Filtered on Low Quality,46 Fragments Filtered on Unknown Sample Barcodes,0 Q30 bases in Cell Barcode,95.8% Q30 bases in Sample Barcode,0.0% Q30 bases in UMI,94.6% Q30 bases in Reads,89.5% 其次,我目前用的是您上次提及的dnbc4tools2.1.3.tar.gz 压缩包版本的文件,由BGI支持部门提供,似乎没有更新的版本。

lishuangshuang0616 commented 2 months ago

奥奥,是这个版本没错,首先数据建议10k reads每个细胞(期望捕获的TCR/BCR细胞数量,最低5k)。你的reads数量太多了,建议使用100M来分析再看看。

biginfor commented 2 months ago

好的,谢谢您的解答!我试试

biginfor commented 2 months ago

仅供后续分析者参考:程序占用存储很高,I/O对程序运行时间影响很大,不要在移动硬盘中运行程序。

biginfor commented 2 months ago

开发者: 您好!我注意到软件在使用trust4进行assembly时,多线程的使用其实是把所有数据全部读进内存当中,然后为每一个线程分配数据,假设我有240g的数据需要写入内存,我设置5个线程和十个线程的区别在于每个线程处理的数据量大小不一样,但是总内存消耗是不变的,这势必对内存大小有很高的要求,但是观察log,其实多线程是顺序执行的。比如我设置30个线程,软件实际上调用了10次trust每次3个线程,既然如此,有没有办法先跑五个trust,再跑剩下五个?这样瞬时内存消耗会显著减少,也不至于因为内存程序崩溃。 期盼您的回复!谢谢!

lishuangshuang0616 commented 2 months ago

你好,trust4的assembly在使用线程时,几个线程减少的时间差别不大,如果你需要跑5个,那就直接threads给5个就行。如果先跑后跑,那么运行的时间就太长了。整个软件的分析时间都在于组装这步耗时。

biginfor commented 2 months ago

好的,谢谢!

lishuangshuang0616 commented 2 months ago

我理解你的意思了,你是说一次分析不用那么多的数据,可以分几次跑这样去减少内存。相应的时间会增加但确实会降低内存保证分析完成。是可以考虑这样的优化。

biginfor commented 1 month ago

我理解你的意思了,你是说一次分析不用那么多的数据,可以分几次跑这样去减少内存。相应的时间会增加但确实会降低内存保证分析完成。是可以考虑这样的优化。

Exactly!