starry: Tutorial Testing, New EB tutorial "fast" mode doesn't seem to run

Hey Rodrigo,

Currently testing your tutorials. FYI version numbers:

theano 1.0.4
starry 1.0.0.dev39+g56020701
pymc3 3.8

The new EB tutorials are awesome and I can’t wait to use them in my research!

I’m trying to use this tutorial for the “fast” method of solving for all the parameters in a system including the map. (I’m applying it to a system where I want to find the possible phase curve of the planet). When I try to build a starry model with reasonable parameters for the system I care about I end up with an error when I try to evaluate the flux, and I’m struggling to parse the error.

Input

p1, t01 = 3.0931514, 2.8554633 + 2457000
p2, t02 =  6.7666719, 0.061385 + 2457000

with pm.Model() as model:
    PositiveNormal = pm.Bound(pm.Normal, lower=0.0)

    # Primary
    A_inc = pm.Normal("A_inc", mu=90, sd=5, testval=90)
    A_amp = 1.0
    A_r = PositiveNormal("A_r", mu=0.778, sd=0.005, testval=0.778)
    A_m = PositiveNormal("A_m", mu=0.81, sd=0.03, testval=0.81)
    A_prot = PositiveNormal("A_prot", mu=10, sd=10, testval=10)
    pri = starry.Primary(
        starry.Map(ydeg=5, udeg=2, inc=A_inc, amp=A_amp),
        r=A_r,
        m=A_m,
        prot=A_prot,
    )
    pri.map[1] = 0.6278
    pri.map[2] = 0.1045

    # Secondary
    B_inc = pm.Normal("B_inc", mu=85.05, sd=0.09, testval=85.05)
    B_amp = PositiveNormal('B_amp', mu=0.0001, sd=0.001, testval=0.0001)
    B_r = PositiveNormal("B_r", mu=0.01883983, sd=0.0005, testval=0.01883983)
    B_m = PositiveNormal("B_m", mu=1, sd=0.1, testval=1)
    
    B_porb = PositiveNormal("B_porb", mu=p1, sd=0.01, testval=p1)
    B_prot = B_porb
    B_t0 = pm.Normal("B_t0", mu=t01, sd=0.0001, testval=t01)

    sec = starry.Secondary(
        starry.Map(ydeg=2, udeg=0, inc=B_inc, amp=B_amp),
        r=B_r,
        m=B_m,
        porb=B_porb,
        prot=B_prot,
        t0=B_t0,
        inc=B_inc,
    )

    
    # System
    sys = starry.System(pri, sec)
    sys.flux(0).eval()

Error

MissingInputError: Input 0 of the graph (indices start from 0), used to compute Elemwise{exp,no_inplace}(B_r_lowerbound__), was not provided and not given a value. Use the Theano flag exception_verbosity='high', for more information on this error.

I also get the same error when I try to run the full example from the docs:

Input


map = starry.Map(ydeg=5)
map.add_spot(amp=-0.075, sigma=0.1, lat=0, lon=-30)
A_y = np.array(map.y[1:])
map.reset()
map.add_spot(amp=-0.075, sigma=0.1, lat=-30, lon=60)
B_y = np.array(map.y[1:])

A = dict(
    ydeg=5,  # degree of the map
    udeg=2,  # degree of the limb darkening
    inc=80.0,  # inclination in degrees
    amp=1.0,  # amplitude (a value prop. to luminosity)
    r=1.0,  #  radius in R_sun
    m=1.0,  # mass in M_sun
    prot=1.25,  # rotational period in days
    u=[0.40, 0.25],  # limb darkening coefficients
    y=A_y,  # the spherical harmonic coefficients
)

B = dict(
    ydeg=5,  # degree of the map
    udeg=2,  # degree of the limb darkening
    inc=80.0,  # inclination in degrees
    amp=0.1,  # amplitude (a value prop. to luminosity)
    r=0.7,  #  radius in R_sun
    m=0.7,  #  mass in M_sun
    porb=1.00,  # orbital period in days
    prot=0.625,  # rotational period in days
    t0=0.15,  # reference time in days (when it transits A)
    u=[0.20, 0.05],  # limb darkening coefficients
    y=B_y,  # the spherical harmonic coefficients
)

t = np.linspace(-2.5, 2.5, 1000)
flux_true = sys.flux(t)
sigma = 0.0005
flux = flux_true + sigma * np.random.randn(len(t))


with pm.Model() as model:
    PositiveNormal = pm.Bound(pm.Normal, lower=0.0)

    # Primary
    A_inc = pm.Normal("A_inc", mu=80, sd=5, testval=80)
    A_amp = 1.0
    A_r = PositiveNormal("A_r", mu=0.95, sd=0.1, testval=0.95)
    A_m = PositiveNormal("A_m", mu=1.05, sd=0.1, testval=1.05)
    A_prot = PositiveNormal("A_prot", mu=1.25, sd=0.01, testval=1.25)
    pri = starry.Primary(
        starry.Map(ydeg=A["ydeg"], udeg=A["udeg"], inc=A_inc, amp=A_amp),
        r=A_r,
        m=A_m,
        prot=A_prot,
    )
    pri.map[1] = A["u"][0]
    pri.map[2] = A["u"][1]

    # Secondary
    B_inc = pm.Normal("B_inc", mu=80, sd=5, testval=80)
    B_amp = 0.1
    B_r = PositiveNormal("B_r", mu=0.75, sd=0.1, testval=0.75)
    B_m = PositiveNormal("B_m", mu=0.70, sd=0.1, testval=0.70)
    B_prot = PositiveNormal("B_prot", mu=0.625, sd=0.01, testval=0.625)
    B_porb = PositiveNormal("B_porb", mu=1.01, sd=0.01, testval=1.01)
    B_t0 = pm.Normal("B_t0", mu=0.15, sd=0.001, testval=0.15)
    sec = starry.Secondary(
        starry.Map(ydeg=B["ydeg"], udeg=B["udeg"], inc=B_inc, amp=B_amp),
        r=B_r,
        m=B_m,
        porb=B_porb,
        prot=B_prot,
        t0=B_t0,
        inc=B_inc,
    )
    sec.map[1] = B["u"][0]
    sec.map[2] = B["u"][1]

    # System
    sys = starry.System(pri, sec)
    sys.flux(t).eval()

Error

MissingInputError: Input 0 of the graph (indices start from 0), used to compute Elemwise{exp,no_inplace}(B_r_lowerbound__), was not provided and not given a value. Use the Theano flag exception_verbosity='high', for more information on this error.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 17 (10 by maintainers)

Most upvoted comments

Oh I see! I think I was confused because in previous iterations the star luminosity was fixed at “1”, now that the star can change I see that relative brightnesses are fine. Ok excellent, I’ll keep digging!