|
1
|
|
|
"""Functions for shortening GO names.""" |
|
2
|
|
|
|
|
3
|
|
|
__copyright__ = "Copyright (C) 2016-2017, DV Klopfenstein, H Tang, All rights reserved." |
|
4
|
|
|
__author__ = "DV Klopfenstein" |
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
class ShortenText(object): |
|
8
|
|
|
"""Shorten text for concise display.""" |
|
9
|
|
|
|
|
10
|
|
|
greek2hex = {'alpha':0x03b1, 'beta':0x03b2, 'gamma':0x03b3, 'delta':0x03b4} |
|
11
|
|
|
greek2tex = {'alpha':r'$\alpha$', 'beta':r'$\beta$', 'gamma':r'$\gamma$', 'delta':r'$\delta$'} |
|
12
|
|
|
|
|
13
|
|
|
def __init__(self): |
|
14
|
|
|
self.greek2uni = {g:unichr(h).encode('utf-8') for g, h in self.greek2hex.items()} |
|
15
|
|
|
self.keep = [ |
|
16
|
|
|
"defense response to protozoan", |
|
17
|
|
|
"defense response to bacterium", |
|
18
|
|
|
"cellular response to interferon-beta", |
|
19
|
|
|
"defense response to virus", |
|
20
|
|
|
"response to interferon-gamma", |
|
21
|
|
|
"innate immune response", |
|
22
|
|
|
"inflammatory response", |
|
23
|
|
|
"response to virus", |
|
24
|
|
|
"immune response"] |
|
25
|
|
|
|
|
26
|
|
|
def get_short_plot_name(self, goobj): |
|
27
|
|
|
"""Shorten some GO names so plots are smaller.""" |
|
28
|
|
|
name = goobj.name |
|
29
|
|
|
if self._keep_this(name): |
|
30
|
|
|
return self.replace_greek(name) |
|
31
|
|
|
name = name.replace("cellular response to chemical stimulus", |
|
32
|
|
|
"cellular rsp. to chemical stim.") |
|
33
|
|
|
depth = goobj.depth |
|
34
|
|
|
if depth > 1: |
|
35
|
|
|
name = name.replace("regulation of ", "reg. of ") |
|
36
|
|
|
name = name.replace("positive reg", "+reg") |
|
37
|
|
|
name = name.replace("negative reg", "-reg") |
|
38
|
|
|
name = name.replace("involved in", "in") |
|
39
|
|
|
if depth > 2: |
|
40
|
|
|
name = name.replace("antigen processing and presentation", "a.p.p") |
|
41
|
|
|
name = name.replace("MHC class I", "MHC-I") |
|
42
|
|
|
if depth == 4: |
|
43
|
|
|
if goobj.id == "GO:0002460": |
|
44
|
|
|
before = " ".join([ |
|
45
|
|
|
"adaptive immune response based on somatic recombination of", |
|
46
|
|
|
"immune receptors built from immunoglobulin superfamily domains"]) |
|
47
|
|
|
name = name.replace( |
|
48
|
|
|
before, |
|
49
|
|
|
"rsp. based on somatic recombination of Ig immune receptors") |
|
50
|
|
|
if depth > 3: |
|
51
|
|
|
name = name.replace("signaling pathway", "sig. pw.") |
|
52
|
|
|
name = name.replace("response", "rsp.") |
|
53
|
|
|
name = name.replace("immunoglobulin superfamily domains", "Ig domains") |
|
54
|
|
|
name = name.replace("immunoglobulin", "Ig") |
|
55
|
|
|
if depth > 4: |
|
56
|
|
|
name = name.replace("production", "prod.") |
|
57
|
|
|
if depth == 6 or depth == 5: |
|
58
|
|
|
name = name.replace("tumor necrosis factor", "TNF") |
|
59
|
|
|
name = self.replace_greek(name) |
|
60
|
|
|
return name |
|
61
|
|
|
|
|
62
|
|
|
def shorten_go_name_ptbl1(self, name): |
|
63
|
|
|
"""Shorten GO name for tables in paper.""" |
|
64
|
|
|
if self._keep_this(name): |
|
65
|
|
|
return name |
|
66
|
|
|
name = name.replace("negative", "neg.") |
|
67
|
|
|
name = name.replace("positive", "pos.") |
|
68
|
|
|
name = name.replace("response", "rsp.") |
|
69
|
|
|
name = name.replace("regulation", "reg.") |
|
70
|
|
|
name = name.replace("antigen processing and presentation", "app.") |
|
71
|
|
|
return name |
|
72
|
|
|
|
|
73
|
|
|
def shorten_go_name_ptbl3(self, name, dcnt): |
|
74
|
|
|
"""Shorten GO description for Table 3 in manuscript.""" |
|
75
|
|
|
if self._keep_this(name): |
|
76
|
|
|
return name |
|
77
|
|
|
name = name.replace("positive regulation of immune system process", |
|
78
|
|
|
"+ reg. of immune sys. process") |
|
79
|
|
|
name = name.replace("positive regulation of immune response", |
|
80
|
|
|
"+ reg. of immune response") |
|
81
|
|
|
name = name.replace("positive regulation of cytokine production", |
|
82
|
|
|
"+ reg. of cytokine production") |
|
83
|
|
|
if dcnt < 40: |
|
84
|
|
|
name = name.replace("antigen processing and presentation", "a.p.p.") |
|
85
|
|
|
if dcnt < 10: |
|
86
|
|
|
name = name.replace("negative", "-") |
|
87
|
|
|
name = name.replace("positive", "+") |
|
88
|
|
|
#name = name.replace("tumor necrosis factor production", "tumor necrosis factor prod.") |
|
89
|
|
|
name = name.replace("tumor necrosis factor production", "TNF production") |
|
90
|
|
|
if dcnt < 4: |
|
91
|
|
|
name = name.replace("regulation", "reg.") |
|
92
|
|
|
name = name.replace("exogenous ", "") |
|
93
|
|
|
name = name.replace(" via ", " w/") |
|
94
|
|
|
name = name.replace("T cell mediated cytotoxicity", "cytotoxicity via T cell") |
|
95
|
|
|
name = name.replace('involved in', 'in') |
|
96
|
|
|
name = name.replace('-positive', '+') |
|
97
|
|
|
return name |
|
98
|
|
|
|
|
99
|
|
|
def replace_greek(self, name): |
|
100
|
|
|
"""Replace text representing greek letters with greek letters.""" |
|
101
|
|
|
name = name.replace('gamma-delta', 'gammadelta') |
|
102
|
|
|
name = name.replace('interleukin-1 beta', 'interleukin-1beta') |
|
103
|
|
|
greek_present = False |
|
104
|
|
|
for greek_txt, uni in self.greek2uni.items(): |
|
105
|
|
|
if greek_txt in name: |
|
106
|
|
|
greek_present = True |
|
107
|
|
|
name = name.replace(greek_txt, "{B}".format(B=uni)) |
|
108
|
|
|
if greek_present is True: |
|
109
|
|
|
name = unicode(name, 'utf-8') # For writing to xlsx |
|
110
|
|
|
return name |
|
111
|
|
|
|
|
112
|
|
|
def replace_greek_tex(self, name): |
|
113
|
|
|
"""Replace text representing greek letters with greek letters.""" |
|
114
|
|
|
name = name.replace('gamma-delta', 'gammadelta') |
|
115
|
|
|
name = name.replace('interleukin-1 beta', 'interleukin-1beta') |
|
116
|
|
|
# greek_present = False |
|
117
|
|
|
for greek_txt, tex in self.greek2tex.items(): |
|
118
|
|
|
if greek_txt in name: |
|
119
|
|
|
# greek_present = True |
|
120
|
|
|
name = name.replace(greek_txt, "{B}".format(B=tex)) |
|
121
|
|
|
# if greek_present is True: |
|
122
|
|
|
# name = texcode(name, 'utf-8') # For writing to xlsx |
|
123
|
|
|
return name |
|
124
|
|
|
|
|
125
|
|
|
def shorten_go_name_all(self, name): |
|
126
|
|
|
"""Shorten GO name for tables in paper, supplemental materials, and plots.""" |
|
127
|
|
|
name = self.replace_greek(name) |
|
128
|
|
|
name = name.replace("MHC class I", "MHC-I") |
|
129
|
|
|
return name |
|
130
|
|
|
|
|
131
|
|
|
def _keep_this(self, name): |
|
132
|
|
|
"""Return True if there are to be no modifications to name.""" |
|
133
|
|
|
for keep_name in self.keep: |
|
134
|
|
|
if name == keep_name: |
|
135
|
|
|
return True |
|
136
|
|
|
return False |
|
137
|
|
|
|
|
138
|
|
|
#@staticmethod |
|
139
|
|
|
#def _shorten_go_name(name): |
|
140
|
|
|
# name = name.replace(' and ', ' & ') |
|
141
|
|
|
# if gont.dcnt < 15: |
|
142
|
|
|
# name = name.replace('MHC class I', 'MHC-I') |
|
143
|
|
|
# name = name.replace('antigen processing & presentation', 'a. p. p.') |
|
144
|
|
|
# name = name.replace('positive regulation', 'pos. reg.') |
|
145
|
|
|
# elif gont.depth > 2: |
|
146
|
|
|
# name = name.replace(' & presentation', ' & pres.') |
|
147
|
|
|
# return name |
|
148
|
|
|
|
|
149
|
|
|
# Copyright (C) 2016-2017, DV Klopfenstein, H Tang, All rights reserved. |
|
150
|
|
|
|