def test3(self): print "Testing HalogenInterface generate_particles" number_of_particles = 100000 instance = HalogenInterface(**default_options) self.assertEquals(instance.initialize_code(), 0) self.assertEquals(instance.set_model_alpha(2.0), 0) self.assertEquals(instance.set_model_beta(5.0), 0) self.assertEquals(instance.set_model_gamma(0.0), 0) self.assertEquals(instance.set_target_number_of_particles(number_of_particles), 0) self.assertEquals(instance.set_random_seed(1), 0) self.assertEquals(instance.set_output_path(instance.get_output_directory()), 0) self.assertEquals(instance.commit_parameters(), 0) self.assertEquals(instance.get_number_of_particles_updated().values(), [0, 0]) self.assertEquals(instance.generate_particles(), 0) self.assertEquals(instance.get_number_of_particles_updated().values(), [number_of_particles, 0]) masses, errors = instance.get_mass(range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertEquals(masses, numpy.ones(number_of_particles)/number_of_particles) x_positions, y_positions, z_positions, errors = instance.get_position(range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertAlmostEquals(numpy.array([numpy.mean(x_positions), numpy.mean(y_positions), numpy.mean(z_positions)]), numpy.array([0.0]*3)) self.assertAlmostEquals(numpy.array([numpy.mean(abs(x_positions)), numpy.mean(abs(y_positions)), numpy.mean(abs(z_positions))]), numpy.array([1.0]*3), 1) x_velocities, y_velocities, z_velocities, errors = instance.get_velocity(range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertAlmostEquals(numpy.array([numpy.mean(x_velocities), numpy.mean(y_velocities), numpy.mean(z_velocities)]), numpy.array([0.0]*3)) self.assertAlmostEquals(numpy.array([numpy.mean(abs(x_velocities)), numpy.mean(abs(y_velocities)), numpy.mean(abs(z_velocities))]), numpy.array([0.25]*3), 1) self.assertEquals(instance.cleanup_code(), 0) instance.stop()
def test3(self): print "Testing HalogenInterface generate_particles" number_of_particles = 100000 instance = HalogenInterface(**default_options) self.assertEquals(instance.initialize_code(), 0) self.assertEquals(instance.set_model_alpha(2.0), 0) self.assertEquals(instance.set_model_beta(5.0), 0) self.assertEquals(instance.set_model_gamma(0.0), 0) self.assertEquals( instance.set_target_number_of_particles(number_of_particles), 0) self.assertEquals(instance.set_random_seed(1), 0) self.assertEquals( instance.set_output_path(instance.get_output_directory()), 0) self.assertEquals(instance.commit_parameters(), 0) self.assertEquals(instance.get_number_of_particles_updated().values(), [0, 0]) self.assertEquals(instance.generate_particles(), 0) self.assertEquals(instance.get_number_of_particles_updated().values(), [number_of_particles, 0]) masses, errors = instance.get_mass(range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertEquals( masses, numpy.ones(number_of_particles) / number_of_particles) x_positions, y_positions, z_positions, errors = instance.get_position( range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertAlmostEquals( numpy.array([ numpy.mean(x_positions), numpy.mean(y_positions), numpy.mean(z_positions) ]), numpy.array([0.0] * 3)) self.assertAlmostEquals( numpy.array([ numpy.mean(abs(x_positions)), numpy.mean(abs(y_positions)), numpy.mean(abs(z_positions)) ]), numpy.array([1.0] * 3), 1) x_velocities, y_velocities, z_velocities, errors = instance.get_velocity( range(number_of_particles)) self.assertEquals(errors, numpy.zeros(number_of_particles)) self.assertAlmostEquals( numpy.array([ numpy.mean(x_velocities), numpy.mean(y_velocities), numpy.mean(z_velocities) ]), numpy.array([0.0] * 3)) self.assertAlmostEquals( numpy.array([ numpy.mean(abs(x_velocities)), numpy.mean(abs(y_velocities)), numpy.mean(abs(z_velocities)) ]), numpy.array([0.25] * 3), 1) self.assertEquals(instance.cleanup_code(), 0) instance.stop()
def test4(self): print "Testing HalogenInterface output file name and directory" instance = HalogenInterface(**default_options) self.assertEquals(instance.initialize_code(), 0) self.assertEquals(instance.set_model_alpha(2.0), 0) self.assertEquals(instance.set_model_beta(5.0), 0) self.assertEquals(instance.set_model_gamma(0.0), 0) self.assertEquals(instance.set_target_number_of_particles(1000), 0) self.assertEquals(instance.set_random_seed(1), 0) self.assertEquals(instance.set_write_output_flag(1.0), 0) self.assertEquals(instance.get_output_basename().values(), ["halogen", 0]) self.assertEquals(instance.get_output_path().values(), ["./", 0]) self.assertEquals( instance.set_output_basename( "oops_this_output_basename_is_way_too_long" * 2), -1) self.assertEquals(instance.get_output_basename().values(), ["halogen", 0]) self.assertEquals( instance.set_output_path( "/oops/this/output/path/has/way/too/many/subdirs" * 6), -1) self.assertEquals(instance.get_output_path().values(), ["./", 0]) self.assertEquals(instance.set_output_basename("test"), 0) self.assertEquals( instance.set_output_path(instance.get_output_directory()), 0) self.assertEquals(instance.get_output_basename().values(), ["test", 0]) self.assertEquals( instance.get_output_path().values(), [os.path.join(instance.get_output_directory(), ""), 0]) self.assertEquals(instance.commit_parameters(), 0) outputfile = os.path.join(instance.get_output_directory(), "test.IC.ascii") if os.path.exists(outputfile): os.remove(outputfile) self.assertEquals(instance.generate_particles(), 0) self.assertTrue(os.path.exists(outputfile)) halogen4muse_path = os.path.join( os.path.dirname(amuse.community.halogen.__file__), 'src', 'halogen4muse') if not os.path.exists(halogen4muse_path) or not os.access( halogen4muse_path, os.X_OK): return process = subprocess.Popen([ halogen4muse_path, '-a', '2', '-b', '5', '-c', '0', '-N', '1000', '-name', 'test_stand_alone', '-randomseed', '1' ], cwd=instance.get_output_directory(), stdout=subprocess.PIPE, stderr=subprocess.PIPE) process.communicate() self.compare_files( os.path.join(instance.get_output_directory(), "test.IC.ascii"), os.path.join(instance.get_output_directory(), "test_stand_alone.IC.ascii")) stdoutput = subprocess.Popen( ["diff", "test.out", "test_stand_alone.out"], cwd=instance.get_output_directory(), stdout=subprocess.PIPE).communicate()[0] self.assertTrue("< N/A (executed by AMUSE)" in stdoutput) self.assertTrue( "halogen4muse -a 2 -b 5 -c 0 -N 1000 -name test_stand_alone -randomseed 1" in stdoutput) self.assertEquals(instance.cleanup_code(), 0) instance.stop()
def test4(self): print "Testing HalogenInterface output file name and directory" instance = HalogenInterface(**default_options) self.assertEquals(instance.initialize_code(), 0) self.assertEquals(instance.set_model_alpha(2.0), 0) self.assertEquals(instance.set_model_beta(5.0), 0) self.assertEquals(instance.set_model_gamma(0.0), 0) self.assertEquals(instance.set_target_number_of_particles(1000), 0) self.assertEquals(instance.set_random_seed(1), 0) self.assertEquals(instance.set_write_output_flag(1.0), 0) self.assertEquals(instance.get_output_basename().values(), ["halogen", 0]) self.assertEquals(instance.get_output_path().values(), ["./", 0]) self.assertEquals(instance.set_output_basename("oops_this_output_basename_is_way_too_long"*2), -1) self.assertEquals(instance.get_output_basename().values(), ["halogen", 0]) self.assertEquals(instance.set_output_path("/oops/this/output/path/has/way/too/many/subdirs"*6), -1) self.assertEquals(instance.get_output_path().values(), ["./", 0]) self.assertEquals(instance.set_output_basename("test"), 0) self.assertEquals(instance.set_output_path(instance.get_output_directory()), 0) self.assertEquals(instance.get_output_basename().values(), ["test", 0]) self.assertEquals(instance.get_output_path().values(), [os.path.join(instance.get_output_directory(), ""), 0]) self.assertEquals(instance.commit_parameters(), 0) outputfile = os.path.join(instance.get_output_directory(), "test.IC.ascii") if os.path.exists(outputfile): os.remove(outputfile) self.assertEquals(instance.generate_particles(), 0) self.assertTrue(os.path.exists(outputfile)) halogen4muse_path = os.path.join(os.path.dirname(amuse.community.halogen.__file__), 'src', 'halogen4muse') if not os.path.exists(halogen4muse_path) or not os.access(halogen4muse_path, os.X_OK): return process = subprocess.Popen([ halogen4muse_path, '-a', '2', '-b', '5', '-c', '0', '-N', '1000', '-name', 'test_stand_alone', '-randomseed', '1' ] , cwd = instance.get_output_directory() , stdout = subprocess.PIPE , stderr = subprocess.PIPE ) process.communicate() self.compare_files( os.path.join(instance.get_output_directory(), "test.IC.ascii"), os.path.join(instance.get_output_directory(), "test_stand_alone.IC.ascii") ) stdoutput = subprocess.Popen(["diff", "test.out", "test_stand_alone.out"], cwd = instance.get_output_directory(), stdout = subprocess.PIPE).communicate()[0] self.assertTrue("< N/A (executed by AMUSE)" in stdoutput) self.assertTrue("halogen4muse -a 2 -b 5 -c 0 -N 1000 -name test_stand_alone -randomseed 1" in stdoutput) self.assertEquals(instance.cleanup_code(), 0) instance.stop()