Getting Started

Welcome to Pulsar Digital Twin PulsarDT! python package Version. This package in its current form provides a digital twin/animation of a Pulsar. Using this package a user can design a pulsar source with a customized radio emission pattern or sparks. In addition specific physics such as spectral emission profile associated with each sparks can also be modelled. The sparks can also have their own drift velocity. At its present form a method is provided to make sparks arranged in nested cone pattern. A pipeline is also provided to generate random frequency-time graphs containing Pulsar+NBRFI+BBRFI dataframes which will be used to train neural network models to detect pulsars from radio data streams generated from radio-telescopes like MeerKAT.

Installation

You can install PulsarDT from the Git repository as:

git clone https://gitlab.dzastro.de/punch/ml-ppa/pulsardt.git
cd pulsardt
python -m venv .venv
source .venv/bin/activate
pip install uv
uv pip install .

Configure workspace

python setup_config.py

Example Hello World

Here is how to use PulsarDT in a simple script:

import numpy as np
import pulsardt.defines as defines
from pulsardt import SparkPatternGenerator
from pulsardt import PulsarAnimator
from pulsardt import create_pulsar_animation

pulsar_animator = PulsarAnimator(rot_axis=[0,0,1],mag_axis_tilt=45)
spark_list = SparkPatternGenerator.create_patterened_spark_pattern(num_sparks=[1,4,8,8,4,1], # Number of sparks in each cone
                                                                spark_dimension=0.05, # Spark radius in radians
                                                                conal_latitudes=[0,10,30,150,170,180], # lattitudes of the cones
                                                                drift_vel=30/360   # drift velocity, so each spark will traverse 30 degrees per rotation
                                                                )
pulsar_animator.spark_genlist = spark_list
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 following GIF shows an example animation created by stacking the frames generated by the above code:

PulsarDT Demo

PulsarDT Parameters

Units

  • Time: milliseconds (ms)

  • Frequency: gigahertz (GHz)

  • Distance: parsec (pc)

Spark Constants

Parameter

Value

Unit

Description

spark_radius_thresh_factor

5

Radius threshold scaling factor. This factor is multiplied with the spark dimension to determine the overall region of influence of the spark.

spark_spectral_model

0

Spectral model type. Spectral model 0 follows simple power law. Spectral model 1 follows Log parabolic spectrum or LPS

spectral_index

-0.47

Spectral power-law index

Average Spark Pattern Parameters

Parameter

Value

Unit

Description

num_cones

2

Number of cones

avg_spark_dimension

0.05

radians

Average spark radius

avg_spark_per_cone_length

6

Number of spark per cone

avg_spark_pattern_center_tilt

45

degrees

Tilt angle of the spark pattern center from rotation axis

avg_drift_vel

1

degrees/phase

Average drift velocity of the sparks in degrees/phase of rotation. so for example if drift velocity is 10/360 degree/phase, upon complete rotation it will traverse 10/360*360=10 degrees

Note

The above parameters can be modulated later in the simulation using methods in GenData module or dependent methods

Average ISM Parameters

Parameter

Value

Unit

Description

avg_dm_homogeneous

60

pc/cm³

Average dispersion measure

std_dm

10

pc/cm³

Standard deviation of DM

avg_scintillation_index_homo

1

Average scintillation index (homogeneous)

std_scintillation_index

100

Std deviation of scintillation index

Note

The above parameters are not modulated explicitly later in the simulation using methods in GenData module or dependent methods as of version 1.0

This parameters are loaded from ‘config_pulsedt.yml’ from the current work directory, else default values are loaded with a warning. Average simulating parameters can be modulated by changing corresponding values in that .yml file.