diff --git a/.github/scripts/bump_version.py b/.github/scripts/bump_version.py index fcc8b278..5099c129 100644 --- a/.github/scripts/bump_version.py +++ b/.github/scripts/bump_version.py @@ -13,6 +13,15 @@ major, minor, patch = map(int, m.groups()) +print( + "Before", + f"label: {label}", + f"major: {major}", + f"minor: {minor}", + f"patch: {patch}", + sep = "\n" +) + if label == "major": major += 1 minor = 0 @@ -32,13 +41,16 @@ new_version = f'{major}.{minor}.{patch}' -text = re.sub( - r'__version__ = ".*"', - f'__version__ = "{new_version}"', - text, +print( + "After", + "new_version: {new_version}", + f"major: {major}", + f"minor: {minor}", + f"patch: {patch}", + sep = "\n" ) -version_file.write_text(text) +version_file.write_text(new_version) # Write new version to Github actions if "GITHUB_OUTPUT" in os.environ: diff --git a/.github/workflows/comments.yml b/.github/workflows/comments.yml index 559050c0..2307a0c3 100644 --- a/.github/workflows/comments.yml +++ b/.github/workflows/comments.yml @@ -1,4 +1,4 @@ -name: Commands +name: Update PR Labels on: issue_comment: types: [created] diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index a5bb25da..deb8e7ff 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -44,12 +44,14 @@ jobs: run: | git config user.name github-actions git config user.email github-actions@github.com - + git add src/mmaseq/__version__.py - - # Reference the output generated by your python script - NEW_VER="${{ steps.bumper.outputs.new_version }}" - git commit -m "Bump version to v$NEW_VER" - git push - + # Only commit if there are staged changes + if ! git diff-index --quiet --cached HEAD --; then + NEW_VER="${{ steps.bumper.outputs.new_version }}" + git commit -m "Bump version to v$NEW_VER" + git push + else + echo "No changes detected, skipping commit" + fi diff --git a/src/mmaseq/__version__.py b/src/mmaseq/__version__.py index 8c0d5d5b..7ec1d6db 100644 --- a/src/mmaseq/__version__.py +++ b/src/mmaseq/__version__.py @@ -1 +1 @@ -__version__ = "2.0.0" +2.1.0 diff --git a/src/mmaseq/config/species_configs/A_pleuropneumoniae.yaml b/src/mmaseq/config/species_configs/A_pleuropneumoniae.yaml new file mode 100644 index 00000000..7b6f8bcf --- /dev/null +++ b/src/mmaseq/config/species_configs/A_pleuropneumoniae.yaml @@ -0,0 +1,2 @@ +serovar_detector: + reads: True \ No newline at end of file diff --git a/src/mmaseq/config/species_configs/test.yaml b/src/mmaseq/config/species_configs/test.yaml index f8bea168..ca472351 100644 --- a/src/mmaseq/config/species_configs/test.yaml +++ b/src/mmaseq/config/species_configs/test.yaml @@ -98,3 +98,6 @@ sistr: kmeraligner: database : [vancomycin, vancomycinOperon] reads: True + +serovar_detector: + reads: True diff --git a/src/mmaseq/data/samplesheet.tsv b/src/mmaseq/data/samplesheet.tsv index 3c057c6c..11aef0bc 100755 --- a/src/mmaseq/data/samplesheet.tsv +++ b/src/mmaseq/data/samplesheet.tsv @@ -6,3 +6,4 @@ SRR26205262 reads/SRR26205262_1.fastq.gz reads/SRR26205262_2.fastq.gz assemblies ERR2929615 reads/ERR2929615_1.fastq.gz reads/ERR2929615_2.fastq.gz assemblies/ERR2929615.fasta E_Faecalis.yaml ERR2929578 reads/ERR2929578_1.fastq.gz reads/ERR2929578_2.fastq.gz assemblies/ERR2929578.fasta E_Faecium.yaml ERR142064 reads/ERR142064_1.fastq.gz reads/ERR142064_2.fastq.gz assemblies/ERR142064.fasta C_difficile.yaml +ERR14229029 reads/ERR14229029_1.fastq.gz reads/ERR14229029_2.fastq.gz assemblies/ERR14229029.fasta A_pleuropneumoniae.yaml \ No newline at end of file diff --git a/src/mmaseq/workflow/envs/serovar_detector.yaml b/src/mmaseq/workflow/envs/serovar_detector.yaml new file mode 100644 index 00000000..5343a695 --- /dev/null +++ b/src/mmaseq/workflow/envs/serovar_detector.yaml @@ -0,0 +1,3 @@ +name: serovar_detector +dependencies: + - bioconda::serovar_detector diff --git a/src/mmaseq/workflow/rules/Analysis.smk b/src/mmaseq/workflow/rules/Analysis.smk index 8871708b..29cb7475 100644 --- a/src/mmaseq/workflow/rules/Analysis.smk +++ b/src/mmaseq/workflow/rules/Analysis.smk @@ -453,6 +453,32 @@ rule serotypefinder: mv $OUTDIR/{params.tmp_results} {output.results} >> {log.stdout} 2>&1 """ + +rule serovar_detector: + input: + assembly = rules.assembly.output.assembly + params: + tmp_results = "serovars.tsv" + output: + results = f"{outdir}/{{sample}}/raw/serovar_detector/serovar_detector.tsv" + conda: + ENVS_DIR / "serovar_detector.yaml" + log: + stdout = f"{logdir}/serovar_detector_{{sample}}.log" + shell: + """ + OUTDIR=$(dirname {output.results}) + + cmd="serovar_detector -A {input.assembly} -o $OUTDIR -t 1" + + echo "Executing command:\n$cmd\n" > {log.stdout} 2>&1 + eval $cmd >> {log.stdout} 2>&1 + + echo "Renaming result files" >> {log.stdout} 2>&1 + mv $OUTDIR/{params.tmp_results} {output.results} >> {log.stdout} 2>&1 + """ + + ### SNP Analysis ### # Samtools and bcftools diff --git a/src/mmaseq/workflow/rules/Paired_Reads.smk b/src/mmaseq/workflow/rules/Paired_Reads.smk index d8670d41..e61fdf6d 100644 --- a/src/mmaseq/workflow/rules/Paired_Reads.smk +++ b/src/mmaseq/workflow/rules/Paired_Reads.smk @@ -385,6 +385,33 @@ rule PR_serotypefinder: mv $OUTDIR/{params.tmp_results} {output.results} >> {log.stdout} 2>&1 """ + +rule PR_serovar_detector: + input: + R1 = lambda wc: samplesheet.loc[wc.sample, "read1"], + R2 = lambda wc: samplesheet.loc[wc.sample, "read2"] + params: + tmp_results = "serovars.tsv" + output: + results = f"{outdir}/{{sample}}/raw/PR/serovar_detector/serovar_detector.tsv" + conda: + ENVS_DIR / "serovar_detector.yaml" + log: + stdout = f"{logdir}/PR/serovar_detector_{{sample}}.log" + shell: + """ + OUTDIR=$(dirname {output.results}) + + cmd="serovar_detector -1 {input.R1} -2 {input.R2} -o $OUTDIR -t 1" + + echo "Executing command:\n$cmd\n" > {log.stdout} 2>&1 + eval $cmd >> {log.stdout} 2>&1 + + echo "Renaming result files" >> {log.stdout} 2>&1 + mv $OUTDIR/{params.tmp_results} {output.results} >> {log.stdout} 2>&1 + """ + + rule PR_lrefinder: input: res = rules.PR_kmeraligner.output.results,