[med-svn] [circlator] 01/04: New upstream version 1.5.5

Sascha Steinbiss satta at debian.org
Wed Jan 31 15:26:03 UTC 2018


This is an automated email from the git hooks/post-receive script.

satta pushed a commit to branch master
in repository circlator.

commit 3a219834e95ab1c62a7cac9259ef7211f64e9b1f
Author: Sascha Steinbiss <satta at debian.org>
Date:   Wed Jan 31 16:06:36 2018 +0100

    New upstream version 1.5.5
---
 AUTHORS                                |  6 +--
 LICENSE                                |  4 ++
 circlator/clean.py                     |  9 +++-
 circlator/external_progs.py            | 15 +++----
 circlator/tests/clean_test.py          | 15 +++++++
 circlator/tests/external_progs_test.py | 82 ++++++++++++++++++++++++++++++++++
 setup.py                               |  2 +-
 7 files changed, 118 insertions(+), 15 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 31dc516..5846867 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,3 @@
-Martin Hunt (mh12 at sanger.ac.uk)
-
-This small modification to allow replacing Spades with Canu, and different handling of small contigs, has been done by Nicola De Maio (nicola.de.maio.85 at gmail.com)
+Martin Hunt (path-help at sanger.ac.uk)
+Nicola De Maio (nicola.de.maio.85 at gmail.com)
+Andrew J. Page (path-help at sanger.ac.uk)
diff --git a/LICENSE b/LICENSE
index 733c072..8d196cc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,7 @@
+Copyright (c) 2015 - 2018 by Genome Research Ltd.
+
+This is free software, licensed under:
+
                     GNU GENERAL PUBLIC LICENSE
                        Version 3, 29 June 2007
 
diff --git a/circlator/clean.py b/circlator/clean.py
index 44b03cd..7e89d6b 100644
--- a/circlator/clean.py
+++ b/circlator/clean.py
@@ -128,18 +128,23 @@ class Cleaner:
         return containing
 
 
-    def _get_all_containing(self, containing_contigs, name, exclude=None):
+    def _get_all_containing(self, containing_contigs, name, exclude=None, max_depth=10):
         '''containing_contigs is a dict:
              key=contig name. Value = set of contigs that contain the key.
            Returns alls contigs called "name" that contain that contig'''
         contains_name = set()
+		
+        # failsafe to prevent infinite recursion
+        if max_depth < 0:
+            return contains_name
+		
         if name in containing_contigs:
             for containing_contig in containing_contigs[name]:
                 # if we have a contains b and b contains a, then this stops infinite recursion
                 if containing_contig==exclude:
                     continue
                 contains_name.add(containing_contig)
-                new_names = self._get_all_containing(containing_contigs, containing_contig, exclude=name)
+                new_names = self._get_all_containing(containing_contigs, containing_contig, exclude=name,max_depth=max_depth-1)
                 new_names.discard(name)
                 contains_name.update(new_names)
         return contains_name
diff --git a/circlator/external_progs.py b/circlator/external_progs.py
index 30a5c59..f6b9f92 100644
--- a/circlator/external_progs.py
+++ b/circlator/external_progs.py
@@ -7,24 +7,21 @@ import pyfastaq
 
 class Error (Exception): pass
 
-
 prog_to_env_var = {
     'samtools': 'CIRCLATOR_SAMTOOLS',
     'spades': 'CIRCLATOR_SPADES',
     'canu': 'CIRCLATOR_CANU',
 }
 
-
 prog_to_version_cmd = {
-    'bwa': ('', re.compile('^Version: ([0-9\.]+)')),
-    'nucmer': ('--version', re.compile('^NUCmer \(NUCleotide MUMmer\) version ([0-9\.]+)')),
-    'prodigal': ('-v', re.compile('^Prodigal V([0-9\.]+):')),
-    'samtools': ('', re.compile('^Version: ([0-9\.]+)')),
-    'spades': ('', re.compile('^SPAdes genome assembler v.?([0-9][0-9\.]+)')),
-    'canu': ('-version', re.compile('^Canu.*v.?([0-9][0-9\.]+)')),
+    'bwa': ('', re.compile(r'^Version: ([0-9\.]+)')),
+    'nucmer': ('--version', re.compile(r'([0-9\.]+)')),
+    'prodigal': ('-v', re.compile(r'^Prodigal V([0-9\.]+):')),
+    'samtools': ('', re.compile(r'Version: (\d+\.\d+[\.\d]*)')),
+    'spades': ('-v', re.compile(r'v.?([0-9][0-9\.]+)')),
+    'canu': ('-version', re.compile(r'^Canu \D*([\d][\d\.]+)')),
 }
 
-
 min_versions = {
     'bwa': '0.7.12',
     'nucmer': '3.1',
diff --git a/circlator/tests/clean_test.py b/circlator/tests/clean_test.py
index 3e3dcf0..18a7739 100644
--- a/circlator/tests/clean_test.py
+++ b/circlator/tests/clean_test.py
@@ -156,7 +156,22 @@ class TestClean(unittest.TestCase):
 
         got = cleaner._expand_containing_using_transitivity(dict_in)
         self.assertEqual(expected, got)
+		
+		
 
+    def test_infinite_recursion(self):
+        '''test _infinite_recursion'''
+        cleaner = clean.Cleaner('infile', 'outprefix')
+        dict_in = {
+            'a': {'b'},
+            'b': {'c'},
+            'c': {'a', 'b'},
+        }
+
+        expected = {'a': {'b', 'c'}, 'b': {'a', 'c'}, 'c': {'a', 'b'}}
+
+        got = cleaner._expand_containing_using_transitivity(dict_in)
+        self.assertEqual(expected, got)
 
     def test_collapse_list_of_sets(self):
         '''test _collapse_list_of_sets'''
diff --git a/circlator/tests/external_progs_test.py b/circlator/tests/external_progs_test.py
new file mode 100644
index 0000000..4c378ed
--- /dev/null
+++ b/circlator/tests/external_progs_test.py
@@ -0,0 +1,82 @@
+import unittest
+from circlator import external_progs
+
+class TestExternalProgs(unittest.TestCase):
+    
+    def test_canu_version(self):
+            '''Test canu version'''
+            self.assertEqual('1.6', self.check_regex_version_extraction('canu', """
+Canu 1.6
+            """ ))
+    
+    def test_spades_version(self):
+            '''Test spades version'''
+            self.assertEqual('3.11.0', self.check_regex_version_extraction('spades', """
+SPAdes v3.11.0
+            """ ))
+            self.assertEqual('3.7.1', self.check_regex_version_extraction('spades', """
+SPAdes v3.7.1
+            """ ))
+            self.assertEqual('3.5.0', self.check_regex_version_extraction('spades', """
+SPAdes genome assembler v.3.5.0
+            """ ))
+    
+    def test_prodigal_version(self):
+            '''Test prodigal version'''
+            self.assertEqual('2.60', self.check_regex_version_extraction('prodigal', """
+
+Prodigal V2.60: October, 2011
+
+            """ ))
+    
+    def test_bwa_version(self):
+        '''Test bwa version'''
+        self.assertEqual('0.7.10', self.check_regex_version_extraction('bwa', """
+
+Program: bwa (alignment via Burrows-Wheeler transformation)
+Version: 0.7.10-r789
+Contact: Heng Li <lh3 at sanger.ac.uk>
+
+        """ ))
+        self.assertEqual('0.7.12', self.check_regex_version_extraction('bwa', """
+
+Program: bwa (alignment via Burrows-Wheeler transformation)
+Version: 0.7.12-r1039
+Contact: Heng Li <lh3 at sanger.ac.uk>
+         """ ))
+
+    def test_nucmer_version(self):    
+        '''Test nucmer version'''
+        self.assertEqual('3.1', self.check_regex_version_extraction('nucmer', """
+nucmer
+NUCmer (NUCleotide MUMmer) version 3.1
+        """ ))
+        self.assertEqual('4.0.0', self.check_regex_version_extraction('nucmer', """
+4.0.0beta1
+        """ ))
+    
+    def test_samtools_version(self):
+        '''Test samtools version'''
+        self.assertEqual('1.6', self.check_regex_version_extraction('samtools', """
+
+Program: samtools (Tools for alignments in the SAM format)
+Version: 1.6 (using htslib 1.6)
+""" ))
+
+    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 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
+        
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 66feaa3..a074aed 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='circlator',
-    version='1.5.1',
+    version='1.5.5',
     description='circlator: a tool to circularise genome assemblies',
     packages = find_packages(),
     package_data={'circlator': ['data/*']},

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/circlator.git



More information about the debian-med-commit mailing list