🔧 tool

Nextflow简介

Nextflow采用数据流编程模型,更适合复杂的并行计算: ```groovy // main.nf params.reads = "data/*_{R1,R2}.fastq.gz" params.genome = "reference/genome.fa" params.gtf = "reference/genes.gtf" // 定义进程 process FASTQC { tag "$...

📖 定义

Nextflow采用数据流编程模型,更适合复杂的并行计算:

// main.nf
params.reads = "data/*_{R1,R2}.fastq.gz"
params.genome = "reference/genome.fa"
params.gtf = "reference/genes.gtf"
// 定义进程
process FASTQC {
    tag "$sample_id"
    input:
    tuple val(sample_id), path(reads)
    output:
    path "fastqc_*"
    script:
    """
    fastqc -t 2 -o . ${reads}
    """
}
process STAR_ALIGN {
    tag "$sample_id"
    cpus 8
    input:
    tuple val(sample_id), path(reads)
    path index
    output:
    tuple val(sample_id), path("*.sorted.bam")
    script:
    """
    STAR --runThreadN 8 \
         --genomeDir $index \
         --readFilesIn ${reads[0]} ${reads[1]} \
         --readFilesCommand zcat \
         --outSAMtype BAM SortedByCoordinate \
         --outFileNamePrefix ${sample_id}_
    mv ${sample_id}_Aligned.sortedByCoord.out.bam ${sample_id}.sorted.bam
    """
}
// 工作流
workflow {
    Channel
        .fromFilePairs(params.reads, checkIfExists: true)
        .set { read_pairs }
    FASTQC(read_pairs)
    STAR_ALIGN(read_pairs, params.genome)
}