コード例 #1
0
ファイル: LSSTsims.py プロジェクト: Sandy4321/multiband_LS
    def generate_lc(self, pointing_index, n_days, gmag, S82index,
                    random_state=None):
        gen = RRLyraeGenerated(self.S82data.ids[S82index],
                               random_state=random_state)

        pointing = self.pointings[pointing_index]
        pointing = pointing[pointing['mjd'] <= pointing['mjd'].min() + n_days]
        t = pointing['mjd']
        filts = pointing['filter']
        m5 = pointing['m5']
        
        # generate magnitudes; no errors
        mag = np.zeros_like(t)
        for i, filt in enumerate('ugrizy'):
            mask = (filts == i)
            # HACK: for y-band, use z-band template
            if filt == 'y': filt = 'z'
            mag[mask] = gen.generated(filt, t[mask])

        # adjust mags to desired r-band mean
        gmag_mean = mag[filts == 1].mean()
        mag += (gmag - gmag_mean)

        # compute magnitude error from m5 (eq 5 of Ivezic 2014 LSST paper)
        gamma = np.array([0.037, 0.038, 0.039, 0.039, 0.040, 0.040])
        x = 10 ** (0.4 * (mag - m5))
        sig2_rand = (0.04 - gamma[filts]) * x + gamma[filts] * x ** 2
        sig2_sys = 0.005 ** 2
        dmag = np.sqrt(sig2_sys + sig2_rand)

        rng = np.random.RandomState(random_state)
        mag += dmag * rng.randn(len(mag))

        return t, mag, dmag, filts
コード例 #2
0
ファイル: LSSTsims.py プロジェクト: remram44/multiband_LS
    def generate_lc(self,
                    pointing_index,
                    n_days,
                    gmag,
                    S82index,
                    random_state=None):
        gen = RRLyraeGenerated(self.S82data.ids[S82index],
                               random_state=random_state)

        pointing = self.pointings[pointing_index]
        pointing = pointing[pointing['mjd'] <= pointing['mjd'].min() + n_days]
        t = pointing['mjd']
        filts = pointing['filter']
        m5 = pointing['m5']

        # generate magnitudes; no errors
        mag = np.zeros_like(t)
        for i, filt in enumerate('ugrizy'):
            mask = (filts == i)
            # HACK: for y-band, use z-band template
            if filt == 'y': filt = 'z'
            mag[mask] = gen.generated(filt, t[mask])

        # adjust mags to desired r-band mean
        gmag_mean = mag[filts == 1].mean()
        mag += (gmag - gmag_mean)

        # compute magnitude error from m5 (eq 5 of Ivezic 2014 LSST paper)
        gamma = np.array([0.037, 0.038, 0.039, 0.039, 0.040, 0.040])
        x = 10**(0.4 * (mag - m5))
        sig2_rand = (0.04 - gamma[filts]) * x + gamma[filts] * x**2
        sig2_sys = 0.005**2
        dmag = np.sqrt(sig2_sys + sig2_rand)

        rng = np.random.RandomState(random_state)
        mag += dmag * rng.randn(len(mag))

        return t, mag, dmag, filts
コード例 #3
0
print("Extinction A_r = {0:.4f}".format(rrlyrae.obsmeta['rExt']))

# Generate data in a 6-month observing season
Nobs = 60
rng = np.random.RandomState(0)

nights = np.arange(180)
rng.shuffle(nights)
nights = nights[:Nobs]

# Find a subset of the simulated data. This is the same procedure as in
# fig_multiband_sim
t = 57000 + nights + 0.05 * rng.randn(Nobs)
dy = 0.06 + 0.01 * rng.randn(Nobs)
mags = np.array(
    [rrlyrae.generated(band, t, err=dy, corrected=False) for band in 'ugriz'])
filts = np.array([f for f in 'ugriz'])

# Here's our subset
filts = np.take(list('ugriz'), np.arange(Nobs), mode='wrap')
mags = mags[np.arange(Nobs) % 5, np.arange(Nobs)]
masks = [(filts == band) for band in 'ugriz']

fig, ax = plt.subplots(5, sharex=True, sharey=True)
fig.subplots_adjust(left=0.1, right=0.93, hspace=0.1)

periods = np.linspace(0.2, 1.4, 1000)

combos = [(1, 0), (0, 1), (2, 0), (2, 1), (2, 2)]

for axi, (Nbase, Nband) in zip(ax, combos):
コード例 #4
0
# Choose a Sesar 2010 object to base our fits on
lcid = 1019544
rrlyrae = RRLyraeGenerated(lcid, random_state=0)

# Generate data in a 6-month observing season
Nobs = 60
rng = np.random.RandomState(0)

nights = np.arange(180)
rng.shuffle(nights)
nights = nights[:Nobs]

t = 57000 + nights + 0.05 * rng.randn(Nobs)
dmag = 0.06 + 0.01 * rng.randn(Nobs)
mag = rrlyrae.generated('r', t, err=dmag, corrected=False)

periods = np.linspace(0.2, 1.4, 1000)

phase = (t / rrlyrae.period) % 1
phasefit = np.linspace(0, 1, 1000)
tfit = rrlyrae.period * phasefit

fig = plt.figure(figsize=(10, 4))
gs = plt.GridSpec(2, 2, left=0.07, right=0.95,
                  wspace=0.15, hspace=0.7,
                  bottom=0.15)
ax = [fig.add_subplot(gs[:, 0]),
      fig.add_subplot(gs[1, 1]),
      fig.add_subplot(gs[0, 1])]
コード例 #5
0
rrlyrae = RRLyraeGenerated(lcid, random_state=0)
print("Extinction A_r = {0:.4f}".format(rrlyrae.obsmeta['rExt']))

# Generate data in a 6-month observing season
Nobs = 60
rng = np.random.RandomState(0)

nights = np.arange(180)
rng.shuffle(nights)
nights = nights[:Nobs]

# Find a subset of the simulated data. This is the same procedure as in
# fig_multiband_sim
t = 57000 + nights + 0.05 * rng.randn(Nobs)
dy = 0.06 + 0.01 * rng.randn(Nobs)
mags = np.array([rrlyrae.generated(band, t, err=dy, corrected=False)
                 for band in 'ugriz'])
filts = np.array([f for f in 'ugriz'])

# Here's our subset
filts = np.take(list('ugriz'), np.arange(Nobs), mode='wrap')
mags = mags[np.arange(Nobs) % 5, np.arange(Nobs)]
masks = [(filts == band) for band in 'ugriz']

fig, ax = plt.subplots(5, sharex=True, sharey=True)
fig.subplots_adjust(left=0.1, right=0.93, hspace=0.1)

periods = np.linspace(0.2, 1.4, 1000)

combos = [(1, 0), (0, 1), (2, 0), (2, 1), (2, 2)]
コード例 #6
0
# Choose a Sesar 2010 object to base our fits on
lcid = 1019544
rrlyrae = RRLyraeGenerated(lcid, random_state=0)

# Generate data in a 6-month observing season
Nobs = 60
rng = np.random.RandomState(0)

nights = np.arange(180)
rng.shuffle(nights)
nights = nights[:Nobs]

t = 57000 + nights + 0.05 * rng.randn(Nobs)
dmag = 0.06 + 0.01 * rng.randn(Nobs)
mag = rrlyrae.generated('r', t, err=dmag, corrected=False)

periods = np.linspace(0.2, 1.4, 1000)

phase = (t / rrlyrae.period) % 1
phasefit = np.linspace(0, 1, 1000)
tfit = rrlyrae.period * phasefit

fig = plt.figure(figsize=(10, 4))
gs = plt.GridSpec(3,
                  2,
                  left=0.07,
                  right=0.95,
                  bottom=0.15,
                  wspace=0.15,
                  hspace=0.3)
コード例 #7
0
# Choose a Sesar 2010 object to base our fits on
lcid = 1019544
rrlyrae = RRLyraeGenerated(lcid, random_state=0)
print("Extinction A_r = {0:.4f}".format(rrlyrae.obsmeta['rExt']))

# Generate data in a 6-month observing season
Nobs = 30
rng = np.random.RandomState(0)

nights = np.arange(6 * Nobs)
rng.shuffle(nights)
nights = nights[:Nobs]

t = 57000 + nights + 0.05 * rng.randn(Nobs)
dy = 0.06 + 0.01 * rng.randn(Nobs)
mags = np.array([rrlyrae.generated(band, t, err=dy, corrected=False)
                 for band in 'ugriz'])
filts = np.array([f for f in 'ugriz'])


def plot_data(ax, t, y, dy, f):
    for i, band in enumerate(filts):
        mask = (f == band)
        ax.errorbar((t[mask] / rrlyrae.period) % 1, y[mask], dy[mask],
                    fmt='.', label=band)
    ax.set_ylim(18, 14.5)
    #ax.legend(loc='upper left', fontsize=10, ncol=3)
    ax.set_xlabel('phase')
    ax.set_ylabel('magnitude')