def lnprob_all(p):
    pars1 = ThetaParam(grid=p[0:2], vz=p[2], vsini=p[3], logOmega=p[4])
    model.update_Theta(pars1)
    # hard code npoly=3 (for fixc0 = True with npoly=4)
    pars2 = PhiParam(0, 0, True, p[5:8], p[8], p[9], p[10])
    model.update_Phi(pars2)
    draw = model.draw_save()
    return draw
Exemplo n.º 2
0
def lnlike(p):
    try:
        pars1 = ThetaParam(grid=p[0:2], vz=p[2], vsini=p[3], logOmega=p[4])
        model.update_Theta(pars1)
        # hard code npoly=3 (for fixc0 = True with chebyshev polynomials turned off)
        pars2 = PhiParam(0, 0, True, [0.0, 0.0, 0.0], p[5], p[6], p[7])
        model.update_Phi(pars2)
        lnp = model.evaluate()
        return lnp
    except C.ModelError:
        model.logger.debug("ModelError in stellar parameters, sending back -np.inf {}".format(p))
        return -np.inf
Exemplo n.º 3
0
    def lnprob(p):
        pars = ThetaParam(grid=p[0:3], vz=p[3], vsini=p[4], logOmega=p[5])
        #Distribute the calculation to each process
        for ((spectrum_id, order_id), pconn) in pconns.items():
            pconn.send(("LNPROB", pars))

        #Collect the answer from each process
        lnps = np.empty((len(Starfish.data["orders"]), ))
        for i, pconn in enumerate(pconns.values()):
            lnps[i] = pconn.recv()

        result = np.sum(lnps)  # + lnprior
        print("proposed:", p, result)
        return result
Exemplo n.º 4
0
    def fprob(p):

        # Assume p is [temp, logg, Z, vz, vsini, logOmega]

        pars = ThetaParam(grid=p[0:3], vz=p[3], vsini=p[4], logOmega=p[5])

        #Distribute the calculation to each process
        for ((spectrum_id, order_id), pconn) in pconns.items():
            #Parse the parameters into what needs to be sent to each Model here.
            pconn.send(("LNPROB", pars))

        #Collect the answer from each process
        lnps = np.empty((len(Starfish.data["orders"]), ))
        for i, pconn in enumerate(pconns.values()):
            lnps[i] = pconn.recv()

        s = np.sum(lnps)

        print(pars, "lnp:", s)

        if s == -np.inf:
            return 1e99
        else:
            return -s
Exemplo n.º 5
0
        print(pars, "lnp:", s)

        if s == -np.inf:
            return 1e99
        else:
            return -s

    start = Starfish.config["Theta"]
    p0 = np.array(start["grid"] +
                  [start["vz"], start["vsini"], start["logOmega"]])

    from scipy.optimize import fmin
    p = fmin(fprob, p0, maxiter=10000, maxfun=10000)
    print(p)
    pars = ThetaParam(grid=p[0:3], vz=p[3], vsini=p[4], logOmega=p[5])
    pars.save()

    # Kill all of the orders
    for pconn in pconns.values():
        pconn.send(("FINISH", None))
        pconn.send(("DIE", None))

    # Join on everything and terminate
    for p in ps.values():
        p.join()
        p.terminate()

    import sys
    sys.exit()
Exemplo n.º 6
0
 def setup_class(self):
     self.thetaparam = ThetaParam(grid=np.array([4000., 4.32, -0.2]),
                                  vz=10.,
                                  vsini=4.0,
                                  logOmega=-0.2,
                                  Av=0.3)