Skip to content

Commit

Permalink
Refactored rule all to build input list using python outside the rule…
Browse files Browse the repository at this point in the history
… definition
  • Loading branch information
MathiasEskildsen committed May 14, 2024
1 parent 5913cce commit e39ffec
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 9 deletions.
2 changes: 1 addition & 1 deletion config/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ db_path_blast: "/home/bio.aau.dk/mk20aj/databases/MIDAS"
evalue: 1e-10 # E-value cutoff for blast

# Parameters for filtering reads (filtering.smk)
# Change based on amplicon length and desired quiality
# Change based on amplicon length and desired quality
length_lower_limit: 1200 # minimum length of reads to keep
length_upper_limit: 1600 # maximum length of reads to keep
quality_cut_off: 23 # minimum quality score to keep (phred-score)
Expand Down
28 changes: 20 additions & 8 deletions workflow/Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,29 @@ include: "rules/09-fix_otu_table.smk"
include: "rules/10-prep_for_ampvis2.smk" # <- shouldn't be necessary, amp_load() reads sintax files directly, see "taxonomy" here https://kasperskytte.github.io/ampvis2/reference/amp_load.html#arguments-1
include: "rules/11-prep_for_phyloseq.smk"


# Prepare inputs for rule all
## Rule all currently outputs all file formats. You can change this to only output the files you need.
## For example you can remove the blast files if you only need sintax annotation. By default, both sintax and blast files are output.
## You can also change the similarity level to any% by changing the id to the desired % in the expand function.
## You can comment out the files you don't need in the expand function.
def prepare_inputs():
inputs = []
ids = ["97", "99"]
if config["include_sintax_output"]:
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "OTUtable_tax_{id}_sintax.tsv"), id=ids))
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_tax_{id}_sintax.tsv"), id=ids))
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_abundance_{id}_sintax.tsv"), id=ids))

if config["include_blast_output"]:
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "OTUtable_tax_{id}_blast.tsv"), id=ids))
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_tax_{id}_blast.tsv"), id=ids))
inputs.extend(expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_abundance_{id}_blast.tsv"), id=ids))

inputs.append(expand(os.path.join(config['output_dir'], "final", "report", "total_reads.tsv")))

return inputs

rule all:
input:
expand(os.path.join(config['output_dir'], "final", "{id}", "OTUtable_tax_{id}_sintax.tsv"), id=["97", "99"]) if config["include_sintax_output"] else None, #
expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_tax_{id}_sintax.tsv"), id=["97", "99"]) if config["include_sintax_output"] else None, #
expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_abundance_{id}_sintax.tsv"), id=["97", "99"]) if config["include_sintax_output"] else None, #
expand(os.path.join(config['output_dir'], "final", "report", "total_reads.tsv")), #
expand(os.path.join(config['output_dir'], "final", "{id}", "OTUtable_tax_{id}_blast.tsv"), id=["97", "99"]) if config["include_blast_output"] else None, #
expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_tax_{id}_blast.tsv"), id=["97", "99"]) if config["include_blast_output"] else None, #
expand(os.path.join(config['output_dir'], "final", "{id}", "phyloseq_abundance_{id}_blast.tsv"), id=["97", "99"]) if config["include_blast_output"] else None #
prepare_inputs()

0 comments on commit e39ffec

Please sign in to comment.