Configuration File#
File Structure#
The configuration file is a Python file that is used to configure the simulation settings, the observation mode, the instrument and the scene. A typical configuration file looks like this:
from pathlib import Path
from sympy import Matrix, sqrt, sin, exp, pi, I, cos, symbols
########################################################################################################################
# Array Configuration Matrix (2 x N_in)
########################################################################################################################
t, tm, b = symbols('t tm b') # Do not change this (t: time, tm: modulation period, b: baseline)
q = 6
acm = (b / 2
* Matrix([[cos(2 * pi / tm * t), -sin(2 * pi / tm * t)],
[sin(2 * pi / tm * t), cos(2 * pi / tm * t)]])
* Matrix([[q, q, -q, -q],
[1, -1, -1, 1]]))
########################################################################################################################
# Complex Amplitude Transfer Matrix (N_out x N_in)
########################################################################################################################
catm = 1 / 2 * Matrix([[0, 0, sqrt(2), sqrt(2)],
[sqrt(2), sqrt(2), 0, 0],
[1, -1, -exp(I * pi / 2), exp(I * pi / 2)],
[1, -1, exp(I * pi / 2), -exp(I * pi / 2)]])
diff_out = [(2, 3)]
sep_at_max_mod_eff = [0.6]
########################################################################################################################
# Simulation, Observation Mode, Instrument and Scene
########################################################################################################################
config = {
'simulation': {
'grid_size': 20,
'time_step_size': '1 d',
'has_planet_orbital_motion': False,
'has_planet_signal': True,
'has_stellar_leakage': True,
'has_local_zodi_leakage': True,
'has_exozodi_leakage': True,
'has_amplitude_perturbations': True,
'has_phase_perturbations': True,
'has_polarization_perturbations': True,
},
'observation_mode': {
'solar_ecliptic_latitude': '0 deg',
'total_integration_time': '100 d',
'detector_integration_time': '1 d',
'modulation_period': '100 d',
'optimized_differential_output': 0,
'optimized_star_separation': 'habitable-zone',
'optimized_wavelength': '10 um',
},
'instrument': {
'array_configuration_matrix': acm,
'complex_amplitude_transfer_matrix': catm,
'differential_outputs': diff_out,
'sep_at_max_mod_eff': sep_at_max_mod_eff,
'aperture_diameter': '2 m',
'baseline_ratio': 6,
'baseline_maximum': '600 m',
'baseline_minimum': '5 m',
'spectral_resolving_power': 20,
'wavelength_range_lower_limit': '4 um',
'wavelength_range_upper_limit': '18 um',
'throughput': 0.05,
'quantum_efficiency': 0.7,
'perturbations': {
'amplitude_perturbation': {
'rms': '0.1 %',
'color': 'pink',
},
'phase_perturbation': {
'rms': '1 nm',
'color': 'pink',
},
'polarization_perturbation': {
'rms': '0.01 rad',
'color': 'pink',
},
}
},
'scene': {
'star': {
'name': 'Sun',
'distance': '10 pc',
'mass': '1 Msun',
'radius': '1 Rsun',
'temperature': '5700 K',
'luminosity': '1 Lsun',
'right_ascension': '0 h',
'declination': '-75 deg',
},
'exozodi': {
'level': 3
},
'planets': [
{
'name': 'Earth',
'mass': '1 Mearth',
'radius': '1 Rearth',
'temperature': '288 K',
'semi_major_axis': '1 au',
'eccentricity': '0',
'inclination': '180 deg',
'raan': '0 deg',
'argument_of_periapsis': '0 deg',
'true_anomaly': '0 deg',
'path_to_spectrum': Path(r'C:\Users\huber\Desktop\PHRINGE\docs\_static\spectrum.txt')
},
],
},
}
First, the array configuration matrix and the complex amplitude transfer matrix are defined using sympy symbolic math.
Then, all parameters requried for the data generation are specified in the config dictionary. Note that the four main keys:
simulation, observation_mode instrument and scene. A more detailed description of all parameters is given below.
Dictionary Keys#
Simulation#
The simulation key contains several other keys that are used to configure the simulation. The key names, value types,
accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
grid_size |
int |
e.g. 60 |
1 |
Grid size used for the calculations |
time_step_size |
str* |
e.g. ‘1 s’ |
Time |
Time step size used for the calculations |
has_planet_orbital_motion |
bool |
true, false |
- |
Whether planet orbital motion is modeled |
has_planet_signal |
bool |
true, false |
- |
Whether planet signal is modeled |
has_stellar_leakage |
bool |
true, false |
- |
Whether stellar leakage is modeled |
has_local_zodi_leakage |
bool |
true, false |
- |
Whether local zodi leakage is modeled |
has_exozodi_leakage |
bool |
true, false |
- |
Whether exozodi leakage is modeled |
has_amplitude_perturbations |
bool |
true, false |
- |
Whether amplitude perturbations are modeled |
has_phase_perturbations |
bool |
true, false |
- |
Whether phase perturbations are modeled |
has_polarization_perturbations |
bool |
true, false |
- |
Whether polarization perturbations are modeled |
* String consisting of a number and a unit that can be parsed by astropy.units
Observation Mode#
The observation_mode key contains several other keys that are used to configure the observation mode. The key names, value types,
accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
solar_ecliptic_latitude |
str* |
e.g. ‘0 deg’ |
Angle |
Solar ecliptic latitude used to calculate the contribution of the local zodiacal light |
total_integration_time |
str* |
e.g. ‘1 d’ |
Time |
Total integration time of the observation |
detector_integration_time |
str* |
e.g. ‘0.01 d’ |
Time |
Detector integration time; can not be smaller than 1 minute |
modulation_period |
str* |
e.g. ‘1 d’ |
Time |
Duration to complete a modulation cycle of the array |
optimized_differential_output |
int |
e.g. 0 |
1 |
Index corresponding to the \(n\)th differential output of the array that the baselines should be optimized for |
optimized_star_separation |
str/str* |
‘habitable-zone’/e.g. ‘0.1 arcsec’ |
-/Angle |
Angular separation between the star and the planet that the baselines should be optimized for; ‘habitable-zone’ is also a valid input and will optimize for the habitable zone of the star |
optimized_wavelength |
str* |
e.g. ‘10 um’ |
Length |
Wavelength that the baselines should be optimized for |
* String consisting of a number and a unit that can be parsed by astropy.units
Observatory#
The instrument key contains several other keys that are used to configure the instrument. The key names, value types,
accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
array_configuration_matrix |
|
valid |
- |
Array configuration matrix |
complex_amplitude_transfer_matrix |
|
valid |
- |
Complex amplitude transfer matrix |
differential_outputs |
list of tuples |
e.g. [(2, 3)] |
- |
List indicating the pair of tuples whose difference correspond to the indices of the differential outputs |
sep_at_max_mod_eff |
list |
e.g. [0.6] |
- |
List indicating the separation in lambda/D at which the maximum modulation efficiency is achieved for the respective differential output |
aperture_diameter |
str* |
e.g. ‘2 m’ |
Length |
Aperture diameter of the collectors |
baseline_ratio |
int |
e.g. 6 |
1 |
Ratio of the imaging and the nulling baselines |
baseline_maximum |
str* |
e.g. ‘600 m’ |
Length |
Maximum allowed baseline length |
baseline_minimum |
str* |
e.g. ‘10 m’ |
Length |
Minimum allowed baseline length |
spectral_resolving_power |
int |
e.g. 100 |
1 |
Spectral resolving power of the instrument |
wavelength_range_lower_limit |
str* |
e.g. ‘4 um’ |
Length |
Lower limit of the wavelength range |
wavelength_range_upper_limit |
str* |
e.g. ‘18 um’ |
Length |
Upper limit of the wavelength range |
throughput |
float |
e.g. 0.05 |
1 |
Throughput of the unperturbed instrument |
quantum_efficiency |
float |
e.g. 0.7 |
1 |
Quantum efficiency of the detector |
amplitude_perturbation > rms |
str |
e.g. ‘0.1 %’ |
% |
RMS of the amplitude perturbation in percent |
amplitude_perturbation > color |
str |
‘white’, pink’, ‘brown’ |
- |
Color of the power spectrum |
phase_perturbation > rms |
str |
e.g. ‘1 nm’ |
% |
RMS of the phase perturbation |
phase_perturbation > color |
str |
‘white’, pink’, ‘brown’ |
- |
Color of the power spectrum |
polarization_perturbation > rms |
str |
e.g. ‘0.001 rad’ |
% |
RMS of the polarization perturbation in percent |
polarization_perturbation > color |
str |
‘white’, pink’, ‘brown’ |
- |
Color of the power spectrum |
* String consisting of a number and a unit that can be parsed by astropy.units
Scene#
Star
The star key contains several other keys that are used to define the star of the exoplanetary system. The key names, value types, accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
name |
str |
e.g. ‘Sun’ |
- |
Name of the star |
distance |
str* |
e.g. ‘10 pc’ |
Length |
Distance to the star from the observatory |
mass |
str* |
e.g. ‘1 Msun’ |
Mass |
Mass of the star |
radius |
str* |
e.g. ‘1 Rsun’ |
Length |
Radius of the star |
temperature |
str* |
e.g. ‘5700 K’ |
Temperature |
Effective temperature of the star |
luminosity |
str* |
e.g. ‘1 Lsun’ |
Watts |
Luminosity of the star |
right_ascension |
str* |
e.g. ‘0 h’ |
Time (~Angle) |
Right ascension of the star |
declination |
str* |
e.g. ‘-75 deg’ |
Angle |
Declination of the star |
* String consisting of a number and a unit that can be parsed by astropy.units
Exozodi
The exozodi key contains several other keys that are used to define the zodi of the exoplanetary system (=exozodi). The key names, value types, accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
level |
float |
e.g. 3.0 |
1 |
Amount of zodiacal dust in units of solar system zodi levels |
Planets#
The planets key contains a list of several other keys that are used to define the planets of the exoplanetary system. The key names, value types, accepted values and meanings are given in the table below:
Name |
Type |
Accepted Values |
Dimension |
Description |
|---|---|---|---|---|
name |
str |
e.g. ‘Earth’ |
- |
Name of the planet |
mass |
str* |
e.g. ‘1 Mearth’ |
Mass |
Mass of the planet |
radius |
str* |
e.g. ‘1 Rearth’ |
Length |
Radius of the planet |
temperature |
str* |
e.g. ‘300 K’ |
Temperature |
Effective temperature of the planet |
semi_major_axis |
str* |
e.g. ‘1 au’ |
Length |
Semi-major axis of the planet |
eccentricity |
float |
e.g. 0.0 |
1 |
Eccentricity of the planet |
inclination |
str* |
e.g. ‘180 deg’ |
Angle |
Inclination of the planet |
raan |
str* |
e.g. ‘0 deg’ |
Angle |
Right ascension of the ascending node of the planet |
argument_of_periapsis |
str* |
e.g. ‘0 deg’ |
Angle |
Argument of periapsis of the planet |
true_anomaly |
str* |
e.g. ‘0 deg’ |
Angle |
True anomaly of the planet |
* String consisting of a number and a unit that can be parsed by astropy.units