Skip to content

Commit

Permalink
Merge pull request #11 from cokelaer/main
Browse files Browse the repository at this point in the history
add tools required by Sequana pipelines
  • Loading branch information
cokelaer committed Nov 2, 2023
2 parents 7a332e8 + b626b47 commit c5681bb
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 7 deletions.
1 change: 1 addition & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ Changelog
========= ========================================================================
Version Description
========= ========================================================================
0.2.2 add all tools required by sequana pipelines (oct 2023)
0.2.1 More tools added.
0.2 simplification. Add tests. Add more tools
0.1 first draft
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "versionix"
version = "0.2.1"
version = "0.2.2"
description = "Get version of any tools"
authors = ["Sequana Team"]
license = "BSD-3"
Expand Down
19 changes: 19 additions & 0 deletions test/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@
#The mocker which is set so that when we test the presence of e.G. macs3, which is not installed,
#no error is raise

def test_sequana(fp, mocker):
mocker.patch('shutil.which', return_value="something")
fp.register(["sequana_coverage", "--version"], stdout=["v0.15.4"])
assert get_version("sequana_coverage") == "0.15.4"


def test_macs3(fp, mocker):
mocker.patch('shutil.which', return_value="something")
Expand All @@ -25,6 +30,20 @@ def test_kallisto(fp, mocker):
assert get_version("kallisto") == "0.48.0"


def test_pigz(fp, mocker):
# stderr parser
mocker.patch('shutil.which', return_value="something")
fp.register(["pigz", "--version"], stderr=["pigz 2.4"])
assert get_version("pigz") == "2.4"


def test_fastqc(fp, mocker):
# stderr parser
mocker.patch('shutil.which', return_value="something")
fp.register(["fastqc", "--version"], stderr=["fastqc v1.0.0"])
assert get_version("fastqc") == "1.0.0"


def _test_bwa(fp, mocker):
mocker.patch('shutil.which', return_value="something")
fp.register(
Expand Down
136 changes: 130 additions & 6 deletions versionix/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,24 @@

# default parser performs stdout.strip()

#v1.5.0
def parser_strip_v(x):
return x.stdout.strip("v").strip()


# versionix 1.0.0
parser_split_2 = lambda x: x.stdout.split()[1]
def parser_split_2(x):
try:
return x.stdout.split()[1]
except IndexError:
return x.stderr.split()[1]

# versionix v1.0.0
parser_split_2_strip_v = lambda x: x.stdout.split()[1][1:]
def parser_split_2_strip_v(x):
try:
return x.stdout.split()[1][1:]
except IndexError:
return x.stderr.split()[1][1:]

# versionix version 1.0.0
parser_split_3 = lambda x: x.stdout.split()[2]
Expand All @@ -30,12 +43,28 @@
"options": "--version",
"parser": parser_split_2
},
"bcl2fastq": {
"options": "--version",
"parser": lambda data: [x.split()[1][1:] for x in data.stderr.split("\n") if x.startswith("bcl2fastq")][0]
},
"bedtools": {
"options": "--version",
"options": "--version",
"parser": parser_split_2_strip_v
},
"blastn": {
"options": "-version",
"parser": parser_split_2
},
"blastp": {
"options": "-version",
"parser": parser_split_2
},
"blastx": {
"options": "-version",
"parser": parser_split_2
},
"bowtie": {
"options": "--version",
"options": "--version",
"parser": parser_split_3
},
"bowtie2": {
Expand All @@ -45,6 +74,22 @@
"bwa": {
"parser": lambda x: x.stderr.strip().split("\n")[1].split()[1]
},
#"canu": {
# "options": ,
# "parser":
#},
"checkm": {
"options": "",
"parser": lambda x: x.stdout.split()[2][1:]
},
"circlator": {
"options": "version",
"parser": lambda x: x.stdout.strip()
},
"ccs": {
"options": "--version",
"parser": parser_split_2
},
"cutadapt": {
"options": "--version"
},
Expand All @@ -56,6 +101,14 @@
"caller": "Rscript -e \"library(DESeq2)\\npackageVersion('DESeq2')\"",
"parser": lambda x: x.stdout.split()[1].strip("’‘"),
},
"dot": {
"options": "-V",
"parser": lambda x: x.stderr.split()[4].strip(),
},
"falco": {
"options": "--version",
"parser": parser_split_2
},
"fastqc": {
"options": "--version",
"parser": parser_split_2_strip_v
Expand All @@ -66,7 +119,10 @@
},
"featureCounts": {
"options": "-v",
"parser": lambda x: x.stderr.split("\n")[1].split()[1],
"parser": lambda x: x.stderr.split("\n")[1].split()[1][1:],
},
"flye": {
"options": "--version",
},
"freebayes": {
"options": "--version",
Expand All @@ -75,6 +131,18 @@
"gffread": {
"options": "--version"
},
#"hifiasm": {
# "options": ,
# "parser":
#},
"idr": {
"options": "--version",
"parser": lambda x: x.stdout.split("\n")[0].split()[1]
},
"igvtools": {
"options": "version",
"parser": lambda data: [x.split()[2] for x in data.stdout.split("\n") if x.startswith("IGV Version")][0]
},
"jellyfish": {
"options": "--version",
"parser": parser_split_2
Expand All @@ -87,17 +155,37 @@
"options": "--version",
"parser": parser_split_3
},
"ktImportText": {
"options": "",
"parser": lambda x: x.stdout.split("\n")[1].split()[2]
},
"macs3": {
"options": "--version",
"parser": parser_split_2,
},
"mafft": {
"options": "--version",
"parser": lambda x: x.stderr.split()[0][1:]
},
"minimap2": {
"options": "--version"
},
"multiqc": {
"options": "--version",
"parser": parser_split_3
},
"pbindex": {
"options": "--version",
"parser": parser_split_2
},
"picard": {
"options": "SortVcf --version",
"parser": lambda x: x.stderr.split("\n")[1].split(":")[1].split("-")[0]
},
"pigz": {
"options": "--version",
"parser": parser_split_2
},
"plotCorrelation": {
"options": "--version",
"parser": parser_split_2
Expand All @@ -106,25 +194,61 @@
"options": "--version",
"parser": parser_split_2
},
"prokka": {
"options": "--version",
"parser": parser_split_2
},
"pycoQC": {
"options": "--version",
"parser": parser_split_2_strip_v
},
"quast": {
"options": "",
"parser": lambda x: x.stderr.split("\n")[1].split()[1]
},
"salmon": {
"options": "--version",
"parser": parser_split_2
},
"sambamba": {
"options": "--version",
"parser": lambda x: x.stderr.split()[1]
},
"samtools": {
"options": "--version",
"parser": parser_split_2
},
"seqtk": {
"parser": lambda x: x.stderr.split("\n")[2].split()[1]
},
"seqkit": {
"options": "version",
"parser": parser_split_2_strip_v
},
"sequana": {
"options": "--version",
"parser": parser_split_2_strip_v
},
"sequana_coverage": {
"options": "--version",
"parser": parser_strip_v
},
"singularity": {
"options": "version"
},
"STAR": {
"options": "--version"
},
"snpEff": {
"options": "-version",
"options": "-version",
"parser": parser_split_2
},
"syri": {
"options": "--version",
#"parser": parser_split_2
},
"vt": {
"options": "--version",
"parser": parser_split_2_strip_v
},
}

0 comments on commit c5681bb

Please sign in to comment.