Skip to content
Snippets Groups Projects
Select Git revision
  • f2ef17d6f66f80162beca16247be4a85f553aa65
  • main default protected
2 results

download_fits_from_sdss.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    download_fits_from_sdss.py 2.05 KiB
    import numpy as np
    import sys
    import os
    import subprocess
    import astropy.io.fits as pyfits
    
    sdss_path = 'https://data.sdss.org/sas/dr16/sdss/spectro/redux/26/spectra/'
    boss_path = 'https://data.sdss3.org/sas/dr12/boss/spectro/redux/v5_7_0/spectra/'
    
    from astroquery.sdss import SDSS
    from astropy.coordinates import SkyCoord  # High-level coordinates
    from astropy.coordinates import ICRS
    import astropy.units as u
    import requests
    
    ########## Input ##########
    
    targer_directory = 'F:\data\spectral_fits\\'
    class_names = ['star','galaxy', 'QSO', 'AGN'] 
    samples_per_class = 1000
    
    ## Queries für star, galaxy, quasar und AGN
    query1 = "SELECT top" + str(samples_per_class) + "plate, mjd, min(fiberid) as fiberid, class FROM SpecObj WHERE class = 'star' GROUP BY plate, mjd, class ORDER BY plate, mjd, class"
    query2 = "SELECT top " + str(samples_per_class) + " plate, mjd, min(fiberid) as fiberid, class FROM SpecObj WHERE class = 'galaxy' AND subClass != 'AGN' GROUP BY plate, mjd, class ORDER BY plate, mjd, class"
    query3 = "SELECT top " + str(samples_per_class) + " plate, mjd, min(fiberid) as fiberid, class FROM SpecObj WHERE class = 'QSO' AND subClass != 'AGN' GROUP BY plate, mjd, class ORDER BY plate, mjd, class"
    query4 = "SELECT top " + str(samples_per_class) + " plate, mjd, min(fiberid) as fiberid, class FROM SpecObj WHERE subClass = 'AGN' GROUP BY plate, mjd, class ORDER BY plate, mjd, class"
    
    ########## Program ##########
    
    queries = [query1, query2, query3, query4]
    
    for i in range(4):
    
        sdss = SDSS.query_sql(queries[i])
    
        speclist  = open('speclist.txt', 'w')
    
        for plate, mjd, fiberid in zip(sdss['plate'],sdss['mjd'],sdss['fiberid']):
    
            speclist.write("%04d/spec-%04d-%d-%04d.fits \n" %(plate, plate, mjd, fiberid))
    
        speclist.close()
    
        with open('speclist.txt', 'r') as f:
    
            names = f.readlines()
    
        for item in names:
    
            name = item[:-2]
            url = sdss_path + name
            r = requests.get(url)
    
            target_file = targer_directory + class_names[i] + '\\' + name[5:]
    
            with open(target_file,'wb') as f:
    
                f.write(r.content)