Nextflow实践中遇到的问题(Nextflow系列之五)

写在前面

中午基本了Nextflow文章的一部分,以为自己可以上手写了。于是马上动手,打算重构手上的一些流程。书写过程中,发现其实...一样写不动。不过,既然已经开始写了,那么就遇到什么问题,就解决什么问题

标准输出如何保存到文件?

输入和输出的处理,流程的关键。
Nextflow文档有大篇幅的关于输入的处理,以及内置函数的支持。
但是在输出上,看起来似乎很少描述
我查了大半个小时的文档,开始产生一种感觉,
方向有问题,认知有问题
Nextflow的设计逻辑和亮点,试试就是Process之间的Channel,
通过不同的管道,连通所有Process。标准输出>对应的文件,已经被处理成管道(对应了其自动生成的工作环境中的文件)。
在流程的中间,使用标准输出,获取文件,本身是违背了Nextflow的设计逻辑

或许,只有当流程运行结束,最后一个标准输出,值得做一次最后的搜集。

一些Nextflow示例

https://www.nextflow.io/docs/latest/example.html#basic-pipeline

Nextflow就是Groovy的拓展

前面阅读完文档之后,我一直以为,每个操作都是需要在Process内完成。随后发现这个逻辑似乎走不通。比如,我需要从一个样本列表中读取所有样本细信息,随后我是希望能并行处理的,也就需要保存到Channel。
但是我在Process中想了各种逻辑,最后并没有得到解决。
转念一想,Nextflow本身就是Groovy,那么内置的函数和方法,难道是独立于Process之外?
于是小试,果然如此。

sampleList = "/home/chengjie_chen/XiaLabRNAseqTraining/Samples/sample.list"
myReader = file(sampleList).newReader()
samplePairList = []
String line
while( line = myReader.readLine() ) {
    samplePairList.add(line)
}
myReader.close()
print(samplePairList)

浮沙筑高楼,可能存在一时侥幸;出来混的,总是要还的
没有Groovy的了解,或许Nextflow并没那么容易掌握。
于是得到输出

./nextflow run rnaseq_xialab.nf
N E X T F L O W  ~  version 18.10.1
Launching `rnaseq_xialab.nf` [prickly_monod] - revision: 87ad17f3b1
[P_SRR3080054.sra_1.fastq       P_SRR3080054.sra_2.fastq, P_SRR3080055.sra_1.fastq      P_SRR3080055.sra_2.fastq, P_SRR3080056.sra_1.fastq      P_SRR3080056.sra_2.fastq, P_SRR3080057.sra_1.fastq P_SRR3080057.sra_2.fastq, P_SRR3080058.sra_1.fastq      P_SRR3080058.sra_2.fastq, P_SRR3080059.sra_1.fastq      P_SRR3080059.sra_2.fastq]

。。。用了一天的时间

发现Nextflow确实不容易
目前进行到

fastp = "/tools/fastp"
sampleList = "/home/chengjie_chen/XiaLabRNAseqTraining/Samples/sample.list"
myReader = file(sampleList).newReader()
samplePairList = []
String line
while( line = myReader.readLine() ) {
    samplePairList.add(line)
}
myReader.close()
println(samplePairList)
samplePair = Channel.from(samplePairList)

process readQC{
    input:
        val pe from samplePair
    output:
        stdout into receiver
    script:
    (fq1,fq2) = (pe =~ /(\S+)\s+(\S+)/)[0]
    println(pe)
    """
        echo $fq1 $fq2
    """
}
receiver.

没有太多时间了,先放下

以后可以直接参考文档
https://github.com/nf-core/rnaseq

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,070评论 6 342
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,125评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,627评论 25 709
  • 那一年 磕长头匍匐在山路 不为觐见 只为贴着你的温暖 那一世 转山砖世转佛塔啊 不为修来生 只为途中与你相见
    灯下独我阅读 1,443评论 3 0