Generalize Bam2Cram do either conversion

This commit is contained in:
Rike 2022-05-09 15:22:54 +02:00
parent 52a62c238b
commit ef5f145342
9 changed files with 87 additions and 46 deletions

View file

@ -1,5 +1,4 @@
//There is a -L option to only output alignments in interval, might be an option for exons/panel data? process SAMTOOLS_CONVERT {
process SAMTOOLS_BAMTOCRAM {
tag "$meta.id" tag "$meta.id"
label 'process_medium' label 'process_medium'
@ -14,7 +13,8 @@ process SAMTOOLS_BAMTOCRAM {
path fai path fai
output: output:
tuple val(meta), path("*.cram"), path("*.crai"), emit: cram_crai tuple val(meta), path("*.cram"), path("*.crai") , emit: cram_crai, optional: true
tuple val(meta), path("*.bam"), path("*.bai") , emit: bam_bai, optional:true
path "versions.yml" , emit: versions path "versions.yml" , emit: versions
when: when:
@ -23,9 +23,17 @@ process SAMTOOLS_BAMTOCRAM {
script: script:
def args = task.ext.args ?: '' def args = task.ext.args ?: ''
def prefix = task.ext.prefix ?: "${meta.id}" def prefix = task.ext.prefix ?: "${meta.id}"
def file_type = input.getExtension() == "bam" ? "cram" : "bam"
""" """
samtools view --threads ${task.cpus} --reference ${fasta} -C $args $input > ${prefix}.cram samtools view \\
samtools index -@${task.cpus} ${prefix}.cram --threads ${task.cpus} \\
--reference ${fasta} \\
$args \\
$input \\
-o ${prefix}.${file_type}
samtools index -@${task.cpus} ${prefix}.${file_type}
cat <<-END_VERSIONS > versions.yml cat <<-END_VERSIONS > versions.yml
"${task.process}": "${task.process}":

View file

@ -1,5 +1,5 @@
name: samtools_bamtocram name: samtools_convert
description: filter/convert and then index CRAM file description: convert and then index CRAM -> BAM or BAM -> CRAM file
keywords: keywords:
- view - view
- index - index
@ -23,12 +23,12 @@ input:
e.g. [ id:'test', single_end:false ] e.g. [ id:'test', single_end:false ]
- input: - input:
type: file type: file
description: BAM/SAM file description: BAM/CRAM file
pattern: "*.{bam,sam}" pattern: "*.{bam,cram}"
- index: - index:
type: file type: file
description: BAM/SAM index file description: BAM/CRAM index file
pattern: "*.{bai,sai}" pattern: "*.{bai,crai}"
- fasta: - fasta:
type: file type: file
description: Reference file to create the CRAM file description: Reference file to create the CRAM file

View file

@ -1631,9 +1631,9 @@ samtools/bam2fq:
- modules/samtools/bam2fq/** - modules/samtools/bam2fq/**
- tests/modules/samtools/bam2fq/** - tests/modules/samtools/bam2fq/**
samtools/bamtocram: samtools/convert:
- modules/samtools/bamtocram/** - modules/samtools/convert/**
- tests/modules/samtools/bamtocram/** - tests/modules/samtools/convert/**
samtools/collatefastq: samtools/collatefastq:
- modules/samtools/collatefastq/** - modules/samtools/collatefastq/**

View file

@ -1,17 +0,0 @@
#!/usr/bin/env nextflow
nextflow.enable.dsl = 2
include { SAMTOOLS_BAMTOCRAM } from '../../../../modules/samtools/bamtocram/main.nf'
workflow test_samtools_bamtocram {
input = [ [ id:'test', single_end:false ], // meta map
file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true),
file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true)]
fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true)
SAMTOOLS_BAMTOCRAM ( input, fasta, fai )
}

View file

@ -1,5 +0,0 @@
process {
publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }
}

View file

@ -1,9 +0,0 @@
- name: samtools bamtocram test_samtools_bamtocram
command: nextflow run ./tests/modules/samtools/bamtocram -entry test_samtools_bamtocram -c ./tests/config/nextflow.config -c ./tests/modules/samtools/bamtocram/nextflow.config
tags:
- samtools/bamtocram
- samtools
files:
- path: output/samtools/test.cram
- path: output/samtools/test.cram.crai
- path: output/samtools/versions.yml

View file

@ -0,0 +1,31 @@
#!/usr/bin/env nextflow
nextflow.enable.dsl = 2
include { SAMTOOLS_CONVERT as SAMTOOLS_BAMTOCRAM } from '../../../../modules/samtools/convert/main.nf'
include { SAMTOOLS_CONVERT as SAMTOOLS_CRAMTOBAM } from '../../../../modules/samtools/convert/main.nf'
workflow test_samtools_convert_bamtocram {
input = [ [ id:'test', single_end:false ], // meta map
file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true),
file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true)]
fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true)
SAMTOOLS_BAMTOCRAM ( input, fasta, fai )
}
workflow test_samtools_convert_cramtobam {
input = [ [ id:'test', single_end:false ], // meta map
file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true),
file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram_crai'], checkIfExists: true)
]
fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)
fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true)
SAMTOOLS_CRAMTOBAM ( input, fasta, fai )
}

View file

@ -0,0 +1,12 @@
process {
publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }
withName:SAMTOOLS_BAMTOCRAM{
ext.args = "-C"
}
withName:SAMTOOLS_CRAMTOBAM{
ext.args = "-b"
}
}

View file

@ -0,0 +1,21 @@
- name: samtools convert test_samtools_convert_bamtocram
command: nextflow run tests/modules/samtools/convert -entry test_samtools_convert_bamtocram -c tests/config/nextflow.config
tags:
- samtools
- samtools/convert
files:
- path: output/samtools/test.cram
- path: output/samtools/test.cram.crai
- path: output/samtools/versions.yml
- name: samtools convert test_samtools_convert_cramtobam
command: nextflow run tests/modules/samtools/convert -entry test_samtools_convert_cramtobam -c tests/config/nextflow.config
tags:
- samtools
- samtools/convert
files:
- path: output/samtools/test.bam
md5sum: c262b6dc15f9b480bdb47d6d018b4b56
- path: output/samtools/test.bam.bai
md5sum: 6e8f5034f728401bfa841c8e70c62463
- path: output/samtools/versions.yml