"""
Broader HST query at Bullet Cluster field — find all Cha 2025 cited filters.
"""
import os, sys, urllib3, requests
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
old_request = requests.Session.request
def _patched(self, *args, **kwargs):
    kwargs['verify'] = False
    return old_request(self, *args, **kwargs)
requests.Session.request = _patched

from astroquery.mast import Observations
try:
    Observations._portal_api_connection.session.verify = False
except Exception:
    pass

from astropy.coordinates import SkyCoord
import astropy.units as u

# Position-based search at Bullet Cluster center
coord = SkyCoord(ra=104.66*u.deg, dec=-55.95*u.deg)
print("--- Position-based search at Bullet Cluster field ---")
obs = Observations.query_region(coord, radius=0.1*u.deg)
print(f"All observations at field: {len(obs)}")

# Filter to HST
hst_mask = (obs['obs_collection'] == 'HST')
hst = obs[hst_mask]
print(f"HST observations: {len(hst)}")

if len(hst) > 0:
    print("HST instruments:", sorted(set(str(i) for i in hst['instrument_name'])))
    filters_set = set(str(f) for f in hst['filters'])
    print(f"All HST filters: {sorted(filters_set)}")
    programs = sorted(set(str(p) for p in hst['proposal_id']))
    print(f"HST programs ({len(programs)}): {programs}")

    # Cha 2025 cited 5 filters
    cha_filters = ['F435W', 'F606W', 'F775W', 'F814W', 'F850LP']
    for cf in cha_filters:
        matching = [str(f) for f in hst['filters'] if cf in str(f)]
        print(f"  Filter {cf}: {len(matching)} obs")

    hst.write('mast_hst_field.csv', format='csv', overwrite=True)
    print(f"Saved {len(hst)} HST obs to mast_hst_field.csv")
