예제 #1
0
def test_forbidden(verbose=False):

    phoebe.devel_on()
    phoebe.check_visible_off()

    b = phoebe.default_binary(contact_binary=True)
    b.add_dataset('lc')
    b.add_dataset('rv')
    b.add_dataset('mesh')
    b.add_dataset('lp')

    b.add_compute('legacy')
    b.add_compute('photodynam')
    b.add_compute('jktebop')
    b.add_compute('ellc')

    # TODO: include constraint_func?  Shouldn't matter since they're not in twigs
    should_be_forbidden = b.qualifiers + b.contexts + b.kinds + [c.split('@')[0] for c in b.get_parameter('columns').choices]

    if verbose:
        for l in should_be_forbidden:
            if l not in phoebe.parameters.parameters._forbidden_labels:
                print(l)

    for l in should_be_forbidden:
        assert(l in phoebe.parameters.parameters._forbidden_labels)

    phoebe.reset_settings()
    return b
예제 #2
0
def test_binary(plot=False):
    """
    """
    phoebe.devel_on()  # required for nbody dynamics

    # TODO: once ps.copy is implemented, just send b.copy() to each of these

    # system = [sma (AU), period (d)]
    system1 = [0.05, 2.575]
    system2 = [1., 257.5]
    system3 = [40., 65000.]

    for system in [system1, system2, system3]:
        for q in [0.5, 1.]:
            for ltte in [True, False]:
                print("test_dynamics_grid: sma={}, period={}, q={}, ltte={}".
                      format(system[0], system[1], q, ltte))
                b = phoebe.default_binary()
                b.get_parameter('dynamics_method')._choices = [
                    'keplerian', 'bs'
                ]

                b.set_default_unit_all('sma', u.AU)
                b.set_default_unit_all('period', u.d)

                b.set_value('sma@binary', system[0])
                b.set_value('period@binary', system[1])
                b.set_value('q', q)

                _keplerian_v_nbody(b, ltte, system[1], plot=plot)
                _frontend_v_backend(b, ltte, system[1], plot=plot)

    phoebe.devel_off()  # reset for future tests
예제 #3
0
def test_binary(plot=False, gen_comp=False):
    """
    """

    phoebe.devel_on()  # required for wd meshing

    # TODO: try an eccentric orbit over multiple phases (will need to wait for non-protomesh support from the legacy wrapper)
    # TODO: once ps.copy is implemented, just send b.copy() to each of these

    b = phoebe.Bundle.default_binary()
    _phoebe_v_legacy_lc_protomesh(b, plot=plot, gen_comp=gen_comp)

    phoebe.devel_off()  # reset for future tests
예제 #4
0
def test_forbidden(verbose=False):

    phoebe.devel_on()

    b = phoebe.default_binary(contact_binary=True)
    b.add_dataset('lc')
    b.add_dataset('rv')
    b.add_dataset('mesh')
    b.add_dataset('lp')

    b.add_compute('legacy')
    b.add_compute('photodynam')
    b.add_compute('jktebop')
    b.add_compute('ellc')

    b.add_spot(component='primary')
    b.add_gaussian_process(dataset='lc01')

    b.add_solver('estimator.lc_periodogram')
    b.add_solver('estimator.rv_periodogram')
    b.add_solver('estimator.lc_geometry')
    b.add_solver('estimator.rv_geometry')
    b.add_solver('estimator.ebai')
    b.add_solver('optimizer.nelder_mead')
    b.add_solver('optimizer.differential_evolution')
    b.add_solver('optimizer.cg')
    b.add_solver('optimizer.powell')
    b.add_solver('sampler.emcee')
    b.add_solver('sampler.dynesty')


    # TODO: include constraint_func?  Shouldn't matter since they're not in twigs
    should_be_forbidden = b.qualifiers + b.contexts + b.kinds + [c.split('@')[0] for c in b.get_parameter(qualifier='columns').choices]

    if verbose:
        for l in should_be_forbidden:
            if l not in phoebe.parameters.parameters._forbidden_labels:
                print(l)

    for l in should_be_forbidden:
        assert(l in phoebe.parameters.parameters._forbidden_labels)

    phoebe.reset_settings()
    return b
예제 #5
0
def test_binary(plot=False):
    """
    """
    phoebe.devel_on()  # required for nbody dynamics

    # TODO: grid over orbital parameters
    # TODO: once ps.copy is implemented, just send b.copy() to each of these

    b = phoebe.default_binary()
    b.get_parameter('dynamics_method')._choices = ['keplerian', 'bs']
    _keplerian_v_nbody(b, plot=plot)

    b = phoebe.default_binary()
    b.get_parameter('dynamics_method')._choices = ['keplerian', 'bs']
    _phoebe_v_photodynam(b, plot=plot)

    b = phoebe.default_binary()
    b.get_parameter('dynamics_method')._choices = ['keplerian', 'bs']
    _frontend_v_backend(b, plot=plot)

    phoebe.devel_off()  # reset for future tests
예제 #6
0
파일: test_ld.py 프로젝트: danhey/phoebe2
"""
"""

import phoebe
from phoebe import u
import numpy as np
import matplotlib.pyplot as plt

phoebe.devel_on()


def _get_ld_coeffs(ld_coeff, ld_func):
    # length of ld_coeffs depends on ld_func
    if ld_coeff is None:
        ld_coeffs = None
    elif ld_func in ['linear']:
        ld_coeffs = [ld_coeff]
    elif ld_func in ['logarithmic', 'square_root', 'quadratic']:
        ld_coeffs = [ld_coeff, ld_coeff]
    elif ld_func in ['power']:
        ld_coeffs = [ld_coeff, ld_coeff, ld_coeff, ld_coeff]
    elif ld_func in ['interp']:
        ld_coeffs = None
    else:
        raise NotImplementedError

    return ld_coeffs


def test_binary(plot=False):
    b = phoebe.Bundle.default_binary()
예제 #7
0
# In[1]:


get_ipython().run_line_magic('matplotlib', 'inline')


# In[2]:


import phoebe
from phoebe import u
import numpy as np
import matplotlib.pyplot as plt

phoebe.devel_on()  # needed to use WD-style meshing, which isn't fully supported yet

logger = phoebe.logger()

b = phoebe.default_binary()
b['q'] = 0.7


# Adding Datasets and Compute Options
# --------------------

# In[3]:


b.add_dataset('lc', times=np.linspace(0,1,101), dataset='lc01')
b.add_dataset('rv', times=np.linspace(0,1,101), dataset='rvdyn')
예제 #8
0
# In[1]:


get_ipython().run_line_magic('matplotlib', 'inline')


# In[2]:


import phoebe
from phoebe import u # units
import numpy as np
import matplotlib.pyplot as plt

phoebe.devel_on() # DEVELOPER MODE REQUIRED FOR VISIBLE_PARTIAL - DON'T USE FOR SCIENCE

logger = phoebe.logger()

b = phoebe.default_binary()


# Let's just compute the mesh at a single time-point that we know should be during egress.

# In[3]:


b.add_dataset('mesh', times=[0.05], columns=['visibilities'])


# Native
예제 #9
0

#!pip install -I "phoebe>=2.3,<2.4"


# As always, let's do imports and initialize a logger and a new bundle.

# In[2]:


import phoebe
from phoebe import u # units
import numpy as np
import matplotlib.pyplot as plt

phoebe.devel_on() # CURRENTLY REQUIRED FOR WD-STYLE MESHING (WHICH IS EXPERIMENTAL)

logger = phoebe.logger()

b = phoebe.default_binary()


# Changing Meshing Options
# --------------------------------
# 
# Next we need to add compute options and change the mesh_style for all stars from 'marching' to 'wd'

# In[3]:


b.set_value_all('mesh_method', 'wd')
예제 #10
0
import phoebe as phb2
import numpy as np

phb2.devel_on()

def test_reimport(filename=None):

#import data

    if filename:
        b = phb2.from_legacy(filename)
    else:
        b = phb2.default_binary()
        b.add_compute(kind='legacy')

    b.export_legacy('test.legacy')
    b2 = phb2.from_legacy('test.legacy')

# compare data

# check to see if datasets are attached and the right number
    Nlcs = len(b.get_dataset(kind='lc').datasets)
    Nlcs2 = len(b2.get_dataset(kind='lc').datasets)
    Nrvs = len(b.get_dataset(kind='rv').datasets)
    Nrvs2 = len(b2.get_dataset(kind='rv').datasets)

    # must be equal
    assert(Nlcs==Nlcs2)
    assert(2*Nrvs==Nrvs2)

# check to make sure parameters are the same