Skip to content
Snippets Groups Projects
Select Git revision
  • 4fa9a1b1d9185a495066370e92b8d6a75b0c9ba4
  • master default protected
  • tp_experimental_biologists
3 results

samtools.nf

Blame
  • Laurent Modolo's avatar
    4fa9a1b1
    History
    samtools.nf 2.38 KiB
    /*
    * SAMtools :
    * Imputs : bam files
    * Output : bam files
    */
    
    /*                      bams sorting                                     */
    params.bam = "$baseDir/data/bam/*.bam"
    
    log.info "bams files : ${params.bam}"
    
    Channel
      .fromPath( params.bam )
      .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
      .set { bam_files }
    
    process sort_bam {
      tag "$bam.baseName"
      cpus 4
    
      input:
        file bam from bam_files
    
      output:
        file "*_sorted.bam" into sorted_bam_files
    
      script:
    """
    samtools sort -@ ${task.cpus} -O BAM -o ${bam.baseName}_sorted.bam ${bam}
    """
    }
    
    /*                      bams indexing                                     */
    
    params.bam = "$baseDir/data/bam/*.bam"
    
    log.info "bams files : ${params.bam}"
    
    Channel
      .fromPath( params.bam )
      .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
      .set { bam_files }
    
    process index_bam {
      tag "$bam.baseName"
      input:
        file bam from bam_files
      output:
        file "*bam*" into indexed_bam_file
      script:
    """
    samtools index ${bam}
    """
    }
    
    
    /*                      bams spliting                                     */
    params.bam = "$baseDir/data/bam/*.bam"
    
    log.info "bams files : ${params.bam}"
    
    Channel
      .fromPath( params.bam )
      .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
      .set { bam_files }
    
    process split_bam {
      tag "$bam.baseName"
      cpus 2
    
      input:
        file bam from bam_files
    
      output:
        file "*_forward.bam*" into forward_bam_files
        file "*_reverse.bam*" into reverse_bam_files
      script:
    """
    samtools view -hb -F 0x10 ${bam} > ${bam}_forward.bam &
    samtools view -hb -f 0x10 ${bam} > ${bam}_reverse.bam
    """
    }
    
    
    /*                      bams filtering                                     */
    params.bam = "$baseDir/data/bam/*.bam"
    params.bed = "$baseDir/data/bam/*.bed"
    
    log.info "bams files : ${params.bam}"
    log.info "bed file : ${params.bed}"
    
    Channel
      .fromPath( params.bam )
      .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
      .set { bam_files }
    Channel
      .fromPath( params.bed )
      .ifEmpty { error "Cannot find any bed file matching: ${params.bed}" }
      .set { bed_files }
    
    process filter_bam {
      tag "$bam.baseName"
      cpus 4
    
      input:
        file bam from bam_files
        file bed from bed_files
    
      output:
        file "*_filtered.bam*" into filtered_bam_files
      script:
    """
    samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} > ${bam.baseName}_filtered.bam
    """
    }