The Bundle also contains a few Parameters that provide settings for that Bundle. Note that these are not system-wide and only apply to the current Bundle. They are however maintained when saving and loading a Bundle.
Let's first make sure we have the latest version of PHOEBE 2.0 installed. (You can comment out this line if you don't use pip for your installation or don't want to update to the latest release).
In [ ]:
!pip install -I "phoebe>=2.0,<2.1"
As always, let's do imports and initialize a logger and a new Bundle. See Building a System for more details.
In [1]:
import phoebe
from phoebe import u # units
logger = phoebe.logger()
b = phoebe.default_binary()
Settings are found with their own context in the Bundle and can be accessed through the get_setting method
In [2]:
b.get_setting()
Out[2]:
or via filtering/twig access
In [3]:
b['setting']
Out[3]:
and can be set as any other Parameter in the Bundle
In [4]:
b['plotting_backend@setting']
Out[4]:
In [5]:
b['plotting_backend@setting'].choices
Out[5]:
In [6]:
b['log_history@setting'].description
Out[6]:
This parameter can also be set by calling b.enable_history() or b.disable_history() and can be accessed with b.history_enabled.
In [7]:
b['log_history@setting']
Out[7]:
In [8]:
b.history_enabled
Out[8]:
In [9]:
b.enable_history()
In [10]:
b['log_history@setting']
Out[10]:
In [11]:
b.history_enabled
Out[11]:
In [12]:
b['dict_set_all@setting']
Out[12]:
In [13]:
b['teff@component']
Out[13]:
In our default binary there are temperatures ('teff') parameters for each of the components ('primary' and 'secondary'). If we were to do:
b['teff@component'] = 6000
this would raise an error. Under-the-hood, this is simply calling:
b.set_value('teff@component', 6000)
which of course would also raise an error.
In order to set both temperatures to 6000, you would either have to loop over the components or call the set_value_all method:
In [14]:
b.set_value_all('teff@component', 4000)
print b['value@teff@primary@component'], b['value@teff@secondary@component']
If you want dictionary access to use set_value_all instead of set_value, you can enable this parameter
In [15]:
b['dict_set_all@setting'] = True
b['teff@component'] = 8000
print b['value@teff@primary@component'], b['value@teff@secondary@component']
Now let's disable this so it doesn't confuse us while looking at the other options
In [16]:
b['dict_set_all@setting'] = False
In [17]:
b['incl']
Out[17]:
In our default binary, there are several inclination parameters - one for each component ('primary', 'secondary', 'binary') and one with the constraint context (to keep the inclinations aligned).
This can be inconvenient... if you want to set the value of the binary's inclination, you must always provide extra information (like '@component').
Instead, we can always have the dictionary access search in the component context by doing the following
In [18]:
b['dict_filter@setting'] = {'context': 'component'}
In [19]:
b['incl']
Out[19]:
Now we no longer see the constraint parameters.
All parameters are always accessible with method access:
In [20]:
b.filter(qualifier='incl')
Out[20]:
Now let's reset this option... keeping in mind that we no longer have access to the 'setting' context through twig access, we'll have to use methods to clear the dict_filter
In [21]:
b.set_value('dict_filter@setting', {})
plotting_backend sets the default backend to use in all plotting calls. See the Plotting tutorial for more details.
In [22]:
b['plotting_backend@setting']
Out[22]:
In [23]:
b['plotting_backend@setting'].choices
Out[23]:
In [ ]: