Newer
Older
########################## Samtools ##########################
rule samtools_stats:
input:
PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam",
protected(OUT_DIR / "{sample}" / "qc" / "samtools-stats" / "{sample}.txt"),
wrapper:
"0.64.0/bio/samtools/stats"
########################## Qualimap ##########################
rule qualimap_bamqc:
input:
bam=PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam",
index=PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam.bai",
target_regions=get_capture_regions_bed,
html_report=protected(OUT_DIR / "{sample}" / "qc" / "qualimap" / "{sample}" / "qualimapReport.html"),
coverage=protected(OUT_DIR / "{sample}" / "qc/qualimap/{sample}/raw_data_qualimapReport/coverage_across_reference.txt"),
summary=protected(OUT_DIR / "{sample}" / "qc" / "qualimap" / "{sample}" / "genome_results.txt"),
message:
"stats bam using qualimap"
conda:
str(WORKFLOW_PATH / "configs/env/qualimap.yaml")
params:
outdir=lambda wildcards, output: str(Path(output["html_report"]).parent),
capture_bed=lambda wildcards, input: f"--feature-file {input.target_regions}" if input.target_regions else "",
java_mem="24G",
shell:
r"""
qualimap bamqc \
-bam {input.bam} \
{params.capture_bed} \
-outdir {params.outdir} \
-outformat HTML \
--paint-chromosome-limits \
--genome-gc-distr HUMAN \
-nt {threads} \
--java-mem-size={params.java_mem}
"""
########################## Mosdepth ##########################
bam=PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam",
bam_index=PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam.bai",
dist=protected(OUT_DIR / "{sample}" / "qc" / "mosdepth" / "{sample}.mosdepth.global.dist.txt"),
summary=protected(OUT_DIR / "{sample}" / "qc" / "mosdepth" / "{sample}.mosdepth.summary.txt"),
"Running mosdepth for coverage. Sample: {wildcards.sample}"
conda:
str(WORKFLOW_PATH / "configs/env/mosdepth.yaml")
out_prefix=lambda wildcards, output: output["summary"].replace(".mosdepth.summary.txt", ""),
capture_bed=lambda wildcards, input: f"--by {input.target_regions}" if input.target_regions else "",
shell:
r"""
mosdepth \
--no-per-base \
--threads {threads} \
--fast-mode \
dist=expand(OUT_DIR / "{sample}" / "qc" / "mosdepth" / "{sample}.mosdepth.global.dist.txt", sample=SAMPLES),
script=WORKFLOW_PATH / "src/mosdepth/v0.3.1/plot-dist.py",
protected(OUT_DIR / "project_level_qc" / "mosdepth" / "mosdepth.html"),
"Running mosdepth plotting"
infiles=lambda wildcards: str(OUT_DIR / f"{{{','.join(SAMPLES)}}}" / "qc" / "mosdepth" / "*.mosdepth.global.dist.txt")
shell:
r"""
python {input.script} \
########################## indexcov ##########################
rule indexcov:
input:
PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam",
PROJECT_PATH / "{sample}" / "bam" / "{sample}.bam.bai",
html=protected(OUT_DIR / "project_level_qc" / "indexcov" / "index.html"),
bed=protected(OUT_DIR / "project_level_qc" / "indexcov" / "indexcov-indexcov.bed.gz"),
"Running indexcov"
OUT_DIR / "project_level_qc" / "indexcov" / "stdout.log",
conda:
str(WORKFLOW_PATH / "configs/env/goleft.yaml")
outdir=lambda wildcards, output: Path(output[0]).parent,
infiles=lambda wildcards: str(PROJECT_PATH / f"{{{','.join(SAMPLES)}}}" / "bam" / "*.bam")
--directory {params.outdir} \
########################## covviz ##########################
rule covviz:
input:
bed=OUT_DIR / "project_level_qc" / "indexcov" / "indexcov-indexcov.bed.gz",
html=protected(OUT_DIR / "project_level_qc" / "covviz" / "covviz_report.html"),
"Running covviz"
OUT_DIR / "project_level_qc" / "covviz" / "stdout.log",
conda:
str(WORKFLOW_PATH / "configs/env/covviz.yaml")
shell:
r"""
covviz \
--ped {input.ped} \