Hide keyboard shortcuts

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("~") 

11 

12packageDirectory = utKit("").get_project_root() 

13settingsFile = packageDirectory + "/test_settings.yaml" 

14 

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() 

24 

25# SETUP PATHS TO COMMON DIRECTORIES FOR TEST DATA 

26moduleDirectory = os.path.dirname(__file__) 

27pathToInputDir = moduleDirectory + "/input/" 

28pathToOutputDir = moduleDirectory + "/output/" 

29 

30try: 

31 shutil.rmtree(pathToOutputDir) 

32except: 

33 pass 

34# COPY INPUT TO OUTPUT DIR 

35shutil.copytree(pathToInputDir, pathToOutputDir) 

36 

37# Recursively create missing directories 

38if not os.path.exists(pathToOutputDir): 

39 os.makedirs(pathToOutputDir) 

40 

41settings["database settings"]["static catalogues"] = settings[ 

42 "database settings"]["static catalogues2"] 

43 

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"] 

53 

54from sherlock.commonutils import get_crossmatch_catalogues_column_map 

55colMaps = get_crossmatch_catalogues_column_map( 

56 log=log, 

57 dbConn=cataloguesDbConn 

58) 

59 

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 }, 

71 

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 }, 

82 

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 }, 

93 

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 }, 

104 

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 }, 

115 

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 }, 

126 

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 }, 

137 

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] 

149 

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# ] 

162 

163sa = settings["search algorithm"] 

164 

165class test_transient_catalogue_crossmatch(unittest.TestCase): 

166 

167 def test_transient_catalogue_crossmatch_function(self): 

168 

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() 

178 

179 def test_transient_catalogue_crossmatch_search_catalogue_function(self): 

180 

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) 

202 

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) 

211 

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) 

220 

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) 

231 

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) 

242 

243 def test_transient_catalogue_phyiscal_crossmatch_search_catalogue_function(self): 

244 

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) 

263 

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) 

274 

275 def test_transient_catalogue_faint_mag_search_catalogue_function(self): 

276 

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 ) 

285 

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() 

297 

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() 

309 

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() 

321 

322 def test_transient_catalogue_bright_mag_search_catalogue_function(self): 

323 

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 ) 

332 

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() 

344 

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() 

356 

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() 

368 

369 def test_transient_catalogue_crossmatch_function_exception(self): 

370 

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)) 

383 

384 # x-class-to-test-named-worker-function