Author: tille
Date: 2015-05-07 08:08:36 +0000 (Thu, 07 May 2015)
New Revision: 19148

Added:
   trunk/packages/microbegps/trunk/debian/patches/
   trunk/packages/microbegps/trunk/debian/patches/2to3.patch
   trunk/packages/microbegps/trunk/debian/patches/series
Modified:
   trunk/packages/microbegps/trunk/debian/control
   trunk/packages/microbegps/trunk/debian/rules
Log:
use 2to3 to port to Python3 - seems to be successful


Modified: trunk/packages/microbegps/trunk/debian/control
===================================================================
--- trunk/packages/microbegps/trunk/debian/control      2015-05-07 07:15:35 UTC 
(rev 19147)
+++ trunk/packages/microbegps/trunk/debian/control      2015-05-07 08:08:36 UTC 
(rev 19148)
@@ -5,9 +5,9 @@
 Uploaders: Andreas Tille <[email protected]>
 Build-Depends: debhelper (>= 9),
                dh-python,
-               python,
-               python-setuptools,
-               python-qt4
+               python3,
+               python3-setuptools,
+               python3-pyqt4
 Standards-Version: 3.9.6
 Vcs-Browser: 
http://anonscm.debian.org/viewvc/debian-med/trunk/packages/microbegps/trunk/
 Vcs-Svn: svn://anonscm.debian.org/debian-med/trunk/packages/microbegps/trunk/
@@ -16,9 +16,9 @@
 Package: microbegps
 Architecture: any
 Depends: ${misc:Depends},
-         ${python:Depends},
-         python-matplotlib-venn,
-         python-qt4
+         ${python3:Depends},
+         python3-matplotlib-venn,
+         python3-pyqt4
 Description: Explorative Taxonomic Profiling Tool for Metagenomic Data
  MicrobeGPS is a bioinformatics tool for the analysis of metagenomic
  sequencing data. The goal is to profile the composition of metagenomic

Added: trunk/packages/microbegps/trunk/debian/patches/2to3.patch
===================================================================
--- trunk/packages/microbegps/trunk/debian/patches/2to3.patch                   
        (rev 0)
+++ trunk/packages/microbegps/trunk/debian/patches/2to3.patch   2015-05-07 
08:08:36 UTC (rev 19148)
@@ -0,0 +1,558 @@
+Author: Andreas Tille <[email protected]>
+Last-Update: Wed, 06 May 2015 15:53:45 +0200
+Description: Patch created by 2to3 to run with Python3
+
+--- a/microbegps/gps.py
++++ b/microbegps/gps.py
+@@ -5,11 +5,11 @@ Analysis tools used by MicrobeGPS
+ 
+ import glob
+ import numpy as np
+-import valcov
++from . import valcov
+ import re
+ import os
+ import gzip
+-import taxonomy
++from . import taxonomy
+ 
+ class MappedRead:
+       def __init__(self):
+@@ -203,7 +203,7 @@ def filter_raw(target_table,read_table,m
+                       if lrt > max_matches:
+                               del_reads.append(mp)
+                       if lrt == 1:
+-                              
target_table[iter(read_table[mp].matches).next()].unique += 1
++                              
target_table[next(iter(read_table[mp].matches))].unique += 1
+                               unique_reads += 1
+       for d in del_reads:
+               for gn in read_table[d].matches:
+@@ -291,15 +291,15 @@ def get_reference_table(target_table, re
+ 
+       # calculate simple metrics over references
+       for r in ref_table:
+-              lengths = [x.length for x in ref_table[r].targets.itervalues()]
+-              homog = [x.cov_homog for x in ref_table[r].targets.itervalues()]
+-              qual = [x.map_qual for x in ref_table[r].targets.itervalues()]
+-              unique = sum([x.unique for x in 
ref_table[r].targets.itervalues()])
++              lengths = [x.length for x in ref_table[r].targets.values()]
++              homog = [x.cov_homog for x in ref_table[r].targets.values()]
++              qual = [x.map_qual for x in ref_table[r].targets.values()]
++              unique = sum([x.unique for x in ref_table[r].targets.values()])
+               t_len = float(sum(lengths))
+               
+               readnames = set()
+-              for t in ref_table[r].targets.itervalues():
+-                      readnames.update(t.reads.iterkeys())
++              for t in ref_table[r].targets.values():
++                      readnames.update(iter(t.reads.keys()))
+               reads = len(readnames)
+               
+               t_homog = 0.
+@@ -353,15 +353,15 @@ def get_reference_table_NCBI(target_tabl
+ 
+       # calculate simple metrics over references
+       for r in ref_table:
+-              lengths = [x.length for x in ref_table[r].targets.itervalues()]
+-              homog = [x.cov_homog for x in ref_table[r].targets.itervalues()]
+-              qual = [x.map_qual for x in ref_table[r].targets.itervalues()]
+-              unique = sum([x.unique for x in 
ref_table[r].targets.itervalues()])
++              lengths = [x.length for x in ref_table[r].targets.values()]
++              homog = [x.cov_homog for x in ref_table[r].targets.values()]
++              qual = [x.map_qual for x in ref_table[r].targets.values()]
++              unique = sum([x.unique for x in ref_table[r].targets.values()])
+               t_len = float(sum(lengths))
+               
+               readnames = set()
+-              for t in ref_table[r].targets.itervalues():
+-                      readnames.update(t.reads.iterkeys())
++              for t in ref_table[r].targets.values():
++                      readnames.update(iter(t.reads.keys()))
+               reads = len(readnames)
+               
+               t_homog = 0.
+@@ -402,9 +402,9 @@ def filter_ref_table(ref_table,read_tabl
+       pr('--- Updating Unique Reads information.')
+       for rf in ref_table:
+               ref_table[rf].unique = 0
+-      for rd in read_table.itervalues():
++      for rd in read_table.values():
+               if len(rd.matches) == 1:
+-                      ref_table[iter(rd.matches).next()].unique += 1
++                      ref_table[next(iter(rd.matches))].unique += 1
+                               
+ 
+ 
+@@ -491,7 +491,7 @@ def create_groups(usrmat, thr=0.1, statu
+               shared = 
{gr:np.sum(np.logical_and(groups[gr].usrreads,usrmat[:,i])) for gr in groups}
+               sig = {gr:shared[gr] for gr in shared if shared[gr]>mapped*thr}
+               N = len(sig)
+-              print "Current reference:",i," Number of groups:",N
++              print("Current reference:",i," Number of groups:",N)
+               if N == 0:
+                       # no significant similarity to existing group --> 
create new group
+                       gr = Group()
+@@ -501,16 +501,16 @@ def create_groups(usrmat, thr=0.1, statu
+                       groups[grID] = gr
+               elif N == 1:
+                       # significant similarity with exactly 1 group --> 
assign to that group
+-                      grID = sig.keys()[0]
++                      grID = list(sig.keys())[0]
+                       groups[grID].members.append(i)
+                       groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,usrmat[:,i])
+               else:
+                       # significant similarity with > 1 groups: assign to 
first group
+-                      grID = sig.keys()[0]
++                      grID = list(sig.keys())[0]
+                       groups[grID].members.append(i)
+                       groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,usrmat[:,i])
+                       # ... and add other groups
+-                      for otherID in sig.keys()[1:]:
++                      for otherID in list(sig.keys())[1:]:
+                               for m in groups[otherID].members:
+                                       groups[grID].members.append(m)
+                               groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,groups[otherID].usrreads)
+@@ -530,7 +530,7 @@ def create_groups_2(usrmat, allmat, thr=
+       
+       for i in range(rfs):
+               if status: status('--- Grouping reference %i of %i'%(i+1,rfs))
+-              print "Current reference:",i," Number of groups:",len(groups)
++              print("Current reference:",i," Number of groups:",len(groups))
+               sig = dict()
+ 
+               usr_reads = np.sum(usrmat[:,i])
+@@ -558,13 +558,13 @@ def create_groups_2(usrmat, allmat, thr=
+                       groups[grID] = gr
+               elif N == 1:
+                       # significant similarity with exactly 1 group --> 
assign to that group
+-                      grID = sig.keys()[0]
++                      grID = list(sig.keys())[0]
+                       groups[grID].members.append(i)
+                       groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,usrmat[:,i])
+                       groups[grID].allreads = 
np.logical_or(groups[grID].allreads,allmat[:,i])
+               else:
+                       # significant similarity with > 1 groups: assign to 
best group
+-                      grID = sig.keys()[np.argmax(sig.values())]
++                      grID = list(sig.keys())[np.argmax(list(sig.values()))]
+                       groups[grID].members.append(i)
+                       groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,usrmat[:,i])
+                       groups[grID].allreads = 
np.logical_or(groups[grID].allreads,allmat[:,i])
+@@ -588,7 +588,7 @@ def create_groups_dc(usrmat, allmat, n2i
+               item = level1.setdefault(name[0:3], list())
+               item.append(n2i[name])
+       level2 = dict()
+-      for b,bucket in enumerate(level1.itervalues()):
++      for b,bucket in enumerate(level1.values()):
+               l1_groups = dict()
+               for i in bucket:
+                       sig = dict()
+@@ -618,7 +618,7 @@ def create_groups_dc(usrmat, allmat, n2i
+                               l1_groups[l1ID] = gr
+                       else:
+                               # significant similarity with > 1 groups: 
assign to best group
+-                              l1ID = sig.keys()[np.argmax(sig.values())]
++                              l1ID = 
list(sig.keys())[np.argmax(list(sig.values()))]
+                               l1_groups[l1ID].members.append(i)
+                               l1_groups[l1ID].usrreads = 
np.logical_or(l1_groups[l1ID].usrreads,usrmat[:,i])
+                               l1_groups[l1ID].allreads = 
np.logical_or(l1_groups[l1ID].allreads,allmat[:,i])          
+@@ -650,7 +650,7 @@ def create_groups_dc(usrmat, allmat, n2i
+                       groups[grID] = level2[l1ID]
+               else:
+                       # significant similarity with > 1 groups: assign to 
best group
+-                      grID = sig.keys()[np.argmax(sig.values())]
++                      grID = list(sig.keys())[np.argmax(list(sig.values()))]
+                       groups[grID].members.extend(level2[l1ID].members)
+                       groups[grID].usrreads = 
np.logical_or(groups[grID].usrreads,level2[l1ID].usrreads)
+                       groups[grID].allreads = 
np.logical_or(groups[grID].allreads,level2[l1ID].allreads)
+@@ -671,19 +671,19 @@ def enrich_groups(groups,references,read
+               for m in groups[g]:
+                       egroups[g].members[i2n[m]] = references[i2n[m]]
+                       for t in references[i2n[m]].targets:
+-                              
readnames.update(references[i2n[m]].targets[t].reads.iterkeys())
++                              
readnames.update(iter(references[i2n[m]].targets[t].reads.keys()))
+                       t_len += float(references[i2n[m]].length)
+               
+               egroups[g].reads = len(readnames)
+-              egroups[g].max_val = max([m.validity for m in 
egroups[g].members.itervalues()])
+-              egroups[g].cov = sum([m.coverage*m.length/t_len for m in 
egroups[g].members.itervalues()])
+-              egroups[g].cov_homog = sum([m.cov_homog*m.length/t_len for m in 
egroups[g].members.itervalues()])
+-              egroups[g].map_qual = sum([m.map_qual*m.length/t_len for m in 
egroups[g].members.itervalues()])
++              egroups[g].max_val = max([m.validity for m in 
egroups[g].members.values()])
++              egroups[g].cov = sum([m.coverage*m.length/t_len for m in 
egroups[g].members.values()])
++              egroups[g].cov_homog = sum([m.cov_homog*m.length/t_len for m in 
egroups[g].members.values()])
++              egroups[g].map_qual = sum([m.map_qual*m.length/t_len for m in 
egroups[g].members.values()])
+               
+               # count the group-unique reads, i.e. reads mapping only to that 
group
+               group_unique = set()
+-              for mbm in egroups[g].members.itervalues():
+-                      for trg in mbm.targets.itervalues():
++              for mbm in egroups[g].members.values():
++                      for trg in mbm.targets.values():
+                               for rd in trg.reads:
+                                       if rd in group_unique:
+                                               continue
+--- a/microbegps/gui.py
++++ b/microbegps/gui.py
+@@ -7,7 +7,7 @@ import sys, math
+ import pkgutil
+ import pkg_resources
+ import threading
+-import cPickle
++import pickle
+ 
+ from PyQt4 import QtGui, QtCore
+ 
+@@ -19,11 +19,11 @@ import matplotlib_venn as venn
+ try:
+       import microbegps.gps as gps
+ except ImportError:
+-      import gps
+-import taxonomy
+-import modules
++      from . import gps
++from . import taxonomy
++from . import modules
+ 
+-from __version__ import __version__,__url__
++from .__version__ import __version__,__url__
+ 
+ 
+ #from gui.help_texts import HelpTexts as HelpTexts
+@@ -531,7 +531,7 @@ class Pipeline(QtGui.QWidget):
+ 
+                               from multiprocessing.pool import ThreadPool
+                               pool = ThreadPool(5)
+-                              
pool.map(gps.calculate_valcov_one,p.ref_table.itervalues())
++                              
pool.map(gps.calculate_valcov_one,iter(p.ref_table.values()))
+                               pool.close()
+                               
+                               
+@@ -714,7 +714,7 @@ class Pipeline(QtGui.QWidget):
+                       try:
+                               from multiprocessing.pool import ThreadPool
+                               pool = ThreadPool(5)
+-                              
pool.map(gps.calculate_valcov_one,ref_table.itervalues())
++                              
pool.map(gps.calculate_valcov_one,iter(ref_table.values()))
+                               pool.close()
+                               #GpsTools.calculate_valcov(p.ref_table,printer)
+                               def custom_filt2(ref):
+@@ -892,7 +892,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                               self.pr('<b><font color="DarkRed">Failed 
loading module %s</font></b><br>Message: <i>%s</i>'%(mod_name,e.message))       
               
+               self.modules = modules_d
+               if len(self.modules) > 0:
+-                      self.pr('Loaded modules: <i>%s</i>'%(', 
'.join(self.modules.iterkeys())))
++                      self.pr('Loaded modules: <i>%s</i>'%(', 
'.join(iter(self.modules.keys()))))
+ 
+       def initUI(self):
+               self.pipelineGui = Pipeline(self)
+@@ -1123,7 +1123,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                       # Create entry for the group
+                       n_mem = len(grp.members)
+                       # find a suitable name. Try to use LCA of all 
supporting references.
+-                      taxids = [ref.name for ref in grp.members.itervalues()]
++                      taxids = [ref.name for ref in grp.members.values()]
+                       cand_name = 
taxonomy.find_lowest_common_ancestor_name(taxids, self.taxonomy_nodes, 
self.taxonomy_names)
+                       if not cand_name:
+                               #  find member with most unique reads -> use as 
representative
+@@ -1229,7 +1229,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                               self.pr("Collecting all reads for 
"+ref_name,False)
+                               # collect all read names
+                               reads = dict()
+-                              for trg in 
self.references[ref_name].targets.itervalues():
++                              for trg in 
self.references[ref_name].targets.values():
+                                       for rd in trg.reads:
+                                               reads[rd] = trg.reads[rd][2]
+                               for rd in reads:
+@@ -1244,7 +1244,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                               self.pr("Collecting all unique reads for 
"+ref_name,False)
+                               # collect all read names
+                               reads = dict()
+-                              for trg in 
self.references[ref_name].targets.itervalues():
++                              for trg in 
self.references[ref_name].targets.values():
+                                       for rd in trg.reads:
+                                               if 
len(self.reads[str(rd)].matches) == 1:
+                                                       reads[rd] = 
trg.reads[rd][2]
+@@ -1259,7 +1259,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                               self.pr("Collecting all matches of read 
"+rd_name,False)
+                               for mtc in self.reads[rd_name].matches:
+                                       map_qual = 1
+-                                      for trg in 
self.references[mtc].targets.itervalues():
++                                      for trg in 
self.references[mtc].targets.values():
+                                               if rd_name in trg.reads:
+                                                       map_qual = 
trg.reads[rd_name][2]
+                                                       break
+@@ -1284,7 +1284,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                               self.pr("Collecting all genomes sharing reads 
with "+ref_name,False)
+                               group_id = self.ref2group[ref_name]
+                               related = dict()
+-                              for trg in 
self.references[ref_name].targets.itervalues():
++                              for trg in 
self.references[ref_name].targets.values():
+                                       for rd in trg.reads:
+                                               for mtc in 
self.reads[rd].matches:
+                                                       if self.ref2group[mtc] 
!= group_id:
+@@ -1333,7 +1333,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                       quals = []
+                                       uquals = []
+                                       name = str(item.text(0))
+-                                      for trg in 
self.references[name].targets.itervalues():
++                                      for trg in 
self.references[name].targets.values():
+                                               for rd in trg.reads:
+                                                       if 
len(self.reads[rd].matches) == 1:
+                                                               
uquals.append(trg.reads[rd][2])
+@@ -1356,7 +1356,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                       quals = []
+                                       uquals = []
+                                       name = str(item.parent().text(0))
+-                                      for trg in 
self.references[name].targets.itervalues():
++                                      for trg in 
self.references[name].targets.values():
+                                               for rd in trg.reads:
+                                                       if 
len(self.reads[rd].matches) == 1:
+                                                               
uquals.append(trg.reads[rd][2])
+@@ -1461,7 +1461,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                       name = str(item.text(0))
+                                       taxid = self.references[name].name
+                                       reads[taxid] = set()
+-                                      for trg in 
self.references[name].targets.itervalues():
++                                      for trg in 
self.references[name].targets.values():
+                                               reads[taxid].update(trg.reads) 
# add all read names to the set
+                               elif item.i_type == "candidate":
+                                       for ref in range(item.childCount()):
+@@ -1470,10 +1470,10 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                               taxid = 
self.references[name].name
+                                               if not taxid in reads:
+                                                       reads[taxid] = set()
+-                                                      for trg in 
self.references[name].targets.itervalues():
++                                                      for trg in 
self.references[name].targets.values():
+                                                               
reads[taxid].update(trg.reads) # add all read names to the set
+                       # build the lineage of every taxid
+-                      taxids = reads.keys()
++                      taxids = list(reads.keys())
+                       for taxid in taxids:
+                               lineage = [taxid]
+                               while True:
+@@ -1490,7 +1490,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+ 
+               if self.enablePlottingBox.isChecked():
+                       # now color the tree
+-                      for taxid,item in self.taxid_to_item.iteritems():
++                      for taxid,item in self.taxid_to_item.items():
+                               if not taxid == 1:
+                                       
item.setBackground(0,QtGui.QBrush(QtGui.QColor(255,255,255)))
+                                       item.setText(1,'')
+@@ -1515,11 +1515,11 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                       nm1 = str(sel_items[0].text(0))
+                                       nm2 = str(sel_items[1].text(0))
+                                       reads1 = set()
+-                                      for t in 
self.references[nm1].targets.itervalues():
+-                                              reads1.update(t.reads.keys())
++                                      for t in 
self.references[nm1].targets.values():
++                                              
reads1.update(list(t.reads.keys()))
+                                       reads2 = set()
+-                                      for t in 
self.references[nm2].targets.itervalues():
+-                                              reads2.update(t.reads.keys())
++                                      for t in 
self.references[nm2].targets.values():
++                                              
reads2.update(list(t.reads.keys()))
+                                       nreads1 = len(reads1)
+                                       nreads2 = len(reads2)
+                                       shared = 
len(reads1.intersection(reads2))
+@@ -1536,14 +1536,14 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                       nm2 = str(sel_items[1].text(0))
+                                       nm3 = str(sel_items[2].text(0))
+                                       reads1 = set()
+-                                      for t in 
self.references[nm1].targets.itervalues():
+-                                              reads1.update(t.reads.keys())
++                                      for t in 
self.references[nm1].targets.values():
++                                              
reads1.update(list(t.reads.keys()))
+                                       reads2 = set()
+-                                      for t in 
self.references[nm2].targets.itervalues():
+-                                              reads2.update(t.reads.keys())
++                                      for t in 
self.references[nm2].targets.values():
++                                              
reads2.update(list(t.reads.keys()))
+                                       reads3 = set()
+-                                      for t in 
self.references[nm3].targets.itervalues():
+-                                              reads3.update(t.reads.keys())
++                                      for t in 
self.references[nm3].targets.values():
++                                              
reads3.update(list(t.reads.keys()))
+                                       reg100 = 
len(reads1.difference(reads2).difference(reads3))
+                                       reg010 = 
len(reads2.difference(reads1).difference(reads3))
+                                       reg110 = 
len(reads1.intersection(reads2).difference(reads3))
+@@ -1629,7 +1629,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                                                       'reads':self.reads,
+                                                       
'settings_pipeline':self.settings_pipeline,
+                                                       
'settings_analyzer':self.settings_analyzer}
+-                                      
cPickle.dump(s_data,open(fname,'wb'),protocol=-1)
++                                      
pickle.dump(s_data,open(fname,'wb'),protocol=-1)
+                               except Exception as e:
+                                       self.pr('Error while saving file: 
'+e.message)
+                                       raise
+@@ -1648,7 +1648,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
+                       self.pr("Attention: this may take a while!")
+                       def loadthisfile():
+                               try:
+-                                      settings = 
cPickle.load(open(fname,'rb'))
++                                      settings = pickle.load(open(fname,'rb'))
+                                       assert type(settings) == dict
+                                       try:
+                                               sgroups = settings['candidates']
+--- a/microbegps/__init__.py
++++ b/microbegps/__init__.py
+@@ -1,3 +1,3 @@
+-from __version__ import __version__,__url__
++from .__version__ import __version__,__url__
+ #__version__='1.0.0'
+ #__url__='https://sourceforge.net/p/microbegps'
+\ No newline at end of file
+--- a/microbegps/modules/composition_analysis.py
++++ b/microbegps/modules/composition_analysis.py
+@@ -79,15 +79,15 @@ class GPSModule:
+               
+               # collect all read names for each reference
+               self.reads = dict()
+-              for ref in self.GPS.references.itervalues():
++              for ref in self.GPS.references.values():
+                       taxid = ref.name
+                       self.reads[taxid] = set()
+-                      for trg in ref.targets.itervalues():
++                      for trg in ref.targets.values():
+                               self.reads[taxid].update(trg.reads) # add all 
read names to the set
+                               
+               self.rank_tids = dict() # set of TaxIDs for a specific rank
+               # calculate the read sets at the higher taxonomic ranks
+-              for taxid in self.reads.keys():
++              for taxid in list(self.reads.keys()):
+                       # trace the lineage of each taxid and propagate the 
reads to the higher ranks
+                       lineage = [taxid]
+                       while True:
+@@ -104,7 +104,7 @@ class GPSModule:
+               
+               # we are done with the analysis. Fill the Combo Box widgets 
accordingly
+               self.taxRankBox.clear()
+-              self.taxRankBox.addItems(self.rank_tids.keys())
++              self.taxRankBox.addItems(list(self.rank_tids.keys()))
+               self.taxRankBox.setEnabled(True)
+               self.taxGroupBox.setEnabled(True)
+               self.getFromTree.setEnabled(True)
+@@ -128,7 +128,7 @@ class GPSModule:
+               if currentItem < 0:
+                       return
+               taxon = str(self.taxGroupBox.currentText())
+-              children = [tid for tid in self.reads.keys() if 
self.GPS.taxonomy_names.get(self.GPS.taxonomy_nodes.get(tid))==taxon]
++              children = [tid for tid in list(self.reads.keys()) if 
self.GPS.taxonomy_names.get(self.GPS.taxonomy_nodes.get(tid))==taxon]
+               self.taxSelectedText.setText('Found %i taxa below 
%s'%(len(children),taxon))
+               self.selectedTaxa = children
+               self.selectedParent = taxon
+@@ -138,7 +138,7 @@ class GPSModule:
+                       return
+               self.GPS.graphicsTab.setCurrentIndex(1)
+               taxon = self.GPS.phyloTreeWidget.currentItem().text(0)
+-              children = [tid for tid in self.reads.keys() if 
self.GPS.taxonomy_names.get(self.GPS.taxonomy_nodes.get(tid))==taxon]
++              children = [tid for tid in list(self.reads.keys()) if 
self.GPS.taxonomy_names.get(self.GPS.taxonomy_nodes.get(tid))==taxon]
+               self.taxSelectedText.setText('Found %i taxa below 
%s'%(len(children),taxon))
+               self.selectedTaxa = children
+               self.selectedParent = taxon
+@@ -148,7 +148,7 @@ class GPSModule:
+                       return
+               tax_names = [self.GPS.taxonomy_names.get(tid,tid) for tid in 
self.selectedTaxa]
+               tax_abundances = [len(self.reads[tid]) for tid in 
self.selectedTaxa]
+-              sort_order = sorted(range(len(tax_abundances)), 
key=tax_abundances.__getitem__)[::-1]
++              sort_order = sorted(list(range(len(tax_abundances))), 
key=tax_abundances.__getitem__)[::-1]
+               tax_names = [tax_names[i] for i in sort_order]
+               for i in range(7,len(tax_names)):
+                       tax_names[i] = ''
+--- a/microbegps/modules/export_table.py
++++ b/microbegps/modules/export_table.py
+@@ -98,7 +98,7 @@ class GPSModule:
+                       ofile.write(str(i+1))
+                       
+                       # Candidate name: Try to use LCA of all supporting 
references.
+-                      taxids = [ref.name for ref in grp.members.itervalues()]
++                      taxids = [ref.name for ref in grp.members.values()]
+                       cand_name = 
taxonomy.find_lowest_common_ancestor_name(taxids, self.GPS.taxonomy_nodes, 
self.GPS.taxonomy_names)
+                       if not cand_name:
+                               #  find member with most unique reads -> use as 
representative
+--- a/microbegps/taxonomy.py
++++ b/microbegps/taxonomy.py
+@@ -14,7 +14,7 @@ def parse_nodes_dmp(node_file):
+       for line in node_file:
+               fields = line.rstrip('\t|\n').split('\t|\t')
+               if len(fields) < 4:
+-                      print 'skipped line',line
++                      print('skipped line',line)
+                       continue
+               taxid = int(fields[0])
+               parent_id = int(fields[1])
+@@ -30,7 +30,7 @@ def parse_names_dmp(names_file):
+       for line in names_file:
+               fields = line.rstrip('\t|\n').split('\t|\t')
+               if len(fields) != 4:
+-                      print 'skipped line',line
++                      print('skipped line',line)
+                       continue
+               taxid = int(fields[0])
+               name = fields[1]
+@@ -123,7 +123,7 @@ def candidates_to_LCA_tree(groups, nodes
+       num_reads = []
+       for grp in groups:
+               # collect all taxids
+-              taxids = [m.name for m in grp.members.itervalues()]
++              taxids = [m.name for m in grp.members.values()]
+               lca = find_lowest_common_ancestor(taxids, nodes)
+               if lca:
+                       lca_list.append(lca)
+--- a/microbegps/valcov.py
++++ b/microbegps/valcov.py
+@@ -123,9 +123,9 @@ class NBinom(Distribution):
+                                                                 maxiter=10000)
+                               self._p2 = (self._p1)/(self._p1+mean)
+                       except:
+-                              print "Warning: MLE for negative binomial 
failed. Using MOM."
++                              print("Warning: MLE for negative binomial 
failed. Using MOM.")
+                               if var < mean:
+-                                      print "Warning: var < mean"
++                                      print("Warning: var < mean")
+                                       var = 1.01*mean
+                               self._p1 = mean**2 / (var - mean)
+                               self._p2 = mean / var
+@@ -185,7 +185,7 @@ class NbTail(TailDistribution):
+               if isinstance(nbinom, NBinom):
+                       self._parent = nbinom
+               else:
+-                      raise(Exception("NbTail must be connected to a NBinom 
object"))
++                      raise Exception
+       
+       def pmf(self, x):
+               if np.isscalar(x) and x == 0:
+@@ -222,7 +222,7 @@ class PoissonTail(TailDistribution):
+               if isinstance(poisson, Poisson):
+                       self._parent = poisson
+               else:
+-                      raise(Exception("PoissonTail must be connected to a 
Poisson object"))
++                      raise Exception
+       
+       def pmf(self, x):
+               if self._p1 < 2.:
+@@ -322,9 +322,9 @@ def init_gamma(mixture_model, dataset):
+ class DS_cov:
+       def __init__(self,ref):
+               """ fill dataset with data provided in Reference ref """
+-              t_lns = [t.length for t in ref.targets.itervalues()]
++              t_lns = [t.length for t in ref.targets.values()]
+               # r_info contains read position and length for each read
+-              r_info = [[[r[0],r[1]] for r in t.reads.itervalues()] for t in 
ref.targets.itervalues()]
++              r_info = [[[r[0],r[1]] for r in t.reads.values()] for t in 
ref.targets.values()]
+ 
+               # pile up coverage for each target and summarize in one array
+               cov = [np.zeros((l,),dtype=np.int16) for l in t_lns]
+@@ -346,9 +346,9 @@ class DS_cov:
+ class DS_dst:
+       def __init__(self,ref):
+               """ fill dataset with data provided in Reference ref """
+-              t_lns = [t.length for t in ref.targets.itervalues()]
+-              r_pos = [[r[0] for r in t.reads.itervalues()] for t in 
ref.targets.itervalues()]
+-              r_len = [[r[1] for r in t.reads.itervalues()] for t in 
ref.targets.itervalues()]
++              t_lns = [t.length for t in ref.targets.values()]
++              r_pos = [[r[0] for r in t.reads.values()] for t in 
ref.targets.values()]
++              r_len = [[r[1] for r in t.reads.values()] for t in 
ref.targets.values()]
+               r_len = np.concatenate([np.array(ls) for ls in r_len])
+               positions = [np.sort(np.array(ps)) for ps in r_pos]
+               distances = np.concatenate([p[1:] - p[:-1] for p in positions])

Added: trunk/packages/microbegps/trunk/debian/patches/series
===================================================================
--- trunk/packages/microbegps/trunk/debian/patches/series                       
        (rev 0)
+++ trunk/packages/microbegps/trunk/debian/patches/series       2015-05-07 
08:08:36 UTC (rev 19148)
@@ -0,0 +1 @@
+2to3.patch

Modified: trunk/packages/microbegps/trunk/debian/rules
===================================================================
--- trunk/packages/microbegps/trunk/debian/rules        2015-05-07 07:15:35 UTC 
(rev 19147)
+++ trunk/packages/microbegps/trunk/debian/rules        2015-05-07 08:08:36 UTC 
(rev 19148)
@@ -4,5 +4,5 @@
 export PYBUILD_NAME=microbegps
 
 %:
-       dh $@ --with python2 --buildsystem=pybuild
+       dh $@ --with python3 --buildsystem=pybuild
 


_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to