diff --git a/zamp/rules/5_visualization/QIIME2_import.rules b/zamp/rules/5_visualization/QIIME2_import.rules index 03651ed..72b46a3 100644 --- a/zamp/rules/5_visualization/QIIME2_import.rules +++ b/zamp/rules/5_visualization/QIIME2_import.rules @@ -1,29 +1,29 @@ rule create_biom_from_count_table: conda: - "../../envs/amplicons_r_utils.yml" + os.path.join(dir.envs, "amplicons_r_utils.yml") container: singularity_envs["r_utils"] input: - count_table="{prefix}/count_table.tsv", + count_table=os.path.join(dir.out.base, "{prefix}", "count_table.tsv"), output: - biom_count="{prefix}/otu_biom.biom", + biom_count=os.path.join(dir.out.base, "{prefix}", "otu_biom.biom"), log: - logging_folder + "{prefix}/otu_biom.txt", + os.path.join(dir.logs, "{prefix}", "otu_biom.txt"), script: "scripts/create_biom_from_count_table.R" rule import_count_table_to_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{prefix}/otu_biom.biom", + os.path.join(dir.out.base, "{prefix}", "otu_biom.biom"), output: - "{prefix}/count-table.qza", + os.path.join(dir.out.base, "{prefix}", "count-table.qza"), log: - logging_folder + "{prefix}/count-table.txt", + os.path.join(dir.logs, "{prefix}", "count-table.txt"), shell: """ qiime tools import \ @@ -36,15 +36,15 @@ rule import_count_table_to_QIIME2: rule create_visualize_count_table_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{prefix}/count-table.qza", + os.path.join(dir.out.base, "{prefix}", "count-table.qza"), output: - "{prefix}/count-table.qzv", + os.path.join(dir.out.base, "{prefix}", "count-table.qzv"), log: - logging_folder + "{prefix}.txt", + os.path.join(dir.logs, "{prefix}.txt"), shell: """ qiime feature-table summarize \ @@ -55,11 +55,15 @@ rule create_visualize_count_table_QIIME2: rule force_all_upper_case_rep_seq: input: - rep_seqs="{denoiser}/{prefix}/dna-sequences.fasta", + rep_seqs=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "dna-sequences.fasta" + ), output: - rep_seqs="{denoiser}/{prefix}/dna-sequences_all_UPPER.fasta", + rep_seqs=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "dna-sequences_all_UPPER.fasta" + ), log: - logging_folder + "{denoiser}/{prefix}/dna-sequences_all_UPPER.txt", + os.path.join(dir.logs, "{denoiser}", "{prefix}", "dna-sequences_all_UPPER.txt"), shell: """ awk '/^>/ {{print($0)}}; /^[^>]/ {{print(toupper($0))}}' {input[0]} > {output[0]} @@ -68,15 +72,17 @@ rule force_all_upper_case_rep_seq: rule import_rep_seq_to_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - rep_seqs="{denoiser}/{prefix}/dna-sequences_all_UPPER.fasta", + rep_seqs=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "dna-sequences_all_UPPER.fasta" + ), output: - "{denoiser}/{prefix}/rep-seqs.qza", + os.path.join(dir.out.base, "{denoiser}", "{prefix}", "rep-seqs.qza"), log: - logging_folder + "{denoiser}/{prefix}/rep-seqs.txt", + os.path.join(dir.logs, "{denoiser}", "{prefix}", "rep-seqs.txt"), shell: """ qiime tools import \ @@ -89,18 +95,24 @@ rule import_rep_seq_to_QIIME2: # Build a new tree based on the filtered sequences rule create_tree_in_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{denoiser}/{prefix}/rep-seqs.qza", + os.path.join(dir.out.base, "{denoiser}", "{prefix}", "rep-seqs.qza"), output: - aligned="{denoiser}/{prefix}/aligned-rep-seqs.qza", - masked="{denoiser}/{prefix}/masked-aligned-rep-seqs.qza", - unrooted="{denoiser}/{prefix}/unrooted-tree.qza", - rooted="{denoiser}/{prefix}/rooted-tree.qza", + aligned=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "aligned-rep-seqs.qza" + ), + masked=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "masked-aligned-rep-seqs.qza" + ), + unrooted=os.path.join( + dir.out.base, "{denoiser}", "{prefix}", "unrooted-tree.qza" + ), + rooted=os.path.join(dir.out.base, "{denoiser}", "{prefix}", "rooted-tree.qza"), log: - logging_folder + "{denoiser}/{prefix}/rooted-tree.txt", + os.path.join(dir.logs, "{denoiser}", "{prefix}", "rooted-tree.txt"), threads: 4 shell: """ @@ -116,15 +128,15 @@ rule create_tree_in_QIIME2: rule export_QIIME2_tree: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - rooted="{denoiser}/{prefix}/rooted-tree.qza", + os.path.join(dir.out.base, "{denoiser}", "{prefix}", "rooted-tree.qza"), output: - rooted="{denoiser}/{prefix}/tree.nwk", + os.path.join(dir.out.base, "{denoiser}", "{prefix}", "tree.nwk"), log: - logging_folder + "{denoiser}/{prefix}/tree.txt", + os.path.join(dir.logs, "{denoiser}", "{prefix}", "tree.txt"), shell: """ qiime tools export --input-path {input} --output-path $(dirname {output[0]}) @@ -133,15 +145,15 @@ rule export_QIIME2_tree: rule create_visualize_rep_seq_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{denoiser}/2_denoised/rep-seqs.qza", + os.path.join(dir.out.base, "{denoiser}", "2_denoised", "rep-seqs.qza"), output: - "{denoiser}/2_denoised/rep-seqs.qzv", + os.path.join(dir.out.base, "{denoiser}", "2_denoised", "rep-seqs.qzv"), log: - logging_folder + "{denoiser}/2_denoised/rep-seqs_qzv.txt", + os.path.join(dir.logs, "{denoiser}", "2_denoised", "rep-seqs_qzv.txt"), shell: """ qiime feature-table tabulate-seqs \ @@ -152,16 +164,33 @@ rule create_visualize_rep_seq_QIIME2: rule import_taxonomy_to_Qiime2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.txt", + os.path.join( + dir.out.base, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.txt", + ), output: - "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.qza", + os.path.join( + dir.out.base, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.qza", + ), log: - logging_folder - + "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.txt", + os.path.join( + dir.logs, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.txt", + ), shell: """ qiime tools import \ @@ -174,16 +203,33 @@ rule import_taxonomy_to_Qiime2: rule create_visualize_table_QIIME2: conda: - "../../envs/QIIME2-2020.02.yml" + os.path.join(dir.envs, "QIIME2-2020.02.yml") container: singularity_envs["qiime2"] input: - "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.qza", + os.path.join( + dir.out.base, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.qza", + ), output: - "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.qzv", + os.path.join( + dir.out.base, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.qzv", + ), log: - logging_folder - + "{denoiser}/3_classified/{classifier}_{tax_DB}/dna-sequences_tax_assignments.txt", + os.path.join( + dir.logs, + "{denoiser}", + "3_classified", + "{classifier}_{tax_DB}", + "dna-sequences_tax_assignments.txt", + ), shell: """ qiime metadata tabulate \