def test_high_ecc(self): sim = rebound.Simulation() sim.add(m=1.) sim.add(m=1.e-5, P=1., e=0.9) sim.add(m=1.e-5, P=2.) sim.add(m=1.e-5, P=3.) init_sim_parameters(sim) self.assertEqual(sim.integrator, 'whfast')
def test_extreme_ecc(self): sim = rebound.Simulation() sim.add(m=1.) sim.add(m=1.e-5, P=1., e=0.999) sim.add(m=1.e-5, P=2.) sim.add(m=1.e-5, P=3.) init_sim_parameters(sim) self.assertEqual(sim.integrator, 'ias15')
def test_descending_periods(self): sim = rebound.Simulation() sim.add(m=1.) sim.add(m=1.e-5, P=3.) sim.add(m=1.e-5, P=2.) sim.add(m=1.e-5, P=1.) init_sim_parameters(sim) self.assertAlmostEqual(sim.dt, 0.05, delta=1e-15)
def test_negmass(self): sim = rebound.Simulation() sim.add(m=1.) sim.add(m=1.e-5, P=1.) sim.add(m=-1.e-5, P=2.) sim.add(m=1.e-5, P=3.) with self.assertRaises(AttributeError): init_sim_parameters(sim)
def test_second_p_ecc(self): sim = rebound.Simulation() sim.add(m=1.) sim.add(m=1.e-5, P=1.) sim.add(m=1.e-5, P=10., e=0.99) sim.add(m=1.e-5, P=3.) init_sim_parameters(sim) self.assertAlmostEqual(sim.dt, 0.05 * 10 * 0.01**1.5 / np.sqrt(1.99), delta=1.e-8)
def test_same_trajectory(self): sim = longstablesim() init_sim_parameters(sim) _, _ = get_tseries(sim, (1e4, 80, [[1,2,3]])) x1 = sim.particles[1].x sim = longstablesim() nbody = NbodyRegressor() nbody.predict_stable(sim, tmax=1e4, archive_filename='temp.bin', archive_interval=1.e4) sa = rebound.SimulationArchive('temp.bin') sim = sa[-1] x2 = sim.particles[1].x self.assertAlmostEqual(x1, x2, delta=1.e-5)
def test_same_traj_as_feature_classifier(self): # procedure in featureclassifier sim = unstablesim() init_sim_parameters(sim) trios = [[i, i + 1, i + 2] for i in range(1, sim.N_real - 2)] featureargs = [10000, 80, trios] triofeatures, stable = features(sim, featureargs) tfc = sim.t sim = unstablesim() init_sim_parameters(sim) try: sim.integrate(1e4 * sim.particles[1].P, exact_finish_time=0) except rebound.Collision: tn = sim.t self.assertEqual(tfc, tn)
def training_data(row, safolder, runfunc, args): try: sa = rebound.SimulationArchive(safolder + 'sa' + row['runstring']) sim = sa[0] except: print("training_data_functions.py Error reading " + safolder + 'sa' + row['runstring']) return None init_sim_parameters(sim) try: ret, stable = runfunc(sim, args) except: print('{0} failed'.format(row['runstring'])) return None r = ret[ 0] # all runfuncs return list of features for all adjacent trios (to not rerun for each). For training assume it's always 3 planets so list of 1 trio return pd.Series(r, index=list( r.keys())) # conert OrderedDict to pandas Series