Source code for modest.utils.loadPulsarData
import pandas as pd
from .. import signals
import numpy as np
import os
import sys
[docs]def loadPulsarData(
detectorArea=1,
loadPulsarNames=None,
pulsarDir=None,
pulsarCatalogFileName='pulsarCatalog.xls',
PARDir='PAR_files/',
profileDir='profiles/',
observatoryMJDREF=None,
energyRange=None #Should be in KEV for now
):
if pulsarDir is None:
pulsarDir = os.path.abspath(os.path.join(os.path.dirname(__file__), '.')) + '/'
if energyRange is None:
electronVoltPerPhoton = 6e3 # Electron-Volt x 10^3
else:
electronVoltPerPhoton = 1e3 * (energyRange[1] + energyRange[0])/2
electronVoltPerErg = 6.242e11
ergsPerElectronVolt = 1 / electronVoltPerErg
pulsarCatalog = pd.read_excel(pulsarDir + pulsarCatalogFileName)
pulsarDict = {}
for pulsarIterator in range(len(pulsarCatalog)):
pulsarRow = pulsarCatalog.iloc[pulsarIterator]
pulsarName = pulsarRow['Name']
if (loadPulsarNames is None) or (pulsarName in loadPulsarNames):
if not np.isnan(pulsarRow['Flux (erg/cm^2/s)']):
photonFlux = (
pulsarRow['Flux (erg/cm^2/s)'] *
electronVoltPerErg / electronVoltPerPhoton
)
else:
photonFlux = None
if np.isnan(pulsarRow['useColumn']):
useColumn=None
else:
useColumn = pulsarRow['useColumn']
if not np.isnan(pulsarRow['Pulsed fraction']):
pulsedFraction = pulsarRow['Pulsed fraction']/100
else:
pulsedFraction = None
# print("Template string:")
# print(pulsarRow['Template'])
if isinstance(pulsarRow['Template'], str) or not np.isnan(pulsarRow['Template']):
template = pulsarDir + profileDir + pulsarRow['Template']
else:
template=None
pulsarDict[pulsarName] = signals.PeriodicXRaySource(
profile=template,
PARFile=pulsarDir + PARDir + pulsarRow['PARFile'],
avgPhotonFlux=photonFlux,
pulsedFraction=pulsedFraction,
name=pulsarName,
useProfileColumn=useColumn,
observatoryMJDREF=observatoryMJDREF,
detectorArea=detectorArea
)
return pulsarDict