semicoherent_glitch_robust_directed_grid_search_on_1_glitch.py 2.36 KB
Newer Older
Gregory Ashton's avatar
Gregory Ashton committed
1 2 3
import pyfstat
import numpy as np
import matplotlib.pyplot as plt
Gregory Ashton's avatar
Gregory Ashton committed
4 5
from make_simulated_data import tstart, duration, tref, F0, F1, F2, Alpha, Delta, delta_F0, outdir, dtglitch
import time
Gregory Ashton's avatar
Gregory Ashton committed
6 7 8 9 10 11 12 13 14 15

try:
    from gridcorner import gridcorner
except ImportError:
    raise ImportError(
        "Python module 'gridcorner' not found, please install from "
        "https://gitlab.aei.uni-hannover.de/GregAshton/gridcorner")

label = 'semicoherent_glitch_robust_directed_grid_search_on_1_glitch'

16
plt.style.use('./paper.mplstyle')
Gregory Ashton's avatar
Gregory Ashton committed
17

18
Nstar = 1000
Gregory Ashton's avatar
Gregory Ashton committed
19 20
F0_width = np.sqrt(Nstar)*np.sqrt(12)/(np.pi*duration)
F1_width = np.sqrt(Nstar)*np.sqrt(180)/(np.pi*duration**2)
Gregory Ashton's avatar
Gregory Ashton committed
21
N = 20
Gregory Ashton's avatar
Gregory Ashton committed
22 23 24 25 26 27 28
F0s = [F0-F0_width/2., F0+F0_width/2., F0_width/N]
F1s = [F1-F1_width/2., F1+F1_width/2., F1_width/N]
F2s = [F2]
Alphas = [Alpha]
Deltas = [Delta]

max_delta_F0 = 1e-5
29
tglitchs = [tstart+0.1*duration, tstart+0.9*duration, 0.8*float(duration)/N]
Gregory Ashton's avatar
Gregory Ashton committed
30 31 32
delta_F0s = [0, max_delta_F0, max_delta_F0/N]
delta_F1s = [0]

33

Gregory Ashton's avatar
Gregory Ashton committed
34
t1 = time.time()
Gregory Ashton's avatar
Gregory Ashton committed
35 36 37 38 39 40
search = pyfstat.GridGlitchSearch(
    label, outdir, 'data/*1_glitch*sft', F0s=F0s, F1s=F1s, F2s=F2s,
    Alphas=Alphas, Deltas=Deltas, tref=tref, minStartTime=tstart,
    maxStartTime=tstart+duration, tglitchs=tglitchs, delta_F0s=delta_F0s,
    delta_F1s=delta_F1s)
search.run()
Gregory Ashton's avatar
Gregory Ashton committed
41
dT = time.time() - t1
Gregory Ashton's avatar
Gregory Ashton committed
42 43 44

F0_vals = np.unique(search.data[:, 0]) - F0
F1_vals = np.unique(search.data[:, 1]) - F1
45
delta_F0s_vals = np.unique(search.data[:, 5]) - delta_F0
Gregory Ashton's avatar
Gregory Ashton committed
46
tglitch_vals = np.unique(search.data[:, 7])
47
tglitch_vals_days = (tglitch_vals-tstart) / 86400. - dtglitch/86400.
Gregory Ashton's avatar
Gregory Ashton committed
48 49 50

twoF = search.data[:, -1].reshape((len(F0_vals), len(F1_vals),
                                   len(delta_F0s_vals), len(tglitch_vals)))
51 52 53 54 55 56
xyz = [F0_vals*1e6, F1_vals*1e12, delta_F0s_vals*1e6, tglitch_vals_days]
labels = ['$f - f_\mathrm{s}$\n[$\mu$Hz]',
          '$\dot{f} - \dot{f}_\mathrm{s}$\n[$p$Hz/s]',
          '$\delta f-\delta f_\mathrm{s}$\n[$\mu$Hz]',
          '$t^\mathrm{g} - t^\mathrm{g}_\mathrm{s}$\n[d]',
          '$\widehat{2\mathcal{F}}$']
Gregory Ashton's avatar
Gregory Ashton committed
57
fig, axes = gridcorner(
58
    twoF, xyz, projection='log_mean', labels=labels,
59 60
    showDvals=False, lines=[0, 0, 0, 0], label_offset=0.25,
    max_n_ticks=4)
Gregory Ashton's avatar
Gregory Ashton committed
61 62
fig.savefig('{}/{}_projection_matrix.png'.format(outdir, label),
            bbox_inches='tight')
Gregory Ashton's avatar
Gregory Ashton committed
63 64 65 66 67


print('Prior widths =', F0_width, F1_width)
print("Actual run time = {}".format(dT))
print("Actual number of grid points = {}".format(search.data.shape[0]))