Esempio n. 1
0
def count_peaks(params, min_prominence=0., base_mag=19.):
    """
	Compute the number of peaks in the parallax event curve

	Parameters
	----------
	params : dict
		Dictionary containing the parameters to compute the parallax curve
	min_prominence : float
		Minimum prominence of a peak to be taken into account, in magnitude
	base_mag : float
		Base magnitude of the unlensed source

	Returns
	-------
	int
		Number of peaks detected
	"""
    t = np.arange(params['t0'] - 2 * np.abs(params['tE']),
                  params['t0'] + 2 * np.abs(params['tE']), 1)
    cpara = microlens_parallax(t, **params)
    peaks, infos = find_peaks(cpara - base_mag, prominence=min_prominence)
    if len(peaks):
        return len(peaks)  #np.max(infos["prominences"])
    else:
        return 0
Esempio n. 2
0
def simplemax_distance(params, dt=1):
    t = np.arange(params['t0'] - 200, params['t0'] + 200, dt)
    return np.max(
        np.abs(
            np.max(
                np.abs(
                    microlens_simple(t, **params) -
                    microlens_parallax(t, **params)))))
Esempio n. 3
0
def update_plot(xk, convergence):
	convergence=0
	u0, t0, tE = xk
	global curr_max
	global i
	i+=1
	axs[1].set_title(str(i))
	pdif1.set_ydata(np.abs((microlens_parallax(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'],p1['theta']) - microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.))))
	ppar1.set_ydata(-(microlens_parallax(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'], p1['theta'])))
	pnop1.set_ydata(-(microlens_simple(t, 19, 0, u0, t0, tE, p1['delta_u'], p1['theta'])))
	l1.set_xdata(t0 - 6*tE)
	l2.set_xdata(t0 + 6*tE)
	plt.pause(0.000001)
	hl2.set_ydata(-convergence)
	if convergence>curr_max:
		curr_max = convergence
		hl.set_ydata(-convergence)
	axs[1].relim()
	axs[1].autoscale_view()
	fig.canvas.draw()
Esempio n. 4
0
def fastfit_simplemax_distance(params, init_dt=0.5):
    t = np.arange(params['t0'] - 200, params['t0'] + 200, init_dt)
    init_t = t[(-np.abs(
        microlens_parallax(t, **params) - microlens_simple(t, **params))
                ).argmin()]
    m = Minuit(absdiff2,
               t=init_t,
               t0=params['t0'],
               u0=params['u0'],
               tE=params['tE'],
               delta_u=params['delta_u'],
               theta=params['theta'],
               fix_t0=True,
               fix_u0=True,
               fix_tE=True,
               fix_delta_u=True,
               fix_theta=True,
               error_t=10,
               errordef=1,
               print_level=0)
    m.migrad()
    return [m.get_fmin().fval, dict(m.values)]
Esempio n. 5
0
def curvefit_func(t, u0, t0, tE, pu0, pt0, ptE, pdu, ptheta):
	return (microlens_parallax(t, 19, 0, pu0, pt0, ptE, pdu, ptheta) - microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.))**2
Esempio n. 6
0
def max_fitter(t, u0, t0, tE, pu0, pt0, ptE, pdu, ptheta):
	return -np.abs((microlens_parallax(t, 19, 0, pu0, pt0, ptE, pdu, ptheta) - microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.)))
Esempio n. 7
0
def microlens_parallax_inv(t, u0, t0, tE, delta_u, theta): return -microlens_parallax(np.array([t]), 19., 0.,  u0, t0, tE, delta_u, theta)
mmin = Minuit(microlens_parallax_inv,
Esempio n. 8
0
def drydiff(t, u0, t0, tE, pu0, pt0, ptE, pdu, ptheta):
	return microlens_parallax(t, 19, 0, pu0, pt0, ptE, pdu, ptheta) - microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.)
Esempio n. 9
0
	def max_fitter(t):
		t = np.array([t])
		return -np.abs((microlens_parallax(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'], p1['theta']) - microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.)))
Esempio n. 10
0
print(df.idx.nunique())

tmin = 48928
tmax = 52697
# df = df[(df.mass == 30) & (df.fitted_u0<2.0)]
p2 = df.sort_values(by='distance', ascending=False).iloc[1000].to_dict()
# p1 = df.iloc[np.random.randint(0, len(df))].to_dict()
print(p2)
p2['blend']=0.
p2['mag']=19.

p1 = {key: p2[key] for key in ['mag', 'blend', 'u0', 'tE', 't0', 'theta', 'delta_u']}

t = np.arange(tmin, tmax, 0.5)
cnopa = microlens_simple(t, **p1)
cpara = microlens_parallax(t, **p1)

fig, axs = plt.subplots(ncols=1, nrows=2, sharex='col')
pdif1, = axs[1].plot(t, np.abs((microlens_parallax(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'],p1['theta']) - microlens_simple(t, 19., 0., p1['u0'], p1['t0'], p1['tE'], 0., 0.))))
ppar1, = axs[0].plot(t, -(microlens_parallax(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'], p1['theta'])))
pnop1, = axs[0].plot(t, -(microlens_simple(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'], p1['theta'])))
axs[0].plot(t, -(microlens_simple(t, 19, 0, p1['u0'], p1['t0'], p1['tE'], p1['delta_u'], p1['theta'])), ls='--')
hl = axs[1].axhline(0, color='black', linewidth=0.5)
hl2 = axs[1].axhline(0, color='red', linewidth=0.5)
l1 = axs[1].axvline(tmin, color='red', linewidth=0.5)
l2 = axs[1].axvline(tmax, color='red', linewidth=0.5)
pts, = axs[1].plot([], [], ls='', marker='+')
# plt.xlim(51500, 52500)
curr_max=-np.inf
i=0
explored_parameters=[]
Esempio n. 11
0
def absdiff2(t, u0, t0, tE, delta_u, theta):
    t = np.array([t])
    return -np.abs((microlens_parallax(t, 19, 0, u0, t0, tE, delta_u, theta) -
                    microlens_simple(t, 19., 0., u0, t0, tE, 0., 0.)))
Esempio n. 12
0
def absdiff_dict(t, params):
    return -np.abs(
        (microlens_parallax(t, 19, 0, params['u0'], params['t0'], params['tE'],
                            params['delta_u'], params['theta']) -
         microlens_simple(t, 19., 0., params['u0'], params['t0'], params['tE'],
                          0., 0.)))
Esempio n. 13
0
 def minus_parallax(t):
     t = np.array([t])
     return microlens_parallax(t, 19, 0, params['u0'], params['t0'],
                               params['tE'], params['delta_u'],
                               params['theta'])
Esempio n. 14
0
def distance1(t, params):
    return np.max(
        np.abs(
            microlens_simple(t, **params) - microlens_parallax(t, **params)))