Added custom models as submodule, added pipleline for trap species handling (up to alignment). Initial progress on custom model rules

This commit is contained in:
Tom Kasper
2026-10-03 15:16:36 +01:00
parent 3b93ceaf6e
commit f0cd594148
17 changed files with 270 additions and 21 deletions
+32 -10
View File
@@ -22,9 +22,21 @@ def get_batch_names(input_file):
with open(input_file,'rt') as ih:
return [line.strip().split('/')[-1].split('.')[0] for line in ih]
rule download_pod5:
def get_run_name(wildcards):
if wildcards.dataset == 'nomiss':
return 'PBK98658_853a956f_57f83f46'
if wildcards.dataset == 'trap':
return 'ATCC_25922_202309'
def get_batch_range(wildcards):
if wildcards.dataset == 'nomiss':
return range(1,config['pod5_dataset_size']+1,config['pod5_stride'])
if wildcards.dataset == 'trap':
return [0]
rule download_nomiss_pod5:
output:
'../data/raw_pod5/PBK98658_853a956f_57f83f46_{batch}.pod5'
'../data/raw_pod5/nomiss/PBK98658_853a956f_57f83f46_{batch}.pod5'
threads: 1
wildcard_constraints:
batch="\d+"
@@ -33,12 +45,22 @@ rule download_pod5:
aws s3 cp --no-sign-request s3://ont-open-data/nomiss_96BC_P2I_SUP_2026/raw/pod5/PBK98658_853a956f_57f83f46_{wildcards.batch}.pod5 {output}
"""
rule download_trap_pod5:
output:
'../data/raw_pod5/trap/ATCC_25922_202309_0.pod5'
threads: 1
wildcard_constraints:
batch='\d+'
shell:
"""
curl -L "https://api.figshare.com/v2/file/download/45408628" -o {output}
"""
rule basecall_pod5:
input:
pod5='../data/raw_pod5/PBK98658_853a956f_57f83f46_{batch}.pod5',
pod5='../data/raw_pod5/{dataset}/{run}_{batch}.pod5',
model=get_model_requirement
output:
temp('../data/basecalled_reads/{model}/PBK98658_853a956f_57f83f46_{batch}.fastq')
temp('../data/basecalled_reads/{dataset}/{model}/{run}_{batch}.fastq')
threads:
32
resources:
@@ -57,9 +79,9 @@ rule basecall_pod5:
rule concatenate_basecalled_fastq:
input:
expand('../data/basecalled_reads/{{model}}/PBK98658_853a956f_57f83f46_{batch}.fastq',batch=range(1,config["pod5_dataset_size"]+1,config["pod5_stride"]))
expand('../data/basecalled_reads/{{dataset}}/{{model}}/{run}_{batch}.fastq',batch=get_batch_range,run=get_run_name)
output:
'../data/basecalled_reads/{model}.fastq.gz'
'../data/basecalled_reads/{dataset}_{model}.fastq.gz'
threads: 1
wildcard_constraints:
model="hac|fast"
@@ -70,10 +92,10 @@ rule concatenate_basecalled_fastq:
rule align_reads_to_reference:
input:
fastq='../data/basecalled_reads/{model}.fastq.gz',
fastq='../data/basecalled_reads/{dataset}_{model}.fastq.gz',
ref='../data/reference_genomes/full_reference.mmi'
output:
'../data/aligned_reads/{model}_to_genome.sam'
'../data/aligned_reads/{dataset}_{model}_to_genome.sam'
threads: 32
conda:
'../envs/minimap.yaml'
@@ -84,9 +106,9 @@ rule align_reads_to_reference:
rule convert_sam_to_bam:
input:
'../data/aligned_reads/{model}_to_genome.sam'
'../data/aligned_reads/{dataset}_{model}_to_genome.sam'
output:
'../data/aligned_reads/{model}_to_genome.sorted.bam'
'../data/aligned_reads/{dataset}_{model}_to_genome.sorted.bam'
threads: 32
conda:
'../envs/samtools.yaml'