Skip to content

Commit

Permalink
fixing shape bugs in light_curve
Browse files Browse the repository at this point in the history
  • Loading branch information
dfm committed Nov 25, 2018
1 parent 49ebeb4 commit 08605a3
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 12 deletions.
13 changes: 10 additions & 3 deletions docs/_static/notebooks/gp.ipynb

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions exoplanet/distributions.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ def random(self, point=None, size=None):
def get_joint_r_and_b_distribution(name="", N_planets=None,
min_radius=0, max_radius=1,
r_star=None, testval_r=None, testval_b=None,
model=None, **kwargs):
**kwargs):
"""Get the joint distribution over radius and impact parameter
This uses the Espinoza (2018) parameterization of the distribution (see
Expand Down Expand Up @@ -246,14 +246,14 @@ def get_joint_r_and_b_distribution(name="", N_planets=None,
# Construct the join distribution
rb = RadiusImpactParameter(
name + "rb", min_radius=min_radius, max_radius=max_radius,
shape=(2, N_planets), testval=rb_test, model=model, **kwargs)
shape=(2, N_planets), testval=rb_test, **kwargs)

# Extract the individual components
b = pm.Deterministic(name + "b", rb[1], model=model)
b = pm.Deterministic(name + "b", rb[1])

# Determine if the radius parameter is the radius or the radius ratio
if r_star is None:
r = pm.Deterministic(name + "r", rb[0], model=model)
r = pm.Deterministic(name + "r", rb[0])
else:
ror = pm.Deterministic(name + "ror", rb[0])
r = pm.Deterministic(name + "r", ror * r_star)
Expand Down
12 changes: 7 additions & 5 deletions exoplanet/light_curve.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def get_light_curve(self, r, orbit, t, texp=None, oversample=7, order=2,
"""
r = tt.as_tensor_variable(r)
r = tt.reshape(r, (r.size,))
t = tt.as_tensor_variable(t)

if use_approx_in_transit:
Expand Down Expand Up @@ -119,18 +120,19 @@ def get_light_curve(self, r, orbit, t, texp=None, oversample=7, order=2,
tgrid = tt.shape_padright(t) + dt

# Madness to get the shapes to work out...
rgrid = tt.shape_padleft(r, tgrid.ndim + 1) \
+ tt.shape_padright(tt.zeros_like(tgrid), r.ndim)
rgrid = tt.shape_padleft(r, tgrid.ndim) \
+ tt.shape_padright(tt.zeros_like(tgrid), 1)

coords = orbit.get_relative_position(tgrid)
b = tt.sqrt(coords[0]**2 + coords[1]**2)
b = tt.reshape(b, rgrid.shape)
los = tt.reshape(coords[2], rgrid.shape)

lc = self.compute_light_curve(
b/self.r_star, rgrid/self.r_star, coords[2]/self.r_star)
b/self.r_star, rgrid/self.r_star, los/self.r_star)

if texp is not None:
stencil = tt.shape_padright(tt.shape_padleft(stencil, t.ndim),
r.ndim)
stencil = tt.shape_padright(tt.shape_padleft(stencil, t.ndim), 1)
lc = tt.sum(stencil * lc, axis=t.ndim)
lc = tt.sum(lc, axis=-1)

Expand Down

0 comments on commit 08605a3

Please sign in to comment.