经验总结 | PBS系统的使用

下定决心要把PBS系统弄明白,今天又被师兄们点名警告,超级不应该。今天晚上,下定决心要学会使用PBS的作业调度系统。然后实操一下。加油!加油!而且我好像发现,每次写作业的笔记,总能够很好的督促我做事情,而没有“输出”的过程一般工作效率都很低效。终于理解了曹柠的那句,用“输出促进输入”。好了,闲话不讲,现在开始干活。其实,我是非常的迷茫的。我觉得交叉学科不好的地方正是在于,学啥都不精,说啥都不会。而且,觉得我们本科学的东西真少,我就应该修读一个计算机的双学位的,学啥教育学啊!哭泣。自我教育真是一辈子的问题,自学也很好!(还记得自己教育学的知识吗?你可以自己给自己当老师啊,自己按照这个学科的课程,安排教学大纲。自己教自己,自己敦促自己学习。)

参考链接:https://www.docin.com/p-1033189394.html

1。基本的格式

用户提前编写好脚本,然后使用qsub命令提交该脚本,pbs会按照脚本内容执行相应的任务。

qsub script_name #script_name是相应的脚本的名字

2。qsub脚本组成

qsub脚本的组成:

  • shell说明语句
  • pbs指示语句
  • 任务(程序或者指令)

下面将对此进行详细的介绍。
(1)shell说明语句
说明用户使用的是那种shell(怎么shell还有许多种吗)

#!/bin/bash/

(2)pbs指示语句
说明用户用来请求任务运行所需的资源或者设置任务的一些属性。以#PBS开头。pbs指示语句是可选的,用户可以不用关心它如何书写,系统会自动设置。

#PBS -I [选项=] 对应的值
#PBS -N mytask #任务名称
#PBS -l ncpus=5 #请求的cpu的数目
#PBS -l mem=90gb #任务的所有进程能够分配到的最大的物理内存数

(3)程序指令
就是我们要按顺序运行的指令,可以是python脚本也可以是Linux脚本。我决定尝试一下,好像并不是特别的难。

3。脚本实例

#!/bin/bash
#PBS -N mutation
#PBS -l select=2:ncpus=5:mem=4gb
ls
cat size1.txt large.txt >test.txt

4。提交指令

qsub job.pbs

最后的屏幕显示:

(base) [xxzhang@mu02 output]$ qsub job.pbs
11214.mu01
(base) [xxzhang@mu02 output]$ qstat
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
10532.mu01                 jupyter          sytong          1271:02: R batch
10647.mu01                 rstudio          yqzhou          11:00:21 R batch
10833.mu01                 rstudio          hywang          07:03:18 R batch
11058.mu01                 jupyter          plli            00:00:03 R batch
11145.mu01                 STDIN            wzhou           00:01:14 R batch
11155.mu01                 jupyter.pbs      rqzhang         00:00:41 R batch
11187.mu01                 rstudio          yuezhu          00:18:08 R batch
11207.mu01                 STDIN            xxzhang         17:14:13 C batch
11208.mu01                 STDIN            plli            00:00:00 R fat
11209.mu01                 STDIN            plli            00:00:00 R fat
11211.mu01                 chrom3diteration yuezhu          01:46:39 R batch
11212.mu01                 STDIN            yqzhou          00:00:16 R batch
11214.mu01                 mutation         xxzhang                0 Q batch

从屏幕显示上(最后一行),我们发现我们这个指令是可以看到的。
但是!!
这个代码运行的结果在哪里看呢?我好像在我们的路径下,并没有找到生成的这个文件呀!!
又是哪里出了问题?
我觉得错误原因是我忘记指定输出文件的路径了,以及忘记指定指令开始执行时间(看到没有,我们的指令现在的状态是Q,也就是排队的状态)

-o #路径名,指定输出文件路径
-a #年月日时分秒,指定任务开始运行时间

还是不对,我这样提交的指令,每次都是显示为Q

11217.mu01 mutation_2 xxzhang 0 Q batch

怎样才能将其转换为R状态呢?

问题具体描述:提交任务之后,一直处于排队的状态,并不运行。

后来莫名其妙的解决了。

#!/bin/bash
#PBS -N mutation_2
#PBS -o /home/xxzhang/workplace/ #这个路径我觉得更多是我们的屏幕显示的内容的输出的路径
cd ${PBS_O_WORKDIR} #添加工作路径
echo "PBS_O_WORKDIR is"${PBS_O_WORKDIR}
cat size1.txt large.txt >test.txt

所以,通过此,就测试成功了。
而这个指令,可以和nohup &连用。也就是说只需要把命令提交到后台,就可以关掉计算机,让服务器自己在那边连轴转,与此同时,也不用担心我的电脑突然卡掉的情况。

基于此,我终于解决了我的批量处理的需求(虽然设定相对比较简单)。

4。可以优化的空间

基本上知道怎么使用了,剩下的就是继续学习更加复杂的pbs提交的脚本的书写。
如:
在这里插入图片描述

5。现在尝试解决更加复杂的问题

(1)首先分别解压两组测序文件的fastq,然后使用cat指令,对其进行合并。
(2)然后使用scSplitter按照一定的规则,对其进行拆解。
(3)拆解完成之后,得到result文件夹下的文件。

现在书写pbs任务文件如下:

#!/bin/bash
#PBS -N split_10X_seq
#PBS -o /home/xxzhang/workplace/QBRC/data/fastq  #这个路径我觉得更多是我们的屏幕显示的内容的输出的路径
cd ${PBS_O_WORKDIR} #添加工作路径
echo "PBS_O_WORKDIR is"${PBS_O_WORKDIR}
ls
gunzip R21010305-3-wenku-S1-3-wenku-S1_combined_R1.fastq.gz
gunzip R21010305-3-wenku-S1-3-wenku-S1_combined_R2.fastq.gz
cat ./GEXst/R21010305-3-wenku-S1-3-wenku-S1_combined_R1.fastq  ./GEXnd/R21010305-3-wenku-S1-3-wenku-S1_combined_R1.fastq  >./combine_all/R21010305-3-wenku-S1-3-wenku-S1_all_R1.fastq
cat ./GEXst/R21010305-3-wenku-S1-3-wenku-S1_combined_R2.fastq  ./GEXnd/R21010305-3-wenku-S1-3-wenku-S1_combined_R2.fastq  >./combine_all/R21010305-3-wenku-S1-3-wenku-S1_all_R2.fastq

先解决这个小问题,看看在系统上是否可以运行。
出现了错误:

qstat: Unknown queue destination combine.pbs

好家伙,终于明白原因了。
我提交命令的时候,把qsub改为qstat,怪不得会报错。

接着又报错,写这个文件的时候,要特别注意英文字符,然后还有开头的#!/bin/bash一个都不能多,一个都不能少。

qsub combine.pbs
qstat

拆解完成这个任务之后,接下来想要继续处理的是:
当这个数据处理完成之后,使用scSplitter工具,对数据进行拆解。指令本身并不是很难,难的地方在于,我需要设置pbs任务文件,等待上面的那个指令完成之后,再执行。这个是我之前没有尝试过的。

/home/xxzhang/workplace/software/scSplitter

#!/bin/bash
#PBS -N split_10X_seq_step2
#PBS -o /home/xxzhang/workplace/QBRC/data/fastq/
#PBS -q batch
#PBS -W depend=after:11226.mu01

cd ${PBS_O_WORKDIR} 
echo "PBS_O_WORKDIR is"${PBS_O_WORKDIR}
ls
python3 scSplitter.py --f inputNames.txt  --i /home/xxzhang/workplace/QBRC/data/fastq/combine_all  --r /home/xxzhang/workplace/QBRC/data/fastq/output_all --ind /home/xxzhang/workplace/QBRC/geneome/hg38/STAR  --chver 1  --cb 16 --ul 12 --tsol 0  --gz True 

屏幕显示:

Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
10532.mu01                 jupyter          sytong          1271:02: R batch    
10647.mu01                 rstudio          yqzhou          11:00:25 R batch    
10833.mu01                 rstudio          hywang          07:03:40 R batch    
11058.mu01                 jupyter          plli            00:00:03 R batch    
11145.mu01                 STDIN            wzhou           00:01:14 R batch    
11155.mu01                 jupyter.pbs      rqzhang         00:00:42 R batch    
11187.mu01                 rstudio          yuezhu          00:18:13 R batch    
11208.mu01                 STDIN            plli            00:00:00 R fat      
11209.mu01                 STDIN            plli            00:00:00 R fat      
11211.mu01                 chrom3diteration yuezhu          04:02:51 R batch    
11212.mu01                 STDIN            yqzhou          00:00:21 R batch    
11226.mu01                 split_10X_seq    xxzhang         00:21:33 R batch    
11230.mu01                 jupyter          whe             00:00:19 R batch    
11232.mu01                 STDIN            rqzhang         00:00:00 R batch    
11233.mu01                 ...10X_seq_step2 xxzhang                0 H batch 

可以看到我新提交的指令,现在处于Hold的状态。

6。删除指令

qdel 11227.mu01

今天的任务,到现在基本上就结束了。
我觉得和学姐交流下来真好。给我了两个启发:

(1)将第一次测和第二次测得数据整合在一起,或许就能够解决测序的深度不够的问题。
(2)R1不好解释,为什么不直接使用R2来做呢?直接将其看成是单端的数据。
(3)顺便吐槽一下,这个课题的艰难。反正是一定要坚持下来的,我不能重蹈本科期间的覆辙。

  • somatic mutation的累积主要是通过突变,对于神经组织本身就很少。
  • 10X的数据的不全长的测序,且覆盖深度比较低
  • RNA的表达情况在细胞间不均衡
  • 正常细胞,非肿瘤细胞
  • 对的,它是测核的,而非线粒体,所以结果可能依然有问题

==>其实到这里,也比较一目了然了,我们需要对*“筛选”*,在实验设计方面下一些功夫


接下来还有半个小时的时间,我打算,使用nohup提交一些测序深度,本身就很高的细胞,看看这部分的细胞是不是会更有希望一些。
使用今天学到的,qsub结合nohup的方法,向后台提交指令。

#!/bin/bash
#PBS -N somatic
#PBS -o /home/xxzhang/workplace/QBRC/
#PBS -q batch

cd ${PBS_O_WORKDIR} 
echo "PBS_O_WORKDIR is"${PBS_O_WORKDIR}
ls

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_CGATTTGCACCAAAGG_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/CGATTTGCACCAAAGG/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_CAAGTTATCAAAGGCA_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/CAAGTTATCAAAGGCA/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_CATGCAAGTAATAACC_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/CATGCAAGTAATAACC/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_TACGCACCAATTATGC_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/TACGCACCAATTATGC/  human  1  ./disambiguate_pipeline


perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_AGCATCCCATCACTTC_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/AGCATCCCATCACTTC/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_GTACCTTGTGCTAGAC_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/GTACCTTGTGCTAGAC/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_TTTGTCCCATTTAAGC_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/TTTGTCCCATTTAAGC/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_TTCACTGTCGATATTG_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/TTCACTGTCGATATTG/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_TTTGTGGCATTGTCCT_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/TTTGTGGCATTGTCCT/  human  1  ./disambiguate_pipeline

perl /home/xxzhang/workplace/QBRC//somatic.pl NA  NA RNA:/home/xxzhang/workplace/QBRC/data/fastq/output_st/results/cell_CATGCGCAGCGAAGTA_R2.fastq.gz NA 32 hg38 /home/xxzhang/workplace/QBRC/geneome/hg38/hg38.fasta /home/xxzhang/miniconda3/bin/java /home/xxzhang/workplace/QBRC/output/CATGCGCAGCGAAGTA/  human  1  ./disambiguate_pipeline

结束。只能寄托希望于我的电脑运行一晚上依旧健康吧。

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值