Commit 232b707f authored by Andreas Tille's avatar Andreas Tille
Browse files

Follow more hints of Dmitry Shachnev <mitya57@debian.org>

parent e11eb2f2
Loading
Loading
Loading
Loading
+197 −3
Original line number Diff line number Diff line
@@ -315,6 +315,114 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
 		gridLayout.setColumnStretch(0,2)
 		gridLayout.setColumnStretch(1,2)
 		gridLayout.addWidget(recipeLbl,0,0)
@@ -343,7 +343,7 @@ class Pipeline(QtGui.QWidget):
 			try:
 				target_table,read_table = gps.read_sam_files_no_pysam(directory,status_reporter)
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit(target_table,read_table)
@@ -389,7 +389,7 @@ class Pipeline(QtGui.QWidget):
 						pr=printer)
 				gps.calculate_mapping_statistics(p.target_table)
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit()
@@ -441,7 +441,7 @@ class Pipeline(QtGui.QWidget):
 				else:
 					ref_table = gps.get_reference_table(p.target_table,p.read_table)	
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit(ref_table)
@@ -488,7 +488,7 @@ class Pipeline(QtGui.QWidget):
 				gps.filter_ref_table(p.ref_table,p.read_table,custom_filt1,printer)
 				#GpsTools.calculate_valcov(p.ref_table,printer)
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit()
@@ -549,7 +549,7 @@ class Pipeline(QtGui.QWidget):
 				group_dict = gps.create_groups_dc(usr_mat,all_mat,n2i,p.sharedFractionUSR.value(),status=printer)
 				candidates = gps.enrich_groups(group_dict,p.ref_table,p.read_table,i2n)
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit(candidates)
@@ -591,7 +591,7 @@ class Pipeline(QtGui.QWidget):
 				p.mainWindow.visualize(p.candidates,p.ref_table,p.read_table)
 				p.mainWindow.settings_pipeline = p.get_settings()
 			except Exception as e:
-				self.failed.emit(e.message)
+				self.failed.emit(str(e))
 				raise
 			else:
 				self.done.emit()
@@ -646,7 +646,7 @@ class Pipeline(QtGui.QWidget):
 			try:
 				target_table,read_table = gps.read_sam_files_no_pysam(directory,self.status.emit)
 			except Exception as e:
-				self.failed.emit(0,e.message)
+				self.failed.emit(0,str(e))
 				raise
 			else:
 				self.done.emit(0)
@@ -664,7 +664,7 @@ class Pipeline(QtGui.QWidget):
 						pr=p.pr)
 				gps.calculate_mapping_statistics(target_table)
 			except Exception as e:
-				self.failed.emit(1,e.message)
+				self.failed.emit(1,str(e))
 				raise
 			else:
 				self.done.emit(1)
@@ -686,7 +686,7 @@ class Pipeline(QtGui.QWidget):
 				else:
 					ref_table = gps.get_reference_table(target_table,read_table)	
 			except Exception as e:
-				self.failed.emit(2,e.message)
+				self.failed.emit(2,str(e))
 				raise
 			else:
 				self.done.emit(2)
@@ -703,7 +703,7 @@ class Pipeline(QtGui.QWidget):
 					return True
 				gps.filter_ref_table(ref_table,read_table,custom_filt1,p.pr)
 			except Exception as e:
-				self.failed.emit(3,e.message)
+				self.failed.emit(3,str(e))
 				raise
 			else:
 				self.done.emit(3)
@@ -730,7 +730,7 @@ class Pipeline(QtGui.QWidget):
 				group_dict = gps.create_groups_dc(usr_mat,all_mat,n2i,p.sharedFractionUSR.value(),status=p.pr)
 				candidates = gps.enrich_groups(group_dict,ref_table,read_table,i2n)
 			except Exception as e:
-				self.failed.emit(4,e.message)
+				self.failed.emit(4,str(e))
 				raise
 			else:
 				self.done.emit(4)
@@ -742,7 +742,7 @@ class Pipeline(QtGui.QWidget):
 				p.mainWindow.visualize(candidates,ref_table,read_table)
 				p.mainWindow.settings_pipeline = p.get_settings()
 			except Exception as e:
-				self.failed.emit(5,e.message)
+				self.failed.emit(5,str(e))
 				raise
 			else:
 				self.done.emit(5)
@@ -805,14 +805,14 @@ class Pipeline(QtGui.QWidget):
 		self.stepsDone = min(step-1,self.stepsDone)
 
@@ -350,6 +458,15 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
 	def __init__(self):
 		super(GPSAnalyzer, self).__init__()
 		self.initUI()
@@ -889,7 +889,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 				mod = importer.find_module(mod_name).load_module(mod_name)
 				modules_d[mod_name] = mod.GPSModule(self)
 			except Exception as e:
-				self.pr('<b><font color="DarkRed">Failed loading module %s</font></b><br>Message: <i>%s</i>'%(mod_name,e.message))			
+				self.pr('<b><font color="DarkRed">Failed loading module %s</font></b><br>Message: <i>%s</i>'%(mod_name,str(e)))			
 		self.modules = modules_d
 		if len(self.modules) > 0:
 			self.pr('Loaded modules: <i>%s</i>'%(', '.join(iter(self.modules.keys()))))
@@ -898,22 +898,22 @@ class GPSAnalyzer(QtGui.QMainWindow):
 		self.pipelineGui = Pipeline(self)
 		
@@ -703,6 +820,24 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
 							self.phyloTreeWidget.expandItem(self.taxid_to_item[taxid])
 							self.taxid_to_item[taxid].setText(1,'%i'%N_reads)
 			self.phyloTreeWidget.resizeColumnToContents(0)
@@ -1570,7 +1570,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 					#nodes,ranks = taxonomy.parse_nodes_dmp(gzip.open('data/taxonomy/nodes.dmp.gz','r'))
 					nodes,ranks = taxonomy.parse_nodes_dmp(pkg_resources.resource_stream('microbegps','data/taxonomy/nodes.dmp'))
 				except Exception as e:
-					self.failed.emit('<b><font color="DarkRed">Error loading NCBI taxonomy!</font></b><br>Message: <i>'+e.message+'</i>')
+					self.failed.emit('<b><font color="DarkRed">Error loading NCBI taxonomy!</font></b><br>Message: <i>'+str(e)+'</i>')
 					raise
 				else:
 					self.done.emit(nodes,ranks)
@@ -1584,7 +1584,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 					#target = taxonomy.parse_names_dmp(gzip.open('data/taxonomy/names.dmp.gz','r'))
 					target = taxonomy.parse_names_dmp(pkg_resources.resource_stream('microbegps','data/taxonomy/names.dmp'))
 				except Exception as e:
-					self.failed.emit('<b><font color="DarkRed">Error loading NCBI names!</font></b><br>Message: <i>'+e.message+'</i>')
+					self.failed.emit('<b><font color="DarkRed">Error loading NCBI names!</font></b><br>Message: <i>'+str(e)+'</i>')
 					raise
 				else:
 					self.done.emit(target)
@@ -1613,7 +1613,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 		self.pipelineGui.show()
 				
@@ -712,6 +847,15 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
 		if len(fname):
 			if not fname.endswith('.gpsa'):
 				if not '.' in fname:
@@ -1631,7 +1631,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 							'settings_analyzer':self.settings_analyzer}
 					pickle.dump(s_data,open(fname,'wb'),protocol=-1)
 				except Exception as e:
-					self.pr('Error while saving file: '+e.message)
+					self.pr('Error while saving file: '+str(e))
 					raise
 				else:
 					self.pr("Finished saving data.")
@@ -1641,7 +1641,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 
 				
@@ -721,7 +865,16 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
 		fname = str(dialog.getOpenFileName(caption='Load Data',filter="GPS Analyzer Files (*.gpsa);;All Files (*.*)",parent=self))
 		if len(fname):
 			self.pr("Loading data from file "+fname)
@@ -1676,7 +1676,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
@@ -1659,7 +1659,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
 					settings_pipeline = settings.get('settings_pipeline',dict())
 					settings_analyzer = settings.get('settings_analyzer',dict())						
 				except Exception as e:
-					self.pr('Error while loading file: '+e.message)
+					self.pr('Error while loading file: '+str(e))
 					raise
 				else:
 					self.treeView.clear()
@@ -1676,17 +1676,17 @@ class GPSAnalyzer(QtGui.QMainWindow):
 		""" Export the whole tree to files that can be loaded with iTOL.
 		http://itol.embl.de/upload.cgi"""
 		try:
@@ -729,8 +882,11 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
+			outdir = str(QtWidgets.QFileDialog().getExistingDirectory(caption='Select iTOL output directory',parent=self))
 			taxonomy.candidates_to_LCA_tree(self.sgroups,self.taxonomy_nodes,self.taxonomy_names,outdir)
 		except Exception as e:
 			self.pr('Error while saving iTOL files: '+e.message)
@@ -1686,7 +1686,7 @@ class GPSAnalyzer(QtGui.QMainWindow):
-			self.pr('Error while saving iTOL files: '+e.message)
+			self.pr('Error while saving iTOL files: '+str(e))
 			raise
 			
 	
 	def export_graphic(self):
 		""" export the current content of the figure to file. Use the DPI 
 		quality specified in exportFigureQuality """
@@ -860,3 +1016,41 @@ Last-Update: Fri, 06 Sep 2019 10:26:15 +0200
-		self.GPS.tree_item_clicked_handler(self.GPS.treeView.currentItem(),0)
\ No newline at end of file
+		self.GPS.tree_item_clicked_handler(self.GPS.treeView.currentItem(),0)
--- a/microbegps/taxonomy.py
+++ b/microbegps/taxonomy.py
@@ -12,7 +12,7 @@ def parse_nodes_dmp(node_file):
 	nodes = dict()
 	ranks = dict()
 	for line in node_file:
-		fields = line.rstrip('\t|\n').split('\t|\t')
+		fields = line.decode('utf-8').rstrip('\t|\n').split('\t|\t')
 		if len(fields) < 4:
 			print('skipped line',line)
 			continue
@@ -28,7 +28,7 @@ def parse_names_dmp(names_file):
 	""" """
 	taxid_to_name = dict()
 	for line in names_file:
-		fields = line.rstrip('\t|\n').split('\t|\t')
+		fields = line.decode('utf-8').rstrip('\t|\n').split('\t|\t')
 		if len(fields) != 4:
 			print('skipped line',line)
 			continue
@@ -45,7 +45,7 @@ def parse_catalog(catalog_file):
 	""" """
 	gi_to_taxid = dict()
 	for line in catalog_file:
-		fields = line.rstrip().split('\t')
+		fields = line.decode('utf-8').rstrip().split('\t')
 		gi = fields[3]
 		taxid = int(fields[0])
 		gi_to_taxid[gi] = taxid
@@ -58,7 +58,7 @@ def gis_to_taxid_and_name(gis, catalog):
 	gi_to_taxid = dict()
 	gi_to_name = dict()
 	for line in catalog:
-		fields = line.rstrip().split('\t')
+		fields = line.decode('utf-8').rstrip().split('\t')
 		gi = fields[3]
 		taxid = int(fields[0])
 		name = fields[1]