Examples ======== This page shows example code snippets demonstrating how to use :pulsardt:`PulsarDT`. 1. Hello World Example Here is a simple example to get started: .. code-block:: python import numpy as np import pulsardt.defines as defines from pulsardt import PulsarAnimator, create_pulsar_animation pulsar_animator = PulsarAnimator(rot_axis=[0,0,1], mag_axis_tilt=45) create_pulsar_animation( pulsar_animator=pulsar_animator, animation_folder_path='./output/anims/', tag='test_spark', telescope_direction=(1,0,1), rot_phases=np.arange(0, 360, 30), res=60 ) The global parameters for pulsardt can be set in the `config_pulsedt.yml` file. The `config_pulsedt.yml` should be located in the current working directory. 2. Design a custom spark pattern Design a custom spark pattern using the `SparkPatternGenerator` class. The following code creates a pulsar animation with a custom spark pattern: .. code-block:: python import numpy as np from pulsardt import PulsarAnimator,SparkPatternGenerator,create_pulsar_animation pulsar_animator = PulsarAnimator(rot_axis=[0,0,1],mag_axis_tilt=45) spark_pattern_list = SparkPatternGenerator.create_patterened_spark_pattern( num_sparks=[2,8,8,2], conal_latitudes=[0.1,10,170,179.9], spark_rotation_axis_polar_att0=[45,50], drift_vel=50/360, spark_dimension=1.5/180*22/7 ) pulsar_animator.spark_genlist = spark_pattern_list view_direction = (1,0,1) create_pulsar_animation( pulsar_animator=pulsar_animator, animation_folder_path='./output/anims/', tag='custom_spark', telescope_direction=view_direction, rot_phases=np.arange(0, 360, 30), res=60 ) The following montage shows the example of spark pattern created by the above code: .. image:: /static/spark_pattern_montage.png :alt: PulsarDT Demo :width: 600px 3. Create Payload files and visualize from a single simulation .. code-block:: python import numpy as np from pulsardt import PulsarAnimator, create_pulsar_animation, GenData, SparkPatternGenerator, Payload pulsar_animator = PulsarAnimator(rot_axis=[0,0,1],mag_axis_tilt=45) spark_pattern_list = SparkPatternGenerator.create_patterened_spark_pattern( num_sparks=[2,8,8,2], conal_latitudes=[0.1,10,170,179.9], spark_rotation_axis_polar_att0=[45,50], drift_vel=50/360, spark_dimension=1.5/180*22/7 ) pulsar_animator.spark_genlist = spark_pattern_list view_direction = (1,0,1) pulsar_animator = PulsarAnimator(rot_axis=[0,0,1],mag_axis_tilt=45) gendata_obj = GenData(pulsar_animator=pulsar_animator) total_noisy_output,total_flux=gendata_obj(tag='test_0', rot_phases=np.arange(0,360*2,1), freq_channels=np.arange(0.25,.85,0.01), param_folder='./params/runtime/', payload_folder='./params/payloads/', antenna_sensitivity=0.5, prob_bbrfi=0, prob_nbrfi=0, scale_direction_randomness=0.0, remove_drift_effect=True, randomize=False) #: Multiple payload files are created to capture the different stages of the simulation payload_obj_raw = Payload.read_payload_from_jsonfile('./params/payloads/test_0_payload_raw.json') payload_obj_2b_propagated = Payload.read_payload_from_jsonfile('./params/payloads/test_0_payload_tobe_propagated.json') payload_obj_flux = Payload.read_payload_from_jsonfile('./params/payloads/test_0_payload_flux.json') payload_obj_detected = Payload.read_payload_from_jsonfile('./params/payloads/test_0_payload_detected.json') #: Plot the final payload after being detected by antenna payload_obj_detected.plot() .. image:: /static/dispersion_graph.png :alt: PulsarDT Demo :width: 300px :align: center or the simulation results can be visualized directly .. code-block:: python gendata_obj.plot(tag='test_v0_', rot_phases=np.arange(0,360*2,1), freq_channels=np.arange(0.25,.85,0.01), param_folder='./params/runtime/', payload_folder='./params/payloads/', antenna_sensitivity=0.5, prob_bbrfi=0, prob_nbrfi=0, scale_direction_randomness=0.0, remove_drift_effect=True, randomize=False ) .. image:: /static/dispersion_graph_from_gendata_plot.png :alt: PulsarDT Demo :width: 500px :align: center 4. Run multiple simulations with randomized instances of pulsar animation .. code-block:: python import numpy as np from pulsardt import PulsarAnimator, GenData from pulsardt import run_gen_data_in_parallel,generate_randomized_data_payloads pulsar_animator = PulsarAnimator(rot_axis=[0,0,1],mag_axis_tilt=45) gendata_obj = GenData(pulsar_animator=pulsar_animator) #: Run multiple simulations with randomized instances of pulsar animation with defined tags run_gen_data_in_parallel(gendata_obj=gendata_obj, rot_phases=np.arange(0,720*9-180,10).tolist(), freq_channels=np.arange(0.5,1.6,0.001), tag_list=['test_1','test_2','test_3','test_4','test_5','test_6'], param_folder='./params/runtime/',payload_folder='./params/payloads/') #: Or just by specifying number of payloads to be generated generate_randomized_data_payloads(gendata_obj=gendata_obj, rot_phases=np.arange(0,720*9-180,10).tolist(), freq_channels=np.arange(0.5,1.6,0.001), tag='test_', num_payloads=100, param_folder='./params/runtime/',payload_folder='./params/payloads/', prob_bbrfi=0.3, prob_nbrfi=0.3, antenna_sensitivity=0.5, tag_index_offset=0, num_cpus=50 )