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
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
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
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
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
""" """ 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()
# 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')
# 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
#!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')
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