def test_derivative(self): log= logging.getLogger( "test_J0023.derivative_test") testp = tdu.get_derivative_params(self.modelJ0023) delay = self.modelJ0023.delay(self.toasJ0023) for p in testp.keys(): log.debug( "Runing derivative for %s", 'd_delay_d_'+p) if p in ['EPS2', 'EPS1']: testp[p] = 10 ndf = self.modelJ0023.d_phase_d_param_num(self.toasJ0023, p, testp[p]) adf = self.modelJ0023.d_phase_d_param(self.toasJ0023, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf+ndf)/2.0 relative_diff = np.abs(diff)/np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_delay_d_%s with max relative difference %lf' % (p, np.nanmax(relative_diff).value) if p in ['PMELONG', 'ELONG']: tol = 2e-2 elif p in ['FB2', 'FB3']: tol = 0.08 else: tol = 1e-3 log.debug( "derivative relative diff for %s, %lf"%('d_delay_d_'+p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log = logging.getLogger("TestJ0613.derivative_test") self.modelJ0613.PBDOT.value = 0.0 # For test PBDOT self.modelJ0613.EPS1DOT.value = 0.0 self.modelJ0613.EPS2DOT.value = 0.0 self.modelJ0613.A1DOT.value = 0.0 testp = tdu.get_derivative_params(self.modelJ0613) delay = self.modelJ0613.delay(self.toasJ0613) # Change parameter test step testp["EPS1"] = 1 testp["EPS2"] = 1 testp["PMDEC"] = 1 testp["PMRA"] = 1 for p in testp.keys(): log.debug("Runing derivative for %s", "d_delay_d_" + p) ndf = self.modelJ0613.d_phase_d_param_num(self.toasJ0613, p, testp[p]) adf = self.modelJ0613.d_phase_d_param(self.toasJ0613, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) # print "Diff Max is :", np.abs(diff).max() msg = ( "Derivative test failed at d_delay_d_%s with max relative difference %lf" % (p, np.nanmax(relative_diff).value)) if p in ["EPS1DOT", "EPS1"]: tol = 0.05 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ("d_delay_d_" + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log = logging.getLogger("test_J0023.derivative_test") testp = tdu.get_derivative_params(self.modelJ0023) delay = self.modelJ0023.delay(self.toasJ0023) for p in testp.keys(): log.debug("Runing derivative for %s", "d_delay_d_" + p) if p in ["EPS2", "EPS1"]: testp[p] = 10 ndf = self.modelJ0023.d_phase_d_param_num(self.toasJ0023, p, testp[p]) adf = self.modelJ0023.d_phase_d_param(self.toasJ0023, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) # print "Diff Max is :", np.abs(diff).max() msg = ( "Derivative test failed at d_delay_d_%s with max relative difference %lf" % (p, np.nanmax(relative_diff).value)) if p in ["PMELONG", "ELONG"]: tol = 2e-2 elif p in ["FB2", "FB3"]: tol = 0.08 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ("d_delay_d_" + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log = logging.getLogger("TestB1855.derivative_test") testp = tdu.get_derivative_params(self.modelB1855) delay = self.modelB1855.delay(self.toasB1855) for p in testp.keys(): log.debug("Runing derivative for %s", 'd_delay_d_' + p) ndf = self.modelB1855.d_phase_d_param_num(self.toasB1855, p, testp[p]) adf = self.modelB1855.d_phase_d_param(self.toasB1855, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_delay_d_%s with max relative difference %lf' % ( p, np.nanmax(relative_diff).value) if p in ['SINI']: tol = 0.7 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ('d_delay_d_' + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_J1713_deriv(self): log= logging.getLogger( "TestJ1713.derivative_test") testp = tdu.get_derivative_params(self.modelJ1713) delay = self.modelJ1713.delay(self.toasJ1713) for p in testp.keys(): # Only check the binary parameters if p not in self.modelJ1713.binary_instance.binary_params: continue if p in ['PX', 'PMRA', 'PMDEC']: continue par = getattr(self.modelJ1713, p) if type(par).__name__ is "boolParameter": continue log.debug( "Runing derivative for %s", 'd_phase_d_'+p) ndf = self.modelJ1713.d_phase_d_param_num(self.toasJ1713, p, testp[p]) adf = self.modelJ1713.d_phase_d_param(self.toasJ1713, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf+ndf)/2.0 relative_diff = np.abs(diff)/np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_phase_d_%s with max relative difference %lf' % (p, np.nanmax(relative_diff).value) if p in ['SINI', 'KIN']: tol = 0.7 elif p in ['KOM']: tol = 0.04 else: tol = 1e-3 log.debug( "derivative relative diff for %s, %lf"%('d_phase_d_'+p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(toasJ1853, modelJ1853): log = logging.getLogger("TestJ1853.derivative_test") test_params = ["H3", "H4", "STIGMA"] modelJ1853.H4.value = 0.0 # For test PBDOT modelJ1853.STIGMA.value = 0.0 testp = tdu.get_derivative_params(modelJ1853) delay = modelJ1853.delay(toasJ1853) # Change parameter test step testp["H3"] = 6e-1 testp["H4"] = 1e-2 testp["STIGMA"] = 1e-2 for p in test_params: log.debug("Runing derivative for %s", "d_delay_d_" + p) ndf = modelJ1853.d_phase_d_param_num(toasJ1853, p, testp[p]) adf = modelJ1853.d_phase_d_param(toasJ1853, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) # print "Diff Max is :", np.abs(diff).max() msg = ( "Derivative test failed at d_delay_d_%s with max relative difference %lf" % (p, np.nanmax(relative_diff).value)) if p in ["EPS1DOT", "EPS1"]: tol = 0.05 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ("d_delay_d_" + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log.setLevel("DEBUG") testp = tdu.get_derivative_params(self.modelB1953) delay = self.modelB1953.delay(self.toasB1953) for p in testp.keys(): log.debug("Runing derivative for %s".format("d_delay_d_" + p)) ndf = self.modelB1953.d_phase_d_param_num(self.toasB1953, p, testp[p]) adf = self.modelB1953.d_phase_d_param(self.toasB1953, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) # print "Diff Max is :", np.abs(diff).max() msg = ( "Derivative test failed at d_delay_d_%s with max relative difference %lf" % (p, np.nanmax(relative_diff).value)) if p in ["ECC", "EDOT"]: tol = 20 elif p in ["PMDEC"]: tol = 5e-3 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ("d_delay_d_" + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_J1713_deriv(self): log = logging.getLogger("TestJ1713.derivative_test") testp = tdu.get_derivative_params(self.modelJ1713) delay = self.modelJ1713.delay(self.toasJ1713) for p in testp.keys(): # Only check the binary parameters if p not in self.modelJ1713.binary_instance.binary_params: continue if p in ['PX', 'PMRA', 'PMDEC']: continue par = getattr(self.modelJ1713, p) if type(par).__name__ is "boolParameter": continue log.debug("Runing derivative for %s", 'd_phase_d_' + p) ndf = self.modelJ1713.d_phase_d_param_num(self.toasJ1713, p, testp[p]) adf = self.modelJ1713.d_phase_d_param(self.toasJ1713, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_phase_d_%s with max relative difference %lf' % ( p, np.nanmax(relative_diff).value) if p in ['SINI', 'KIN']: tol = 0.7 elif p in ['KOM']: tol = 0.04 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ('d_phase_d_' + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(modelJ0023, toasJ0023): testp = tdu.get_derivative_params(modelJ0023) delay = modelJ0023.delay(toasJ0023) for p in testp.keys(): print("Runing derivative for %s", "d_delay_d_" + p) if p in ["EPS2", "EPS1"]: testp[p] = 15 ndf = modelJ0023.d_phase_d_param_num(toasJ0023, p, testp[p]) adf = modelJ0023.d_phase_d_param(toasJ0023, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) # print "Diff Max is :", np.abs(diff).max() msg = ( "Derivative test failed at d_delay_d_%s with max relative difference %lf" % (p, np.nanmax(relative_diff).value) ) if p in ["PMELONG", "ELONG"]: tol = 2e-2 elif p in ["FB1"]: # paulr added this to make tests pass with oldest supported versions of numpy/astropy, but I don't know why it is needed # How should we decide what the acceptable tolerance is? This should not just be a random choice. tol = 0.002 elif p in ["FB2", "FB3"]: tol = 0.08 else: tol = 1e-3 print( "derivative relative diff for %s, %lf" % ("d_delay_d_" + p, np.nanmax(relative_diff).value) ) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log = logging.getLogger("TestJ1853.derivative_test") test_params = ['H3', 'H4', 'STIGMA'] self.modelJ1853.H4.value = 0.0 # For test PBDOT self.modelJ1853.STIGMA.value = 0.0 testp = tdu.get_derivative_params(self.modelJ1853) delay = self.modelJ1853.delay(self.toasJ1853) # Change parameter test step testp['H3'] = 5e-1 testp['H4'] = 1e-2 testp['STIGMA'] = 1e-2 for p in test_params: log.debug("Runing derivative for %s", 'd_delay_d_' + p) ndf = self.modelJ1853.d_phase_d_param_num(self.toasJ1853, p, testp[p]) adf = self.modelJ1853.d_phase_d_param(self.toasJ1853, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf + ndf) / 2.0 relative_diff = np.abs(diff) / np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_delay_d_%s with max relative difference %lf' % ( p, np.nanmax(relative_diff).value) if p in ['EPS1DOT', 'EPS1']: tol = 0.05 else: tol = 1e-3 log.debug("derivative relative diff for %s, %lf" % ('d_delay_d_' + p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_derivative(self): log= logging.getLogger( "TestJ0613.derivative_test") self.modelJ0613.PBDOT.value = 0.0 # For test PBDOT self.modelJ0613.EPS1DOT.value = 0.0 self.modelJ0613.EPS2DOT.value = 0.0 self.modelJ0613.A1DOT.value = 0.0 testp = tdu.get_derivative_params(self.modelJ0613) delay = self.modelJ0613.delay(self.toasJ0613.table) # Change parameter test step testp['EPS1'] = 1 testp['EPS2'] = 1 testp['PMDEC'] = 1 testp['PMRA'] = 1 for p in testp.keys(): log.debug( "Runing derivative for %s", 'd_delay_d_'+p) ndf = self.modelJ0613.d_phase_d_param_num(self.toasJ0613.table, p, testp[p]) adf = self.modelJ0613.d_phase_d_param(self.toasJ0613.table, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf+ndf)/2.0 relative_diff = np.abs(diff)/np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_delay_d_%s with max relative difference %lf' % (p, np.nanmax(relative_diff).value) if p in ['EPS1DOT', 'EPS1']: tol = 0.05 else: tol = 1e-3 log.debug( "derivative relative diff for %s, %lf"%('d_delay_d_'+p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue
def test_K96(self): log= logging.getLogger( "TestJ1713 Switch of K96") self.modelJ1713.K96.value = False res = resids(self.toasJ1713, self.modelJ1713, False).time_resids.to(u.s) delay = self.modelJ1713.delay(self.toasJ1713) testp = tdu.get_derivative_params(self.modelJ1713) for p in testp.keys(): adf = self.modelJ1713.d_phase_d_param(self.toasJ1713, delay, p)
def test_K96(self): log = logging.getLogger("TestJ1713 Switch of K96") self.modelJ1713.K96.value = False res = Residuals(self.toasJ1713, self.modelJ1713, False).time_resids.to(u.s) delay = self.modelJ1713.delay(self.toasJ1713) testp = tdu.get_derivative_params(self.modelJ1713) for p in testp.keys(): adf = self.modelJ1713.d_phase_d_param(self.toasJ1713, delay, p)
def test_K96(self): modelJ1713 = copy.deepcopy(self.modelJ1713) log = logging.getLogger("TestJ1713 Switch of K96") modelJ1713.K96.value = False res = Residuals(self.toasJ1713, modelJ1713, use_weighted_mean=False).time_resids.to(u.s) delay = self.modelJ1713.delay(self.toasJ1713) testp = tdu.get_derivative_params(modelJ1713) for p in testp.keys(): self.modelJ1713.d_phase_d_param(self.toasJ1713, delay, p)
def test_derivative(self): log= logging.getLogger( "TestB1855.derivative_test") testp = tdu.get_derivative_params(self.modelB1855) delay = self.modelB1855.delay(self.toasB1855) for p in testp.keys(): log.debug( "Runing derivative for %s", 'd_delay_d_'+p) ndf = self.modelB1855.d_phase_d_param_num(self.toasB1855, p, testp[p]) adf = self.modelB1855.d_phase_d_param(self.toasB1855, delay, p) diff = adf - ndf if not np.all(diff.value) == 0.0: mean_der = (adf+ndf)/2.0 relative_diff = np.abs(diff)/np.abs(mean_der) #print "Diff Max is :", np.abs(diff).max() msg = 'Derivative test failed at d_delay_d_%s with max relative difference %lf' % (p, np.nanmax(relative_diff).value) if p in ['SINI']: tol = 0.7 else: tol = 1e-3 log.debug( "derivative relative diff for %s, %lf"%('d_delay_d_'+p, np.nanmax(relative_diff).value)) assert np.nanmax(relative_diff) < tol, msg else: continue