Skip to content

Commit dece448

Browse files
authored
Merge pull request #16 from DRL/features
Features
2 parents 02feebf + d4bc9cb commit dece448

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

kinfin.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
from __future__ import division
5454
import sys
5555
from os.path import isfile, join, exists, realpath, dirname
56-
from os import getcwd, mkdir
56+
from os import getcwd, mkdir, remove, environ
5757
import shutil
5858
import random
5959
import time
@@ -1900,8 +1900,8 @@ def __init__(self, cluster_id, protein_ids):
19001900
self.protein_count = len(protein_ids)
19011901
try:
19021902
self.proteomes_by_protein_id = {protein_id : proteinCollection.proteinObjs_by_protein_id[protein_id].proteome_id for protein_id in protein_ids}
1903-
except KeyError:
1904-
sys.exit("[ERROR] - Proteins in clustering belong to proteomes that are not present in the SpeciesClassification-file. Please add those proteoemes or recluster by omitting these proteomes.")
1903+
except KeyError as e:
1904+
sys.exit("[ERROR] - Protein %s in clustering belong to proteomes that are not present in the SpeciesClassification-file. Please add those proteoemes or recluster by omitting these proteomes." % (e.args[0]))
19051905

19061906
self.proteome_ids_list = self.proteomes_by_protein_id.values()
19071907
self.protein_count_by_proteome_id = Counter(self.proteome_ids_list)
@@ -2070,20 +2070,20 @@ def check_input_files(self):
20702070
if self.pfam_mapping:
20712071
pfam_mapping_f = join(dirname(realpath(__file__)), "data/Pfam-A.clans.tsv.gz")
20722072
if not isfile(pfam_mapping_f):
2073-
print "[WARN] : PFAM-ID file 'data/Pfam-A.clans.tsv.gz' not found."
2073+
print "[WARN] - PFAM-ID file 'data/Pfam-A.clans.tsv.gz' not found."
20742074
remote_f = "ftp://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.clans.tsv.gz"
20752075
retrieve_ftp(remote_f, pfam_mapping_f)
20762076
self.pfam_mapping_f = pfam_mapping_f
20772077
if self.ipr_mapping:
20782078
ipr_mapping_f = join(dirname(realpath(__file__)), "data/entry.list")
20792079
if not isfile(ipr_mapping_f):
2080-
print "[WARN] : IPR-ID file 'data/entry.list' not found."
2080+
print "[WARN] - IPR-ID file 'data/entry.list' not found."
20812081
remote_f = "ftp://ftp.ebi.ac.uk/pub/databases/interpro/entry.list"
20822082
retrieve_ftp(remote_f, ipr_mapping_f)
20832083
self.ipr_mapping_f = ipr_mapping_f
20842084
go_mapping_f = join(dirname(realpath(__file__)), "data/interpro2go")
20852085
if not isfile(go_mapping_f):
2086-
print "[WARN] : GO-ID file, but 'data/interpro2go' not found."
2086+
print "[WARN] - GO-ID file, but 'data/interpro2go' not found."
20872087
remote_f = "ftp://ftp.ebi.ac.uk/pub/databases/interpro/interpro2go"
20882088
retrieve_ftp(remote_f, go_mapping_f)
20892089
self.go_mapping_f = go_mapping_f
@@ -2098,14 +2098,20 @@ def check_that_ete_can_plot(self):
20982098
import PyQt4
20992099
except ImportError:
21002100
sys.exit("[ERROR] : PyQt4 is not installed. Please install PyQt4")
2101-
from ete3 import Tree
2102-
t = Tree( "((a,b),c);" )
2103-
try:
2104-
test_tree_f = join(getcwd(), "%s.this_is_a_test_tree.pdf" % (outprefix))
2105-
t.render("test_tree_f.pdf", w=40, units="mm")
2106-
print "[STATUS] : ETE can connect to X server (X11). Tree will be rendered."
2107-
except:
2108-
print "[WARN] : ETE cannot connect to X server (X11). No tree will be rendered."
2101+
2102+
if 'DISPLAY' in environ:
2103+
print "[STATUS] - X server seems to be present..."
2104+
test_tree_f = join(getcwd(), "this_is_a_test_tree.pdf")
2105+
t = ete3.Tree( "((a,b),c);" )
2106+
try:
2107+
a = t.render(test_tree_f, w=40, units="mm")
2108+
print "[STATUS] - ETE can connect to X server (X11). Tree will be rendered."
2109+
except:
2110+
self.render_tree = False
2111+
print "[WARN] - ETE cannot connect to X server (X11). No tree will be rendered."
2112+
remove(test_tree_f)
2113+
else:
2114+
print "[STATUS] - No X server found. ETE can't render the tree. Consider using \'xvfb-run\' ..."
21092115
self.render_tree = False
21102116

21112117
def check_fuzzy_count(self, target_count):
@@ -2141,17 +2147,15 @@ def welcome_screen():
21412147

21422148

21432149
if __name__ == "__main__":
2144-
__version__ = "0.8.2"
2150+
__version__ = "0.8.3"
21452151
welcome_screen()
21462152
args = docopt(__doc__)
2147-
# Sanitise input
21482153
inputObj = InputObj(args)
21492154
if inputObj.tree_f:
21502155
try:
21512156
import ete3
2152-
except:
2153-
sys.exit("[ERROR] : Module \'ete3\' was not found. Please install \'ete3\' using \'pip install ete3\'")
2154-
2157+
except ImportError:
2158+
sys.exit("[ERROR] : Module \'ete3\' was not found. Please install \'ete3\' using \'pip install ete3\'\n/tPlotting of trees requires additional dependencies:\n\t- PyQt4\n\t")
21552159
# Input sane ... now we start
21562160
print "[STATUS] - Starting analysis ..."
21572161
overall_start = time.time()

0 commit comments

Comments
 (0)