概述
下定决心要把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
结束。只能寄托希望于我的电脑运行一晚上依旧健康吧。
最后
以上就是缓慢手链为你收集整理的经验总结 | PBS系统的使用的全部内容,希望文章能够帮你解决经验总结 | PBS系统的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复