Skip to content
Snippets Groups Projects
Commit 97faed4f authored by Rayne Liu's avatar Rayne Liu
Browse files

Changing parameter to omega and tau

parent f40014dd
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
# coding: utf-8
"""
What happens if I fit the mock data simply using omega and tau, and don't look at alpha and beta?
--Rayne Liu, 09/09/2020
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
plt.rcParams.update({'font.size': 19})
import dynesty
from dynesty import plotting as dyplot
import qnm
import random
import h5py
import json
#This cell mimicks the (2, 2, 0) and (2, 2, 1) superposition, using the 0.01 stepsize
tstep = 1
ndim = 8
rootpath = '/work/rayne.liu/git/rdstackingproject'#"/Users/RayneLiu/git/rdstackingproject"
t = np.arange(0, 80, tstep)
w0, tau0, x0, y0 = [0.55578191, 11.74090006, 0.98213669, -4.81250993]
#Can get the w and tau from example nb and amplitude and phase from the 1910 paper
w1, tau1, x1, y1 = [0.54, 3.88312743, 4.29386867, -0.79472571]
print('The fundamental tone frequency, damping time, amplitude and phase:')
print(w0, tau0, x0, y0)
print('The n=1 overtone frequency, damping time, amplitude and phase:')
print(w1, tau1, x1, y1)
mockdata = x0*np.exp(1j*y0)*np.exp(-t/(tau0)) * (np.cos(w0*t)-1j*np.sin(w0*t)) + \
x1*np.exp(1j*y1)*np.exp(-t/(tau1)) * (np.cos(w1*t)-1j*np.sin(w1*t))
print('The mock data:')
figdata = plt.figure(figsize = (12, 8))
plt.plot(t, mockdata.real, label = r'Real')
plt.plot(t, mockdata.imag, label = r'Imag')
plt.legend()
#plt.show()
figdata.savefig(rootpath + '/plotsmc/n=1_mockdata.png', format='png', bbox_inches='tight', dpi=300)
def modelmock(theta):
"""
theta: comprised of wvar0, wvar1, tauvar0, tauvar1, xvar0, xvar1, and yvar0, yvar1
"""
wvar0, wvar1, tauvar0, tauvar1, xvar0, xvar1, yvar0, yvar1 = theta
ansatz = (xvar0*np.exp(1j*yvar0))*np.exp(-t/tauvar0)*(np.cos(wvar0*t)-1j*np.sin(wvar0*t)) +\
(xvar1*np.exp(1j*yvar1))*np.exp(-t/tauvar1)*(np.cos(wvar1*t)-1j*np.sin(wvar1*t))
# -1j to agree with SXS convention
return ansatz
# LogLikelihood function. It is just a Gaussian loglikelihood based on computing the residuals^2
def log_likelihood(theta):
model_mock = modelmock(theta)
return -np.sum((mockdata.real - model_mock.real)**2+(mockdata.imag - model_mock.imag)**2)
def prior_transform(cube):
cube[0] = (1.-0.4)*w0 + cube[0]*0.8*w0
cube[1] = (1.-0.4)*w1 + cube[1]*0.8*w1
cube[2] = cube[2]*3*tau0
cube[3] = cube[3]*3*tau1
cube[4] = 0 + cube[4]*6
cube[5] = 0 + cube[5]*6
cube[6] = -np.pi + cube[6]*2*np.pi
cube[7] = -np.pi + cube[7]*2*np.pi
return cube
sampler=dynesty.NestedSampler(log_likelihood, prior_transform, ndim, nlive=2000)
sampler.run_nested()
res = sampler.results
res.samples_u.shape
dim = 2
paramlabels_w = [r'$\omega_'+str(i)+'$' for i in range (dim)]
paramlabels_t = [r'$\tau_'+str(i)+'$' for i in range (dim)]
paramlabels_x = [r'$x_'+str(i)+'$' for i in range (dim)]
paramlabels_y = [r'$y_'+str(i)+'$' for i in range (dim)]
paramlabels = paramlabels_w + paramlabels_t + paramlabels_x + paramlabels_y
print('Our constraints:')
fg, ax = dyplot.cornerplot(res, color='blue',
show_titles=True, labels = paramlabels,
quantiles=None)
fg.savefig(rootpath + '/plotsmc/n=1_mockfit_tstep=' + str(tstep) +'wandt.png', format='png', bbox_inches='tight', dpi=300)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment