/usr/lib/python3/dist-packages/astroML/datasets/rrlyrae_mags.py is in python3-astroml 0.3-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | from __future__ import print_function, division
import os
import numpy as np
from . import get_data_home
from . import fetch_sdss_S82standards
from .tools import download_with_progress_bar
DATA_URL = ("http://www.astro.washington.edu/users/"
"ivezic/DMbook/data/RRLyrae.fit")
def fetch_rrlyrae_mags(data_home=None, download_if_missing=True):
"""Loader for RR-Lyrae data
Parameters
----------
data_home : optional, default=None
Specify another download and cache folder for the datasets. By default
all scikit learn data is stored in '~/astroML_data' subfolders.
download_if_missing : optional, default=True
If False, raise a IOError if the data is not locally available
instead of trying to download the data from the source site.
Returns
-------
data : recarray, shape = (483,)
record array containing imaging data
Examples
--------
>>> from astroML.datasets import fetch_rrlyrae_mags
>>> data = fetch_rrlyrae_mags()
>>> data.shape # number of objects in dataset
(483,)
>>> print(data.names[:5]) # names of the first five columns
['ra', 'dec', 'run', 'rExtSFD', 'uRaw']
>>> print(data['ra'][:2])
[ 0.265165 0.265413]
>>> print(data['dec'][:2])
[-0.444861 -0.62201 ]
Notes
-----
This data is from table 1 of Sesar et al 2010 ApJ 708:717
"""
# fits is an optional dependency: don't import globally
from astropy.io import fits
data_home = get_data_home(data_home)
if not os.path.exists(data_home):
os.makedirs(data_home)
archive_file = os.path.join(data_home, os.path.basename(DATA_URL))
if not os.path.exists(archive_file):
if not download_if_missing:
raise IOError('data not present on disk. '
'set download_if_missing=True to download')
fitsdata = download_with_progress_bar(DATA_URL)
open(archive_file, 'wb').write(fitsdata)
hdulist = fits.open(archive_file)
return np.asarray(hdulist[1].data)
def fetch_rrlyrae_combined(data_home=None, download_if_missing=True):
"""Loader for RR-Lyrae combined data
This returns the combined RR-Lyrae colors and SDSS standards colors.
The RR-Lyrae sample is confirmed through time-domain observations;
this result in a nice dataset for testing classification routines.
Parameters
----------
data_home : optional, default=None
Specify another download and cache folder for the datasets. By default
all scikit learn data is stored in '~/astroML_data' subfolders.
download_if_missing : optional, default=True
If False, raise a IOError if the data is not locally available
instead of trying to download the data from the source site.
Returns
-------
X : ndarray
a shape (n_samples, 4) array. Columns are u-g, g-r, r-i, i-z
y : ndarray
a shape (n_samples,) array of labels. 1 indicates an RR Lyrae,
0 indicates a background star.
"""
#----------------------------------------------------------------------
# Load data
kwds = dict(data_home=data_home,
download_if_missing=download_if_missing)
rrlyrae = fetch_rrlyrae_mags(**kwds)
standards = fetch_sdss_S82standards(**kwds)
#------------------------------------------------------------
# perform color cuts on standard stars
# these come from eqns 1-4 of Sesar et al 2010, ApJ 708:717
u_g = standards['mmu_u'] - standards['mmu_g']
g_r = standards['mmu_g'] - standards['mmu_r']
r_i = standards['mmu_r'] - standards['mmu_i']
i_z = standards['mmu_i'] - standards['mmu_z']
standards = standards[(u_g > 0.7) & (u_g < 1.35) &
(g_r > -0.15) & (g_r < 0.4) &
(r_i > -0.15) & (r_i < 0.22) &
(i_z > -0.21) & (i_z < 0.25)]
#----------------------------------------------------------------------
# get magnitudes and colors; split into train and test sets
mags_rr = np.vstack([rrlyrae[f + 'mag'] for f in 'ugriz'])
colors_rr = mags_rr[:-1] - mags_rr[1:]
mags_st = np.vstack([standards['mmu_' + f] for f in 'ugriz'])
colors_st = mags_st[:-1] - mags_st[1:]
# stack the two sets of colors together
X = np.vstack((colors_st.T, colors_rr.T))
y = np.zeros(X.shape[0])
y[-colors_rr.shape[1]:] = 1
return X, y
|