import logging
logging.basicConfig(level=logging.INFO) # set to DEBUG for verbose logs
Basic usage
Below we show how to run a simulation and store the results either in file or in memory for interactive work.
Minimal example saving simulation to file
This will run a short simulation and create a file with the standard datasets (no debugging data).
from lisainstrument import Instrument
instru = Instrument(size=50000)
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using default set of static proper pseudo-ranges
INFO:lisainstrument.instrument:Seed for random number generators not specified, using random value
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
path = "demo_short_sim.h5"
instru.export_hdf5(path=path, overwrite=True)
INFO:lisainstrument.instru.instru_model:Assembling constellation model
INFO:lisainstrument.instru.instru_model:Generating laser noise for laser 12
INFO:lisainstrument.instrument:Simulation metadata
INFO:lisainstrument.instrument:clockinv_tolerance = 1e-10
INFO:lisainstrument.instrument:physics_dt = 0.0625
INFO:lisainstrument.instrument:central_freq = 281600000000000.0
INFO:lisainstrument.instrument:physics_upsampling = 4
INFO:lisainstrument.instrument:telemetry_size = 2
INFO:lisainstrument.instrument:sc_jitter_theta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:backlink_asds = {'12': 3e-12, '21': 3e-12, '13': 3e-12, '31': 3e-12, '23': 3e-12, '32': 3e-12}
INFO:lisainstrument.instrument:ttl_coeffs_distant_phis = {'12': 0.00162391, '13': -0.002091585, '21': -0.0008445374, '23': 0.0001522873, '31': -0.001842871, '32': 0.001300866}
INFO:lisainstrument.instrument:clock_freqlindrifts = {'1': 1.6e-15, '2': 2e-14, '3': -1.2e-14}
INFO:lisainstrument.instrument:lock_config = N1-12
INFO:lisainstrument.instrument:mosa_jitter_eta_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:t0 = 75.0
INFO:lisainstrument.instrument:electro_delays_tmis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:fs = 4.0
INFO:lisainstrument.instrument:mosa_jitter_phi_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:delay_isc_max = 12.0
INFO:lisainstrument.instrument:sc_jitter_theta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:electro_delays_refs = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:laser_asds = {'12': 30.0, '21': 30.0, '13': 30.0, '31': 30.0, '23': 30.0, '32': 30.0}
INFO:lisainstrument.instrument:physics_fs = 16.0
INFO:lisainstrument.instrument:testmass_shape = original
INFO:lisainstrument.instrument:dws_asds = {'12': 2.0895522388059703e-10, '21': 2.0895522388059703e-10, '13': 2.0895522388059703e-10, '31': 2.0895522388059703e-10, '23': 2.0895522388059703e-10, '32': 2.0895522388059703e-10}
INFO:lisainstrument.instrument:orbit_file = None
INFO:lisainstrument.instrument:moc_time_correlation_asds = {'1': 0.42, '2': 0.42, '3': 0.42}
INFO:lisainstrument.instrument:sc_jitter_phi_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:delay_isc_min = 6.0
INFO:lisainstrument.instrument:mosa_jitter_phi_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:dt = 0.25
INFO:lisainstrument.instrument:ttl_coeffs_local_phis = {'12': 0.002005835, '13': -0.000286505, '21': 0.0009368319, '23': 0.0002105403, '31': -0.001815399, '32': -0.001986657}
INFO:lisainstrument.instrument:oms_sci_carrier_asds = {'12': 6.35e-12, '21': 6.35e-12, '13': 6.35e-12, '31': 6.35e-12, '23': 6.35e-12, '32': 6.35e-12}
INFO:lisainstrument.instrument:clock_freqquaddrifts = {'1': 9e-24, '2': 6.75e-23, '3': -1.125e-22}
INFO:lisainstrument.instrument:sc_jitter_phi_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:fplan = {'23': 9000000.0, '13': -8200000.0, '31': 10000000.0, '12': 8000000.0, '32': -8500000.0, '21': -8700000.0}
INFO:lisainstrument.instrument:version = 0.0.0
INFO:lisainstrument.instrument:telemetry_t0 = 75.0
INFO:lisainstrument.instrument:initial_telemetry_size = 0
INFO:lisainstrument.instrument:fplan_file = None
INFO:lisainstrument.instrument:clock_asds = {'1': 6.32e-14, '2': 6.32e-14, '3': 6.32e-14}
INFO:lisainstrument.instrument:lock = {'23': None, '13': None, '31': None, '12': None, '32': None, '21': None}
INFO:lisainstrument.instrument:ttl_coeffs_local_etas = {'12': -0.001670389, '13': 0.0001640473, '21': -0.0009205764, '23': 0.001460681, '31': -0.001039064, '32': 0.001205353}
INFO:lisainstrument.instrument:electro_delays_scis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:sc_jitter_eta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:clock_offsets = {'1': 0.0, '2': 0.0, '3': 0.0}
INFO:lisainstrument.instrument:modulation_freqs = {'12': 2400000000.0, '13': 2401000000.0, '21': 2401000000.0, '23': 2400000000.0, '31': 2400000000.0, '32': 2401000000.0}
INFO:lisainstrument.instrument:oms_sci_usb_asds = {'12': 1.25e-11, '21': 1.25e-11, '13': 1.25e-11, '31': 1.25e-11, '23': 1.25e-11, '32': 1.25e-11}
INFO:lisainstrument.instrument:mosa_jitter_x_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:sc_jitter_eta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:gw_file = None
INFO:lisainstrument.instrument:oms_ref_usb_asds = {'12': 7.9e-12, '21': 7.9e-12, '13': 7.9e-12, '31': 7.9e-12, '23': 7.9e-12, '32': 7.9e-12}
INFO:lisainstrument.instrument:mosa_angles = {'12': 30, '13': -30, '21': -30, '23': 30, '31': 30, '32': -30}
INFO:lisainstrument.instrument:ranging_asds = {'12': 3e-09, '21': 3e-09, '13': 3e-09, '31': 3e-09, '23': 3e-09, '32': 3e-09}
INFO:lisainstrument.instrument:ranging_biases = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:testmass_asds = {'12': 2.4e-15, '21': 2.4e-15, '13': 2.4e-15, '31': 2.4e-15, '23': 2.4e-15, '32': 2.4e-15}
INFO:lisainstrument.instrument:oms_tmi_usb_asds = {'12': 3.38e-12, '21': 3.38e-12, '13': 3.38e-12, '31': 3.38e-12, '23': 3.38e-12, '32': 3.38e-12}
INFO:lisainstrument.instrument:oms_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:prn_ambiguity = None
INFO:lisainstrument.instrument:oms_tmi_carrier_asds = {'12': 1.42e-12, '21': 1.42e-12, '13': 1.42e-12, '31': 1.42e-12, '23': 1.42e-12, '32': 1.42e-12}
INFO:lisainstrument.instrument:orbit_dataset = None
INFO:lisainstrument.instrument:telemetry_fs = 1.1574074074074073e-05
INFO:lisainstrument.instrument:interpolation_order = 31
INFO:lisainstrument.instrument:aafilter_coeffs = [-1.0448433397825766e-27, -4.703897504572802e-12, -3.1778208581425264e-11, -7.651376670360847e-11, -4.495367047038968e-25, 5.392803690644477e-10, 1.7384482887539374e-09, 2.6123956638004783e-09, -1.4538153170865497e-23, -1.0052149544131276e-08, -2.616923177044626e-08, -3.2903471571989545e-08, 4.325729952309682e-22, 9.527032850889057e-08, 2.2074056213726386e-07, 2.501509270980908e-07, -9.526898763091258e-22, -6.05849421461269e-07, -1.2987622733679098e-06, -1.3701821375107555e-06, -5.5852184011199406e-21, 2.9204464842348167e-06, 5.910772897804441e-06, 5.908598328616488e-06, -1.71598370265216e-20, -1.1411872692447818e-05, -2.2074477467659013e-05, -2.1138727359519094e-05, 1.964995289204398e-19, 3.7698097998717984e-05, 7.026240089848262e-05, 6.493634505703002e-05, -1.4582441170771766e-19, -0.00010834114836248113, -0.00019570296158337447, -0.00017550573193388666, 3.445895327631832e-19, 0.0002766416852417223, 0.0004864756987333695, 0.0004251266993777551, -7.236787585343334e-19, -0.0006380782732152111, -0.001096367712240298, -0.0009369608522266207, 1.365926835962582e-18, 0.0013482692417336505, 0.002271149265280715, 0.0019043971118665307, -2.3368393224469366e-18, -0.0026449166613644213, -0.004382855636432085, -0.003618704891750351, 3.647209025559658e-18, 0.004887741399168196, 0.008000994267911458, 0.006534175526517582, -5.218750933179678e-18, -0.008673922970272653, -0.01411450607617661, -0.011483972104932304, 6.871640892608458e-18, 0.015260873261857872, 0.024986040967653347, 0.02055873395309339, -8.348702433035011e-18, -0.028565221636692312, -0.04863616363063298, -0.04238095785936841, 9.376564515849298e-18, 0.07341605573909255, 0.15762793960523422, 0.22453732511987146, 0.2500000000002878, 0.22453732511987146, 0.15762793960523422, 0.07341605573909255, 9.376564515849298e-18, -0.04238095785936841, -0.04863616363063298, -0.028565221636692312, -8.348702433035011e-18, 0.02055873395309339, 0.024986040967653347, 0.015260873261857872, 6.871640892608458e-18, -0.011483972104932304, -0.01411450607617661, -0.008673922970272653, -5.218750933179678e-18, 0.006534175526517582, 0.008000994267911458, 0.004887741399168196, 3.647209025559658e-18, -0.003618704891750351, -0.004382855636432085, -0.0026449166613644213, -2.3368393224469366e-18, 0.0019043971118665307, 0.002271149265280715, 0.0013482692417336505, 1.365926835962582e-18, -0.0009369608522266207, -0.001096367712240298, -0.0006380782732152111, -7.236787585343334e-19, 0.0004251266993777551, 0.0004864756987333695, 0.0002766416852417223, 3.445895327631832e-19, -0.00017550573193388666, -0.00019570296158337447, -0.00010834114836248113, -1.4582441170771766e-19, 6.493634505703002e-05, 7.026240089848262e-05, 3.7698097998717984e-05, 1.964995289204398e-19, -2.1138727359519094e-05, -2.2074477467659013e-05, -1.1411872692447818e-05, -1.71598370265216e-20, 5.908598328616488e-06, 5.910772897804441e-06, 2.9204464842348167e-06, -5.5852184011199406e-21, -1.3701821375107555e-06, -1.2987622733679098e-06, -6.05849421461269e-07, -9.526898763091258e-22, 2.501509270980908e-07, 2.2074056213726386e-07, 9.527032850889057e-08, 4.325729952309682e-22, -3.2903471571989545e-08, -2.616923177044626e-08, -1.0052149544131276e-08, -1.4538153170865497e-23, 2.6123956638004783e-09, 1.7384482887539374e-09, 5.392803690644477e-10, -4.495367047038968e-25, -7.651376670360847e-11, -3.1778208581425264e-11, -4.703897504572802e-12, -1.0448433397825766e-27]
INFO:lisainstrument.instrument:physics_size = 200000
INFO:lisainstrument.instrument:ttl_coeffs_distant_etas = {'12': -0.00107647, '13': 0.00196005, '21': 0.001908239, '23': 0.0005228848, '31': -5.662766e-05, '32': 0.000902189}
INFO:lisainstrument.instrument:oms_ref_carrier_asds = {'12': 3.32e-12, '21': 3.32e-12, '13': 3.32e-12, '31': 3.32e-12, '23': 3.32e-12, '32': 3.32e-12}
INFO:lisainstrument.instrument:laser_shape = white+infrared
INFO:lisainstrument.instrument:clock_freqoffsets = {'1': 5e-08, '2': 6.25e-07, '3': -3.75e-07}
INFO:lisainstrument.instrument:telemetry_downsampling = 345600
INFO:lisainstrument.instrument:testmass_frelax = {'12': 8e-05, '21': 8e-05, '13': 8e-05, '31': 8e-05, '23': 8e-05, '32': 8e-05}
INFO:lisainstrument.instrument:delay_clock_max = 50.0
INFO:lisainstrument.instrument:orbit_t0 = 0.0
INFO:lisainstrument.instrument:duration = 12500.0
INFO:lisainstrument.instrument:modulation_asds = {'12': 5.2e-14, '13': 5.2e-13, '21': 5.2e-13, '23': 5.2e-14, '31': 5.2e-14, '32': 5.2e-13}
INFO:lisainstrument.instrument:testmass_fbreak = {'12': 0.008, '21': 0.008, '13': 0.008, '31': 0.008, '23': 0.008, '32': 0.008}
INFO:lisainstrument.instrument:gw_group = None
INFO:lisainstrument.instrument:seed = 2992261008
INFO:lisainstrument.instrument:mosa_jitter_eta_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:clockinv_maxiter = 5
INFO:lisainstrument.instrument:git_url = https://gitlab.in2p3.fr/lisa-simulation/instrument
INFO:lisainstrument.instrument:telemetry_dt = 86400.0
INFO:lisainstrument.instrument:backlink_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:tdir_modulations = None
INFO:lisainstrument.instrument:glitch_file = None
INFO:lisainstrument.instrument:testmass_fknees = {'12': 0.0004, '21': 0.0004, '13': 0.0004, '31': 0.0004, '23': 0.0004, '32': 0.0004}
INFO:lisainstrument.instrument:size = 50000
INFO:lisainstrument.streams.scheduler:Evaluating streams in chunks of size 1000000
INFO:lisainstrument.streams.scheduler:Evaluating connected component 0 / 1 of stream graph
INFO:lisainstrument.streams.scheduler:Component consists of 1233 streams
INFO:lisainstrument.streams.scheduler:Using ExecutorSerial
INFO:lisainstrument.streams.scheduler:Computing index -2821577
INFO:lisainstrument.streams.scheduler:Computing index -1821577
INFO:lisainstrument.streams.scheduler:Computing index -821577
INFO:lisainstrument.streams.scheduler:Computing index 178423
INFO:lisainstrument.streams.scheduler:Computing index 1178423
INFO:lisainstrument.streams.scheduler:Computing index 2178423
INFO:lisainstrument.streams.scheduler:Finished evaluating streams
Note: here we overwrite the previous file, which requires setting the overwrite parameter.
Controlling resource usage
One can specify how many CPU cores to use and also control the memory requirement. Those parameters are collected in a config class.
from lisainstrument import SchedulerConfigParallel, SchedulerConfigSerial
For serial processing, one can control the size of the chunks for the chunked data processing. Using longer chunks reduces overhead up to a point beyond which there wont be anymore speed increase or even slowdowns. The size refers to index range sizes for processing the streams. A simulation contains up to O(1000) streams.
cfg_serial = SchedulerConfigSerial(chunk_size=500000)
For parallel processing, one can additionally specify the number of threads, and how many chunks may be kept in memory at max. Do not expect linear scaling with number of CPUs, as the number of independent tasks that can be computed in parallel is limited.
cfg_parallel = SchedulerConfigParallel(chunk_size=250000, num_chunks=2, num_workers=4)
instru.export_hdf5(
path=path, overwrite=True, cfgscheduler=cfg_parallel
) # or cfg_serial
INFO:lisainstrument.instru.instru_model:Assembling constellation model
INFO:lisainstrument.instru.instru_model:Generating laser noise for laser 12
INFO:lisainstrument.instrument:Simulation metadata
INFO:lisainstrument.instrument:clockinv_tolerance = 1e-10
INFO:lisainstrument.instrument:physics_dt = 0.0625
INFO:lisainstrument.instrument:central_freq = 281600000000000.0
INFO:lisainstrument.instrument:physics_upsampling = 4
INFO:lisainstrument.instrument:telemetry_size = 2
INFO:lisainstrument.instrument:sc_jitter_theta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:backlink_asds = {'12': 3e-12, '21': 3e-12, '13': 3e-12, '31': 3e-12, '23': 3e-12, '32': 3e-12}
INFO:lisainstrument.instrument:ttl_coeffs_distant_phis = {'12': 0.00162391, '13': -0.002091585, '21': -0.0008445374, '23': 0.0001522873, '31': -0.001842871, '32': 0.001300866}
INFO:lisainstrument.instrument:clock_freqlindrifts = {'1': 1.6e-15, '2': 2e-14, '3': -1.2e-14}
INFO:lisainstrument.instrument:lock_config = N1-12
INFO:lisainstrument.instrument:mosa_jitter_eta_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:t0 = 75.0
INFO:lisainstrument.instrument:electro_delays_tmis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:fs = 4.0
INFO:lisainstrument.instrument:mosa_jitter_phi_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:delay_isc_max = 12.0
INFO:lisainstrument.instrument:sc_jitter_theta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:electro_delays_refs = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:laser_asds = {'12': 30.0, '21': 30.0, '13': 30.0, '31': 30.0, '23': 30.0, '32': 30.0}
INFO:lisainstrument.instrument:physics_fs = 16.0
INFO:lisainstrument.instrument:testmass_shape = original
INFO:lisainstrument.instrument:dws_asds = {'12': 2.0895522388059703e-10, '21': 2.0895522388059703e-10, '13': 2.0895522388059703e-10, '31': 2.0895522388059703e-10, '23': 2.0895522388059703e-10, '32': 2.0895522388059703e-10}
INFO:lisainstrument.instrument:orbit_file = None
INFO:lisainstrument.instrument:moc_time_correlation_asds = {'1': 0.42, '2': 0.42, '3': 0.42}
INFO:lisainstrument.instrument:sc_jitter_phi_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:delay_isc_min = 6.0
INFO:lisainstrument.instrument:mosa_jitter_phi_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:dt = 0.25
INFO:lisainstrument.instrument:ttl_coeffs_local_phis = {'12': 0.002005835, '13': -0.000286505, '21': 0.0009368319, '23': 0.0002105403, '31': -0.001815399, '32': -0.001986657}
INFO:lisainstrument.instrument:oms_sci_carrier_asds = {'12': 6.35e-12, '21': 6.35e-12, '13': 6.35e-12, '31': 6.35e-12, '23': 6.35e-12, '32': 6.35e-12}
INFO:lisainstrument.instrument:clock_freqquaddrifts = {'1': 9e-24, '2': 6.75e-23, '3': -1.125e-22}
INFO:lisainstrument.instrument:sc_jitter_phi_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:fplan = {'23': 9000000.0, '13': -8200000.0, '31': 10000000.0, '12': 8000000.0, '32': -8500000.0, '21': -8700000.0}
INFO:lisainstrument.instrument:version = 0.0.0
INFO:lisainstrument.instrument:telemetry_t0 = 75.0
INFO:lisainstrument.instrument:initial_telemetry_size = 0
INFO:lisainstrument.instrument:fplan_file = None
INFO:lisainstrument.instrument:clock_asds = {'1': 6.32e-14, '2': 6.32e-14, '3': 6.32e-14}
INFO:lisainstrument.instrument:lock = {'23': None, '13': None, '31': None, '12': None, '32': None, '21': None}
INFO:lisainstrument.instrument:ttl_coeffs_local_etas = {'12': -0.001670389, '13': 0.0001640473, '21': -0.0009205764, '23': 0.001460681, '31': -0.001039064, '32': 0.001205353}
INFO:lisainstrument.instrument:electro_delays_scis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:sc_jitter_eta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:clock_offsets = {'1': 0.0, '2': 0.0, '3': 0.0}
INFO:lisainstrument.instrument:modulation_freqs = {'12': 2400000000.0, '13': 2401000000.0, '21': 2401000000.0, '23': 2400000000.0, '31': 2400000000.0, '32': 2401000000.0}
INFO:lisainstrument.instrument:oms_sci_usb_asds = {'12': 1.25e-11, '21': 1.25e-11, '13': 1.25e-11, '31': 1.25e-11, '23': 1.25e-11, '32': 1.25e-11}
INFO:lisainstrument.instrument:mosa_jitter_x_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:sc_jitter_eta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:gw_file = None
INFO:lisainstrument.instrument:oms_ref_usb_asds = {'12': 7.9e-12, '21': 7.9e-12, '13': 7.9e-12, '31': 7.9e-12, '23': 7.9e-12, '32': 7.9e-12}
INFO:lisainstrument.instrument:mosa_angles = {'12': 30, '13': -30, '21': -30, '23': 30, '31': 30, '32': -30}
INFO:lisainstrument.instrument:ranging_asds = {'12': 3e-09, '21': 3e-09, '13': 3e-09, '31': 3e-09, '23': 3e-09, '32': 3e-09}
INFO:lisainstrument.instrument:ranging_biases = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:testmass_asds = {'12': 2.4e-15, '21': 2.4e-15, '13': 2.4e-15, '31': 2.4e-15, '23': 2.4e-15, '32': 2.4e-15}
INFO:lisainstrument.instrument:oms_tmi_usb_asds = {'12': 3.38e-12, '21': 3.38e-12, '13': 3.38e-12, '31': 3.38e-12, '23': 3.38e-12, '32': 3.38e-12}
INFO:lisainstrument.instrument:oms_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:prn_ambiguity = None
INFO:lisainstrument.instrument:oms_tmi_carrier_asds = {'12': 1.42e-12, '21': 1.42e-12, '13': 1.42e-12, '31': 1.42e-12, '23': 1.42e-12, '32': 1.42e-12}
INFO:lisainstrument.instrument:orbit_dataset = None
INFO:lisainstrument.instrument:telemetry_fs = 1.1574074074074073e-05
INFO:lisainstrument.instrument:interpolation_order = 31
INFO:lisainstrument.instrument:aafilter_coeffs = [-1.0448433397825766e-27, -4.703897504572802e-12, -3.1778208581425264e-11, -7.651376670360847e-11, -4.495367047038968e-25, 5.392803690644477e-10, 1.7384482887539374e-09, 2.6123956638004783e-09, -1.4538153170865497e-23, -1.0052149544131276e-08, -2.616923177044626e-08, -3.2903471571989545e-08, 4.325729952309682e-22, 9.527032850889057e-08, 2.2074056213726386e-07, 2.501509270980908e-07, -9.526898763091258e-22, -6.05849421461269e-07, -1.2987622733679098e-06, -1.3701821375107555e-06, -5.5852184011199406e-21, 2.9204464842348167e-06, 5.910772897804441e-06, 5.908598328616488e-06, -1.71598370265216e-20, -1.1411872692447818e-05, -2.2074477467659013e-05, -2.1138727359519094e-05, 1.964995289204398e-19, 3.7698097998717984e-05, 7.026240089848262e-05, 6.493634505703002e-05, -1.4582441170771766e-19, -0.00010834114836248113, -0.00019570296158337447, -0.00017550573193388666, 3.445895327631832e-19, 0.0002766416852417223, 0.0004864756987333695, 0.0004251266993777551, -7.236787585343334e-19, -0.0006380782732152111, -0.001096367712240298, -0.0009369608522266207, 1.365926835962582e-18, 0.0013482692417336505, 0.002271149265280715, 0.0019043971118665307, -2.3368393224469366e-18, -0.0026449166613644213, -0.004382855636432085, -0.003618704891750351, 3.647209025559658e-18, 0.004887741399168196, 0.008000994267911458, 0.006534175526517582, -5.218750933179678e-18, -0.008673922970272653, -0.01411450607617661, -0.011483972104932304, 6.871640892608458e-18, 0.015260873261857872, 0.024986040967653347, 0.02055873395309339, -8.348702433035011e-18, -0.028565221636692312, -0.04863616363063298, -0.04238095785936841, 9.376564515849298e-18, 0.07341605573909255, 0.15762793960523422, 0.22453732511987146, 0.2500000000002878, 0.22453732511987146, 0.15762793960523422, 0.07341605573909255, 9.376564515849298e-18, -0.04238095785936841, -0.04863616363063298, -0.028565221636692312, -8.348702433035011e-18, 0.02055873395309339, 0.024986040967653347, 0.015260873261857872, 6.871640892608458e-18, -0.011483972104932304, -0.01411450607617661, -0.008673922970272653, -5.218750933179678e-18, 0.006534175526517582, 0.008000994267911458, 0.004887741399168196, 3.647209025559658e-18, -0.003618704891750351, -0.004382855636432085, -0.0026449166613644213, -2.3368393224469366e-18, 0.0019043971118665307, 0.002271149265280715, 0.0013482692417336505, 1.365926835962582e-18, -0.0009369608522266207, -0.001096367712240298, -0.0006380782732152111, -7.236787585343334e-19, 0.0004251266993777551, 0.0004864756987333695, 0.0002766416852417223, 3.445895327631832e-19, -0.00017550573193388666, -0.00019570296158337447, -0.00010834114836248113, -1.4582441170771766e-19, 6.493634505703002e-05, 7.026240089848262e-05, 3.7698097998717984e-05, 1.964995289204398e-19, -2.1138727359519094e-05, -2.2074477467659013e-05, -1.1411872692447818e-05, -1.71598370265216e-20, 5.908598328616488e-06, 5.910772897804441e-06, 2.9204464842348167e-06, -5.5852184011199406e-21, -1.3701821375107555e-06, -1.2987622733679098e-06, -6.05849421461269e-07, -9.526898763091258e-22, 2.501509270980908e-07, 2.2074056213726386e-07, 9.527032850889057e-08, 4.325729952309682e-22, -3.2903471571989545e-08, -2.616923177044626e-08, -1.0052149544131276e-08, -1.4538153170865497e-23, 2.6123956638004783e-09, 1.7384482887539374e-09, 5.392803690644477e-10, -4.495367047038968e-25, -7.651376670360847e-11, -3.1778208581425264e-11, -4.703897504572802e-12, -1.0448433397825766e-27]
INFO:lisainstrument.instrument:physics_size = 200000
INFO:lisainstrument.instrument:ttl_coeffs_distant_etas = {'12': -0.00107647, '13': 0.00196005, '21': 0.001908239, '23': 0.0005228848, '31': -5.662766e-05, '32': 0.000902189}
INFO:lisainstrument.instrument:oms_ref_carrier_asds = {'12': 3.32e-12, '21': 3.32e-12, '13': 3.32e-12, '31': 3.32e-12, '23': 3.32e-12, '32': 3.32e-12}
INFO:lisainstrument.instrument:laser_shape = white+infrared
INFO:lisainstrument.instrument:clock_freqoffsets = {'1': 5e-08, '2': 6.25e-07, '3': -3.75e-07}
INFO:lisainstrument.instrument:telemetry_downsampling = 345600
INFO:lisainstrument.instrument:testmass_frelax = {'12': 8e-05, '21': 8e-05, '13': 8e-05, '31': 8e-05, '23': 8e-05, '32': 8e-05}
INFO:lisainstrument.instrument:delay_clock_max = 50.0
INFO:lisainstrument.instrument:orbit_t0 = 0.0
INFO:lisainstrument.instrument:duration = 12500.0
INFO:lisainstrument.instrument:modulation_asds = {'12': 5.2e-14, '13': 5.2e-13, '21': 5.2e-13, '23': 5.2e-14, '31': 5.2e-14, '32': 5.2e-13}
INFO:lisainstrument.instrument:testmass_fbreak = {'12': 0.008, '21': 0.008, '13': 0.008, '31': 0.008, '23': 0.008, '32': 0.008}
INFO:lisainstrument.instrument:gw_group = None
INFO:lisainstrument.instrument:seed = 2992261008
INFO:lisainstrument.instrument:mosa_jitter_eta_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:clockinv_maxiter = 5
INFO:lisainstrument.instrument:git_url = https://gitlab.in2p3.fr/lisa-simulation/instrument
INFO:lisainstrument.instrument:telemetry_dt = 86400.0
INFO:lisainstrument.instrument:backlink_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:tdir_modulations = None
INFO:lisainstrument.instrument:glitch_file = None
INFO:lisainstrument.instrument:testmass_fknees = {'12': 0.0004, '21': 0.0004, '13': 0.0004, '31': 0.0004, '23': 0.0004, '32': 0.0004}
INFO:lisainstrument.instrument:size = 50000
INFO:lisainstrument.streams.scheduler:Evaluating streams in chunks of size 250000
INFO:lisainstrument.streams.scheduler:Evaluating connected component 0 / 1 of stream graph
INFO:lisainstrument.streams.scheduler:Component consists of 1233 streams
INFO:lisainstrument.streams.scheduler:Using ExecutorDask with 4 workers processing 2 chunks at a time
INFO:lisainstrument.streams.scheduler:Computing index -2821577
INFO:lisainstrument.streams.scheduler:Computing index -2321577
INFO:lisainstrument.streams.scheduler:Computing index -1821577
INFO:lisainstrument.streams.scheduler:Computing index -1321577
INFO:lisainstrument.streams.scheduler:Computing index -821577
INFO:lisainstrument.streams.scheduler:Computing index -321577
INFO:lisainstrument.streams.scheduler:Computing index 178423
INFO:lisainstrument.streams.scheduler:Computing index 678423
INFO:lisainstrument.streams.scheduler:Computing index 1178423
INFO:lisainstrument.streams.scheduler:Computing index 1678423
INFO:lisainstrument.streams.scheduler:Computing index 2178423
INFO:lisainstrument.streams.scheduler:Computing index 2678423
INFO:lisainstrument.streams.scheduler:Finished evaluating streams
Setting simulation parameters
The simulation parameters are specified when creating an Instrument instance. In addition, there is also an option to modify the settings by using methods for disabling some or all noises. This needs to be done before the simulation is exported.
instru = Instrument(size=100000, central_freq=2.816e14)
instru.disable_all_noises()
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using default set of static proper pseudo-ranges
INFO:lisainstrument.instrument:Seed for random number generators not specified, using random value
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
INFO:lisainstrument.instrument:disable laser noise
INFO:lisainstrument.instrument:disable modulation noise
INFO:lisainstrument.instrument:disable clock noise
INFO:lisainstrument.instrument:disable testmass noise
INFO:lisainstrument.instrument:disable backlink noise
INFO:lisainstrument.instrument:disable oms noise
INFO:lisainstrument.instrument:disable ranging noise
INFO:lisainstrument.instrument:disable angular jitters
INFO:lisainstrument.instrument:disable dws noise
INFO:lisainstrument.instrument:disable moc time correlation noise
INFO:lisainstrument.instrument:disable longitudinal jitters
Randomness and noises
For reproducability, one can set a master seed used for generating all instrumental noise. If not set, the seed is computed randomly when creating the Instrument instance. Further, there are some parameters with a randomization option. Those random parameters are set during instance creation as well and appear in the log output. The seed does only apply to noise generation, but not to randomized parameters.
instru = Instrument(size=100000, ttl_coeffs="random", seed=2030)
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using default set of static proper pseudo-ranges
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
Margins and orbit files
When reading orbit data from file, the simulation range must be covered by the orbit file. Contrary to earlier simulator versions, the orbit file needs to cover a slightly larger time span. The same holds for GW and glitch files. On the other hand, the simulation data is valid on the entire output range. There is no need any more to cut off margins from the results.
There are two options for specifying the simulation start time when using orbit files. If the exact start time does not matter, one can tie it to the start of the orbit file, plus a required margin.
orbits_path = "../../tests/data/esa-trailing-orbits-2-0.h5"
instru = Instrument(size=100000, orbits=orbits_path, t0="orbits", orbit_t0_margin=75.0)
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using orbit file '../../tests/data/esa-trailing-orbits-2-0.h5' with dataset 'tps/ppr'
INFO:lisainstrument.instrument:Seed for random number generators not specified, using random value
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
The default value of the orbit_t0_margin parameter is suitable for the standard sampling rate and orbital separations. The parameter is only used with t0="orbits".
The second option is to provide the start time directly in the t0 parameter. To obtain the start time of the orbit file, one could read its hdf5 attributes. However, the orbit file reader interface now used in the simulator
can also be used independently as shown below.
from lisainstrument import orbit_file
with orbit_file(orbits_path) as orbf:
orbits_t0 = orbf.t0_type_tcbltt
instru = Instrument(size=100000, orbits=orbits_path, t0=orbits_t0 + 75.0)
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using orbit file '../../tests/data/esa-trailing-orbits-2-0.h5' with dataset 'tps/ppr'
INFO:lisainstrument.instrument:Seed for random number generators not specified, using random value
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
The duration of the simulation is given by size*dt, where size and dt are the parameters for number of generated samples and data taking sample period.
Glitch files
To use glitch files, one needs to provide the path in the glitches parameter. The current version of the simulator can only read glitch files version 1.4. Support for older versions might be added again.
In contrast to orbit files, the glitch file do not need to cover a larger range. Outside the file range, glitches are assumed zero. Be aware however that glitches should not be cut off by a boundary because the resulting jump will lead to ringing artifacts in the interpolation.
One can use the new glitch file reader interface to get metadata
from lisainstrument import glitch_file
glitch_path = "../../tests/data/glitch-1-4.h5"
glf = glitch_file(glitch_path)
print(glf.start_time, glf.end_time)
0.0 12.4375
GW files
To use GW response from file, specify the path in the gws parameter. The current version of the simulator can only read GW files V2.*. Support for older versions might be added again.
Again, the GW files now have to cover the simulation range plus margin. One can use the new GW file reader interface to obtain metadata.
from lisainstrument import gw_file
gwf = gw_file("../../tests/data/gws-2-0.h5")
print(gwf.start_time_tcb, gwf.end_time_tcb)
2019686410.0 2019686439.7
Interactive work
Working with simulation data directly from the simulator works different than for earlier versions. The results used to be available in numpy arrays as attributes of the Instrument class. After the switch to chunked processing, this is not the case anymore. To support working with short simulations as before, one can however export the results to an object which stores the results as numpy arrays, instead of writing to file. The in-memory results above can also be exported to HDF5, providing the same export_hdf5 method as the simulator itself.
instru = Instrument(size=30000)
results = instru.export_numpy_core(cfg_parallel)
INFO:lisainstrument.instrument:Validating simulation parameters and opening data sources
INFO:lisainstrument.instru.instru_orbsrc:Using default set of static proper pseudo-ranges
INFO:lisainstrument.instrument:Seed for random number generators not specified, using random value
INFO:lisainstrument.instru.instru_glitchsrc:Not adding any glitches
INFO:lisainstrument.instru.instru_locking:Using pre-defined locking configuration 'N1-12'
INFO:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies
WARNING:lisainstrument.instru.instru_fplan:Using default set of locking beatnote frequencies might cause interferometric beatnote frequencies to fall outside the requirement range of 5..25 MHz
INFO:lisainstrument.instru.instru_model:Assembling constellation model
INFO:lisainstrument.instru.instru_model:Generating laser noise for laser 12
INFO:lisainstrument.instrument:Simulation metadata
INFO:lisainstrument.instrument:clockinv_tolerance = 1e-10
INFO:lisainstrument.instrument:physics_dt = 0.0625
INFO:lisainstrument.instrument:central_freq = 281600000000000.0
INFO:lisainstrument.instrument:physics_upsampling = 4
INFO:lisainstrument.instrument:telemetry_size = 2
INFO:lisainstrument.instrument:sc_jitter_theta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:backlink_asds = {'12': 3e-12, '21': 3e-12, '13': 3e-12, '31': 3e-12, '23': 3e-12, '32': 3e-12}
INFO:lisainstrument.instrument:ttl_coeffs_distant_phis = {'12': 0.00162391, '13': -0.002091585, '21': -0.0008445374, '23': 0.0001522873, '31': -0.001842871, '32': 0.001300866}
INFO:lisainstrument.instrument:clock_freqlindrifts = {'1': 1.6e-15, '2': 2e-14, '3': -1.2e-14}
INFO:lisainstrument.instrument:lock_config = N1-12
INFO:lisainstrument.instrument:mosa_jitter_eta_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:t0 = 75.0
INFO:lisainstrument.instrument:electro_delays_tmis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:fs = 4.0
INFO:lisainstrument.instrument:mosa_jitter_phi_fknees = {'12': 0.0008, '21': 0.0008, '13': 0.0008, '31': 0.0008, '23': 0.0008, '32': 0.0008}
INFO:lisainstrument.instrument:delay_isc_max = 12.0
INFO:lisainstrument.instrument:sc_jitter_theta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:electro_delays_refs = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:laser_asds = {'12': 30.0, '21': 30.0, '13': 30.0, '31': 30.0, '23': 30.0, '32': 30.0}
INFO:lisainstrument.instrument:physics_fs = 16.0
INFO:lisainstrument.instrument:testmass_shape = original
INFO:lisainstrument.instrument:dws_asds = {'12': 2.0895522388059703e-10, '21': 2.0895522388059703e-10, '13': 2.0895522388059703e-10, '31': 2.0895522388059703e-10, '23': 2.0895522388059703e-10, '32': 2.0895522388059703e-10}
INFO:lisainstrument.instrument:orbit_file = None
INFO:lisainstrument.instrument:moc_time_correlation_asds = {'1': 0.42, '2': 0.42, '3': 0.42}
INFO:lisainstrument.instrument:sc_jitter_phi_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:delay_isc_min = 6.0
INFO:lisainstrument.instrument:mosa_jitter_phi_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:dt = 0.25
INFO:lisainstrument.instrument:ttl_coeffs_local_phis = {'12': 0.002005835, '13': -0.000286505, '21': 0.0009368319, '23': 0.0002105403, '31': -0.001815399, '32': -0.001986657}
INFO:lisainstrument.instrument:oms_sci_carrier_asds = {'12': 6.35e-12, '21': 6.35e-12, '13': 6.35e-12, '31': 6.35e-12, '23': 6.35e-12, '32': 6.35e-12}
INFO:lisainstrument.instrument:clock_freqquaddrifts = {'1': 9e-24, '2': 6.75e-23, '3': -1.125e-22}
INFO:lisainstrument.instrument:sc_jitter_phi_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:fplan = {'23': 9000000.0, '13': -8200000.0, '31': 10000000.0, '12': 8000000.0, '32': -8500000.0, '21': -8700000.0}
INFO:lisainstrument.instrument:version = 0.0.0
INFO:lisainstrument.instrument:telemetry_t0 = 75.0
INFO:lisainstrument.instrument:initial_telemetry_size = 0
INFO:lisainstrument.instrument:fplan_file = None
INFO:lisainstrument.instrument:clock_asds = {'1': 6.32e-14, '2': 6.32e-14, '3': 6.32e-14}
INFO:lisainstrument.instrument:lock = {'23': None, '13': None, '31': None, '12': None, '32': None, '21': None}
INFO:lisainstrument.instrument:ttl_coeffs_local_etas = {'12': -0.001670389, '13': 0.0001640473, '21': -0.0009205764, '23': 0.001460681, '31': -0.001039064, '32': 0.001205353}
INFO:lisainstrument.instrument:electro_delays_scis = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:sc_jitter_eta_asds = {'1': 5e-09, '2': 5e-09, '3': 5e-09}
INFO:lisainstrument.instrument:clock_offsets = {'1': 0.0, '2': 0.0, '3': 0.0}
INFO:lisainstrument.instrument:modulation_freqs = {'12': 2400000000.0, '13': 2401000000.0, '21': 2401000000.0, '23': 2400000000.0, '31': 2400000000.0, '32': 2401000000.0}
INFO:lisainstrument.instrument:oms_sci_usb_asds = {'12': 1.25e-11, '21': 1.25e-11, '13': 1.25e-11, '31': 1.25e-11, '23': 1.25e-11, '32': 1.25e-11}
INFO:lisainstrument.instrument:mosa_jitter_x_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:sc_jitter_eta_fknees = {'1': 0.0008, '2': 0.0008, '3': 0.0008}
INFO:lisainstrument.instrument:gw_file = None
INFO:lisainstrument.instrument:oms_ref_usb_asds = {'12': 7.9e-12, '21': 7.9e-12, '13': 7.9e-12, '31': 7.9e-12, '23': 7.9e-12, '32': 7.9e-12}
INFO:lisainstrument.instrument:mosa_angles = {'12': 30, '13': -30, '21': -30, '23': 30, '31': 30, '32': -30}
INFO:lisainstrument.instrument:ranging_asds = {'12': 3e-09, '21': 3e-09, '13': 3e-09, '31': 3e-09, '23': 3e-09, '32': 3e-09}
INFO:lisainstrument.instrument:ranging_biases = {'12': 0.0, '21': 0.0, '13': 0.0, '31': 0.0, '23': 0.0, '32': 0.0}
INFO:lisainstrument.instrument:testmass_asds = {'12': 2.4e-15, '21': 2.4e-15, '13': 2.4e-15, '31': 2.4e-15, '23': 2.4e-15, '32': 2.4e-15}
INFO:lisainstrument.instrument:oms_tmi_usb_asds = {'12': 3.38e-12, '21': 3.38e-12, '13': 3.38e-12, '31': 3.38e-12, '23': 3.38e-12, '32': 3.38e-12}
INFO:lisainstrument.instrument:oms_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:prn_ambiguity = None
INFO:lisainstrument.instrument:oms_tmi_carrier_asds = {'12': 1.42e-12, '21': 1.42e-12, '13': 1.42e-12, '31': 1.42e-12, '23': 1.42e-12, '32': 1.42e-12}
INFO:lisainstrument.instrument:orbit_dataset = None
INFO:lisainstrument.instrument:telemetry_fs = 1.1574074074074073e-05
INFO:lisainstrument.instrument:interpolation_order = 31
INFO:lisainstrument.instrument:aafilter_coeffs = [-1.0448433397825766e-27, -4.703897504572802e-12, -3.1778208581425264e-11, -7.651376670360847e-11, -4.495367047038968e-25, 5.392803690644477e-10, 1.7384482887539374e-09, 2.6123956638004783e-09, -1.4538153170865497e-23, -1.0052149544131276e-08, -2.616923177044626e-08, -3.2903471571989545e-08, 4.325729952309682e-22, 9.527032850889057e-08, 2.2074056213726386e-07, 2.501509270980908e-07, -9.526898763091258e-22, -6.05849421461269e-07, -1.2987622733679098e-06, -1.3701821375107555e-06, -5.5852184011199406e-21, 2.9204464842348167e-06, 5.910772897804441e-06, 5.908598328616488e-06, -1.71598370265216e-20, -1.1411872692447818e-05, -2.2074477467659013e-05, -2.1138727359519094e-05, 1.964995289204398e-19, 3.7698097998717984e-05, 7.026240089848262e-05, 6.493634505703002e-05, -1.4582441170771766e-19, -0.00010834114836248113, -0.00019570296158337447, -0.00017550573193388666, 3.445895327631832e-19, 0.0002766416852417223, 0.0004864756987333695, 0.0004251266993777551, -7.236787585343334e-19, -0.0006380782732152111, -0.001096367712240298, -0.0009369608522266207, 1.365926835962582e-18, 0.0013482692417336505, 0.002271149265280715, 0.0019043971118665307, -2.3368393224469366e-18, -0.0026449166613644213, -0.004382855636432085, -0.003618704891750351, 3.647209025559658e-18, 0.004887741399168196, 0.008000994267911458, 0.006534175526517582, -5.218750933179678e-18, -0.008673922970272653, -0.01411450607617661, -0.011483972104932304, 6.871640892608458e-18, 0.015260873261857872, 0.024986040967653347, 0.02055873395309339, -8.348702433035011e-18, -0.028565221636692312, -0.04863616363063298, -0.04238095785936841, 9.376564515849298e-18, 0.07341605573909255, 0.15762793960523422, 0.22453732511987146, 0.2500000000002878, 0.22453732511987146, 0.15762793960523422, 0.07341605573909255, 9.376564515849298e-18, -0.04238095785936841, -0.04863616363063298, -0.028565221636692312, -8.348702433035011e-18, 0.02055873395309339, 0.024986040967653347, 0.015260873261857872, 6.871640892608458e-18, -0.011483972104932304, -0.01411450607617661, -0.008673922970272653, -5.218750933179678e-18, 0.006534175526517582, 0.008000994267911458, 0.004887741399168196, 3.647209025559658e-18, -0.003618704891750351, -0.004382855636432085, -0.0026449166613644213, -2.3368393224469366e-18, 0.0019043971118665307, 0.002271149265280715, 0.0013482692417336505, 1.365926835962582e-18, -0.0009369608522266207, -0.001096367712240298, -0.0006380782732152111, -7.236787585343334e-19, 0.0004251266993777551, 0.0004864756987333695, 0.0002766416852417223, 3.445895327631832e-19, -0.00017550573193388666, -0.00019570296158337447, -0.00010834114836248113, -1.4582441170771766e-19, 6.493634505703002e-05, 7.026240089848262e-05, 3.7698097998717984e-05, 1.964995289204398e-19, -2.1138727359519094e-05, -2.2074477467659013e-05, -1.1411872692447818e-05, -1.71598370265216e-20, 5.908598328616488e-06, 5.910772897804441e-06, 2.9204464842348167e-06, -5.5852184011199406e-21, -1.3701821375107555e-06, -1.2987622733679098e-06, -6.05849421461269e-07, -9.526898763091258e-22, 2.501509270980908e-07, 2.2074056213726386e-07, 9.527032850889057e-08, 4.325729952309682e-22, -3.2903471571989545e-08, -2.616923177044626e-08, -1.0052149544131276e-08, -1.4538153170865497e-23, 2.6123956638004783e-09, 1.7384482887539374e-09, 5.392803690644477e-10, -4.495367047038968e-25, -7.651376670360847e-11, -3.1778208581425264e-11, -4.703897504572802e-12, -1.0448433397825766e-27]
INFO:lisainstrument.instrument:physics_size = 120000
INFO:lisainstrument.instrument:ttl_coeffs_distant_etas = {'12': -0.00107647, '13': 0.00196005, '21': 0.001908239, '23': 0.0005228848, '31': -5.662766e-05, '32': 0.000902189}
INFO:lisainstrument.instrument:oms_ref_carrier_asds = {'12': 3.32e-12, '21': 3.32e-12, '13': 3.32e-12, '31': 3.32e-12, '23': 3.32e-12, '32': 3.32e-12}
INFO:lisainstrument.instrument:laser_shape = white+infrared
INFO:lisainstrument.instrument:clock_freqoffsets = {'1': 5e-08, '2': 6.25e-07, '3': -3.75e-07}
INFO:lisainstrument.instrument:telemetry_downsampling = 345600
INFO:lisainstrument.instrument:testmass_frelax = {'12': 8e-05, '21': 8e-05, '13': 8e-05, '31': 8e-05, '23': 8e-05, '32': 8e-05}
INFO:lisainstrument.instrument:delay_clock_max = 50.0
INFO:lisainstrument.instrument:orbit_t0 = 0.0
INFO:lisainstrument.instrument:duration = 7500.0
INFO:lisainstrument.instrument:modulation_asds = {'12': 5.2e-14, '13': 5.2e-13, '21': 5.2e-13, '23': 5.2e-14, '31': 5.2e-14, '32': 5.2e-13}
INFO:lisainstrument.instrument:testmass_fbreak = {'12': 0.008, '21': 0.008, '13': 0.008, '31': 0.008, '23': 0.008, '32': 0.008}
INFO:lisainstrument.instrument:gw_group = None
INFO:lisainstrument.instrument:seed = 3949276525
INFO:lisainstrument.instrument:mosa_jitter_eta_asds = {'12': 2e-09, '21': 2e-09, '13': 2e-09, '31': 2e-09, '23': 2e-09, '32': 2e-09}
INFO:lisainstrument.instrument:clockinv_maxiter = 5
INFO:lisainstrument.instrument:git_url = https://gitlab.in2p3.fr/lisa-simulation/instrument
INFO:lisainstrument.instrument:telemetry_dt = 86400.0
INFO:lisainstrument.instrument:backlink_fknees = {'12': 0.002, '21': 0.002, '13': 0.002, '31': 0.002, '23': 0.002, '32': 0.002}
INFO:lisainstrument.instrument:tdir_modulations = None
INFO:lisainstrument.instrument:glitch_file = None
INFO:lisainstrument.instrument:testmass_fknees = {'12': 0.0004, '21': 0.0004, '13': 0.0004, '31': 0.0004, '23': 0.0004, '32': 0.0004}
INFO:lisainstrument.instrument:size = 30000
INFO:lisainstrument.streams.scheduler:Evaluating streams in chunks of size 250000
INFO:lisainstrument.streams.scheduler:Evaluating connected component 0 / 1 of stream graph
INFO:lisainstrument.streams.scheduler:Component consists of 1233 streams
INFO:lisainstrument.streams.scheduler:Using ExecutorDask with 4 workers processing 2 chunks at a time
INFO:lisainstrument.streams.scheduler:Computing index -2821577
INFO:lisainstrument.streams.scheduler:Computing index -2321577
INFO:lisainstrument.streams.scheduler:Computing index -1821577
INFO:lisainstrument.streams.scheduler:Computing index -1321577
INFO:lisainstrument.streams.scheduler:Computing index -821577
INFO:lisainstrument.streams.scheduler:Computing index -321577
INFO:lisainstrument.streams.scheduler:Computing index 178423
INFO:lisainstrument.streams.scheduler:Computing index 678423
INFO:lisainstrument.streams.scheduler:Computing index 1178423
INFO:lisainstrument.streams.scheduler:Computing index 1678423
INFO:lisainstrument.streams.scheduler:Computing index 2178423
INFO:lisainstrument.streams.scheduler:Computing index 2678423
INFO:lisainstrument.streams.scheduler:Finished evaluating streams
The results are organized by per-MOSA datasets, per-spacecraft datasets, and simulation metadata. Per-MOSA and per-spacecraft data is stored in ordinary python dictionaries keyed by the MOSA or spacecraft name. Note: In older versions of the simulator, results were stored in a custom container that had plotting and HDF5 saving methods. Those containers are not used anymore since the switch to chunked processing.
print(results.meta_data.dt)
print(results.mosa_data.sci_carrier_fluctuations["12"].shape)
print(results.sat_data.moc_time_correlations["2"].shape)
print(results.mosa_data.dataset_names())
print(results.sat_data.dataset_names())
0.25
(30000,)
(2,)
frozenset({'tmi_usb_fluctuations', 'tmi_usbs', 'ref_carrier_offsets', 'sci_carrier_offsets', 'ref_usbs', 'sci_carriers', 'mprs', 'sci_carrier_fluctuations', 'tmi_usb_offsets', 'ref_carrier_fluctuations', 'sci_usb_offsets', 'tmi_carrier_fluctuations', 'ref_usb_offsets', 'sci_usb_fluctuations', 'sci_dws_etas', 'sci_usbs', 'sci_dws_phis', 'tmi_carrier_offsets', 'ref_carriers', 'tmi_carriers', 'ref_usb_fluctuations'})
frozenset({'moc_time_correlations'})
Sample times
There are 3 different sample rates in use. For each, the results instance provides a property to get a numpy array with the regularly spaced time samples.
Almost all core results are sampled at the nominal sampling period,
results.meta_data.dt. Useresults.tto get the sample times.The MOC time correlations are sampled at much longer periods
results.meta_data.telemetry_dt. Useresults.telemetry_tto get sample times.Most of the diagnostic quantities (
export_numpy_full) are sampled at shorter periodresults.metadata.physics_dt. Useresults.physics_dtto get sample times.
Note: The sample times are not stored in HDF5 files as datasets. Instead, they are reconstructed from the metadata.
Plotting
Once the results are exported to numpy arrays as shown above, use the plotting library of your choice to plot the data.
%matplotlib inline
from matplotlib import pyplot as plt
plt.close()
plt.plot(results.t, results.mosa_data.sci_dws_etas["12"], "b-")
[<matplotlib.lines.Line2D at 0x7f6162ddec10>]
In earlier versions of the simulator, the Instrument class had methods for plotting the results it stored. Those plotting methods are still available as standalone functions that take the exported results as argument.
from lisainstrument.legacy import legacy_plots
legacy_plots.plot_fluctuations(results)
Working with result files
There is no need to directly read result files with h5py, and it is discouraged because the file format may change in the future. Instead, the lisainstrument package provides a file reader interface that allows different workflows:
Loading entire result file into memory resulting in the exact same object as when using export_numpy_core/export_numpy_full
Post-processing large result files in a chunked fashion
Accessing simulation meta data
Those workflows are demonstrated in the chunked postprocessing chapter (including the non-chunked workflow).