Skip to content

Commit

Permalink
Merge pull request #79 from andrewjpage/prog_versions
Browse files Browse the repository at this point in the history
Prog versions
  • Loading branch information
andrewjpage authored Jan 25, 2018
2 parents dba8c04 + 41f3feb commit 4a56b5a
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 8 deletions.
2 changes: 2 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
Martin Hunt (path-help@sanger.ac.uk)
Andrew J. Page (path-help@sanger.ac.uk)
Sascha Steinbiss (path-help@sanger.ac.uk)
2 changes: 1 addition & 1 deletion iva/external_progs.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def is_in_path(prog):
'nucmer': ('nucmer --version', re.compile('^NUCmer \(NUCleotide MUMmer\) version (.*)$')),
'R': ('R --version', re.compile('^R version (.*) \(.*\) --')),
'smalt': ('smalt version', re.compile('^Version: (.*)$')),
'samtools': ('samtools', re.compile('^Version: ([^ ]+)')),
'samtools': ('samtools', re.compile('(\d+\.\d+[\.\d]*)')),
}


Expand Down
142 changes: 136 additions & 6 deletions iva/tests/external_progs_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,158 @@ class TestExternalProgs(unittest.TestCase):
def test_kmc_in_path(self):
'''Test kmc in path'''
self.assertTrue(external_progs.is_in_path('kmc'), 'Error! Did not find kmc in your path! Please install kmc')

def test_kmc_dump_in_path(self):
'''Test kmc_dump in path'''
self.assertTrue(external_progs.is_in_path('kmc_dump'), 'Error! Did not find kmc_dump in your path! Please install kmc')

def test_nucmer_in_path(self):
'''Test nucmer in path'''
self.assertTrue(external_progs.is_in_path('nucmer'), 'Error! Did not find nucmer in your path! Please install MUMmer')

def test_delta_filter_in_path(self):
'''Test delta-filter in path'''
self.assertTrue(external_progs.is_in_path('delta-filter'), 'Error! Did not find delta-filter in your path! Please install MUMmer')

def test_show_coords_in_path(self):
'''Test show-coords in path'''
self.assertTrue(external_progs.is_in_path('show-coords'), 'Error! Did not find show-coords in your path! Please install MUMmer')

def test_samtools_in_path(self):
'''Test samtools in path'''
self.assertTrue(external_progs.is_in_path('samtools'), 'Error! Did not find samtools in your path! Please install samtools')

def test_smalt_in_path(self):
'''Test smalt in path'''
self.assertTrue(external_progs.is_in_path('smalt'), 'Error! Did not find smalt in your path! Please install smalt')

def test_r_version(self):
'''Test R versions'''
self.assertEqual('3.4.0', self.check_regex_version_extraction('R', """
R version 3.4.0 (2017-04-21) -- "You Stupid Darkness"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
""" ))

self.assertEqual('3.3.2', self.check_regex_version_extraction('R', """
R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.4.0 (64-bit)
""" ))

self.assertEqual('3.2.2', self.check_regex_version_extraction('R', """
R version 3.2.2 (2015-08-14) -- "Fire Safety"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
""" ))

self.assertEqual('3.1.2', self.check_regex_version_extraction('R', """
R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
""" ))

self.assertEqual('3.0.0', self.check_regex_version_extraction('R', """
R version 3.0.0 (2013-04-03) -- "Masked Marvel"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
""" ))

self.assertEqual('2.15.2', self.check_regex_version_extraction('R', """
R version 2.15.2 (2012-10-26) -- "Trick or Treat"
Copyright (C) 2012 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-unknown-linux-gnu (64-bit)
""" ))


def test_blastn_version(self):
'''Test blastn version'''
self.assertEqual('2.7.0+', self.check_regex_version_extraction('blastn', """
blastn: 2.7.0+
Package: blast 2.7.0, build Sep 12 2017 15:51:33
""" ))
self.assertEqual('2.6.0+', self.check_regex_version_extraction('blastn', """
blastn: 2.6.0+
Package: blast 2.6.0, build Aug 23 2017 22:18:50
""" ))
self.assertEqual('2.2.31+', self.check_regex_version_extraction('blastn', """
blastn: 2.2.31+
Package: blast 2.2.31, build Jul 6 2015 15:14:27
""" ))

def test_makeblastdb_version(self):
'''Test makeblastdb version'''
self.assertEqual('2.7.0+', self.check_regex_version_extraction('makeblastdb', """
makeblastdb: 2.7.0+
Package: blast 2.7.0, build Sep 12 2017 15:51:33
""" ))
self.assertEqual('2.6.0+', self.check_regex_version_extraction('makeblastdb', """
makeblastdb: 2.6.0+
Package: blast 2.6.0, build Aug 23 2017 22:18:50
""" ))
self.assertEqual('2.2.31+', self.check_regex_version_extraction('makeblastdb', """
makeblastdb: 2.2.31+
Package: blast 2.2.31, build Jul 6 2015 15:14:27
""" ))

def test_kmc_version(self):
'''Test kmc version'''
self.assertTrue(external_progs.get_version('kmc',must_be_in_path=True))
self.assertEqual('2.3.0', self.check_regex_version_extraction('kmc', """
K-Mer Counter (KMC) ver. 2.3.0 (2015-08-21)
""" ))
self.assertEqual('3.0.0', self.check_regex_version_extraction('kmc', """
K-Mer Counter (KMC) ver. 3.0.0 (2017-01-28)
""" ))

def test_kmc_dump_version(self):
'''Test kmc_dump version'''
self.assertTrue(external_progs.get_version('kmc_dump',must_be_in_path=True))
self.assertEqual('3.0.0', self.check_regex_version_extraction('kmc_dump', """
KMC dump ver. 3.0.0 (2017-01-28)
""" ))
self.assertEqual('2.3.0', self.check_regex_version_extraction('kmc_dump', """
KMC dump ver. 2.3.0 (2015-08-21)
""" ))

def test_nucmer_version(self):
'''Test nucmer version'''
self.assertTrue(external_progs.get_version('nucmer',must_be_in_path=True))
self.assertEqual('3.1', self.check_regex_version_extraction('nucmer', """
nucmer
NUCmer (NUCleotide MUMmer) version 3.1
""" ))

def test_samtools_version(self):
'''Test samtools version'''
self.assertTrue(external_progs.get_version('samtools', must_be_in_path=True))
self.assertEqual('1.6', self.check_regex_version_extraction('samtools', """
samtools 1.6
Using htslib 1.6
Copyright (C) 2017 Genome Research Ltd.""" ))

def test_samtools_original_version(self):
'''Test samtools original version'''
self.assertEqual('0.1.19', self.check_regex_version_extraction('samtools', """
Program: samtools (Tools for alignments in the SAM format)
Version: 0.1.19-44428cd
Usage: samtools <command> [options]""" ))

def test_smalt_version(self):
'''Test smalt version'''
self.assertTrue(external_progs.get_version('smalt',must_be_in_path=True))
self.assertEqual('0.7.6', self.check_regex_version_extraction('smalt', """
SMALT - Sequence Mapping and Alignment Tool
Version: 0.7.6
Date: 21-03-2014""" ))

def check_regex_version_extraction(self, prog, raw_version_output ):
cmd, regex = external_progs.prog_to_version_cmd[prog]
raw_output_lines = raw_version_output.splitlines()
for line in raw_output_lines:
hits = regex.search(line)
if hits:
return str(hits.group(1))
return None
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@

setup(
name='iva',
version='1.0.8',
version='1.0.9',
description='Iterative Virus Assembler',
packages = find_packages(),
package_data={'iva': ['gage/*', 'ratt/*', 'read_trim/*', 'test_run_data/*']},
Expand Down

0 comments on commit 4a56b5a

Please sign in to comment.