20Functions used in simulation studies of the piecewise model.
30from lalpulsar
import simulateCW
32from .
import basis_functions
as bf
33from .
import mols_for_gte
as mols
34from .
import semicoherent_metric_methods
as scmm
35from .
import tbank_estimates
as tbe
41 coeffs = bf.allcoeffs(s)
46 freq = mols.modelvalueatpoint(dt + tref, coeffs, params, ignoreintcheck=
True)
48 h_t = h0 * (freq / f0) ** 2
50 ap = h_t * (1.0 + cosi**2) / 2.0
53 dphi = mols.phase(dt + tref, coeffs, params, ignoreintcheck=
True)
67 Tdata, tbank, finputdata, trefsegfrac=0.0, parentdirectory=".", rand_seed=0
71 if bf.knotslist[0] != finputdata.tstart:
72 for i
in range(len(bf.knotslist)):
73 bf.knotslist[i] = bf.knotslist[i] + finputdata.tstart
75 logging.info(
"Knots: " +
str(bf.knotslist))
78 finalknot = len(bf.knotslist)
80 mismatch = tbank.maxmismatch
82 tiling = lp.CreateLatticeTiling(s * finalknot)
84 metric = scmm.PreCompMetric(s)
86 logging.info(
"Knots before bounds set: " +
str(bf.knotslist))
87 tbe.setbounds(tiling, tbank)
89 logging.info(
"Knots after bounds set: " +
str(bf.knotslist))
90 lp.SetTilingLatticeAndMetric(tiling, lp.TILING_LATTICE_ANSTAR, metric, mismatch)
93 randparams = lal.CreateRandomParams(rand_seed)
94 signalparams = lal.gsl_matrix(s * finalknot, 1)
95 lp.RandomLatticeTilingPoints(tiling, 0, randparams, signalparams)
97 f0 = signalparams.data[0][0]
98 f1 = signalparams.data[1][0]
99 f2 = signalparams.data[2][0]
102 "Randomly generated Signal Params: %s",
str(np.transpose(signalparams.data)[0])
106 tref = bf.knotslist[0] + Tdata * trefsegfrac
107 params = mols.solsbyint(np.transpose(signalparams.data)[0], s)
108 wf =
waveform(finputdata.h0, params, finputdata.cosi, tref)
110 for i, detector
in enumerate(finputdata.detectors.data):
129 path_to_detector_sfts = os.path.join(
131 f
"SFTs_h0-{finputdata.h0:.2e}_f0-{f0:.3f}_f1-{f1:.2e}_f2-{f2:.2e}_dur-{tbank.dur}_tstart-{finputdata.tstart}/",
133 directoryname = os.path.join(path_to_detector_sfts, detector +
"/")
135 if not os.path.isdir(path_to_detector_sfts):
136 os.mkdir(path_to_detector_sfts)
138 if not os.path.isdir(directoryname):
139 os.mkdir(directoryname)
145 for file, i, N
in S.write_sft_files(
146 fmax=tbank.fmax + 20,
147 Tsft=finputdata.Tsft,
148 noise_sqrt_Sh=finputdata.noise_sqrt_Sh[i],
149 comment=
"PWModPhase",
150 out_dir=directoryname,
152 logging.info(
"Generated SFT file %s (%i of %i)" % (file, i + 1, N))
156 return np.transpose(signalparams.data)[0], path_to_detector_sfts
def buildSFTs(Tdata, tbank, finputdata, trefsegfrac=0.0, parentdirectory=".", rand_seed=0)
def waveform(h0, params, cosi, tref)