nextflow是一款强大的流程化语言,它可以串接脚本、命令形成流程,有着可以实现顺序输出的功能。还有一款语言和它功能类似,那就是makefile,两个语言虽然有着诸多不同,但是都可以实现总的流程搭建,以下是两种语言编写的流程风格。
nextflow:
makefile:
对于makefile,中间文件的生成都依赖于提供的命令行命令,文件名和文件路径都需要给定,很明确,即使程序出错,再次运行时也会覆盖旧的文件。而在nextflow流程中,很多的流程目录及文件都采用内存码来运行,程序出错退出后,再次运行时分配的内存码并不一致,这就导致了之前的错误文件不会被删除,也就会积累大量的垃圾,比如在比对时,就会生成很多无用的bam中间文件。
在nextflow运行过程中,一些时间和流程信息会被储存在trace文件中,信息如下。
在以上的trace文件中,截取的信息是报错后生成的信息。
#第一列是指系统分配的进程序列号
#第二列是work目录下文件目录信息,如56/3fe5ef是指在56文件目录下存在以3fe5ef开头的目录,这些目录名均是生成的内存码,不固定,不唯一,无重复
#第三列是任务号
#第四列进程名称
#第五列是进程状态,ABORTED表示中断,此数据无用,占用集群资源,可以删除,COMPLETED表示运行结束…
需要删除的数据就是显示状态为ABORTED目录以及生成的空目录。
错误文件的删除:
cattrace*|grep ABORTED|cut -f 2 | awk ''> del.sh
#如果目录和上述目录有区别,更改一下命令行的awk输出信息即可
空文件的删除(在输出目录下执行):
find-type d -empty |awk '' >> del.sh
#如果目录结构有出入,只需更改相应的命令参数即可
在准备好del.sh文件后,执行脚本即可。
对于nextflow脚本的编写,我也不太会,不过网上有很多资源,有兴趣可以去github搜索一下,有很多,可以学习学习。
小技巧:很多软件安装包中都会有一个以makefile命名的文件,软件安装过程中需要用make编译,这就是一个接触makefile的好机会,有兴趣可以学习一下。悄悄告诉你,下面官网说明的网站中就有一个makefile文件。有关于makefile具体的使用和执行我之后在和大家分享。
参考:
官网说明:https://github.com/nextflow-io/nextflow
rna分析流程:https://github.com/ericaenjoy3/rna_nf/blob/master/rna.nf
领取专属 10元无门槛券
私享最新 技术干货