Upload 21 files
Browse files- ExampleCode/example1/Multi_band_analy.ipynb +0 -0
- ExampleCode/example1/Sanomalous_sources.csv +323 -0
- ExampleCode/example1/anomalies_with_fastspecfit_bpt.csv +314 -0
- ExampleCode/example1/anomaly_metadata.csv +323 -0
- ExampleCode/example1/dataset/SFDJA_image_catalog.csv +0 -0
- ExampleCode/example1/features/FAJD_multimodal_features.h5 +3 -0
- ExampleCode/example1/features/FAJD_multimodal_features_norm.h5 +3 -0
- ExampleCode/example1/features/SFAJD_multimodal_features.h5 +3 -0
- ExampleCode/example1/features/SFAJD_multimodal_features_norm.h5 +3 -0
- ExampleCode/example1/features/clustered_sources_gmm_tsne.csv +0 -0
- ExampleCode/example1/features/clustered_sources_gmm_umap.csv +0 -0
- ExampleCode/example1/model/DesiEncoder.py +416 -0
- ExampleCode/example1/model/JplusEncoder.py +171 -0
- ExampleCode/example1/model/SpecEncoder.py +416 -0
- ExampleCode/example1/model/__pycache__/DesiEncoder.cpython-310.pyc +0 -0
- ExampleCode/example1/model/__pycache__/JplusEncoder.cpython-310.pyc +0 -0
- ExampleCode/example1/model/checkpoint/DesiEncoder.pth +3 -0
- ExampleCode/example1/model/checkpoint/JplusEncoder.pth +3 -0
- ExampleCode/example2/Cot.ipynb +373 -0
- ExampleCode/example2/image/239.5743316076613_32.91914641623415.jpg +0 -0
- ExampleCode/example2/llm_result/239.5743316076613_32.91914641623415.txt +10 -0
ExampleCode/example1/Multi_band_analy.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
ExampleCode/example1/Sanomalous_sources.csv
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ra,dec,anomaly_score
|
| 2 |
+
200.19305,33.443726,-0.6930316796112987
|
| 3 |
+
220.35742,33.72618,-0.5619702131612299
|
| 4 |
+
218.21674,47.768574,-0.6189931296508746
|
| 5 |
+
224.97906,47.63954,-0.5917523232022385
|
| 6 |
+
200.29968,31.729654,-0.5786086053982126
|
| 7 |
+
223.13959,36.13852,-0.5855118386973505
|
| 8 |
+
224.76053,47.418983,-0.5720925415138971
|
| 9 |
+
223.0734,46.768044,-0.581471299025403
|
| 10 |
+
217.32109,46.852432,-0.577233879122645
|
| 11 |
+
228.93903,36.706173,-0.5689133460036013
|
| 12 |
+
212.11525,33.205482,-0.5898777332408975
|
| 13 |
+
212.13579,33.16155,-0.6243711700507368
|
| 14 |
+
205.59035,32.690517,-0.6097489913166909
|
| 15 |
+
219.83424,46.86007,-0.5574332297733766
|
| 16 |
+
226.28036,46.963696,-0.5923697736365776
|
| 17 |
+
222.7845,47.675457,-0.5815100892096293
|
| 18 |
+
205.69641,32.42519,-0.5672470017979784
|
| 19 |
+
215.9645,47.10679,-0.6096682280563198
|
| 20 |
+
212.16959,32.59188,-0.5683391632649394
|
| 21 |
+
225.21576,47.30673,-0.5937442856152948
|
| 22 |
+
219.57034,47.352955,-0.5556436382203152
|
| 23 |
+
224.01189,36.243046,-0.6695349974551924
|
| 24 |
+
222.963,46.913734,-0.5793439664467084
|
| 25 |
+
210.7116,32.92613,-0.5778126897217477
|
| 26 |
+
210.91286,35.773186,-0.5600545266906618
|
| 27 |
+
211.00102,32.670048,-0.6242225858420763
|
| 28 |
+
226.92117,46.89221,-0.6103942130253949
|
| 29 |
+
219.89328,46.63121,-0.6413601162909434
|
| 30 |
+
200.04846,33.09609,-0.6771650566707986
|
| 31 |
+
223.0503,46.521004,-0.5628563220725986
|
| 32 |
+
219.58582,47.816025,-0.617485136663874
|
| 33 |
+
200.23062,33.902607,-0.6557414604975511
|
| 34 |
+
222.81557,46.70404,-0.581834044779202
|
| 35 |
+
224.42175,47.216965,-0.6271035115846311
|
| 36 |
+
211.56627,35.795273,-0.7077425872138497
|
| 37 |
+
222.83739,35.504044,-0.5836484389319461
|
| 38 |
+
222.83969,34.44721,-0.6072835613043173
|
| 39 |
+
211.72879,33.472313,-0.5824126280048473
|
| 40 |
+
219.30371,47.499092,-0.5599966720366738
|
| 41 |
+
219.0164,46.743916,-0.5648288494412933
|
| 42 |
+
223.08978,36.091084,-0.5841514545595019
|
| 43 |
+
222.33034,47.44863,-0.5710990093546388
|
| 44 |
+
212.09677,36.199924,-0.5812158359114539
|
| 45 |
+
223.4386,34.389263,-0.5706426646588099
|
| 46 |
+
224.93661,47.07267,-0.5760161695683038
|
| 47 |
+
225.63454,47.293297,-0.566237520746517
|
| 48 |
+
201.21243,33.26414,-0.594847745756717
|
| 49 |
+
224.42151,46.822662,-0.5615085424128482
|
| 50 |
+
224.87427,47.76158,-0.5599291686456922
|
| 51 |
+
206.00899,32.11525,-0.6488928897939612
|
| 52 |
+
223.06161,47.001293,-0.5931704281526834
|
| 53 |
+
200.02356,33.287064,-0.5745143414030865
|
| 54 |
+
200.06491,33.297512,-0.6915292696802472
|
| 55 |
+
200.2609,33.339485,-0.7275117594014705
|
| 56 |
+
200.54095,32.74289,-0.6011052875469948
|
| 57 |
+
201.13945,31.67151,-0.5541432687311584
|
| 58 |
+
201.16075,33.781464,-0.6561199460972833
|
| 59 |
+
201.18198,32.54029,-0.7229205273308329
|
| 60 |
+
201.1878,32.516823,-0.5997876971564051
|
| 61 |
+
201.25839,33.271908,-0.598830387000561
|
| 62 |
+
201.73921,32.383,-0.6668698248492971
|
| 63 |
+
201.74942,32.706326,-0.5581080369827209
|
| 64 |
+
201.79012,33.501156,-0.5842210665034255
|
| 65 |
+
201.8101,33.786076,-0.5924704480147599
|
| 66 |
+
201.87544,33.392143,-0.6260645979487105
|
| 67 |
+
201.92282,34.35722,-0.5849633159190043
|
| 68 |
+
202.48431,32.232494,-0.6175727530244329
|
| 69 |
+
207.0826,32.0275,-0.6956250006462609
|
| 70 |
+
225.50099,47.11725,-0.6626593644860734
|
| 71 |
+
225.43314,47.5701,-0.6122573612878669
|
| 72 |
+
200.58075,33.889343,-0.5960476641403275
|
| 73 |
+
205.87703,32.26004,-0.5537245474620859
|
| 74 |
+
206.00699,32.114067,-0.6258076431576377
|
| 75 |
+
206.03018,31.838966,-0.5568796421344882
|
| 76 |
+
206.13913,31.951334,-0.6331775916520421
|
| 77 |
+
206.30923,32.761757,-0.5893223678991251
|
| 78 |
+
206.39952,32.436924,-0.5896666630369354
|
| 79 |
+
206.48341,31.730963,-0.5741364730563062
|
| 80 |
+
206.49646,32.40309,-0.5566690076290227
|
| 81 |
+
206.77965,31.72738,-0.6123740228636962
|
| 82 |
+
206.86995,32.115643,-0.5608416586289711
|
| 83 |
+
206.92854,32.0517,-0.6246939246639325
|
| 84 |
+
207.00159,31.69941,-0.6194871153303225
|
| 85 |
+
207.08122,32.309772,-0.6060798613325619
|
| 86 |
+
207.20651,31.754204,-0.6166484366615139
|
| 87 |
+
207.21309,32.910126,-0.5813153566528981
|
| 88 |
+
207.24332,31.675657,-0.5980202166751152
|
| 89 |
+
212.29573,39.28846,-0.6444623863571558
|
| 90 |
+
224.27069,47.335457,-0.5661041696964321
|
| 91 |
+
206.13358,33.488094,-0.6074852402469132
|
| 92 |
+
226.09256,47.6867,-0.6362475765912455
|
| 93 |
+
210.64293,35.302143,-0.5987487019556038
|
| 94 |
+
210.81328,33.150513,-0.6018059688729229
|
| 95 |
+
210.85245,32.815968,-0.5704098722835853
|
| 96 |
+
210.8568,32.13594,-0.581843610871711
|
| 97 |
+
210.83629,35.65457,-0.5606882199908048
|
| 98 |
+
211.10704,35.61177,-0.6365922249379475
|
| 99 |
+
211.21178,38.66414,-0.5980636069877537
|
| 100 |
+
211.47302,33.170837,-0.6771737735875608
|
| 101 |
+
211.6843,39.01213,-0.601324104715165
|
| 102 |
+
211.82445,38.59338,-0.5634066382354657
|
| 103 |
+
211.8437,36.290768,-0.6045724917788265
|
| 104 |
+
212.41968,38.728687,-0.588165237899135
|
| 105 |
+
212.50969,38.70649,-0.6019313232995143
|
| 106 |
+
212.52777,39.400173,-0.5759002251671799
|
| 107 |
+
212.54858,39.409256,-0.5829978941561668
|
| 108 |
+
212.57089,39.034874,-0.6106339725024332
|
| 109 |
+
212.57834,39.041847,-0.5632180885029978
|
| 110 |
+
212.60635,39.467316,-0.6211793590298442
|
| 111 |
+
212.63184,38.89353,-0.6936387540387613
|
| 112 |
+
211.11621,38.40168,-0.5547876520003225
|
| 113 |
+
213.29301,39.866394,-0.6140726758379427
|
| 114 |
+
213.53786,39.497112,-0.5617939735754495
|
| 115 |
+
213.66644,39.842617,-0.566054672901568
|
| 116 |
+
200.12047,33.820747,-0.5741918770782739
|
| 117 |
+
213.80695,39.703667,-0.5791061453295239
|
| 118 |
+
213.85506,39.67346,-0.5559516143680534
|
| 119 |
+
214.10843,39.651253,-0.6262239508275188
|
| 120 |
+
222.57603,34.093918,-0.648049101844184
|
| 121 |
+
200.2684,33.151455,-0.5586770375675211
|
| 122 |
+
206.98126,32.98733,-0.6083544859087308
|
| 123 |
+
214.58755,39.54192,-0.594390095419699
|
| 124 |
+
214.85707,39.857384,-0.6064370213153873
|
| 125 |
+
211.59433,38.82993,-0.5601422957871854
|
| 126 |
+
222.91837,35.5132,-0.5920160708120491
|
| 127 |
+
218.83414,47.382477,-0.569823681828731
|
| 128 |
+
224.99876,47.243427,-0.606673641834868
|
| 129 |
+
200.71564,35.019714,-0.6049640336266979
|
| 130 |
+
224.8766,46.6288,-0.5907681207968967
|
| 131 |
+
211.937,36.20765,-0.5914050563431276
|
| 132 |
+
219.9522,46.597305,-0.5712539809632176
|
| 133 |
+
201.04257,33.261486,-0.612917674747236
|
| 134 |
+
212.25842,36.323418,-0.6156387266234188
|
| 135 |
+
219.56393,32.862244,-0.5605689993956423
|
| 136 |
+
219.66956,32.5748,-0.6210184170305761
|
| 137 |
+
219.79848,32.686592,-0.5592810217733164
|
| 138 |
+
219.79901,33.785275,-0.7168093201152106
|
| 139 |
+
219.82674,32.63448,-0.5753305951447605
|
| 140 |
+
219.89052,33.352432,-0.6049692656256447
|
| 141 |
+
220.07722,32.767906,-0.7006318458240804
|
| 142 |
+
220.29765,33.84457,-0.566296673876863
|
| 143 |
+
220.34712,33.757187,-0.6026759241258309
|
| 144 |
+
220.42723,33.302834,-0.6500478418131659
|
| 145 |
+
219.74295,47.307888,-0.6040367003693287
|
| 146 |
+
206.14038,33.54464,-0.5599020531649982
|
| 147 |
+
210.67586,32.18062,-0.5791184799751264
|
| 148 |
+
222.43597,34.342525,-0.587221023224993
|
| 149 |
+
222.57188,34.573353,-0.5945776151522206
|
| 150 |
+
222.72176,36.17021,-0.5864638856708192
|
| 151 |
+
222.73546,35.57169,-0.6601356727954886
|
| 152 |
+
223.05081,34.027065,-0.5774383871353495
|
| 153 |
+
223.44524,34.79861,-0.6067579467275153
|
| 154 |
+
223.44724,36.1347,-0.5610555272001411
|
| 155 |
+
223.70625,34.51449,-0.555503584624521
|
| 156 |
+
223.99643,35.66342,-0.6016213504029252
|
| 157 |
+
219.32945,47.251503,-0.608815626493015
|
| 158 |
+
219.68648,47.252506,-0.5590208222188274
|
| 159 |
+
224.5197,47.406647,-0.6595209700694811
|
| 160 |
+
224.0696,46.916237,-0.608113270953753
|
| 161 |
+
211.39746,38.423523,-0.59691595851189
|
| 162 |
+
211.44347,39.15259,-0.5702953258768438
|
| 163 |
+
225.31096,47.4071,-0.5826233797843896
|
| 164 |
+
222.83455,46.684982,-0.6051438599646451
|
| 165 |
+
205.76637,33.096676,-0.5555794166790564
|
| 166 |
+
211.68022,33.334686,-0.5961098002084769
|
| 167 |
+
218.09491,47.11061,-0.6362163480872454
|
| 168 |
+
216.2295,47.73962,-0.5743768974491661
|
| 169 |
+
219.31471,46.945824,-0.5649871913946566
|
| 170 |
+
200.61858,33.66162,-0.6196747800170833
|
| 171 |
+
219.74077,47.24487,-0.5981155199788025
|
| 172 |
+
223.06969,35.077347,-0.6195896885621592
|
| 173 |
+
228.27931,37.94177,-0.5568645896913637
|
| 174 |
+
228.3645,37.973812,-0.5756060290818129
|
| 175 |
+
228.49507,37.00813,-0.5610068341079185
|
| 176 |
+
228.55719,37.265854,-0.5945155659896727
|
| 177 |
+
228.84914,36.79295,-0.5621503558140126
|
| 178 |
+
228.93855,37.135365,-0.6440655921462716
|
| 179 |
+
229.04361,37.186684,-0.5778757493297623
|
| 180 |
+
212.12021,32.224735,-0.5602010832858404
|
| 181 |
+
229.1178,36.83929,-0.5771535968643262
|
| 182 |
+
229.1906,36.696434,-0.6094152483033662
|
| 183 |
+
229.19077,36.889626,-0.6472907403357917
|
| 184 |
+
229.2292,37.144295,-0.5640068214405909
|
| 185 |
+
229.2747,37.0816,-0.6533012255736493
|
| 186 |
+
223.34373,35.891567,-0.6648627179605477
|
| 187 |
+
229.54259,36.75623,-0.6063604321551223
|
| 188 |
+
212.24332,35.390007,-0.5676302580353012
|
| 189 |
+
217.46295,46.53011,-0.5573872988146823
|
| 190 |
+
225.51064,47.230347,-0.6280639722430795
|
| 191 |
+
225.8057,47.140423,-0.6014017017096293
|
| 192 |
+
205.74358,33.297,-0.59648776542504
|
| 193 |
+
223.63498,34.04843,-0.562211516822322
|
| 194 |
+
218.98026,47.634544,-0.5668952113750706
|
| 195 |
+
215.97032,46.73816,-0.6087406795844373
|
| 196 |
+
227.50311,47.240654,-0.6235747753022507
|
| 197 |
+
219.34494,32.904804,-0.5941874796892497
|
| 198 |
+
205.93634,31.748707,-0.576028072731488
|
| 199 |
+
205.97066,31.835638,-0.5933763569465876
|
| 200 |
+
206.00267,33.263084,-0.5717152586869263
|
| 201 |
+
223.929,36.42147,-0.5602031827041053
|
| 202 |
+
219.56244,32.693924,-0.5602242493196115
|
| 203 |
+
222.10153,47.674393,-0.555397823120572
|
| 204 |
+
206.24904,31.802961,-0.7125365162191757
|
| 205 |
+
219.70418,32.582756,-0.6367975850103503
|
| 206 |
+
228.71115,37.252575,-0.6298185861334504
|
| 207 |
+
224.81299,47.517773,-0.5779536529468127
|
| 208 |
+
210.95143,33.569786,-0.6335829976655191
|
| 209 |
+
216.78508,47.259075,-0.6613321470217932
|
| 210 |
+
206.69695,32.90637,-0.609910373920131
|
| 211 |
+
211.99275,38.3277,-0.6069966356188836
|
| 212 |
+
223.31084,46.48638,-0.6769478466902171
|
| 213 |
+
223.35246,46.485462,-0.6779575288414771
|
| 214 |
+
222.56502,36.513935,-0.6077750053272429
|
| 215 |
+
211.39828,38.754696,-0.5616589310996815
|
| 216 |
+
222.69455,36.167004,-0.6741968879487549
|
| 217 |
+
222.74599,47.530132,-0.569664952007007
|
| 218 |
+
219.40982,47.672005,-0.5917026923590818
|
| 219 |
+
211.6404,38.38539,-0.5887307860645821
|
| 220 |
+
219.35918,46.67046,-0.60480928257622
|
| 221 |
+
212.08089,33.03165,-0.6007648075719927
|
| 222 |
+
222.34369,47.35065,-0.5879728632814807
|
| 223 |
+
212.11871,31.815794,-0.6302967228558736
|
| 224 |
+
223.30116,35.969868,-0.5586866983049844
|
| 225 |
+
212.12698,36.495354,-0.6237574265822019
|
| 226 |
+
223.3763,34.7923,-0.5728153022934084
|
| 227 |
+
212.20108,38.540554,-0.5939662515907348
|
| 228 |
+
219.80396,46.843464,-0.595464341439691
|
| 229 |
+
205.70216,33.306023,-0.558505411106937
|
| 230 |
+
223.61409,35.44088,-0.6368079425050536
|
| 231 |
+
205.78004,33.76482,-0.5941471438933146
|
| 232 |
+
219.83786,47.291893,-0.6448251128778545
|
| 233 |
+
219.70135,46.78622,-0.5785797729920847
|
| 234 |
+
225.61334,47.25961,-0.6425830486310952
|
| 235 |
+
201.58698,31.72249,-0.688416995243427
|
| 236 |
+
223.95187,36.039677,-0.6054070378731597
|
| 237 |
+
224.20229,35.48768,-0.5659705197242403
|
| 238 |
+
219.98111,47.30258,-0.5606282661077158
|
| 239 |
+
222.96446,46.490948,-0.5815485517953743
|
| 240 |
+
211.05383,38.733627,-0.6008758019830466
|
| 241 |
+
211.09053,33.476147,-0.6299236749109145
|
| 242 |
+
211.24315,38.634235,-0.7119215393047873
|
| 243 |
+
215.99352,47.235878,-0.6363884958036011
|
| 244 |
+
216.33784,47.245285,-0.6671713040057737
|
| 245 |
+
223.83412,47.496624,-0.6460088176465577
|
| 246 |
+
222.7272,47.302494,-0.5844506502967335
|
| 247 |
+
222.99913,46.751015,-0.6356912817835798
|
| 248 |
+
211.39856,38.75381,-0.5884251839445539
|
| 249 |
+
222.66629,34.42808,-0.5895794022078413
|
| 250 |
+
222.7257,35.143856,-0.566908020832897
|
| 251 |
+
222.83011,36.316166,-0.6076284184468513
|
| 252 |
+
222.83278,36.315655,-0.56971411800722
|
| 253 |
+
200.06,33.899506,-0.6282724163759763
|
| 254 |
+
207.21243,31.768005,-0.6576804553517467
|
| 255 |
+
211.77324,32.046455,-0.670542861316147
|
| 256 |
+
217.4446,46.714607,-0.5745735932552493
|
| 257 |
+
200.64491,33.157143,-0.6471539080072187
|
| 258 |
+
211.87059,38.467915,-0.5620358672113765
|
| 259 |
+
223.12976,35.34915,-0.6042035791198339
|
| 260 |
+
213.37685,39.709454,-0.5651321316592149
|
| 261 |
+
219.50427,46.69559,-0.5707640812688742
|
| 262 |
+
219.75996,46.695293,-0.5559549588660394
|
| 263 |
+
223.33229,34.02187,-0.5569594533651612
|
| 264 |
+
219.7207,46.674423,-0.6858684845460824
|
| 265 |
+
219.45872,47.034668,-0.5663423059710004
|
| 266 |
+
212.2097,38.992966,-0.6138614394060123
|
| 267 |
+
219.21396,47.68608,-0.5680497252796495
|
| 268 |
+
216.48073,46.481537,-0.5626232537984583
|
| 269 |
+
222.87622,47.267452,-0.5748297383437533
|
| 270 |
+
219.44644,33.34785,-0.558589038219422
|
| 271 |
+
218.0475,47.841133,-0.5645063302210299
|
| 272 |
+
224.71503,46.547832,-0.608234898410591
|
| 273 |
+
206.21326,32.526016,-0.7111195406207801
|
| 274 |
+
216.02274,47.642952,-0.5665303462246929
|
| 275 |
+
219.81471,33.33526,-0.6248623972640455
|
| 276 |
+
210.94124,32.0004,-0.6585076110865062
|
| 277 |
+
210.94652,35.741676,-0.7194618273177658
|
| 278 |
+
202.01907,34.31152,-0.7015330741562368
|
| 279 |
+
225.61803,46.674896,-0.5723039016302445
|
| 280 |
+
205.8765,32.22188,-0.6105517207001179
|
| 281 |
+
206.59183,31.800785,-0.5652848645046274
|
| 282 |
+
219.68506,47.537968,-0.5771996032189316
|
| 283 |
+
210.92648,32.99119,-0.5553045831892786
|
| 284 |
+
222.38347,34.913834,-0.5546015507585168
|
| 285 |
+
200.03183,32.856133,-0.7160977424000261
|
| 286 |
+
211.2138,32.1434,-0.560508170500413
|
| 287 |
+
220.30243,32.89001,-0.5989589957004252
|
| 288 |
+
211.42117,35.98351,-0.647695399590087
|
| 289 |
+
224.62692,46.52434,-0.5680783220631186
|
| 290 |
+
217.12424,46.832558,-0.5623939675008774
|
| 291 |
+
207.03954,32.582333,-0.5662401829845286
|
| 292 |
+
219.82018,46.754856,-0.5618618777518325
|
| 293 |
+
222.80998,35.542118,-0.7252712755290388
|
| 294 |
+
211.73944,38.969215,-0.6101007747131342
|
| 295 |
+
206.62093,31.840519,-0.6135952315620742
|
| 296 |
+
211.82008,35.52303,-0.596708577188052
|
| 297 |
+
223.12796,36.243114,-0.6780973146997797
|
| 298 |
+
218.6748,47.243122,-0.5632019066799581
|
| 299 |
+
212.01659,31.989616,-0.5778540276742009
|
| 300 |
+
212.0365,33.79927,-0.5778888741396954
|
| 301 |
+
219.34125,47.253494,-0.5933471151735913
|
| 302 |
+
226.16415,47.4365,-0.5853809379451742
|
| 303 |
+
218.44777,47.220814,-0.6465787890357562
|
| 304 |
+
223.45518,34.39159,-0.5984404511423297
|
| 305 |
+
212.4783,38.10973,-0.5757423583370173
|
| 306 |
+
201.41113,33.68046,-0.7001001719321747
|
| 307 |
+
223.30237,35.97214,-0.5780772113785858
|
| 308 |
+
224.25931,35.55065,-0.6925239324467983
|
| 309 |
+
219.4925,32.70068,-0.5644043115631001
|
| 310 |
+
201.60884,32.290596,-0.6180791286119631
|
| 311 |
+
228.45468,37.97749,-0.6612649781784813
|
| 312 |
+
216.18149,47.032627,-0.6384564444800287
|
| 313 |
+
224.20563,36.49883,-0.6611884581020797
|
| 314 |
+
210.8478,32.81645,-0.6169228530425417
|
| 315 |
+
210.85153,33.061066,-0.6264618516148622
|
| 316 |
+
210.98184,31.72497,-0.621554384598006
|
| 317 |
+
206.56665,32.76978,-0.5716473975066376
|
| 318 |
+
223.3885,47.09354,-0.577146964003476
|
| 319 |
+
216.77759,46.474823,-0.5705134283823594
|
| 320 |
+
220.04477,33.356194,-0.5873991308219549
|
| 321 |
+
226.53406,47.049088,-0.6303280861009763
|
| 322 |
+
229.16681,37.212566,-0.5761756717533421
|
| 323 |
+
200.09956,33.176804,-0.6011555141221244
|
ExampleCode/example1/anomalies_with_fastspecfit_bpt.csv
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ra,dec,anomaly_score,filename,index_in_file,ra,dec,z,helpha_flux,nii_6584_flux,hbeta_flux,oiii_5007_flux,dn4000,hdelta_ew,vdisp
|
| 2 |
+
200.19305,33.443726,-0.6930316796112987,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,518,200.19305924442443,33.443724778729994,0.0343063969061808,0.0,0.0,0.0,3.1295378,2.04159,1.668341,162.29738
|
| 3 |
+
220.35742,33.72618,-0.5619702131612299,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,1248,220.3574195641044,33.72618010519572,0.1815831098501453,11.701393,6.5269723,0.014729375,2.4300866,1.7600622,1.5904528,158.3329
|
| 4 |
+
218.21674,47.768574,-0.6189931296508746,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,4105,218.2167289496506,47.76857409822143,0.2859439359605082,33.544243,20.763424,7.632061,3.2754557,1.6246678,1.8248686,336.80478
|
| 5 |
+
224.97906,47.63954,-0.5917523232022385,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4473,224.97907157838284,47.63954128860117,0.3292178817551113,46.171604,19.413092,10.531518,4.9221544,1.2734464,3.6211343,394.24063
|
| 6 |
+
200.29968,31.729654,-0.5786086053982126,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=649/001-000.hdf5,385,200.2996858897432,31.729654478400768,0.1279681727622484,22.169073,20.475023,6.7495565,9.37232,1.7048742,0.0,196.23938
|
| 7 |
+
223.13959,36.13852,-0.5855118386973505,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,479,223.1395931015776,36.13851859287507,0.1221636506879343,0.0,6.455571,0.0,0.7606706,1.8232591,0.0,218.83289
|
| 8 |
+
224.76053,47.418983,-0.5720925415138971,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4569,224.7605285139694,47.418983690702255,0.0865251283940239,4.609281,15.706084,2.3353944,8.821846,1.7286868,0.6246338,184.04753
|
| 9 |
+
217.32109,46.852432,-0.577233879122645,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,3310,217.32109434089563,46.85243338143166,0.2205435676215131,59.29362,43.09025,5.9881806,18.172663,1.6301978,0.0,63.731575
|
| 10 |
+
228.93903,36.706173,-0.5689133460036013,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,2120,228.9390293825037,36.70617109123725,0.1950075841693564,146.80438,57.652664,32.53454,1.1585485,1.3725106,2.8531868,125.0
|
| 11 |
+
212.11525,33.205482,-0.5898777332408975,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,2394,212.115255014566,33.20548386455542,0.3425285848151238,30.67521,10.673882,14.167748,0.17902084,1.481198,0.75895274,125.0
|
| 12 |
+
212.13579,33.16155,-0.6243711700507368,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,2241,212.13579468513004,33.161550481732206,0.2542479248727974,40.76484,25.875357,6.278582,3.085951,1.9874376,1.0232004,120.65612
|
| 13 |
+
205.59035,32.690517,-0.6097489913166909,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,68,205.5903494576989,32.69051781498831,0.3755669794054338,25.251226,10.187649,10.183599,2.952541,1.3391865,0.8771074,125.0
|
| 14 |
+
219.83424,46.86007,-0.5574332297733766,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1119,219.8342416473574,46.86006985206804,0.3011260978809559,11.567794,20.456682,1.8185974,15.619151,1.3472403,0.9917974,129.00739
|
| 15 |
+
226.28036,46.963696,-0.5923697736365776,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,3780,226.2803680873732,46.963695730304295,0.0377137482793957,289.48236,96.03292,80.29495,30.222914,1.2453047,1.3990825,125.0
|
| 16 |
+
222.7845,47.675457,-0.5815100892096293,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,100,222.7845057697953,47.6754572561875,0.2555093796030173,48.005295,17.874546,8.131941,5.4859114,1.2839929,0.38702363,125.0
|
| 17 |
+
205.69641,32.42519,-0.5672470017979784,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4858,205.6964042829116,32.42518825202579,0.189421655941009,61.804474,23.856216,16.740828,4.720527,1.4240438,0.0,395.3502
|
| 18 |
+
215.9645,47.10679,-0.6096682280563198,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,2357,215.9644957625781,47.10678873628945,0.1684604097301251,0.0,3.7492428,0.0,12.165534,1.9283041,0.0,341.88303
|
| 19 |
+
212.16959,32.59188,-0.5683391632649394,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,74,212.16958241556705,32.59188074732092,0.191082971630363,0.0,0.0,2.0046709,16.7322,2.0642247,1.0998353,347.28912
|
| 20 |
+
225.21576,47.30673,-0.5937442856152948,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4395,225.21575862763004,47.30672733710575,0.231386497408801,35.592216,18.119886,5.268182,3.386487,1.6014321,1.0757612,125.0
|
| 21 |
+
219.57034,47.352955,-0.5556436382203152,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,1294,219.5703470255049,47.35295464144728,0.0950303054838077,0.0,9.123637,0.0,0.0,2.1123557,0.2224029,239.12633
|
| 22 |
+
224.01189,36.243046,-0.6695349974551924,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,1799,224.01188541773564,36.24304626196033,0.0472313120185995,129.3738,119.57966,26.353537,21.31139,1.4268224,0.32690594,91.21222
|
| 23 |
+
222.963,46.913734,-0.5793439664467084,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1050,222.96299893819668,46.91373521018148,0.076043879566273,41.684826,35.362488,9.43389,6.708354,1.6678497,0.4975586,100.551994
|
| 24 |
+
210.7116,32.92613,-0.5778126897217477,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,2599,210.71159367983148,32.9261302932211,0.1476382299082023,73.85395,42.593975,15.098367,7.1452107,1.3654661,0.7190586,91.65019
|
| 25 |
+
210.91286,35.773186,-0.5600545266906618,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-001.hdf5,800,210.91285383161784,35.773186728036734,0.0133403466239761,13.649347,2.275988,4.354769,9.20346,1.6012939,3.2976995,125.0
|
| 26 |
+
211.00102,32.670048,-0.6242225858420763,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3312,211.0010167338634,32.67004806893381,0.0671597962590391,14.284497,53.465183,12.594709,19.433619,1.9349676,1.1048987,293.79504
|
| 27 |
+
226.92117,46.89221,-0.6103942130253949,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,1263,226.92118065891,46.892207161877565,0.0905692343984707,699.1391,164.21088,163.69133,178.81459,1.1030179,2.24335,362.03806
|
| 28 |
+
219.89328,46.63121,-0.6413601162909434,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,627,219.8932850479245,46.63120865207797,0.0375364890667122,1684.9369,813.02466,260.66617,90.362076,1.2437927,2.8132715,110.71867
|
| 29 |
+
200.04846,33.09609,-0.6771650566707986,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,630,200.04846720021123,33.09608833422207,0.0396385996701661,84.131096,44.45386,9.918953,8.187026,1.7141064,0.6740512,70.03848
|
| 30 |
+
223.0503,46.521004,-0.5628563220725986,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1315,223.05029934664813,46.52100280670349,0.0721267166692352,2.0307114,13.6547785,0.0,11.176326,2.0280647,0.0,173.46309
|
| 31 |
+
219.58582,47.816025,-0.617485136663874,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,2490,219.5858130520594,47.81602561856626,0.2460078607801517,0.0,1.4027765,4.4766035,0.0,2.680429,2.5337577,157.76195
|
| 32 |
+
200.23062,33.902607,-0.6557414604975511,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,869,200.2306247950612,33.90260802325843,0.1797854124313932,0.0,9.785126,6.1485534,5.8740244,1.8656517,0.2940471,297.73224
|
| 33 |
+
224.42175,47.216965,-0.6271035115846311,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4591,224.4217568924908,47.21696661867415,0.0850491675107326,96.126434,81.75871,47.881783,34.330124,2.010385,0.52510005,271.93787
|
| 34 |
+
211.56627,35.795273,-0.7077425872138497,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3347,211.56626236843644,35.79527249718016,0.0269179017288922,234.1024,79.274506,62.1393,6.6741495,1.3705786,0.92396975,125.0
|
| 35 |
+
222.83739,35.504044,-0.5836484389319461,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,740,222.8373895831141,35.50404452434604,0.1047305402923954,123.14245,24.011309,24.859426,43.34396,1.2856913,0.0,125.0
|
| 36 |
+
222.83969,34.44721,-0.6072835613043173,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1816,222.83968564695525,34.44721007212757,0.1551261355597668,18.551071,12.908168,3.9302208,2.932675,1.1998602,0.0,141.58092
|
| 37 |
+
211.72879,33.472313,-0.5824126280048473,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,2196,211.72878583291987,33.4723114586313,0.3303006629130588,54.224686,16.342693,11.063623,13.370103,1.2430671,0.21980469,125.0
|
| 38 |
+
219.30371,47.499092,-0.5599966720366738,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2581,219.3037100412387,47.49909142241468,0.1846300938520471,0.0,10.060135,0.0,2.4128926,1.6125512,1.0525064,113.40818
|
| 39 |
+
219.0164,46.743916,-0.5648288494412933,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1261,219.0164032088993,46.74391728678388,0.2745691281919983,38.766983,27.53382,3.3798504,5.189906,1.4134003,0.0,137.99214
|
| 40 |
+
223.08978,36.091084,-0.5841514545595019,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,477,223.0897842296164,36.09108448968527,0.0707606977282446,30.590155,35.352654,3.9749823,20.392942,1.8643974,0.0,154.67648
|
| 41 |
+
222.33034,47.44863,-0.5710990093546388,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,3058,222.3303352590996,47.44863230196504,0.1622167030680589,63.759056,17.164026,21.630444,18.196495,1.2350461,1.0986282,125.0
|
| 42 |
+
212.09677,36.199924,-0.5812158359114539,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,4104,212.0967724184268,36.199924746070366,0.173282077781452,13.54374,15.260717,0.44516045,6.347724,1.5528253,0.8225291,144.3078
|
| 43 |
+
223.4386,34.389263,-0.5706426646588099,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3792,223.4385941059093,34.38926152658966,0.2186607382648306,197.02957,80.62603,40.7879,7.0163593,1.1962504,1.7506077,125.0
|
| 44 |
+
224.93661,47.07267,-0.5760161695683038,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4449,224.9366209686408,47.072671531941545,0.2055615850919092,0.0,4.208838,0.0,1.7497872,1.9096621,0.0,264.22485
|
| 45 |
+
225.63454,47.293297,-0.566237520746517,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4756,225.6345331923442,47.29329832691437,0.0836408246355768,39.496693,26.057682,5.8202305,2.5624068,1.6925266,0.0,124.72639
|
| 46 |
+
201.21243,33.26414,-0.594847745756717,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,991,201.21243861542587,33.2641399298698,0.1945976580408478,32.275528,14.408648,11.19581,3.7737694,1.4141546,0.8630274,139.6687
|
| 47 |
+
224.42151,46.822662,-0.5615085424128482,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4102,224.42150906071527,46.822660938104384,0.4991303158061358,0.0,0.0,3.837246,0.0,1.7117543,0.45246977,280.5234
|
| 48 |
+
224.87427,47.76158,-0.5599291686456922,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4554,224.87426408944484,47.761582551052456,0.1449827202299946,4.884886,5.428815,1.6076049,5.7064085,1.9510121,0.0,137.41873
|
| 49 |
+
206.00899,32.11525,-0.6488928897939612,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4604,206.00898250243657,32.11524775609827,0.1027756745791712,8.671251,15.87902,4.5115747,11.050366,2.142722,0.9336052,223.28067
|
| 50 |
+
223.06161,47.001293,-0.5931704281526834,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,3775,223.0616210535607,47.00129482809106,0.0860072734465668,122.69132,61.706615,36.461952,19.240562,1.621557,0.9362112,168.05334
|
| 51 |
+
200.02356,33.287064,-0.5745143414030865,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,231,200.02355633595155,33.28706350649918,0.0340574561903357,102.2948,52.111813,24.137001,19.449585,1.5548453,0.24182859,125.0
|
| 52 |
+
200.06491,33.297512,-0.6915292696802472,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,223,200.06490626468783,33.29751046696272,0.0357816356839197,0.0,23.570286,0.0,0.0,2.0298402,0.5271562,189.12274
|
| 53 |
+
200.2609,33.339485,-0.7275117594014705,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,543,200.26089421008896,33.339483930945335,0.0365231918941089,22.186289,93.97089,0.0,0.0,2.0162902,0.11195589,284.89755
|
| 54 |
+
200.54095,32.74289,-0.6011052875469948,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,420,200.5409605188636,32.742888974873125,0.0389025886479906,132.68816,69.978745,37.34377,7.870204,1.590646,0.19280377,92.58403
|
| 55 |
+
201.13945,31.67151,-0.5541432687311584,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4765,201.1394456137627,31.671510405817955,0.0157042529275299,2.3524148,3.5928018,5.4790983,4.246914,1.5908474,1.2105498,125.0
|
| 56 |
+
201.18198,32.54029,-0.7229205273308329,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4409,201.18197431276528,32.5402893642906,0.0397820921263507,5458.167,3199.113,982.9366,729.4028,1.2184215,1.228747,375.87613
|
| 57 |
+
201.1878,32.516823,-0.5997876971564051,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4419,201.1878049962727,32.51682246438476,0.0243643677851214,10.820844,26.964106,0.0,43.04428,1.8825213,0.62308985,65.3587
|
| 58 |
+
201.25839,33.271908,-0.598830387000561,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,987,201.2583964570045,33.27190894235522,0.1035532628864396,59.16318,26.343004,12.230872,7.044405,1.6835968,2.6431098,125.0
|
| 59 |
+
201.73921,32.383,-0.6668698248492971,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,222,201.73921160838265,32.38300079673323,0.0999187315274107,0.0,13.877981,11.784263,14.029617,2.0588653,0.21812959,347.52975
|
| 60 |
+
201.74942,32.706326,-0.5581080369827209,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4903,201.74942354184213,32.70632603618168,0.0242890821311472,0.0,4.6906567,4.458124,2.7374365,1.8348471,0.07974044,99.54372
|
| 61 |
+
201.79012,33.501156,-0.5842210665034255,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4957,201.790111117366,33.5011541170638,0.1338037703217408,0.0,13.136049,0.0,11.772675,1.8926485,1.0458214,276.22415
|
| 62 |
+
201.8101,33.786076,-0.5924704480147599,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,2304,201.81010032989985,33.786076906612,0.039572923619018,463.93637,197.40096,103.23579,26.665054,1.433467,1.1664426,130.72394
|
| 63 |
+
201.87544,33.392143,-0.6260645979487105,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,4961,201.8754391735282,33.3921437626614,0.0359498826171761,567.5528,446.27744,120.51637,274.4664,1.665294,0.9467856,165.0971
|
| 64 |
+
201.92282,34.35722,-0.5849633159190043,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,2369,201.92282306282905,34.357221562592315,0.0343793954134015,0.0,26.734838,7.2940063,4.257527,1.792479,1.322652,146.6718
|
| 65 |
+
202.48431,32.232494,-0.6175727530244329,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,655,202.4843143010023,32.23249263606264,0.1389815163741137,0.0,10.83329,18.531168,0.0,1.887573,0.30687627,193.88425
|
| 66 |
+
207.0826,32.0275,-0.6956250006462609,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3668,207.0825931405956,32.02750157035022,0.0801399706436009,18.643217,53.649597,0.036278352,22.863344,1.9498808,0.24249217,237.07874
|
| 67 |
+
225.50099,47.11725,-0.6626593644860734,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4830,225.50099361513813,47.11724767191799,0.4123073390398996,3.5633779,5.322578,3.4070137,7.519645,1.9217192,1.2859493,175.13623
|
| 68 |
+
225.43314,47.5701,-0.6122573612878669,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4831,225.433138415303,47.57009804750207,0.2021655451911654,33.421776,17.74692,4.7452693,6.255411,1.6987009,4.5206285,125.0
|
| 69 |
+
200.58075,33.889343,-0.5960476641403275,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,990,200.58075704401665,33.88934343397551,0.3743202097062087,18.251879,14.091039,6.565206,2.1679301,1.5050137,1.9202901,77.59964
|
| 70 |
+
205.87703,32.26004,-0.5537245474620859,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4606,205.8770264579534,32.260039891449985,0.165043034777569,0.0,0.9496397,0.0,0.35828102,1.7472262,1.9600616,194.9768
|
| 71 |
+
206.00699,32.114067,-0.6258076431576377,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4523,206.00699482403377,32.11406541102019,0.103196282062254,0.0,0.0,0.0,4.364116,1.9091669,0.94135356,169.3539
|
| 72 |
+
206.03018,31.838966,-0.5568796421344882,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-000.hdf5,4778,206.0301764967681,31.838966500335463,0.0788855066680599,56.5344,24.380386,15.269197,6.0548477,1.3966492,1.3161752,97.55143
|
| 73 |
+
206.13913,31.951334,-0.6331775916520421,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-000.hdf5,4766,206.1391257732112,31.95133427279436,0.3446268109807492,0.0,0.0,0.0,1.518941,2.1055892,1.5975788,252.75848
|
| 74 |
+
206.30923,32.761757,-0.5893223678991251,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4666,206.30924172305865,32.761755637580755,0.1644824939538681,23.36069,13.48482,2.6613388,6.0080833,1.5540636,1.8518265,116.36514
|
| 75 |
+
206.39952,32.436924,-0.5896666630369354,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3958,206.3995145462756,32.43692477483224,0.1333823726537826,30.900303,26.13315,1.5016136,6.757316,1.7948401,0.0,169.80815
|
| 76 |
+
206.48341,31.730963,-0.5741364730563062,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4050,206.48341653769336,31.73096234258783,0.3428153781617297,18.235163,14.299304,3.2681048,6.303649,1.500911,0.0,199.46442
|
| 77 |
+
206.49646,32.40309,-0.5566690076290227,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3587,206.4964648803969,32.4030920265069,0.086250836813975,20.75456,29.98846,0.0,10.30701,1.8349515,0.52225286,163.35898
|
| 78 |
+
206.77965,31.72738,-0.6123740228636962,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4094,206.77965387342672,31.72737993215746,0.1158036184895423,17.599953,52.64966,2.91634,18.757751,1.7461296,0.11843636,218.94588
|
| 79 |
+
206.86995,32.115643,-0.5608416586289711,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3808,206.8699435925978,32.11564073306392,0.1074534847594947,78.90822,49.283077,6.0953884,5.8237715,1.519044,0.03562138,143.68477
|
| 80 |
+
206.92854,32.0517,-0.6246939246639325,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3662,206.9285428177548,32.0517011424404,0.1075529205193271,38.07781,24.340185,6.7555914,7.3738465,1.7019628,0.0,197.7783
|
| 81 |
+
207.00159,31.69941,-0.6194871153303225,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4165,207.001594494217,31.69940897501129,0.1987007349733261,0.0,3.0843742,0.4815168,0.19149244,2.0109618,0.0,77.93035
|
| 82 |
+
207.08122,32.309772,-0.6060798613325619,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3667,207.08121515503737,32.309771923766654,0.163545214691702,0.0,0.0,12.0425005,0.0,2.1390398,0.0,326.3595
|
| 83 |
+
207.20651,31.754204,-0.6166484366615139,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,1127,207.20651397910143,31.75420387753708,0.1065807729707902,11.271789,11.850342,0.0,0.0,1.8284445,0.87155294,170.73048
|
| 84 |
+
207.21309,32.910126,-0.5813153566528981,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4324,207.21309367339447,32.91012618252359,0.1944679851553689,1.0747736,4.8003674,2.6386006,6.2366476,1.5625354,0.65093094,120.43932
|
| 85 |
+
207.24332,31.675657,-0.5980202166751152,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,1111,207.243312105534,31.675658178620367,0.0760450093763785,4.0224624,12.887316,0.0,7.8925886,2.0682714,0.4021392,216.6748
|
| 86 |
+
212.29573,39.28846,-0.6444623863571558,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4668,212.29572729739496,39.28845866917107,0.3523514935677235,40.476967,13.044783,10.372715,7.89279,1.1488165,2.7687988,177.3769
|
| 87 |
+
224.27069,47.335457,-0.5661041696964321,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4514,224.2706961343229,47.33545732165221,0.1360163461397858,0.0,12.464649,3.7781096,1.2228712,2.0113862,0.0,301.08035
|
| 88 |
+
206.13358,33.488094,-0.6074852402469132,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,129,206.13358107594075,33.48809456522228,0.2739931985305081,0.79417723,0.1487888,5.8457084,0.0,1.7899655,1.5389441,220.4389
|
| 89 |
+
226.09256,47.6867,-0.6362475765912455,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,4664,226.09255430835245,47.68669715018158,0.0933861996400477,184.60187,144.15887,32.058487,15.440179,1.811719,0.29084396,300.61115
|
| 90 |
+
210.64293,35.302143,-0.5987487019556038,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,1708,210.64292425767096,35.30214254064556,0.466394972343971,54.03332,18.863293,16.772726,8.307977,1.0934554,1.3408453,125.0
|
| 91 |
+
210.81328,33.150513,-0.6018059688729229,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,101,210.8132840983208,33.15051387101775,0.0626315598738335,474.91568,476.01624,50.329693,295.18732,1.4722034,0.5305707,157.75453
|
| 92 |
+
210.85245,32.815968,-0.5704098722835853,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,2626,210.852445208131,32.81596670233385,0.2933952148845262,13.031618,0.0,0.45714527,2.0987911,1.8312287,0.13459975,157.85374
|
| 93 |
+
210.8568,32.13594,-0.581843610871711,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3646,210.85679242090777,32.135938745178606,0.1165942410969168,96.55597,20.354279,27.716656,24.89311,1.3030288,2.0120647,125.0
|
| 94 |
+
210.83629,35.65457,-0.5606882199908048,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-001.hdf5,18,210.8362906921042,35.6545703924217,0.3392191296493043,73.83673,89.31965,20.744759,82.43235,1.5053855,2.2625399,180.77463
|
| 95 |
+
211.10704,35.61177,-0.6365922249379475,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3484,211.1070329624476,35.61177055380295,0.027266545300458,119.71564,44.160084,37.635246,7.2889643,1.4123491,0.3094304,125.0
|
| 96 |
+
211.21178,38.66414,-0.5980636069877537,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4080,211.21177114237528,38.6641392402956,0.0640495652840224,34.78704,56.92076,0.0,23.881334,2.052838,0.5506668,191.18707
|
| 97 |
+
211.47302,33.170837,-0.6771737735875608,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,1486,211.473027373856,33.1708379494616,0.0545837896154792,0.0,66.03611,0.0,0.0,2.0488505,0.39095822,266.29742
|
| 98 |
+
211.6843,39.01213,-0.601324104715165,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3753,211.68428987765725,39.01212954702455,0.211787656312605,0.01942657,2.4512324,0.0,1.707608,1.8512852,0.5878976,182.66818
|
| 99 |
+
211.82445,38.59338,-0.5634066382354657,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4371,211.8244421603893,38.593379969381694,0.1399504839559008,3.6988332,19.386808,0.21946427,10.769871,1.9768147,0.67482287,224.37392
|
| 100 |
+
211.8437,36.290768,-0.6045724917788265,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,4203,211.84370277548567,36.290767553626814,0.1640405511491878,0.0,8.427735,2.7709746,4.82846,1.9911486,0.0,376.21762
|
| 101 |
+
212.41968,38.728687,-0.588165237899135,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3238,212.4196726074984,38.72868716072999,0.4308398942362837,84.58413,29.84395,26.288927,23.725332,1.2391694,1.4008379,125.0
|
| 102 |
+
212.50969,38.70649,-0.6019313232995143,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3491,212.5096957881894,38.70648878770626,0.0254046838449561,95.00908,28.681293,9.904182,3.727456,1.192345,1.2656068,255.8642
|
| 103 |
+
212.52777,39.400173,-0.5759002251671799,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4768,212.5277712111112,39.40017322665678,0.0953865104469184,4.0339127,21.272093,6.0873013,6.8741446,1.93562,1.1174482,197.87987
|
| 104 |
+
212.54858,39.409256,-0.5829978941561668,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4770,212.54859109540627,39.409257805643286,0.0957025804048368,62.531067,81.259575,8.660412,16.484186,1.9066255,0.48014888,232.9337
|
| 105 |
+
212.57089,39.034874,-0.6106339725024332,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,65,212.57088704014035,39.034874040150726,0.2566611350947865,0.0,0.8762979,0.0,0.0,1.7821372,0.0,229.96886
|
| 106 |
+
212.57834,39.041847,-0.5632180885029978,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4673,212.5783364219272,39.04184867446266,0.2114715311799801,0.0,6.4059544,0.0,0.0,2.4245684,0.0,257.66064
|
| 107 |
+
212.60635,39.467316,-0.6211793590298442,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,211,212.60636014801503,39.46731392373784,0.0956716279611148,443.43948,166.7696,93.173195,24.89545,1.2152063,1.4550186,132.41571
|
| 108 |
+
212.63184,38.89353,-0.6936387540387613,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,2993,212.6318323463921,38.8935310081632,0.0255831708538627,121.24634,70.45137,33.40885,46.61589,1.6076778,0.6716498,71.762566
|
| 109 |
+
211.11621,38.40168,-0.5547876520003225,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-001.hdf5,1836,211.1162130552622,38.401678938986805,0.1386694633110824,0.0,47.111797,0.0,4.655442,1.9610288,0.0,253.12947
|
| 110 |
+
213.29301,39.866394,-0.6140726758379427,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,2610,213.2930161270885,39.86639319409584,0.020724539962755,901.6638,356.52322,204.63278,123.7038,1.37242,2.1267896,73.10862
|
| 111 |
+
213.53786,39.497112,-0.5617939735754495,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,482,213.53785445211983,39.49711372839428,0.0431563723593559,152.00291,69.32567,36.585594,40.793663,1.448733,0.80287176,228.37401
|
| 112 |
+
213.66644,39.842617,-0.566054672901568,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,719,213.66645008010505,39.84261695702546,0.2884659440950299,85.37928,29.668833,21.11754,8.766691,1.331178,2.8547058,125.0
|
| 113 |
+
200.12047,33.820747,-0.5741918770782739,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,1107,200.12047293866527,33.8207459750785,0.1118597107810325,13.342489,34.51986,0.0,3.188223,1.8528523,0.97340286,225.91655
|
| 114 |
+
213.80695,39.703667,-0.5791061453295239,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,717,213.80694618788576,39.703667768463255,0.0425444175972489,1539.9432,485.44247,346.3773,212.8216,1.2012135,2.618088,125.0
|
| 115 |
+
213.85506,39.67346,-0.5559516143680534,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,708,213.85505467549265,39.67345655763509,0.2576344132085498,23.113068,16.149668,10.935778,4.303281,1.5649688,0.0,110.17751
|
| 116 |
+
214.10843,39.651253,-0.6262239508275188,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,562,214.1084363534509,39.65125142861267,0.0254503756554625,27.92884,20.052586,1.1916468,2.8574893,1.5503192,0.41022223,125.0
|
| 117 |
+
222.57603,34.093918,-0.648049101844184,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1709,222.5760395559512,34.093917492113086,0.089155891847577,3.6732945,19.671986,0.0,3.8772118,1.9923276,0.0,270.28528
|
| 118 |
+
200.2684,33.151455,-0.5586770375675211,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,561,200.26839531316344,33.15145647051468,0.1196310800036571,0.0,13.484382,0.0,0.0,1.9692236,0.12680204,301.3307
|
| 119 |
+
206.98126,32.98733,-0.6083544859087308,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4207,206.98125974963,32.98733029528872,0.1611008251001568,0.105566956,4.7902336,4.0942626,5.0955386,1.8559214,1.00057,75.01639
|
| 120 |
+
214.58755,39.54192,-0.594390095419699,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,1983,214.58755908956667,39.54191872025695,0.2614905674351391,19.60288,15.98745,2.734782,1.2283802,1.8041553,1.1057148,153.15163
|
| 121 |
+
214.85707,39.857384,-0.6064370213153873,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,1535,214.8570696990949,39.85738225564789,0.0054464482407823,1078.9054,80.46467,367.11935,1077.3285,1.1300904,3.9371824,125.0
|
| 122 |
+
211.59433,38.82993,-0.5601422957871854,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3930,211.5943229109224,38.82993087556921,0.0701205850618111,1374.1403,252.5842,372.7128,805.32416,1.1221515,4.6841855,354.14713
|
| 123 |
+
222.91837,35.5132,-0.5920160708120491,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,430,222.9183637937329,35.51319777262585,0.3688895658415224,35.247227,16.779707,2.9674067,2.8514087,1.8918798,1.8079698,269.1782
|
| 124 |
+
218.83414,47.382477,-0.569823681828731,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2269,218.8341341311609,47.3824785617545,0.0745046133980712,4.5406785,68.62229,0.0,10.664129,1.8262026,0.24213488,174.25041
|
| 125 |
+
224.99876,47.243427,-0.606673641834868,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4476,224.99876961391456,47.24342700209724,0.0884543272406851,74.65757,49.285107,5.4270163,14.406216,1.6656307,0.0,165.74397
|
| 126 |
+
200.71564,35.019714,-0.6049640336266979,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,2739,200.7156423447873,35.0197136245017,0.1301835803804129,4.987716,4.8324127,0.5012143,0.0,1.8825408,1.2074434,71.95352
|
| 127 |
+
224.8766,46.6288,-0.5907681207968967,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,3895,224.87660554309284,46.62879815572196,0.0973582161679877,0.59842885,10.68485,0.0,8.609838,1.9551188,0.5665278,234.09956
|
| 128 |
+
211.937,36.20765,-0.5914050563431276,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3883,211.937000017882,36.207648863121584,0.1637330853832733,0.0,3.5354424,0.0,0.0,2.0566583,0.0,211.3913
|
| 129 |
+
219.9522,46.597305,-0.5712539809632176,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,832,219.95220073020388,46.59730432582713,0.4028638287473299,0.0,6.4310637,0.008039239,0.13711749,1.4550163,0.0,170.71991
|
| 130 |
+
201.04257,33.261486,-0.612917674747236,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,959,201.042577992498,33.2614861705324,0.0352774866139583,461.5791,250.8647,68.25791,99.35406,1.3960756,1.396961,194.4545
|
| 131 |
+
212.25842,36.323418,-0.6156387266234188,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3775,212.25842649119696,36.32341830131969,0.0110697181454592,163.71632,104.38179,70.155495,43.566128,1.3181894,2.1876454,316.11493
|
| 132 |
+
219.56393,32.862244,-0.5605689993956423,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-000.hdf5,4877,219.56393043589685,32.8622430208386,0.4951273643794364,43.83611,0.0,8.756644,1.8934585,1.4010749,0.87323743,183.5364
|
| 133 |
+
219.66956,32.5748,-0.6210184170305761,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,185,219.66955145992537,32.574797965348374,0.2514618204387289,6.5272965,6.7401905,0.3336855,3.7614493,1.9571998,0.00032769376,257.41364
|
| 134 |
+
219.79848,32.686592,-0.5592810217733164,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-000.hdf5,4742,219.7984803327828,32.68659132425678,0.2513475344033499,118.796974,45.667683,22.835281,4.8570075,1.1951044,1.5274028,102.598976
|
| 135 |
+
219.79901,33.785275,-0.7168093201152106,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,3938,219.79900537541417,33.78527349761495,0.0475878655595121,8.8137455,37.277992,2.2266881,22.33169,1.9655448,0.26227197,222.16867
|
| 136 |
+
219.82674,32.63448,-0.5753305951447605,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,124,219.82674346397613,32.63448123041645,0.3429463701138904,10.191678,11.186805,1.7113514,3.8219228,3.6783407,0.0,171.06001
|
| 137 |
+
219.89052,33.352432,-0.6049692656256447,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,4118,219.89051989904883,33.352431243383364,0.2419174382323575,0.0,0.54296356,1.207454,7.370367,2.087663,0.32500294,178.01915
|
| 138 |
+
220.07722,32.767906,-0.7006318458240804,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-000.hdf5,4913,220.07722921029185,32.767906334791924,0.0908292072791342,161.8592,368.0356,39.2706,347.0914,1.588741,0.5401367,156.59846
|
| 139 |
+
220.29765,33.84457,-0.566296673876863,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,4289,220.29764943456183,33.84456941775816,0.0860597316195983,83.42156,75.74049,6.4498215,15.866237,1.6146117,1.1312429,202.01173
|
| 140 |
+
220.34712,33.757187,-0.6026759241258309,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,970,220.3471214731185,33.757187778318595,0.1798527211266138,27.476126,29.368305,0.0,25.943401,1.6759259,0.7400875,175.66818
|
| 141 |
+
220.42723,33.302834,-0.6500478418131659,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,1169,220.4272344580592,33.30283226982711,0.0575443238460249,0.0,10.787925,9.457212,11.604758,2.0409455,0.49289072,168.21913
|
| 142 |
+
219.74295,47.307888,-0.6040367003693287,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,1331,219.74294741930424,47.30788952630464,0.0270759705789607,307.4401,80.6204,88.83942,116.65541,1.2357608,0.41265604,133.1318
|
| 143 |
+
206.14038,33.54464,-0.5599020531649982,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,222,206.1403824454885,33.54463875626278,0.1662019101960731,269.41565,106.14157,54.2275,25.099771,1.4659518,3.5225248,125.0
|
| 144 |
+
210.67586,32.18062,-0.5791184799751264,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3417,210.6758545616341,32.18061998098871,0.0791432367331962,0.0,11.841154,0.0,0.0,2.0272617,0.8028675,230.6861
|
| 145 |
+
222.43597,34.342525,-0.587221023224993,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1188,222.43597798310344,34.342523897281595,0.340490227739321,115.31614,29.967829,34.649204,23.886856,1.1803927,3.504892,125.0
|
| 146 |
+
222.57188,34.573353,-0.5945776151522206,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1178,222.57187828563755,34.57335139451143,0.1341822023488934,14.332778,46.033176,0.3688603,3.1483254,1.9730093,1.2665237,280.99228
|
| 147 |
+
222.72176,36.17021,-0.5864638856708192,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,865,222.7217498790792,36.17021351244886,0.1222176893819427,175.63924,75.940025,31.894058,4.6895742,1.3481951,0.62894213,157.79854
|
| 148 |
+
222.73546,35.57169,-0.6601356727954886,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,487,222.7354556328703,35.571688282728815,0.0039695336777407,3443.6672,151.33598,1137.5629,4294.6865,1.0020062,3.1881292,125.0
|
| 149 |
+
223.05081,34.027065,-0.5774383871353495,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1079,223.05080455271624,34.027063514016305,0.1620309838191107,65.19058,26.102282,16.987501,6.538011,1.3159517,1.4064438,65.37186
|
| 150 |
+
223.44524,34.79861,-0.6067579467275153,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3708,223.4452363851028,34.79861119735138,0.0770945828784734,7.858922,28.771578,0.0,10.71163,1.9498831,0.039399184,181.50952
|
| 151 |
+
223.44724,36.1347,-0.5610555272001411,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,1116,223.44723745611304,36.1347000781951,0.0731210143332696,205.15065,105.85612,48.582436,10.044661,1.6816188,1.3304148,166.3001
|
| 152 |
+
223.70625,34.51449,-0.555503584624521,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3656,223.70625149860203,34.51448932189829,0.2030341848228544,23.15143,6.185155,4.9168677,3.5135589,1.3334256,0.7558826,175.21295
|
| 153 |
+
223.99643,35.66342,-0.6016213504029252,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,4756,223.9964274557889,35.66342324032763,0.0335815965404772,1.7743999,42.331783,0.3233424,36.214302,1.9824646,1.254335,143.1142
|
| 154 |
+
219.32945,47.251503,-0.608815626493015,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2625,219.3294462582454,47.25150453486008,0.1225995221736021,11.084662,19.678726,1.3400545,7.8316894,1.989124,1.6353171,214.41988
|
| 155 |
+
224.5197,47.406647,-0.6595209700694811,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4609,224.5197061619336,47.40664589577288,0.0848143174376725,24.303368,62.071705,4.255969,25.421356,2.273095,0.07493029,403.0216
|
| 156 |
+
224.0696,46.916237,-0.608113270953753,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4032,224.06959449323315,46.91623619256161,0.0855187944154564,13.586229,39.610065,7.738013,12.804683,1.916908,0.502094,202.82097
|
| 157 |
+
211.39746,38.423523,-0.59691595851189,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4324,211.3974604283739,38.42352189868875,0.4696733365425841,65.137024,24.510183,9.443341,6.569673,1.3829902,1.0595624,378.2059
|
| 158 |
+
211.44347,39.15259,-0.5702953258768438,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3686,211.4434711622688,39.152590230234246,0.1031131140504137,7.4845605,15.498243,0.0,0.0,1.6772119,0.3228938,183.57558
|
| 159 |
+
222.83455,46.684982,-0.6051438599646451,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1072,222.83454887076985,46.68498267040715,0.0747797931456135,7.554874,61.17681,0.0,27.182123,1.9557168,0.27199674,258.6711
|
| 160 |
+
205.76637,33.096676,-0.5555794166790564,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4628,205.7663777087079,33.09667709069031,0.1644335385229733,86.02553,24.594728,21.265049,10.208262,1.2561816,2.231582,91.35825
|
| 161 |
+
211.68022,33.334686,-0.5961098002084769,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,1843,211.6802278069152,33.33468546051164,0.4581448721812153,72.63895,29.199303,10.505818,2.6324103,1.266427,0.0,232.15697
|
| 162 |
+
218.09491,47.11061,-0.6362163480872454,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1709,218.09490236960383,47.11061185946859,0.1086942674583146,25.940062,29.512754,15.613782,21.51171,1.964001,0.22049187,235.82353
|
| 163 |
+
216.2295,47.73962,-0.5743768974491661,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,4649,216.22950758504223,47.73961901978189,0.074914961390262,28.868378,22.536259,10.127764,9.6079645,1.8251929,0.018838555,146.44377
|
| 164 |
+
219.31471,46.945824,-0.5649871913946566,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1193,219.31471506956908,46.94582232353993,0.0934017171802508,81.13482,67.10934,11.565868,6.0580306,1.555259,0.55442363,144.69151
|
| 165 |
+
200.61858,33.66162,-0.6196747800170833,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,1103,200.61857365994487,33.661620976940654,0.4323553607374453,16.46546,10.708547,2.374653,1.9309137,1.5786408,0.0,185.14197
|
| 166 |
+
219.74077,47.24487,-0.5981155199788025,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,907,219.740775357679,47.2448703033323,0.2911882214566502,67.14965,24.980637,13.382441,3.264203,1.3361862,1.2058113,336.38553
|
| 167 |
+
223.06969,35.077347,-0.6195896885621592,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3848,223.06968003069235,35.07734690562238,0.4227590622199453,31.929966,15.543224,3.8774934,4.424237,1.3776451,0.5248221,360.56583
|
| 168 |
+
228.27931,37.94177,-0.5568645896913637,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,3878,228.27930615960065,37.94176701651247,0.3319690389042785,179.22223,120.99037,36.970463,104.36327,1.3153695,1.494078,419.51538
|
| 169 |
+
228.3645,37.973812,-0.5756060290818129,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,3876,228.36450596311383,37.97381278578304,0.0559084025837915,0.0,14.570004,0.0,0.0,2.0484486,0.6453704,171.75305
|
| 170 |
+
228.49507,37.00813,-0.5610068341079185,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,1821,228.4950702185072,37.00812758477887,0.2064317251333488,1.5312843,8.128542,0.0,0.0,1.92103,1.4125488,296.03476
|
| 171 |
+
228.55719,37.265854,-0.5945155659896727,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2387,228.55718757107576,37.26585561887151,0.1589147785281133,1.8214308,4.255132,0.0,1.2651855,2.3477323,1.8158982,161.2094
|
| 172 |
+
228.84914,36.79295,-0.5621503558140126,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2289,228.84914321377352,36.7929492077741,0.1597033747738024,106.52054,54.420708,16.87555,0.0,1.6755643,0.0,478.39453
|
| 173 |
+
228.93855,37.135365,-0.6440655921462716,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2025,228.938552648146,37.13536589994408,0.1505489053762369,74.953125,16.125166,17.017136,26.3971,1.3199744,2.717431,125.0
|
| 174 |
+
229.04361,37.186684,-0.5778757493297623,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2039,229.04361218566805,37.18668244937653,0.2872972755051858,0.0,1.282869,0.0,1.9433968,2.0195315,0.9426205,260.3401
|
| 175 |
+
212.12021,32.224735,-0.5602010832858404,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,567,212.12020736341,32.22473391429282,0.1638391296492364,77.86213,33.19613,21.268816,3.2805185,1.3434662,0.60638577,180.8912
|
| 176 |
+
229.1178,36.83929,-0.5771535968643262,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,2259,229.1178023855698,36.83928994254862,0.2320734934368725,96.34299,66.105064,8.620694,13.0059805,1.2842717,0.0,379.05923
|
| 177 |
+
229.1906,36.696434,-0.6094152483033662,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,1561,229.1905936151645,36.696432687290816,0.1587731278980015,1.8929231,7.2078123,0.0,0.0,1.6508603,2.4333315,199.02113
|
| 178 |
+
229.19077,36.889626,-0.6472907403357917,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,1768,229.1907682934603,36.88962490404788,0.212447765618817,30.14342,16.97583,7.413594e-05,2.1948829,1.6177421,0.028573819,132.43378
|
| 179 |
+
229.2292,37.144295,-0.5640068214405909,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,1554,229.22919583659112,37.14429490457671,0.3239629583832507,44.16187,23.953215,4.1929593,3.525928,1.3575059,0.20579596,195.81538
|
| 180 |
+
223.34373,35.891567,-0.6648627179605477,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,598,223.34373924893785,35.89156867299774,0.3492067881437579,8.017072,14.874008,0.0,3.0638328,1.7268292,0.0,180.00992
|
| 181 |
+
229.54259,36.75623,-0.6063604321551223,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-001.hdf5,1702,229.5425946044939,36.75623070518471,0.1616545937981491,0.0,0.052401733,0.0,5.301617,1.8032849,0.0,163.86069
|
| 182 |
+
212.24332,35.390007,-0.5676302580353012,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,2175,212.2433115279403,35.390007525988025,0.0909579105299386,67.30816,28.515175,8.259927,3.3147748,1.2733002,0.1271286,235.51474
|
| 183 |
+
217.46295,46.53011,-0.5573872988146823,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2101,217.4629568603479,46.530110556779945,0.2415589998715414,50.517216,28.670652,9.800989,0.19696328,1.319974,0.2750141,74.57404
|
| 184 |
+
225.51064,47.230347,-0.6280639722430795,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4747,225.51064012175945,47.23034689529288,0.0363446022414091,0.0,50.7692,0.0,13.704027,2.0492685,0.53264266,185.33624
|
| 185 |
+
225.8057,47.140423,-0.6014017017096293,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,3807,225.80570192051107,47.14042161784469,0.2640268016391942,0.12095449,3.50769,0.032992516,4.1940093,1.7258393,0.15578339,192.26971
|
| 186 |
+
205.74358,33.297,-0.59648776542504,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=653/001-000.hdf5,526,205.7435685929352,33.29699975101718,0.0613524334807697,53.494003,140.54405,1.5721275,43.567474,2.0457273,0.002231399,214.06526
|
| 187 |
+
223.63498,34.04843,-0.562211516822322,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=572/001-001.hdf5,3774,223.6349836986801,34.04842972941864,0.2018087646193901,0.0,0.0,1.7867359,4.096354,1.8743061,0.0,360.35425
|
| 188 |
+
218.98026,47.634544,-0.5668952113750706,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2590,218.9802524897984,47.634544687111344,0.0735673467472184,34.86036,16.01794,4.116827,2.9265628,1.8427795,0.0,113.01733
|
| 189 |
+
215.97032,46.73816,-0.6087406795844373,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,918,215.9703213446816,46.7381607303229,0.1088451543318697,8.850026,40.167934,1.2005614,11.442958,1.9950749,0.36588567,304.39694
|
| 190 |
+
227.50311,47.240654,-0.6235747753022507,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,1410,227.50311582421804,47.24065387623113,0.0869573507363546,120.693275,44.410736,26.845058,8.1900835,1.2738321,0.21378446,153.9413
|
| 191 |
+
205.93634,31.748707,-0.576028072731488,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-000.hdf5,4608,205.9363381320065,31.74870734877123,0.2217447992661667,0.0,3.3700073,5.423889,1.1376532,1.868407,0.64356816,335.30087
|
| 192 |
+
205.97066,31.835638,-0.5933763569465876,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-000.hdf5,4595,205.97065456420285,31.835637523459333,0.16795608885692,3.21686,2.3820996,0.65935594,1.4539292,1.7159455,0.019821541,125.0
|
| 193 |
+
206.00267,33.263084,-0.5717152586869263,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,32,206.00266885465825,33.263085653720054,0.0843982198322347,12.33899,11.825106,0.56343216,7.4066806,2.3358374,0.0,107.05722
|
| 194 |
+
223.929,36.42147,-0.5602031827041053,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,1503,223.92899925008248,36.42147215549951,0.1717236572189635,99.331154,30.962952,21.690374,3.8960242,1.1742882,1.7985938,128.85745
|
| 195 |
+
219.56244,32.693924,-0.5602242493196115,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-000.hdf5,4696,219.56243629385355,32.69392485370115,0.2507484227264551,12.928726,14.504343,4.606252,10.931316,3.361864,2.9734979,80.73392
|
| 196 |
+
222.10153,47.674393,-0.555397823120572,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,3394,222.1015374454602,47.67439404919335,0.1706647074192798,5.8592477,30.634834,6.7525406,13.319966,1.7125338,0.019240968,211.36922
|
| 197 |
+
206.24904,31.802961,-0.7125365162191757,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-000.hdf5,4739,206.2490382127669,31.802961907467846,0.0431645845527583,47.17974,100.664696,5.1675715,32.644352,1.8671514,0.23782326,155.92433
|
| 198 |
+
219.70418,32.582756,-0.6367975850103503,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,129,219.70417471805865,32.58275734416754,0.2530671985271198,4.5437183,7.787877,4.6815605,0.48354384,2.1307495,0.0,229.9084
|
| 199 |
+
228.71115,37.252575,-0.6298185861334504,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2383,228.7111587048745,37.25257397533544,0.0297181056348212,0.0,35.394444,0.0,20.58374,1.9824018,0.23680045,179.7472
|
| 200 |
+
224.81299,47.517773,-0.5779536529468127,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4686,224.8129919346501,47.51777144135956,0.0851662470778703,45.707638,43.13437,11.197289,21.72629,2.053551,0.0,183.23315
|
| 201 |
+
210.95143,33.569786,-0.6335829976655191,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,215,210.9514363884165,33.569787625218424,0.019090542069898,345.16522,141.0208,112.238556,57.7665,1.2999928,0.70553225,125.0
|
| 202 |
+
216.78508,47.259075,-0.6613321470217932,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,2983,216.7850838167972,47.25907369347196,0.3082398095829989,125.489,35.359432,27.88053,29.70893,1.263976,1.6382729,125.0
|
| 203 |
+
206.69695,32.90637,-0.609910373920131,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,270,206.6969521109795,32.9063670471755,0.2464921141894627,312.33716,148.06842,45.719658,25.673061,1.3768301,1.6108108,125.0
|
| 204 |
+
211.99275,38.3277,-0.6069966356188836,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4288,211.99275757009897,38.32770203179291,0.1522071127914046,21.28807,19.46789,6.706501,12.075101,1.8768413,0.58561087,272.41776
|
| 205 |
+
223.31084,46.48638,-0.6769478466902171,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1723,223.31083440235744,46.48638205402484,0.0220579104613582,31.907045,31.587925,2.9782033,4.7873435,1.6940837,0.29837957,125.0
|
| 206 |
+
223.35246,46.485462,-0.6779575288414771,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1247,223.35246419577632,46.48546058672305,0.031192400977308,285.85114,90.70609,66.33839,38.279797,1.275101,1.1150723,314.30573
|
| 207 |
+
222.56502,36.513935,-0.6077750053272429,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-002.hdf5,607,222.56502278848188,36.51393374680878,0.3689641979059582,50.286423,21.773619,16.065407,11.043507,1.2204005,4.1605096,314.49063
|
| 208 |
+
222.69455,36.167004,-0.6741968879487549,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,863,222.6945433587852,36.16700382418537,0.0786995120941885,0.0,4.299266,0.0,21.927624,1.9921585,0.0,243.60175
|
| 209 |
+
222.74599,47.530132,-0.569664952007007,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,32,222.7459924581821,47.53013289926452,0.4990294238163574,0.0,0.0,10.930847,2.5052185,1.0179429,0.0,349.33368
|
| 210 |
+
219.40982,47.672005,-0.5917026923590818,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,2438,219.4098279806456,47.67200364275616,0.0944676187780445,32.995667,32.615368,5.8607965,7.4234166,1.8971497,0.25134394,181.4559
|
| 211 |
+
211.6404,38.38539,-0.5887307860645821,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4026,211.64040049110253,38.38539050928069,0.158976499907055,44.182228,13.517852,9.745341,7.984386,1.2449375,0.0,125.0
|
| 212 |
+
219.35918,46.67046,-0.60480928257622,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1070,219.3591811389088,46.67045830844129,0.0367119421051692,174.82256,76.76055,31.864077,13.491936,1.6902514,0.7219411,89.55349
|
| 213 |
+
212.08089,33.03165,-0.6007648075719927,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,1389,212.0808937567787,33.03165237222267,0.1908965908591296,0.0,11.274109,0.0,4.393191,2.0851479,0.0,380.53568
|
| 214 |
+
222.34369,47.35065,-0.5879728632814807,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,3263,222.34368248831785,47.35064964242633,0.0999071807136972,0.75243735,32.346878,0.9037573,23.178295,2.0101779,0.9400376,218.99979
|
| 215 |
+
212.11871,31.815794,-0.6302967228558736,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,569,212.11871776314777,31.81579359486736,0.1892055962903157,49.112762,26.70237,9.290448,2.9900815,1.7637391,0.5366015,182.10286
|
| 216 |
+
223.30116,35.969868,-0.5586866983049844,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,182,223.30115513907,35.96986727040134,0.3674628680816229,0.0,1.389918,0.0,0.0,1.8981191,0.3340102,280.11584
|
| 217 |
+
212.12698,36.495354,-0.6237574265822019,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3854,212.1269803985712,36.49535507613856,0.0352466235505702,65.05379,27.91922,19.133852,4.8374023,1.3267293,0.28137922,125.0
|
| 218 |
+
223.3763,34.7923,-0.5728153022934084,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,4083,223.3762938528633,34.79230068395399,0.1619398939923426,0.0,2.0003333,0.9938541,2.0683866,2.1529741,0.2880829,327.1509
|
| 219 |
+
212.20108,38.540554,-0.5939662515907348,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4462,212.20108588225563,38.54055292090585,0.0451353453884809,230.41386,76.14302,55.541157,8.832134,1.2838078,0.96622896,70.85919
|
| 220 |
+
219.80396,46.843464,-0.595464341439691,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,979,219.8039581605784,46.84346306890006,0.1358284506131482,1.7759002,0.24040967,0.0,0.0,2.7820559,2.3690228,174.38004
|
| 221 |
+
205.70216,33.306023,-0.558505411106937,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=653/001-000.hdf5,529,205.70215960251792,33.30602375467269,0.2803082382127252,39.887375,22.379267,7.4868894,1.9807751,1.6393282,1.2445171,192.72423
|
| 222 |
+
223.61409,35.44088,-0.6368079425050536,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3914,223.61409079603712,35.44088127025764,0.0778410484414868,13.306026,54.100056,3.659013,3.9201136,2.0894976,0.6376175,310.91486
|
| 223 |
+
205.78004,33.76482,-0.5941471438933146,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=653/001-000.hdf5,1063,205.78003962340856,33.76481875704611,0.1654175069687837,9.861464,9.286304,0.39036524,0.46077505,1.6748273,0.0,135.48343
|
| 224 |
+
219.83786,47.291893,-0.6448251128778545,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,858,219.83785303636603,47.29189367446383,0.026960225904097,20.216671,2.6855693,9.378885,14.616732,1.1758399,0.14987265,287.443
|
| 225 |
+
219.70135,46.78622,-0.5785797729920847,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,624,219.7013616972392,46.78621978447689,0.0355060396688551,0.0,18.487915,8.907152,2.2291965,1.8696325,1.0508584,91.37565
|
| 226 |
+
225.61334,47.25961,-0.6425830486310952,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,4751,225.61334264285628,47.25960910290959,0.0823336387891186,39.023865,14.131322,11.833689,2.3777807,1.5213865,2.1708808,69.67774
|
| 227 |
+
201.58698,31.72249,-0.688416995243427,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-000.hdf5,462,201.5869738044902,31.7224904892537,0.0440451785264033,71.9547,98.60482,14.148545,20.493465,1.6810817,0.33980575,168.21315
|
| 228 |
+
223.95187,36.039677,-0.6054070378731597,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,129,223.9518782189249,36.03967650195825,0.3169111015122308,90.60422,18.232029,20.1593,21.607988,1.1550869,4.660353,125.0
|
| 229 |
+
224.20229,35.48768,-0.5659705197242403,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,4503,224.2022820054661,35.48768031050145,0.0896440893839615,1.7813605,10.547363,0.009553298,0.0,2.0401363,0.23399597,117.3457
|
| 230 |
+
222.96446,46.490948,-0.5815485517953743,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1307,222.96446556582293,46.49094727242199,0.1042760697486841,0.0,7.694892,0.0,13.013653,1.8083621,1.1605588,193.75554
|
| 231 |
+
211.05383,38.733627,-0.6008758019830466,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3950,211.0538365095153,38.73362812624559,0.0634408942336423,13.3647785,44.675964,0.0,8.413316,1.7835332,0.20542252,152.88016
|
| 232 |
+
211.09053,33.476147,-0.6299236749109145,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,442,211.09053209292097,33.47614769173361,0.0584200044378733,29.726887,47.707172,1.6702757,18.240906,1.9838941,0.10859641,180.81404
|
| 233 |
+
211.24315,38.634235,-0.7119215393047873,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4075,211.24314185345915,38.63423394346926,0.0649938043021899,1.3962209,71.103035,0.0,7.3574967,2.0916867,0.06657433,272.885
|
| 234 |
+
215.99352,47.235878,-0.6363884958036011,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,2718,215.99352042612912,47.23587611965132,0.037663277723294,29.483028,76.54686,0.103849865,33.597275,1.9665147,0.61646295,164.1316
|
| 235 |
+
216.33784,47.245285,-0.6671713040057737,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,1278,216.33784094386235,47.24528662132693,0.0725879436006087,0.0,16.585499,0.0,13.151505,2.1598978,1.1413054,229.74977
|
| 236 |
+
223.83412,47.496624,-0.6460088176465577,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,4117,223.83411975795053,47.49662448709858,0.067736504930081,70.76181,30.10592,13.480769,0.252954,0.0,1.6025207,125.0
|
| 237 |
+
222.7272,47.302494,-0.5844506502967335,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,4227,222.7272053214624,47.3024958315898,0.0757744738895595,0.0,22.565905,0.0,0.0,2.0770378,0.0,269.22464
|
| 238 |
+
222.99913,46.751015,-0.6356912817835798,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,1776,222.99912535975795,46.7510135958094,0.0740380020870629,1.9638792,28.619366,0.0,1.7857072,2.0420766,0.0008552527,237.49394
|
| 239 |
+
211.39856,38.75381,-0.5884251839445539,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4120,211.39856081106808,38.75381172286644,0.0641704956904409,253.72649,141.76968,65.006905,29.339708,1.489503,0.972196,139.02777
|
| 240 |
+
222.66629,34.42808,-0.5895794022078413,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1133,222.66628634671025,34.42808036305879,0.0902765713914481,14.688876,48.02353,0.0,35.983826,2.010323,0.017309785,189.18668
|
| 241 |
+
222.7257,35.143856,-0.566908020832897,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,969,222.7256998515073,35.14385703007413,0.2056565091937433,1872.1788,1130.1382,285.39505,480.56772,1.1939725,1.3712007,353.7322
|
| 242 |
+
222.83011,36.316166,-0.6076284184468513,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,210,222.830107867032,36.31616777629684,0.1485191101567135,53.141758,136.83415,6.317867,39.949173,2.0385668,0.08374795,312.25238
|
| 243 |
+
222.83278,36.315655,-0.56971411800722,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,663,222.83277692230752,36.31565335546741,0.1509986763150851,0.0,0.0,2.583286e-10,4.4516144,2.1013184,0.0,259.08197
|
| 244 |
+
200.06,33.899506,-0.6282724163759763,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=654/001-000.hdf5,1103,200.059999527115,33.899504315264664,0.0386651937468673,727.8531,767.3198,169.96373,579.3758,1.578046,1.8861433,141.69551
|
| 245 |
+
207.21243,31.768005,-0.6576804553517467,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,1154,207.21242697999148,31.76800454657741,0.0830813100041928,1.0212235e-07,19.675047,0.0,3.5434103,2.0946429,0.22502628,243.69397
|
| 246 |
+
211.77324,32.046455,-0.670542861316147,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,511,211.77324011806056,32.04645449344301,0.4234626124082155,30.52254,12.0160885,7.3977947,2.5715735,1.3495785,1.9987979,222.14679
|
| 247 |
+
217.4446,46.714607,-0.5745735932552493,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1420,217.44459922024345,46.714607599930325,0.2698913269952953,99.6053,23.540203,28.313992,24.183628,1.1686085,1.8747644,125.0
|
| 248 |
+
200.64491,33.157143,-0.6471539080072187,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,347,200.6449151123672,33.15714151402084,0.0368527184812982,45.263012,103.81952,4.7278647,53.7522,2.0052664,0.0,176.33658
|
| 249 |
+
211.87059,38.467915,-0.5620358672113765,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,4365,211.870586802548,38.467915766335246,0.20951908635375,0.05249393,0.0,0.0,2.0507407,1.8073038,0.19296096,118.78147
|
| 250 |
+
223.12976,35.34915,-0.6042035791198339,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,627,223.12975610545976,35.34915246692521,0.2748527841072689,12.611233,11.789672,1.5435411,2.4924376,1.6314558,0.17248091,156.86925
|
| 251 |
+
213.37685,39.709454,-0.5651321316592149,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,1013,213.3768423814097,39.70945293239721,0.1308391224715016,2.0139093,7.4614744,0.0,0.0001418237,1.8551707,0.68499446,196.33961
|
| 252 |
+
219.50427,46.69559,-0.5707640812688742,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1168,219.50426570226463,46.69558946712832,0.0347788591169166,12.131677,22.58946,4.774204,9.983032,1.8351032,0.0,81.840614
|
| 253 |
+
219.75996,46.695293,-0.5559549588660394,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1140,219.75995914108017,46.69529348591108,0.1694744837560224,158.4449,49.703285,40.55534,24.665363,1.2523222,2.807921,125.0
|
| 254 |
+
223.33229,34.02187,-0.5569594533651612,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,1692,223.3322955929524,34.02187102554704,0.1014463340812436,46.056725,21.08992,7.3157477,0.011385011,1.4377099,0.0,89.91985
|
| 255 |
+
219.7207,46.674423,-0.6858684845460824,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,614,219.72070038771847,46.674424186064826,0.0362879840585972,21.87249,68.839386,0.103540994,37.13172,2.0455072,0.21805651,212.27754
|
| 256 |
+
219.45872,47.034668,-0.5663423059710004,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,1143,219.4587259243186,47.03466907322638,0.3275327159325496,48.092445,15.794038,15.439525,6.908117,1.2625272,0.0,125.0
|
| 257 |
+
212.2097,38.992966,-0.6138614394060123,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-002.hdf5,71,212.2097072852645,38.99296678264097,0.065859742358712,166.66225,57.561794,40.825794,9.744902,1.3652656,0.6121404,100.28822
|
| 258 |
+
219.21396,47.68608,-0.5680497252796495,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,2825,219.21396474506568,47.68608242860388,0.2577938378471837,20.86831,5.4568195,4.6920047,0.49148914,1.4607228,1.4669226,134.41139
|
| 259 |
+
216.48073,46.481537,-0.5626232537984583,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,1476,216.4807327355749,46.481538065580416,0.0331177206190242,405.37878,99.386,81.49503,82.82357,1.2398098,1.8559607,125.0
|
| 260 |
+
222.87622,47.267452,-0.5748297383437533,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,3662,222.8762244274211,47.26745113640384,0.3490728502193045,56.608356,44.915943,11.3698225,9.102114,1.3423404,0.00044995896,160.92593
|
| 261 |
+
219.44644,33.34785,-0.558589038219422,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,4010,219.4464410391988,33.347851265519964,0.1650695086216278,0.0,5.1087046,0.0,0.0,2.1012168,0.03527971,320.60318
|
| 262 |
+
218.0475,47.841133,-0.5645063302210299,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,3628,218.0475054283721,47.84113262095771,0.2942295415873331,38.088425,22.34242,11.646282,32.820354,1.2801782,1.4459016,188.33478
|
| 263 |
+
224.71503,46.547832,-0.608234898410591,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,3863,224.71502420170185,46.54783179997517,0.2692662966972153,33.14798,19.167648,5.6376133,4.6758227,1.0331684,0.0,125.0
|
| 264 |
+
206.21326,32.526016,-0.7111195406207801,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4556,206.21325560585925,32.526017815280134,0.0253505109821122,0.0,0.0,0.0,0.0,1.9978496,0.66932636,189.4188
|
| 265 |
+
216.02274,47.642952,-0.5665303462246929,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,4187,216.02274030706155,47.64295328090901,0.11153338822731,23.138065,54.3646,1.9204876,11.323554,2.0558534,0.69140285,205.25897
|
| 266 |
+
219.81471,33.33526,-0.6248623972640455,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,4115,219.8147070690904,33.33525722450142,0.0905026725603343,164.02087,66.347916,35.845165,0.0,1.4260689,0.3666166,138.8823
|
| 267 |
+
210.94124,32.0004,-0.6585076110865062,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3087,210.94124190468509,32.000400513709,0.0623070310918198,550.4903,328.94537,94.70129,27.339529,1.3807733,1.2732729,162.25876
|
| 268 |
+
210.94652,35.741676,-0.7194618273177658,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-001.hdf5,815,210.94651509595053,35.741677506045626,0.0127839419250193,0.0,139.15714,81.62244,2.6366422,2.0040412,1.260008,150.1614
|
| 269 |
+
202.01907,34.31152,-0.7015330741562368,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,2486,202.01906981031712,34.31152118697956,0.0359643831159669,167.94148,75.31167,48.145298,38.297295,1.4741668,0.759179,66.19577
|
| 270 |
+
225.61803,46.674896,-0.5723039016302445,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,3765,225.61801997352268,46.67489727765363,0.1735251271601348,18.7469,6.546904,5.7988725,8.493981,1.2235737,7.0728297,125.0
|
| 271 |
+
205.8765,32.22188,-0.6105517207001179,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=646/001-001.hdf5,1129,205.87649247668529,32.22188182216297,0.2398050138166083,25.879347,53.64465,4.146173,17.096897,1.9438381,0.15102965,252.7436
|
| 272 |
+
206.59183,31.800785,-0.5652848645046274,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,3792,206.59183453206663,31.800784627149223,0.2282949010244794,10.015573,10.765384,3.0920367,0.08779311,2.0636342,2.8829436,229.82335
|
| 273 |
+
219.68506,47.537968,-0.5771996032189316,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-001.hdf5,1165,219.6850660197225,47.53796808062533,0.0420239513877465,0.0,62.255276,9.690014,9.430833,1.8897711,0.95282644,215.8427
|
| 274 |
+
210.92648,32.99119,-0.5553045831892786,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,375,210.9264824846191,32.99119095958491,0.0833905946429146,79.931114,43.25111,1.3975024,8.880603,1.3855246,0.0,125.0
|
| 275 |
+
222.38347,34.913834,-0.5546015507585168,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,3024,222.3834687747484,34.91383455883082,0.263713873572713,62.62483,23.813236,18.81705,5.326656,1.408871,0.7761157,125.0
|
| 276 |
+
200.03183,32.856133,-0.7160977424000261,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,301,200.03183573380787,32.85613284210982,0.0374133604904739,33.25536,144.10402,0.0,85.99707,2.01732,0.22207399,224.32664
|
| 277 |
+
211.2138,32.1434,-0.560508170500413,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3248,211.21380126193367,32.143397276633735,0.0620305035582619,1823.5197,580.00354,405.89798,223.11354,1.1675128,3.564166,313.68356
|
| 278 |
+
220.30243,32.89001,-0.5989589957004252,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,203,220.302428773187,32.89001143433202,0.1300886330164915,53.584698,37.81482,9.053202,9.579107,1.3193984,0.13573644,114.55238
|
| 279 |
+
211.42117,35.98351,-0.647695399590087,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3520,211.42117841752247,35.98350972790609,0.0648457166561662,9.236463,48.731873,3.144705,8.563835,2.0501087,0.9982951,239.4515
|
| 280 |
+
224.62692,46.52434,-0.5680783220631186,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=704/001-001.hdf5,3855,224.6269265994732,46.5243398353377,0.0927474023431488,122.183655,153.31918,18.800375,151.62453,1.7647065,0.32801744,154.88443
|
| 281 |
+
217.12424,46.832558,-0.5623939675008774,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,3399,217.12423011395865,46.83255682867735,0.2207429887056317,21.213734,17.354979,3.3825102,2.9828188,1.5362092,0.4186663,168.42451
|
| 282 |
+
207.03954,32.582333,-0.5662401829845286,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4277,207.0395312970765,32.58233251772263,0.2150068343093536,4.1546574,1.1920553,1.2519939,0.9764111,1.6171916,0.68595624,112.16352
|
| 283 |
+
219.82018,46.754856,-0.5618618777518325,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,618,219.82017451084744,46.75485778726789,0.0761472565263532,128.16225,45.55345,21.298595,14.156609,1.604411,0.378113,121.82631
|
| 284 |
+
222.80998,35.542118,-0.7252712755290388,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,757,222.8099863764032,35.54211745891947,0.0042533869406729,428.86755,44.750553,142.35117,377.02963,1.1837897,0.83269536,448.22513
|
| 285 |
+
211.73944,38.969215,-0.6101007747131342,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,3671,211.7394461895545,38.96921486147313,0.0629369232998372,544.3271,201.11705,83.44659,15.916725,1.3295546,0.69876665,198.42227
|
| 286 |
+
206.62093,31.840519,-0.6135952315620742,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,4069,206.6209321065957,31.84051883539687,0.2262097951655649,73.88992,25.640022,14.374814,4.102258,1.26297,1.5849736,125.0
|
| 287 |
+
211.82008,35.52303,-0.596708577188052,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,3300,211.82008675983323,35.52302919637887,0.3390159630390817,8.67266,7.464699,0.9648773,2.679358,1.7927754,0.0,169.27748
|
| 288 |
+
223.12796,36.243114,-0.6780973146997797,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,1175,223.1279544610076,36.24311465752952,0.070949880660853,35.995293,91.34249,0.061676983,18.182476,2.1102884,0.008745009,337.519
|
| 289 |
+
218.6748,47.243122,-0.5632019066799581,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2826,218.67481143467816,47.24312270338074,0.3378888524019066,13.986075,8.090653,4.620382,1.5440474,1.447462,0.0,179.00015
|
| 290 |
+
212.01659,31.989616,-0.5778540276742009,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,336,212.01658537411944,31.989616921076063,0.2364471633983412,0.0,0.10811742,0.0,0.854815,2.1614456,0.07849903,335.49628
|
| 291 |
+
212.0365,33.79927,-0.5778888741396954,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=656/001-001.hdf5,2300,212.03649724290736,33.799271040288126,0.4236311838338661,27.403906,43.693096,8.861774,16.382029,1.1644462,0.42222023,151.96588
|
| 292 |
+
219.34125,47.253494,-0.5933471151735913,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2579,219.34124789728773,47.25349427778048,0.1221727499809194,0.0,0.0,0.0,0.0,1.910559,1.3071207,198.9288
|
| 293 |
+
226.16415,47.4365,-0.5853809379451742,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,3305,226.1641543784496,47.43650099415338,0.0885541880771874,12.997893,26.482037,3.0641744,3.960923,1.9731562,0.028540233,171.05582
|
| 294 |
+
218.44777,47.220814,-0.6465787890357562,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=663/001-002.hdf5,2548,218.44777578699163,47.22081201138626,0.1086113717283268,143.75339,55.496426,30.801418,8.164457,1.4091117,2.0243702,72.98063
|
| 295 |
+
223.45518,34.39159,-0.5984404511423297,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,4228,223.45518254638048,34.39158899813855,0.1038556315094002,27.761898,45.85823,6.7634234,12.778305,1.6795392,0.0,157.88515
|
| 296 |
+
212.4783,38.10973,-0.5757423583370173,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=659/001-001.hdf5,2893,212.47830899112432,38.10972947101503,0.1641755048666749,48.182674,6.8612227,10.543942,4.32827,1.271807,0.07249685,231.07306
|
| 297 |
+
201.41113,33.68046,-0.7001001719321747,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,807,201.41113234780423,33.68046068703888,0.0389696839888054,378.6119,137.5145,98.66451,24.915403,1.410767,1.8065761,127.90504
|
| 298 |
+
223.30237,35.97214,-0.5780772113785858,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,266,223.3023647490924,35.97214138771019,0.3663424291359989,0.0,6.0992103,0.0,0.7819878,2.3150868,0.0,227.67809
|
| 299 |
+
224.25931,35.55065,-0.6925239324467983,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-000.hdf5,4705,224.2593107014132,35.55065003590121,0.0709745135616521,92.17152,111.944046,24.231833,26.113152,1.8499825,0.44447735,256.5489
|
| 300 |
+
219.4925,32.70068,-0.5644043115631001,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-001.hdf5,355,219.49249281280711,32.70067999366049,0.2170419470475136,29.109507,38.72613,9.995894,32.185677,1.7447802,0.53255945,222.43297
|
| 301 |
+
201.60884,32.290596,-0.6180791286119631,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,214,201.60884692836856,32.29059690481838,0.0507278671245979,347.90976,134.2505,84.47989,18.707962,1.3898423,0.9062137,121.53773
|
| 302 |
+
228.45468,37.97749,-0.6612649781784813,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,3885,228.4546859479211,37.97749093105686,0.2864597007298993,72.32711,32.331608,14.621863,18.138807,1.2837765,1.0470684,145.37991
|
| 303 |
+
216.18149,47.032627,-0.6384564444800287,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,912,216.18148643964005,47.03262881254336,0.033300938977261,0.0,13.756496,0.0,14.598742,1.9563925,0.3176022,187.52126
|
| 304 |
+
224.20563,36.49883,-0.6611884581020797,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=574/001-001.hdf5,1537,224.20563294659817,36.49883020974112,0.2694991429427568,13.434988,7.5181785,0.27125493,6.490096,1.8494194,1.8472166,158.27652
|
| 305 |
+
210.8478,32.81645,-0.6169228530425417,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-000.hdf5,2189,210.84778887639607,32.81644767943904,0.291849270175903,0.0,2.571024,0.0,0.0,1.6674832,2.811897,122.8934
|
| 306 |
+
210.85153,33.061066,-0.6264618516148622,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=658/001-000.hdf5,96,210.85153924196072,33.061065902673874,0.0702434742572337,122.4887,67.76843,28.230057,13.59156,1.5903448,0.6651828,150.76375
|
| 307 |
+
210.98184,31.72497,-0.621554384598006,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=645/001-000.hdf5,3191,210.9818391835518,31.724970204394623,0.1062051927095989,0.0,1.7141805,0.0,10.200883,2.1092374,0.69861555,284.22202
|
| 308 |
+
206.56665,32.76978,-0.5716473975066376,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=647/001-001.hdf5,3,206.56664963683568,32.76978061093133,0.1365429694462349,3.3105798,16.607845,5.8494368,9.021165,1.9278936,0.0,227.52652
|
| 309 |
+
223.3885,47.09354,-0.577146964003476,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=706/001-000.hdf5,4245,223.3885028219136,47.09354091446824,0.0878033856638974,7.3662434,9.120713,0.0,6.920443,1.8687993,0.36318842,140.22997
|
| 310 |
+
216.77759,46.474823,-0.5705134283823594,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=669/001-000.hdf5,1392,216.77758485081205,46.47482256127831,0.4435274689382065,79.324394,27.214142,17.836405,13.228048,1.148881,3.0951688,125.0
|
| 311 |
+
220.04477,33.356194,-0.5873991308219549,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=571/001-000.hdf5,4930,220.04476892065296,33.35619219806193,0.1257487836865493,0.0,2.7238019,10.122667,1.7666408,2.4690325,0.0,181.54008
|
| 312 |
+
226.53406,47.049088,-0.6303280861009763,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=705/001-000.hdf5,3840,226.53406288795296,47.04908688091575,0.246151608729111,46.20743,20.416367,11.737026,0.0,1.4774631,0.0,181.43123
|
| 313 |
+
229.16681,37.212566,-0.5761756717533421,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=573/001-002.hdf5,2311,229.16680374982909,37.21256663467442,0.1568503704341307,12.070091,11.048991,4.31476,0.37216288,2.1523495,0.10034796,307.3504
|
| 314 |
+
200.09956,33.176804,-0.6011555141221244,AstroM3/Dataset/catalogs/fastspecfit/data/healpix=652/001-001.hdf5,249,200.09956664914952,33.17680268279988,0.0346261901901408,0.0,30.716385,0.0,0.0,1.9944212,0.77009666,221.25778
|
ExampleCode/example1/anomaly_metadata.csv
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
index,ra,dec,simbad_otype
|
| 2 |
+
0,200.19305,33.443726,GtowardsGroup
|
| 3 |
+
1,220.35742,33.72618,No_match
|
| 4 |
+
2,218.21674,47.768574,No_match
|
| 5 |
+
3,224.97906,47.63954,Galaxy
|
| 6 |
+
4,200.29968,31.729654,Galaxy
|
| 7 |
+
5,223.13959,36.13852,Galaxy
|
| 8 |
+
6,224.76053,47.418983,Galaxy
|
| 9 |
+
7,223.0734,46.768044,No_match
|
| 10 |
+
8,217.32109,46.852432,No_match
|
| 11 |
+
9,228.93903,36.706173,No_match
|
| 12 |
+
10,212.11525,33.205482,No_match
|
| 13 |
+
11,212.13579,33.16155,No_match
|
| 14 |
+
12,205.59035,32.690517,No_match
|
| 15 |
+
13,219.83424,46.86007,No_match
|
| 16 |
+
14,226.28036,46.963696,Galaxy
|
| 17 |
+
15,222.7845,47.675457,No_match
|
| 18 |
+
16,205.69641,32.42519,No_match
|
| 19 |
+
17,215.9645,47.10679,Galaxy
|
| 20 |
+
18,212.16959,32.59188,LowSurfBrghtG
|
| 21 |
+
19,225.21576,47.30673,No_match
|
| 22 |
+
20,219.57034,47.352955,Galaxy
|
| 23 |
+
21,224.01189,36.243046,Galaxy
|
| 24 |
+
22,222.963,46.913734,Galaxy
|
| 25 |
+
23,210.7116,32.92613,No_match
|
| 26 |
+
24,210.91286,35.773186,No_match
|
| 27 |
+
25,211.00102,32.670048,Galaxy
|
| 28 |
+
26,226.92117,46.89221,RadioG
|
| 29 |
+
27,219.89328,46.63121,Galaxy
|
| 30 |
+
28,200.04846,33.09609,GtowardsGroup
|
| 31 |
+
29,223.0503,46.521004,No_match
|
| 32 |
+
30,219.58582,47.816025,No_match
|
| 33 |
+
31,200.23062,33.902607,BrightestCG
|
| 34 |
+
32,222.81557,46.70404,No_match
|
| 35 |
+
33,224.42175,47.216965,Galaxy
|
| 36 |
+
34,211.56627,35.795273,Galaxy
|
| 37 |
+
35,222.83739,35.504044,No_match
|
| 38 |
+
36,222.83969,34.44721,No_match
|
| 39 |
+
37,211.72879,33.472313,No_match
|
| 40 |
+
38,219.30371,47.499092,No_match
|
| 41 |
+
39,219.0164,46.743916,No_match
|
| 42 |
+
40,223.08978,36.091084,Galaxy
|
| 43 |
+
41,222.33034,47.44863,No_match
|
| 44 |
+
42,212.09677,36.199924,No_match
|
| 45 |
+
43,223.4386,34.389263,No_match
|
| 46 |
+
44,224.93661,47.07267,No_match
|
| 47 |
+
45,225.63454,47.293297,No_match
|
| 48 |
+
46,201.21243,33.26414,No_match
|
| 49 |
+
47,224.42151,46.822662,No_match
|
| 50 |
+
48,224.87427,47.76158,Galaxy
|
| 51 |
+
49,206.00899,32.11525,Galaxy
|
| 52 |
+
50,223.06161,47.001293,EmissionG
|
| 53 |
+
51,200.02356,33.287064,Galaxy
|
| 54 |
+
52,200.06491,33.297512,GtowardsGroup
|
| 55 |
+
53,200.2609,33.339485,RadioG
|
| 56 |
+
54,200.54095,32.74289,GtowardsGroup
|
| 57 |
+
55,201.13945,31.67151,EmissionG
|
| 58 |
+
56,201.16075,33.781464,No_match
|
| 59 |
+
57,201.18198,32.54029,PartofG
|
| 60 |
+
58,201.1878,32.516823,Galaxy
|
| 61 |
+
59,201.25839,33.271908,No_match
|
| 62 |
+
60,201.73921,32.383,GtowardsCl
|
| 63 |
+
61,201.74942,32.706326,Galaxy
|
| 64 |
+
62,201.79012,33.501156,Galaxy
|
| 65 |
+
63,201.8101,33.786076,Galaxy
|
| 66 |
+
64,201.87544,33.392143,Galaxy
|
| 67 |
+
65,201.92282,34.35722,Galaxy
|
| 68 |
+
66,202.48431,32.232494,Galaxy
|
| 69 |
+
67,207.0826,32.0275,Galaxy
|
| 70 |
+
68,225.50099,47.11725,No_match
|
| 71 |
+
69,225.43314,47.5701,No_match
|
| 72 |
+
70,200.58075,33.889343,No_match
|
| 73 |
+
71,205.87703,32.26004,No_match
|
| 74 |
+
72,206.00699,32.114067,Galaxy
|
| 75 |
+
73,206.03018,31.838966,Galaxy
|
| 76 |
+
74,206.13913,31.951334,BrightestCG
|
| 77 |
+
75,206.30923,32.761757,Galaxy
|
| 78 |
+
76,206.39952,32.436924,Galaxy
|
| 79 |
+
77,206.48341,31.730963,No_match
|
| 80 |
+
78,206.49646,32.40309,Galaxy
|
| 81 |
+
79,206.77965,31.72738,Galaxy
|
| 82 |
+
80,206.86995,32.115643,Galaxy
|
| 83 |
+
81,206.92854,32.0517,No_match
|
| 84 |
+
82,207.00159,31.69941,No_match
|
| 85 |
+
83,207.08122,32.309772,GtowardsCl
|
| 86 |
+
84,207.20651,31.754204,Galaxy
|
| 87 |
+
85,207.21309,32.910126,SIMBAD_error
|
| 88 |
+
86,207.24332,31.675657,Galaxy
|
| 89 |
+
87,212.29573,39.28846,No_match
|
| 90 |
+
88,224.27069,47.335457,RadioG
|
| 91 |
+
89,206.13358,33.488094,No_match
|
| 92 |
+
90,226.09256,47.6867,RadioG
|
| 93 |
+
91,210.64293,35.302143,No_match
|
| 94 |
+
92,210.81328,33.150513,Seyfert2
|
| 95 |
+
93,210.85245,32.815968,No_match
|
| 96 |
+
94,210.8568,32.13594,No_match
|
| 97 |
+
95,210.83629,35.65457,No_match
|
| 98 |
+
96,211.10704,35.61177,Galaxy
|
| 99 |
+
97,211.21178,38.66414,LINER
|
| 100 |
+
98,211.47302,33.170837,Galaxy
|
| 101 |
+
99,211.6843,39.01213,Galaxy
|
| 102 |
+
100,211.82445,38.59338,Galaxy
|
| 103 |
+
101,211.8437,36.290768,Galaxy
|
| 104 |
+
102,212.41968,38.728687,No_match
|
| 105 |
+
103,212.50969,38.70649,RadioG
|
| 106 |
+
104,212.52777,39.400173,Galaxy
|
| 107 |
+
105,212.54858,39.409256,LINER
|
| 108 |
+
106,212.57089,39.034874,No_match
|
| 109 |
+
107,212.57834,39.041847,No_match
|
| 110 |
+
108,212.60635,39.467316,Galaxy
|
| 111 |
+
109,212.63184,38.89353,Galaxy
|
| 112 |
+
110,211.11621,38.40168,Galaxy
|
| 113 |
+
111,213.29301,39.866394,EmissionG
|
| 114 |
+
112,213.53786,39.497112,Galaxy
|
| 115 |
+
113,213.66644,39.842617,No_match
|
| 116 |
+
114,200.12047,33.820747,Galaxy
|
| 117 |
+
115,213.80695,39.703667,RadioG
|
| 118 |
+
116,213.85506,39.67346,No_match
|
| 119 |
+
117,214.10843,39.651253,Galaxy
|
| 120 |
+
118,222.57603,34.093918,No_match
|
| 121 |
+
119,200.2684,33.151455,Galaxy
|
| 122 |
+
120,206.98126,32.98733,No_match
|
| 123 |
+
121,214.58755,39.54192,No_match
|
| 124 |
+
122,214.85707,39.857384,EmissionG
|
| 125 |
+
123,211.59433,38.82993,Galaxy
|
| 126 |
+
124,222.91837,35.5132,No_match
|
| 127 |
+
125,218.83414,47.382477,Galaxy
|
| 128 |
+
126,224.99876,47.243427,Galaxy
|
| 129 |
+
127,200.71564,35.019714,No_match
|
| 130 |
+
128,224.8766,46.6288,Galaxy
|
| 131 |
+
129,211.937,36.20765,No_match
|
| 132 |
+
130,219.9522,46.597305,No_match
|
| 133 |
+
131,201.04257,33.261486,Galaxy
|
| 134 |
+
132,212.25842,36.323418,AGN_Candidate
|
| 135 |
+
133,219.56393,32.862244,No_match
|
| 136 |
+
134,219.66956,32.5748,No_match
|
| 137 |
+
135,219.79848,32.686592,No_match
|
| 138 |
+
136,219.79901,33.785275,LINER
|
| 139 |
+
137,219.82674,32.63448,No_match
|
| 140 |
+
138,219.89052,33.352432,No_match
|
| 141 |
+
139,220.07722,32.767906,Seyfert2
|
| 142 |
+
140,220.29765,33.84457,Galaxy
|
| 143 |
+
141,220.34712,33.757187,No_match
|
| 144 |
+
142,220.42723,33.302834,Galaxy
|
| 145 |
+
143,219.74295,47.307888,EmissionG
|
| 146 |
+
144,206.14038,33.54464,No_match
|
| 147 |
+
145,210.67586,32.18062,Galaxy
|
| 148 |
+
146,222.43597,34.342525,No_match
|
| 149 |
+
147,222.57188,34.573353,No_match
|
| 150 |
+
148,222.72176,36.17021,RadioG
|
| 151 |
+
149,222.73546,35.57169,HIIG
|
| 152 |
+
150,223.05081,34.027065,No_match
|
| 153 |
+
151,223.44524,34.79861,Galaxy
|
| 154 |
+
152,223.44724,36.1347,Galaxy
|
| 155 |
+
153,223.70625,34.51449,SIMBAD_error
|
| 156 |
+
154,223.99643,35.66342,Galaxy
|
| 157 |
+
155,219.32945,47.251503,No_match
|
| 158 |
+
156,219.68648,47.252506,No_match
|
| 159 |
+
157,224.5197,47.406647,GtowardsCl
|
| 160 |
+
158,224.0696,46.916237,Galaxy
|
| 161 |
+
159,211.39746,38.423523,No_match
|
| 162 |
+
160,211.44347,39.15259,Galaxy
|
| 163 |
+
161,225.31096,47.4071,No_match
|
| 164 |
+
162,222.83455,46.684982,Galaxy
|
| 165 |
+
163,205.76637,33.096676,No_match
|
| 166 |
+
164,211.68022,33.334686,No_match
|
| 167 |
+
165,218.09491,47.11061,BrightestCG
|
| 168 |
+
166,216.2295,47.73962,Galaxy
|
| 169 |
+
167,219.31471,46.945824,EmissionG
|
| 170 |
+
168,200.61858,33.66162,No_match
|
| 171 |
+
169,219.74077,47.24487,No_match
|
| 172 |
+
170,223.06969,35.077347,No_match
|
| 173 |
+
171,228.27931,37.94177,No_match
|
| 174 |
+
172,228.3645,37.973812,Galaxy
|
| 175 |
+
173,228.49507,37.00813,Galaxy
|
| 176 |
+
174,228.55719,37.265854,No_match
|
| 177 |
+
175,228.84914,36.79295,No_match
|
| 178 |
+
176,228.93855,37.135365,No_match
|
| 179 |
+
177,229.04361,37.186684,No_match
|
| 180 |
+
178,212.12021,32.224735,No_match
|
| 181 |
+
179,229.1178,36.83929,No_match
|
| 182 |
+
180,229.1906,36.696434,No_match
|
| 183 |
+
181,229.19077,36.889626,No_match
|
| 184 |
+
182,229.2292,37.144295,No_match
|
| 185 |
+
183,229.2747,37.0816,No_match
|
| 186 |
+
184,223.34373,35.891567,No_match
|
| 187 |
+
185,229.54259,36.75623,No_match
|
| 188 |
+
186,212.24332,35.390007,No_match
|
| 189 |
+
187,217.46295,46.53011,No_match
|
| 190 |
+
188,225.51064,47.230347,Galaxy
|
| 191 |
+
189,225.8057,47.140423,No_match
|
| 192 |
+
190,205.74358,33.297,Galaxy
|
| 193 |
+
191,223.63498,34.04843,No_match
|
| 194 |
+
192,218.98026,47.634544,Galaxy
|
| 195 |
+
193,215.97032,46.73816,Galaxy
|
| 196 |
+
194,227.50311,47.240654,Galaxy
|
| 197 |
+
195,219.34494,32.904804,No_match
|
| 198 |
+
196,205.93634,31.748707,No_match
|
| 199 |
+
197,205.97066,31.835638,No_match
|
| 200 |
+
198,206.00267,33.263084,No_match
|
| 201 |
+
199,223.929,36.42147,No_match
|
| 202 |
+
200,219.56244,32.693924,No_match
|
| 203 |
+
201,222.10153,47.674393,Galaxy
|
| 204 |
+
202,206.24904,31.802961,LINER
|
| 205 |
+
203,219.70418,32.582756,No_match
|
| 206 |
+
204,228.71115,37.252575,Galaxy
|
| 207 |
+
205,224.81299,47.517773,Galaxy
|
| 208 |
+
206,210.95143,33.569786,AGN_Candidate
|
| 209 |
+
207,216.78508,47.259075,No_match
|
| 210 |
+
208,206.69695,32.90637,No_match
|
| 211 |
+
209,211.99275,38.3277,Galaxy
|
| 212 |
+
210,223.31084,46.48638,GinPair
|
| 213 |
+
211,223.35246,46.485462,EmissionG
|
| 214 |
+
212,222.56502,36.513935,No_match
|
| 215 |
+
213,211.39828,38.754696,No_match
|
| 216 |
+
214,222.69455,36.167004,Galaxy
|
| 217 |
+
215,222.74599,47.530132,No_match
|
| 218 |
+
216,219.40982,47.672005,Galaxy
|
| 219 |
+
217,211.6404,38.38539,No_match
|
| 220 |
+
218,219.35918,46.67046,Galaxy
|
| 221 |
+
219,212.08089,33.03165,BrightestCG
|
| 222 |
+
220,222.34369,47.35065,No_match
|
| 223 |
+
221,212.11871,31.815794,No_match
|
| 224 |
+
222,223.30116,35.969868,BrightestCG
|
| 225 |
+
223,212.12698,36.495354,Galaxy
|
| 226 |
+
224,223.3763,34.7923,BrightestCG
|
| 227 |
+
225,212.20108,38.540554,Galaxy
|
| 228 |
+
226,219.80396,46.843464,No_match
|
| 229 |
+
227,205.70216,33.306023,No_match
|
| 230 |
+
228,223.61409,35.44088,RadioG
|
| 231 |
+
229,205.78004,33.76482,Galaxy
|
| 232 |
+
230,219.83786,47.291893,No_match
|
| 233 |
+
231,219.70135,46.78622,Galaxy
|
| 234 |
+
232,225.61334,47.25961,No_match
|
| 235 |
+
233,201.58698,31.72249,LINER
|
| 236 |
+
234,223.95187,36.039677,No_match
|
| 237 |
+
235,224.20229,35.48768,Galaxy
|
| 238 |
+
236,219.98111,47.30258,No_match
|
| 239 |
+
237,222.96446,46.490948,Galaxy
|
| 240 |
+
238,211.05383,38.733627,Galaxy
|
| 241 |
+
239,211.09053,33.476147,Galaxy
|
| 242 |
+
240,211.24315,38.634235,RadioG
|
| 243 |
+
241,215.99352,47.235878,LINER
|
| 244 |
+
242,216.33784,47.245285,Galaxy
|
| 245 |
+
243,223.83412,47.496624,No_match
|
| 246 |
+
244,222.7272,47.302494,No_match
|
| 247 |
+
245,222.99913,46.751015,BrightestCG
|
| 248 |
+
246,211.39856,38.75381,Galaxy
|
| 249 |
+
247,222.66629,34.42808,Galaxy
|
| 250 |
+
248,222.7257,35.143856,Seyfert1
|
| 251 |
+
249,222.83011,36.316166,Galaxy
|
| 252 |
+
250,222.83278,36.315655,No_match
|
| 253 |
+
251,200.06,33.899506,LINER
|
| 254 |
+
252,207.21243,31.768005,No_match
|
| 255 |
+
253,211.77324,32.046455,No_match
|
| 256 |
+
254,217.4446,46.714607,No_match
|
| 257 |
+
255,200.64491,33.157143,Seyfert2
|
| 258 |
+
256,211.87059,38.467915,No_match
|
| 259 |
+
257,223.12976,35.34915,No_match
|
| 260 |
+
258,213.37685,39.709454,Galaxy
|
| 261 |
+
259,219.50427,46.69559,Galaxy
|
| 262 |
+
260,219.75996,46.695293,No_match
|
| 263 |
+
261,223.33229,34.02187,Galaxy
|
| 264 |
+
262,219.7207,46.674423,Galaxy
|
| 265 |
+
263,219.45872,47.034668,No_match
|
| 266 |
+
264,212.2097,38.992966,Galaxy
|
| 267 |
+
265,219.21396,47.68608,No_match
|
| 268 |
+
266,216.48073,46.481537,No_match
|
| 269 |
+
267,222.87622,47.267452,No_match
|
| 270 |
+
268,219.44644,33.34785,Galaxy
|
| 271 |
+
269,218.0475,47.841133,No_match
|
| 272 |
+
270,224.71503,46.547832,No_match
|
| 273 |
+
271,206.21326,32.526016,Galaxy
|
| 274 |
+
272,216.02274,47.642952,Galaxy
|
| 275 |
+
273,219.81471,33.33526,Galaxy
|
| 276 |
+
274,210.94124,32.0004,RadioG
|
| 277 |
+
275,210.94652,35.741676,GtowardsGroup
|
| 278 |
+
276,202.01907,34.31152,Galaxy
|
| 279 |
+
277,225.61803,46.674896,No_match
|
| 280 |
+
278,205.8765,32.22188,No_match
|
| 281 |
+
279,206.59183,31.800785,No_match
|
| 282 |
+
280,219.68506,47.537968,Galaxy
|
| 283 |
+
281,210.92648,32.99119,Galaxy
|
| 284 |
+
282,222.38347,34.913834,No_match
|
| 285 |
+
283,200.03183,32.856133,LINER
|
| 286 |
+
284,211.2138,32.1434,RadioG
|
| 287 |
+
285,220.30243,32.89001,Galaxy
|
| 288 |
+
286,211.42117,35.98351,Galaxy
|
| 289 |
+
287,224.62692,46.52434,Seyfert2
|
| 290 |
+
288,217.12424,46.832558,No_match
|
| 291 |
+
289,207.03954,32.582333,No_match
|
| 292 |
+
290,219.82018,46.754856,SIMBAD_error
|
| 293 |
+
291,222.80998,35.542118,No_match
|
| 294 |
+
292,211.73944,38.969215,Galaxy
|
| 295 |
+
293,206.62093,31.840519,No_match
|
| 296 |
+
294,211.82008,35.52303,No_match
|
| 297 |
+
295,223.12796,36.243114,RadioG
|
| 298 |
+
296,218.6748,47.243122,No_match
|
| 299 |
+
297,212.01659,31.989616,RadioG
|
| 300 |
+
298,212.0365,33.79927,No_match
|
| 301 |
+
299,219.34125,47.253494,Galaxy
|
| 302 |
+
300,226.16415,47.4365,LINER
|
| 303 |
+
301,218.44777,47.220814,No_match
|
| 304 |
+
302,223.45518,34.39159,No_match
|
| 305 |
+
303,212.4783,38.10973,No_match
|
| 306 |
+
304,201.41113,33.68046,AGN
|
| 307 |
+
305,223.30237,35.97214,BrightestCG
|
| 308 |
+
306,224.25931,35.55065,Galaxy
|
| 309 |
+
307,219.4925,32.70068,No_match
|
| 310 |
+
308,201.60884,32.290596,Galaxy
|
| 311 |
+
309,228.45468,37.97749,No_match
|
| 312 |
+
310,216.18149,47.032627,Galaxy
|
| 313 |
+
311,224.20563,36.49883,No_match
|
| 314 |
+
312,210.8478,32.81645,No_match
|
| 315 |
+
313,210.85153,33.061066,Galaxy
|
| 316 |
+
314,210.98184,31.72497,Galaxy
|
| 317 |
+
315,206.56665,32.76978,Galaxy
|
| 318 |
+
316,223.3885,47.09354,Galaxy
|
| 319 |
+
317,216.77759,46.474823,No_match
|
| 320 |
+
318,220.04477,33.356194,No_match
|
| 321 |
+
319,226.53406,47.049088,No_match
|
| 322 |
+
320,229.16681,37.212566,RadioG
|
| 323 |
+
321,200.09956,33.176804,GtowardsGroup
|
ExampleCode/example1/dataset/SFDJA_image_catalog.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
ExampleCode/example1/features/FAJD_multimodal_features.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cc002453b18664f54ae9a3b457512daa4bd30c7a00de3e29288a198634ae9478
|
| 3 |
+
size 190405960
|
ExampleCode/example1/features/FAJD_multimodal_features_norm.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5177380a355ed76532e1cc80abcfaabc538542134cf7fd5ba6ae7651a95ca1a1
|
| 3 |
+
size 190407120
|
ExampleCode/example1/features/SFAJD_multimodal_features.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:85acdb1b278186ede2071e3d969a2933d50ab78a7985b40b7a89800013835ea0
|
| 3 |
+
size 190009072
|
ExampleCode/example1/features/SFAJD_multimodal_features_norm.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:713478d154da077867c48a6bfdc29945aaf289d856a3fe3aa2f4d25ecf6f7654
|
| 3 |
+
size 190011136
|
ExampleCode/example1/features/clustered_sources_gmm_tsne.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
ExampleCode/example1/features/clustered_sources_gmm_umap.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
ExampleCode/example1/model/DesiEncoder.py
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
from functools import partial
|
| 4 |
+
from timm.models.vision_transformer import PatchEmbed, Block
|
| 5 |
+
import torch.nn.functional as F
|
| 6 |
+
import numpy as np
|
| 7 |
+
import torch
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
import numpy as np
|
| 11 |
+
import skimage
|
| 12 |
+
import numpy as np
|
| 13 |
+
import cv2 as cv
|
| 14 |
+
|
| 15 |
+
def sdss_rgb(imgs, bands, scales=None,
|
| 16 |
+
m=0.02):
|
| 17 |
+
"""
|
| 18 |
+
Transformation from raw image data (nanomaggies) to the rgb values displayed
|
| 19 |
+
at the legacy viewer https://www.legacysurvey.org/viewer
|
| 20 |
+
|
| 21 |
+
Code copied from
|
| 22 |
+
https://github.com/legacysurvey/imagine/blob/master/map/views.py
|
| 23 |
+
"""
|
| 24 |
+
|
| 25 |
+
rgbscales = {'u': (2, 1.5), # 1.0,
|
| 26 |
+
'g': (2, 2.5),
|
| 27 |
+
'r': (1, 1.5),
|
| 28 |
+
'i': (0, 1.0),
|
| 29 |
+
'z': (0, 0.4), # 0.3
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
if scales is not None:
|
| 33 |
+
rgbscales.update(scales)
|
| 34 |
+
|
| 35 |
+
I = 0
|
| 36 |
+
for img, band in zip(imgs, bands):
|
| 37 |
+
plane, scale = rgbscales[band]
|
| 38 |
+
img = np.maximum(0, img * scale + m)
|
| 39 |
+
I = I + img
|
| 40 |
+
I /= len(bands)
|
| 41 |
+
|
| 42 |
+
Q = 20
|
| 43 |
+
fI = np.arcsinh(Q * I) / np.sqrt(Q)
|
| 44 |
+
I += (I == 0.) * 1e-6
|
| 45 |
+
H, W = I.shape
|
| 46 |
+
rgb = np.zeros((H, W, 3), np.float32)
|
| 47 |
+
|
| 48 |
+
for img, band in zip(imgs, bands):
|
| 49 |
+
plane, scale = rgbscales[band]
|
| 50 |
+
rgb[:, :, plane] = (img * scale + m) * fI / I
|
| 51 |
+
|
| 52 |
+
rgb = np.clip(rgb, 0, 1)
|
| 53 |
+
|
| 54 |
+
return rgb
|
| 55 |
+
|
| 56 |
+
def dr2_rgb(rimgs, bands, **ignored):
|
| 57 |
+
return sdss_rgb(rimgs, bands, scales=dict(g=(2, 6.0), r=(1, 3.4), z=(0, 2.2)), m=0.03)
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
# --------------------------------------------------------
|
| 61 |
+
# 2D sine-cosine position embedding
|
| 62 |
+
# References:
|
| 63 |
+
# Transformer: https://github.com/tensorflow/models/blob/master/official/nlp/transformer/model_utils.py
|
| 64 |
+
# MoCo v3: https://github.com/facebookresearch/moco-v3
|
| 65 |
+
# --------------------------------------------------------
|
| 66 |
+
def get_2d_sincos_pos_embed(embed_dim, grid_size, cls_token=False):
|
| 67 |
+
"""
|
| 68 |
+
grid_size: int of the grid height and width
|
| 69 |
+
return:
|
| 70 |
+
pos_embed: [grid_size*grid_size, embed_dim] or [1+grid_size*grid_size, embed_dim] (w/ or w/o cls_token)
|
| 71 |
+
"""
|
| 72 |
+
grid_h = np.arange(grid_size, dtype=np.float32)
|
| 73 |
+
grid_w = np.arange(grid_size, dtype=np.float32)
|
| 74 |
+
grid = np.meshgrid(grid_w, grid_h) # here w goes first
|
| 75 |
+
grid = np.stack(grid, axis=0)
|
| 76 |
+
|
| 77 |
+
grid = grid.reshape([2, 1, grid_size, grid_size])
|
| 78 |
+
pos_embed = get_2d_sincos_pos_embed_from_grid(embed_dim, grid)
|
| 79 |
+
if cls_token:
|
| 80 |
+
pos_embed = np.concatenate([np.zeros([1, embed_dim]), pos_embed], axis=0)
|
| 81 |
+
return pos_embed
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def get_2d_sincos_pos_embed_from_grid(embed_dim, grid):
|
| 85 |
+
assert embed_dim % 2 == 0
|
| 86 |
+
|
| 87 |
+
# use half of dimensions to encode grid_h
|
| 88 |
+
emb_h = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[0]) # (H*W, D/2)
|
| 89 |
+
emb_w = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[1]) # (H*W, D/2)
|
| 90 |
+
|
| 91 |
+
emb = np.concatenate([emb_h, emb_w], axis=1) # (H*W, D)
|
| 92 |
+
return emb
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def get_1d_sincos_pos_embed_from_grid(embed_dim, pos):
|
| 96 |
+
"""
|
| 97 |
+
embed_dim: output dimension for each position
|
| 98 |
+
pos: a list of positions to be encoded: size (M,)
|
| 99 |
+
out: (M, D)
|
| 100 |
+
"""
|
| 101 |
+
assert embed_dim % 2 == 0
|
| 102 |
+
omega = np.arange(embed_dim // 2, dtype=float)
|
| 103 |
+
omega /= embed_dim / 2.
|
| 104 |
+
omega = 1. / 10000**omega # (D/2,)
|
| 105 |
+
|
| 106 |
+
pos = pos.reshape(-1) # (M,)
|
| 107 |
+
out = np.einsum('m,d->md', pos, omega) # (M, D/2), outer product
|
| 108 |
+
|
| 109 |
+
emb_sin = np.sin(out) # (M, D/2)
|
| 110 |
+
emb_cos = np.cos(out) # (M, D/2)
|
| 111 |
+
|
| 112 |
+
emb = np.concatenate([emb_sin, emb_cos], axis=1) # (M, D)
|
| 113 |
+
return emb
|
| 114 |
+
|
| 115 |
+
|
| 116 |
+
# --------------------------------------------------------
|
| 117 |
+
# Interpolate position embeddings for high-resolution
|
| 118 |
+
# References:
|
| 119 |
+
# DeiT: https://github.com/facebookresearch/deit
|
| 120 |
+
# --------------------------------------------------------
|
| 121 |
+
def interpolate_pos_embed(model, checkpoint_model):
|
| 122 |
+
if 'pos_embed' in checkpoint_model:
|
| 123 |
+
pos_embed_checkpoint = checkpoint_model['pos_embed']
|
| 124 |
+
embedding_size = pos_embed_checkpoint.shape[-1]
|
| 125 |
+
num_patches = model.patch_embed.num_patches
|
| 126 |
+
num_extra_tokens = model.pos_embed.shape[-2] - num_patches
|
| 127 |
+
# height (== width) for the checkpoint position embedding
|
| 128 |
+
orig_size = int((pos_embed_checkpoint.shape[-2] - num_extra_tokens) ** 0.5)
|
| 129 |
+
# height (== width) for the new position embedding
|
| 130 |
+
new_size = int(num_patches ** 0.5)
|
| 131 |
+
# class_token and dist_token are kept unchanged
|
| 132 |
+
if orig_size != new_size:
|
| 133 |
+
print("Position interpolate from %dx%d to %dx%d" % (orig_size, orig_size, new_size, new_size))
|
| 134 |
+
extra_tokens = pos_embed_checkpoint[:, :num_extra_tokens]
|
| 135 |
+
# only the position tokens are interpolated
|
| 136 |
+
pos_tokens = pos_embed_checkpoint[:, num_extra_tokens:]
|
| 137 |
+
pos_tokens = pos_tokens.reshape(-1, orig_size, orig_size, embedding_size).permute(0, 3, 1, 2)
|
| 138 |
+
pos_tokens = torch.nn.functional.interpolate(
|
| 139 |
+
pos_tokens, size=(new_size, new_size), mode='bicubic', align_corners=False)
|
| 140 |
+
pos_tokens = pos_tokens.permute(0, 2, 3, 1).flatten(1, 2)
|
| 141 |
+
new_pos_embed = torch.cat((extra_tokens, pos_tokens), dim=1)
|
| 142 |
+
checkpoint_model['pos_embed'] = new_pos_embed
|
| 143 |
+
|
| 144 |
+
class MaskedAutoEncoderViT(nn.Module):
|
| 145 |
+
""" Masked Autoencoder with VisionTransformer backbone
|
| 146 |
+
"""
|
| 147 |
+
def __init__(self, img_size=224, patch_size=16, in_chans=3,
|
| 148 |
+
embed_dim=1024, depth=24, num_heads=16,
|
| 149 |
+
decoder_embed_dim=512, decoder_depth=8, decoder_num_heads=16,
|
| 150 |
+
mlp_ratio=4.0, norm_layer=nn.LayerNorm, norm_pix_loss=False,lambda_consistency=1.0):
|
| 151 |
+
super().__init__()
|
| 152 |
+
|
| 153 |
+
# --------------------------------------------------------------------------
|
| 154 |
+
# MAE encoder specifics
|
| 155 |
+
self.patch_embed = PatchEmbed(img_size, patch_size, in_chans, embed_dim)
|
| 156 |
+
num_patches = self.patch_embed.num_patches
|
| 157 |
+
|
| 158 |
+
self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
|
| 159 |
+
self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + 1, embed_dim), requires_grad=False) # fixed sin-cos embedding
|
| 160 |
+
|
| 161 |
+
self.blocks = nn.ModuleList([
|
| 162 |
+
Block(embed_dim, num_heads, mlp_ratio, qkv_bias=True, norm_layer=norm_layer)
|
| 163 |
+
for i in range(depth)])
|
| 164 |
+
self.norm = norm_layer(embed_dim)
|
| 165 |
+
# --------------------------------------------------------------------------
|
| 166 |
+
|
| 167 |
+
# --------------------------------------------------------------------------
|
| 168 |
+
# MAE decoder specifics
|
| 169 |
+
self.decoder_embed = nn.Linear(embed_dim, decoder_embed_dim, bias=True)
|
| 170 |
+
|
| 171 |
+
self.mask_token = nn.Parameter(torch.zeros(1, 1, decoder_embed_dim))
|
| 172 |
+
|
| 173 |
+
self.decoder_pos_embed = nn.Parameter(torch.zeros(1, num_patches + 1, decoder_embed_dim), requires_grad=False) # fixed sin-cos embedding
|
| 174 |
+
|
| 175 |
+
self.decoder_blocks = nn.ModuleList([
|
| 176 |
+
Block(decoder_embed_dim, decoder_num_heads, mlp_ratio, qkv_bias=True, norm_layer=norm_layer)
|
| 177 |
+
for i in range(decoder_depth)
|
| 178 |
+
])
|
| 179 |
+
|
| 180 |
+
self.decoder_norm = norm_layer(decoder_embed_dim)
|
| 181 |
+
self.decoder_pred = nn.Linear(decoder_embed_dim, patch_size**2 * in_chans, bias=True) # decoder to patch
|
| 182 |
+
# --------------------------------------------------------------------------
|
| 183 |
+
|
| 184 |
+
self.norm_pix_loss = norm_pix_loss
|
| 185 |
+
self.lambda_consistency = lambda_consistency
|
| 186 |
+
|
| 187 |
+
self.initialize_weights()
|
| 188 |
+
|
| 189 |
+
def initialize_weights(self):
|
| 190 |
+
|
| 191 |
+
pos_embed = get_2d_sincos_pos_embed(self.pos_embed.shape[-1], int(self.patch_embed.num_patches**.5), cls_token=True)
|
| 192 |
+
self.pos_embed.data.copy_(torch.from_numpy(pos_embed).float().unsqueeze(0))
|
| 193 |
+
|
| 194 |
+
decoder_pos_embed = get_2d_sincos_pos_embed(self.decoder_pos_embed.shape[-1], int(self.patch_embed.num_patches**.5), cls_token=True)
|
| 195 |
+
self.decoder_pos_embed.data.copy_(torch.from_numpy(decoder_pos_embed).float().unsqueeze(0))
|
| 196 |
+
|
| 197 |
+
w = self.patch_embed.proj.weight.data
|
| 198 |
+
torch.nn.init.xavier_uniform_(w.view([w.shape[0], -1]))
|
| 199 |
+
|
| 200 |
+
torch.nn.init.normal_(self.cls_token, std=.02)
|
| 201 |
+
torch.nn.init.normal_(self.mask_token, std=.02)
|
| 202 |
+
|
| 203 |
+
self.apply(self._init_weights)
|
| 204 |
+
|
| 205 |
+
def _init_weights(self, m):
|
| 206 |
+
if isinstance(m, nn.Linear):
|
| 207 |
+
|
| 208 |
+
torch.nn.init.xavier_uniform_(m.weight)
|
| 209 |
+
if isinstance(m, nn.Linear) and m.bias is not None:
|
| 210 |
+
nn.init.constant_(m.bias, 0)
|
| 211 |
+
elif isinstance(m, nn.LayerNorm):
|
| 212 |
+
nn.init.constant_(m.bias, 0)
|
| 213 |
+
nn.init.constant_(m.weight, 1.0)
|
| 214 |
+
|
| 215 |
+
def random_masking(self, x, mask_ratio):
|
| 216 |
+
"""
|
| 217 |
+
Perform per-sample random masking by per-sample shuffling.
|
| 218 |
+
Per-sample shuffling is done by argsort random noise.
|
| 219 |
+
x: [N, L, D], sequence
|
| 220 |
+
"""
|
| 221 |
+
N, L, D = x.shape # batch, length, dim
|
| 222 |
+
len_keep = int(L * (1 - mask_ratio))
|
| 223 |
+
|
| 224 |
+
noise = torch.rand(N, L, device=x.device) # noise in [0, 1]
|
| 225 |
+
|
| 226 |
+
ids_shuffle = torch.argsort(noise, dim=1) # ascend: small is keep, large is remove
|
| 227 |
+
ids_restore = torch.argsort(ids_shuffle, dim=1)
|
| 228 |
+
|
| 229 |
+
ids_keep = ids_shuffle[:, :len_keep]
|
| 230 |
+
x_masked = torch.gather(x, dim=1, index=ids_keep.unsqueeze(-1).repeat(1, 1, D))
|
| 231 |
+
|
| 232 |
+
mask = torch.ones([N, L], device=x.device)
|
| 233 |
+
mask[:, :len_keep] = 0
|
| 234 |
+
|
| 235 |
+
mask = torch.gather(mask, dim=1, index=ids_restore)
|
| 236 |
+
|
| 237 |
+
return x_masked, mask, ids_restore
|
| 238 |
+
|
| 239 |
+
def patchify(self, imgs):
|
| 240 |
+
"""
|
| 241 |
+
imgs: (N, 3, H, W)
|
| 242 |
+
x: (N, L, patch_size**2 *3)
|
| 243 |
+
"""
|
| 244 |
+
p = self.patch_embed.patch_size[0]
|
| 245 |
+
assert imgs.shape[2] == imgs.shape[3] and imgs.shape[2] % p == 0
|
| 246 |
+
|
| 247 |
+
h = w = imgs.shape[2] // p
|
| 248 |
+
x = imgs.reshape(shape=(imgs.shape[0], 3, h, p, w, p))
|
| 249 |
+
x = torch.einsum('nchpwq->nhwpqc', x)
|
| 250 |
+
x = x.reshape(shape=(imgs.shape[0], h*w, p**2*3))
|
| 251 |
+
return x
|
| 252 |
+
|
| 253 |
+
def unpatchify(self, x):
|
| 254 |
+
"""
|
| 255 |
+
x: (N, L, patch_size**2 *3)
|
| 256 |
+
imgs: (N, 3, H, W)
|
| 257 |
+
"""
|
| 258 |
+
p = self.patch_embed.patch_size[0]
|
| 259 |
+
h = w = int(x.shape[1]**0.5)
|
| 260 |
+
assert h *w == x.shape[1]
|
| 261 |
+
|
| 262 |
+
x = x.reshape(shape=(x.shape[0], h, w, p, p, 3))
|
| 263 |
+
x = torch.einsum('nhwpqc->nchpwq', x)
|
| 264 |
+
imgs = x.reshape(shape=(x.shape[0], 3, h * p, h * p))
|
| 265 |
+
return imgs
|
| 266 |
+
|
| 267 |
+
def forward_encoder(self, x, mask_ratio):
|
| 268 |
+
|
| 269 |
+
x = self.patch_embed(x)
|
| 270 |
+
|
| 271 |
+
x = x + self.pos_embed[:, 1:, :]
|
| 272 |
+
|
| 273 |
+
x, mask, ids_restore = self.random_masking(x, mask_ratio)
|
| 274 |
+
|
| 275 |
+
cls_token = self.cls_token + self.pos_embed[:, :1, :]
|
| 276 |
+
cls_tokens = cls_token.expand(x.shape[0], -1, -1)
|
| 277 |
+
x = torch.cat((cls_tokens, x), dim=1)
|
| 278 |
+
|
| 279 |
+
for blk in self.blocks:
|
| 280 |
+
x = blk(x)
|
| 281 |
+
x = self.norm(x)
|
| 282 |
+
|
| 283 |
+
return x, mask, ids_restore
|
| 284 |
+
|
| 285 |
+
def forward_decoder(self, x, ids_restore):
|
| 286 |
+
x = self.decoder_embed(x)
|
| 287 |
+
|
| 288 |
+
mask_tokens = self.mask_token.repeat(x.shape[0], ids_restore.shape[1] + 1 - x.shape[1], 1)
|
| 289 |
+
x_ = torch.cat([x[:, 1:, :], mask_tokens], dim=1) # no cls token
|
| 290 |
+
x_ = torch.gather(x_, dim=1, index=ids_restore.unsqueeze(-1).repeat(1, 1, x.shape[2])) # unshuffle
|
| 291 |
+
x = torch.cat([x[:, :1, :], x_], dim=1) # append cls token
|
| 292 |
+
|
| 293 |
+
x = x + self.decoder_pos_embed
|
| 294 |
+
|
| 295 |
+
for blk in self.decoder_blocks:
|
| 296 |
+
x = blk(x)
|
| 297 |
+
x = self.decoder_norm(x)
|
| 298 |
+
x = self.decoder_pred(x)
|
| 299 |
+
|
| 300 |
+
x = x[:, 1:, :]
|
| 301 |
+
|
| 302 |
+
return x
|
| 303 |
+
|
| 304 |
+
def forward_loss(self, imgs, pred, mask):
|
| 305 |
+
"""
|
| 306 |
+
imgs: [N, 3, H, W]
|
| 307 |
+
pred: [N, L, p*p*3]
|
| 308 |
+
mask: [N, L], 0 is keep, 1 is move.
|
| 309 |
+
"""
|
| 310 |
+
target = self.patchify(imgs)
|
| 311 |
+
if self.norm_pix_loss:
|
| 312 |
+
mean = target.mean(dim=-1, keepdim=True)
|
| 313 |
+
var = target.var(dim=-1, keepdim=True)
|
| 314 |
+
target = (target - mean) / (var + 1.e-6)**0.5
|
| 315 |
+
|
| 316 |
+
loss = (pred - target) ** 2
|
| 317 |
+
loss = loss.mean(dim=-1) # [N, L], mean loss per patch
|
| 318 |
+
|
| 319 |
+
loss = (loss * mask).sum() / mask.sum() # mean loss on removed patches
|
| 320 |
+
return loss
|
| 321 |
+
|
| 322 |
+
|
| 323 |
+
def consistency_loss(self, latent1, latent2, use_cls=False):
|
| 324 |
+
"""
|
| 325 |
+
latent1, latent2: [N, L, D]
|
| 326 |
+
use_cls: 是否使用 cls_token,如果 False 就用平均 patch 特征
|
| 327 |
+
"""
|
| 328 |
+
if use_cls:
|
| 329 |
+
z1 = latent1[:, 0] # [N, D] cls token
|
| 330 |
+
z2 = latent2[:, 0]
|
| 331 |
+
else:
|
| 332 |
+
z1 = latent1[:, 1:].mean(dim=1) # [N, D] 平均所有 patch 特征
|
| 333 |
+
z2 = latent2[:, 1:].mean(dim=1)
|
| 334 |
+
|
| 335 |
+
z1 = F.normalize(z1, dim=-1)
|
| 336 |
+
z2 = F.normalize(z2, dim=-1)
|
| 337 |
+
|
| 338 |
+
loss = 2 - 2 * (z1 * z2).sum(dim=-1).mean()
|
| 339 |
+
return loss
|
| 340 |
+
|
| 341 |
+
def forward(self, imgs, mask_ratio=0.75):
|
| 342 |
+
# --- 第一次 mask ---
|
| 343 |
+
latent1, mask1, ids_restore1 = self.forward_encoder(imgs, mask_ratio)
|
| 344 |
+
pred1 = self.forward_decoder(latent1, ids_restore1)
|
| 345 |
+
loss_recon1 = self.forward_loss(imgs, pred1, mask1)
|
| 346 |
+
|
| 347 |
+
# --- 第二次 mask ---
|
| 348 |
+
latent2, mask2, ids_restore2 = self.forward_encoder(imgs, mask_ratio)
|
| 349 |
+
pred2 = self.forward_decoder(latent2, ids_restore2)
|
| 350 |
+
loss_recon2 = self.forward_loss(imgs, pred2, mask2)
|
| 351 |
+
|
| 352 |
+
# --- 一致性损失 ---
|
| 353 |
+
loss_cons = self.consistency_loss(latent1, latent2)
|
| 354 |
+
|
| 355 |
+
# --- 总 loss ---
|
| 356 |
+
loss_total = (loss_recon1 + loss_recon2) / 2 + self.lambda_consistency * loss_cons
|
| 357 |
+
|
| 358 |
+
return loss_total, pred1, mask1
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
def forward_encoder_with_given_mask(self, x, given_patch_mask):
|
| 362 |
+
"""
|
| 363 |
+
Forward encoder using a given patch-level mask.
|
| 364 |
+
|
| 365 |
+
Args:
|
| 366 |
+
x: (N, 3, H, W)
|
| 367 |
+
given_patch_mask: (N, L), 1 for masked patches, 0 for kept
|
| 368 |
+
|
| 369 |
+
Returns:
|
| 370 |
+
x: encoded tokens with cls token (N, len_keep + 1, embed_dim)
|
| 371 |
+
mask: (N, L), same as input
|
| 372 |
+
ids_restore: (N, L), mapping for unshuffling
|
| 373 |
+
"""
|
| 374 |
+
|
| 375 |
+
x = self.patch_embed(x) # (N, L, D)
|
| 376 |
+
x = x + self.pos_embed[:, 1:, :] # (N, L, D)
|
| 377 |
+
|
| 378 |
+
N, L, D = x.shape
|
| 379 |
+
|
| 380 |
+
noise = torch.rand(N, L, device=x.device)
|
| 381 |
+
|
| 382 |
+
mask_float = given_patch_mask.float()
|
| 383 |
+
ids_shuffle = torch.argsort(mask_float * (noise.max() + 1) + noise, dim=1) # (N, L)
|
| 384 |
+
ids_restore = torch.argsort(ids_shuffle, dim=1)
|
| 385 |
+
|
| 386 |
+
len_keep = L - given_patch_mask.sum(dim=1).max().int().item()
|
| 387 |
+
ids_keep = ids_shuffle[:, :len_keep]
|
| 388 |
+
x_masked = torch.gather(x, dim=1, index=ids_keep.unsqueeze(-1).repeat(1, 1, D))
|
| 389 |
+
|
| 390 |
+
cls_token = self.cls_token + self.pos_embed[:, :1, :]
|
| 391 |
+
cls_tokens = cls_token.expand(x.shape[0], -1, -1)
|
| 392 |
+
x = torch.cat((cls_tokens, x_masked), dim=1)
|
| 393 |
+
|
| 394 |
+
for blk in self.blocks:
|
| 395 |
+
x = blk(x)
|
| 396 |
+
x = self.norm(x)
|
| 397 |
+
|
| 398 |
+
return x, given_patch_mask, ids_restore
|
| 399 |
+
|
| 400 |
+
def forward_with_given_mask(self, imgs, given_patch_mask):
|
| 401 |
+
|
| 402 |
+
latent, mask, ids_restore = self.forward_encoder_with_given_mask(imgs, given_patch_mask)
|
| 403 |
+
pred = self.forward_decoder(latent, ids_restore)
|
| 404 |
+
loss = self.forward_loss(imgs, pred, mask)
|
| 405 |
+
return loss, pred, mask
|
| 406 |
+
|
| 407 |
+
|
| 408 |
+
|
| 409 |
+
|
| 410 |
+
def mae_vit_base_patch16(**kwargs):
|
| 411 |
+
model = MaskedAutoEncoderViT(
|
| 412 |
+
patch_size=16, embed_dim=768, depth=12, num_heads=12,
|
| 413 |
+
decoder_embed_dim=512, decoder_depth=8, decoder_num_heads=16,
|
| 414 |
+
mlp_ratio=4, norm_layer=partial(nn.LayerNorm, eps=1e-6), **kwargs)
|
| 415 |
+
return model
|
| 416 |
+
|
ExampleCode/example1/model/JplusEncoder.py
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
import torch.nn.functional as F
|
| 4 |
+
from timm.models import create_model
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class MultiBand_Gate(nn.Module):
|
| 8 |
+
|
| 9 |
+
def __init__(self):
|
| 10 |
+
"""
|
| 11 |
+
初始化门控类。
|
| 12 |
+
不需要指定输入大小,PSF 和 input_data 的特征在内部单独提取。
|
| 13 |
+
"""
|
| 14 |
+
super(MultiBand_Gate, self).__init__()
|
| 15 |
+
|
| 16 |
+
# 提取 input_data 特征的卷积网络
|
| 17 |
+
self.input_encoder = nn.Sequential(
|
| 18 |
+
nn.Conv2d(1, 8, kernel_size=3, padding=1), # 输入: (B, 1, 224, 224) -> (B, 8, 224, 224)
|
| 19 |
+
nn.InstanceNorm2d(8),
|
| 20 |
+
nn.LeakyReLU(),
|
| 21 |
+
nn.AdaptiveAvgPool2d((14, 14)) # 下采样为相同尺寸
|
| 22 |
+
)
|
| 23 |
+
|
| 24 |
+
# 合并后生成门控权重的网络
|
| 25 |
+
self.gate_network = nn.Sequential(
|
| 26 |
+
nn.Conv2d(8, 4, kernel_size=3, padding=1), # 输入: (B, 16, 14, 14)
|
| 27 |
+
nn.InstanceNorm2d(4),
|
| 28 |
+
nn.LeakyReLU(),
|
| 29 |
+
nn.AdaptiveAvgPool2d((1, 1)), # 全局平均池化 -> (B, 8, 1, 1)
|
| 30 |
+
nn.Flatten(), # -> (B, 8)
|
| 31 |
+
nn.Linear(4, 1), # -> (B, 1)
|
| 32 |
+
)
|
| 33 |
+
|
| 34 |
+
def forward(self, input_data):
|
| 35 |
+
"""
|
| 36 |
+
前向传播函数。
|
| 37 |
+
参数:
|
| 38 |
+
- psf: 点扩散函数,形状为 (B, 1, 51, 51)
|
| 39 |
+
- input_data: 输入图像数据,形状为 (B, 1, 224, 224)
|
| 40 |
+
返回:
|
| 41 |
+
- gate_weight: 门控权重,形状为 (B, 1, 224, 224)
|
| 42 |
+
"""
|
| 43 |
+
|
| 44 |
+
input_feat = self.input_encoder(input_data) # -> (B, 8, 14, 14)
|
| 45 |
+
|
| 46 |
+
combined_feat = input_feat
|
| 47 |
+
gate_weight = self.gate_network(combined_feat) # -> (B, 1, 224, 224)
|
| 48 |
+
|
| 49 |
+
return gate_weight
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
class MultiTask_Gate(nn.Module):
|
| 53 |
+
def __init__(self, input_dim, num_experts, dropout_rate):
|
| 54 |
+
"""
|
| 55 |
+
初始化多任务门控类。
|
| 56 |
+
|
| 57 |
+
参数:
|
| 58 |
+
- input_dim: 输入数据的维度。
|
| 59 |
+
- num_experts: 专家数量。
|
| 60 |
+
- dropout_rate: Dropout比率。
|
| 61 |
+
"""
|
| 62 |
+
super(MultiTask_Gate, self).__init__()
|
| 63 |
+
|
| 64 |
+
# TODO:这里的输入可以插入qita特征
|
| 65 |
+
self.gate = nn.Sequential(
|
| 66 |
+
nn.Linear(input_dim, 128),
|
| 67 |
+
nn.LayerNorm(128),
|
| 68 |
+
nn.LeakyReLU(),
|
| 69 |
+
# nn.Dropout(dropout_rate), # TODO:这里的dropout会导致模型不收敛, 目前不使用dropout
|
| 70 |
+
nn.Linear(128, num_experts),
|
| 71 |
+
nn.Softmax(dim=1)
|
| 72 |
+
)
|
| 73 |
+
|
| 74 |
+
def forward(self, x):
|
| 75 |
+
x = F.adaptive_avg_pool2d(x, (1, 1))[:,:,0,0] # 全局平均池化
|
| 76 |
+
return self.gate(x)
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
class MultiBand_MoE(nn.Module):
|
| 80 |
+
|
| 81 |
+
def __init__(self, model_name='vit_small_patch16_224', pretrained=False, multi_band_experts=12):
|
| 82 |
+
"""
|
| 83 |
+
初始化多波段输入的Mixture of Experts (MoE)模型。
|
| 84 |
+
|
| 85 |
+
参数:
|
| 86 |
+
- model_name: 使用的基础模型名称。
|
| 87 |
+
- pretrained: 是否使用预训练权重。
|
| 88 |
+
- input_size: 输入数据的形状 (h, w),即高度和宽度。
|
| 89 |
+
- multi_band_experts: 专家数量。
|
| 90 |
+
"""
|
| 91 |
+
super(MultiBand_MoE, self).__init__()
|
| 92 |
+
|
| 93 |
+
self.backbone = create_model(model_name=model_name, pretrained=pretrained, num_classes=0)
|
| 94 |
+
self.backbone.patch_embed.proj = nn.Conv2d(multi_band_experts, 384, kernel_size=(16, 16), stride=(16, 16), bias=False)
|
| 95 |
+
|
| 96 |
+
self.multi_band_experts = nn.ModuleList([MultiBand_Gate() for _ in range(multi_band_experts)])
|
| 97 |
+
|
| 98 |
+
def forward(self, input_data):
|
| 99 |
+
"""
|
| 100 |
+
前向传播函数。
|
| 101 |
+
|
| 102 |
+
参数:
|
| 103 |
+
- input_data: 输入数据,形状为 (batch_size, num_bands, h, w)。
|
| 104 |
+
- psf: 点扩散函数,形状为 (batch_size, num_bands, h, w)。
|
| 105 |
+
|
| 106 |
+
返回:
|
| 107 |
+
- output: 特征图像,形状为 (batch_size, num_bands, h, w)。
|
| 108 |
+
- multi_band_weights: 多波段权重,形状为 (batch_size, num_bands, 1, 1)。
|
| 109 |
+
"""
|
| 110 |
+
multi_band_weights = torch.zeros((input_data.size(0), len(self.multi_band_experts), 1, 1)).to(input_data.device)
|
| 111 |
+
|
| 112 |
+
################################################################################################################
|
| 113 |
+
for i in range(len(self.multi_band_experts)):
|
| 114 |
+
multi_band_weight = self.multi_band_experts[i](input_data[:, i:i+1, :, :])
|
| 115 |
+
# print("multi_band_weight.shape:", multi_band_weight.shape)
|
| 116 |
+
multi_band_weight = multi_band_weight.unsqueeze(1)
|
| 117 |
+
multi_band_weights[:, i, :, :] = multi_band_weight
|
| 118 |
+
|
| 119 |
+
multi_band_weights = F.softmax(multi_band_weights, dim=1)
|
| 120 |
+
output_data = input_data * multi_band_weights
|
| 121 |
+
##################################################################################################################
|
| 122 |
+
|
| 123 |
+
# # 不增加 multi_band_weights
|
| 124 |
+
# output_data = input_data
|
| 125 |
+
|
| 126 |
+
feature = self.backbone.forward_features(output_data)
|
| 127 |
+
|
| 128 |
+
# TODO:这里的特征图像需要进行 reshape,不知道是否正确,先这样
|
| 129 |
+
feature = feature[:, 1:, :]
|
| 130 |
+
B, N, C = feature.shape
|
| 131 |
+
H = W = int(N ** 0.5)
|
| 132 |
+
feature = feature.reshape(B, H, W, C)
|
| 133 |
+
feature = feature.permute(0, 3, 1, 2)
|
| 134 |
+
|
| 135 |
+
return feature, multi_band_weights[:,:,0,0]
|
| 136 |
+
|
| 137 |
+
class ReconTask_MoE(nn.Module):
|
| 138 |
+
|
| 139 |
+
def __init__(self, input_dim, num_experts, dropout_rate):
|
| 140 |
+
super(ReconTask_MoE, self).__init__()
|
| 141 |
+
|
| 142 |
+
self.gating = MultiTask_Gate(input_dim, num_experts, dropout_rate)
|
| 143 |
+
|
| 144 |
+
self.num_experts = num_experts
|
| 145 |
+
|
| 146 |
+
self.embeding_dim = int(384 / num_experts) # 384是backbone的输出通道数
|
| 147 |
+
|
| 148 |
+
self.decoder = nn.Sequential(
|
| 149 |
+
nn.ConvTranspose2d(self.embeding_dim, 64, kernel_size=4, stride=2, padding=1), # -> 56x56
|
| 150 |
+
nn.InstanceNorm2d(64),
|
| 151 |
+
nn.LeakyReLU(),
|
| 152 |
+
nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2, padding=1), # -> 112x112
|
| 153 |
+
nn.InstanceNorm2d(32),
|
| 154 |
+
nn.LeakyReLU(),
|
| 155 |
+
nn.ConvTranspose2d(32, 16, kernel_size=4, stride=2, padding=1), # -> 112x112
|
| 156 |
+
nn.InstanceNorm2d(16),
|
| 157 |
+
nn.LeakyReLU(),
|
| 158 |
+
nn.ConvTranspose2d(16, 12, kernel_size=4, stride=2, padding=1), # -> 224x224
|
| 159 |
+
)
|
| 160 |
+
|
| 161 |
+
def forward(self, x):
|
| 162 |
+
|
| 163 |
+
gate_weights = self.gating(x)
|
| 164 |
+
|
| 165 |
+
expert_outputs = [x[:, i * self.embeding_dim:(i + 1) * self.embeding_dim,:,:] for i in range(self.num_experts)]
|
| 166 |
+
|
| 167 |
+
b, c, h, w = expert_outputs[0].shape
|
| 168 |
+
output = sum(gate_weights[:, i].view(b, 1, 1, 1) * expert_outputs[i] for i in range(self.num_experts))
|
| 169 |
+
output = self.decoder(output)
|
| 170 |
+
|
| 171 |
+
return output, gate_weights
|
ExampleCode/example1/model/SpecEncoder.py
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import math
|
| 3 |
+
import torch
|
| 4 |
+
import torch.nn as nn
|
| 5 |
+
import torch.nn.functional as F
|
| 6 |
+
from torchinterp1d import interp1d
|
| 7 |
+
import torch.optim as optim
|
| 8 |
+
import matplotlib.pyplot as plt
|
| 9 |
+
import os
|
| 10 |
+
from tqdm import tqdm
|
| 11 |
+
from dataset import desi
|
| 12 |
+
|
| 13 |
+
from scipy.ndimage import gaussian_filter1d
|
| 14 |
+
from astropy.convolution import convolve, Gaussian1DKernel
|
| 15 |
+
import numpy as np
|
| 16 |
+
import logging
|
| 17 |
+
|
| 18 |
+
class PatchEmbed1D(nn.Module):
|
| 19 |
+
|
| 20 |
+
def __init__(self, patch_size=16, d_model=512):
|
| 21 |
+
super().__init__()
|
| 22 |
+
self.patch_size = patch_size
|
| 23 |
+
self.proj = nn.Linear(patch_size, d_model)
|
| 24 |
+
|
| 25 |
+
def forward(self, x):
|
| 26 |
+
B, L = x.shape
|
| 27 |
+
pad_len = (math.ceil(L / self.patch_size) * self.patch_size) - L
|
| 28 |
+
if pad_len > 0:
|
| 29 |
+
x = F.pad(x, (0, pad_len))
|
| 30 |
+
|
| 31 |
+
x = x.view(B, -1, self.patch_size)
|
| 32 |
+
tokens = self.proj(x)
|
| 33 |
+
|
| 34 |
+
return tokens, L + pad_len
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
class ReconTransformer(nn.Module):
|
| 38 |
+
def __init__(self,
|
| 39 |
+
orig_length=7781,
|
| 40 |
+
target_length=9780,
|
| 41 |
+
patch_size=16,
|
| 42 |
+
d_model=512,
|
| 43 |
+
nhead=8,
|
| 44 |
+
num_layers=6,
|
| 45 |
+
dim_feedforward=2048,
|
| 46 |
+
dropout=0.1,
|
| 47 |
+
use_z_cond=True):
|
| 48 |
+
super().__init__()
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
self.orig_length = orig_length
|
| 52 |
+
self.target_length = target_length
|
| 53 |
+
self.patch_size = patch_size
|
| 54 |
+
self.d_model = d_model
|
| 55 |
+
self.use_z_cond = use_z_cond
|
| 56 |
+
|
| 57 |
+
self.patch_embed = PatchEmbed1D(patch_size=patch_size, d_model=d_model)
|
| 58 |
+
|
| 59 |
+
max_patches = math.ceil(orig_length / patch_size)
|
| 60 |
+
self.pos_embed = nn.Parameter(torch.randn(1, max_patches, d_model) * 0.02)
|
| 61 |
+
|
| 62 |
+
if use_z_cond:
|
| 63 |
+
self.z_proj = nn.Sequential(
|
| 64 |
+
nn.Linear(1, d_model),
|
| 65 |
+
nn.GELU(),
|
| 66 |
+
nn.Linear(d_model, d_model)
|
| 67 |
+
)
|
| 68 |
+
else:
|
| 69 |
+
self.z_proj = None
|
| 70 |
+
|
| 71 |
+
encoder_layer = nn.TransformerEncoderLayer(
|
| 72 |
+
d_model=d_model,
|
| 73 |
+
nhead=nhead,
|
| 74 |
+
dim_feedforward=dim_feedforward,
|
| 75 |
+
dropout=dropout,
|
| 76 |
+
activation='gelu',
|
| 77 |
+
batch_first=True
|
| 78 |
+
)
|
| 79 |
+
self.encoder = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
|
| 80 |
+
|
| 81 |
+
self.recon_head = nn.Linear(d_model, patch_size)
|
| 82 |
+
self.norm = nn.LayerNorm(d_model)
|
| 83 |
+
self._init_weights()
|
| 84 |
+
self.out_patches = math.ceil(self.target_length / patch_size)
|
| 85 |
+
|
| 86 |
+
def _init_weights(self):
|
| 87 |
+
|
| 88 |
+
nn.init.xavier_uniform_(self.recon_head.weight)
|
| 89 |
+
if self.recon_head.bias is not None:
|
| 90 |
+
nn.init.zeros_(self.recon_head.bias)
|
| 91 |
+
|
| 92 |
+
def forward(self, spec, z=None):
|
| 93 |
+
|
| 94 |
+
B, L = spec.shape
|
| 95 |
+
tokens, padded_len = self.patch_embed(spec)
|
| 96 |
+
N_in = tokens.shape[1]
|
| 97 |
+
|
| 98 |
+
pos = self.pos_embed[:, :N_in, :]
|
| 99 |
+
tokens = tokens + pos
|
| 100 |
+
|
| 101 |
+
if self.use_z_cond and z is not None:
|
| 102 |
+
if z.dim() == 1:
|
| 103 |
+
z = z.unsqueeze(-1)
|
| 104 |
+
z_emb = self.z_proj(z)
|
| 105 |
+
tokens = tokens + z_emb.unsqueeze(1)
|
| 106 |
+
|
| 107 |
+
tokens = self.norm(tokens)
|
| 108 |
+
enc_out = self.encoder(tokens)
|
| 109 |
+
|
| 110 |
+
N_out = self.out_patches
|
| 111 |
+
if N_out != N_in:
|
| 112 |
+
enc_out = F.interpolate(
|
| 113 |
+
enc_out.transpose(1, 2),
|
| 114 |
+
size=N_out,
|
| 115 |
+
mode="linear",
|
| 116 |
+
align_corners=False
|
| 117 |
+
).transpose(1, 2)
|
| 118 |
+
|
| 119 |
+
patches = self.recon_head(enc_out)
|
| 120 |
+
recon = patches.reshape(B, N_out * self.patch_size)
|
| 121 |
+
|
| 122 |
+
recon = recon[:, :self.target_length]
|
| 123 |
+
|
| 124 |
+
if z is None:
|
| 125 |
+
z = torch.zeros(len(recon))
|
| 126 |
+
|
| 127 |
+
B = recon.size(0)
|
| 128 |
+
|
| 129 |
+
if z.dim() == 1:
|
| 130 |
+
z = z.unsqueeze(1)
|
| 131 |
+
|
| 132 |
+
return recon
|
| 133 |
+
|
| 134 |
+
def extract_features(self, spec, z=None, pool="mean"):
|
| 135 |
+
|
| 136 |
+
B, L = spec.shape
|
| 137 |
+
tokens, padded_len = self.patch_embed(spec)
|
| 138 |
+
N_in = tokens.shape[1]
|
| 139 |
+
|
| 140 |
+
pos = self.pos_embed[:, :N_in, :]
|
| 141 |
+
tokens = tokens + pos
|
| 142 |
+
|
| 143 |
+
if self.use_z_cond and z is not None:
|
| 144 |
+
if z.dim() == 1:
|
| 145 |
+
z = z.unsqueeze(-1)
|
| 146 |
+
z_emb = self.z_proj(z)
|
| 147 |
+
tokens = tokens + z_emb.unsqueeze(1)
|
| 148 |
+
|
| 149 |
+
tokens = self.norm(tokens)
|
| 150 |
+
enc_out = self.encoder(tokens)
|
| 151 |
+
|
| 152 |
+
if pool == "mean":
|
| 153 |
+
feat = enc_out.mean(dim=1)
|
| 154 |
+
elif pool == "cls":
|
| 155 |
+
feat = enc_out[:, 0, :]
|
| 156 |
+
elif pool == "flatten":
|
| 157 |
+
feat = enc_out.reshape(B, -1)
|
| 158 |
+
raise ValueError("Unknown pooling method")
|
| 159 |
+
|
| 160 |
+
return feat
|
| 161 |
+
|
| 162 |
+
|
| 163 |
+
def to_rest_frame(spec_obs, z, wave_obs_min=3600.0, wave_obs_max=9824.0, n_obs=7781, n_rest=9780, device="cuda"):
|
| 164 |
+
|
| 165 |
+
B = spec_obs.size(0)
|
| 166 |
+
|
| 167 |
+
wave_obs = torch.linspace(wave_obs_min, wave_obs_max, n_obs,
|
| 168 |
+
dtype=torch.float32, device=device)
|
| 169 |
+
wave_obs_batch = wave_obs.unsqueeze(0).expand(B, -1)
|
| 170 |
+
|
| 171 |
+
lmbda_min = wave_obs_min / (1.0 + 0.8)
|
| 172 |
+
lmbda_max = wave_obs_max / 1.0
|
| 173 |
+
|
| 174 |
+
wave_rest = torch.linspace(lmbda_min, lmbda_max, n_rest,
|
| 175 |
+
dtype=torch.float32, device=device)
|
| 176 |
+
|
| 177 |
+
wave_rest_batch = wave_rest.unsqueeze(0).expand(B, -1)
|
| 178 |
+
wave_redshifted = wave_rest_batch * (1 + z.unsqueeze(-1))
|
| 179 |
+
|
| 180 |
+
spec_rest = interp1d(wave_obs_batch, spec_obs, wave_redshifted)
|
| 181 |
+
valid = (wave_redshifted >= wave_obs_min) & (wave_redshifted <= wave_obs_max)
|
| 182 |
+
spec_rest[~valid] = 0.0
|
| 183 |
+
|
| 184 |
+
return spec_rest, wave_rest
|
| 185 |
+
|
| 186 |
+
def weighted_mse_loss(recon, target, weight):
|
| 187 |
+
|
| 188 |
+
diff = (recon - target) ** 2
|
| 189 |
+
weighted = diff * weight
|
| 190 |
+
denom = weight.sum()
|
| 191 |
+
if denom == 0:
|
| 192 |
+
return diff.mean()
|
| 193 |
+
return weighted.sum() / denom
|
| 194 |
+
|
| 195 |
+
def consistency_loss(sf, sf_aug, individual=False):
|
| 196 |
+
batch_size, s_size = sf.shape
|
| 197 |
+
x = torch.sum((sf_aug - sf)**2/(0.5)**2,dim=1)/s_size
|
| 198 |
+
sim_loss = torch.sigmoid(x)-0.5
|
| 199 |
+
if individual:
|
| 200 |
+
return x, sim_loss
|
| 201 |
+
return sim_loss.sum()
|
| 202 |
+
|
| 203 |
+
|
| 204 |
+
def train_model(desi, model, trainloader, validloader, device, epochs=20, lr=1e-4, weight_decay=1e-5,
|
| 205 |
+
save_path="best_recon_transformer.pth", plot_interval=1, fig_dir="figures",
|
| 206 |
+
log_interval=5000, log_file="training.log"):
|
| 207 |
+
|
| 208 |
+
# === 新增:配置 logging ===
|
| 209 |
+
os.makedirs(fig_dir, exist_ok=True)
|
| 210 |
+
os.makedirs(os.path.dirname(save_path) if os.path.dirname(save_path) else '.', exist_ok=True)
|
| 211 |
+
|
| 212 |
+
logging.basicConfig(
|
| 213 |
+
level=logging.INFO,
|
| 214 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 215 |
+
handlers=[
|
| 216 |
+
logging.FileHandler(log_file, mode='w'), # 写入文件(覆盖模式)
|
| 217 |
+
logging.StreamHandler() # 同时输出到控制台
|
| 218 |
+
]
|
| 219 |
+
)
|
| 220 |
+
logger = logging.getLogger()
|
| 221 |
+
|
| 222 |
+
model.to(device)
|
| 223 |
+
optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay)
|
| 224 |
+
|
| 225 |
+
best_val_loss = float("inf")
|
| 226 |
+
fixed_valid_batch = None
|
| 227 |
+
|
| 228 |
+
iter_loss_accums, iter_mse_accums, iter_consistency_accums = [], [], []
|
| 229 |
+
train_losses, val_losses = [], []
|
| 230 |
+
|
| 231 |
+
for epoch in range(1, epochs + 1):
|
| 232 |
+
model.train()
|
| 233 |
+
train_loss, num_samples = 0.0, 0
|
| 234 |
+
iter_count = 0
|
| 235 |
+
iter_loss_accum = iter_mse_accum = iter_consistency_accum = 0.0
|
| 236 |
+
|
| 237 |
+
for spec, w, z, _, _, _, _, _ in tqdm(trainloader, desc=f"Epoch {epoch} [Train]", leave=False):
|
| 238 |
+
|
| 239 |
+
B = spec.size(0)
|
| 240 |
+
# Preprocessing: smoothing
|
| 241 |
+
flux_smooth = gaussian_filter1d(spec.cpu().detach().numpy(), sigma=5, axis=1)
|
| 242 |
+
kernel = Gaussian1DKernel(stddev=5, x_size=5)
|
| 243 |
+
flux_conv_batch = np.array([convolve(f, kernel) for f in flux_smooth])
|
| 244 |
+
|
| 245 |
+
spec = torch.tensor(flux_conv_batch, device=device, dtype=torch.float32)
|
| 246 |
+
spec, w, z = spec.to(device).float(), w.to(device).float(), z.to(device).float()
|
| 247 |
+
|
| 248 |
+
rest_spec = to_rest_frame(spec, z, device=device)[0]
|
| 249 |
+
w_spec = to_rest_frame(w, z, device=device)[0]
|
| 250 |
+
|
| 251 |
+
optimizer.zero_grad()
|
| 252 |
+
recon = model(spec, z)
|
| 253 |
+
mse_loss = weighted_mse_loss(recon, rest_spec, w_spec)
|
| 254 |
+
|
| 255 |
+
spec_aug, w_aug, z_aug = desi.augment_spectra(spec, w, z)
|
| 256 |
+
specf_aug = model.extract_features(spec_aug, z_aug)
|
| 257 |
+
specf = model.extract_features(spec, z)
|
| 258 |
+
consistency_loss_value = consistency_loss(specf, specf_aug)
|
| 259 |
+
|
| 260 |
+
loss = mse_loss + consistency_loss_value
|
| 261 |
+
# loss = mse_loss
|
| 262 |
+
loss.backward()
|
| 263 |
+
optimizer.step()
|
| 264 |
+
|
| 265 |
+
train_loss += loss.item() * B
|
| 266 |
+
num_samples += B
|
| 267 |
+
iter_count += 1
|
| 268 |
+
|
| 269 |
+
iter_loss_accum += loss.item()
|
| 270 |
+
iter_mse_accum += mse_loss.item()
|
| 271 |
+
iter_consistency_accum += consistency_loss_value.item()
|
| 272 |
+
|
| 273 |
+
if iter_count % log_interval == 0:
|
| 274 |
+
avg_iter_loss = iter_loss_accum / log_interval
|
| 275 |
+
avg_iter_mse = iter_mse_accum / log_interval
|
| 276 |
+
avg_iter_consistency = iter_consistency_accum / log_interval
|
| 277 |
+
|
| 278 |
+
iter_loss_accums.append(avg_iter_loss)
|
| 279 |
+
iter_mse_accums.append(avg_iter_mse)
|
| 280 |
+
iter_consistency_accums.append(avg_iter_consistency)
|
| 281 |
+
|
| 282 |
+
# === 替换 print 为 logger.info ===
|
| 283 |
+
logger.info(
|
| 284 |
+
f"Epoch {epoch} Iter {iter_count}: "
|
| 285 |
+
f"Avg Total={avg_iter_loss:.6f}, "
|
| 286 |
+
f"MSE={avg_iter_mse:.6f}, "
|
| 287 |
+
f"Consistency={avg_iter_consistency:.6f}"
|
| 288 |
+
)
|
| 289 |
+
|
| 290 |
+
# Plot loss curves
|
| 291 |
+
fig_loss, axes = plt.subplots(3, 1, figsize=(10, 12), sharex=True)
|
| 292 |
+
axes[0].plot(iter_loss_accums, color='blue')
|
| 293 |
+
axes[0].set_ylabel('Total Loss'); axes[0].grid(True)
|
| 294 |
+
axes[1].plot(iter_mse_accums, color='green')
|
| 295 |
+
axes[1].set_ylabel('MSE Loss'); axes[1].grid(True)
|
| 296 |
+
axes[2].plot(iter_consistency_accums, color='orange')
|
| 297 |
+
axes[2].set_ylabel('Consistency Loss')
|
| 298 |
+
axes[2].set_xlabel('Iteration'); axes[2].grid(True)
|
| 299 |
+
fig_loss.suptitle('Training Loss Components')
|
| 300 |
+
plt.tight_layout(rect=[0, 0, 1, 0.96])
|
| 301 |
+
fig_loss.savefig(os.path.join(fig_dir, "loss_curve_iter.png"))
|
| 302 |
+
plt.close(fig_loss)
|
| 303 |
+
|
| 304 |
+
# Plot reconstructions
|
| 305 |
+
for i in range(min(4, B)):
|
| 306 |
+
plt.figure(figsize=(12, 3))
|
| 307 |
+
plt.subplot(2,1,1)
|
| 308 |
+
plt.plot(rest_spec[i].cpu().numpy(), label="Input", color='blue', linewidth=0.5, alpha=0.7)
|
| 309 |
+
plt.plot(recon[i].detach().cpu().numpy(), label="Reconstructed", color='red', linewidth=0.5, alpha=0.7)
|
| 310 |
+
plt.title(f"Epoch {epoch} Iter {iter_count} Sample {i} | z = {z[i].item():.3f}")
|
| 311 |
+
plt.legend(); plt.grid(True); plt.tight_layout()
|
| 312 |
+
plt.subplot(2,1,2)
|
| 313 |
+
plt.plot(w_spec[i].detach().cpu().numpy(), label="w", color='black', linewidth=0.5, alpha=0.7)
|
| 314 |
+
plt.legend(); plt.grid(True); plt.tight_layout()
|
| 315 |
+
plt.savefig(os.path.join(fig_dir, f"recon_epoch{epoch}_iter{iter_count}_sample{i}.png"))
|
| 316 |
+
plt.close()
|
| 317 |
+
|
| 318 |
+
iter_loss_accum = iter_mse_accum = iter_consistency_accum = 0.0
|
| 319 |
+
|
| 320 |
+
train_loss /= num_samples
|
| 321 |
+
train_losses.append(train_loss)
|
| 322 |
+
|
| 323 |
+
# Validation
|
| 324 |
+
model.eval()
|
| 325 |
+
val_loss, num_samples = 0.0, 0
|
| 326 |
+
with torch.no_grad():
|
| 327 |
+
for i, (spec, w, z, _, _, _, _, _) in enumerate(tqdm(validloader, desc=f"Epoch {epoch} [Valid]", leave=False)):
|
| 328 |
+
spec, w, z = spec.to(device).float(), w.to(device).float(), z.to(device).float()
|
| 329 |
+
rest_spec = to_rest_frame(spec, z, device=device)[0]
|
| 330 |
+
w_spec = to_rest_frame(w, z, device=device)[0]
|
| 331 |
+
recon = model(spec, z)
|
| 332 |
+
loss = weighted_mse_loss(recon, rest_spec, w_spec)
|
| 333 |
+
val_loss += loss.item() * spec.size(0)
|
| 334 |
+
num_samples += spec.size(0)
|
| 335 |
+
|
| 336 |
+
if fixed_valid_batch is None and i == 0:
|
| 337 |
+
fixed_valid_batch = (rest_spec.cpu(), recon.cpu(), z.cpu())
|
| 338 |
+
|
| 339 |
+
val_loss /= num_samples
|
| 340 |
+
val_losses.append(val_loss)
|
| 341 |
+
|
| 342 |
+
# === 替换 print 为 logger.info ===
|
| 343 |
+
logger.info(f"Epoch {epoch}: Train Loss = {train_loss:.6f}, Val Loss = {val_loss:.6f}")
|
| 344 |
+
|
| 345 |
+
if val_loss < best_val_loss:
|
| 346 |
+
best_val_loss = val_loss
|
| 347 |
+
save_dict = model.module.state_dict() if isinstance(model, nn.DataParallel) else model.state_dict()
|
| 348 |
+
torch.save(save_dict, save_path)
|
| 349 |
+
logger.info(f" ✅ New best model saved to {save_path}")
|
| 350 |
+
|
| 351 |
+
# Plot validation reconstructions periodically
|
| 352 |
+
if epoch % plot_interval == 0 and fixed_valid_batch is not None:
|
| 353 |
+
spec_fixed, recon_fixed, z_fixed = fixed_valid_batch
|
| 354 |
+
B_vis = min(4, spec_fixed.size(0))
|
| 355 |
+
fig_recon, axes = plt.subplots(B_vis, 1, figsize=(12, 2 * B_vis))
|
| 356 |
+
if B_vis == 1: axes = [axes]
|
| 357 |
+
for i in range(B_vis):
|
| 358 |
+
ax = axes[i]
|
| 359 |
+
ax.plot(spec_fixed[i].numpy(), label="Input", color='blue', linewidth=0.5, alpha=0.7)
|
| 360 |
+
ax.plot(recon_fixed[i].numpy(), label="Reconstructed", color='red', linewidth=0.5, alpha=0.7)
|
| 361 |
+
ax.set_title(f"z = {z_fixed[i].item():.3f}")
|
| 362 |
+
ax.legend(); ax.grid(True)
|
| 363 |
+
plt.tight_layout()
|
| 364 |
+
plt.savefig(os.path.join(fig_dir, f"recon_epoch_{epoch:03d}.png"))
|
| 365 |
+
plt.close(fig_recon)
|
| 366 |
+
|
| 367 |
+
logger.info("\n🎉 Training completed.")
|
| 368 |
+
logger.info(f"Best Validation Loss: {best_val_loss:.6f}")
|
| 369 |
+
|
| 370 |
+
|
| 371 |
+
if __name__ == "__main__":
|
| 372 |
+
|
| 373 |
+
device = torch.device("cuda:3" if torch.cuda.is_available() else "cpu")
|
| 374 |
+
|
| 375 |
+
desi = desi.DESI()
|
| 376 |
+
|
| 377 |
+
CSV_PATH = '/home/data/multimodalUniverse/DESIspec_make/matched_sources_by_targetid_inner.csv'
|
| 378 |
+
|
| 379 |
+
trainloader = desi.get_data_loader(
|
| 380 |
+
csv_path=CSV_PATH,
|
| 381 |
+
which="train",
|
| 382 |
+
batch_size=64,
|
| 383 |
+
shuffle=True
|
| 384 |
+
)
|
| 385 |
+
|
| 386 |
+
validloader = desi.get_data_loader(
|
| 387 |
+
csv_path=CSV_PATH,
|
| 388 |
+
which="test",
|
| 389 |
+
batch_size=64,
|
| 390 |
+
shuffle=False
|
| 391 |
+
)
|
| 392 |
+
|
| 393 |
+
model = ReconTransformer(
|
| 394 |
+
orig_length=7781,
|
| 395 |
+
target_length=9780,
|
| 396 |
+
patch_size=4,
|
| 397 |
+
d_model=512,
|
| 398 |
+
nhead=8,
|
| 399 |
+
num_layers=6,
|
| 400 |
+
dim_feedforward=2048,
|
| 401 |
+
dropout=0.1,
|
| 402 |
+
use_z_cond=True
|
| 403 |
+
)
|
| 404 |
+
|
| 405 |
+
model.to(device)
|
| 406 |
+
|
| 407 |
+
train_model( desi, model=model,
|
| 408 |
+
trainloader=trainloader,
|
| 409 |
+
validloader=validloader,
|
| 410 |
+
device=device,
|
| 411 |
+
epochs=1000,
|
| 412 |
+
lr=1e-4,
|
| 413 |
+
weight_decay=1e-5,
|
| 414 |
+
save_path="./training_plots_reshift/best_recon_transformer_acc.pth",
|
| 415 |
+
plot_interval=1,
|
| 416 |
+
fig_dir="training_plots_reshift")
|
ExampleCode/example1/model/__pycache__/DesiEncoder.cpython-310.pyc
ADDED
|
Binary file (12.2 kB). View file
|
|
|
ExampleCode/example1/model/__pycache__/JplusEncoder.cpython-310.pyc
ADDED
|
Binary file (5.84 kB). View file
|
|
|
ExampleCode/example1/model/checkpoint/DesiEncoder.pth
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:96960363558415490e37ddcb6857b1ed270171000b14d0125fe13981a8cb1c55
|
| 3 |
+
size 1341142902
|
ExampleCode/example1/model/checkpoint/JplusEncoder.pth
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b39ee0c41ec120e3da949d1ddd15418e2727e54c66e6125b9b0fada459a51c1f
|
| 3 |
+
size 90313443
|
ExampleCode/example2/Cot.ipynb
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": null,
|
| 6 |
+
"id": "cd7f04e2",
|
| 7 |
+
"metadata": {},
|
| 8 |
+
"outputs": [],
|
| 9 |
+
"source": [
|
| 10 |
+
"import pandas as pd\n",
|
| 11 |
+
"import glob\n",
|
| 12 |
+
"import numpy as np\n",
|
| 13 |
+
"import os\n",
|
| 14 |
+
"import json\n",
|
| 15 |
+
"import matplotlib.pyplot as plt\n",
|
| 16 |
+
"import requests\n",
|
| 17 |
+
"from PIL import Image\n",
|
| 18 |
+
"from io import BytesIO\n",
|
| 19 |
+
"\n",
|
| 20 |
+
"# ======================\n",
|
| 21 |
+
"# 配置信息\n",
|
| 22 |
+
"# ======================\n",
|
| 23 |
+
"\n",
|
| 24 |
+
"cot_info = {\n",
|
| 25 |
+
" \"allwise\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/allwise.json\",\n",
|
| 26 |
+
" \"galex\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/Galex.json\",\n",
|
| 27 |
+
" \"spec\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/catalogs/fastspecfit/fastspecfit_ra_dec_with_source.csv\",\n",
|
| 28 |
+
" \"vla\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/vla.json\",\n",
|
| 29 |
+
" \"vla_g\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/vla_g.json\",\n",
|
| 30 |
+
" \"chandra\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/chandra.json\",\n",
|
| 31 |
+
" \"desiimage\": \"/home/dell461/ljm/DATA_other/AstroM3/Dataset/semantics/desi.json\"\n",
|
| 32 |
+
"}\n",
|
| 33 |
+
"\n",
|
| 34 |
+
"DEFAULT_CATALOG_DIR = '/home/dell461/ljm/DATA_other/AstroM3/Dataset/catalogs/Parameters/'\n",
|
| 35 |
+
"DEFAULT_SEARCH_RADIUS_ARCSEC = 2.0\n",
|
| 36 |
+
"\n",
|
| 37 |
+
"# ======================\n",
|
| 38 |
+
"# 核心函数:交叉匹配\n",
|
| 39 |
+
"# ======================\n",
|
| 40 |
+
"\n",
|
| 41 |
+
"def cross_match_catalogs(\n",
|
| 42 |
+
" target_ra: float,\n",
|
| 43 |
+
" target_dec: float,\n",
|
| 44 |
+
" catalog_dir: str = DEFAULT_CATALOG_DIR,\n",
|
| 45 |
+
" search_radius_arcsec: float = DEFAULT_SEARCH_RADIUS_ARCSEC,\n",
|
| 46 |
+
" ra_col_names: list = None,\n",
|
| 47 |
+
" dec_col_names: list = None,\n",
|
| 48 |
+
" verbose: bool = True\n",
|
| 49 |
+
"):\n",
|
| 50 |
+
" if ra_col_names is None:\n",
|
| 51 |
+
" ra_col_names = ['ra', 'raj2000', 'ra_deg', 'ra_degrees', 'alpha']\n",
|
| 52 |
+
" if dec_col_names is None:\n",
|
| 53 |
+
" dec_col_names = ['dec', 'dej2000', 'dec_deg', 'dec_degrees', 'delta']\n",
|
| 54 |
+
"\n",
|
| 55 |
+
" ra_col_names = [name.lower().strip() for name in ra_col_names]\n",
|
| 56 |
+
" dec_col_names = [name.lower().strip() for name in dec_col_names]\n",
|
| 57 |
+
"\n",
|
| 58 |
+
" csv_pattern = os.path.join(catalog_dir, '*.csv') if os.path.isdir(catalog_dir) else catalog_dir\n",
|
| 59 |
+
" csv_paths = glob.glob(csv_pattern)\n",
|
| 60 |
+
"\n",
|
| 61 |
+
" if not csv_paths:\n",
|
| 62 |
+
" if verbose:\n",
|
| 63 |
+
" print(f\"⚠️ No CSV files found in: {csv_pattern}\")\n",
|
| 64 |
+
" return []\n",
|
| 65 |
+
"\n",
|
| 66 |
+
" all_matches = []\n",
|
| 67 |
+
" if verbose:\n",
|
| 68 |
+
" print(f\"🔍 Searching within {search_radius_arcsec} arcsec of RA={target_ra}, Dec={target_dec}\\n\")\n",
|
| 69 |
+
"\n",
|
| 70 |
+
" for csv_path in sorted(csv_paths):\n",
|
| 71 |
+
" filename = os.path.basename(csv_path)\n",
|
| 72 |
+
" if verbose:\n",
|
| 73 |
+
" print(f\"Processing: {filename}\")\n",
|
| 74 |
+
"\n",
|
| 75 |
+
" try:\n",
|
| 76 |
+
" df = pd.read_csv(csv_path)\n",
|
| 77 |
+
" except Exception as e:\n",
|
| 78 |
+
" if verbose:\n",
|
| 79 |
+
" print(f\" ❌ Failed to read {filename}: {e}\")\n",
|
| 80 |
+
" continue\n",
|
| 81 |
+
"\n",
|
| 82 |
+
" ra_col = dec_col = None\n",
|
| 83 |
+
" for col in df.columns:\n",
|
| 84 |
+
" col_clean = col.lower().strip()\n",
|
| 85 |
+
" if col_clean in ra_col_names:\n",
|
| 86 |
+
" ra_col = col\n",
|
| 87 |
+
" if col_clean in dec_col_names:\n",
|
| 88 |
+
" dec_col = col\n",
|
| 89 |
+
"\n",
|
| 90 |
+
" if not ra_col or not dec_col:\n",
|
| 91 |
+
" if verbose:\n",
|
| 92 |
+
" print(f\" ⚠️ RA/Dec columns not found. Skipping.\")\n",
|
| 93 |
+
" continue\n",
|
| 94 |
+
"\n",
|
| 95 |
+
" df[ra_col] = pd.to_numeric(df[ra_col], errors='coerce')\n",
|
| 96 |
+
" df[dec_col] = pd.to_numeric(df[dec_col], errors='coerce')\n",
|
| 97 |
+
" df = df.dropna(subset=[ra_col, dec_col])\n",
|
| 98 |
+
"\n",
|
| 99 |
+
" if df.empty:\n",
|
| 100 |
+
" if verbose:\n",
|
| 101 |
+
" print(f\" ⚠️ No valid numeric RA/Dec rows. Skipping.\")\n",
|
| 102 |
+
" continue\n",
|
| 103 |
+
"\n",
|
| 104 |
+
" dra = (df[ra_col] - target_ra) * np.cos(np.radians(target_dec))\n",
|
| 105 |
+
" ddec = df[dec_col] - target_dec\n",
|
| 106 |
+
" dist_deg = np.sqrt(dra**2 + ddec**2)\n",
|
| 107 |
+
" dist_arcsec = dist_deg * 3600.0\n",
|
| 108 |
+
"\n",
|
| 109 |
+
" mask = dist_arcsec <= search_radius_arcsec\n",
|
| 110 |
+
" matched_rows = df[mask].copy()\n",
|
| 111 |
+
" matched_rows['match_distance_arcsec'] = dist_arcsec[mask].values\n",
|
| 112 |
+
"\n",
|
| 113 |
+
" if not matched_rows.empty:\n",
|
| 114 |
+
" all_matches.append({\n",
|
| 115 |
+
" 'file': filename,\n",
|
| 116 |
+
" 'matches': matched_rows\n",
|
| 117 |
+
" })\n",
|
| 118 |
+
" else:\n",
|
| 119 |
+
" if verbose:\n",
|
| 120 |
+
" print(f\" ❌ No match within {search_radius_arcsec} arcsec\")\n",
|
| 121 |
+
"\n",
|
| 122 |
+
" if verbose:\n",
|
| 123 |
+
" print(\"\\n\" + \"=\"*60)\n",
|
| 124 |
+
" if all_matches:\n",
|
| 125 |
+
" print(f\"✅ Total matched files: {len(all_matches)}\")\n",
|
| 126 |
+
" else:\n",
|
| 127 |
+
" print(\"❌ No matches found in any file.\")\n",
|
| 128 |
+
"\n",
|
| 129 |
+
" return all_matches\n",
|
| 130 |
+
"\n",
|
| 131 |
+
"\n",
|
| 132 |
+
"# ======================\n",
|
| 133 |
+
"# 加载语义描述\n",
|
| 134 |
+
"# ======================\n",
|
| 135 |
+
"\n",
|
| 136 |
+
"def load_semantic_info(filename: str):\n",
|
| 137 |
+
" basename = filename.lower()\n",
|
| 138 |
+
" for key in cot_info:\n",
|
| 139 |
+
" if key in basename:\n",
|
| 140 |
+
" try:\n",
|
| 141 |
+
" with open(cot_info[key], 'r', encoding='utf-8') as f:\n",
|
| 142 |
+
" return json.load(f)\n",
|
| 143 |
+
" except Exception as e:\n",
|
| 144 |
+
" print(f\"⚠️ Failed to load semantic info for {key}: {e}\")\n",
|
| 145 |
+
" return {}\n",
|
| 146 |
+
" return {}\n",
|
| 147 |
+
"\n",
|
| 148 |
+
"\n",
|
| 149 |
+
"# ======================\n",
|
| 150 |
+
"# 格式化用于 LLM 的输入\n",
|
| 151 |
+
"# ======================\n",
|
| 152 |
+
"\n",
|
| 153 |
+
"def format_matches_for_llm(matches):\n",
|
| 154 |
+
" if not matches:\n",
|
| 155 |
+
" return \"No observational parameters found within search radius.\"\n",
|
| 156 |
+
"\n",
|
| 157 |
+
" sections = []\n",
|
| 158 |
+
" for item in matches:\n",
|
| 159 |
+
" filename = item['file']\n",
|
| 160 |
+
" df = item['matches']\n",
|
| 161 |
+
" row = df.iloc[0] # 取第一个匹配源\n",
|
| 162 |
+
"\n",
|
| 163 |
+
" semantic = load_semantic_info(filename)\n",
|
| 164 |
+
" lines = [f\"[Source: {filename}]\"]\n",
|
| 165 |
+
"\n",
|
| 166 |
+
" for col, val in row.items():\n",
|
| 167 |
+
" if col == 'match_distance_arcsec':\n",
|
| 168 |
+
" continue\n",
|
| 169 |
+
" if pd.isna(val) or (isinstance(val, float) and np.isnan(val)):\n",
|
| 170 |
+
" continue\n",
|
| 171 |
+
"\n",
|
| 172 |
+
" if isinstance(val, float):\n",
|
| 173 |
+
" if abs(val) < 1e-4 or abs(val) > 1e5:\n",
|
| 174 |
+
" val_str = f\"{val:.3e}\"\n",
|
| 175 |
+
" else:\n",
|
| 176 |
+
" val_str = f\"{val:.4f}\"\n",
|
| 177 |
+
" else:\n",
|
| 178 |
+
" val_str = str(val)\n",
|
| 179 |
+
"\n",
|
| 180 |
+
" desc = semantic.get(col, {}).get('description', '') if isinstance(semantic, dict) else ''\n",
|
| 181 |
+
" if desc:\n",
|
| 182 |
+
" lines.append(f\" {col}: {val_str} # {desc}\")\n",
|
| 183 |
+
" else:\n",
|
| 184 |
+
" lines.append(f\" {col}: {val_str}\")\n",
|
| 185 |
+
"\n",
|
| 186 |
+
" sections.append(\"\\n\".join(lines))\n",
|
| 187 |
+
"\n",
|
| 188 |
+
" return \"\\n\\n\".join(sections).strip()\n",
|
| 189 |
+
"\n",
|
| 190 |
+
"\n",
|
| 191 |
+
"# ======================\n",
|
| 192 |
+
"# 调用 LLM 进行分类\n",
|
| 193 |
+
"# ======================\n",
|
| 194 |
+
"\n",
|
| 195 |
+
"def classify_galaxy_with_llm(ra, dec, param_text):\n",
|
| 196 |
+
" prompt = f\"\"\"\n",
|
| 197 |
+
"You are a professional astronomer. Analyze the following multi-wavelength observational parameters \n",
|
| 198 |
+
"for a source at RA={ra}, Dec={dec}. Use the provided metadata (including units and descriptions) \n",
|
| 199 |
+
"to infer the most likely galaxy type (e.g., spiral, elliptical, starburst, AGN, quasar, etc.).\n",
|
| 200 |
+
"\n",
|
| 201 |
+
"Observational data:\n",
|
| 202 |
+
"{param_text}\n",
|
| 203 |
+
"\n",
|
| 204 |
+
"Provide a concise classification with reasoning based on physical indicators (e.g., X-ray luminosity, UV excess, radio morphology, IR colors), no more than 200 words.\n",
|
| 205 |
+
"\"\"\"\n",
|
| 206 |
+
"\n",
|
| 207 |
+
" from openai import OpenAI\n",
|
| 208 |
+
"\n",
|
| 209 |
+
" OPENAI_API_KEY = \"sk-c38a5fddbcb44147b0efa9d7d1ff5aec\"\n",
|
| 210 |
+
" OPENAI_API_BASE = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n",
|
| 211 |
+
"\n",
|
| 212 |
+
" client = OpenAI(api_key=OPENAI_API_KEY, base_url=OPENAI_API_BASE)\n",
|
| 213 |
+
"\n",
|
| 214 |
+
" try:\n",
|
| 215 |
+
" response = client.chat.completions.create(\n",
|
| 216 |
+
" model=\"qwen-plus\",\n",
|
| 217 |
+
" messages=[\n",
|
| 218 |
+
" {\"role\": \"system\", \"content\": \"You are a professional astronomer. Be precise, evidence-based, and concise.\"},\n",
|
| 219 |
+
" {\"role\": \"user\", \"content\": prompt.strip()}\n",
|
| 220 |
+
" ],\n",
|
| 221 |
+
" temperature=0.7,\n",
|
| 222 |
+
" max_tokens=512\n",
|
| 223 |
+
" )\n",
|
| 224 |
+
" return response.choices[0].message.content.strip()\n",
|
| 225 |
+
" except Exception as e:\n",
|
| 226 |
+
" return f\"❌ Error calling LLM: {e}\"\n",
|
| 227 |
+
"\n",
|
| 228 |
+
"\n",
|
| 229 |
+
"# ======================\n",
|
| 230 |
+
"# 下载并显示 DESI/Legacy Survey 图像\n",
|
| 231 |
+
"# ======================\n",
|
| 232 |
+
"\n",
|
| 233 |
+
"def fetch_and_show_desi_image(ra, dec, layer=\"ls-dr9\", pixscale=0.25, size=92, save_path=\"1.jpg\"):\n",
|
| 234 |
+
" \"\"\"\n",
|
| 235 |
+
" 从 Legacy Survey 下载 cutout 图像并显示。\n",
|
| 236 |
+
" \n",
|
| 237 |
+
" Parameters:\n",
|
| 238 |
+
" ra, dec: 天体坐标(度)\n",
|
| 239 |
+
" layer: 图像图层,如 'ls-dr9'\n",
|
| 240 |
+
" pixscale: 像素尺度(角秒/像素)\n",
|
| 241 |
+
" size: 图像尺寸(像素)\n",
|
| 242 |
+
" save_path: 可选,保存路径\n",
|
| 243 |
+
" \"\"\"\n",
|
| 244 |
+
" url = f\"https://www.legacysurvey.org/viewer/cutout.jpg?ra={ra}&dec={dec}&layer={layer}&pixscale={pixscale}&size={size}\"\n",
|
| 245 |
+
" \n",
|
| 246 |
+
" try:\n",
|
| 247 |
+
" response = requests.get(url)\n",
|
| 248 |
+
" response.raise_for_status()\n",
|
| 249 |
+
" img = Image.open(BytesIO(response.content))\n",
|
| 250 |
+
" \n",
|
| 251 |
+
" plt.figure(figsize=(6, 6))\n",
|
| 252 |
+
" plt.imshow(img)\n",
|
| 253 |
+
" plt.title(f\"DESI/Legacy Survey Cutout\\nRA={ra:.5f}, Dec={dec:.5f}\", fontsize=12)\n",
|
| 254 |
+
" plt.axis('off')\n",
|
| 255 |
+
"\n",
|
| 256 |
+
" plt.savefig(save_path, dpi=150, bbox_inches='tight')\n",
|
| 257 |
+
"\n",
|
| 258 |
+
" return img\n",
|
| 259 |
+
" except Exception as e:\n",
|
| 260 |
+
" print(f\"❌ Failed to fetch or display image: {e}\")\n",
|
| 261 |
+
" return None\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"\n",
|
| 264 |
+
"# ======================\n",
|
| 265 |
+
"# 主流程函数\n",
|
| 266 |
+
"# ======================\n",
|
| 267 |
+
"\n",
|
| 268 |
+
"def analyze_galaxy(ra: float, dec: float, show_image: bool = True, **kwargs):\n",
|
| 269 |
+
" \"\"\"\n",
|
| 270 |
+
" 完整分析流程:交叉匹配 → 格式化 → LLM 分类 → 可视化图像\n",
|
| 271 |
+
" \n",
|
| 272 |
+
" Parameters:\n",
|
| 273 |
+
" ra, dec: 目标天体坐标(度)\n",
|
| 274 |
+
" show_image: 是否显示 DESI 图像\n",
|
| 275 |
+
" **kwargs: 传递给 cross_match_catalogs 的参数\n",
|
| 276 |
+
" \"\"\"\n",
|
| 277 |
+
" \n",
|
| 278 |
+
" # 1. 交叉匹配\n",
|
| 279 |
+
" matches = cross_match_catalogs(ra, dec, **kwargs)\n",
|
| 280 |
+
"\n",
|
| 281 |
+
" # 2. 格式化参数\n",
|
| 282 |
+
" param_text = format_matches_for_llm(matches)\n",
|
| 283 |
+
"\n",
|
| 284 |
+
" # 3. LLM 分类\n",
|
| 285 |
+
" result = classify_galaxy_with_llm(ra, dec, param_text)\n",
|
| 286 |
+
"\n",
|
| 287 |
+
" fetch_and_show_desi_image(ra, dec,save_path=f\"/home/dell461/ljm/DATA_other/AstroM3/ExampleCode/example2/image/{ra}_{dec}.jpg\")\n",
|
| 288 |
+
" \n",
|
| 289 |
+
" with open(f\"/home/dell461/ljm/DATA_other/AstroM3/ExampleCode/example2/llm_result/{ra}_{dec}.txt\", \"w\") as f:\n",
|
| 290 |
+
" f.write(result) \n",
|
| 291 |
+
"\n",
|
| 292 |
+
" return {\n",
|
| 293 |
+
" \"matches\": matches,\n",
|
| 294 |
+
" \"llm_result\": result,\n",
|
| 295 |
+
" \"formatted_params\": param_text\n",
|
| 296 |
+
" }\n",
|
| 297 |
+
"\n"
|
| 298 |
+
]
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"cell_type": "code",
|
| 302 |
+
"execution_count": 19,
|
| 303 |
+
"id": "d02a3ffd",
|
| 304 |
+
"metadata": {},
|
| 305 |
+
"outputs": [
|
| 306 |
+
{
|
| 307 |
+
"name": "stdout",
|
| 308 |
+
"output_type": "stream",
|
| 309 |
+
"text": [
|
| 310 |
+
"🔍 Searching within 2.0 arcsec of RA=239.5743316076613, Dec=32.91914641623415\n",
|
| 311 |
+
"\n",
|
| 312 |
+
"Processing: allwsie_classification_results.csv\n",
|
| 313 |
+
" ❌ No match within 2.0 arcsec\n",
|
| 314 |
+
"Processing: chandraimage_classification_results.csv\n",
|
| 315 |
+
" ❌ No match within 2.0 arcsec\n",
|
| 316 |
+
"Processing: desiimage_classification_results.csv\n",
|
| 317 |
+
" ❌ No match within 2.0 arcsec\n",
|
| 318 |
+
"Processing: galex_classification_results.csv\n",
|
| 319 |
+
" ❌ No match within 2.0 arcsec\n",
|
| 320 |
+
"Processing: vla_classification_result_g.csv\n",
|
| 321 |
+
"Processing: vla_classification_results.csv\n",
|
| 322 |
+
"\n",
|
| 323 |
+
"============================================================\n",
|
| 324 |
+
"✅ Total matched files: 2\n"
|
| 325 |
+
]
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"data": {
|
| 329 |
+
"image/png": "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X8k5i4iccsop8pa3vEVERN797nfLNddcI9dcc83qmvvrv/5reeELXyj3u9/95NJLL5V3vvOdcv3118uxxx4rN91009061saNG1e/qb/whS9cPdZrX/vaX9n5KL9hGOV/NBdeeKEREXPdddft8zXr1683hx9++Or/v+51rzMiQv+75z3vuea9b3jDG4zv+6v/fthhh5mXvOQl5nvf+95U/XjqU59qfvd3f3dN2+bNm80pp5yyz/5ec801RkTMO97xjjXtt99+u4miyLzqVa8yxhiztLRkgiAwz3zmM+n7jz/++H0eoygKk+e5eeELX2ge/OAHr7Z/9atfNSJiXvOa1+zzvcYYc/zxx5sHPehBa9pe+tKXmk6nY4bD4X7f+61vfcsceuihq2PabrfNqaeeai666CJTVdXq66666iojIuaqq65a8/6bb77ZiIi58MILV9ue//znGxExH/rQh+B4D3nIQ8wjHvGINW3vec97jIiY73//+8YYY2677Tbjuq75kz/5kzWvGw6HZsOGDeYP/uAPVtte97rXGd/3zc6dO1fbLrnkEiMi5uqrr97nee/YscOIiHnWs56178G5CyJiXve610H75s2bzfOf//zV///EJz5Bx2p5edlEUWSe9KQnrWm/7bbbTBAE5jnPec5q2/HHH0/XzPOf/3yzefPm1f/fvXv3Pvul/M9DvwkrB8Ts45vWl770JbnuuuvW/HfZZZetec1rX/taue222+RDH/qQvPjFL5ZWqyXve9/75KijjpKPfexj+z3ueDyWf/3Xf73bv4r+7Gc/K5ZlyWmnnbbmW/qGDRvkyCOPXP317LXXXitpmsof/MEfrHn/wx/+cCrnfOITn5BHPvKR0mq1xHVd8TxPLrjggjW/lvzCF74gIrLfb7MiP/82/N3vfle+8Y1viMjPf+1+8cUXy/Of/3xptVr7fe8xxxwjP/3pT+WKK66Qc845R4499lj58pe/LKeffro8+clP/qW+GbOxPvPMM+Wb3/ym/OQnP1ltu/DCC+WYY46R+9///iIi8q//+q9SFIWcfvrpa8Y8DEM5/vjj1/xK/KUvfamI/Fyw2su73vUuecADHiDHHXfcL9z3/wquueYaieMYfl18yCGHyGMe8xj58pe/XE/HlN8adBNW9st4PJbFxUX6K8IjjzxSjj766DX/7b0p35n169fLmWeeKe973/vk+uuvl6uvvlp835ezzz57v8f+3Oc+J3mer3nGNw07d+4UY4ysX79ePM9b89+1114re/bsEZH/98z6rsIZa7v00kvlD/7gD+Sggw6Sj3zkI3LNNdfIddddJy94wQskSZLV1+3evVscx5ENGzbst49PecpTZMuWLau/lv3whz8s4/H4gJv3XjzPk5NPPlne/OY3y7/+67/K7bffLieccIJ89rOfXf1B4O7SaDSk0+lA+3Of+1wJgmD1GekNN9wg1113nZx55pmrr9n7K/5jjjkGxvySSy5ZHXORn4/tM5/5TDn//POlLEu5/vrr5Wtf+5r88R//8X77Nz8/L41GQ26++eZf6Px+EfbnNWzatOkXesSiKHdG7Whlv3zuc5+Tsix/pX9Kcdxxx8njH/94ueyyy2TXrl2ybt06+rpPfepT8pjHPEZmZmbu1ufPz8+LZVnyta99jco7e9vm5uZERNY8I97Ljh071nwb/shHPiKHHXaYXHLJJWJZ1mp7mqZr3rewsCBlWcqOHTv2KU+J/Fyg+qM/+iM555xz5B3veIe85z3vkZNOOknuc5/73K1z3cvc3Jy84hWvkK985Svygx/8QJ70pCdJGIa0j3feEO/Mnc/rzszMzMhTnvIUueiii+RNb3qTXHjhhRKGoTz72c9efc1eS/6Tn/ykbN68+YD9Pfvss+Xiiy+Wyy+/XK644grp9Xry3Oc+d7/vcRxHTjrpJPnCF74gW7dulYMPPviAxwmCAM5fRKbePPeuke3bt8O/bdu2bc1fB4RhKCsrK/C6fY23oojoN2FlP9x2223y53/+59LtduXFL37x3X7/zp076Z/MlGUpN910kzQaDen1evS9SZLI5z//+bv9q2gRkVNPPVWMMXLHHXfAN/Wjjz5aHvCAB4iIyMMe9jAJgkAuueSSNe+/9tpr5dZbb13TZlmW+L6/ZqPasWMH2NFPfOITRUTkve997wH7edZZZ4nv+/Lc5z5XfvKTnxzwm6CISJ7n+9xA9v5afO9vLfb+EHHnUBQRWbW07w5nnnmmbNu2TT7/+c/LRz7yEXna0562Zu5OPvlkcV1X/vM//5OO+Z3//E3k53/e9ohHPELe9ra3yT/90z/JGWecIc1m84D9ePWrXy3GGHnRi14kWZbBv+d5Lp/5zGdW/3/Lli1w/ldeeaWMRqM1bXt/MIvjeE37scceK1EUyUc+8pE17Vu3bpUrr7xSTjrppDXHuvHGG9ds+ouLi/LNb35zqmMp/zPRb8KKiIj84Ac/WH2Ot2vXLvna174mF154oTiOI5/+9KdX/6zizvzf//t/aVjHEUccIZ1ORy6++GI5//zz5TnPeY4cc8wx0u12ZevWrfLBD35QfvjDH8q5554rvu/T/lxxxRUymUzkqU99Kv33HTt2yCc/+Ulo37JlizzykY+UP/zDP5QzzzxTvv3tb8txxx0nzWZTtm/fLl//+tflAQ94gLz0pS+V2dlZ+bM/+zP567/+a5mZmZGnPe1psnXrVjnvvPNk48aNa/7c59RTT5VLL71UXvayl8nTn/50uf322+WNb3yjbNy4cY0h++hHP1qe97znyZve9CbZuXOnnHrqqRIEgXznO9+RRqMhf/Inf7L62l6vJ6effrq8973vlc2bN8vv/u7v7nN+9rKysiJbtmyRZzzjGfLYxz5WDjnkEBmNRvKVr3xF3vnOd8rhhx8uv/d7vyciIhs2bJDHPvaxq+e3efNm+fKXvyyXXnrpAY9zVx7/+MfLwQcfLC972ctkx44da34VvXfc3/CGN8hrXvMa+dnPfiZPeMITZGZmRnbu3Cnf+ta3pNlsrgZU7OXss8+WZz7zmWJZlrzsZS+bqh/HHnusvPe975WXvexlctRRR8lLX/pSud/97id5nst3vvMdef/73y/3v//9V8fyec97nrz2ta+Vc889V44//ni54YYb5F3vehes272PUd7//vdLu92WMAzlsMMOk7m5OXnta18r55xzjpx++uny7Gc/WxYXF+W8886TMAzlda973epnPO95z5Pzzz9fTjvtNHnRi14ki4uL8va3vx1+xd9ut2Xz5s1y+eWXy0knnSSzs7MyPz//Xx4SovyaUqsWptTOXit573++75t169aZ448/3rzlLW8xu3btgvfsz44WEfNv//ZvxhhjbrjhBvPKV77SHH300WZhYcG4rmtmZmbM8ccfby6++GLaj7129GmnnbZPO3nz5s37PPadjdcPfehD5mEPe5hpNpsmiiJzz3ve05x++unm29/+9uprqqoyb3rTm8zBBx9sfN83D3zgA81nP/tZc+SRR5qnPe1pa4771re+1WzZssUEQWAOP/xw84EPfGB1LO5MWZbm7/7u78z9739/4/u+6Xa75thjjzWf+cxn4Fy+8pWvGBExb33rW/c9SXciTVPzt3/7t+aJT3yiOfTQQ00QBCYMQ3P44YebV73qVWZxcXHN67dv326e/vSnm9nZWdPtds1pp51mvv3tb1M7utls7vfY55xzjhERc8ghh5iyLOlrLrvsMnPiiSeaTqdjgiAwmzdvNk9/+tPNl770JXouQRCYJzzhCVOd+5357ne/a57//OebQw891Pi+b5rNpnnwgx9szj333DVrNk1T86pXvcoccsghJooic/zxx5vvfve7YEcbY8zf//3fm8MOO8w4jgPj88EPftA88IEPXJ3PpzzlKeaHP/wh9Osf//EfzeGHH27CMDRHHHGEueSSS8CONsaYL33pS+bBD36wCYIA1q3yPwvLmF/RHxkqyq+ILMtk3bp18sY3vnHNN8f/Lm6++Wa5733vK6973evknHPO+S891itf+Up573vfK7fffvvq88f/KXzmM5+RJz/5yfK5z31OnvSkJ9XdHUWpBd2Elf/RfO9735OPfexj8ohHPEI6nY785Cc/kbe//e0yGAzkBz/4ATWnfxVce+21cuONN8qLX/xiefGLXyx///d//19ynF9HbrjhBrn11lvl7LPPlmazKf/xH/+xTylMUX7b0U1Y+R/NT3/6U3nJS14i3/ve96Tf70u325UTTjhB3vzmN//CpvI0WJYljUZDnvSkJ8mFF154wL8N/m3ihBNOkG984xvykIc8RP7xH/9R7nvf+9bdJUWpDd2EFUVRFKUm9E+UFEVRFKUmdBP+DebDH/7wahUWy7LEdV3ZuHGjPOtZz9pvsPz/+T//RyzLoulWvww33nij/Pmf/7kcddRR0uv1ZHZ2Vh75yEfSPyX60pe+JI973ONk06ZNEgSBrFu3Th7zmMfI5z//eXhtlmVy7rnnymGHHSa+78vmzZvl1a9+9dR/Z7lly5Y147T3v5e85CVrXnfGGWfQ1+3979prr6Wfb4yR4447TizLgr/1HY/H8qxnPUvuc5/7SLvdlmazKfe73/3kTW96k4zH4194TKZlbyWlvf/5vi8LCwvyyEc+Ul7zmtfA30P/unB3xu3SSy+VZz/72XKve91LoiiSLVu2yHOf+9y7VVzhn/7pn+TBD36whGEo8/Pz8pznPEduv/12eN1FF1202i/btvf7Z0Xf+ta35OSTT5Z2uy2tVktOPPHE1ZjSO/P1r39dzjrrLDnqqKMkCAKxLGu12Mdd2dfafOtb3zr1uSq/XujfCf8WcOGFF8p973tfSZJEvvGNb8ib3/xmueqqq+THP/4xTZv60Ic+JCIiP/zhD+Xf//3f5WEPe9ivpB9f/OIX5XOf+5w873nPk2OOOUaKopBLLrlEnvGMZ8h5550n55577uprFxcX5X73u5+cddZZsmHDBllaWpL3ve99csopp8jFF18sp5122uprn/3sZ8vnP/95Offcc+WYY46Ra665Rt70pjfJD3/4w6mDJx75yEfK3/7t365pu6t09drXvhY2ZhGR3/3d35UgCOSYY46hn/3ud79bfvrTn9J/y/NcjDHyZ3/2Z3LYYYeJbdvy1a9+Vd7whjfIV77yFfnSl770C43J3eUtb3mLnHjiiVKWpSwuLsq///u/y4c+9CH5u7/7O/nABz5wwLSq/27uzri97W1vkw0bNshrXvMaucc97iG33367vOUtb5GHPOQhcu211+63NKSIyD/8wz/Iy1/+cjnrrLPkrW99q2zdulVe+9rXyqMf/Wj5zne+s+Yauvjii2XHjh3y0Ic+VKqqWlPG8c5cd911ctxxx8lDH/pQufjii8UYI29/+9vlpJNOkquuumq1wpiIyJe//GX50pe+JA9+8IOl0+lA6cm78vSnP11e+cpXrmk79NBD9/se5deYev4ySvlVsK/KQ+edd94+K+Jcd911RkTMKaecYkTEvOhFL/qV9Wf37t1rqvjs5ZRTTjGNRsMkSbLf92dZZg466CDz6Ec/erVtXxWR3vKWtxgRMV/84hcP2K8DVV3aH3v/jvev/uqv6L/ffPPNptVqmUsvvdSIiPmjP/qjqT73Va96lRER85//+Z/7fR0bk7vD3kpKn/jEJ+DfFhcXzYMf/GDjuq65/vrrf6HP/++GjdudqzHt5Y477jCe55kXvvCF+/28JElMt9uFSl3f/OY3jYiYc845Z037nf8++pRTToG//93LySefbNavX2/G4/Fq22AwMPPz81CR6s6f+Td/8zdGRMzNN99MP/furDHlNwP9dfRvIXsjAlkm8gUXXCAiIm9961vlEY94hHz84x+nxeV/EfZmNt+Vhz70oTKZTGRpaWm/7/c8T3q9nrju//sFzd5f393170hPPfVUEfl5vvR/JRdccIFYliUveMEL6L//4R/+oTzucY+Tpz3taXfrc/cmkN35XBlsTH5VzM7Oyvnnny9FUcjf/d3frfm3m266SZ7znOfIunXrJAgCOfzww6EGsMjP6wq/8pWvlHvc4x6rv0J/0pOeJD/+8Y9/5f0V4ePGssc3bdokBx98MP2V8p35wQ9+ICsrK7C+jj32WJmdnYX1decUtf3xjW98Q0444QRpNBqrbe12W4477jj55je/uSaLetrPVH470dn/LWRvlZl73/vea9rjOJaPfexjqyXoXvCCF8hwOJRPfOIT8BllWa4pSbev/1g29F256qqrZGFhgd4sq6qSoihk27Zt8rrXvU5uvPHGNb9q25sPfNdCDHv//665wPviq1/9qrTbbfE8T4444gh5xzveIWVZ7vc9Kysr8slPflJOOukkOeyww+DfP/jBD8q3vvUtede73nXA4xtjpCgKGQwGcsUVV8g73vEOefazn01/jXigMflVcswxx8jGjRvlq1/96mrbDTfcIMccc4z84Ac/kHe84x3y2c9+Vk455RR5+ctfviZ6cjgcyqMe9Sg5//zz5cwzz5TPfOYz8r73vU/ufe97r9lkfpm1dHfG7c787Gc/k1tvvfWAv4re1/ra23bTTTetqZI1LVmW7bd4yPe///27/Zl7+ehHPypRFEkQBHLUUUfJhRde+At/lvJrQN1fxZVfnL2/jr722mtNnudmOByaK664wmzYsMEcd9xxJs/zNa+/6KKLjIiY973vfcaYnxdcb7Va9Fed+4uGvPN/BypM/oEPfMCIiHnnO99J//3kk09e/axOp2MuvfTSNf9+2WWXGRGBmMsLLrjAiIi5973vfaBhMi972cvMhz70IXP11Vebyy67zDz3uc81ImJOO+20/b7vve99rxER87GPfQz+bevWrabb7Zrzzz9/tU3286vCj33sY2vG7cwzz4T52cuBxuTusL9fR+/lYQ97mImiaM3xDz74YLOysrLmdX/8x39swjA0S0tLxhhj3vCGN6yJKd0Xv8xaujvjtpc8z80JJ5xgOp2Oue222/b72sXFRWPbNvza+qc//enqMbdt20bfu79fRz/oQQ8y9773vdf8qjnPc3OPe9zDiIj56Ec/St93oF9HP+c5zzH/9E//ZL761a+aT37yk+aJT3zifh+XKL/+6Cb8G8xdc5/3/nf44Yeb5eVleP3xxx9voigy/X5/te3MM880ImJuvPHGNa+9/vrrzXXXXXfA/+6444599u/zn/+88X3fPP3pT6fPio0x5sYbbzTf+ta3zOWXX26e8YxnGM/z1tyg0jQ197rXvcymTZvMF7/4RbO8vGy+8IUvmPXr1xvHccx973vfuzlqP+eP//iPjYiY//iP/9jna44++mgzNzdHn2Wfeuqp5rjjjltzXvvbhJeWlsx1111nrrzySvPmN7/ZdDod8+QnP5lmMB9oTO4O02zCD33oQ1c34TiOjeu65k/+5E9Mnudr/vv85z9vRMR8/vOfN8YYc+yxx071Q9Avs5buzrgZ8/Ms8NNPP904jmMuu+yyaYbIPO95zzOe55n3ve99ZnFx0Xzve98zD3vYw1YzpHfs2EHft79NeO8PiS996UvN1q1bzW233WZe+MIXrn7mxz/+cfq+A23CjFNPPdW4rktz3pVff3QT/g1m7yZ80UUXrd6oXvziFxsRgVD8m266yViWZZ7+9Keb5eXl1f8+97nPGRExf/mXf7nm9UVRwE2Y/bevm+EVV1xhwjA0p5xyiknTdOpzesITnmBmZmbWfO5NN91kHv7wh6/+kNFsNs073/lOMz8/b0466aS7MWL/j2uvvdaIiHnPe95D//173/ueERFz9tlnw7994hOfMK7rmmuvvXbNWMr/L7otLy+bLMv2e/yPf/zjRkSm+pbLxmRaptmEN2zYYO55z3saY37+Df9A31gvuugiY4wx97rXvcxjHvOYA/bhl11Ld2Z/41ZVlXnBC15gbNuG35zsj9FoZE477TRj27YREWPbtnn+859vnvzkJ5sgCPb5zXt/m7AxPy/40Wq1Vsft2GOPNf/rf/0vIyLma1/7Gn3PL7IJ7x2TvT8cKb9Z6Cb8G8y+7OizzjoLbryvfvWr93tj3bhxoymKYvX1v8yvEPduwCeffPIBjei7cu655+7z28fWrVvN9ddfb8bjsdm2bZsREXPeeefdrc/fy17reu+v5u/Ky1/+ciMi5vvf/z7824GqSImI+fSnP73f4//sZz8zItNVT9rfmByIA23C//7v/25EZPXXsePx2DiOY84444x9fmPds2ePMWb6b8K/qkcbxux73PZuwJZl0b8KmIalpSXzve99z+zevdsYY8x97nMfc+KJJ+7z9QfahI35uX39/e9/39xyyy3GGGP+8A//0DSbTTOZTOjrf5FNeO+v7K+44oqp36P8+qB/J/xbyNvf/nb51Kc+Jeeee6783u/9nhhj5B//8R/lnve8p3zwgx+E13/2s5+Vd7zjHfKFL3xh1Tr+zGc+s6Y4+b7YW0B+L1/84hflqU99qjzqUY+Syy67jMop+8IYI1dffbX0ej1aUeiggw6Sgw46SERE/uqv/kqazaa88IUvnPrz78xFF10kIiIPf/jD4d/SNJWPfOQj8tCHPpQGmpxxxhlywgknQPuJJ54oT33qU+Xss88+YBDKVVddJSIi97rXvfb7ugONyS/D0tKSvOQlLxHP8+RP//RPRUSk0WjIiSeeKN/5znfkgQ984D7rPYuIPPGJT5Rzzz1XrrzySnnMYx6zz9f9omuJwcbNGCMvetGL5MILL1yVxH4RZmZmVv8m+F/+5V/kJz/5ibztbW/7hT5rL0EQrK6F2267TS655BJ50YteJFEU/VKfe2cuvvhi8TxPjjrqqF/ZZyr/fegm/FvIzMyMvPrVr5ZXvepV8tGPflR6vZ5s27ZN3va2t9HN4/73v7+8613vkgsuuGB1E37AAx5wt4/79a9/XZ761KfKhg0b5JxzzpHvfve7a/79iCOOWC1w/pSnPEWOPPJIedCDHiRzc3Oybds2+fCHPyxXX321vPvd717zJyhvf/vbZcOGDXLooYfKzp075Z//+Z/lsssuk4svvnh1UxYRufXWW+We97ynPP/5z1/9U6yPfvSjcumll8opp5wimzdvln6/L5/4xCfk4x//uJxxxhly5JFHwnlcdtllsrS0JGeddRY9zy1btuwzKemggw5aM8bnn3++fO1rX5PHP/7xcsghh8h4PJavfe1r8g//8A/yiEc8Qp7ylKesvvbujMnrX/96Oe+88+Sqq66ic3pXbrrpJrn22mulqqrVsI4LLrhABoOBXHTRRWss4ne+853yqEc9Sh796EfLS1/6UtmyZYsMh0P56U9/Kp/5zGfkyiuvFBGRV7ziFXLJJZfIU57yFPnLv/xLeehDHypxHMvVV18tp556qpx44oki8outpbszbi9/+cvlggsukBe84AXygAc8YE2yWRAE8uAHP3j1/0866SS5+uqrpSiK1bZPfepTsm3bNjn88MMlSRL5yle+Iu985zvlJS95yZrjiPzcHL/hhhtERGTHjh0ymUxWE+GOOOIIOeKII0Tk53/69KlPfUqOPvpoCYJAvve978lb3/pW+Z3f+R154xvfuOYzd+/eLVdffbWI/D9r+gtf+IIsLCzIwsKCHH/88SIi8jd/8zdyww03yEknnSQHH3yw7Nq1Sy644AL54he/KK9//etlfn7+bo+z8mtAvV/ElV+Gff062pifCzaHHnqo+Z3f+R3z1Kc+1fi+v19x41nPepZxXfcX+pXnXg70a9qrrrpq9bVve9vbzDHHHGNmZmaM4zhmbm7OnHzyyeazn/0sfO55551n7nnPe5ogCEyv1zNPeMITzFe/+lV43c0332xE1hZIv+aaa8xJJ51kNmzYYDzPM41GwxxzzDHmPe95zz6fQT7ucY8zzWbTDAaDu3X+QsSsb3zjG+bUU081mzZtMr7vm0ajYY488kjzxje+cU2Qw90dk1e+8pXGsizzox/9aL992vvr6L3/ua5r5ubmzLHHHmvOOeec1V+T3pWbb77ZvOAFLzAHHXSQ8TzPLCwsmEc84hHmTW9605rXLS8vm7PPPtsceuihxvM8s27dOnPKKaeYH//4x9MM2T65O+O2v1933/XXxccff7y5623v05/+tHnQgx5kms2miaLIHH300eaCCy6gMuH+1vidf53+k5/8xBx33HFmdnbW+L5v7nWve5m/+qu/MqPRCD7zrnN05/+OP/741df9y7/8i3nUox5lFhYWjOu6pt1um0c/+tHU3ld+c9AqSoryG8hDH/pQ2bx5M/0bb0VRfnPQTVhRfsMYDAaysLAg3/3ud+Xwww+vuzuKovwS6CasKIqiKDWhsZWKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotSEbsKKoiiKUhNTJ2Yt3HcB2rrZBmjz8xa0VVEGbTvT/4S2dQsYy2f3PWjLl7EOrCN4jPke/ozhVljAPjf43hWvgLZ+hQXrJe1BU5Tjeexs43k0Y+xLu8J4v0TGeNg2Su1RJ8RjDLHPwW7+s1eVYURhPkOWyPoc+1Nuhza3wNeVVQfabo0x2rJw29B2/5VFaBuFONbbEjznzGBfIj+GNs/FOek0cLxmPVyDHbKOcvK3B7clOE87BjPQ1nKx/nLXxvUxO7sEbSvZT6FtW441kZsx1srd1Mb5MC7W+r19sAxtvteEtrkIzy0d4zhn5HpwJzhvB4V4LwrtBrTdOsL+9UO8rttzeL6+wXHubMcaxrcvDKAt2QxNYo/x8+ZHeK8cLfPaxfasA22uhfO+qcD3d0q899idWWjbPsL7TEHiRoMAP29rju/dE+F14w9xvO6Z4jhscXHNLBu8rm/CS0mGXVyDJsZ5d3YOoa0T4wW7LsL+RQ0cg6GF1/+Ptt6IHbwL+k1YURRFUWpCN2FFURRFqQndhBVFURSlJnQTVhRFUZSamFrMMhY+iJ7YKAtUAX6k6+BD+yYppzkhApI0etAUVChhCBEa4hQfslcRPsmPXSIuOCiEtCuUU2IHZYHUQcHJWPjeMsW2PMeH+2JjW8vDY7Qcch4u/pxVdnHeRERGRCLy1+F4+eg9SL5ClpJBGSLy8HX3EBQf8hIPMvZQtAnI+G/w8PziAgWTqsD3OqQvXoYyWVriYO2usH9lifJHz8Ux8Gxcb8vLd0DbyMfjNrr4eZOYXIdkfuctlJKaRGwbEMnG+HgR95dRdjN9XOfhDI7p4iwRA0Nc++mkD20zKbn+yQk7TTyGj46dRMu4XvrpTdBWjPEY1jKuoSLF8RsO8dwin9eMHg6xkyMbzyVo4fU6zHBsmjHeQ60SZUjL4HvzDK/rFrmWuuRemzTI2BDJaYeLayuOcU7cFMewsYTXXFbh+LkhWR8G12pqcF8qcyIMk71vGvSbsKIoiqLUhG7CiqIoilITugkriqIoSk3oJqwoiqIoNTH1k2THRYGjrLAtK3BfZyKFaeLD7qRECcBxUBZgklNAfpxYHOMD+olBISEm8lKXiGNNG487zsgxiLnUtIk0Rc4jJcewAxQh/IDIVTnKPSsYQiQjbBIREYtIWJ0ZlCGsEco3JIhM8oJIKySlaqbAwfaWcX3c3sDXBRaOQ4MIObHguE5I/+yyi31JMLlqTOSUjEgdjovnu6FJhDWfpBURWWtcoYwzSTBdyFSYZjcv+F5ZwQSjsaDEkm/ANe2EPWizXFxdBUkhGpc4BjmRv6SD12s6wdtWMiQCIkm4y0JcL1mJ89Yg12sxswfabCJHmSH22RG8tqqcHNcncyQig2WSMEaSyPZYeL+sSkzWmhvh+AdEUKsc7LfF0ufIfC5M8FxuJ2LWoIFzsttgZ6oBXiOdGF/XDXBfykNcM3YTj+s38fOsGOWvjPQv83HNTIN+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamFrNYklO7RPGhGqJcNc5X8MBENmo1UAKIiNBQGHygHsziA/9hHyURw1KSSpIGFJL0HiKOlDFKCk2S1LUxRbFiZOPnjUJsy1okJSkiUhc57tDBKU6JCCEi0mgQCSsh6TM7cY7LGMc1Z4JESsoHppg0Fa6g5BC5G/HzKiL42Ng/28P1Gwi+tyTJOkWF45pOsM2QdRQS+WOQYElG28Xxa8xiqlQ1wWPkJE0paKyHtoNIJc47UpSNhsQv8UpcR06KL+yE8/jegIhyRGj0hkT4IaU0Z3soPgUtvF6rBI+bE3lxRKS9gghEUuF7qxGOQTnCOW9GJCXNw2vBrm7H44qIa+FrwwDLEbrkvlCWeP+tYhTyClJ61Lg4Dk5ArFWyF6RDnON+G9dHQe5RY3JfNaStRdZl5KJE6AmJiyOpd5IS4SrDtsQl8qKQC2wK9JuwoiiKotSEbsKKoiiKUhO6CSuKoihKTegmrCiKoig1MbWY1SPbdZcIHClJgXJIglSZoajUHhMZh/ycMCEpSXaTSF05CgQtw5K/8BhjB6Wd1CFCmGCf51Psy4YRyhE7SCzXqEHkLxsFh2SCokaRYv+GBuUej5yHiEg7x89sEbkiHuP73QhFIIcIZeNkO7StkLFOOjiuXkpK7JF0pzJCCavj4TE8KmbhPOU+KedIynj6RByRCvvSJ+lCBbmWQot8HhFR0oIkmBF5qWnjddhatwBtY8E+VzmerzXA8xAi2TgRXnMtMi6dAYqUUY7HsFp4j6mamBTlkYQ1H91DGZEEqEkTz6Mb97B/Nh4jJSJPk4xLu43XemFQlBMR6XXxM8cu9jsga99UKGGFFqZPuR4R1BwiellESrLxWh85eH4rAUqT7QKPsb7C9WZCnGMht7KlFMel7OPEN2y8n3gkCask5VKNQ8og5nhu06DfhBVFURSlJnQTVhRFUZSa0E1YURRFUWpCN2FFURRFqYmpxayZnKSLOChSlCTxac6dgzYzJslEA1Iyqo3SSR6hYGKR0nJtC22XLqkUNiRixu4UH+SnMUnC6RMzgEhTI8GH9jkp0+gH2BbmKFa0JkQcK7AvK0Ric4jvIyLSSFCQ8Ehb4mO5v7KBgo/t44Ecci6xS1LW5lHmaZNEpSLEdWQ8Ik2Q0nSew5JwSGrYDMpa4TyKT40xrv24j22+i+8lV5eMmExC1rSN7p3E0U5oW5LDoK1DUpecZTzflSUU9Bo2nkduSIrehMg4ETkPIp1JggJRXuG4VCStKPXJ2iUumV3h6yLyeQERkmbaOAYZEYMckrblRfjeMRlTEZGqQ5LSxni/LIZ4fbljPGmXlKH1ibDp5SwlkAhIFbknk1KLVb4N2sIC+3KIh+tSFvC+s2eCgu/irj60OaTP3YhIqyS10ZB15BpSdjch1t8U6DdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmtBNWFEURVFqYmoxy5AST313CdoSF82nluAD8I7BB+9LOZZ4M23SxYD87DAkCUasDKKD0tTEIRIWOmdijTEdx8uxf5MS37w7RInCIpWvGiWOX3uEskYrJmlPDWLoNFBmMCQ9SkSkTFHqmBgcw4mH5c0mOZ5MVBG5pUSBY0RSrwbEd3PXoaRDHCyxiLCSpUQwsXCsjUvmqcQ1k5FSZqaFgontoJTYSfAY8QqeW5Fhm7OA660i8qLjo7DyswSvufUZmaMhHreFpysFK4lJUoiSDKWktMAP9HyShEcS6Txy+adEHI0NjvOEpDN1Umyb6+N7R12UcVwbrxmHpC5NJniMFSLo7Ql60CYiQpavZAmOq7WMx27EOIamIslm5FbrG7w3ukSCFRfvE6XBa312gIJf0yZpdqRcYkaM0qIgZVAtPEa7iWPQmsP1tlzhdVNYuLYiIrsFE3KRTIF+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamFrPshQ3Q5mUknYUk5uTkIXYaoBSTGHxQHkX4sDudYKKPLyggTUi6UE7Keo1JEo5jUJoI3R60NYixktsorA3Xo8zUsfBnIG+EnzfahZLIIEWBwJtFOYLV+jJMrBCR1CaJT0Ruiysc15QIF40Aj91uoTw2Lsn5EenEXUC5pTnEc5mMUIxbTImE1cREn5CcW3M3KRtJ5I+VBklU6q6DNoeUtbSWcc1EPopeXg9llyzFvsyRRLWfxX1oG/fx3A4xeFvozeC8jUji2NjCdZl65Bom0tkGUvqOhK6J8XBdxeRWVpFyk4FL5K8Y+5yQEp6jmXlsi8maJIlZJDBLRhPsc1awa5inY7VIulMmOJ++h2vGxeEXk5JUP1yCUhLJiZUUzBK8Dg8iMqQ0cBzGRNZaHuI1Mt6DpR+7ROZrk9KoZZsInEQiLMm9yCblKsltbCr0m7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpN6CasKIqiKDUxtZj10wQf+M+SpJlmjE+ngw6KAbeMMOmkuQlTUpIJChJWH487IlJXwZK1KmxreiidxES4IB6VRF00F8IQ+3JLickz7RTtiDJGCWBPSpJ/miRZK0CZwR9uh7aACDAiIiskGSYNUCgrSJlHP8GlFDXwvSMiTUWkzOB9SPrXrl23Q5sMUSZp+lgOsuxthLYlUkItIFJNK8Zx8cncNXxc5ykRn4SIQEGLXIotvB5sMh+dEUqJhxQ9aLuDpNmZDq6ZxQznN6nwem10MYFrYoiEOexD23wP3ztLxrlBrtddBR5jTL5P2AHKlRGJqfNIcp1hslC0Gdp27NwBbV1SkrXd6UFbSa5rn9w/RUQ2byBiXIblKosOkeB2obwUZHh+TQ+vh4qUFO03ccD6i5h22HFJecMVnKeVAq+5vCIJckSQkgn2xSLJdWUD+zImpQdjlujloAA3KNg1oolZiqIoivIbhW7CiqIoilITugkriqIoSk3oJqwoiqIoNTG1mLVC4kA6pAyaNca21EEZJ3FRTolTFDM6+Pxbun4P2rbuwjQVZwMmIjkRSjvJCEUPlpzk5CjZxBPsoEVKI3Y9PC5xYiTLcFwGETFH1qGgY/VwOhfw4yRfJHUaRWRIkmYKFyUHq8Cf3SL0HiQxRDyzcB3ZTNYipf2cDilvxpK1SKKP7aNc0Q5QaApIaTSXlOfzfByDnEhdfoTjNyyI1IXLQxyXXEtLRPpJUXIqxiiJzG/A62too9jm9XCsbJcINaRkZ2FIbckWfp7J8bgFWVcZGfsJSXYjlQLFc3EdNALsi2Njn5Mx9q+KUbi0bHIdNvDzDJE1F1rkehvgcUVEyiUUwLwekT3X4XobTzAlsDXBPnoVKa2YoxC24pNzJtdmvA3vyTsKclzBzwsylAitEc57ZeG45m0sHzomkmg5wPU7b4hoS+LAsg6+bjJHFuEU6DdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmtBNWFEURVFqYmoxa55IBBURKXbnKI6UezBNJVhHHnbb+LB7hSTmmBylk04DBY6iwpJxuUHRICXltebaKBqku+6Atv4ySVjZiJZSj5RfC0vsc0xqtwURyiRpgIKDTaSnTo+ICxYKGCIiS2P8TJfEhJWk9KPxUUpYKUkyVIDn3CaSU7si66MiZdBcFFl8j6QnkTJtoeDnxaPd0DZ0cR21ScLVUh/f6xQkRYuk7bDSaOkE59Ow68FBARF7LOLneNxZkjQnJPXKhHjcVHC9zKQ4v10HryW/JKXqBNdLQcphjh1sqwz2bzxCkbJKcB3MpPi61gjHflZwfj2SMud08HotHZLAl5H+kbUhIjIiY+1GWFpRKnJfMNgfz+D5VURGXVomYlyIn9d1SVnFGBO9FonkNJPgWmiURJDyetC2EuL5LlZkL9iDY90l0mqbyGkZuTYLl5TODIlAOwX6TVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJqYWsyK99yGbdV6fGFIyhH2MTmll+D+70SYYCTtddBUlSgvzZB6ZJMERYqyRPnAkFSoksg9zgy+NyaV6goPZRzijUlm43mEM/jeDUROWckw2alM+9A2WociWvsgTJQREQnvQFPBKbDjNhFj7ArPZSUnog0R1FKS9LXkknSiEtdWZOFxO02cz3iIIkqeoL40jnfhMWZQ5onauFZtkrYTJ3genR5eN2WO14hF0qfaPVwfGSmNOCkwJckiKUQdMh/DPq6t2JAUshZKLO4KzkdzSEpsErGlT2Sh3WRdOTYRjcj1XxBJaWxQfPJIacQeWfeHFChh9iM8jzzA+LOclM3LtuFas4gsKCJibToE2iYOrkGPiKIL5D7dCEgZP8HrS0pyHQ7xnN0eSbMipTgdIhvaNkprhUXiBBtkbMh9uphgIp0hyYZChNxFEnqVE6FxUpDzmOD1Pw36TVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJqYWszqdPGhcxFjmxstQJvt40Nsv40pJJ6PokFp96AtNSixxCE+yLddbGumeNwyQ4GDpfc0DkIRxSZlEAtyjEmGYxAz96CDAoyXo2jgDlCemZCydD8b4M9ZcwGW9RIR8Ru4HGZWUFBpkASkUYp9zNGpkSEpqzZpo2x0e4SDMxujkBN6aFK4ZN4nJY5NRtJxjItrIcApEcfgcScJzvuAlBR0fbxufNJmQjxGEuB5mIrYgUTSMyUma2UOzm9mkRKlJIXIIglrMsB17hY4zk1SWnKTj+vPTknqHUnMI36OBDZJ2/JwnDNSpnErkXEeVOF78xau3a0FmfMYxy+smGDGxSwJSInCFZJIF+NF12bClY9zl5HSmSEpPZjneA2TKp6SzeJ8HmyRJKwI+zchqW2LJd7zHJIgt8HBPockzcoQWzZrkH1ugq9r7cI2PyY3iinQb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GLWYDcmsaR7UEBos2goUr6ucshDbCJcmBiPKxaKKEmIQkhQodjSyLHNIeXcbp7gcScNUmZQ8LhejvJMXOAD/4mNw28RKSYtUMBwXRyrZoTC1Z4Yzy25gxW6E7lnA9O1fCI0uRWKFCYjKTpEPLEEBS4hpQyZDdUdo7RiMhQ4BkQSGw9wXF1S4m22ifJSt01Slhw8Xy/HsW55mJ5EXBKxuyj4VGTt796NKXCHzG6AtsZ6lKGWJrj2R2Sttruz0OYGOPZ7duA6ylJSOrOHwmUREQFR8LreRMtukrKKpPTlSomCjkdSvuImro1+hmNf7MYx8AL8vGQRk7BaOR7joI0HQVte4HyIiKyMUUa1x7jOI7IuU5KK1icS55gkVwUspYqIZwkRuMo2vvfQCtfCwMHPWyLrMiOlWrsk2SwipRFDshayJr5u5BHBt4XrLSLT1JmQsqBToN+EFUVRFKUmdBNWFEVRlJrQTVhRFEVRakI3YUVRFEWpianFrGhAyqA5PWzziahgUGgqh6T8WopPu5PJIrTNzqHs0iKpJgERiLySpHyRFJdOhX1Z2oV9cZtE1iJyWuKhhBG4KOPkRPRybZJa1USpyKlQrLLHOAbpkMhRIlKVKMaMSChS30IBbExKWGYlCk3tENvChEh6Ja6jKMbxWiaCX17gefQS/LxOhmPYXEdkssYI2hJSyqxJ+tKoiChj4dofpijelAOSlLYL12pK5KVxG1+XzPSxfwOUcWbJuswSkhBG0sBiHBaxE7yWdgd43eQezlvLxQ/cQK7rxhj7NyxJJB1JvWp5uJ4DCyWbgeA6mCxjelQ4wte1Gyi7OSEeYzTgYlY63IOfSYRGi5SD3U0SwSY2EQErXJezLo5r18V13ifi2Zhcr4XB62E4xuPmBR634+I6nyHz5Bm8blJyT8hJecNOB9eHQ9pyB/uX9/E8pkG/CSuKoihKTegmrCiKoig1oZuwoiiKotSEbsKKoiiKUhNTi1lzGT7wdxsoNFglPrAuSLJLr4MP8mNSymxngg/PmxbaQt0hft4cST+aEAljJylB1yXl+sIUpZ0uSZSpSJzKdpLO5BMBJh7he0MySwEZZ3sJxYD2BM+3UfByaYWDQsm4jT+nDUm5v6qJspwkRF4iqUitPdjvJhGBtlZ4LkskKY0sIzk4x/fOklKcyRA/b2sX128/QSFno7sR2so+jqnTJALiGNOnDvZ70Lbh4PtC284K1/kNpJymmG3Q1CpxfhsDFJpiIrE4RML0QzKmQsogdvB6mCwQ4WeC5evCZezLLEnMqkgC32iCcxlW+LrWCMWxcYFpZf0dmKzVC/H66jp4fewe4OctLqKAJSLiCK6Z9bNYNnZA0rF2udif0sf7m0/KLZYpKZdIylp6AzyuW5L7eYDXzbjCsbZIApdHBNWIlEEMZ1BQTXO875i4D22jW3bg523Czxt4uAbtgJQUnQL9JqwoiqIoNaGbsKIoiqLUhG7CiqIoilITugkriqIoSk1YxhiSiYRsOvRYaFsptkJbFmDyz3wPpRhvRJJYchQzCnz+LbcsoyxQzKEU4y2QlKQuijf2EAUJl4hBaYKCg9VFKaYiJbyOirG8me2jxLItwYf7Nxco91QtHKuIpAa52/F8G+56aBMRuYNIOjH5MW22jULZAkmQMksoreQV9juzcQwLwbmbhDdAWxqjRLTQxHSidVEP+1Jin3c7KO4MaJITSifrS5SNzAQvr1tW8Bj2RpyT3gyOS76I15c17ONxM3KMyRy0RfM9aIvJGBiPCGYWjn0+QMkp8vC4YQdll9LD+VgeYEqdnZI0JUMEM1KuzxAJqCAlN6PmJnydjce4g5QtTJbwPLbIOmibNSgaLdsoBomI9A/Bc07msI+B3APfezNKf6GDwlt3lpRvTHD8DSkHG0Z4Tyh9Uj5wkZRVDMjnzRPhaoWk7S3jGmz0sLTnCnGQx7txnW8g6YlCEriWurgHLYek/O1/9vHz7oJ+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamTswiISnSDsjDc1Kyq0HCeypS3jDP8cF7EKCgc2gXj2ELKaW3TEoojjGxpXSxgxNSSqu0yXCNiDmWopgxHKOsNergz0A7SDk846D0MGdwXAIHRYhJA6WiRLiL55PSeW0y8XMOthki6Qx9krJE0pNmSRrQjIVj/eNZlJf8FSIMkRJ2SUySl9q4Zg6eQYloV4rCxe7dmGxkCSu/hsdY6GB6UhiRpKkEz21XH0UgL8V13iaXdjSDbRkp8TYc4vlGAbk2fbxunArXtEfuHS5Zg+M+HteLcW1EHl4PjR6KXibE+eiPUDSKSULYjEVqMro4Vu31pJQeSaiKyX1i7OKcRzOYTCgiUrXw2OkynssIb2/SyMl92sZzZuVlS5bMZ+H4pwbXdGnhWpgNiFBa4hwXW7EvniESVhfnfeLg9dAfoZzmkVKQcYbz1PBwraJqLOKTa30a9JuwoiiKotSEbsKKoiiKUhO6CSuKoihKTegmrCiKoig1MbWYlaUo7cw0cA+fs1E2IJXvJHXxAf1SifKMkIfxYYrHjQb4QL0koteElBnMN2JfJqRsFivd5qR4cgFJ9EkW8VH+jgIFgp1tPN+AlB1zJ5jy45Hj2kSAK3KcSxGRVoxizLyNkkmDJGstkZVkSFm1wEKZp1ehhLHex3P5v+S48ySpZ4FIP2mGxkpC1kdEfJyZAk/OuD1oWyRCk2nifHZcHJeOwb64gmPVibAvDrvmYnzv7mQ7tIVWD9q6pOymW5LylSmOacHKFhIJyMlwXaZ9Is8wgcjDcxuQ/hUlucfkOPaTjMyb14e2rMTzXddFkc9v43EHGS6sCRHbZlv8e1FAgpxmR/j+jKyjqI3SVEYS7pgI2CDCYBhhklu/wH6vLBOpboDzvpGUHqzINTzI+9AWV3gvyxt4vo0W3rutCY7f8A5MTwwF59Ma4nG7Pt6LpkG/CSuKoihKTegmrCiKoig1oZuwoiiKotSEbsKKoiiKUhNTi1kdIelHGQo1S2OUK4SUfauI5FSSBC4RIgY1UHKqhviQPSBlqbwmPmRPIlJSjJxblRHBpCDWWYLvdQsUOFzyOsslCVyEcYVihUXK+nWwSZwE5QgRkTzFVB67jeM6ClBAyAzOU5uU9uuRBJ5SUHLYxcrpJZgmZEqS2uThz5bNCPuXhTh3TklS1pZICbURjv/6FkkSIldYbPC9K5M+tFkWrsu2g2JRSZK6JiOUbNxDsC+tFMclLPHaTHJcSJMW9i/v4OcNxtiXyS2Y/DXXxuvVn0NpJw/wGOMYx9TPcKwaCa7JIicl94jIJ3ML0GQMKdNK5s3tYFtKkvp2pZjEJiLSIdKUn5K0Lh+lpMJDQSq1cE0bwTEMfLxfBh6RZRNyb1zBvWCS4FjnG/C+H3TJXjDG++UKKfNqyPoI57GU5GA7Jo51FnD8XFK6cbgbJeIowetmGvSbsKIoiqLUhG7CiqIoilITugkriqIoSk3oJqwoiqIoNTG1mLWRlKBKSfLPzRN8UG6HKNRYNu7/rQYRfoYoFUxIktByhccNQ/y8dhfbElJKz7dISUFS1q9DxqWsUHASB8WFOUNSuUqckpSIN4mFfbYtlIrW2ySdiXyeiMgi+gyyJ8T3D0htOidDkaKV4wc6BY7DoqDAMfRwDA/yManHrfCcM5JEJkS4cknKT0DGJiDHaDVwnsomikW7KhRghhUp40d+HvbJ+nBJ/3wionk97EvfIoJUTpKrSArciBy38Em5xA5J2yLCpZVj/wpSPjBv47kZct9xWIreBNvY6wwRs6oCxcDMQrNtZRFlIWdE5q2N5VddD8c0xY8TEZFxitdNSlLCpElkuQhf1whRKGtX89BmiDwaT5agzUvxuOtJSVF7DtfMyMPEsj65F9ktbIwyFKn6JJ1stAeFt4TsLZ0G7lVpgvtN7GFfShvX/jToN2FFURRFqQndhBVFURSlJnQTVhRFUZSa0E1YURRFUWpiajHLZiXKfJQrKlJazu7gw+6qIHKFhT8TlCS5Kjb4oDzaiMeQJj4oz3osbQeFFYskTRnygD5zUK6IRyh1uD629Rwc/iDHMVjGw8pOFzs4IilTiYXHsG1Sr09EijbO3YSUnCwKHEO3JIlURCxaIaUMx0R4y4jbdkiFKUZOGwUTy8V5t5ZwjrukrFqzgeuymMFxseZQCLl9ERN4ikWUTlIyx84sHiNqknMj14ProfzVnetBm5fhuCwWeNxlkjRXWpgG1KxQbAn6uLYKUj4wJPNGwpQkJ+UmAyIphSnKX0bwdWOy9iuSnNZq4XWzK9sGbTFJn/MSvBYMKY06jskJV+RiFxE3xOQwK8L53DbBe4Bt43HCBo5XREoA5uSenBn8vMjG9dEjwmC/vAP7RxLkCpLA5Tu4Vmc6mESY7OlD22A33jtCD9cgzSu0yT20Q5LcSNnHadBvwoqiKIpSE7oJK4qiKEpN6CasKIqiKDWhm7CiKIqi1MTUYlbfoFyREcEkJcKVGaFsYGUoNDghtnVCFBoaAR53UqDJk7ikxFuMokxRkrKAgg/ZAx9FCJ9ICm6EktiISCJNm4htQ1Lqb4i6QBkRmcHB1y2TimCDffzsZXnY7zLG+WwXKGGERF7IfJwTQ1KRggLHYYbIPHmOc+cJimMLPqYTHdJBqeMQku5UNHA+f+igcLW1xJSvxMe5I86ZCCk5mfZxrAJSxrMiazUVlM4iIu2sK1BEuZX1hcU2BXhu6/0etC1YOH47c7z++w6Rhdq4WH1SqjJKSdKUwXvHiCS7ZW2SZkWks7BBEqBsLF9nkfQuq02E0IRcr0tE4BQia4mI28K0OFbSsRWQdCyflIPN8F6RZ9ifCZGmlkniW5HiPIUZXtdtYt+5RByLLLaP4BzbXVy/UYHrqFnh67o+Xg8BuTc6JKHRImVLRx4vEXsg9JuwoiiKotSEbsKKoiiKUhO6CSuKoihKTegmrCiKoig1Mb2Y5eJ+bVkoL0QuSg5BQRJHiJhVZSiYVA6m8uREwgqJDMWcmCzF9zouvrIgaU8WEanyBAWHkCRhJT6OX+Jg22BEUn4yUrbQw9c5IUm3IqUbc/I6EZE8QaGhiHEcfJekO5HSY0y+E1IWMCJSV9PDvix1UeBYIIlg9yixz79DpLo5Imttc3GsqzGKGTmRjUryM21AknUiIrtUMZFOhihIWUS8yXycz5iUGZzZjePSrciaIeKNkHVekeC1MetLQUpnkmAoUu1TbLI2SlIxLiHHyGycSy8iSX02Lt6ElG7sELkytvF1FikdGJCbURO7IhZJqBIRqRz8gCEpM1hWpN/kvV6CkmOSY4nCcoakf83iHOcYtiW+j9ewfQtKk4tDFMICImYFZL8Zp7hn5CTtrIrIuDpEEiUSsU3KfeYkZW2FXRBToN+EFUVRFKUmdBNWFEVRlJrQTVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmprajC2IasvKJbRvVxfEiWnzzUQ/aZppoOA+Xsf7kcISfNxOiTZewaEwSZWdIDc+qRIu6Itao7xFbtURjr5mhJbtioXG6x8Y4RNaXdSFGrkURqdGa4/lWLlEZRWR5iOM121oHbSsTNCuHE6zXuYFYipLheCXE/vbXoUWZ9YiNP8K2dTmJWJzBvqQdnPcBqV/rebjQmxNS93mC50HKzYqQqMNmCz/PMCveJgY7mePxEpqaExvXIBkCCcl5+HM4fv0K18EemyjOTVJjPCNRgBNSI9slZqqH42eT6z8g0YyNIZ6bRf6aITNoAJcFtjU6C9AWl/h5lpB7kcFrpjuH615EJJjDNTgh12uygueXDvGaixNSd7iJazBs47mEDt6PrAZec05A/oJjfgO0jchfu0xKEkdJlHrXITXeSZxnUuKesXOENvhMiPNpF6TuOIm87Bfs73EOjH4TVhRFUZSa0E1YURRFUWpCN2FFURRFqQndhBVFURSlJqYWs4IChSGf1HLNXHxQbkhd38Jl0WL4sLvK58gxUE7ZTurPhm38PJvUXq1ifGjfdYiM0ybnW6HgsDzuY1+WScxhhONit1BImCdRgJsCYsXlKCTckRD5qCDyjIh4FamDOkBpIstJlCgRT4oRijFN4i6EDRTyMrI+ijGJdvRwjicWnvNPxtugbUxqt44DHANSIleqGOcuInVpxwWOgU1EQJsIg0UD+xKTiFVZwr50l/AYOxooUs0JkcSIUOOSuMxdLspffRKb6FskMpTIbuRykMEKyktjEvc420GhaaGBx3BHeP0nuMTFslBiaxEZZ0Lea8i14Hl4j2l2cfy8Nt5PREQMiV2N0HcTK8F7RWpwHDIyNuRSknTYx9dZeNIzpG65Ra7DlIieDon5rIi4l3XxIHmLxK4SkTXMsM0le9WI3H8tD++rXo7fX5sjHgd8IPSbsKIoiqLUhG7CiqIoilITugkriqIoSk3oJqwoiqIoNTG1mNUo0Zpo2KRGLpFdRh6+LibpJyPy3jRCIaEk0k5KkphCFx+UOyX5ucNgXzxSO9QjNUZzg22GvK5FxIqxjZKI8fC9s6QYaaMgKThjbLMKMn6k3q6IyJyPYlGUktQmH6WOfoRzssPC8xuTtKiDSDpRtYRCjiMoV+zp4nze1MC+sBq+doJzXKZENiKJVLFN6k2T85hl50aExj5ZM+MOjnNJ1tuci+exgQhSP7KJpOejRDR0UCJqkTXoEwGpmeHrbNLnysE2j0TwzWRoCzkjXAd2ges0bhDZjcyvnaLw0/QxVa4gCWbLfRRWUzJ+7TaOldsjyVptfm1m5Pz8EoUhlpo3JsLmxMI1aJN66cm2ZWhbJ/h53S6+1yby1yjCNbjg4uviGNd04uC9I2uRMSA1gTeRYS1JTeBbJzifToDi6OwY11HPImbbFOg3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJrQTVhRFEVRamJqMcsyKCo4LKVKSPmwkpSvM5je0yd138gze2mRUmZtkmrUSFCQCElKSubjzyKjMZ7HiJTws2wcQr/ClK8VFwUCEqYkLSKduSSxZYUkNsVjIguVJBHJcPnDyVGkcgoyhiTBqyDlw8IAhRfbxbF2iIQRLeFYL9so5GxP8fNKIqd0SHk5b0ySvwy2LZFyaQlJbZMhyhpRRWKNAuzf7goXgyGl80KDr5sN8Nzmu7g+Dgnx8/ZU2OdFklZUGJyjDkm4CsYkJYlIcVmIa3BArvVOB+87DZLsNopJGUkWYBShfFiQ9KOMJHVFHo79JCaSWBvXRmLhHNk+KblXYJuISEGky1myPgKShsfk0YqIsUy4rEgKVFWSkqlEoKsaOHdjbxHaeimJQEM/Sioq0OLcseS6UPDcUrI/BCm2eQWuXyFJhB4p2TkN+k1YURRFUWpCN2FFURRFqQndhBVFURSlJnQTVhRFUZSamFrMMs48tCUJKbuVolATEDGrFHzYXZJUGIdIU20LxQcvJXIPSQ1qzaNoMAzwQf7W5T60TUYoji2EOC4tG49xY3kHtDWJXNW28OF+FaLgsEdQbEnIz1TtAqWHXkaMMBHxeyQZKiAyCkkEkhiX0lyJ4+D62B8vR8mhCrGNyW1CxjqJydgsYp8zslbzHvYvIelOLUNkEiJrLGckZc3H9ZtaZO6GeN1ECV4j4mHb7i6OwaYc15ZL0o9KG49rSrzWHQuvh5LIM6wWZEHS8WIbxypo4XnkZJxHQ1I2s8Jxbkd4LcUljt/KCMWsgpQ8dR0seeiGKGZOSuxfQlKXSnItiIiEAxybnkvuqzkmXDWIL9QxuN78CMc6IklYXo5i3JAk81UFylq+wTGMSdnYCbm8oiHeY9o2Hrcglu5KiGvVIWbs/ZwZaPMmpIwnKZcYh7wM5YHQb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GKWT9JAMlL2Kc7xgbVLyqAFJL0nJwKHTYSrlKSaFEN8ndvAh/YmRAkgJ0JIRpKdxEGBy7WxzJVT4HuDWRRgmqQcnkcSluIBTlO/RKnDckhyUpuli+G4iIikASkH52MfhwVKDg2SsjSHLxN3ROaTlPFb9vBcshBFj3iCn5eNsc3KcW0NSTrZhKwFmySMzfs4T2WIx906whSy4XgPtLVIipafYJ99IkPmJB0r7uIct7bjhAQZKeM3IolPAc6vux77bMgY2DmJwipwTA0RwgYlKYdp4/Wf23g9BEQWdEYo40QOjouZI/eiEbldOnhd5xW+NyeCntvCcXZJOJOIiE+EtzTDtRAQobEZYX96JKXOzpbwuE02T3hPKcj1H5D5nOsdCm19UiJSSMlZj5QodMh1nZB0txxv3TLfxMbZJeyLS0TWsYvjsmJz4fVA6DdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmtBNWFEURVFqYmoxKxBMF4p9FANGJE3JJVJXYBNZI0ZZq4zxYfyeFXzwbgSTcIYkKmaZyAIJKfUVNFCaCEiZsbJAES0VFBcOXYdtLilB5/XxdekAxZGQyFEyg+/N54m0w0q8iciu3X18LSlNVxChrCQ1JycVtrkZvrciqVdlhW3NnEgwI5RJRiHOcdDC9zo+jk3EUqAKkkxEks3iNp5bRkS0kIhoHQ+PkZF0IZvMsZCygC5ZHltJ6pXJSIm3CSlpR2Qj28M5spp4vixNzRmgxOJMsNMVSTXzSBJeRCQnv8LjmpKUS7VxXJpEUmxHKGEawTFYTlAmK12cy5l5TNYy+whdqlyc94zIXhOyzg251Xolvo5UtRTxWZodznE3xO9zTVIadeiRtZrinMw2SZlHD++1O0l507CB/euRe1aLjMvyDFmDxGP1SDnHgJSbnAb9JqwoiqIoNaGbsKIoiqLUhG7CiqIoilITugkriqIoSk1MLWaVk63QVkRoEaREzMjbuNebHIWGIEb5wJBknSFJMMm7PWjrk4f7UqHIE5L0qZmIPLUnD97TMZYOMz4edy7bgV2xUSarSGm0Vs7K/+G4jBwc+6UGyhEJSQgSEWnNoWzU2UNSajw0Fco2igr9DMfVJj/2dUocBzfDMZwh6ThjD48Rt7CtX2JpugYpLzfvkLQoIqwskcShiY9rJmzhuGy08dxaTbwebi1QSso6+N5wgh107sA0u9vJvDUD7LOJcB0UBtd5luLaiEmJt7LAMbWJvLhArrnJEI87HuN9p8TLQaoIE5HsNo5zm8ybVaJIVZI0wIZPSukJXnOui/PR9fE6HJPkPxGRkqzLcRPFrEUL+902OA5dt4d9JDJkStLJbJtIay4p9xnjOf9gBe+/v5Ni/w5pY4nY/5zDY+zwsS+HkTV90JikrFWkBOgh2BdScVI2LZKEu5vwep0G/SasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpNWMaYqWI+fqfxAGhz2ihmLHtYpq1ch58Xk6Sp5piU4itmoc24+FB8BxEpLFJ+bdbCh/FzpEwYqaQl4yYKRLeRNKvSwof7m/IFaMtWdkFbi8hVCUsN6qLAFZNUo5kIx8qe4FiJiJQJHqd7KE7eJEI5aMcyyihtC4/dIylGLUHzYTzYDW0/i46ANmeGyF8OCiFyB4pxC6SC2ro5nLsJSU9aSkn6FIkmsogbaHWI7EZSrwbbURxzDV4PkwD7vELW/kNuQ+FqhYhUyy4p3dbB/vUtnHNp4fwGFr53JkfJJlzGvuRLuCb9JknHmsP0qQEJF8tJypfjErkqx+t6sYkf6OxehLaDyf1Eujhvu4h02hjhuIiIHFbhDSnPUDbc3SBlGUlC3gLpolfiONxi45pZJN/dApJidl88hOS3k+2mjfMZbsJ7xzhASa8iIlrX6uEhEjzGAhmXlofHsEj83MoYx2DPMo7BVT+9EQ9yF/SbsKIoiqLUhG7CiqIoilITugkriqIoSk3oJqwoiqIoNTF1YtaoRyQCH9t6Dj5Qj/soEAhJP3JInFI/RwHGylFe2jjTg7bBkJS5y0gCDKlp5XrY5hA5Yp4kV0Wk7Fg1vBnaTBtlkmGAtkC8jKJRJ9sGbQUJ29ltoRDmRMRYEZGAJPBkyXbs4xAFDttDUSzwUPCx7D60LZOfBQfk82ZyImZM8Fx8kkhle7guqxLH9Y4RikDpCOc4cIno0cFxWSKpVxNBkWpUkPOYRynGS3GSZ4j8ZUjJyBUXBbOCyCm9Vg/aqgKvw2FC7gkklatHxJvJ8k5o67bxfEtS9rEKSRm+NrZ5Ft7erBzXmjPB8yBBUTK3E8fPS3CN+w38vGaXTBJJDRvk5F4pItsNykE2kTiLGF/XFryXBURQM6Q0YnMJ5TtbcD7bHhlrwbFJOnhcu417wdIE10ezheMV+njcfIRj2CJSnR3jmvaIlGgJKUdKpjPs8rSzA6HfhBVFURSlJnQTVhRFUZSa0E1YURRFUWpCN2FFURRFqYmpxaxqHT4837W7D20bLJQA1ksX2ixSsm+RpBCNLBQNFmbw88wI+9IkAtdYUAwYW9jWJOLNTImv88nDfXeCaU9lg6QuVSgLDUi5xCYph9droEQxGqAEtLtEmcltYnqPiMhyghJGI8XjmAHKC90WEcpKHJtihpQAtFFUWkpxaR5qoWiX9KFJJEVrInDx580qJGXLSEm8gpSS7FjYZk1wjqsSxy9p4jWSklJ1gYNpYJ6NMplPyjRGGa6j7RbGJNlE4PL7mFxlkwi5w9qYppaO8Xol7pfMtbBUXWFI6l0XRa+qgfObksqjORGNBJekOGTSwwQ/8H4VztGwheOy6OB5pLvx2jREbBOL1M0TkbSL6y0gEpzfJx85wmsujcj3rwxf1yCe2EEuJge21+E9OfZxHW3LcP1WFr4unMGxloBcw0RY84mAaApMJ5zpkOS1Aq+bktVfdbHPEpG2KdBvwoqiKIpSE7oJK4qiKEpN6CasKIqiKDWhm7CiKIqi1MT0YhaRP9wm2cMdlAXyZXx43iBl91qkzJ0V4OuyEQo6TSERJuSBekXqeqUJKc2VEEEiRyGpQRJqXAsFh9F8D9rae/C9Vh+lgsYGFAi8Fp5vO0KZpCKfJxb/2SspUFSySerQfBPbuh5KJjsF525nQUrdBdjvOdLFYpak/FREIlpBAanIyHttFEzcCPtsBEWbkpTiHCUoAlkRCogOkaEWPDxhdxcR4Mg1knnYP5+UGa08lHvaTZT+XJJCNhqg0ZST9CmfpM9ZCY5pbJM0pRLFwKiL8+aF2JaQ0oPxgJSMHOH4NTJcB5HBay6x8B6YNbEvkwrHLx5hX9yclPV09vG9qMC1xRLBel1MyBv1Uc5MBPvjEeHNJSl6UuJ8TohAu9sipThJKdlxQpKriCRWxaTkoY/j3yVOVzUkY0Ck0yzD9Zs7OM4rDp7v0Cai3RToN2FFURRFqQndhBVFURSlJnQTVhRFUZSa0E1YURRFUWpiajHLGuCDbcfDJ+CDDJNh4gQlgG6B+39aouzikBJZeYoP/B1SRi5L8POKEqWJiIhBERFgJsuL0BZ6RJiYx3HZE6Cgc4iHgsN6wQf+K9gk2yc4pp0OptbMuyhbTPbwklu9CJO0ciKZhSHOXUSO45A6ecvLuD42dnGsNzs4Tz8oSRpTiOPgG7Ksh6SNlQ/MUMiLbJRJ2kSkMoaUeAxQfLIEPy8akuQ1Iu61iPgYL+C5mR6Oy0ay9iXG9dtq4zHaNl4jt20j5eZIGlujheLTcNCHtizD67Vd4RpqFCjAVESQzBMiTZJbnk2ENanwGLe0SUpdhVLcCknRa7t4bc728J5gkzH4eX+w3SMpaxOSEjYhApfH7nlE9ixJylo/JqKdQaluF5Gh5kb4uoUe9iVZJiVnC5Y0R4Swsg9tGxp4ve4a470tH+PaL8g1N/JxnIdECJsG/SasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpNTC1mtUjptoKkuMRj8kA9aELbmEhJowk+KO/4+FA8DFByKNAfoKW+2iTFiSXA2C6KGTkRF5wGvm4ckoQVkgrTIIk5bVJiLG7hyaU+yj15TvrcZ2IWqecmIv49sC1poQTXt8lnom8hcUlKClbYRqoySlXh+aVDbEtyFKlsB8ehExIByRAJi8hfPkm4ankkeY2kBjFhxSHXUhajeNNq4lgVFVnoPiadFSmu6RmSBhYTiahKMBmq1UC5an4DSVjr4PotHTy3qIOSTblCih6Se4KpcE0GObmuyTi7IWkj6yCOca1ZM3g/kTH2pVxi64CsZ1KiNCLJcyIiDhEBS8Gx2bWC99/Kx3Vk23jvSQ2uLauJ45UTWbZMsC8RScdrYfekRRL4iiaO9coQ53gpw/XreyzFEMev4+Ca3jUkqXc+SamrcP1m7NqcAv0mrCiKoig1oZuwoiiKotSEbsKKoiiKUhO6CSuKoihKTUwtZjUijANpeShckUpQskwSrlibPYeiQuaSZKICH9B7IUoiMy3sczRESWT3Iia7LIVEzOiQhKU5lMSyAiUFN94NbbtcTMzZ7qCcErRxrJodPA9/gFJHnOEYxKTEo4iI5aKQE3bxXMYTPM4wJyXnyM94m0g6VttHkWI0wvHvpPh5RYlrMCDiWOATmUdIqTVS+dGQEKN8TEQqXL7iEYloUOCcjISkMZGxt0mCkZDynGYXXoimiSe3YRYTria78XpYWd4GbV2S+FThdMgiSdHLicTSauGb8wERPTM8D58InD6RMB0b15pNyvoxmczeQ1KmLDzGvEcWQkGSzohUuOISw1FESg/P2aR4P2r2sJShI0QizFagbULksZDIrRKTdbmC67xHUu8OWr8F2pbzPrQVRDIdT/AYQiTY5uwctA1TXNMpSccbVXiPCSuyZojMG5A+T4N+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamFrMcwYfsoxUUeWwf5QWflBm0SAk1myRw5QN8eN5dQJlkTMQWlySxBA4KXJ2KPKAnAsyKjULCiiHHFXxAHxGxwppDgWBAxKDhuA9tDVJC0TV43KKJP2c5DT7tCREzohGOjbcbZRmPyHJVQOQ7m6U24edFpPxlVuLctUOUTuYbKGZ5JR7DpJi2k5Jyf5WDY5iTn187IYpFEXZFSnLchJSMTIjg1+2gDCVDHOeIhKIVLn5eWZA0KxfHwAQkMU9wbexa6uN7yXzM9GagrSL3hJUlnLeiwtdFTOA0KNRUrFyqT2ScAM/NIs5UQZKsGmQdNDw830GO19v2gotZQkrxbexugLbOGNeHWcZ5H42IbdjGc24R4S0jaWLZGBec18ZEqjzCz3OCHrQtj7BsrJB58lmiF5H+Qh/HJSHSXxTh/hX6RNIjMl9FSudOg34TVhRFUZSa0E1YURRFUWpCN2FFURRFqQndhBVFURSlJqYWswoiiYxLfJDvepgGZDXxYfdG8tB+cusuaIuIbFRNULiYkBJqSzGmpMyS9BjH4LlZOT5490mlNfJ8XmIijlhE1moTMaNV4EH6KY5fWuB7qx6OQWsBRahszEtuDZew38Ee7PcD5zdhH5eWoG2Phe91/Xloi0hZtSjBlKX23Dpoa1kkPcnge7MhEV5KPG6jTcoCtnC9mRLHesXCuWtXOP6zRHLaSAS6mKyFUR/70iQpa+0eNMltpCRjSGRIKUlJOw/X4IgkUjUaOH4JOV9TYF+yMRGDXJScXNLl2RYR1ojIs3N5O7TFKRN0UCBKSSpcRoQ6JruNRvg6jxyDSZ0iIvEY1++OldugzSpR1mpbeK/1HVImk9zMJhMiYbr43vl1eG0WRJZdLvF6LUgJRbeBY1MJ9iVnMlSC17XFUvQE21yHCHkFtrGysaFP4uKmQL8JK4qiKEpN6CasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE1OLWTn6VhLnxJAgJQr9PgoNPilz5ZO0IlZ1rzD4oNwx+F6HOA4TkqbikoQgh5S0ahiSPjUhwgURVjIfB9AjoozdxzHt2ShWGJKclJKyeSmRbDoNTBwTESmWcByESHDjERGampgINEcSmtIYxyYnaWymgSUirRjllCzrQ1sseFwhx/AiLDkXEonQtUkZRA/XdJ6Q+fRQ/miS/nVJWUVDUsOSCo/hN3BMow7OmzvGMc1TvJbIYSUl52EiXAcTh8g9RODMSSm4BkmzCz1SNi8j0iTpc16SVDkiJBmf3AYjIrs1UT7asQ3lKBLAJ9UEhaSlXVgecnYjjoGISEoS6YQIpV6E96iKpHoFRK6yChSfqpRIiRleSy6x5RpEzByS1EF2tQYuzonvYFtJpCkSjici5Lom8x5FeB3mpJRh6OO1lLJNcgr0m7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpN6CasKIqiKDUxtZg1IYk+psJUE2+MH2kv44PtpETJJiYPwJ0WKQtIynq1Sny83yKpPGNWLtFGCcMQmaFJ0mwCImYFFkoUCUlnKYlwtUdI2SyS6LPRoFSU2z1o2z3EMY0TbBMRsVKUR3JSevAm4ojMNBewrcJ+z9l4jF0WjvVN5OfDw5YwUc3NSRm6CKWJiqzfIsS5y4lVs0Dmbp2Ha3/sYWnPjJRzzLBJKiJ19BpoG82GREps4oSQsC0JMrw2xxmuhQGRvxwiZmUGP68a45ynKY6zS6TJdhvnjUlxWYltg0Efj0vubhlJcfKYNEkksTZJYgo6KGv1l7EMnwlwQja1Ua5sRDzNblRge3s9JtfdTu61uUtk2RDn0x+Qe/cI39sucfJa5J5HKljKCmkrMpwTQ8pkOuRaqkiSYzZh3y3x3AqSopWS0rQJK1toUPSKS7wnTIN+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamFrNKEj9lkVSTkqRoVcv4kJ0lwIzQNRKLGBzEC5KZMQoJUUUevJP+pU1MgCltkqKVk0SpMYpUFulhRGSXPeR8By2UAFoZHsMnZficIX5gMcCfsyZxHw8sIvM+ig9OA4+zI8BzyUOUW6oJyncbSjwXl0giIqQkJpE/mhaec9eag7YsxHkfhCvQlpPykkLEkWhCyu618NxWSEJQYpESdja2tUkiVdvDMXBCfF1C5JmExEq5OX6eW+E6b7ooorAynksTIj5W2L+wieITKx+akzyliUVEzxzngzhnYpGyjw0iYbo5SXu7bSe02TNMDCTH6GKZu4CIbcMUpS4RkfVbDoG23SSdcFyMsY8uOb8GmU+SHBhWeC6s3KohyVWjEiegdDFZL8tI6hUpB+sRMdZ28DwcUk43J2t6SPrXIBGNxsXPS8l143c0MUtRFEVRfqPQTVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmphaz1vkou4xDFCniCMUWq4sP2QMLH5R3ZskD8AYpZZai8JNkmNTjEbnKsrEvIRF+PCJS2SRta0zSp/oklWediyJKmfShbbaNnzdn47i4Azy3yRDHoMHGucdEKJGuj+Ng+yTpiyUlEelnQGSZMkZxZM7HnwUfEGK/t/d60BaRhDZT4BoMMhSfoiYmFomHn5dnuN76ZA3OpiiszAi2ueRn3zkXx2+OlG5re7iOWkSeYwXibiRpYA4p7ekbUoqTyFCkoqhMSBJWK8A1FHYwLW7X8m48rsHjFiGTZ3B+bVLK0C+JSEWEMGuC0tOeMa5dv4fCVRaQEpTlEN9LRM/UYoX9RDIL+3PHaA++kFzvkmG/M0NEW5LqlUc4dzkZ60GB18MyET1tJlc1iag4pXDlOLhWK4PnQSoySloQsW1C7qFNPK5NpGRxMDFvGvSbsKIoiqLUhG7CiqIoilITugkriqIoSk3oJqwoiqIoNTG1mJXvIGlKPqmX5hNRZgZFBUPknlaID+hDkmCU5PjemDy0txrYv4CkwrRJSoqd4AP/siQiRYSizEqKxkrHwf41PDy30MOxikqW/EUSqsiYNojY5pISfiIiFUmBCVM8vy4pEZl6KJ7kpOSkG6AM5RJBJdyDaVYjIkjMkNJ+6QTfS6q5STFG+cMQSWxCrpKhi3MSVJje1UlwrHqkjOdBAZojG3wcq1aIQlOXpWgJCibJLKYVjV1cg30L3zsiCVI5ERoXDK7f0CIl8hwybwG+rk9kyISUm7MDXEMVSXHyydJvWkTMcvG92+bmoa0g5SYLB0WoyCcJfER6CohMKiKyfetWaGs3cL1V5GtVTpKhDEnhq8iaHnfwnlxaeB1mDh54bOE8NQY4Ac0GHiPwcBxI1UKpDBF3HTxfnyTmCSkPGQ9IKcgCx6Xbxuu6LPp4jCnQb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GLWGL0baXWJXEVcrczHh+IlKcNVGRRl3Iz8nFDgg/wqwgflWYOUmwqxzcTYl8wl5dIEjytWF5rsEUnWslF2aTZ60FbZKMqMxthnVpItJ+LSxCNJYsRREBFxMjI2pCRenJNEGiJ6zCyg3NIgKWtJjse4bUBSxyo8RkTkj5K05USCS4jpYWdE0ol60CZk/MckhcgtUdJh5T4DIle1iU3WIa+bs/Aa8XNcv1tauH6H5PIKSTrTNpJ0NiHl5kIiwBQkwcgiiUjr2ti/gpRBTVIierJ1QCK9DDlf4kyKT+5Z+UEboS2+4yfQtom4VTNtFBzHrBwmkT9FRA5Ncbwssn7jAF83ImPjkAgpx8fxXyJlHvd4uM7bEQ5iK8V7j0OkNc8h1yFJ/rKIpCdEOnMjkpTmkdc5eIxlcg9kUqJFEtBcIoRNg34TVhRFUZSa0E1YURRFUWpCN2FFURRFqQndhBVFURSlJqYXs8hLg4Q8KK8wDajyUPSIyQP1wEKBw0zwQfkwIWLGDPavrPC4ISndNkqWoW1CZKHMwsShRoAlHqOYJHqVWKbNWBtIGyYihSGeR0DEoOURCgTDAn/O2tTBPouIBBaW4hou4/j3S0zqMaSG3cKeJWgrih3QtjPEcd3auw+0/e7gZmjLSanAvuAc5z1SVo0IHNEEBZpOjvPkk3Sy2MI59tGTkcIhSUekumRGZL6sWoQ222A5PVvwGOGISGKk5KFv41gZB/sSC8puGRF5jCGl4CwcmKaNgxCVuP4Ckuxms+OSrxiWTdKjSJqV8XBcdpD33nsGr6WFEa770R07oc0n7w2JrCUisilHaapPyu5Jg5Q4dfDa9Mk9NCAlLLcKnvOE3EM9IlLNLOP6yAXlSqvC17nkunZIUpfl4ZpxXTxGQWTDilx0TZJSlyZ4rY9I2dh1G/DeMQ36TVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJqYWsxanNsDbekQH+RvyvDh+QZ3HbRNSAmqeBEfdlslSgBlhvJXRkr7SQvbhqRUlTdAsaVLZJJ8EcUlK7wD2noNfLh/y6GboG053wZt4QTFm/kKBY7BCI+RN1E0aHgoKbRTFHRERNbZOA7buihN7GnfAm2WjfOU7sTlNbtyKLRtcPB1bhfH4ZYuClLlEKW6iJTES0pcW40cJbiZNpHOhrjeHCJ/lcUuaEsbONbDFhFgIhRRJiTBaJ6IeykpBbmuxDEYkoSlvMK+VBNcR767AG2ZwbW1M8FxXmniukp9PEaV4LVpkdKScw6OwaBCoWmFrIOqhwl3KzFJrlrEvtyr3A5t7iYUzG5ukfKGRORpELE19rBcoojIj1yUq2wP12qzwHNOY7xGihZKRLlHUswWcc04BVkzDTzuHQbvUdUc3k8OTXrQFgzxfIsuzsmuWfy8O0YoYfljXL8bbdyXIgvHqiIy6QJJQPNGU2+na9BvwoqiKIpSE7oJK4qiKEpN6CasKIqiKDWhm7CiKIqi1MTUT5J/J0ZRaWThQ/GVBkkmIXKQWzHRgJQj8/FhvG+wLRyQclgJKV9XksQWw0rL4dC0Q5LO0sG2uIPiQoOUuTM2ihBBgNJJUJAkoQDbTIWfVzKxjQg1IiJ7KiLGNfAz54lUY9v485zdwTkpXFJ2j8g3mwSPMUqxfJgV4ntLF+ezGuBasCcoNLlzRJZxcT7jDIWrtodylVeS9UFKGe62SKpRhm0dso5WBD9vWGD/igTPY0zGfruHa2Y3mbd4guvI9FFi81Lsc9XBsSoF58N2cPwcQxKu8NSEVOEU45ByiSRaKyP3jriD97Ym6fPBIQpTGXldWWDbcILHEBERUlrRIfOekpKTTXIvE1KGMo1RPC0C0u8Q584VPO5sgevINyg0tUgJW5uU58xJmdGKiLZdsmYCD88jXkbZuMzwHsPStkbkFuoPsX/ToN+EFUVRFKUmdBNWFEVRlJrQTVhRFEVRakI3YUVRFEWpianFrPtMUGi4o0kEE/SKpHDxQb41IPu/jSKPG+IxmhFKYt4KKa81IVISOYYQuapBElHKLo6BRfqShSgL5H18uO+QtKKIlHOzMian4bi4KX6elePYjyqUD0RE9pTY3vB6+MIBSbhyUa6YCEnWwRAdMTFKMB2yPhrzpKRYgWlHhgghIbF0/IxJWDgGiYfvDcmV45b4eV6K418Ri6iIibBW4XtZCcuRi2s6tbEvjRTHBdUUkTtI+cUBkZwKUkZuJiDpcxVeNyOS8hWT5LSM3CYMEW98Igv6EUmuIuVSSQCUGJIeJ01S4jEl5VItcu8oyFoj62CFpFuJiHjkVm1ZRFQiUmLYxpSwYoz9HgxWoC2LiADqYl+cGO9RbVJG1cdqn1KRBLTMI2NI5MVyhNdrSNZvg8iVE1aes8Lxd0l5yJRUnLTI9ToN+k1YURRFUWpCN2FFURRFqQndhBVFURSlJnQTVhRFUZSamFrMGif4ULwV4RNw18KPnNiYILNssTQlUlKsgcd1mkQCMigpuBXGmoQOSXEhJQBTkhSTFyiYNFIUElor+HB/NMKfd4Ic5YiWR1KNBMdlRBJgWImxlkVEL+KmiYi0mjh3NhF8JiPsj+vh2AgpvxaTNKalEabt7CEiyyYHz9nP8fMaRAgRD0UbQ2StOCYpUMQOKshYrZCrKcnxGO0U50RKlDp2EUkvCXCOQ5+UmyN9GRH5KyZrYYUkdY3IujSkbF5IrvVGiderQ66HnCS29RO8RsZEThNSmi9wmE1GjBrBQaia2L+QJJ1lCX7e4hDnbWKz0pIkdmlC+iwiTXItFeRCtjs9fB2R5QpyHJeU+6zIAplY2O+YzJMhqXcOSZBLIhxXQ1K+LJJ2ZhPpr8xQ9EwF+1wGeO+uyH0naOP4xTFJx2thucRp0G/CiqIoilITugkriqIoSk3oJqwoiqIoNaGbsKIoiqLUxNRi1n86+MB6IcOH9i2SdJRaKHUMiBgwIiJFgoFU4pKyYIaIN3YTH9rPeCiJ5DY+tN8zwJJseY7nMTtBMWM+WYK2VoGpMD5JzAobOCVMZkpJMk5OSptZRAjxLTKoIjLTImlCRIaySJmxpo9RWLlHSoA5OK59IssJOa7Zg3E7Bzko5DRtPL/ExnnKyOr3bByDkJTdzFOS7tZCKWmF1Dwj1dLEsohg0sDzWK5QOnEyPLcwQcnmJwUmJ60THL82Sf4px0SaMnhc38Z5axPRyyP3DibUOBG+d+zierFIuTmffMeIHGxziIRVCUngW8Q+Wzau+wER0SqHJOsNiFTIkrpExCPXQ2HIGBJZrj8gSW7kOO0ZkghY4LyPc1zA44isGZJE5pL0riQg4i5ZHx6RJtssjbHE945Iicg8RzGr6eIYNEnJ2ZKYjxWL6poC/SasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpNTC1mDdtEriDyQhlj+lFKypZZOas3RUpGkfJ8MSlR2CJCgksSW8oIf+7IShRM4j4KCTYRwkYeiRxawNet34kCQUJkt4KkdwkRplwLj5El2DYmooxFhJ+ffyiKMSGxK+ZImbEwQkFl6KKENSbJNY0AP6+KetBmL2ES2ZCUc3NJaT+frAVbSAoRke+8EN/bbKHYUpGfafsTXEdDsn5zkgw3R1LIbAdlkoIIJhVJP7o12gRtQpJ//Am5LRQspQrbUpJml+XkWkrwPlExqauNQmNl4/gNM/w8UklTQiLteSQVbljg50VE2rEbpExgTO5t5H4XEzm1jHAMREQmASmJWZH70Z4BtBmSUmXPzGBbD8c6NHjcZkHmmCQWLqdk3n18b9DA698tUKSqiOToEKnWIROfkeRAu8C2nofXcDvGca4yPMYww1KQ06DfhBVFURSlJnQTVhRFUZSa0E1YURRFUWpCN2FFURRFqYmpxaymR5J/LBR5lkg6lkNSfjoVHrpBSrdVORGpVlD4aRK5ymEpM6TPpUGxpZOQNLAWihRLbZQ6tq7DPs+RxKw+kZTSBn5eq0dSdMb4OtuQknukTFtOBDgRkYSUR2wmeJyIpI45RHKq8K1CXD6ZJQleUYkSTGith7Z+gek9O3KSYhbgemsS6WxMknUyF8clclHIyZdJFFaMJzwgyWaJj22lTa4bslYLIqeNXSJrEelkkfV5RGRDm5Qy7OIY2C5ew30Lr9e4wv5F5PrvkvQuIWllOSm5l/ukz2SdtkmqXIB+k0xIepfjY1uY4XzYKbnvhDgfA59cICJiGkTYJNKqRdZ+k5V+NNiflYykShHHbL5NZL6SlabEscmI8BrHmDBYEUGyRYS8sMS2ipQobTtEpKxwTAMydyERvXokrWw4UjFLURRFUX6j0E1YURRFUWpCN2FFURRFqQndhBVFURSlJqYWs1oTTCtKA1JmjMgfrkPKjMX4uhlBGcdJiEyS4sPzqIOviwUlhbIgJbKIh9Ii8lGvi22Jj+e2QtyKxY097N8Q+1dV+HkWKb8Wk8Ss0sL58As8RsMQyUNExCdSDXm/V6BUY01QrhgXKJ4lKSYRWYakehkia7iYrOMQETBjIhAr+2ZIYhlLgSOS3p5deD2wEmoZEYGsCMc59XBM+wbHKidtNlvnRKRab2P/Jg5+3mJIjDqyBgML+xyyMSDCYByhjJeS11kpjp+QpKnAIuINKY2ak1MLyfUwE2Dbd+Nt0FaQtWsLikt2A9u6HbzfFRmOqYiITUrnjUuUq4IZvEe1SSIVe+/KSh/aKiKE9YI57B9JHTNEgq0G5FqKUQ7MSUpddwOm8vkWnm9BpDpT4esGGSmXGpHkRXI9+A72zxviPWEa9JuwoiiKotSEbsKKoiiKUhO6CSuKoihKTegmrCiKoig1MbWYFZFkErdqQds4JdJOF6UEyyNyFUmAcSf4c8KogULDuMsSc1DMMMv4MD4s8YF/SZKr+kRsmXXxvd4OTIW5OcKH9odWeL5bfPy8UYpjsJ2Mcxqj1HWYjUJCl3yeiEifpI5tIyXxLJJ21M6IfLOEhkRG5DGPJAdNSJpY4KMQ4pMSai6R23ILP68gCUghSW0KiByUjnCs/Fm8HkqDffFIiplNxLFRhoJZ1cH16+fYv8jgvIfLOB9JiXO5ZOO55SGKVCw5qUjxumlEmBZXColiImlbgyGuP4/IVbaHtzLLwhe6RFjLxiin9XfjWJU+SYUiyVNhG48xYuvPkNRAH+9tIiItwTHMMzx2GuCxB02SYkjutZ2UCGUZjuGuPXgvcwMcmyjC66Hbwut1Qq6RFSKExWRoxi4el1T7lIRIsAOSlEaC+mSFlEucKXBcZro4R9Og34QVRVEUpSZ0E1YURVGUmtBNWFEURVFqQjdhRVEURamJqcUspzELbWWJSSxWjLLAiEg26xaIaEDStiaGpHKREoWpg8cgHpVUBRGIfCzJls3g62ySjhWReKzgDjyu9FAw8TNscxzsdBGSNCAP2xoNFCGaJMHIGeNxRURyYjQMSSpSs4nSxGiEIovr4/JKSYkyp43rKCXCS05SfiJSJnOuh3bFctyHtoQkf0X+DLQNh3gM30NRqSAlz+wm9sXNSOpVhfNkKpRJxjEeI2rjvLvEMLFHRERzyOvwEDIuiai4exHa5j28rucKXKvlAK+l3cM9eGBSXnO2g+cbBqQ85BgFonIFx75F0rvmN2Kf5+110JanfWibJFjSbkDugStjnPMZex7aRETEYmVesS0j1lpChM0GEYs6Do5DSVLMlsn9w0zIuZD7xDwpq7jQwuvfI9eNwe5JaZFrKSSyJhHMPIuUI3Tx8xKHyHc5EXzJfEyDfhNWFEVRlJrQTVhRFEVRakI3YUVRFEWpCd2EFUVRFKUmphazlnN8oJ4X+CA6RwdAykkf2rw5FB8GASlzleFDdstFc2QDkYB8kgqzx+B5jEgpM8/Cz/NIHTQrI+8lcs9ChtJJ0d8BbbtJekzZRaGmS9JojEHRKCkxdalvofAjIrKUk5SqDs5Tl6QTpR5JlSLjlZDSgySISCxiB7mC52cifJ3BLouf4zpyYmyrSF3LIS4ZsRySxjTBse66KJikKUn0YiUsiQxVTXAMMguP0c9wjg9roVzZIKltcymuab+Fx9hVsGQyFFb6IyK7LKG81GyQ8obEriyILCik1J9l8NzKHCWbmIR3xT5O+piMS0nudxWRnqIAxyUmIp8VkMUrImNyr3WJUFYNd0Fbs4UXWK9J5LYmft6QXDdVQcpz5jgndo4DO8mJSJWTbSjBgY3JdWNaeFyXfLcMSKJXzyPrwyeJj0RuDUi52oBIv9Og34QVRVEUpSZ0E1YURVGUmtBNWFEURVFqQjdhRVEURamJqcWsRZKE5RKhqeVgm1Oh5OCPh9A2buAD8ISkY/WINBEQQ8JhYgs6BZIRIcnr488nHinrx2pf2bMoZs0TqcjvHgxthghc+YiUHSMJNa1uDz+PlHPrDzBJSESk28G0o16LlHkkiUqGJBtlJBGsU+F4eaTEXkHSu6wGKbVGSo/1x308LimhaLsojgyJYCJdTFSLUxz/gzr4unF/N7SNUhS4oiaOfYOs/cWdKPPFRP6KDl6Pxy1IktCQmEVDvB6aRCKaCYigR1K+cgffGy6ggNQksqG1gmvDJuUSDUmKskj5RcvDa7Mi95OsxPuYYaKXi2MQhXgeLQfH3hdsy4jAJSIyIvcPm4y1RcoyhqScaUEOs4eUsEyJbBS6pJwmEfKKAq+RFSI5VimOQzkgCXJMzCI7WEWStYyH4xeS97YT3JdKclxrgtdcxuogToF+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamFrPcAKWEXoZt64io4JISeysJCisRETjmUiI+kAfvIx+lgpJIDpaHZsD6GCWMBSLyeBa+tyLyTNDG9/a7KISMRijoOAmW9eoFKFa45HUxKc1XsKSYOV4urdPA4+wmJfZuJ/JHluGxN5B+Hyq4FkqSorWTSES7x7hm2iWen0PKG1YkjakkyV85CRPzDM5xSVLb/nPHbdDmC45fN8C5C8l5+KTMoB+hKDdYQZFqUmJyUk6S1+ZIglzLx9cRF0fmZ1Amu2OAItWKR1LgfFwbJZF2QpZIV2FncpLi1CdSUVrh54VEqMmFvI6cR0FSlxKS3ick6cwhfTYFjp+IiG2Te0+J18i6OVxbNpEzRyS5ikmJERmH2RDXoE2kySERx1bIluOTMo0ekXndAF9nhTgnQ5uUQU2JfEsEv0CwzSH3opxc18suqZ07BfpNWFEURVFqQjdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmphazOoQ4aprSDk3gw/ACyJc9BOSiERELy8hqTwReVC+DkWPAUm4iYho1C3wQT5LK7JI6k2WYcKKN9kJbYtNIpiR0mGBhdJDSkrkpQW22R0sVeeSNKByQpK/RKQipRDjHM+vCFGQKEgU2exsD9qiFSKPkbG2BftdJJj0lU5wTuZaKH8lJSmrRn4GLYREqi2hLOMREWV2HSZm2RYpoTjEMRjuJqlhpARdc2EdtPkxvteJcY6DDko7JmZ9wTKDKUlsahE5pSLXSGTjeWQF3idMSMqlEgmzImstJuUDJ0S8KXK8J6QkDWxIZJzYQzFw7GJfxmTOhYiLMy5J5crwXiQi0sXbghTsOBaO9YQJmw5ZW0TCciYoVyWTJWir2jhRcYTX9YT0uRXi6xoWXq82kSEnDq6jFZJElju4tppE8AuIJGazRDUSt5UQmXca9JuwoiiKotSEbsKKoiiKUhO6CSuKoihKTegmrCiKoig1MbWY1RiT0lLoecgeG183sfGB+tgh8swKSgl2jg+7HZIuNNfDFCh3jJ8XZEQCIrX5Rh4p+9YkkpPB/lkkvWu9g4M1GaM8U+QokzSIwGV7OAZJgccthAhmpASdiMiyoOxlQhyb9U0UkCZE9EjJvN+4jElOVY79mQiKGZuaPWhjc+cFmIBUWMTwIQE3ZYkSS0nElnKCiUMb51GMGyW4BvukjGe7g4lqQRNtnCxBEUVIqbWmj/Pupphw5ZKyhT6RnPwuWW8OS8fDeesRf6gkCVKjHMdqj2BbQkSZMMD5bQu2RQmujSap61dVRMwi31msHEWeZBmv66iB81sQYY0dV0TEI/cZ9g2KVNgUMTgOMx7efxvk/jayUfobxLh+3RL71yrIdVjiPUYMnnPlEOnP4LhmGUkdjPC4Dhl/n6QxjhaxVKgXkVKQEY6+zWLlpkC/CSuKoihKTegmrCiKoig1oZuwoiiKotSEbsKKoiiKUhNTi1nekDw8n0cpYRmficuIPLSPwvX4utEeaLNJqsyMi8JKtAMfireXiJQU4SmPQxRR+iRFxydJUYZ8XtxCwWHDzUSoKYiwRgSMMUkhCys8rmfh4GdEXFqsSF9ExPZQNnLRnxF/CV/XCnrQtktQ4Bh0iHiCXpF0XZSctrgoSKQkuWrbAPsXuCintFgqF5HTnB6+bty/A9omu3D9bjoIE66ElA/MDc7dJCUpS6ScZmduAdocH9/rmoOhLSKSWNjGCUkW8LjfnmyFtizGtXXvAIWwTQ7Oxy4H+/wzn5ThC1HaIaFrsmCRlD9yzZUFft7YQiGs6KKQGA5Iyb0cx6+d43o2EfbFBLwcnk/KsnpEBNpDylrKGI9TxdhWtPDek5FymiV5nVeSEoUYvCahQXnUWCRlkYhZeYmSWO7gtW45eJ8WkpiVDHAM3ALvMZZNJF0yH/Yv5mXpN2FFURRFqQvdhBVFURSlJnQTVhRFUZSa0E1YURRFUWpiajFrm92DtpkRvn1jhg/tywSfWJckGcqO8QG4ifBhfOXgw/1tFsof1jw+eG/hy8Ry8biFNPG4BXkz8yhGKLvcHOAD/xVSCtIz+LqFCl8XGGI9EBPCa7AkG2JCiUhIpAQzQYGmIOkzeRfFhyER7XwLxaeOhWliPkly+lEDU36IWyXePK7LleGN0BaSdKzNc5uhzQxxLQzGPWhrk4SwbEzK7pE0MJZq1CNpZ/1t26FtZQ6FoSUPB2ahdQu0NXqktKeH663q43zML6IUE870oG3SQbnn3wTL4WU+WfsJCk33uYOknxHu8LF/PybXTbfC4x4RHgRtVrAN2tIK1/MhszhvK+ZH0Db2cJ3aAa41EZGxoIzaJffLNkk7201K7GGxVZFkF6bZbZrH9dEm47qLSHBbZzdCWye/F7TZGX5eM8DzyHK8/o3Vg7ZZF0XFYgXTtvojLE05tHGdVxXen+bG2BcrJ9f1FOg3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJrQTVhRFEVRamL6xKwAU0hSUs6tyknSFCnjZ5OSZ46Qh92kLCCNJiEJUgWp6xWTNKUwws9zPDyPdEzOl0gPwQxKMT2HpLOwqmUZvk5K7N+wwPkoyesK8nNWRYQfERGvhfKHsfA4IyJNlSTVax2RdNjcFUs4Tz1B2WjHAFOMQhvXUYsIL3FGktLI+t1po8DhRUSWORQlvX6xCG3pCqZKdTpYdjNbRpmvWMIF0nLxWlqpcL15MyinSIQpX7mNc566TA7C/s318NrMWWm5DAW4LRUed2kHzscMcSGzBs7RIimDODK49rsOfuAsSUTKJygpDYh4Z7ooKe6JsS8OSQhbP4vvjUdEuBSRuMT2nCRm+V2cuzYRY9slik9LJc7nUoxirE+S6zpEKGvleE8wPl7XHinp6BNpNQhxDHOSCOgSMbZNbqs+K8XZm8NjWEQYznCOU9I2DfpNWFEURVFqQjdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmphazKosfLKd5yhc+C75SB/3+sRFoamIUAJqNvFhvIvP7KWa4Oe5JGFpPEEJyMpIchWJwioMjoFtkxJ0BY7LLDlGK8G2coBtEyIGxD4e1xDBwYlxXFhpLhGRIYmfSiekj+jFiE/EhyDCz2u0UUqahJjgZY9ISTELhYtqQtYlkToqkuQmFa6tlAh+GVn7lottjSau3/EyZhP5Oc6dn+NxHZIq1+pugLahh59XkbKWO4hkk5EyfiGRXeZIic11GzHNajxAGSfp43EbMY59M8U+JznKWksz2OdsDj+vS4TQaBHXfjTGNoeUULxjGy58Zx6vuZwstW4Tx4qV/7QnfXyziBQh9nHokGMbXIMBmePIxmtp/UZcg7dN8DpcLoh4WpJ1lOK8D5uk5KGNbYasfd/Gc7PJte4WOE9tF9cWqW4oht47UFgrS5wPcvudCv0mrCiKoig1oZuwoiiKotSEbsKKoiiKUhO6CSuKoihKTUwtZpUs3omkrvguSWgi6VMTm6RZ+fikPGIC0ghlDSvHh+eGiAuW4MP9hkcSpEjaS1LgMVySKDUk5Q2XMpQFopykR6UodQ0tPG7aIMJaiBKFn+DYV6QEmohIEeNxbBvltjDENsfGflsVzpMXYR/dGZzjnIgUrQb2Lx5jSs0wJYleZE4swTH0iTAkKa4jEp4kwTyuhV4XE3gmCY5Ve4aUziTy19hDic0nJQCtIUoxqU+SxIaYcJWQZLiOi3NeNDF9yq7YeeB8OBFOiOfi+O1Ywr7syfG9rTaROn285qoShaRRRkQvtwdtjQamfCUxSXbycVy6BiWxdIjnlhERTUTECrCP6RDXvh1iHwu8lKRf4py0uriOQjIO1Qjv03mBfclKbJuMUVSMIkwOswweY5DgfBqHlHNs4n01Jol+oxQ/L45JUmJOZD6SlEi2r6nQb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GKW38Gn++keksBDymGFLsoulodPsYsY5YOcxM+YhCQs5di2soz9E5KiM9vCsm9ZjKXD0sluaAvmUERxvB60LZEH+S0iTFQ+SjvjHOUZm5hBfpOUoCM/ZpUkNUyES2HduXXQlgl2PBbsT8dD0WNI5IqdKSk9NotrphOgIFGS46akXGKZ4lK3cpR5zARf1ySpQe0Q19Fgzw5oiw7F8RsbnM/Cx/MtHbyWJhNcl26F8xaSUpetAKWdjEhTleC11DE4Lrvu2IN96eJ8ZBG+N2/gHI1X8HyTBNdauyLlQxdxDPJsCdoKIjlmpAzfKCEJYZtQTpvsxvXcIGMfjnGc7Q4R1gJi/IlIwQQwUvXQIvcKZx2WD1wa441hiUhwQYbrch1J+sqJVLfCUrRcPIYRItW6uD9MiCBlsYDGBs5dPMK9IHZwzUxKfG9FEhpZMGRLE7MURVEU5TcL3YQVRVEUpSZ0E1YURVGUmtBNWFEURVFqYmoxyzTIfh0QQYJIGO0Oig/MDSr6+HmlYFs3QkEiLVAmMR722Tgo2YxJYk6VYtqLS0oKWhm+rhriA//Uwqf7FumfTQKbbFJCMaxIiguZzbJFGkkqjIiIVeIYxpNd2NboQVtzAVOCSgslkZzIciUZ/+1jlLUaRK4QUlYxsFDqsJu4ZsQhg01KKOYlSkR5gK9LDWnD5SEuSU/KhzifASn36ZE0oJRIhKGNx2ijByQlSW1LybjYpMzorjGKWSEp8RZnuK5GFR53lOL59gJcVxttkuxk4TXXJ32ZBEQSJelzASkt6Ya4npvkvlj1UT6akJS/DetQlPNsPF8RkeU9+P4mk5cmeEHkQzyXYozzmZI12LCJENbEcQgtnJPA2QhtQ/92aHNSvB85RL5zyV5gk3qEhtwvE5KyZrskYZCsrVxwXCpS8nD63fQu/fjF3qYoiqIoyi+LbsKKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1D7XmNSfbLTQJGu1SP1ZF01IN0ab0U2JiUeiD8MIf3YoCzRnOw00DScJmtp9YhQ2HLTpOm0criTH8yjG+Hl+gNFspIqxRCQOMayI7YsfJ+4I+2c3sa0ksW4iIp6DVuEgW8QXNnH8u/MkEnEnGdcc39tpHQJttyyjkVjQmD5iTIbEWA3IUm+TuqgWzvt40oe2oU2O2yJWZoyWd7PANc3+XMAh680m11xJ6nWXGTHgSxxAy+5Bm4lIjCPJ5BuHJGbWQx08Idf6kESGZhkxtXMcPzvCxe8LXjeS4/VfEdM9MNjWJvXOiwrvgW4TjzskNnhF6u3GGY5BUfC/XBByfhkrak3qvqdLOF7tCq/XVokRoR0fz8UjtXldcl03Shz/lBj/oUPiY0lEZUDsaKvE4zok4rMluC9ZFp5vRf6KYmzwPuay+37F44APhH4TVhRFUZSa0E1YURRFUWpCN2FFURRFqQndhBVFURSlJqYWs7IcH053fPJAnXxiMsbINYtE6HVsfFDOIgjjBGWN0id1h4n6lI7IA/UUxYVOF8/NjVAWyCZ4In7VgzbPYUIInlvPw9qfUYgCxniAx2Wxn1ZJpB1Sg1dEpGpjezvEcRiR8c8WsZauNcI1Exj8vBmDkkhVkHqzBufJJvF2BU6TZAmZ9wmphz1BgYbNcUTqYfsNbKtInGpZEXGM/Dy8QtalITGCPVIPt5rgIIxJxKLrk76QeNax4LikJDp1MiECIomobHmkfnJFamQzUc5gWzrCOUrIvaPZQMEpIlG2jkvOd0SuGwtf5/hEsvPx3rY8IPIXLlMREZldmMHXkrjShj8LbckKXiNN9joHJUwvwvXb6OK5WEQyG+7G+z4p4SszXRS4EnKfTgtcWyzytrJxE2r4OH4Zkb9IQqU4pGgxriwRh0SdToN+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamfpLc9VFeiEg9y5zIGku7yQN/bw7a2qQG6mCRpPxEWM/SbZKajxU+3A+JEOL2UBypXJQKBhlJivFQcNjYXgdtu5Z3Q5tUKDNYhvxcZKEQEkQoR0SkpmdOxKyRxROzqhA/0yNt8yUexx3jZ2YVLi+ni3M8jnE+A5IqtZ2sVkOSoXwi5GSk7rMQuS0kMlQzZwlNJNGHHLc924O24QrKVX0ihFkklavh4yDkORHqKhy/PRUKXOloCdpmZjE1aJ7JX3tIPeYIr+uYXDdCUogOXo+CXoJekKyQ+rODPSjZzZDasAc38BjjFA+yTOrFBkO8XkuDa3d+rgdtxsExvYPUCLYD/r0o9/Be5pH15pBkLbuBa2ZERNugR2qeR3hvTAJyfRGZb9DBNd0weD8xBt/rBNgXmxwjd4k01SC1wwt83dIy1kq3SLLheIBrq00SwtbPYP3kadBvwoqiKIpSE7oJK4qiKEpN6CasKIqiKDWhm7CiKIqi1MTUYtZsgA/UGx6KCpMVFD2WByTZxUVpoje7AG1JhQ/KV4hkM9vDvjglnp5FhAubJPA4Hnmvg9JDTh74MxHFDjdA22SIyVNCRI82qdLmN/A8vALbXJIe0wyIUCMiE5uIYiUevFWi3OKQEmxBB4+TNlAIEbcPTYbIRlmKYkboYf9mmpg6lpF0soQk5jQcss4XUDZyibAytnFdGjIuEZkTE+FYGXShhIQ7SUEiwipSAnQhPAjatu7+CbRlZF2aEUmVc+fx8/qkxiZJFyNVM4XFFSUuCkl9j8hCRBZsTlBsG/VRslkpUczaTe6M9w9RuExZol9GrsMG9q8zi2stLpfxwCKyPEaJyA9w7ZPlIVKR/hDx1CVlCzPB904SnLyKvK4i96iELA+HlEYsK3ItBTifASn96hKh0STkfkkE1cEQx98qcQ06Nl6vSUZObgr0m7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpN6CasKIqiKDUxtZhlVlCocbr4YNuzUZpoNjHBJBnjw+5Jjg/ojYsSQK+Lokyjga+zEzy9lJSCK8gDdcfCn08sH88jI6X5khwFhzDcBG3DGOWICanx6Af4eT5JmclJiktWokBQkdJcIrzkXNNgmbGujQKd42N/vHX43n7jdmiLC5TR8gaKGQclOO/FLiI+EfmuUeA8rWQoxuQksWg5QvlmTErd2aS+WTjBuZsvUCaZJelihcFzI06MjEm5v5iUoJyPcY7WBSgbDSZ9PEgTlZ+ElGn0fFxDVo5tHhH+8hjnrQxIOTxSMjIkooyQBL5xQpLdHHLNRdgWxyh1jUiK04SUqpxBl1ECcs1YRBITEdnZR7m1T0pshmTNNMh9YZ6IhX6OY9MnHmV/go0e+T5HpkmyGXydIffLOMWURdvBD2yRJEcrJQcmZSibJa63qInryCYCnC9ESk7wOpwG/SasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpNTC1mOeQhdh6jnFIyyYkYKw5J4EpKkpLiorxA3C8pSUk7j0gsrqAQVlYoBhDfQmxShssinckFxyBa2g5tjk3KNBIRxbNwXHycDqlI2lNBHIWKlAkTEbFyFAuaASnZR+bEdVDqaBPJKfDxdYsWSUVr4Zy4JOFmMcfxGo9xWbdJspZH0s6yiJR+JIllKxWReYT0OcP15pNJCQuSAkVEpZyMQZ7iOI9JqlRJyha2u2gM2WTtSwsFmCwhgg67DkkVSc8iJe0E11+XJInNkFioPMPzzUhqWOHj2FukTGDoYKf7e26DttTp4edFWN50Mu5D23DwU2jrdPgteaGHxylyHJu4j/1uOTg2LQ/nvcqIjDrBsZEhWdM+ikqhYOTbwMU1aIQkcLnYF5ckr/lkPp0M11FR4D3GIvf9gqRjRT7eAAypBrt7gvfzadBvwoqiKIpSE7oJK4qiKEpN6CasKIqiKDWhm7CiKIqi1MTUYlZhEeGixAfgVolPrNMJPhRPDcoChcFEmqBBxKcVlGLGOQoJnQYmNrkuKetFRCWflCgzRKiZkPKBYmFbp9wNbSEp9VUQESoscJwjkoRVBni+Ex8FmNLG8RMRmWnhz2RzHWwLWSJYhWJGx5CSkyW+rkhwjuMKz69Pjls08fwykp6UktQgIQJHWOL4O8TCsCpiL8WY/BWS6mY5SbhKfbwUx8QOTIk8Uybk3EZ4jO2kNOJEUK6KWsR8JE2zDUxO23n7DmjzKiLeNMl108Dz6EU9aOuQUKl4Gdfa7gTvJ/02Sbgjd8GErJfZkFyHRFxySalVl5RkzTxy3+FVRqVNyqg6KYpnZYPIhkR4WyZLZjIg8lKKfeySkqc+Kx/qYcKgZ1BecmmZUTyPEdlvKgevObfEz/NCvIadJr4uJfdajyTmhQ6OQUTuJ9Og34QVRVEUpSZ0E1YURVGUmtBNWFEURVFqQjdhRVEURamJqcWspYyUzYpJuggpyeaTcn/MQBjmKImYCh922+QB/WRExIeQSDZNIhoJCg4REY0yIhA5RMJwHOyf38a++EREIQFL4sQotlgu9jl0Mamn6eF8lCTxSkSk0UUJw26TuKOMpONUKC8ERErySMqPn8xAm1uRsnYlro9gAcsb5iOUtQZLmKwVpGT9slJwJBnOGWObR0rB2aSM3zjAOYnbOJ9jG/tiSEpVSMo0OitDaEtmsX+diMy5jeNiZyRpiohBHR8FHZOjPFMISlNxTsrDpfh5skLKEfZxsZUpzrltY5+NjQJRmpLydQ08jyZZ9y6RtSySONjauB7ahhW53kRkeSeW9mtm2McgxOtrhUSgjYgoNiGlKdeRtdolaYdWB+eO7RndEc6dT2TNioz/hIiKsRDR1iGyXIOUKAxxLbC9qiSJj0nCJDYuvB4I/SasKIqiKDWhm7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpNTC1mJR5Jwhqh+BAP8KH4TPtgaAsjjO+xQ5RYLAtliCxG8akR4ucZUs4tDYg0BS0iLonRqVIcg7DE1zkNfN0OIkNFBRHHiNRhE+HHcfDnp4gEtjQd7F/YJLX5RGSQ7oK2Wyoc/67BAzmGjANLTytQNlpOUJAYksSisMT+lR5KXSsFSj82KZfY7OFxLRvPjYVtuTauNy8nCUZ4iciIJVx1cE5c9F/EZChcdRrE5ktQspknYz8rKCWxlKSClLkcjVEW6s2hKJeO8Do0gqJMNsLz2GFw/Y1YeUiSPtcmV3Y4IWlKJAGqIgJXaaF4U86SdT+D5zshZSmDIY5BMuRyj03uv/YsLpBdpMxganCtRkSuqiKUwoizJolDSrUG+N6QiEo9Uu0vtHCsZ52N0FY0cZ7GHkmfy/AgtPQrWeedBpZ4HIxQhkyXcV3aOTFRp0C/CSuKoihKTegmrCiKoig1oZuwoiiKotSEbsKKoiiKUhNTi1ksrWRdFx9i+zk+jLdIub+l3XuwMz1SIstDmcQlqUYOSYqJSUnBCUnlIsFEEiUocNgZHqPho1TgtHBYbwqJcDVCeSYiZR8LknizUqAIMdyD5RKbDkkDc0hdOhFJiLy0J0azqHTQ1uiScmmBi+O1K0GhoV9if0bEhjqESFOJwT73yXy6Ec6JF2JbP0HxaSwoxXR7WMavGqEQZuU4d1mOHWylJHGMlKUrHfy8FhEaK3KNtFMc+5RIjl4T5arRhJTnw6UlE4PXdRSiBNSReWgbVnjvuMXgfMRNPI+4g2U8/WVsa+3CdeWMceyFlFrMBOW5rdUytEU9ks5ESqMeZOEaOriNfRYRqWZxnd+R4XpbJgl5HYPX6wKZPMtB8XEkfWjLMxybjQbbeiRRcZ3g2rJSnJOKlI0tSDpZQUpxVqTkadQiyWYRrssdO/vQNuyTe2CCbTMtpvgeGP0mrCiKoig1oZuwoiiKotSEbsKKoiiKUhO6CSuKoihKTVjGEIODcOhDMfVqOEYJo78HH4rPzmH6yXAF9//cRUnE6mL35mZQ6vAHKKe4y6T0HZE/UiIk5YLSmaQoTTRIwM09evjeSQvP4/blrdA2JmkvHeaNWCRBxyWJYxHKJI7HBYJuE89vqY+yl2nicbwGfmZkUP4IKlLCMiECnUXkMSL9LacoDMUlKSVHSzriGI4rXL+srOICkcmaMa4jJo7dTlKvWF/mSSrXvEeS4YhgcnuC6yi7Deeo7eN5rOuQcqQWjktFJLuCzEd33QZom/Swz30Hr5GciIEzJcppFpm33QX2b0Jksq6PY9og6Xipuw7ahj7eYwY5jv2cj8lurd04zptbOFYiIomF47rdXYK2JcFxaFooZs2R8pflzm3QZgyKZ/56nLs4IGUoSRJZO8d74xxJqaomOMfDPl43Q1LKsOrgPYZUyZThCia+uSSNrWlwrwoqXB+kK3LzTpTd7op+E1YURVGUmtBNWFEURVFqQjdhRVEURakJ3YQVRVEUpSamTsyylvGBdZiiSLHRI6XCRvg6j5QZWynxybZvozjik8ShkCUTkaSToIk/d9g+DsPOPfjQPhA87roGKd02RDHju/HN0NYh5Ry7zR60TTKULfoFzkfLQ+ukS9oyl7t4/QLFh7yD728TkSUeYx+3TfrQVlrY5tgoObR8lD8yg2ur0yKpSKTs3mIfBZOMpMA12iiyVUTc2zXsQ1vPwf7NzHah7R42tqUxKSMXY/+Mi+s3IULThCQYbZwlaUUuriMnwvkoiBTjF/g6QxLk+oYcg0hnDZaEF+DrhiO8NtMC11+rRZLdbJyjlJQUnRBhjZXmDDOcj3aEEpZZwTGoMjzfPkn0ExFZrvCeMmniZ27cgClcg6343hVSMjEISNnT7iy0OV1SmnJC6qiS0pQbQlIikkiTi7M41osNnLtqiPPeHuN9f5aUUOwRIVTaeN9ZFjyPFYvsQSxCbgr0m7CiKIqi1IRuwoqiKIpSE7oJK4qiKEpN6CasKIqiKDUxtZi1YDDVpCRCje+Th+cFkWwsIhEFmHSSGBQIbFJ+LSxR9Oq1e9BmVfjQntUyXJjH90qO51GSFKdhjBKQexA+3G9ERDqzcVxiB8+tIClOGZmPlMhCDjmuiMieBEujZUS+mSSkVBgpM+a1UARyfJScqhSlHxFscwJMEyoT8nlEOgktkgLVRnHHiXCsxwNcb6MU5zMhpThjIvN1yNrvkMShxOA4j8mPzSV576yPqXJ2iWMQJygCjSa4ttJlXBttFz/PnUVRLraw080S20yKc2nwkpOMiJQTInX5RLzxyXwY0r+YlIeMmBhIZKY5B9sSG+87BYnCG7ooiYmIxOSatUN8/87bb4W2RoLrY66H6V8SkJKzOUnMIxLmrIP7w2FzuAbnUyJhEZk3J31JiJQopFyin6DkuKHEvcUngukykRyzCI87dLF/ppwqfBLQb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GJWh4hZg4oIK6Scm0/khSrHB9tzTRRltpNkopiUIywsTDpy2ySVx8O0IsvFPlt9FFYyC49retjnnKTtzBMxwCOJOVmBAoeToRzVI8k/BZFO+qQ0l5PxUoYhEYZckmKWk7Quy8LXNQ3Ou71CBJUE21JSvrEsUHgrElyDHinV6M2SlC+flDLso4BkD1H0mCdJThY53/GIJCCRBK4mSTaLiYgSe9jmkVS5mYokpc3iGnR34PnKBMWbRFAYym0835ZLxl5wMpNlnHO7iX3eNSRzbuN8hBZbMNhUBfg6m1xLMVmnE3LfCW0c0+V+H9oikiRWRTh+u2J8r4iIG+K4svKNIVkLoYPrvCTvLUnJPi/A+2rLxnveDJG/qm1YSnK5ScZ/jGOzocD7SYdIoim5hzokCW/i4z0rC/C9oxyvzQYpFeqQtTUaMMH0wOg3YUVRFEWpCd2EFUVRFKUmdBNWFEVRlJrQTVhRFEVRamJqMSst8IH6Ej7DlkVBUaZhkYQrBwWCBhGLSJiVFORHhyERDdwWymR7BlgGLV/GB+q2S9KxyGgNApQ1WvMoMwTfRZnEnSElwWwUEtwU3xs4KDPkpEzYkqDMkI3JxInIjI/CBakyJiuCwkWc4RhWJB2nUxBZy2Dpt9zCsZkMUCKKIhRjnBaO/4jIKRMirdlERIuI9OOS/glpKwyufRJ2JsukhF1KEpGElL+0UlLycICfF5MSdE7FxgA/z3VxnMdkbdgVjvNGD6/D5WUUrgYVzu/Iweu622AlO/HcygTPbUKuB4ec2/o2Jn/tISVZEyKYLg/xPGYXsCRgSdKxSo8sDhFxSTnTwJB5JyUdXSKFWT7eRH0X11uTjNccuffMhHjNWW08l++l26BtQ4rHOIjcJ1ySyjciMunuNhGGSfnWhIlt5Nx6JMWQpWNFZJ+bBv0mrCiKoig1oZuwoiiKotSEbsKKoiiKUhO6CSuKoihKTUwtZi1X+CB6QJJmTIRCw8jBB/SWjfv/4riPn0fStjwiYfhNPO7tO3bie0t8GN8gpbRWJihXdGaxNF9zHqWOpeXt0NZ1sH/pAAWpwqD0ZPuk/Bq6ApJb5HUVEYgMihAiXArp9rDfVYxCSLIHx2swQmmtEpS/fMGTmezBeWr3cJ4sVgbNkJSvESl5VpK0LZbyFeJaLUlCmB8QOYgkZlnEzLJJqUXmeVQZKaFGSvH5HZy3yQTlOSYH5W1S9jFHuaoiApdNShQWRPjJyTW8smsPtLUOQmmvFRHRiKx94ohKPCQyToiy26aDNkFbNsL7ycoSlvojQyB7SrwWWBpdh5RpFBGpSJJbl5TdbMxgicKkxOt9SMqRtokY2yJlGZ0YRdExSZrKUvw8t4cCV+Zi//opXjcOEVQrg9d1k6ytZgPv0zm5Dybk3hZPmFxJrmEfjzEN+k1YURRFUWpCN2FFURRFqQndhBVFURSlJnQTVhRFUZSamFrM2k4egDshPoj2bVLjiaS4MElkKCQZqoPygSEJRhFJgZojCSshScIqHHzwXjRY+S8cg3gnJnDNsCE4COUPGaC4EJQowEgTRYMxkbVy0j+PCCuBz0sZ7opRjLFIZFbDRbmim6MQsmijZDYkpd/WhT1o6xFpbdC/HftHpA4hqTfVGNeWjHBdpqR8oMyQEoBdbCti/LycJFe1iewSRiRxiIhFKZNESEk8Zw7X0SEkpW6lwa4vPK7bR7Gok+N7c/Jz/Z4JlgUckjqDzQ6mSvVIaT6T4jofk9pyLNWsQdaGpCjZ9Bfx/jRHRLSyIMddh+VS8xCvwwYZ+zYp1yci4pPF0CAlTncOlqAtbuLaism5hOxSYol7E1Ke08Wxtsh1c98Gjs3A4HWzs+xDWy543B4JGFtPrNU5Uhs1IaUb78jwvrNE7gkFkTBDFi84BfpNWFEURVFqQjdhRVEURakJ3YQVRVEUpSZ0E1YURVGUmpj6SfKISD/rfJSN7BiFhqaNh9kxIqXvIpQXMhI/4xt8KN4iJcWY+OTYpMxVgO8Nmvgg3yEShk2SbDrkgf8PGjdD27oWiigzDUzlGmd43DERMEoixdkN7IshApyIyNwsplklIyLVDHFcLUHhzQpRDnJImk3mYn9KG0vdRR4KFwmRJkYlyhUlSflpEAOp3cQxmAS4FsYkDcws41poxERobONYsZSvipQF9EkCWhbjml7Zg+tjtkFKwQn2j62OLMfWXgNTuUKDx9i5RMqHOriGDtm0Adr8EuU+PySpRoJz3p+Q9LkK11Bk4X0s2dPH445wTbIyrR5JnkpIwpJH5Ki4j30WEWnleA+d9PEeGhBJL5rH63BMSvu1ibDZIamIFim3WpFURJeUznxIjrLWLhLq1/NJUh/Zb2bJ/jCzQuZkiGO9a0JWOknlCmd60BaQ8pcOSbObBv0mrCiKoig1oZuwoiiKotSEbsKKoiiKUhO6CSuKoihKTUwtZoUkmSgeokTQJa9jB9lCJIwJkRyGJG0rclGucBN8KN7wUIARkgDjkrSXZNCHNt/H9zZJGb6AJB0ttPC9xqDcs31pK35ehsLEwRHKFkWEP1PFREQjHoSIiDSH+C8Tkiq1mwgNFil/t379PLSNF3dBW04kvZAkpfVyFDN2EyGkItKPPYPClZvj+dohrhmPVMmj642shdkuzlMm+N5hgYKUCYkUk5JSnAEmIq3sQolouImlcuH6SMd4XRsH52NH3Ie2yOAxwhylmFYb5zIlQl1FSkY6JJlMSOk718ZrLidlKcdEhgpW8LhFiMcISOlBn6SBuR6O35jIbmVFbh4ikhFBKvBwTXdCbBsSKWl2FsWigMiBLO1wPZFWfSLGNUhp1Htl+HmHkoTBipybIWtBiIyaEzltR4pzXJIUvfkurksyfGIRGbJr8yTCA6HfhBVFURSlJnQTVhRFUZSa0E1YURRFUWpCN2FFURRFqYmpxaw2eWg/MaTsU4mvG5OH9jMkDSgkSVMOKUdo2yjAjCx8yD4hRg1xocQZoaDjFiRti/SvIEMYByj3dFr4eSsrmLBUEsHEMyhRNCuUALISX1eSsl4uKYEmIuKTsTFjFClckiqTuTjHVoHj2ouIoOZhv1NSUowJTQzPxTkxJFnL+ERRI+XvAiL4uD72OXJIalhOSg+meG42k05IU8nKDJJyf3NE0IkzFOAc8oEkkEqGJS6OcY5ro7RZSh1+XoMIkqMJSSHzcKwCktgUELmSHTgl82sRWSvM8b6TNfF6bUZE5AuI/JXjdT0m0mTmoKAnIhLZRMJy8R7gxjiuHinV6Pt4nAZJDuyQHWK9g8fYRNrWEwV08yy2RST1qkHWvmNwbY0tXKw7Ovhmm81JC08uIPtNRO6Lbk7WjP2LfafVb8KKoiiKUhO6CSuKoihKTegmrCiKoig1oZuwoiiKotTE1GLWLCnnlpMknEWSesUEBCZhNYkkwuSerCLCBXnInhH5qzRESCAVrTwifxlSemxAkmxikrpUGJRYPAePMdMkY0COu1j2oc0mpRZDZwY/j8gHIiLLY/zMkMhLsxFKSSMbSx4OJljCziJlLdsuKYk5Rglj0sZ+e0SGmCXpREJkLSHrwyqYIEUSuIiQU5a4zosCxSKfSEnriNRlSOJbvyJlGomo5HgkLWqAc1QQockJcPxaFY6fbXC9sbSygpyvHaPtkqzgenEaeAzTwz63OzhWbYtcX6QkoCEJS0UT2/IK++c3cawSsoaWSFnFJMLzKAN+Sx6S8q2Wg6/1SAqcV2JbI8V56pGvZOssnLvNZM0cQfaHezRIQlsXjxsRgathkXHIyN6SExGNlJIsiXxXBHjcmyd4faXk3p1ZRKBjbVOg34QVRVEUpSZ0E1YURVGUmtBNWFEURVFqQjdhRVEURamJqcUs4i6IR2QBhzxQt1hKDXngL0TCIq6LpCSVyxBpxyJlFUsiJIiFckVAhJ8kx8ShCZHTnALHYHG0BG2HBVjmbq6BgsnSsA9tu1b2QFuDCDULJBknIclJIiJLJYonC41ZaOu1u/hmksK1PUPjLSGlx+wAxSy/JAljAZ5Li6yZgAl+JDEnJ3NckJKCNplj2yOfR0QlsvSl46Mw1LJw/RakZOeYSHopkQ3d/6+9u1lpGIjCADrBJkh/UMRufP+HcyPdtCnRYHyA+Raii7s5ZzkUQoZMLqEf94buQsMaRl2GrleHEGw77vsw3hhG1X2G+7hd+7DLfAnjK0PIpoW1r7Cp69Rf9yF0/hrvodtbeI8tYYzkc3i37UKO72PuA3DXWx9EG/enbm0KYavWWgtTHlvfg6u1U3i2UgxzDAHaw9bv9VNYewmh2rdw3dewh+0YNiycpTaGgxOehcd7v1/npf/duvQPwxzO/3voDPc9hE5dYV7tFM7cb/gSBoAiijAAFFGEAaCIIgwARYZt++O/yQDAv/gSBoAiijAAFFGEAaCIIgwARRRhACiiCANAEUUYAIoowgBQRBEGgCI/+gIvuSvNX/gAAAAASUVORK5CYII=",
|
| 330 |
+
"text/plain": [
|
| 331 |
+
"<Figure size 600x600 with 1 Axes>"
|
| 332 |
+
]
|
| 333 |
+
},
|
| 334 |
+
"metadata": {},
|
| 335 |
+
"output_type": "display_data"
|
| 336 |
+
}
|
| 337 |
+
],
|
| 338 |
+
"source": [
|
| 339 |
+
"ra, dec = 239.5743316076613, 32.91914641623415\n",
|
| 340 |
+
"result = analyze_galaxy(ra, dec, search_radius_arcsec=2.0, verbose=True)\n"
|
| 341 |
+
]
|
| 342 |
+
},
|
| 343 |
+
{
|
| 344 |
+
"cell_type": "code",
|
| 345 |
+
"execution_count": null,
|
| 346 |
+
"id": "064a599b",
|
| 347 |
+
"metadata": {},
|
| 348 |
+
"outputs": [],
|
| 349 |
+
"source": []
|
| 350 |
+
}
|
| 351 |
+
],
|
| 352 |
+
"metadata": {
|
| 353 |
+
"kernelspec": {
|
| 354 |
+
"display_name": "base",
|
| 355 |
+
"language": "python",
|
| 356 |
+
"name": "python3"
|
| 357 |
+
},
|
| 358 |
+
"language_info": {
|
| 359 |
+
"codemirror_mode": {
|
| 360 |
+
"name": "ipython",
|
| 361 |
+
"version": 3
|
| 362 |
+
},
|
| 363 |
+
"file_extension": ".py",
|
| 364 |
+
"mimetype": "text/x-python",
|
| 365 |
+
"name": "python",
|
| 366 |
+
"nbconvert_exporter": "python",
|
| 367 |
+
"pygments_lexer": "ipython3",
|
| 368 |
+
"version": "3.10.9"
|
| 369 |
+
}
|
| 370 |
+
},
|
| 371 |
+
"nbformat": 4,
|
| 372 |
+
"nbformat_minor": 5
|
| 373 |
+
}
|
ExampleCode/example2/image/239.5743316076613_32.91914641623415.jpg
ADDED
|
ExampleCode/example2/llm_result/239.5743316076613_32.91914641623415.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
This source is a **low-luminosity radio galaxy of FR I type**, hosted by an **elliptical galaxy** (likely massive, gas-poor), with no evidence of strong star formation or quasar-like activity.
|
| 2 |
+
|
| 3 |
+
Key evidence:
|
| 4 |
+
- Radio morphology is classified as *FR I (Complex)* in both files, confirmed by high-resolution VLA imaging showing edge-darkened, collimated jets that fade toward the lobes—characteristic of sub-relativistic, turbulent jets decelerating in a dense ambient medium.
|
| 5 |
+
- The *Peak Inside* and *Zero Peak Offset* (Peak_Offset_Arcsec = 0) indicate the radio core coincides precisely with the optical/near-IR host position—ruling out significant jet misalignment or double-lobe displacement typical of FR II or restarted sources.
|
| 6 |
+
- DC_Maj = 12.5″ (deconvolved major axis) at BMAJ = 2.9″ beam implies a physical size ~30–50 kpc at typical FR I redshifts (z ≈ 0.05–0.1), consistent with nearby ellipticals.
|
| 7 |
+
- Low Flux_Ratio (0.0833 in second file) reflects minimal lobe-to-core flux—another FR I hallmark, distinguishing it from FR II (high lobe/core ratio) or starbursts (diffuse, unstructured emission).
|
| 8 |
+
- SNR = 7.1 is sufficient for robust morphological classification but too low for a bright quasar or blazar; absence of UV/X-ray/IR multiwavelength data here does not contradict this, as FR I nuclei are typically radiatively inefficient (ADIOS or ADAF accretion), lacking strong thermal disk emission or dust-obscured starburst signatures.
|
| 9 |
+
|
| 10 |
+
No indication of spiral structure, starburst IR colors, or broad emission lines—thus, **elliptical-hosted FR I radio galaxy** is the most physically consistent classification.
|