From 04eb2bc39c5c222bfbbefa7dcea320aa3debcf60 Mon Sep 17 00:00:00 2001 From: "gregory.ashton" <gregory.ashton@ligo.org> Date: Tue, 13 Dec 2016 09:17:07 +0100 Subject: [PATCH] Adds histograms of directed and all-sky searches in noise --- .../allsky_noise_twoF_histogram.png | Bin 0 -> 23484 bytes Paper/AllSkyMCNoiseOnly/generate_data.py | 101 ++++++++++++++++++ Paper/AllSkyMCNoiseOnly/generate_table.py | 85 +++++++++++++++ Paper/AllSkyMCNoiseOnly/plot_data.py | 40 +++++++ Paper/AllSkyMCNoiseOnly/repeat.sh | 12 +++ Paper/AllSkyMCNoiseOnly/submitfile | 12 +++ Paper/DirectedMCNoiseOnly/generate_data.py | 87 +++++++++++++++ Paper/DirectedMCNoiseOnly/repeat.sh | 12 +++ Paper/DirectedMCNoiseOnly/submitfile | 12 +++ Paper/directed_noise_twoF_histogram.png | Bin 0 -> 24526 bytes 10 files changed, 361 insertions(+) create mode 100644 Paper/AllSkyMCNoiseOnly/allsky_noise_twoF_histogram.png create mode 100644 Paper/AllSkyMCNoiseOnly/generate_data.py create mode 100644 Paper/AllSkyMCNoiseOnly/generate_table.py create mode 100644 Paper/AllSkyMCNoiseOnly/plot_data.py create mode 100755 Paper/AllSkyMCNoiseOnly/repeat.sh create mode 100644 Paper/AllSkyMCNoiseOnly/submitfile create mode 100644 Paper/DirectedMCNoiseOnly/generate_data.py create mode 100755 Paper/DirectedMCNoiseOnly/repeat.sh create mode 100644 Paper/DirectedMCNoiseOnly/submitfile create mode 100644 Paper/directed_noise_twoF_histogram.png diff --git a/Paper/AllSkyMCNoiseOnly/allsky_noise_twoF_histogram.png b/Paper/AllSkyMCNoiseOnly/allsky_noise_twoF_histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4a80ec22349299deb6933f833912fb7db325d9 GIT binary patch literal 23484 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%0A4GRt3H`+wbAiObyfi^Gq7 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 literal 0 HcmV?d00001 diff --git a/Paper/AllSkyMCNoiseOnly/generate_data.py b/Paper/AllSkyMCNoiseOnly/generate_data.py new file mode 100644 index 0000000..cc26b72 --- /dev/null +++ b/Paper/AllSkyMCNoiseOnly/generate_data.py @@ -0,0 +1,101 @@ +import pyfstat +import numpy as np +import os +import sys +import time + +ID = sys.argv[1] +outdir = sys.argv[2] + +label = 'run_{}'.format(ID) +data_label = '{}_data'.format(label) +results_file_name = '{}/MCResults_{}.txt'.format(outdir, ID) + +# Properties of the GW data +sqrtSX = 2e-23 +tstart = 1000000000 +Tspan = 100*86400 +tend = tstart + Tspan + +# Fixed properties of the signal +F0_center = 30 +F1_center = 1e-10 +F2 = 0 +tref = .5*(tstart+tend) + + +VF0 = VF1 = 100 +DeltaF0 = VF0 * np.sqrt(3)/(np.pi*Tspan) +DeltaF1 = VF1 * np.sqrt(45/4.)/(np.pi*Tspan**2) + +nsteps = 50 +run_setup = [((nsteps, 0), 20, False), + ((nsteps, 0), 11, False), + ((nsteps, 0), 6, False), + ((nsteps, 0), 3, False), + ((nsteps, nsteps), 1, False)] + +DeltaAlpha = 0.05 +DeltaDelta = 0.05 + +h0 = 0 +F0 = F0_center + np.random.uniform(-0.5, 0.5)*DeltaF0 +F1 = F1_center + np.random.uniform(-0.5, 0.5)*DeltaF1 +Alpha = np.random.uniform(0, 2*np.pi) +Delta = np.arccos(2*np.random.uniform(0, 1)-1)-np.pi/2 +fAlpha = np.random.uniform(0, 1) +Alpha_min = Alpha - DeltaAlpha*(1-fAlpha) +Alpha_max = Alpha + DeltaAlpha*fAlpha +fDelta = np.random.uniform(0, 1) +Delta_min = Delta - DeltaDelta*(1-fDelta) +Delta_max = Delta + DeltaDelta*fDelta + +psi = np.random.uniform(-np.pi/4, np.pi/4) +phi = np.random.uniform(0, 2*np.pi) +cosi = np.random.uniform(-1, 1) + +data = pyfstat.Writer( + label=data_label, outdir=outdir, tref=tref, + tstart=tstart, F0=F0, F1=F1, F2=F2, duration=Tspan, Alpha=Alpha, + Delta=Delta, h0=h0, sqrtSX=sqrtSX, psi=psi, phi=phi, cosi=cosi, + detector='H1,L1') +data.make_data() +predicted_twoF = data.predict_fstat() + +startTime = time.time() +theta_prior = {'F0': {'type': 'unif', + 'lower': F0-DeltaF0/2., + 'upper': F0+DeltaF0/2.}, + 'F1': {'type': 'unif', + 'lower': F1-DeltaF1/2., + 'upper': F1+DeltaF1/2.}, + 'F2': F2, + 'Alpha': {'type': 'unif', + 'lower': Alpha_min, + 'upper': Alpha_max}, + 'Delta': {'type': 'unif', + 'lower': Delta_min, + 'upper': Delta_max}, + } + +ntemps = 1 +log10temperature_min = -1 +nwalkers = 100 + +mcmc = pyfstat.MCMCFollowUpSearch( + label=label, outdir=outdir, + sftfilepath='{}/*{}*sft'.format(outdir, data_label), + theta_prior=theta_prior, + tref=tref, minStartTime=tstart, maxStartTime=tend, + nwalkers=nwalkers, ntemps=ntemps, + log10temperature_min=log10temperature_min) +mcmc.run(run_setup=run_setup, create_plots=False, log_table=False, + gen_tex_table=False) +d, maxtwoF = mcmc.get_max_twoF() +dF0 = F0 - d['F0'] +dF1 = F1 - d['F1'] +runTime = time.time() - startTime +with open(results_file_name, 'a') as f: + f.write('{:1.8e} {:1.8e} {:1.8e} {:1.8e} {}\n' + .format(dF0, dF1, predicted_twoF, maxtwoF, runTime)) +os.system('rm {}/*{}*'.format(outdir, label)) diff --git a/Paper/AllSkyMCNoiseOnly/generate_table.py b/Paper/AllSkyMCNoiseOnly/generate_table.py new file mode 100644 index 0000000..e304f10 --- /dev/null +++ b/Paper/AllSkyMCNoiseOnly/generate_table.py @@ -0,0 +1,85 @@ +import pyfstat +import numpy as np + +outdir = 'data' + +label = 'allsky_setup' +data_label = '{}_data'.format(label) + +# Properties of the GW data +sqrtSX = 2e-23 +tstart = 1000000000 +Tspan = 100*86400 +tend = tstart + Tspan + +# Fixed properties of the signal +F0_center = 30 +F1_center = 1e-10 +F2 = 0 +tref = .5*(tstart+tend) + + +VF0 = VF1 = 100 +DeltaF0 = VF0 * np.sqrt(3)/(np.pi*Tspan) +DeltaF1 = VF1 * np.sqrt(45/4.)/(np.pi*Tspan**2) + +DeltaAlpha = 0.05 +DeltaDelta = 0.05 + +depth = 100 + +nsteps = 50 +run_setup = [((nsteps, 0), 20, False), + ((nsteps, 0), 11, False), + ((nsteps, 0), 6, False), + ((nsteps, 0), 3, False), + ((nsteps, nsteps), 1, False)] + +h0 = sqrtSX / float(depth) +r = np.random.uniform(0, 1) +theta = np.random.uniform(0, 2*np.pi) +F0 = F0_center + 3*np.sqrt(r)*np.cos(theta)/(np.pi**2 * Tspan**2) +F1 = F1_center + 45*np.sqrt(r)*np.sin(theta)/(4*np.pi**2 * Tspan**4) + +Alpha = 0 +Delta = 0 + +psi = np.random.uniform(-np.pi/4, np.pi/4) +phi = np.random.uniform(0, 2*np.pi) +cosi = np.random.uniform(-1, 1) + +data = pyfstat.Writer( + label=data_label, outdir=outdir, tref=tref, + tstart=tstart, F0=F0, F1=F1, F2=F2, duration=Tspan, Alpha=Alpha, + Delta=Delta, h0=h0, sqrtSX=sqrtSX, psi=psi, phi=phi, cosi=cosi, + detector='H1,L1') +data.make_data() +predicted_twoF = data.predict_fstat() + +theta_prior = {'F0': {'type': 'unif', + 'lower': F0-DeltaF0/2., + 'upper': F0+DeltaF0/2.}, + 'F1': {'type': 'unif', + 'lower': F1-DeltaF1/2., + 'upper': F1+DeltaF1/2.}, + 'F2': F2, + 'Alpha': {'type': 'unif', + 'lower': Alpha-DeltaAlpha/2., + 'upper': Alpha+DeltaAlpha/2.}, + 'Delta': {'type': 'unif', + 'lower': Delta-DeltaDelta/2., + 'upper': Delta+DeltaDelta/2.}, + } + +ntemps = 1 +log10temperature_min = -1 +nwalkers = 100 + +mcmc = pyfstat.MCMCFollowUpSearch( + label=label, outdir=outdir, + sftfilepath='{}/*{}*sft'.format(outdir, data_label), + theta_prior=theta_prior, + tref=tref, minStartTime=tstart, maxStartTime=tend, + nwalkers=nwalkers, ntemps=ntemps, + log10temperature_min=log10temperature_min) +mcmc.run(run_setup) diff --git a/Paper/AllSkyMCNoiseOnly/plot_data.py b/Paper/AllSkyMCNoiseOnly/plot_data.py new file mode 100644 index 0000000..8165be5 --- /dev/null +++ b/Paper/AllSkyMCNoiseOnly/plot_data.py @@ -0,0 +1,40 @@ +import matplotlib.pyplot as plt +import pandas as pd +import numpy as np +import os +from tqdm import tqdm +from oct2py import octave +import glob + +filenames = glob.glob("CollectedOutput/*.txt") + +plt.style.use('paper') + +Tspan = 100 * 86400 + + +def maxtwoFinNoise(twoF, Ntrials): + F = twoF/2.0 + alpha = (1 + F)*np.exp(-F) + a = Ntrials/2.0*F*np.exp(-F) + b = (1 - alpha)**(Ntrials-1) + return a*b + + +df_list = [] +for fn in filenames: + df = pd.read_csv( + fn, sep=' ', names=['dF0', 'dF1', 'twoF_predicted', + 'twoF', 'runTime']) + df['CLUSTER_ID'] = fn.split('_')[1] + df_list.append(df) +df = pd.concat(df_list) + +fig, ax = plt.subplots() +ax.hist(df.twoF, bins=50, histtype='step', color='k', normed=True, linewidth=1) +twoFsmooth = np.linspace(0, df.twoF.max(), 100) +# ax.plot(twoFsmooth, maxtwoFinNoise(twoFsmooth, 8e5), '-r') +ax.set_xlabel('$\widetilde{2\mathcal{F}}$') +ax.set_xlim(0, 60) +fig.tight_layout() +fig.savefig('allsky_noise_twoF_histogram.png') diff --git a/Paper/AllSkyMCNoiseOnly/repeat.sh b/Paper/AllSkyMCNoiseOnly/repeat.sh new file mode 100755 index 0000000..5f43c35 --- /dev/null +++ b/Paper/AllSkyMCNoiseOnly/repeat.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +. /home/gregory.ashton/lalsuite-install/etc/lalapps-user-env.sh +export PATH="/home/gregory.ashton/anaconda2/bin:$PATH" +export MPLCONFIGDIR=/home/gregory.ashton/.config/matplotlib + +rm /local/user/gregory.ashton/MCResults*txt +for ((n=0;n<100;n++)) +do +/home/gregory.ashton/anaconda2/bin/python generate_data.py "$1" /local/user/gregory.ashton --quite --no-template-counting +done +cp /local/user/gregory.ashton/MCResults*txt /home/gregory.ashton/PyFstat/Paper/AllSkyMCNoiseOnly/CollectedOutput diff --git a/Paper/AllSkyMCNoiseOnly/submitfile b/Paper/AllSkyMCNoiseOnly/submitfile new file mode 100644 index 0000000..191a502 --- /dev/null +++ b/Paper/AllSkyMCNoiseOnly/submitfile @@ -0,0 +1,12 @@ +Executable= repeat.sh +Arguments= $(Cluster)_$(Process) +Universe=vanilla +Input=/dev/null +accounting_group = ligo.dev.o2.cw.explore.test +Output=CollectedOutput/out.$(Process) +Error=CollectedOutput/err.$(Process) +Log=CollectedOutput/log.$(Process) +request_cpus = 1 +request_memory = 16 GB + +Queue 100 diff --git a/Paper/DirectedMCNoiseOnly/generate_data.py b/Paper/DirectedMCNoiseOnly/generate_data.py new file mode 100644 index 0000000..952ccd4 --- /dev/null +++ b/Paper/DirectedMCNoiseOnly/generate_data.py @@ -0,0 +1,87 @@ +import pyfstat +import numpy as np +import os +import sys +import time + + +ID = sys.argv[1] +outdir = sys.argv[2] + +label = 'run_{}'.format(ID) +data_label = '{}_data'.format(label) +results_file_name = '{}/MCResults_{}.txt'.format(outdir, ID) + +# Properties of the GW data +sqrtSX = 2e-23 +tstart = 1000000000 +Tspan = 100*86400 +tend = tstart + Tspan + +# Fixed properties of the signal +F0_center = 30 +F1_center = 1e-10 +F2 = 0 +Alpha = 5e-3 +Delta = 6e-2 +tref = .5*(tstart+tend) + +VF0 = VF1 = 100 +DeltaF0 = VF0 * np.sqrt(3)/(np.pi*Tspan) +DeltaF1 = VF1 * np.sqrt(45/4.)/(np.pi*Tspan**2) + +nsteps = 20 +run_setup = [((nsteps, 0), 20, False), + ((nsteps, 0), 7, False), + ((nsteps, 0), 2, False), + ((nsteps, nsteps), 1, False)] + +h0 = 0 +F0 = F0_center + np.random.uniform(-0.5, 0.5)*DeltaF0 +F1 = F1_center + np.random.uniform(-0.5, 0.5)*DeltaF1 + +psi = np.random.uniform(-np.pi/4, np.pi/4) +phi = np.random.uniform(0, 2*np.pi) +cosi = np.random.uniform(-1, 1) + +data = pyfstat.Writer( + label=data_label, outdir=outdir, tref=tref, + tstart=tstart, F0=F0, F1=F1, F2=F2, duration=Tspan, Alpha=Alpha, + Delta=Delta, h0=h0, sqrtSX=sqrtSX, psi=psi, phi=phi, cosi=cosi, + detector='H1,L1') +data.make_data() +predicted_twoF = data.predict_fstat() + +startTime = time.time() +theta_prior = {'F0': {'type': 'unif', + 'lower': F0-DeltaF0/2., + 'upper': F0+DeltaF0/2.}, + 'F1': {'type': 'unif', + 'lower': F1-DeltaF1/2., + 'upper': F1+DeltaF1/2.}, + 'F2': F2, + 'Alpha': Alpha, + 'Delta': Delta + } + +ntemps = 1 +log10temperature_min = -1 +nwalkers = 100 + +mcmc = pyfstat.MCMCFollowUpSearch( + label=label, outdir=outdir, + sftfilepath='{}/*{}*sft'.format(outdir, data_label), + theta_prior=theta_prior, + tref=tref, minStartTime=tstart, maxStartTime=tend, + nwalkers=nwalkers, ntemps=ntemps, + log10temperature_min=log10temperature_min) +mcmc.run(run_setup=run_setup, create_plots=False, log_table=False, + gen_tex_table=False) +d, maxtwoF = mcmc.get_max_twoF() +dF0 = F0 - d['F0'] +dF1 = F1 - d['F1'] +runTime = time.time() - startTime +with open(results_file_name, 'a') as f: + f.write('{:1.8e} {:1.8e} {:1.8e} {:1.8e} {}\n' + .format(dF0, dF1, predicted_twoF, maxtwoF, runTime)) +os.system('rm {}/*{}*'.format(outdir, label)) diff --git a/Paper/DirectedMCNoiseOnly/repeat.sh b/Paper/DirectedMCNoiseOnly/repeat.sh new file mode 100755 index 0000000..0142257 --- /dev/null +++ b/Paper/DirectedMCNoiseOnly/repeat.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +. /home/gregory.ashton/lalsuite-install/etc/lalapps-user-env.sh +export PATH="/home/gregory.ashton/anaconda2/bin:$PATH" +export MPLCONFIGDIR=/home/gregory.ashton/.config/matplotlib + +rm /local/user/gregory.ashton/MCResults*txt +for ((n=0;n<100;n++)) +do +/home/gregory.ashton/anaconda2/bin/python generate_data.py "$1" /local/user/gregory.ashton --quite --no-template-counting +done +cp /local/user/gregory.ashton/MCResults*txt /home/gregory.ashton/PyFstat/Paper/DirectedMCNoiseOnly/CollectedOutput diff --git a/Paper/DirectedMCNoiseOnly/submitfile b/Paper/DirectedMCNoiseOnly/submitfile new file mode 100644 index 0000000..7f057b7 --- /dev/null +++ b/Paper/DirectedMCNoiseOnly/submitfile @@ -0,0 +1,12 @@ +Executable= repeat.sh +Arguments= $(Cluster)_$(Process) +Universe=vanilla +Input=/dev/null +accounting_group = ligo.dev.o2.cw.explore.test +Output=CollectedOutput/out.$(Process) +Error=CollectedOutput/err.$(Process) +Log=CollectedOutput/log.$(Process) +request_cpus = 1 +request_memory = 8 GB + +Queue 100 diff --git a/Paper/directed_noise_twoF_histogram.png b/Paper/directed_noise_twoF_histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b23a5f85c29004d657dc6b578ae161fcdb22f2 GIT binary patch literal 24526 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 GXaWEgWnB;e literal 0 HcmV?d00001 -- GitLab