Source code for dpp.helper_source_info

from vcstools import data_load
import psrqpy

import logging
import math

logger = logging.getLogger(__name__)


[docs]def bin_sampling_limit(pulsar, sampling_rate=1e-4, query=None): """Finds the sampling limit of the input pulsar in units of number of bins""" if query is None: query = psrqpy.QueryATNF(params=["P0"], psrs=[ pulsar], loadfromdb=data_load.ATNF_LOC).pandas query_index = list(query["JNAME"]).index(pulsar) period = query["P0"][query_index] bin_lim = math.ceil(period/sampling_rate) #round up the limit return bin_lim
[docs]def is_binary(pulsar, query=None): """Checks the ATNF database to see if a pulsar is part of a binary system""" if query is None: query = psrqpy.QueryATNF(params=["BINARY"], psrs=[ pulsar], loadfromdb=data_load.ATNF_LOC).pandas query_index = list(query["JNAME"]).index(pulsar) if isinstance(query["BINARY"][query_index], str): return True else: return False
[docs]def required_bin_folds(pulsar, sampling_rate=1e-4, query=None): """Generates a list of integers that are the folding bins required to complete for dpp""" sam_lim = bin_sampling_limit(pulsar, sampling_rate=sampling_rate, query=query) if sam_lim >= 1024: # regular period pulsar init_folds = [100] post_folds = [1024, 512, 256, 128] elif sam_lim > 100 and sam_lim < 1024: # moderate period pulsar init_folds = [100] f = sam_lim post_folds = [] while f > 100: post_folds.append(f) f = int(f/2) elif sam_lim <= 100: # if msp init_folds = [50] post_folds = [sam_lim] return init_folds, post_folds