Carlos-Francisco Méndez-Cruz

Conditional Random Fields

This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 -# -*- coding: UTF-8 -*-
2 -
3 -from optparse import OptionParser
4 -import os
5 -import sys
6 -from time import time
7 -import re
8 -
9 -__author__ = 'CMendezC'
10 -
11 -# Objective: Take text-annotated-abstracts-original.txt as input
12 -# for obtaining abstracts separated in files without tags and collecting dictionary of genes
13 -# for tagging after NLP pipeline.
14 -
15 -# Parameters:
16 -# 1) --inputPath Input path.
17 -# 2) --inputFile Input file.
18 -# 3) --outputPath Output path
19 -
20 -# Execution:
21 -# python3 prepare-abstracts.py
22 -# --inputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets
23 -# --inputFile text-annotated-abstracts.txt
24 -# --outputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets/original
25 -# --dicPath /export/space1/users/compu2/bionlp/nlp-preprocessing-pipeline/dictionaries
26 -# --dicFile genes.txt
27 -# python3 prepare-abstracts.py --inputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets --inputFile text-annotated-abstracts-original.txt --outputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets/original --dicPath /export/space1/users/compu2/bionlp/nlp-preprocessing-pipeline/dictionaries --dicFile genes.txt
28 -
29 -
30 -if __name__ == "__main__":
31 - # Parameter definition
32 - parser = OptionParser()
33 - parser.add_option("--inputPath", dest="inputPath",
34 - help="Input path", metavar="PATH")
35 - parser.add_option("--inputFile", dest="inputFile",
36 - help="Input file", metavar="FILE")
37 - parser.add_option("--outputPath", dest="outputPath",
38 - help="Output path", metavar="PATH")
39 - parser.add_option("--dicPath", dest="dicPath",
40 - help="Dictionary path", metavar="PATH")
41 - parser.add_option("--dicFile", dest="dicFile",
42 - help="Dictionary file", metavar="FILE")
43 -
44 - (options, args) = parser.parse_args()
45 - if len(args) > 0:
46 - parser.error("None parameters indicated.")
47 - sys.exit(1)
48 -
49 - # Printing parameter values
50 - print('-------------------------------- PARAMETERS --------------------------------')
51 - print("Input path: " + str(options.inputPath))
52 - print("Input file", str(options.inputFile))
53 - print("Output path: " + str(options.outputPath))
54 - print("Dictionary path: " + str(options.dicPath))
55 - print("Dictionary file", str(options.dicFile))
56 -
57 - filesWritten = 0
58 - t0 = time()
59 - hashGenes = {}
60 -
61 - rePmid = re.compile(r'([\d]+)\|t\|')
62 - reGene = re.compile(r'<g>([^<]+)</g>')
63 - reTags = re.compile(r'(<g>|</g>|<d>|</d>|<i>|</i>)')
64 - with open(os.path.join(options.inputPath, options.inputFile), "r", encoding="utf-8", errors="replace") as iFile:
65 - print("Reading file..." + options.inputFile)
66 - for line in iFile:
67 - line = line.strip('\r\n')
68 - for gene in reGene.findall(line):
69 - # print("genes: {}".format(gene))
70 - if gene not in hashGenes:
71 - hashGenes[gene] = 1
72 - else:
73 - hashGenes[gene] += 1
74 - line = reTags.sub('', line)
75 - result = rePmid.match(line)
76 - if result:
77 - line = rePmid.sub('', line)
78 - with open(os.path.join(options.outputPath, result.group(1) + ".txt"), "w", encoding="utf-8", errors="replace") as oFile:
79 - oFile.write(line)
80 - else:
81 - print("Warning: line without PMID")
82 - with open(os.path.join(options.dicPath, options.dicFile), "w", encoding="utf-8", errors="replace") as dFile:
83 - for gene in hashGenes.keys():
84 - dFile.write("{}\n".format(gene))
85 -
86 -
1 -# -*- coding: UTF-8 -*-
2 -
3 -from optparse import OptionParser
4 -import os
5 -import sys
6 -from time import time
7 -
8 -__author__ = 'CMendezC'
9 -
10 -# Objective: Join transformed files for obtaining training and test data sets
11 -
12 -# Parameters:
13 -# 1) --inputPath Path to read files.
14 -# 2) --trainingFile File name for training data.
15 -# 3) --testFile File name for test data.
16 -# 4) --outputPath Path to write files.
17 -
18 -# Ouput:
19 -# 1) Files created.
20 -
21 -# Execution:
22 -# python3.4 prepare-training-test.py
23 -# --inputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets/transformed
24 -# --trainingFile training-data-set-70.txt
25 -# --testFile test-data-set-30.txt
26 -# --outputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets
27 -# python3.4 prepare-training-test.py --inputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets/transformed --trainingFile training-data-set-70.txt --testFile test-data-set-30.txt --outputPath /export/space1/users/compu2/bionlp/conditional-random-fields/data-sets
28 -
29 -###########################################################
30 -# MAIN PROGRAM #
31 -###########################################################
32 -
33 -if __name__ == "__main__":
34 - # Parameter definition
35 - parser = OptionParser()
36 - parser.add_option("--inputPath", dest="inputPath",
37 - help="Path to read files", metavar="PATH")
38 - parser.add_option("--trainingFile", dest="trainingFile",
39 - help="File for training examples", metavar="FILE")
40 - parser.add_option("--testFile", dest="testFile",
41 - help="File for test examples", metavar="FILE")
42 - parser.add_option("--outputPath", dest="outputPath",
43 - help="Path to write output file, feature parameter is concatenated to file name.", metavar="PATH")
44 -
45 - (options, args) = parser.parse_args()
46 - if len(args) > 0:
47 - parser.error("None parameters indicated.")
48 - sys.exit(1)
49 -
50 - # Printing parameter values
51 - print('-------------------------------- PARAMETERS --------------------------------')
52 - print("Path to read files: " + str(options.inputPath))
53 - print("File for training examples", str(options.trainingFile))
54 - print("File for test examples", str(options.testFile))
55 - print("Path to write output files: " + str(options.outputPath))
56 -
57 - t0 = time()
58 - trainingDataset = []
59 - testDataset = []
60 -
61 - counter = 1
62 - for path, dirs, files in os.walk(options.inputPath):
63 - # For each file in dir
64 - for file in files:
65 - if counter <= 70:
66 - print(" Joining file {} {} to training data set".format(counter, file))
67 - with open(os.path.join(path, file), "r", encoding="utf-8", errors="replace") as iFile:
68 - for line in iFile:
69 - line = line.strip('\r\n')
70 - trainingDataset.append(line)
71 - elif counter > 70 and counter <= 100:
72 - print(" Joining file {} {} to test data set".format(counter, file))
73 - with open(os.path.join(path, file), "r", encoding="utf-8", errors="replace") as iFile:
74 - for line in iFile:
75 - line = line.strip('\r\n')
76 - testDataset.append(line)
77 - counter += 1
78 - with open(os.path.join(options.outputPath, options.trainingFile), "w", encoding="utf-8", errors="replace") as oFile:
79 - for line in trainingDataset:
80 - oFile.write("{}\n".format(line))
81 - with open(os.path.join(options.outputPath, options.testFile), "w", encoding="utf-8", errors="replace") as oFile:
82 - for line in testDataset:
83 - oFile.write("{}\n".format(line))
84 -
1 -********** TRAINING AND TESTING REPORT **********
2 -Training file: training-data-set-70.txt
3 -
4 -best params:{'c2': 0.07914565142816338, 'c1': 0.21725964976439643}
5 -best CV score:0.8106074404273954
6 -model size: 0.11M
7 -
8 -Flat F1: 0.8356545961
9 - precision recall f1-score support
10 -
11 - GENE 0.915 0.769 0.836 390
12 -
13 -avg / total 0.915 0.769 0.836 390
14 -
15 -
16 -Top likely transitions:
17 -O -> O 1.957922
18 -O -> GENE 0.947353
19 -GENE -> GENE -0.007648
20 -GENE -> O -4.309323
21 -
22 -
23 -Top unlikely transitions:
24 -O -> O 1.957922
25 -O -> GENE 0.947353
26 -GENE -> GENE -0.007648
27 -GENE -> O -4.309323
28 -
29 -
30 -Top positive:
31 -2.685072 GENE b'lemma:gremlin'
32 -2.608752 GENE b'word:CTGF'
33 -2.608752 GENE b'lemma:Ctgf'
34 -2.419715 GENE b'lemma:transforming'
35 -2.349081 GENE b'word:beta-galactosidase'
36 -2.349081 GENE b'lemma:beta-galactosidase'
37 -2.174001 O b'word[-2:]:ed'
38 -2.168049 O b'lemma[-1:]:m'
39 -2.120173 O b'word[:1]:o'
40 -2.073788 GENE b'lemma[-3:]:gal'
41 -2.073788 GENE b'word:beta-gal'
42 -2.073788 GENE b'word[-3:]:gal'
43 -2.073788 GENE b'lemma:beta-gal'
44 -2.013105 GENE b'lemma:PTEN'
45 -2.013105 GENE b'lemma[-2:]:EN'
46 -2.013105 GENE b'lemma[-3:]:TEN'
47 -1.933060 GENE b'word:receptors'
48 -1.925691 O b'word[:1]:-'
49 -1.904296 O b'word:TGF'
50 -1.904296 O b'lemma:tgf'
51 -1.883335 GENE b'word[-3:]:vin'
52 -1.883335 GENE b'word:activin'
53 -1.883335 GENE b'lemma:activin'
54 -1.883335 GENE b'lemma[-3:]:vin'
55 -1.879420 GENE b'word[:2]:CD'
56 -1.814306 GENE b'word:TGF-beta1'
57 -1.814306 GENE b'lemma:TGF-beta1'
58 -1.768325 GENE b'word:alpha-smooth-muscle-actin'
59 -1.768325 GENE b'lemma:alpha-smooth-muscle-actin'
60 -1.753390 O b'word[:2]:Cy'
61 -1.726440 GENE b'word:ligand'
62 -1.720519 GENE b'word:HGF'
63 -1.720519 GENE b'lemma:HGF'
64 -1.688715 O b'word[:1]:,'
65 -1.678661 GENE b'word:protease'
66 -1.678661 GENE b'lemma:protease'
67 -1.668226 GENE b'word[:1]:C'
68 -1.667293 GENE b'word:factor'
69 -1.602555 O b'word[-1:]:y'
70 -1.589130 GENE b'lemma[-2:]:-8'
71 -1.589130 GENE b'word[-2:]:-8'
72 -1.573694 O b'word[-1:]:s'
73 -1.568569 O b'lemma[-3:]:in'
74 -1.568569 O b'lemma:in'
75 -1.512324 GENE b'word[:2]:HA'
76 -1.512324 GENE b'word[:3]:HAI'
77 -1.504657 O b'word[:2]:th'
78 -1.504231 GENE b'lemma:ligand'
79 -1.503836 GENE b'lemma[-2:]:-A'
80 -1.503836 GENE b'word[-2:]:-A'
81 -1.487440 GENE b'lemma:Pigment-epithelium-derived-factor'
82 -1.487440 GENE b'word:Pigment-epithelium-derived-factor'
83 -1.487440 GENE b'word[:3]:Pig'
84 -1.476848 O b'word[:1]:k'
85 -1.475005 GENE b'word[:1]:E'
86 -1.432543 GENE b'lemma[-3:]:SMA'
87 -1.432543 GENE b'word[-3:]:SMA'
88 -1.432543 GENE b'word:alpha-SMA'
89 -1.432543 GENE b'lemma:alpha-SMA'
90 -1.407013 GENE b'word[:2]:IL'
91 -1.397260 O b'lemma[-1:]:o'
92 -1.390507 O b'lemma[-1:]:y'
93 -1.387690 GENE b'word:transforming'
94 -1.383684 GENE b'word[:2]:IF'
95 -1.383684 GENE b'word[:3]:IFN'
96 -1.379408 O b'word[:1]:L'
97 -1.375716 GENE b'word:bone'
98 -1.368611 GENE b'word[:3]:bon'
99 -1.363564 GENE b'word[:3]:che'
100 -1.356982 GENE b'word:TNF-alpha'
101 -1.356982 GENE b'lemma:TNF-alpha'
102 -1.326882 O b'word[:3]:R-I'
103 -1.326882 O b'word[:2]:R-'
104 -1.324190 O b'word[:3]:cyt'
105 -1.310759 GENE b'word[-3:]:yte'
106 -1.305700 GENE b'lemma:fibronectin'
107 -1.305700 GENE b'word:fibronectin'
108 -1.305260 GENE b'lemma[-1:]:N'
109 -1.304592 GENE b'word[:3]:ext'
110 -1.300737 O b'word[-1:]:d'
111 -1.278849 GENE b'word[-3:]:L-4'
112 -1.278849 GENE b'lemma:IL-4'
113 -1.278849 GENE b'lemma[-3:]:L-4'
114 -1.278849 GENE b'word:IL-4'
115 -1.277782 GENE b'word[:3]:ERK'
116 -1.259804 GENE b'lemma[-3:]:yte'
117 -1.248605 O b'lemma:CTGF/TGF-beta'
118 -1.248605 O b'word:CTGF/TGF-beta'
119 -1.238688 GENE b'word[:3]:lig'
120 -1.228904 GENE b'lemma:b-FGF'
121 -1.228904 GENE b'word:b-FGF'
122 -1.228904 GENE b'lemma[-3:]:FGF'
123 -1.228904 GENE b'word[:2]:b-'
124 -1.228904 GENE b'word[:3]:b-F'
125 -1.228904 GENE b'word[-3:]:FGF'
126 -1.212553 GENE b'word[:1]:H'
127 -1.180210 GENE b'lemma:vimentin'
128 -1.180210 GENE b'word[:3]:vim'
129 -1.180210 GENE b'word:vimentin'
130 -1.179272 GENE b'word[-3:]:mor'
131 -1.179272 GENE b'word:tumor'
132 -1.179272 GENE b'lemma[-3:]:mor'
133 -1.179272 GENE b'lemma:tumor'
134 -1.179121 GENE b'lemma[-2:]:T2'
135 -1.179121 GENE b'word[-2:]:T2'
136 -1.173436 O b'word[:1]:w'
137 -1.167407 O b'lemma[-2:]:12'
138 -1.167407 O b'word[-2:]:12'
139 -1.153127 GENE b'word[:2]:TG'
140 -1.153127 GENE b'word[:3]:TGF'
141 -1.150437 GENE b'lemma[-1:]:I'
142 -1.139320 GENE b'word[:3]:TNF'
143 -1.139320 GENE b'word[:2]:TN'
144 -1.134561 GENE b'word:interleukin-1beta'
145 -1.134561 GENE b'lemma:interleukin-1beta'
146 -1.132836 O b'word[:3]:Cyc'
147 -1.132836 O b'word:Cyclin'
148 -1.132442 GENE b'word:cyclin'
149 -1.127347 GENE b'word[:2]:en'
150 -1.122117 GENE b'word[:3]:MT5'
151 -1.122117 GENE b'lemma:MT5-MMP'
152 -1.122117 GENE b'word:MT5-MMP'
153 -1.116045 GENE b'word:serine'
154 -1.111781 GENE b'lemma:serine'
155 -1.109123 GENE b'word[:1]:M'
156 -1.106625 GENE b'lemma[-3:]:Fas'
157 -1.106625 GENE b'lemma:Fas'
158 -1.093286 GENE b'word[-2:]:DF'
159 -1.093286 GENE b'lemma[-3:]:EDF'
160 -1.093286 GENE b'word:PEDF'
161 -1.093286 GENE b'lemma[-2:]:DF'
162 -1.093286 GENE b'lemma:PEDF'
163 -1.093286 GENE b'word[-3:]:EDF'
164 -1.093286 GENE b'word[:2]:PE'
165 -1.093286 GENE b'word[:3]:PED'
166 -1.090129 O b'word[:2]:MA'
167 -1.089527 GENE b'word[:3]:BMP'
168 -1.089527 GENE b'word[:2]:BM'
169 -1.079711 GENE b'word[:3]:alp'
170 -1.073819 O b'word[-1:]:o'
171 -1.073379 GENE b'word[-2:]:in'
172 -1.068255 GENE b'lemma:IFN-gamma'
173 -1.068255 GENE b'word:IFN-gamma'
174 -1.064494 GENE b'word:NOS'
175 -1.064494 GENE b'lemma:nos'
176 -1.064494 GENE b'word[:3]:NOS'
177 -1.050682 GENE b'lemma[-3:]:emt'
178 -1.050682 GENE b'lemma:emt'
179 -1.050682 GENE b'word[-3:]:EMT'
180 -1.050682 GENE b'word:EMT'
181 -1.046833 GENE b'word[-2:]:10'
182 -1.046833 GENE b'lemma[-2:]:10'
183 -1.044023 GENE b'word:Angiotensin'
184 -1.044023 GENE b'lemma:Angiotensin'
185 -1.039755 O b'word[:3]:MAP'
186 -1.035043 GENE b'lemma[-3:]:BMP'
187 -1.035043 GENE b'word[-3:]:BMP'
188 -1.035043 GENE b'lemma:BMP'
189 -1.035043 GENE b'word:BMP'
190 -1.024162 O b'word[:2]:an'
191 -1.014152 O b'word[:3]:IPF'
192 -1.012327 GENE b'lemma[-3:]:F-2'
193 -1.008418 GENE b'word[:3]:ins'
194 -1.000743 O b'lemma[-2:]:on'
195 -0.994406 GENE b'lemma:Transforming'
196 -0.993303 GENE b'word[:2]:NO'
197 -0.989415 O b'lemma:simvastatin'
198 -0.978677 O b'word[:1]:a'
199 -0.977070 GENE b'word:VEGF'
200 -0.977070 GENE b'lemma:vegf'
201 -0.977070 GENE b'lemma[-3:]:egf'
202 -0.977070 GENE b'word[:3]:VEG'
203 -0.977070 GENE b'word[:2]:VE'
204 -0.974536 GENE b'word[-1:]:8'
205 -0.974536 GENE b'lemma[-1:]:8'
206 -0.970620 GENE b'word[-3:]:F-2'
207 -0.964584 GENE b'word[:2]:AC'
208 -0.964584 GENE b'word[-2:]:CE'
209 -0.964584 GENE b'word:ACE'
210 -0.964584 GENE b'word[:3]:ACE'
211 -0.964584 GENE b'word[-3:]:ACE'
212 -0.964584 GENE b'lemma:ace'
213 -0.957851 GENE b'lemma:RHOA'
214 -0.957851 GENE b'lemma[-2:]:OA'
215 -0.957851 GENE b'word:RhoA'
216 -0.957851 GENE b'word[-3:]:hoA'
217 -0.957851 GENE b'lemma[-3:]:HOA'
218 -0.956459 GENE b'lemma[-3:]:ace'
219 -0.930562 GENE b'word[:2]:p3'
220 -0.930562 GENE b'lemma:p38'
221 -0.930562 GENE b'word[:3]:p38'
222 -0.930562 GENE b'lemma[-3:]:p38'
223 -0.930562 GENE b'word:p38'
224 -0.930562 GENE b'word[-3:]:p38'
225 -0.917083 GENE b'word[-3:]:eta'
226 -0.917083 GENE b'lemma[-3:]:eta'
227 -0.913861 GENE b'word[:2]:MT'
228 -0.913087 GENE b'word[:1]:V'
229 -0.906233 GENE b'word:metalloproteinase'
230 -0.904096 O b'word[-2:]:er'
231 -
232 -
233 -Top negative:
234 --0.366794 O b'lemma[-2:]:21'
235 --0.366794 O b'word[-2:]:21'
236 --0.367406 O b'word[-2:]:rs'
237 --0.369970 GENE b'lemma[-1:]:e'
238 --0.370216 O b'word[-3:]:ors'
239 --0.379214 GENE b'word[-1:]:g'
240 --0.380560 O b'word[:2]:ly'
241 --0.381500 O b'lemma[-2:]:-1'
242 --0.381500 O b'word[-2:]:-1'
243 --0.382487 O b'lemma[-2:]:rs'
244 --0.388022 O b'word[-2:]:63'
245 --0.388022 O b'lemma[-2:]:63'
246 --0.391124 O b'word[-3:]:NOS'
247 --0.391124 O b'lemma[-3:]:nos'
248 --0.395261 O b'word[-3:]:P-1'
249 --0.395261 O b'lemma[-3:]:P-1'
250 --0.395327 O b'word[:3]:tis'
251 --0.396166 O b'word[:3]:lym'
252 --0.396953 O b'lemma[-1:]:s'
253 --0.397075 O b'word[-2:]:MP'
254 --0.409251 O b'word[:1]:c'
255 --0.411906 GENE b'lemma[-1:]:t'
256 --0.412786 O b'lemma:metalloproteinase'
257 --0.412913 O b'word:tissue'
258 --0.415718 O b'word[:2]:fi'
259 --0.418347 GENE b'word[-1:]:t'
260 --0.421337 O b'lemma[-2:]:in'
261 --0.422552 O b'word[:2]:HS'
262 --0.422552 O b'word[:3]:HSP'
263 --0.432876 O b'lemma[-2:]:MP'
264 --0.435752 O b'lemma[-2:]:-B'
265 --0.435752 O b'word[-2:]:-B'
266 --0.437611 O b'word[:3]:sup'
267 --0.438135 GENE b'lemma[-1:]:r'
268 --0.441082 O b'lemma[-2:]:-3'
269 --0.441082 O b'word[-2:]:-3'
270 --0.446614 O b'word[:3]:Gre'
271 --0.456106 GENE b'word[:3]:Ang'
272 --0.459372 O b'word[:2]:se'
273 --0.465484 O b'word[:3]:mor'
274 --0.465575 O b'lemma[-3:]:-10'
275 --0.465575 O b'word[-3:]:-10'
276 --0.467478 O b'word[:2]:li'
277 --0.467808 GENE b'word[:2]:An'
278 --0.469099 O b'lemma[-3:]:pha'
279 --0.469099 O b'word[-3:]:pha'
280 --0.469099 O b'word[-2:]:ha'
281 --0.469099 O b'lemma[-2:]:ha'
282 --0.482003 O b'word[:2]:va'
283 --0.525903 O b'word[:3]:int'
284 --0.531367 O b'word[-1:]:B'
285 --0.532490 O b'lemma[-2:]:-I'
286 --0.532490 O b'word[-2:]:-I'
287 --0.534037 O b'lemma[-1:]:A'
288 --0.535822 O b'word[:2]:AL'
289 --0.543042 O b'word[:3]:ALK'
290 --0.543132 O b'word:endothelial'
291 --0.543132 O b'lemma:endothelial'
292 --0.546994 O b'lemma[-3:]:ing'
293 --0.547612 O b'word[:2]:CC'
294 --0.553984 GENE b'lemma[-1:]:l'
295 --0.565518 O b'word[:2]:mo'
296 --0.568142 O b'lemma:factor'
297 --0.570032 O b'word[:2]:RA'
298 --0.580240 O b'word[-2:]:ta'
299 --0.582775 O b'word[:1]:I'
300 --0.584803 O b'word:fibroblast'
301 --0.590575 O b'lemma:superoxide'
302 --0.590575 O b'word:superoxide'
303 --0.598882 O b'word[-2:]:ES'
304 --0.599564 O b'word[:2]:FG'
305 --0.605306 O b'lemma[-2:]:ta'
306 --0.608000 O b'word[:3]:nec'
307 --0.608210 O b'word[:2]:EC'
308 --0.614308 O b'word:necrosis'
309 --0.614308 O b'lemma:necrosis'
310 --0.616327 O b'word[:3]:cas'
311 --0.624078 O b'lemma[-1:]:G'
312 --0.626598 O b'word[:3]:con'
313 --0.648962 O b'word[:1]:J'
314 --0.657170 O b'word[:2]:tu'
315 --0.663259 O b'word[:3]:SOC'
316 --0.663259 O b'word[:2]:SO'
317 --0.665217 O b'word[:3]:tum'
318 --0.673605 GENE b'word[:1]:i'
319 --0.674339 O b'word[:3]:fib'
320 --0.678405 O b'lemma:dismutase'
321 --0.678405 O b'word:dismutase'
322 --0.679035 O b'word[-1:]:T'
323 --0.685189 O b'word[-2:]:-6'
324 --0.685189 O b'lemma[-2:]:-6'
325 --0.687452 O b'word[:2]:AN'
326 --0.688504 O b'word[:1]:P'
327 --0.691511 O b'word[:3]:tra'
328 --0.693167 O b'word[:2]:JN'
329 --0.693167 O b'word[:3]:JNK'
330 --0.694641 O b'lemma[-2:]:MA'
331 --0.694641 O b'word[-2:]:MA'
332 --0.702467 O b'word[:3]:bet'
333 --0.706543 O b'lemma[-2:]:nk'
334 --0.708396 O b'lemma[-1:]:B'
335 --0.722924 O b'word[:3]:ET-'
336 --0.722924 O b'word[:2]:ET'
337 --0.726088 GENE b'lemma[-1:]:d'
338 --0.729231 O b'word[:2]:ER'
339 --0.734147 O b'word[:2]:IG'
340 --0.734147 O b'word[:3]:IGF'
341 --0.750532 O b'word[:3]:vas'
342 --0.752846 O b'word[:2]:E-'
343 --0.752846 O b'word[:3]:E-c'
344 --0.755338 O b'word[:2]:Sm'
345 --0.756963 O b'word[:2]:MM'
346 --0.756963 O b'word[:3]:MMP'
347 --0.759412 GENE b'lemma[-1:]:h'
348 --0.760020 GENE b'word[:1]:1'
349 --0.766542 O b'lemma[-3:]:tin'
350 --0.766744 O b'word[-3:]:tin'
351 --0.767515 O b'lemma:vascular'
352 --0.767515 O b'word:vascular'
353 --0.768256 O b'word[:2]:Tr'
354 --0.777292 O b'word:morphogenetic'
355 --0.777292 O b'lemma:morphogenetic'
356 --0.780433 O b'word[:3]:Sma'
357 --0.782127 O b'word[-1:]:7'
358 --0.782127 O b'lemma[-1:]:7'
359 --0.782575 O b'word[:2]:EM'
360 --0.782575 O b'word[:3]:EMT'
361 --0.796060 O b'word[-3:]:Fas'
362 --0.801875 O b'word[:3]:Rho'
363 --0.801875 O b'word[:2]:Rh'
364 --0.802815 O b'word[:3]:Tra'
365 --0.809954 O b'lemma:connective'
366 --0.809954 O b'word:connective'
367 --0.818483 O b'word[:3]:gre'
368 --0.818495 O b'word[-3:]:ase'
369 --0.823615 O b'word[:3]:ser'
370 --0.824815 O b'word[:2]:c-'
371 --0.832235 O b'word[:3]:Fas'
372 --0.838616 O b'word[:3]:ANG'
373 --0.841970 O b'word[:1]:A'
374 --0.846024 O b'word:Fas'
375 --0.860588 O b'word[:2]:Pi'
376 --0.868045 O b'word[:2]:gr'
377 --0.868310 O b'word[-1:]:3'
378 --0.868310 O b'lemma[-1:]:3'
379 --0.869209 O b'word[-1:]:2'
380 --0.869209 O b'lemma[-1:]:2'
381 --0.871073 O b'lemma:bone'
382 --0.880174 O b'word[-2:]:GF'
383 --0.887924 O b'word[:3]:cyc'
384 --0.893861 O b'lemma[-3:]:HGF'
385 --0.896107 GENE b'lemma:beta'
386 --0.896107 GENE b'word:beta'
387 --0.903338 O b'lemma[-1:]:1'
388 --0.903338 O b'word[-1:]:1'
389 --0.906233 O b'word:metalloproteinase'
390 --0.913087 O b'word[:1]:V'
391 --0.913861 O b'word[:2]:MT'
392 --0.917083 O b'lemma[-3:]:eta'
393 --0.917083 O b'word[-3:]:eta'
394 --0.956459 O b'lemma[-3:]:ace'
395 --0.970620 O b'word[-3:]:F-2'
396 --0.974536 O b'lemma[-1:]:8'
397 --0.974536 O b'word[-1:]:8'
398 --0.978677 GENE b'word[:1]:a'
399 --0.993303 O b'word[:2]:NO'
400 --1.008418 O b'word[:3]:ins'
401 --1.046833 O b'lemma[-2:]:10'
402 --1.046833 O b'word[-2:]:10'
403 --1.073379 O b'word[-2:]:in'
404 --1.079711 O b'word[:3]:alp'
405 --1.089527 O b'word[:2]:BM'
406 --1.089527 O b'word[:3]:BMP'
407 --1.109123 O b'word[:1]:M'
408 --1.111781 O b'lemma:serine'
409 --1.127347 O b'word[:2]:en'
410 --1.139320 O b'word[:3]:TNF'
411 --1.139320 O b'word[:2]:TN'
412 --1.150437 O b'lemma[-1:]:I'
413 --1.153127 O b'word[:3]:TGF'
414 --1.153127 O b'word[:2]:TG'
415 --1.212553 O b'word[:1]:H'
416 --1.238688 O b'word[:3]:lig'
417 --1.259804 O b'lemma[-3:]:yte'
418 --1.300737 GENE b'word[-1:]:d'
419 --1.304592 O b'word[:3]:ext'
420 --1.305260 O b'lemma[-1:]:N'
421 --1.310759 O b'word[-3:]:yte'
422 --1.363564 O b'word[:3]:che'
423 --1.368611 O b'word[:3]:bon'
424 --1.383684 O b'word[:3]:IFN'
425 --1.383684 O b'word[:2]:IF'
426 --1.387690 O b'word:transforming'
427 --1.407013 O b'word[:2]:IL'
428 --1.475005 O b'word[:1]:E'
429 --1.504231 O b'lemma:ligand'
430 --1.573694 GENE b'word[-1:]:s'
431 --1.667293 O b'word:factor'
432 --1.668226 O b'word[:1]:C'
433 --1.933060 O b'word:receptors'
434 -
1 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
2 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
3 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
4 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
5 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
6 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
7 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O']
8 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
9 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
10 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
11 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
12 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
13 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
14 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
15 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
16 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
17 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
18 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
19 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
20 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
21 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
22 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
23 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
24 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
25 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
26 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
27 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
28 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
29 -['O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
30 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
31 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
32 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
33 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
34 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
35 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
36 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
37 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
38 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
39 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
40 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
41 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
42 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
43 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
44 -['O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
45 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
46 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
47 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
48 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
49 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
50 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
51 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
52 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
53 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
54 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
55 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
56 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
57 -['O', 'O', 'O', 'O', 'O', 'O', 'O']
58 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
59 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
60 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
61 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
62 -['O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
63 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
64 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
65 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
66 -['O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
67 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
68 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
69 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
70 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
71 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
72 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
73 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
74 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
75 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
76 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
77 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
78 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
79 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
80 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
81 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
82 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
83 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
84 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
85 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
86 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
87 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
88 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
89 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
90 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
91 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
92 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
93 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
94 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
95 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
96 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
97 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
98 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
99 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
100 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
101 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
102 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
103 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
104 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
105 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
106 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
107 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
108 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
109 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
110 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
111 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
112 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
113 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
114 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
115 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
116 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
117 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
118 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
119 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
120 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
121 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
122 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
123 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'O', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
124 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
125 -['O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
126 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
127 -['O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
128 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
129 -['O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
130 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
131 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
132 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
133 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
134 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
135 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
136 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
137 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
138 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
139 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
140 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
141 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
142 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
143 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
144 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
145 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
146 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
147 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
148 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
149 -['O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
150 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
151 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
152 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
153 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
154 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
155 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
156 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
157 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
158 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
159 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
160 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
161 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
162 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
163 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
164 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
165 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
166 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
167 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
168 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
169 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
170 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
171 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
172 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
173 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
174 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O']
175 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
176 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
177 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
178 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
179 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O']
180 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
181 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
182 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
183 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
184 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
185 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
186 -['O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
187 -['GENE', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
188 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
189 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
190 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
191 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
192 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
193 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
194 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
195 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
196 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
197 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
198 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
199 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
200 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
201 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
202 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
203 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
204 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
205 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
206 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
207 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
208 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
209 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
210 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
211 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
212 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
213 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
214 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
215 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
216 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
217 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O']
218 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
219 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
220 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
221 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
222 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
223 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
224 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
225 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
226 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
227 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
228 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
229 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
230 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O']
231 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
232 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
233 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
234 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
235 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
236 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
237 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
238 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
239 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
240 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
241 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
242 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
243 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
244 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
245 -['O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
246 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
247 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O']
248 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
249 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
250 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
251 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
252 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
253 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
254 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
255 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
256 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
257 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
258 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
259 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
260 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
261 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
262 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
263 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
264 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
265 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
266 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
267 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
268 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
269 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
270 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
271 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
272 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
273 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
274 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
275 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
276 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
277 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
278 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
279 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
280 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
281 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
282 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
283 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
284 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
285 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
286 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
287 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
288 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
289 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O']
290 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
291 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
292 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
293 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
294 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
295 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
296 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
297 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
298 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
299 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
300 -['O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
301 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
302 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
303 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
304 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
305 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
306 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
307 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
308 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
309 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
310 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
311 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
312 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
313 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
1 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
2 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
3 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
4 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
5 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
6 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
7 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O']
8 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
9 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
10 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
11 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
12 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
13 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
14 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
15 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
16 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O']
17 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
18 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
19 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
20 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
21 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
22 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
23 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
24 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
25 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
26 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
27 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
28 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
29 -['O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
30 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
31 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
32 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
33 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
34 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
35 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
36 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
37 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
38 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
39 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
40 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
41 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
42 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
43 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
44 -['O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
45 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
46 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
47 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
48 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
49 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
50 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
51 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
52 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
53 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
54 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
55 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
56 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
57 -['O', 'O', 'O', 'O', 'O', 'O', 'O']
58 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
59 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
60 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
61 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
62 -['O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
63 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
64 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
65 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
66 -['O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
67 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
68 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
69 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
70 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
71 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
72 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
73 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
74 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
75 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
76 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
77 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
78 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
79 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
80 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
81 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
82 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
83 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
84 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
85 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
86 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
87 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
88 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
89 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
90 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
91 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
92 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
93 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
94 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
95 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
96 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
97 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
98 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
99 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
100 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
101 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
102 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
103 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
104 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
105 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
106 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
107 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
108 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
109 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
110 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
111 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
112 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
113 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
114 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
115 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
116 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
117 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
118 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
119 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
120 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
121 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
122 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
123 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
124 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
125 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
126 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
127 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
128 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
129 -['O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
130 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
131 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
132 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
133 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
134 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
135 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
136 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
137 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
138 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
139 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
140 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
141 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
142 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
143 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
144 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
145 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
146 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
147 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
148 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
149 -['O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
150 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
151 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
152 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
153 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
154 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
155 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
156 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
157 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
158 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
159 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
160 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O']
161 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
162 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
163 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
164 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
165 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
166 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
167 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
168 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
169 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
170 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
171 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
172 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
173 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
174 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O']
175 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
176 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
177 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
178 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
179 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O']
180 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
181 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
182 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
183 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
184 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
185 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
186 -['O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
187 -['O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
188 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
189 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
190 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
191 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
192 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
193 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
194 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
195 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
196 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
197 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O', 'GENE', 'O']
198 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O']
199 -['O', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
200 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
201 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
202 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O']
203 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
204 -['O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
205 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
206 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
207 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
208 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
209 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
210 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
211 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
212 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
213 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
214 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
215 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
216 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
217 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O']
218 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
219 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
220 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
221 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
222 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
223 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
224 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
225 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
226 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
227 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
228 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
229 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
230 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O']
231 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
232 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
233 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
234 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
235 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
236 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
237 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
238 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
239 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
240 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
241 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
242 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
243 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
244 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
245 -['O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
246 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
247 -['O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O']
248 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O']
249 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
250 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
251 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
252 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
253 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
254 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
255 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
256 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O']
257 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
258 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
259 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
260 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O']
261 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
262 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
263 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
264 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
265 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
266 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
267 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
268 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
269 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
270 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
271 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
272 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
273 -['GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
274 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
275 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
276 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
277 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
278 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
279 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
280 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
281 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
282 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
283 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
284 -['O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O']
285 -['O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
286 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
287 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
288 -['O', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
289 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'O', 'O', 'O', 'O']
290 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
291 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
292 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
293 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
294 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O']
295 -['O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
296 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
297 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O']
298 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
299 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
300 -['O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
301 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
302 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
303 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
304 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
305 -['GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
306 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
307 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
308 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
309 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'GENE', 'GENE', 'GENE', 'O', 'GENE', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O']
310 -['O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O']
311 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'GENE', 'O']
312 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'GENE', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
313 -['O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
1 -# -*- coding: UTF-8 -*-
2 -
3 -import os
4 -from itertools import chain
5 -from optparse import OptionParser
6 -from time import time
7 -from collections import Counter
8 -
9 -import nltk
10 -import sklearn
11 -import scipy.stats
12 -import sys
13 -
14 -from sklearn.externals import joblib
15 -from sklearn.metrics import make_scorer
16 -from sklearn.cross_validation import cross_val_score
17 -from sklearn.grid_search import RandomizedSearchCV
18 -
19 -import sklearn_crfsuite
20 -from sklearn_crfsuite import scorers
21 -from sklearn_crfsuite import metrics
22 -
23 -from nltk.corpus import stopwords
24 -
25 -
26 -# Objective
27 -# Training and evaluation of CRFs with sklearn-crfsuite.
28 -#
29 -# Input parameters
30 -# --inputPath=PATH Path of training and test data set
31 -# --trainingFile File with training data set
32 -# --testFile File with test data set
33 -# --outputPath=PATH Output path to place output files
34 -# --filteringStopWords Filtering stop words
35 -# --filterSymbols Filtering punctuation marks
36 -
37 -# Output
38 -# 1) Best model
39 -
40 -# Examples
41 -# Sentences
42 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile sentencesTraining.txt --testFile sentencesTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS > output.TrainingTestingCRF.20161106_1.txt
43 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile sentencesTraining.txt --testFile sentencesTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterStopWords > output.TrainingTestingCRF.20161106_2.txt
44 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile sentencesTraining.txt --testFile sentencesTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterSymbols > output.TrainingTestingCRF.20161106_3.txt
45 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile sentencesTraining.txt --testFile sentencesTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterStopWords --filterSymbols > output.TrainingTestingCRF.20161106_4.txt
46 -
47 -# Aspects
48 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile aspectsTraining.txt --testFile aspectsTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS > output.TrainingTestingCRF.20161106_5.txt
49 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile aspectsTraining.txt --testFile aspectsTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterStopWords > output.TrainingTestingCRF.20161106_6.txt
50 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile aspectsTraining.txt --testFile aspectsTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterSymbols > output.TrainingTestingCRF.20161106_7.txt
51 -# C:\Anaconda2\python trainingTesting_Sklearn_crfsuite.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS\trainingTest_Datasets --trainingFile aspectsTraining.txt --testFile aspectsTest.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\AUTOMATIC_SUMMARIZATION_TFS\trainingTest_CRF_TERM_TAGS --filterStopWords --filterSymbols > output.TrainingTestingCRF.20161106_8.txt
52 -
53 -#################################
54 -# FUNCTIONS #
55 -#################################
56 -
57 -def wordSize(text):
58 - lWord = len(text)
59 - if lWord == 1:
60 - return '1'
61 - elif lWord == 2:
62 - return '2'
63 - elif lWord == 3:
64 - return '3'
65 - elif lWord == 4:
66 - return '4'
67 - elif lWord == 5:
68 - return '5'
69 - elif 6 <= lWord <= 10:
70 - return '6-10'
71 - elif 11 <= lWord <= 15:
72 - return '11-15'
73 - elif 16 <= lWord <= 20:
74 - return '16-20'
75 - elif 21 <= lWord <= 30:
76 - return '21-30'
77 - else:
78 - return '>30'
79 -
80 -def hasUpperLower(text):
81 - has = False
82 - if len(text) < 3:
83 - return False
84 - regexUp = nltk.re.compile('[A-Z]')
85 - regexLo = nltk.re.compile('[a-z]')
86 - if (regexUp.search(text) != None) and (regexLo.search(text) != None):
87 - has = True
88 - return has
89 -
90 -def hasDigit(text):
91 - has = False
92 - if len(text) < 3:
93 - return False
94 - myRegex = nltk.re.compile('[0-9]')
95 - if myRegex.search(text) != None:
96 - has = True
97 - return has
98 -
99 -
100 -def hasNonAlphaNum(text):
101 - has = False
102 - if len(text) < 3:
103 - return False
104 - myRegex = nltk.re.compile('\W')
105 - if myRegex.search(text) != None:
106 - has = True
107 - return has
108 -
109 -def word2features(sent, i):
110 - # print "i: " + str(i)
111 - # print "sent[i]" + sent[i]
112 - listElem = sent[i].split('|')
113 - word = listElem[0]
114 - lemma = listElem[1]
115 - postag = listElem[2]
116 -
117 - features = {
118 - # Names of TF and genes change by lower and upper characters: 'word.lower()': word.lower(),
119 - # Suffixes
120 - 'word[-3:]': word[-3:],
121 - 'word[-2:]': word[-2:],
122 - 'word[-1:]': word[-1:],
123 - 'word.isupper()': word.isupper(),
124 - 'word.istitle()': word.istitle(),
125 - 'word.hasDigit()': hasDigit(word),
126 - 'word.hasNonAlphaNum': hasNonAlphaNum(word),
127 - # 'word.hasUpperLower': hasUpperLower(word),
128 - #'wordSize': wordSize(word),
129 - # 'word.isdigit()': word.isdigit(),
130 - 'word': word,
131 - 'lemma': lemma,
132 - 'lemma[-3:]': lemma[-3:],
133 - 'lemma[-2:]': lemma[-2:],
134 - 'lemma[-1:]': lemma[-1:],
135 - 'postag': postag,
136 - # Prefixes
137 - 'postag[:2]': postag[:2],
138 - 'postag[:1]': postag[:1],
139 - }
140 - if i > 0:
141 - listElem = sent[i - 1].split('|')
142 - word1 = listElem[0]
143 - lemma1 = listElem[1]
144 - postag1 = listElem[2]
145 - features.update({
146 - '-1:word.lower()': word1.lower(),
147 - '-1:word.istitle()': word1.istitle(),
148 - '-1:word.isupper()': word1.isupper(),
149 - '-1:word.hasDigit()': hasDigit(word1),
150 - '-1:word.hasNonAlphaNum': hasNonAlphaNum(word1),
151 - # '-1:word.hasUpperLower': hasUpperLower(word1),
152 - '-1:word': word1,
153 - '-1:lemma': lemma1,
154 - '-1:postag': postag1,
155 - '-1:postag[:2]': postag1[:2],
156 - '-1:postag[:1]': postag1[:1],
157 - })
158 - # else:
159 - # features['BOS'] = True
160 -
161 - if i < len(sent) - 1:
162 - listElem = sent[i + 1].split('|')
163 - word1 = listElem[0]
164 - lemma1 = listElem[1]
165 - postag1 = listElem[2]
166 - features.update({
167 - '+1:word.lower()': word1.lower(),
168 - '+1:word.istitle()': word1.istitle(),
169 - '+1:word.isupper()': word1.isupper(),
170 - '+1:word.hasDigit()': hasDigit(word1),
171 - '+1:word.hasNonAlphaNum': hasNonAlphaNum(word1),
172 - # '+1:word.hasUpperLower': hasUpperLower(word1),
173 - '+1:word': word1,
174 - '+1:lemma': lemma1,
175 - '+1:postag': postag1,
176 - '+1:postag[:2]': postag1[:2],
177 - '+1:postag[:1]': postag1[:1],
178 - })
179 - # else:
180 - # features['EOS'] = True
181 - if i > 1:
182 - listElem = sent[i - 2].split('|')
183 - word2 = listElem[0]
184 - lemma2 = listElem[1]
185 - postag2 = listElem[2]
186 - features.update({
187 - '-2:word.lower()': word2.lower(),
188 - '-2:word.istitle()': word2.istitle(),
189 - '-2:word.isupper()': word2.isupper(),
190 - '-2:word.hasDigit()': hasDigit(word2),
191 - '-2:word.hasNonAlphaNum': hasNonAlphaNum(word2),
192 - # '-2:word.hasUpperLower': hasUpperLower(word2),
193 - '-2:word': word2,
194 - '-2:lemma': lemma2,
195 - '-2:postag': postag2,
196 - '-2:postag[:2]': postag2[:2],
197 - '-2:postag[:1]': postag2[:1],
198 - })
199 -
200 - if i < len(sent) - 2:
201 - listElem = sent[i + 2].split('|')
202 - word2 = listElem[0]
203 - lemma2 = listElem[1]
204 - postag2 = listElem[2]
205 - features.update({
206 - '+2:word.lower()': word2.lower(),
207 - '+2:word.istitle()': word2.istitle(),
208 - '+2:word.isupper()': word2.isupper(),
209 - '+2:word.hasDigit()': hasDigit(word2),
210 - '+2:word.hasNonAlphaNum': hasNonAlphaNum(word2),
211 - # '+2:word.hasUpperLower': hasUpperLower(word2),
212 - '+2:word': word2,
213 - '+2:lemma': lemma2,
214 - '+2:postag': postag2,
215 - '+2:postag[:2]': postag2[:2],
216 - '+2:postag[:1]': postag2[:1],
217 - })
218 -
219 - trigrams = False
220 - if trigrams:
221 - if i > 2:
222 - listElem = sent[i - 3].split('|')
223 - word3 = listElem[0]
224 - lemma3 = listElem[1]
225 - postag3 = listElem[2]
226 - features.update({
227 - '-3:word.lower()': word3.lower(),
228 - '-3:word.istitle()': word3.istitle(),
229 - '-3:word.isupper()': word3.isupper(),
230 - '-3:word.hasDigit()': hasDigit(word3),
231 - '-3:word.hasNonAlphaNum': hasNonAlphaNum(word3),
232 - # '-3:word.hasUpperLower': hasUpperLower(word3),
233 - '-3:word': word3,
234 - '-3:lemma': lemma3,
235 - '-3:postag': postag3,
236 - '-3:postag[:2]': postag3[:2],
237 - '-3:postag[:1]': postag3[:1],
238 - })
239 -
240 - if i < len(sent) - 3:
241 - listElem = sent[i + 3].split('|')
242 - word3 = listElem[0]
243 - lemma3 = listElem[1]
244 - postag3 = listElem[2]
245 - features.update({
246 - '+3:word.lower()': word3.lower(),
247 - '+3:word.istitle()': word3.istitle(),
248 - '+3:word.isupper()': word3.isupper(),
249 - '+3:word.hasDigit()': hasDigit(word3),
250 - '+3:word.hasNonAlphaNum': hasNonAlphaNum(word3),
251 - # '+3:word.hasUpperLower': hasUpperLower(word3),
252 - '+3:word': word3,
253 - '+3:lemma': lemma3,
254 - '+3:postag': postag3,
255 - '+3:postag[:2]': postag3[:2],
256 - '+3:postag[:1]': postag3[:1],
257 - })
258 -
259 - return features
260 -
261 -
262 -def sent2features(sent):
263 - return [word2features(sent, i) for i in range(len(sent))]
264 -
265 -
266 -def sent2labels(sent):
267 - return [elem.split('|')[3] for elem in sent]
268 - # return [label for token, postag, label in sent]
269 -
270 -
271 -def sent2tokens(sent):
272 - return [token for token, postag, label in sent]
273 -
274 -
275 -def print_transitions(trans_features, f):
276 - for (label_from, label_to), weight in trans_features:
277 - # f.write("%-6s -> %-7s %0.6f\n" % (label_from, label_to, weight))
278 - # f.write("label_from :" + label_from)
279 - # f.write("label_to :" + label_to)
280 - # f.write("label_weight :" + weight)
281 - # f.write("{} -> {} {:0.6f}\n".format(label_from.encode("utf-8"), label_to.encode("utf-8"), weight))
282 - f.write("{:6} -> {:7} {:0.6f}\n".format(label_from, label_to, weight))
283 -
284 -
285 -def print_state_features(state_features, f):
286 - for (attr, label), weight in state_features:
287 - # f.write("%0.6f %-8s %s\n" % (weight, label, attr))
288 - # f.write(attr.encode("utf-8"))
289 - # '{:06.2f}'.format(3.141592653589793)
290 - f.write("{:0.6f} {:8} {}\n".format(weight, label, attr.encode("utf-8")))
291 -
292 -
293 -__author__ = 'CMendezC'
294 -
295 -##########################################
296 -# MAIN PROGRAM #
297 -##########################################
298 -
299 -if __name__ == "__main__":
300 - # Defining parameters
301 - parser = OptionParser()
302 - parser.add_option("--inputPath", dest="inputPath",
303 - help="Path of training data set", metavar="PATH")
304 - parser.add_option("--outputPath", dest="outputPath",
305 - help="Output path to place output files",
306 - metavar="PATH")
307 - parser.add_option("--trainingFile", dest="trainingFile",
308 - help="File with training data set", metavar="FILE")
309 - parser.add_option("--testFile", dest="testFile",
310 - help="File with test data set", metavar="FILE")
311 - parser.add_option("--filterStopWords", default=False,
312 - action="store_true", dest="filterStopWords",
313 - help="Filtering stop words")
314 - parser.add_option("--filterSymbols", default=False,
315 - action="store_true", dest="filterSymbols",
316 - help="Filtering punctuation marks")
317 -
318 - (options, args) = parser.parse_args()
319 - if len(args) > 0:
320 - parser.error("Any parameter given.")
321 - sys.exit(1)
322 -
323 - print('-------------------------------- PARAMETERS --------------------------------')
324 - print("Path of training data set: " + options.inputPath)
325 - print("File with training data set: " + str(options.trainingFile))
326 - print("Path of test data set: " + options.inputPath)
327 - print("File with test data set: " + str(options.testFile))
328 - print("Filtering stop words: " + str(options.filterStopWords))
329 - symbols = ['.', ',', ':', ';', '?', '!', '\'', '"', '<', '>', '(', ')', '-', '_', '/', '\\', '¿', '¡', '+', '{',
330 - '}', '[', ']', '*', '%', '$', '#', '&', '°', '`', '...']
331 - print("Filtering symbols " + str(symbols) + ': ' + str(options.filterSymbols))
332 -
333 - print('-------------------------------- PROCESSING --------------------------------')
334 - print('Reading corpus...')
335 - t0 = time()
336 -
337 - sentencesTrainingData = []
338 - sentencesTestData = []
339 -
340 - stopwords = [word.decode('utf-8') for word in stopwords.words('english')]
341 -
342 - with open(os.path.join(options.inputPath, options.trainingFile), "r") as iFile:
343 - # with open(os.path.join(options.inputPath, options.trainingFile), "r", encoding="utf-8", errors='replace') as iFile:
344 - for line in iFile.readlines():
345 - listLine = []
346 - line = line.decode("utf-8")
347 - for token in line.strip('\n').split():
348 - if options.filterStopWords:
349 - listToken = token.split('|')
350 - lemma = listToken[1]
351 - # Original: if lemma in stopwords.words('english'):
352 - # trainingTesting_Sklearn_crfsuite.py:269:
353 - # UnicodeWarning: Unicode equal comparison failed to
354 - # convert both arguments to Unicode -
355 - # interpreting them as being unequal
356 - if lemma in stopwords:
357 - continue
358 - if options.filterSymbols:
359 - listToken = token.split('|')
360 - lemma = listToken[1]
361 - if lemma in symbols:
362 - # if lemma == ',':
363 - # print "Coma , identificada"
364 - continue
365 - listLine.append(token)
366 - sentencesTrainingData.append(listLine)
367 - print " Sentences training data: " + str(len(sentencesTrainingData))
368 - # print sentencesTrainingData[0]
369 -
370 - with open(os.path.join(options.inputPath, options.testFile), "r") as iFile:
371 - # with open(os.path.join(options.inputPath, options.testFile), "r", encoding="utf-8", errors='replace') as iFile:
372 - for line in iFile.readlines():
373 - listLine = []
374 - line = line.decode("utf-8")
375 - for token in line.strip('\n').split():
376 - if options.filterStopWords:
377 - listToken = token.split('|')
378 - lemma = listToken[1]
379 - # Original if lemma in stopwords.words('english'):
380 - if lemma in stopwords:
381 - continue
382 - if options.filterSymbols:
383 - listToken = token.split('|')
384 - lemma = listToken[1]
385 - if lemma in symbols:
386 - # if lemma == ',':
387 - # print "Coma , identificada"
388 - continue
389 - listLine.append(token)
390 - sentencesTestData.append(listLine)
391 - print " Sentences test data: " + str(len(sentencesTestData))
392 - # print sentencesTestData[0]
393 -
394 - print("Reading corpus done in: %fs" % (time() - t0))
395 -
396 - print(sent2features(sentencesTrainingData[0])[0])
397 - print(sent2features(sentencesTestData[0])[0])
398 - # print(sent2labels(sentencesTrainingData[0]))
399 - # print(sent2labels(sentencesTestData[0]))
400 - t0 = time()
401 -
402 - X_train = [sent2features(s) for s in sentencesTrainingData]
403 - y_train = [sent2labels(s) for s in sentencesTrainingData]
404 -
405 - X_test = [sent2features(s) for s in sentencesTestData]
406 - # print X_test
407 - y_test = [sent2labels(s) for s in sentencesTestData]
408 -
409 - # Fixed parameters
410 - # crf = sklearn_crfsuite.CRF(
411 - # algorithm='lbfgs',
412 - # c1=0.1,
413 - # c2=0.1,
414 - # max_iterations=100,
415 - # all_possible_transitions=True
416 - # )
417 -
418 - # Hyperparameter Optimization
419 - crf = sklearn_crfsuite.CRF(
420 - algorithm='lbfgs',
421 - max_iterations=100,
422 - all_possible_transitions=True
423 - )
424 - params_space = {
425 - 'c1': scipy.stats.expon(scale=0.5),
426 - 'c2': scipy.stats.expon(scale=0.05),
427 - }
428 -
429 - # Original: labels = list(crf.classes_)
430 - # Original: labels.remove('O')
431 - labels = list(['GENE'])
432 -
433 - # use the same metric for evaluation
434 - f1_scorer = make_scorer(metrics.flat_f1_score,
435 - average='weighted', labels=labels)
436 -
437 - # search
438 - rs = RandomizedSearchCV(crf, params_space,
439 - cv=10,
440 - verbose=3,
441 - n_jobs=-1,
442 - n_iter=20,
443 - # n_iter=50,
444 - scoring=f1_scorer)
445 - rs.fit(X_train, y_train)
446 -
447 - # Fixed parameters
448 - # crf.fit(X_train, y_train)
449 -
450 - # Best hiperparameters
451 - # crf = rs.best_estimator_
452 - nameReport = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.filterStopWords) + '.fSymbols_' + str(
453 - options.filterSymbols) + '.txt')
454 - with open(os.path.join(options.outputPath, "reports", "report_" + nameReport), mode="w") as oFile:
455 - oFile.write("********** TRAINING AND TESTING REPORT **********\n")
456 - oFile.write("Training file: " + options.trainingFile + '\n')
457 - oFile.write('\n')
458 - oFile.write('best params:' + str(rs.best_params_) + '\n')
459 - oFile.write('best CV score:' + str(rs.best_score_) + '\n')
460 - oFile.write('model size: {:0.2f}M\n'.format(rs.best_estimator_.size_ / 1000000))
461 -
462 - print("Training done in: %fs" % (time() - t0))
463 - t0 = time()
464 -
465 - # Update best crf
466 - crf = rs.best_estimator_
467 -
468 - # Saving model
469 - print(" Saving training model...")
470 - t1 = time()
471 - nameModel = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.filterStopWords) + '.fSymbols_' + str(
472 - options.filterSymbols) + '.mod')
473 - joblib.dump(crf, os.path.join(options.outputPath, "models", nameModel))
474 - print(" Saving training model done in: %fs" % (time() - t1))
475 -
476 - # Evaluation against test data
477 - y_pred = crf.predict(X_test)
478 - print("*********************************")
479 - name = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.filterStopWords) + '.fSymbols_' + str(
480 - options.filterSymbols) + '.txt')
481 - with open(os.path.join(options.outputPath, "reports", "y_pred_" + name), "w") as oFile:
482 - for y in y_pred:
483 - oFile.write(str(y) + '\n')
484 -
485 - print("*********************************")
486 - name = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.filterStopWords) + '.fSymbols_' + str(
487 - options.filterSymbols) + '.txt')
488 - with open(os.path.join(options.outputPath, "reports", "y_test_" + name), "w") as oFile:
489 - for y in y_test:
490 - oFile.write(str(y) + '\n')
491 -
492 - print("Prediction done in: %fs" % (time() - t0))
493 -
494 - # labels = list(crf.classes_)
495 - # labels.remove('O')
496 -
497 - with open(os.path.join(options.outputPath, "reports", "report_" + nameReport), mode="a") as oFile:
498 - oFile.write('\n')
499 - oFile.write("Flat F1: " + str(metrics.flat_f1_score(y_test, y_pred, average='weighted', labels=labels)))
500 - oFile.write('\n')
501 - # labels = list(crf.classes_)
502 - sorted_labels = sorted(
503 - labels,
504 - key=lambda name: (name[1:], name[0])
505 - )
506 - oFile.write(metrics.flat_classification_report(
507 - y_test, y_pred, labels=sorted_labels, digits=3
508 - ))
509 - oFile.write('\n')
510 -
511 - oFile.write("\nTop likely transitions:\n")
512 - print_transitions(Counter(crf.transition_features_).most_common(50), oFile)
513 - oFile.write('\n')
514 -
515 - oFile.write("\nTop unlikely transitions:\n")
516 - print_transitions(Counter(crf.transition_features_).most_common()[-50:], oFile)
517 - oFile.write('\n')
518 -
519 - oFile.write("\nTop positive:\n")
520 - print_state_features(Counter(crf.state_features_).most_common(200), oFile)
521 - oFile.write('\n')
522 -
523 - oFile.write("\nTop negative:\n")
524 - print_state_features(Counter(crf.state_features_).most_common()[-200:], oFile)
525 - oFile.write('\n')
...@@ -49,12 +49,6 @@ from nltk.corpus import stopwords ...@@ -49,12 +49,6 @@ from nltk.corpus import stopwords
49 ################################# 49 #################################
50 # FUNCTIONS # 50 # FUNCTIONS #
51 ################################# 51 #################################
52 -def endsConLow(word):
53 - miregex = re.compile(r'[^aeiouA-Z0-9]$')
54 - if miregex.search(word):
55 - return True
56 - else:
57 - return False
58 52
59 def word2features(sent, i): 53 def word2features(sent, i):
60 listElem = sent[i].split('|') 54 listElem = sent[i].split('|')
...@@ -63,21 +57,9 @@ def word2features(sent, i): ...@@ -63,21 +57,9 @@ def word2features(sent, i):
63 postag = listElem[2] 57 postag = listElem[2]
64 58
65 features = { 59 features = {
66 - # Suffixes
67 - 'word[-3:]': word[-3:],
68 - 'word[-2:]': word[-2:],
69 - 'word[-1:]': word[-1:],
70 - #'word.isupper()': word.isupper(),
71 'word': word, 60 'word': word,
72 - 'lemma': lemma, 61 + #'lemma': lemma,
73 - 'postag': postag, 62 + #'postag': postag,
74 - 'lemma[-3:]': lemma[-3:],
75 - 'lemma[-2:]': lemma[-2:],
76 - 'lemma[-1:]': lemma[-1:],
77 - 'word[:3]': word[:3],
78 - 'word[:2]': word[:2],
79 - 'word[:1]': word[:1],
80 - 'endsConLow()={}'.format(endsConLow(word)): endsConLow(word),
81 } 63 }
82 if i > 0: 64 if i > 0:
83 listElem = sent[i - 1].split('|') 65 listElem = sent[i - 1].split('|')
...@@ -86,8 +68,8 @@ def word2features(sent, i): ...@@ -86,8 +68,8 @@ def word2features(sent, i):
86 postag1 = listElem[2] 68 postag1 = listElem[2]
87 features.update({ 69 features.update({
88 '-1:word': word1, 70 '-1:word': word1,
89 - '-1:lemma': lemma1, 71 + #'-1:lemma': lemma1,
90 - '-1:postag': postag1, 72 + #'-1:postag': postag1,
91 }) 73 })
92 74
93 if i < len(sent) - 1: 75 if i < len(sent) - 1:
...@@ -97,55 +79,10 @@ def word2features(sent, i): ...@@ -97,55 +79,10 @@ def word2features(sent, i):
97 postag1 = listElem[2] 79 postag1 = listElem[2]
98 features.update({ 80 features.update({
99 '+1:word': word1, 81 '+1:word': word1,
100 - '+1:lemma': lemma1, 82 + #'+1:lemma': lemma1,
101 - '+1:postag': postag1, 83 + #'+1:postag': postag1,
102 }) 84 })
103 85
104 - '''
105 - if i > 1:
106 - listElem = sent[i - 2].split('|')
107 - word2 = listElem[0]
108 - lemma2 = listElem[1]
109 - postag2 = listElem[2]
110 - features.update({
111 - '-2:word': word2,
112 - '-2:lemma': lemma2,
113 - })
114 -
115 - if i < len(sent) - 2:
116 - listElem = sent[i + 2].split('|')
117 - word2 = listElem[0]
118 - lemma2 = listElem[1]
119 - postag2 = listElem[2]
120 - features.update({
121 - '+2:word': word2,
122 - '+2:lemma': lemma2,
123 - })
124 -
125 - trigrams = False
126 - if trigrams:
127 - if i > 2:
128 - listElem = sent[i - 3].split('|')
129 - word3 = listElem[0]
130 - lemma3 = listElem[1]
131 - postag3 = listElem[2]
132 - features.update({
133 - '-3:word': word3,
134 - '-3:lemma': lemma3,
135 - })
136 -
137 - if i < len(sent) - 3:
138 - listElem = sent[i + 3].split('|')
139 - word3 = listElem[0]
140 - lemma3 = listElem[1]
141 - postag3 = listElem[2]
142 - features.update({
143 - '+3:word': word3,
144 - '+3:lemma': lemma3,
145 - })
146 - '''
147 - return features
148 -
149 86
150 def sent2features(sent): 87 def sent2features(sent):
151 return [word2features(sent, i) for i in range(len(sent))] 88 return [word2features(sent, i) for i in range(len(sent))]
...@@ -271,24 +208,13 @@ if __name__ == "__main__": ...@@ -271,24 +208,13 @@ if __name__ == "__main__":
271 y_test = [sent2labels(s) for s in sentencesTestData] 208 y_test = [sent2labels(s) for s in sentencesTestData]
272 209
273 # Fixed parameters 210 # Fixed parameters
274 - # crf = sklearn_crfsuite.CRF(
275 - # algorithm='lbfgs',
276 - # c1=0.1,
277 - # c2=0.1,
278 - # max_iterations=100,
279 - # all_possible_transitions=True
280 - # )
281 -
282 - # Hyperparameter Optimization
283 crf = sklearn_crfsuite.CRF( 211 crf = sklearn_crfsuite.CRF(
284 algorithm='lbfgs', 212 algorithm='lbfgs',
213 + c1=0.1,
214 + c2=0.1,
285 max_iterations=100, 215 max_iterations=100,
286 all_possible_transitions=True 216 all_possible_transitions=True
287 ) 217 )
288 - params_space = {
289 - 'c1': scipy.stats.expon(scale=0.5),
290 - 'c2': scipy.stats.expon(scale=0.05),
291 - }
292 218
293 # Original: labels = list(crf.classes_) 219 # Original: labels = list(crf.classes_)
294 # Original: labels.remove('O') 220 # Original: labels.remove('O')
...@@ -298,18 +224,8 @@ if __name__ == "__main__": ...@@ -298,18 +224,8 @@ if __name__ == "__main__":
298 f1_scorer = make_scorer(metrics.flat_f1_score, 224 f1_scorer = make_scorer(metrics.flat_f1_score,
299 average='weighted', labels=labels) 225 average='weighted', labels=labels)
300 226
301 - # search
302 - rs = RandomizedSearchCV(crf, params_space,
303 - cv=10,
304 - verbose=3,
305 - n_jobs=-1,
306 - n_iter=20,
307 - # n_iter=50,
308 - scoring=f1_scorer)
309 - rs.fit(X_train, y_train)
310 -
311 # Fixed parameters 227 # Fixed parameters
312 - # crf.fit(X_train, y_train) 228 + crf.fit(X_train, y_train)
313 229
314 # Best hiperparameters 230 # Best hiperparameters
315 # crf = rs.best_estimator_ 231 # crf = rs.best_estimator_
...@@ -319,16 +235,13 @@ if __name__ == "__main__": ...@@ -319,16 +235,13 @@ if __name__ == "__main__":
319 oFile.write("********** TRAINING AND TESTING REPORT **********\n") 235 oFile.write("********** TRAINING AND TESTING REPORT **********\n")
320 oFile.write("Training file: " + options.trainingFile + '\n') 236 oFile.write("Training file: " + options.trainingFile + '\n')
321 oFile.write('\n') 237 oFile.write('\n')
322 - oFile.write('best params:' + str(rs.best_params_) + '\n') 238 + oFile.write('best params:' + str(crf.best_params_) + '\n')
323 - oFile.write('best CV score:' + str(rs.best_score_) + '\n') 239 + oFile.write('best CV score:' + str(crf.best_score_) + '\n')
324 - oFile.write('model size: {:0.2f}M\n'.format(rs.best_estimator_.size_ / 1000000)) 240 + oFile.write('model size: {:0.2f}M\n'.format(crf.best_estimator_.size_ / 1000000))
325 241
326 print("Training done in: %fs" % (time() - t0)) 242 print("Training done in: %fs" % (time() - t0))
327 t0 = time() 243 t0 = time()
328 244
329 - # Update best crf
330 - crf = rs.best_estimator_
331 -
332 # Saving model 245 # Saving model
333 print(" Saving training model...") 246 print(" Saving training model...")
334 t1 = time() 247 t1 = time()
...@@ -337,7 +250,7 @@ if __name__ == "__main__": ...@@ -337,7 +250,7 @@ if __name__ == "__main__":
337 joblib.dump(crf, os.path.join(options.outputPath, "models", nameModel)) 250 joblib.dump(crf, os.path.join(options.outputPath, "models", nameModel))
338 print(" Saving training model done in: %fs" % (time() - t1)) 251 print(" Saving training model done in: %fs" % (time() - t1))
339 252
340 - # Evaluation against test data 253 + # Evaluation against evaluation data
341 y_pred = crf.predict(X_test) 254 y_pred = crf.predict(X_test)
342 print("*********************************") 255 print("*********************************")
343 name = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.excludeStopWords) + '.fSymbols_' + str( 256 name = options.trainingFile.replace('.txt', '.fStopWords_' + str(options.excludeStopWords) + '.fSymbols_' + str(
......