Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from __future__ import print_function
2from builtins import str
3import os
4import unittest
5import shutil
6import yaml
7from sherlock.utKit import utKit
8from fundamentals import tools
9from os.path import expanduser
10home = expanduser("~")
12packageDirectory = utKit("").get_project_root()
13settingsFile = packageDirectory + "/test_settings.yaml"
15su = tools(
16 arguments={"settingsFile": settingsFile},
17 docString=__doc__,
18 logLevel="DEBUG",
19 options_first=False,
20 projectName=None,
21 defaultSettingsFile=False
22)
23arguments, settings, log, dbConn = su.setup()
25# SETUP PATHS TO COMMON DIRECTORIES FOR TEST DATA
26moduleDirectory = os.path.dirname(__file__)
27pathToInputDir = moduleDirectory + "/input/"
28pathToOutputDir = moduleDirectory + "/output/"
30try:
31 shutil.rmtree(pathToOutputDir)
32except:
33 pass
34# COPY INPUT TO OUTPUT DIR
35shutil.copytree(pathToInputDir, pathToOutputDir)
37# Recursively create missing directories
38if not os.path.exists(pathToOutputDir):
39 os.makedirs(pathToOutputDir)
41settings["database settings"]["static catalogues"] = settings[
42 "database settings"]["static catalogues2"]
44# SETUP ALL DATABASE CONNECTIONS
45from sherlock import database
46db = database(
47 log=log,
48 settings=settings
49)
50dbConns, dbVersions = db.connect()
51transientsDbConn = dbConns["transients"]
52cataloguesDbConn = dbConns["catalogues"]
54from sherlock.commonutils import get_crossmatch_catalogues_column_map
55colMaps = get_crossmatch_catalogues_column_map(
56 log=log,
57 dbConn=cataloguesDbConn
58)
60transients = [
61 {'ps1_designation': u'PS1-14aef',
62 'name': u'4L3Piiq',
63 'detection_list_id': 2,
64 'local_comments': u'',
65 'ra': 0.02548233704918263,
66 'followup_id': 2065412,
67 'dec': -4.284933417540423,
68 'id': 1,
69 'object_classification': 0
70 },
72 {'ps1_designation': u'PS1-13dcr',
73 'name': u'3I3Phzx',
74 'detection_list_id': 2,
75 'local_comments': u'',
76 'ra': 4.754236999477372,
77 'followup_id': 1140386,
78 'dec': 28.276703631398625,
79 'id': 2,
80 'object_classification': 0
81 },
83 {'ps1_designation': u'PS1-13dhc',
84 'name': u'3I3Pixd',
85 'detection_list_id': 2,
86 'local_comments': u'',
87 'ra': 1.3324973428505413,
88 'followup_id': 1202386,
89 'dec': 32.98869220595689,
90 'id': 3,
91 'object_classification': 0
92 },
94 {'ps1_designation': u'faint-sdss-star',
95 'name': u'faint-star',
96 'detection_list_id': 2,
97 'local_comments': u'',
98 'ra': 134.74209,
99 'followup_id': 1202386,
100 'dec': 59.18086,
101 'id': 4,
102 'object_classification': 0
103 },
105 {'ps1_designation': u'faint-sdss-galaxy',
106 'name': u'faint-star',
107 'detection_list_id': 2,
108 'local_comments': u'',
109 'ra': 134.77235,
110 'followup_id': 1202386,
111 'dec': 59.20961,
112 'id': 5,
113 'object_classification': 0
114 },
116 {'ps1_designation': u'faint-sdss-medium-galaxy',
117 'name': u'faint-star',
118 'detection_list_id': 2,
119 'local_comments': u'',
120 'ra': 134.76298,
121 'followup_id': 1202386,
122 'dec': 59.18248,
123 'id': 6,
124 'object_classification': 0
125 },
127 {'ps1_designation': u'faint-sdss-bright-star',
128 'name': u'faint-star',
129 'detection_list_id': 2,
130 'local_comments': u'',
131 'ra': 134.81694,
132 'followup_id': 1202386,
133 'dec': 59.19204,
134 'id': 7,
135 'object_classification': 0
136 },
138 {'ps1_designation': u'faint-sdss-medium-star',
139 'name': u'faint-star',
140 'detection_list_id': 2,
141 'local_comments': u'',
142 'ra': 134.84064,
143 'followup_id': 1202386,
144 'dec': 59.21254,
145 'id': 8,
146 'object_classification': 0
147 }
148]
150# transients = [
151# {'ps1_designation': u'ATLAS17aeu',
152# 'name': u'ATLAS17aeu',
153# 'detection_list_id': 2,
154# 'local_comments': u'',
155# 'ra': 138.30789,
156# 'followup_id': 1202386L,
157# 'dec': +61.09267,
158# 'id': 1000519791325919200L,
159# 'object_classification': 0L
160# }
161# ]
163sa = settings["search algorithm"]
165class test_transient_catalogue_crossmatch(unittest.TestCase):
167 def test_transient_catalogue_crossmatch_function(self):
169 from sherlock import transient_catalogue_crossmatch
170 this = transient_catalogue_crossmatch(
171 log=log,
172 dbConn=cataloguesDbConn,
173 settings=settings,
174 colMaps=colMaps,
175 transients=transients
176 )
177 classifications = this.match()
179 def test_transient_catalogue_crossmatch_search_catalogue_function(self):
181 # brightnessFilters = ["bright", "faint", "general"]
182 # classificationType = ["synonym", "annotation", "association"]
183 from sherlock import transient_catalogue_crossmatch
184 this = transient_catalogue_crossmatch(
185 log=log,
186 dbConn=cataloguesDbConn,
187 settings=settings,
188 colMaps=colMaps,
189 transients=transients
190 )
191 search_name = "ned_d spec galaxy"
192 searchPara = sa[search_name]
193 print(searchPara)
194 matchedObjects = this.angular_crossmatch_against_catalogue(
195 objectList=transients,
196 searchPara=searchPara,
197 search_name=search_name + " angular",
198 brightnessFilter="general",
199 classificationType="synonym"
200 )
201 print(matchedObjects)
203 matchedObjects = this.angular_crossmatch_against_catalogue(
204 objectList=transients,
205 searchPara=searchPara,
206 search_name=search_name + " angular",
207 brightnessFilter="general",
208 classificationType="association"
209 )
210 print(matchedObjects)
212 matchedObjects = this.angular_crossmatch_against_catalogue(
213 objectList=transients,
214 searchPara=searchPara,
215 search_name=search_name + " angular",
216 brightnessFilter="general",
217 classificationType="association"
218 )
219 print(matchedObjects)
221 search_name = "ned phot galaxy"
222 searchPara = sa[search_name]
223 matchedObjects = this.angular_crossmatch_against_catalogue(
224 objectList=transients,
225 searchPara=searchPara,
226 search_name=search_name + " angular",
227 brightnessFilter="general",
228 classificationType="association"
229 )
230 print(matchedObjects)
232 search_name = "ned phot galaxy-like"
233 searchPara = sa[search_name]
234 matchedObjects = this.angular_crossmatch_against_catalogue(
235 objectList=transients,
236 searchPara=searchPara,
237 search_name=search_name + " angular",
238 brightnessFilter="general",
239 classificationType="annotation"
240 )
241 print(matchedObjects)
243 def test_transient_catalogue_phyiscal_crossmatch_search_catalogue_function(self):
245 from sherlock import transient_catalogue_crossmatch
246 this = transient_catalogue_crossmatch(
247 log=log,
248 dbConn=cataloguesDbConn,
249 settings=settings,
250 colMaps=colMaps,
251 transients=transients
252 )
253 search_name = "ned spec galaxy"
254 searchPara = sa[search_name]
255 matchedObjects = this.physical_separation_crossmatch_against_catalogue(
256 objectList=transients,
257 searchPara=searchPara,
258 search_name=search_name + " distance",
259 brightnessFilter="general",
260 classificationType="association"
261 )
262 print(matchedObjects)
264 search_name = "sdss spec galaxy"
265 searchPara = sa[search_name]
266 matchedObjects = this.physical_separation_crossmatch_against_catalogue(
267 objectList=transients,
268 searchPara=searchPara,
269 search_name=search_name + " distance",
270 brightnessFilter="general",
271 classificationType="association"
272 )
273 print(matchedObjects)
275 def test_transient_catalogue_faint_mag_search_catalogue_function(self):
277 from sherlock import transient_catalogue_crossmatch
278 this = transient_catalogue_crossmatch(
279 log=log,
280 dbConn=cataloguesDbConn,
281 settings=settings,
282 colMaps=colMaps,
283 transients=transients
284 )
286 search_name = "sdss star"
287 searchPara = sa[search_name]
288 matchedObjects = this.angular_crossmatch_against_catalogue(
289 objectList=transients,
290 searchPara=searchPara,
291 search_name=search_name + " angular",
292 brightnessFilter="faint",
293 classificationType="annotation"
294 )
295 print(matchedObjects)
296 print()
298 search_name = "2mass star"
299 searchPara = sa[search_name]
300 matchedObjects = this.angular_crossmatch_against_catalogue(
301 objectList=transients,
302 searchPara=searchPara,
303 search_name=search_name + " angular",
304 brightnessFilter="faint",
305 classificationType="annotation"
306 )
307 print(matchedObjects)
308 print()
310 search_name = "GSC star 1"
311 searchPara = sa[search_name]
312 matchedObjects = this.angular_crossmatch_against_catalogue(
313 objectList=transients,
314 searchPara=searchPara,
315 search_name=search_name + " angular",
316 brightnessFilter="faint",
317 classificationType="annotation"
318 )
319 print(matchedObjects)
320 print()
322 def test_transient_catalogue_bright_mag_search_catalogue_function(self):
324 from sherlock import transient_catalogue_crossmatch
325 this = transient_catalogue_crossmatch(
326 log=log,
327 dbConn=cataloguesDbConn,
328 settings=settings,
329 colMaps=colMaps,
330 transients=transients,
331 )
333 search_name = "sdss star"
334 searchPara = sa[search_name]
335 matchedObjects = this.angular_crossmatch_against_catalogue(
336 objectList=transients,
337 searchPara=searchPara,
338 search_name=search_name + " angular",
339 brightnessFilter="bright",
340 classificationType="association"
341 )
342 print(matchedObjects)
343 print()
345 search_name = "2mass star"
346 searchPara = sa[search_name]
347 matchedObjects = this.angular_crossmatch_against_catalogue(
348 objectList=transients,
349 searchPara=searchPara,
350 search_name=search_name + " angular",
351 brightnessFilter="general",
352 classificationType="association"
353 )
354 print(matchedObjects)
355 print()
357 search_name = "GSC star 1"
358 searchPara = sa[search_name]
359 matchedObjects = this.angular_crossmatch_against_catalogue(
360 objectList=transients,
361 searchPara=searchPara,
362 search_name=search_name + " angular",
363 brightnessFilter="bright",
364 classificationType="association"
365 )
366 print(matchedObjects)
367 print()
369 def test_transient_catalogue_crossmatch_function_exception(self):
371 from sherlock import transient_catalogue_crossmatch
372 try:
373 this = transient_catalogue_crossmatch(
374 log=log,
375 settings=settings,
376 fakeKey="break the code"
377 )
378 this.match()
379 assert False
380 except Exception as e:
381 assert True
382 print(str(e))
384 # x-class-to-test-named-worker-function