[med-svn] [Git][med-team/python-pymummer][master] 10 commits: New upstream version 0.11.0

Steffen Möller gitlab at salsa.debian.org
Wed Jun 10 01:24:08 BST 2020



Steffen Möller pushed to branch master at Debian Med / python-pymummer


Commits:
786112ec by Steffen Moeller at 2020-06-10T02:13:52+02:00
New upstream version 0.11.0
- - - - -
c651d27e by Steffen Moeller at 2020-06-10T02:13:52+02:00
routine-update: New upstream version

- - - - -
56c2b3ba by Steffen Moeller at 2020-06-10T02:13:52+02:00
Update upstream source from tag 'upstream/0.11.0'

Update to upstream version '0.11.0'
with Debian dir 4a1c64c625756c18086cb4314cbcbf53c38da756
- - - - -
39c76d6e by Steffen Moeller at 2020-06-10T02:13:52+02:00
routine-update: Standards-Version: 4.5.0

- - - - -
29fc7d57 by Steffen Moeller at 2020-06-10T02:13:52+02:00
routine-update: debhelper-compat 13

- - - - -
7623eded by Steffen Moeller at 2020-06-10T02:13:55+02:00
routine-update: Add salsa-ci file

- - - - -
d9d4574e by Steffen Moeller at 2020-06-10T02:13:55+02:00
routine-update: Rules-Requires-Root: no

- - - - -
d973ec85 by Steffen Moeller at 2020-06-10T02:13:58+02:00
Set upstream metadata fields: Bug-Database, Bug-Submit, Repository, Repository-Browse.

Fixes: lintian: upstream-metadata-missing-bug-tracking
See-also: https://lintian.debian.org/tags/upstream-metadata-missing-bug-tracking.html


Fixes: lintian: upstream-metadata-missing-repository
See-also: https://lintian.debian.org/tags/upstream-metadata-missing-repository.html

- - - - -
fa5ce748 by Steffen Moeller at 2020-06-10T02:14:08+02:00
routine-update: Ready to upload to unstable

- - - - -
c4e04802 by Steffen Moeller at 2020-06-10T02:23:26+02:00
Upload.

- - - - -


15 changed files:

- + CHANGELOG.md
- README.md
- debian/changelog
- − debian/compat
- debian/control
- debian/copyright
- debian/rules
- + debian/salsa-ci.yml
- debian/upstream/metadata
- pymummer/snp.py
- pymummer/tests/alignment_test.py
- pymummer/tests/snp_test.py
- pymummer/tests/variant_test.py
- pymummer/variant.py
- setup.py


Changes:

=====================================
CHANGELOG.md
=====================================
@@ -0,0 +1,135 @@
+# Change Log
+
+## [Unreleased](https://github.com/sanger-pathogens/pymummer/tree/HEAD)
+
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.10.3...HEAD)
+
+**Merged pull requests:**
+
+- update README [\#29](https://github.com/sanger-pathogens/pymummer/pull/29) ([ssjunnebo](https://github.com/ssjunnebo))
+
+## [v0.10.3](https://github.com/sanger-pathogens/pymummer/tree/v0.10.3) (2017-08-21)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.10.2...v0.10.3)
+
+**Merged pull requests:**
+
+- Add diagfactor \(-d\) and maxgap \(-g\) options for nucmer [\#28](https://github.com/sanger-pathogens/pymummer/pull/28) ([Adamtaranto](https://github.com/Adamtaranto))
+- update LICENSE [\#27](https://github.com/sanger-pathogens/pymummer/pull/27) ([ssjunnebo](https://github.com/ssjunnebo))
+
+## [v0.10.2](https://github.com/sanger-pathogens/pymummer/tree/v0.10.2) (2017-02-02)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.10.1...v0.10.2)
+
+**Closed issues:**
+
+- MUMmer programs not found in path  [\#21](https://github.com/sanger-pathogens/pymummer/issues/21)
+
+**Merged pull requests:**
+
+- Ref qry translate vars not in matches [\#26](https://github.com/sanger-pathogens/pymummer/pull/26) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.10.1](https://github.com/sanger-pathogens/pymummer/tree/v0.10.1) (2016-11-18)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.10.0...v0.10.1)
+
+**Merged pull requests:**
+
+- Indels bug [\#25](https://github.com/sanger-pathogens/pymummer/pull/25) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.10.0](https://github.com/sanger-pathogens/pymummer/tree/v0.10.0) (2016-11-15)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.9.0...v0.10.0)
+
+**Merged pull requests:**
+
+- Show snps expose C option [\#24](https://github.com/sanger-pathogens/pymummer/pull/24) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.9.0](https://github.com/sanger-pathogens/pymummer/tree/v0.9.0) (2016-10-17)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.8.1...v0.9.0)
+
+**Merged pull requests:**
+
+- Expose mincluster [\#23](https://github.com/sanger-pathogens/pymummer/pull/23) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.8.1](https://github.com/sanger-pathogens/pymummer/tree/v0.8.1) (2016-08-23)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.8.0...v0.8.1)
+
+## [v0.8.0](https://github.com/sanger-pathogens/pymummer/tree/v0.8.0) (2016-08-23)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.7.1...v0.8.0)
+
+**Merged pull requests:**
+
+- Ref coords from qry coord [\#22](https://github.com/sanger-pathogens/pymummer/pull/22) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.7.1](https://github.com/sanger-pathogens/pymummer/tree/v0.7.1) (2016-04-18)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.7.0...v0.7.1)
+
+**Merged pull requests:**
+
+- Make  \_\_version\_\_  work [\#20](https://github.com/sanger-pathogens/pymummer/pull/20) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.7.0](https://github.com/sanger-pathogens/pymummer/tree/v0.7.0) (2016-02-09)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.6.1...v0.7.0)
+
+**Merged pull requests:**
+
+- Coords finding in matches [\#19](https://github.com/sanger-pathogens/pymummer/pull/19) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.6.1](https://github.com/sanger-pathogens/pymummer/tree/v0.6.1) (2015-10-19)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.6.0...v0.6.1)
+
+**Merged pull requests:**
+
+- Remove numpy dependency [\#18](https://github.com/sanger-pathogens/pymummer/pull/18) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.6.0](https://github.com/sanger-pathogens/pymummer/tree/v0.6.0) (2015-10-14)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.5.0...v0.6.0)
+
+**Merged pull requests:**
+
+- Convert to mspcrunch [\#17](https://github.com/sanger-pathogens/pymummer/pull/17) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.5.0](https://github.com/sanger-pathogens/pymummer/tree/v0.5.0) (2015-10-09)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.4.0...v0.5.0)
+
+**Merged pull requests:**
+
+- Msp crunch output [\#16](https://github.com/sanger-pathogens/pymummer/pull/16) ([martinghunt](https://github.com/martinghunt))
+- Add TravisCI support [\#15](https://github.com/sanger-pathogens/pymummer/pull/15) ([bewt85](https://github.com/bewt85))
+
+## [v0.4.0](https://github.com/sanger-pathogens/pymummer/tree/v0.4.0) (2015-05-28)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.3.0...v0.4.0)
+
+**Merged pull requests:**
+
+- Expose diagdiff to nucmer [\#14](https://github.com/sanger-pathogens/pymummer/pull/14) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.3.0](https://github.com/sanger-pathogens/pymummer/tree/v0.3.0) (2015-05-15)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.2.0...v0.3.0)
+
+## [v0.2.0](https://github.com/sanger-pathogens/pymummer/tree/v0.2.0) (2015-05-15)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.1.0...v0.2.0)
+
+**Merged pull requests:**
+
+- Reverse alignments [\#13](https://github.com/sanger-pathogens/pymummer/pull/13) ([martinghunt](https://github.com/martinghunt))
+- Fix constructing alignment from promer output [\#12](https://github.com/sanger-pathogens/pymummer/pull/12) ([martinghunt](https://github.com/martinghunt))
+- Add promer option; version bump [\#11](https://github.com/sanger-pathogens/pymummer/pull/11) ([martinghunt](https://github.com/martinghunt))
+
+## [v0.1.0](https://github.com/sanger-pathogens/pymummer/tree/v0.1.0) (2015-03-05)
+[Full Changelog](https://github.com/sanger-pathogens/pymummer/compare/v0.0.2...v0.1.0)
+
+**Merged pull requests:**
+
+- minor version number incremented [\#10](https://github.com/sanger-pathogens/pymummer/pull/10) ([nds](https://github.com/nds))
+- Added --nosimplify toggle to nucmer command [\#9](https://github.com/sanger-pathogens/pymummer/pull/9) ([nds](https://github.com/nds))
+
+## [v0.0.2](https://github.com/sanger-pathogens/pymummer/tree/v0.0.2) (2015-02-02)
+**Merged pull requests:**
+
+- Change to pyfastaq; add to pypi [\#8](https://github.com/sanger-pathogens/pymummer/pull/8) ([martinghunt](https://github.com/martinghunt))
+- put system call code in seprate module [\#7](https://github.com/sanger-pathogens/pymummer/pull/7) ([martinghunt](https://github.com/martinghunt))
+- Add snp\_file to list of modules [\#6](https://github.com/sanger-pathogens/pymummer/pull/6) ([martinghunt](https://github.com/martinghunt))
+- Added documentation in README file [\#5](https://github.com/sanger-pathogens/pymummer/pull/5) ([nds](https://github.com/nds))
+- Add variant calling [\#4](https://github.com/sanger-pathogens/pymummer/pull/4) ([martinghunt](https://github.com/martinghunt))
+- Added some doc lines [\#3](https://github.com/sanger-pathogens/pymummer/pull/3) ([nds](https://github.com/nds))
+- Split into separate files [\#2](https://github.com/sanger-pathogens/pymummer/pull/2) ([martinghunt](https://github.com/martinghunt))
+- Initial commit [\#1](https://github.com/sanger-pathogens/pymummer/pull/1) ([martinghunt](https://github.com/martinghunt))
+


=====================================
README.md
=====================================
@@ -1,51 +1,72 @@
-pymummer
-========
+# pymummer
 
 Python3 wrapper for running MUMmer and parsing the output. 
 
-[![Build Status](https://travis-ci.org/sanger-pathogens/pymummer.svg?branch=master)](https://travis-ci.org/sanger-pathogens/pymummer)
-
-Installation
-------------
-
-###Homebrew/LinuxBrew###
+[![Build Status](https://travis-ci.org/sanger-pathogens/pymummer.svg?branch=master)](https://travis-ci.org/sanger-pathogens/pymummer)   
+[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-brightgreen.svg)](https://github.com/sanger-pathogens/pymummer/blob/master/LICENSE)    
+[![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg?style=flat-square)](http://bioconda.github.io/recipes/pymummer/README.html)   
+[![Container ready](https://img.shields.io/badge/container-ready-brightgreen.svg)](https://quay.io/repository/biocontainers/pymummer)  
+
+## Contents
+  * [Introduction](#introduction)
+  * [Installation](#installation)
+    * [Required dependencies](#required-dependencies)
+    * [Homebrew/LinuxBrew](#homebrewlinuxbrew)
+    * [Using pip](#using-pip)
+    * [Running the tests](#running-the-tests)
+  * [Usage (for developers)](#usage-for-developers)
+    * [pymummer nucmer class](#pymummer-nucmer-class)
+    * [pymummer coords\_file class](#pymummer-coords_file-class)
+    * [pymummer alignment class](#pymummer-alignment-class)
+  * [License](#license)
+  * [Feedback/Issues](#feedbackissues)
+
+## Introduction
+Runs MUMmer and parses the output.
+
+## Installation
+pymummer has the following dependencies:
+
+### Required dependencies
+* [MUMmer](http://mummer.sourceforge.net/manual/#installation)
+
+There are a number of ways to install pymummer and details are provided below. If you encounter an issue when installing pymummer please contact your local system administrator. If you encounter a bug please log it [here](https://github.com/sanger-pathogens/pymummer/issues) or email us at path-help at sanger.ac.uk.
+
+### Homebrew/LinuxBrew
 ```
 brew tap homebrew/python
 brew install pymummer
 ```
 
-##Pip
-###Pre-requisites###
-
-The MUMmer package must be installed.
-Instructions to install MUMmer can be found [here](http://mummer.sourceforge.net/manual/#installation)
-		
-###Installation###
-
-Install with
-
-    pip3 install pymummer
+### Using pip
+```
+pip3 install pymummer
+```
+### Running the tests
+The test can be run from the top level directory: 
 
+```
+python setup.py test
+```
 
-Usage (for developers)
-----------------------
+## Usage (for developers)
 
 Example showing how pymummer can be used to run nucmer on a fasta file and parse the output file to produce a set of alignment objects:
-
-	from pymummer import coords_file, alignment, nucmer
-	...
-	runner = nucmer.Runner(reference_file, query_file, results_file) 
-	runner.run()
-	file_reader = coords_file.reader(results_file)
-	alignments = [coord for coord in file_reader if not coord.is_self_hit()] #Remove self hits
-	...
-
-###pymummer nucmer class###
+```
+from pymummer import coords_file, alignment, nucmer
+...
+runner = nucmer.Runner(reference_file, query_file, results_file) 
+runner.run()
+file_reader = coords_file.reader(results_file)
+alignments = [coord for coord in file_reader if not coord.is_self_hit()] #Remove self hits
+...
+```
+### pymummer nucmer class
 
 Wraps the `nucmer`, `delta-filter`, `show-coords` and `show-snps` commands. 
 
 Arguments:
-
+```
 __ref__			reference file  
 __query__			query file  
 __outfile__		output file  
@@ -56,26 +77,18 @@ __coords\_header__	print header in show-coords output (default True)
 __maxmatch__		maxmatch for nucmer (default False)  
 __show\_snps__		run show-snps (default False)  
 __snps\_header__ 	print header in show-snps output (default True)  
+```
 
-###pymummer promer class###
-
-[TODO]
-
-###pymummer coords_file class###
+### pymummer coords_file class
 
 Parses the nucmer output and populate an alignment object for each hit in the output
-
   
-###pymummer alignment class###
+### pymummer alignment class
 
 Check attributes of a hit, swap the reference and query, check if it's a self hit and so on
 
-Contact
--------
-
-Authors: Martin Hunt, Nishadi De Silva
-
-Affiliation: Wellcome Trust Sanger Institute, Hinxton, UK
+## License
+pymummer is free software, licensed under [GPLv3](https://github.com/sanger-pathogens/pymummer/blob/master/LICENSE).
 
-Email: path-help at sanger.ac.uk
-      
+## Feedback/Issues
+Please report any issues to the [issues page](https://github.com/sanger-pathogens/pymummer/issues) or email path-help at sanger.ac.uk.
\ No newline at end of file


=====================================
debian/changelog
=====================================
@@ -1,6 +1,19 @@
+python-pymummer (0.11.0-1) unstable; urgency=medium
+
+  * New upstream version
+  * Standards-Version: 4.5.0 (routine-update)
+  * debhelper-compat 13 (routine-update)
+  * Add salsa-ci file (routine-update)
+  * Rules-Requires-Root: no (routine-update)
+  * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository,
+    Repository-Browse. (routine-update)
+  * lintian complained about missing maintainer, added Andreas and myself
+  * removed egg.info files
+
+ -- Steffen Moeller <moeller at debian.org>  Wed, 10 Jun 2020 02:13:58 +0200
+
 python-pymummer (0.10.3-2) unstable; urgency=medium
 
-  * Team upload.
   * debhelper 11
   * Point Vcs fields to salsa.debian.org
   * Standards-Version: 4.3.0


=====================================
debian/compat deleted
=====================================
@@ -1 +0,0 @@
-11


=====================================
debian/control
=====================================
@@ -1,20 +1,22 @@
 Source: python-pymummer
 Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
+Uploaders: Steffen Moeller <moeller at debian.org>,
+           Andreas Tille <tille at debian.org>
 Section: python
 Testsuite: autopkgtest-pkg-python
 Priority: optional
-Build-Depends: debhelper (>= 11~),
+Build-Depends: debhelper-compat (= 13),
                dh-python,
                python3-all,
                python3-setuptools,
                fastaq (>=3.10.0),
                mummer,
-# Test-Depends:
-               python3-nose
-Standards-Version: 4.3.0
+               python3-nose <!nocheck>
+Standards-Version: 4.5.0
 Vcs-Browser: https://salsa.debian.org/med-team/python-pymummer
 Vcs-Git: https://salsa.debian.org/med-team/python-pymummer.git
 Homepage: https://github.com/sanger-pathogens/pymummer
+Rules-Requires-Root: no
 
 Package: python3-pymummer
 Architecture: all


=====================================
debian/copyright
=====================================
@@ -4,7 +4,8 @@ Upstream-Contact: Martin Hunt <path-help at sanger.ac.uk>
 Source: https://github.com/sanger-pathogens/pymummer
 
 Files: *
-Copyright: 2015-2016 Martin Hunt and Nishadi De Silva
+Copyright: 2015-2016 Martin Hunt <path-help at sanger.ac.uk>
+                     Nishadi De Silva
 License: GPL-3.0
 
 Files: debian/*


=====================================
debian/rules
=====================================
@@ -15,3 +15,7 @@ ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
 	PYBUILD_TEST_ARGS="{interpreter} setup.py test" \
 	  dh_auto_test
 endif
+
+override_dh_auto_clean:
+	rm -f pymummer.egg-info/PKG-INFO pymummer.egg-info/SOURCES.txt pymummer.egg-info/dependency_links.txt pymummer.egg-info/requires.txt pymummer.egg-info/top_level.txt
+	rm -rf .pybuild pymummer/tests/__pycache__ pymummer/__pycache__


=====================================
debian/salsa-ci.yml
=====================================
@@ -0,0 +1,4 @@
+---
+include:
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml


=====================================
debian/upstream/metadata
=====================================
@@ -1,5 +1,9 @@
+Bug-Database: https://github.com/sanger-pathogens/pymummer/issues
+Bug-Submit: https://github.com/sanger-pathogens/pymummer/issues/new
 Registry:
  - Name: conda:bioconda
    Entry: pymummer
  - Name: OMICtools
    Entry: NA
+Repository: https://github.com/sanger-pathogens/pymummer.git
+Repository-Browse: https://github.com/sanger-pathogens/pymummer


=====================================
pymummer/snp.py
=====================================
@@ -18,6 +18,7 @@ class Snp:
             self.qry_pos = int(l[3]) - 1
             self.ref_length = int(l[-6])
             self.qry_length = int(l[-5])
+            self.reverse = {'1': False, '-1': True}[l[-3]]
             self.ref_name = l[-2]
             self.qry_name = l[-1]
         except:
@@ -36,6 +37,7 @@ class Snp:
             self.qry_pos + 1,
             self.ref_length,
             self.qry_length,
+            '-1' if self.reverse else '1',
             self.ref_name,
             self.qry_name
         ]])


=====================================
pymummer/tests/alignment_test.py
=====================================
@@ -159,16 +159,16 @@ class TestNucmer(unittest.TestCase):
     def test_qry_coords_from_ref_coord_test_same_strand(self):
         '''Test qry_coords_from_ref_coord on same strand'''
         aln = alignment.Alignment('\t'.join(['100', '200', '1', '101', '100', '100', '100.00', '300', '300', '1', '1', 'ref', 'qry']))
-        snp0 = snp.Snp('\t'.join(['140', 'A', 'T', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # snp
+        snp0 = snp.Snp('\t'.join(['140', 'A', 'T', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # snp
         snp0 = variant.Variant(snp0)
-        snp1 = snp.Snp('\t'.join(['140', 'A', '.', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
-        snp2 = snp.Snp('\t'.join(['141', 'C', '.', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
+        snp1 = snp.Snp('\t'.join(['140', 'A', '.', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
+        snp2 = snp.Snp('\t'.join(['141', 'C', '.', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
         del1 = variant.Variant(snp1)
         del2 = variant.Variant(snp1)
         self.assertTrue(del2.update_indel(snp2))
-        snp3 = snp.Snp('\t'.join(['150', '.', 'A', '50', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
-        snp4 = snp.Snp('\t'.join(['150', '.', 'C', '51', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
-        snp5 = snp.Snp('\t'.join(['150', '.', 'G', '52', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
+        snp3 = snp.Snp('\t'.join(['150', '.', 'A', '50', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
+        snp4 = snp.Snp('\t'.join(['150', '.', 'C', '51', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
+        snp5 = snp.Snp('\t'.join(['150', '.', 'G', '52', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
         ins1 = variant.Variant(snp3)
         ins2 = variant.Variant(snp3)
         self.assertTrue(ins2.update_indel(snp4))
@@ -209,16 +209,16 @@ class TestNucmer(unittest.TestCase):
     def test_qry_coords_from_ref_coord_test_different_strand(self):
         '''Test qry_coords_from_ref_coord on different strand'''
         aln = alignment.Alignment('\t'.join(['100', '200', '101', '1', '100', '100', '100.00', '300', '300', '1', '1', 'ref', 'qry']))
-        snp0 = snp.Snp('\t'.join(['140', 'A', 'T', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # snp
+        snp0 = snp.Snp('\t'.join(['140', 'A', 'T', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # snp
         snp0 = variant.Variant(snp0)
-        snp1 = snp.Snp('\t'.join(['140', 'A', '.', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
-        snp2 = snp.Snp('\t'.join(['141', 'C', '.', '40', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
+        snp1 = snp.Snp('\t'.join(['140', 'A', '.', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
+        snp2 = snp.Snp('\t'.join(['141', 'C', '.', '40', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
         del1 = variant.Variant(snp1)
         del2 = variant.Variant(snp1)
         self.assertTrue(del2.update_indel(snp2))
-        snp3 = snp.Snp('\t'.join(['150', '.', 'A', '50', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
-        snp4 = snp.Snp('\t'.join(['150', '.', 'C', '51', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
-        snp5 = snp.Snp('\t'.join(['150', '.', 'G', '52', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
+        snp3 = snp.Snp('\t'.join(['150', '.', 'A', '50', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
+        snp4 = snp.Snp('\t'.join(['150', '.', 'C', '51', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
+        snp5 = snp.Snp('\t'.join(['150', '.', 'G', '52', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
         ins1 = variant.Variant(snp3)
         ins2 = variant.Variant(snp3)
         self.assertTrue(ins2.update_indel(snp4))
@@ -273,16 +273,16 @@ class TestNucmer(unittest.TestCase):
     def test_ref_coords_from_qry_coord_test_same_strand(self):
         '''Test ref_coords_from_qry_coord on same strand'''
         aln = alignment.Alignment('\t'.join(['1', '101', '100', '200', '100', '100', '100.00', '300', '300', '1', '1', 'ref', 'qry']))
-        snp0 = snp.Snp('\t'.join(['40', 'T', 'A', '140', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # snp
+        snp0 = snp.Snp('\t'.join(['40', 'T', 'A', '140', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # snp
         snp0 = variant.Variant(snp0)
-        snp1 = snp.Snp('\t'.join(['40', '.', 'A', '140', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
-        snp2 = snp.Snp('\t'.join(['40', '.', 'C', '141', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from ref
+        snp1 = snp.Snp('\t'.join(['40', '.', 'A', '140', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
+        snp2 = snp.Snp('\t'.join(['40', '.', 'C', '141', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from ref
         del1 = variant.Variant(snp1)
         del2 = variant.Variant(snp1)
         self.assertTrue(del2.update_indel(snp2))
-        snp3 = snp.Snp('\t'.join(['50', 'A', '.', '150', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
-        snp4 = snp.Snp('\t'.join(['51', 'C', '.', '150', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
-        snp5 = snp.Snp('\t'.join(['52', 'G', '.', '150', 'x', 'x', '300', '300', 'x', 'x', 'ref', 'qry'])) # del from qry
+        snp3 = snp.Snp('\t'.join(['50', 'A', '.', '150', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
+        snp4 = snp.Snp('\t'.join(['51', 'C', '.', '150', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
+        snp5 = snp.Snp('\t'.join(['52', 'G', '.', '150', 'x', 'x', '300', '300', 'x', '1', 'ref', 'qry'])) # del from qry
         ins1 = variant.Variant(snp3)
         ins2 = variant.Variant(snp3)
         self.assertTrue(ins2.update_indel(snp4))


=====================================
pymummer/tests/snp_test.py
=====================================
@@ -12,13 +12,13 @@ class TestSnp(unittest.TestCase):
         '''Test __str__ with format with no -C option'''
         l_in = ['187', 'A', 'C', '269', '187', '187', '654', '853', '1', '1', 'ref_name', 'qry_name']
         s = snp.Snp('\t'.join(l_in))
-        expected = '\t'.join(['187', 'A', 'C', '269', '654', '853', 'ref_name', 'qry_name'])
+        expected = '\t'.join(['187', 'A', 'C', '269', '654', '853', '1', 'ref_name', 'qry_name'])
         self.assertEqual(str(s), expected)
 
 
     def test_str_with_c_option(self):
         '''Test __str__ with format with -C option'''
-        l_in = ['187', 'A', 'C', '269', '187', '187', '0', '0', '654', '853', '1', '1', 'ref_name', 'qry_name']
+        l_in = ['187', 'A', 'C', '269', '187', '187', '0', '0', '654', '853', '1', '-1', 'ref_name', 'qry_name']
         s = snp.Snp('\t'.join(l_in))
-        expected = '\t'.join(['187', 'A', 'C', '269', '654', '853', 'ref_name', 'qry_name'])
+        expected = '\t'.join(['187', 'A', 'C', '269', '654', '853', '-1', 'ref_name', 'qry_name'])
         self.assertEqual(str(s), expected)


=====================================
pymummer/tests/variant_test.py
=====================================
@@ -25,33 +25,33 @@ class TestVariant(unittest.TestCase):
     def test_update_indel_no_change(self):
         '''Test update_indel does nothing in the right cases'''
         initial_vars = [
-            snp.Snp('\t'.join(['42', 'A', 'C', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', 'C', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', 'C', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', 'C', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
         ]
 
         to_add = [
-            snp.Snp('\t'.join(['142', 'A', '.', '1000', 'x', 'x', '2000', '3000', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['142', '.', 'A', '1000', 'x', 'x', '2000', '3000', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['43', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref2', 'qry'])),
-            snp.Snp('\t'.join(['43', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry2'])),
-            snp.Snp('\t'.join(['44', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref2', 'qry'])),
-            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry2'])),
-            snp.Snp('\t'.join(['44', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
-            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['142', 'A', '.', '1000', 'x', 'x', '2000', '3000', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['142', '.', 'A', '1000', 'x', 'x', '2000', '3000', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['43', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref2', 'qry'])),
+            snp.Snp('\t'.join(['43', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry2'])),
+            snp.Snp('\t'.join(['44', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref2', 'qry'])),
+            snp.Snp('\t'.join(['43', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry2'])),
+            snp.Snp('\t'.join(['44', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
+            snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])),
         ]
 
         assert len(initial_vars) == len(to_add)
@@ -64,8 +64,8 @@ class TestVariant(unittest.TestCase):
 
     def test_update_indel_insertion(self):
         '''Test update_indel extends insertions correctly'''
-        insertion = variant.Variant(snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])))
-        to_add = snp.Snp('\t'.join(['42', '.', 'C', '101', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry']))
+        insertion = variant.Variant(snp.Snp('\t'.join(['42', '.', 'A', '100', 'x', 'x', '300', '400', 'x', '-1', 'ref', 'qry'])))
+        to_add = snp.Snp('\t'.join(['42', '.', 'C', '101', 'x', 'x', '300', '400', 'x', '-1', 'ref', 'qry']))
         expected = copy.copy(insertion)
         # coords stored zero-based, so subtract 1 from the real expected coords
         expected.ref_start = 41
@@ -84,8 +84,8 @@ class TestVariant(unittest.TestCase):
 
     def test_update_indel_deletion(self):
         '''Test update_indel extends deletions correctly'''
-        deletion = variant.Variant(snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry'])))
-        to_add = snp.Snp('\t'.join(['43', 'C', '.', '100', 'x', 'x', '300', '400', 'x', 'x', 'ref', 'qry']))
+        deletion = variant.Variant(snp.Snp('\t'.join(['42', 'A', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry'])))
+        to_add = snp.Snp('\t'.join(['43', 'C', '.', '100', 'x', 'x', '300', '400', 'x', '1', 'ref', 'qry']))
         expected = copy.copy(deletion)
         # coords stored zero-based, so subtract 1 from the real expected coords
         expected.ref_start = 41


=====================================
pymummer/variant.py
=====================================
@@ -37,6 +37,7 @@ class Variant:
         self.qry_end = snp.qry_pos
         self.qry_length = snp.qry_length
         self.qry_name = snp.qry_name
+        self.reverse = snp.reverse
 
 
     def __eq__(self, other):
@@ -54,7 +55,8 @@ class Variant:
             str(self.qry_end + 1),
             str(self.qry_length),
             str(self.qry_name),
-            self.qry_base
+            self.qry_base,
+            '-1' if self.reverse else '1',
         ])
 
     def update_indel(self, nucmer_snp):
@@ -63,7 +65,8 @@ class Variant:
         if self.var_type not in [INS, DEL] \
           or self.var_type != new_variant.var_type \
           or self.qry_name != new_variant.qry_name \
-          or self.ref_name != new_variant.ref_name:
+          or self.ref_name != new_variant.ref_name \
+          or self.reverse != new_variant.reverse:
             return False
         if self.var_type == INS \
           and self.ref_start == new_variant.ref_start \


=====================================
setup.py
=====================================
@@ -26,7 +26,7 @@ if not found_all_progs:
 
 setup(
     name='pymummer',
-    version='0.10.3',
+    version='0.11.0',
     description='Wrapper for MUMmer',
     packages = find_packages(),
     author='Martin Hunt, Nishadi De Silva',



View it on GitLab: https://salsa.debian.org/med-team/python-pymummer/-/compare/54f18bdd1b926de20dfa5860d032ea981814e633...c4e04802de0d52163d12428fdcd172c84859c4b9

-- 
View it on GitLab: https://salsa.debian.org/med-team/python-pymummer/-/compare/54f18bdd1b926de20dfa5860d032ea981814e633...c4e04802de0d52163d12428fdcd172c84859c4b9
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20200610/da6dd951/attachment-0001.html>


More information about the debian-med-commit mailing list