FSPL User Class

FSPL_parallax

class model.FSPL_PhotAstrom_Par_Param1(*args, **kwargs)

Bases: ModelClassABC, FSPL_PhotAstrom, FSPL_Parallax, FSPL_PhotAstromParam1

PSPL model for astrometry and photometry - physical parameterization.

A Point Source Point Lens model for microlensing. This model uses a parameterization that depends on only physical quantities such as the lens mass and positions and proper motions of both the lens and source.

Note the attributes, RA (raL) and Dec (decL) are required if you are calculating a model with parallax.

Parameters:
mL: float

Mass of the lens (Msun)

t0: float

Time (MJD.DDD) of closest projected approach between source and lens as seen in heliocentric coordinates. This should be close, but not exactly aligned with the photometric peak, as seen from Earth or a Solar System satellite.

beta: float

Angular distance between the lens and source on the plane of the sky (mas). Can be

  • positive (u0_amp > 0 when u0_hat[0] (East component) < 0) or

  • negative (u0_amp < 0 when u0_hat[0] (East component) > 0).

dL: float

Distance from the observer to the lens (pc)

dL_dS: float

Ratio of Distance from the obersver to the lens to Distance from the observer to the source

xS0_E: float

RA Source position on sky at t = t0 (arcsec) in an arbitrary ref. frame.

xS0_N: float

Dec source position on sky at t = t0 (arcsec) in an arbitrary ref. frame.

muL_E: float

RA Lens proper motion (mas/yr)

muL_N: float

Dec Lens proper motion (mas/yr)

muS_E: float

RA Source proper motion (mas/yr)

muS_N: float

Dec Source proper motion (mas/yr)

radiusS: float

Projected radius of the source star in milli-arcseconds on the sky plane.

b_sff: float

The ratio of the source flux to the total (source + neighbors + lens) \(b_sff = f_S / (f_S + f_L + f_N)\). This must be passed in as a list or array, with one entry for each photometric filter.

mag_src: float

Photometric magnitude of the source. This must be passed in as a list or array, with one entry for each photometric filter.

n_outline: int

Number of boundary points to use when approximating the source outline. Calculation time scales approximately linearly with ‘n_outline’.

raL: float, optional

Right ascension of the lens in decimal degrees.

decL: float, optional

Declination of the lens in decimal degrees.

obsLocation: str, optional

The observers location (def=’earth’) such as ‘jwst’ or ‘spitzer’.

Methods

animate(crossings, time_steps, frame_time, ...)

Produces animation of microlensing event.

calc_piE_ecliptic()

Get piE_ecliptic, the microlensing parallax vector in the ecliptic coorindate system.

get_all_arrays(t_obs)

Obtain the image and amplitude arrays for each t_obs.

get_amplification(t)

Get an array of the photometric amplifications at the input times.

get_astrometry(t_obs[, image_arr, amp_arr, ...])

Position of the observed (unresolved) source position in arcsec.

get_astrometry_outline_unlensed(t_obs)

Get the astrometry of the source outline if the lens didn't exist.

get_astrometry_unlensed(t_obs)

Get the astrometry of the source if the lens didn't exist.

get_centroid_shift(t[, ast_filt_idx])

Get the centroid shift (in mas) at the input times.

get_chi2_astrometry(t_obs, x_obs, y_obs, ...)

Get the chi^2 value for this model given input astrometry data and uncertainties for the specified astrometric data set.

get_chi2_photometry(t_obs, mag_obs, mag_err_obs)

Get chi^2 values for the model and input photometric data in the specified photometric filter or data set.

get_geoproj_ast_params(t0par[, plot])

Get the astrometric microlensing model parameters in the geocentric-projected coordinate system, which just applies a rectalinear position and velocity offset into the geocentric frame at time t0par.

get_geoproj_params(t0par[, plot])

Get the photometric microlensing model parameters in the geocentric-projected coordinate system, which just applies a rectalinear position and velocity offset into the geocentric frame at time t0par.

get_lens_astrometry(t_obs)

Get the astrometry for the foreground lens at the input times.

get_lnL_constant(err_obs)

Get the natural log of the constant normalization terms of the likelihood.

get_photometry(t_obs[, filt_idx, amp_arr, ...])

Get the photometry for the combined source images.

get_resolved_amplification(t_obs[, ...])

Get the photometric amplification term at a set of times, t for both the plus and minus images.

get_resolved_astrometry(t_obs[, image_arr, ...])

Position of the observed (lensed) source position on the sky.

get_resolved_astrometry_outline(t_obs)

Get the x, y astrometry for each of the two lensed source images and all the associated outline points.

get_resolved_photometry(t_obs[, filt_idx, ...])

Get the photometry for each of the lensed source images.

get_source_outline_astrometry(center)

Return astrometric points that outline the outer circumference of the source star.

get_u(t_obs)

Get the separation vector,

get_u_outline(t_obs)

Get the separation vector,

log_likely_astrometry(t_obs, x_obs, y_obs, ...)

Get the summed natural log of the likelihood for the input astrometric data in the specified filter or data sets.

log_likely_astrometry_each(t_obs, x_obs, ...)

Get the natural log of the likelihood for the input astrometric data in the specified filter or data sets.

log_likely_photometry(t_obs, mag_obs, ...[, ...])

Get the summed natural log of the likelihood for the input photometric data for the specified filter or data set.

log_likely_photometry_each(t_obs, mag_obs, ...)

Get the natural log of the likelihood for the input photometric data in the specified filter or data sets.

set_observer_location

start

animate(crossings, time_steps, frame_time, name, size, zoom, astrometry)

Produces animation of microlensing event. This function takes the PSPL and makes an animation, the input variables are as follows

Parameters:
tE:
number of einstein crossings times before/after the peak you want the animation to plot

e.g tE = 2 => graph will go from -2 tE to 2 tE

time_steps:

number of time steps before/after peak, so total number of time steps will be 2 times this value

frame_time:

times in ms of each frame in the animation

name: string

the animation will be saved as name.html

size: list

[horizontal, vertical] cm’s

zoom:

# of einstein radii plotted in vertical direction

calc_piE_ecliptic()

Get piE_ecliptic, the microlensing parallax vector in the ecliptic coorindate system.

get_all_arrays(t_obs)

Obtain the image and amplitude arrays for each t_obs. These arrays contain the positions for each point in the outline for each lensed image.

Parameters:
t_obsarray_like

Array of times to model.

Returns:
imagesarray_like

Array/tuple of positions of each lensed image at each t_obs. Shape = [len(t_obs), n_images=2, [E,N]] The last axis contains East and North positions on the sky in arcseconds.

amp_arrarray_like

Array/tuple of amplification of each lensed image at each t_obs. Shape = [len(t_obs), n_images=2]

Notes

The algorithm uses green’s theorem to change an area integral of the image of the source into a path integral around the outside outline. We perform a first-order contour integral to approximate the area.

get_amplification(t)

Get an array of the photometric amplifications at the input times. Parallax is included.

Parameters:
tarray_like

Array of times in MJD.DDD

get_astrometry(t_obs, image_arr=None, amp_arr=None, ast_filt_idx=0)

Position of the observed (unresolved) source position in arcsec.

Parameters:
t_obsarray_like

Array of times to model.

Returns:
model_posarray_like

Array of vector positions of the centroid at each t_obs.

Other Parameters:
image_arrarray_like

Array of complex image positions at each t_obs, i.e. image_arr.shape = (len(t_obs), number of images at each t_obs). Each value in this array is complex (real = north component, imaginary = east component)

amp_arrarray_like

Array of magnifications of each images. Same shape as image_arr.

get_astrometry_outline_unlensed(t_obs)

Get the astrometry of the source outline if the lens didn’t exist.

get_astrometry_unlensed(t_obs)

Get the astrometry of the source if the lens didn’t exist. Parallax is included. The returned array is in arcsec and has a shape of [len(t), 2] where the second dimension includes [RA, Dec] positions in arcsec.

Parameters:
tarray_like

Time (in MJD).

Returns:
xS_unlensednumpy array, dtype=float, shape = [len(t), 2]

The unlensed positions of the source in arcseconds.

get_centroid_shift(t, ast_filt_idx=0)

Get the centroid shift (in mas) at the input times. The centroid shift is the difference between the lensed, unresolved position and the intrinsic position of the source. Parallax is included. The returned array is in arcsec and has a shape of [len(t), 2] where the second dimension includes [RA, Dec] positions in arcsec.

Parameters:
tarray_like

Time (in MJD).

get_chi2_astrometry(t_obs, x_obs, y_obs, x_err_obs, y_err_obs, ast_filt_idx=0)

Get the chi^2 value for this model given input astrometry data and uncertainties for the specified astrometric data set.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

x_obsarray_like

List of relative R.A. astrometric positions on the sky in arcsec. Length must match t_obs.

y_obsarray_like

List of relative Dec. astrometric positions on the sky in arcsec. Length must match t_obs.

x_err_obsarray_like

List of relative R.A. astrometric positional errors on the sky in arcsec. Length must match t_obs.

y_err_obsarray_like

List of relative Dec. astrometric positional errors on the sky in arcsec. Length must match t_obs.

ast_filt_idxint, optional

The index of the astrometric filter or data set.

Returns:
chi2array_like

List of chi^2 values from the model and astrometric data.

get_chi2_photometry(t_obs, mag_obs, mag_err_obs, filt_index=0)

Get chi^2 values for the model and input photometric data in the specified photometric filter or data set.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

mag_obsarray_like

List of observed photometric measurements of the microlensing event in magnitudes. Length must be the same as t_obs.

mag_obs_errarray_like

List of observed photometric uncertainties of the microlensing event in magnitudes. Length must be the same as t_obs.

filt_idxint, optional

Index of the photometric filter or data set.

Returns:
chi2array_like

List of chi^2 values from the model and photometric data.

get_geoproj_ast_params(t0par, plot=False)

Get the astrometric microlensing model parameters in the geocentric-projected coordinate system, which just applies a rectalinear position and velocity offset into the geocentric frame at time t0par. Note, this is not a true geocentric frame. It is only geocentric at time t0par. However, this is a common convention for photometry-only microlens models in the literature. The benefits of the geocentric-projected frame is that the t0_{geoProj} can more closely match the observed peak in the light curve.

Parameters:
t0parfloat

Time in MJD at which to convert into the geocentric frame.

Returns:
xS0E_gfloat

The East-component of source position vector on the sky, in the geocentric-projected frame.

xS0N_gfloat

The North-component of source position vector on the sky, in the geocentric-projected frame.

muSE_gfloat

The East-component of source proper motion vector, in the geocentric-projected frame.

muSN_gfloat

The North-component of source proper motion vector, in the geocentric-projected frame.

get_geoproj_params(t0par, plot=False)

Get the photometric microlensing model parameters in the geocentric-projected coordinate system, which just applies a rectalinear position and velocity offset into the geocentric frame at time t0par. Note, this is not a true geocentric frame. It is only geocentric at time t0par. However, this is a common convention for photometry-only microlens models in the literature. The benefits of the geocentric-projected frame is that the t0_{geoProj} can more closely match the observed peak in the light curve.

Parameters:
t0parfloat

Time in MJD at which to convert into the geocentric frame.

Returns:
t0_gfloat

The time (in MJD) of closest approach between the lens and source in the geocentric-projected frame.

u0_gfloat

The distance (in thetaE) at closest approach in the geocentric-projected frame.

tE_gfloat

The Einsten crossing time (in MJD) in the geocentric-projected frame.

piEE_gfloat

The East-component of the microlensing parallax vector, in the geocentric-projected frame. This also indicates the East-component of the relative proper motion vector between the source and lens

piEN_gfloat

The North-component of the microlensing parallax vector, in the geocentric-projected frame. This also indicates the North-component of the relative proper motion vector between the source and lens

get_lens_astrometry(t_obs)

Get the astrometry for the foreground lens at the input times. Parallax is included. The returned array is in arcsec and has a shape of [len(t), 2] where the second dimension includes [RA, Dec] positions in arcsec.

Parameters:
tarray_like

Time (in MJD).

get_lnL_constant(err_obs)

Get the natural log of the constant normalization terms of the likelihood.

\[-0.5 * \ln{2 \pi \sigma_{obs}^2}\]
Parameters:
err_obsarray_like

List of the uncertainties.

Returns:
List of ln(likelihood constants).
get_photometry(t_obs, filt_idx=0, amp_arr=None, print_warning=True)

Get the photometry for the combined source images.

Parameters:
t_obsarray_like

Array of times to model.

Returns:
mag_modelarray_like

Magnitude of the centroid at t_obs.

Other Parameters:
amp_arrarray_like

Amplifications of each individual image at each time, i.e. amp_arr.shape = (len(t_obs), number of images at each t_obs).

This will over-ride t_obs; but is more efficient when calculating both photometry and astrometry. If None, then just use t_obs.

get_resolved_amplification(t_obs, filt_idx=0, amp_arr=None)

Get the photometric amplification term at a set of times, t for both the plus and minus images.

get_resolved_astrometry(t_obs, image_arr=None, amp_arr=None)

Position of the observed (lensed) source position on the sky.

Parameters:
t_obsarray_like, shape = [N_times]

Array of times to model.

Returns:
model_posarray_like. shape = [N_times, N_images=2, 2]

Array of vector positions of the centroid at each t_obs. Last axis contains East/North positions.

Other Parameters:
image_arrarray_like

Array of complex image positions at each t_obs, i.e. image_arr.shape = (len(t_obs), number of images at each t_obs, [E,N]).

amp_arrarray_like

Array of magnifications of each images. Same shape as image_arr.

get_resolved_astrometry_outline(t_obs)

Get the x, y astrometry for each of the two lensed source images and all the associated outline points. The two lensed source images are labeled plus and minus.

These are actual positions on the sky.

Returns:
[xS_plus, xS_minus]list of numpy arrays

xS_plus is the vector position of the plus image. xS_minus is the vector position of the plus image. Each shape = [len(t_obs), self.n_outline, 2] where the last axis contains East and North positions.

get_resolved_photometry(t_obs, filt_idx=0, amp_arr=None)

Get the photometry for each of the lensed source images. Implement with no blending (since we don’t support different blendings for the different images).

Parameters:
t_obsarray_like

Array of times to model.

Returns:
mag_modelarray_like

Magnitude of each lensed image centroid at t_obs. Shape = [2, len(t_obs)]

Other Parameters:
amp_arrarray_like

Amplifications of each individual image and each outline point for that image at each time, i.e. amp_arr.shape = (len(t_obs), self.n_outline, number of images at each t_obs).

This will over-ride t_obs; but is more efficient when calculating both photometry and astrometry. If None, then just use t_obs.

filt_idxint

The filter index (def=0).

get_source_outline_astrometry(center)

Return astrometric points that outline the outer circumference of the source star. The outline is described as a circle of radius self.radiusS and is evaluated at self.n_outline number of points.

Parameters:
centernumpy array

Center position of the source. Shape = [2, len(time)]

Returns:
source_pointsnumpy array

Returns an array of shape = [2, self.n_outline, len(time)]

get_u(t_obs)

Get the separation vector,

ec{u}(t), which is the unlensed

source - lens separation vector on the plane of the sky in units of heta_E.

get_u_outline(t_obs)

Get the separation vector,

ec{u}(t), which is the unlensed

source - lens separation vector for each point of the source outline. Positions are on the plane of the sky in units of heta_E.

log_likely_astrometry(t_obs, x_obs, y_obs, x_err_obs, y_err_obs, ast_filt_idx=0)

Get the summed natural log of the likelihood for the input astrometric data in the specified filter or data sets. Note, this function returns the full ln(likelihood), including the normalization constant.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

x_obsarray_like

List of relative R.A. astrometric positions on the sky in arcsec. Length must match t_obs.

y_obsarray_like

List of relative Dec. astrometric positions on the sky in arcsec. Length must match t_obs.

x_err_obsarray_like

List of relative R.A. astrometric positional errors on the sky in arcsec. Length must match t_obs.

y_err_obsarray_like

List of relative Dec. astrometric positional errors on the sky in arcsec. Length must match t_obs.

ast_filt_idxint, optional

Index of the astrometric filter or data set.

Returns:
ln_Lfloat

The ln(likelihood) summed over all astrometric measurements.

log_likely_astrometry_each(t_obs, x_obs, y_obs, x_err_obs, y_err_obs, ast_filt_idx=0)

Get the natural log of the likelihood for the input astrometric data in the specified filter or data sets. Note, this function eturns a list and it is the full ln(likelihood), including the normalization constant.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

x_obsarray_like

List of relative R.A. astrometric positions on the sky in arcsec. Length must match t_obs.

y_obsarray_like

List of relative Dec. astrometric positions on the sky in arcsec. Length must match t_obs.

x_err_obsarray_like

List of relative R.A. astrometric positional errors on the sky in arcsec. Length must match t_obs.

y_err_obsarray_like

List of relative Dec. astrometric positional errors on the sky in arcsec. Length must match t_obs.

ast_filt_idxint, optional

Index of the astrometric filter or data set.

Returns:
ln_Larray_like

List of ln(likelihood) for each astrometric measurement.

log_likely_photometry(t_obs, mag_obs, mag_err_obs, filt_index=0)

Get the summed natural log of the likelihood for the input photometric data for the specified filter or data set. Note, this function returns the full ln(likelihood), including the normalization constant.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

mag_obsarray_like

List of observed photometric measurements of the microlensing event in magnitudes. Length must be the same as t_obs.

mag_obs_errarray_like

List of observed photometric uncertainties of the microlensing event in magnitudes. Length must be the same as t_obs.

filt_idxint, optional

Index of the photometric filter or data set.

Returns:
ln_Lfloat

ln(likelihood) summed over the photometric measurement

log_likely_photometry_each(t_obs, mag_obs, mag_err_obs, filt_index=0)

Get the natural log of the likelihood for the input photometric data in the specified filter or data sets. Note, this function returns a list and it is the full ln(likelihood), including the normalization constant.

Parameters:
t_obsarray_like

List of times in MJD for the observations.

mag_obsarray_like

List of observed photometric measurements of the microlensing event in magnitudes. Length must be the same as t_obs.

mag_obs_errarray_like

List of observed photometric uncertainties of the microlensing event in magnitudes. Length must be the same as t_obs.

filt_idxint, optional

Index of the photometric filter or data set.

Returns:
ln_Larray_like

List of ln(likelihood) for each photometric measurement.