Skip to content

Conversation

@silviatoonen
Copy link
Contributor

No description provided.

@silviatoonen silviatoonen reopened this Jan 28, 2022
@rieder rieder self-requested a review January 31, 2022 14:41
@rieder
Copy link
Member

rieder commented Jan 31, 2022

The test (pytest src/amuse/test/suite/codes_test/test_seba.py results in a few fails where it was all successful before, probably because of internal changes in the SeBa models - see below.
Could you update the test where needed? It can be merged afterwards.

============================= test session starts ==============================
platform darwin -- Python 3.10.1, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /Users/srieder/Code/amuse-clean
collected 22 items

test_seba.py ...........F.....FFFFF                                      [100%]

=================================== FAILURES ===================================
__________________ TestSeBa.test_add_stars_at_different_times __________________

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_add_stars_at_different_times>

    def test_add_stars_at_different_times(self):
        instance = self.new_instance_of_an_optional_code(SeBa)
        stars = Particles(2)
        stars[0].mass = 10.0 | units.MSun
        stars[1].mass = 9 | units.MSun
    
        instance.particles.add_particles(stars)
        instance.evolve_model(30|units.Myr)
    
        self.assertAlmostRelativeEquals(instance.particles.age, [30,30] |units.Myr)
        self.assertAlmostRelativeEquals(instance.model_time, 30 | units.Myr)
>       self.assertAlmostRelativeEquals(instance.particles[0].mass, 1.2476 | units.MSun, 4)

test_seba.py:531: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_add_stars_at_different_times>
failures = array([ True], dtype=bool), first = quantity<1.25072398252 MSun>
second = quantity<1.2476 MSun>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<1.25072398252 MSun> != quantity<1.2476 MSun> within 4 places

../../amusetest.py:73: AssertionError
__________________ TestSeBa.test_supernova_stopping_condition __________________

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition>

    def test_supernova_stopping_condition(self):
        """ Test supernova stopping condition """
        instance = self.new_instance_of_an_optional_code(SeBa)
        instance.stopping_conditions.supernova_detection.enable()
    
        p = Particle()
        p.mass = 10 | units.MSun
        p.metallicity = 0.02
    
        p = instance.particles.add_particle(p)
        instance.set_supernova_kick_velocity(0.0|units.kms)
        instance.evolve_model(30 | units.Myr)
        self.assertEqual(instance.stopping_conditions.supernova_detection.is_set(), True)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, p.key)
    
>       self.assertAlmostRelativeEqual(p.age, 27.35866 | units.Myr, 4)

test_seba.py:561: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition>
failures = array([ True], dtype=bool), first = quantity<27.2715197541 Myr>
second = quantity<27.35866 Myr>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<27.2715197541 Myr> != quantity<27.35866 Myr> within 4 places

../../amusetest.py:73: AssertionError
____________ TestSeBa.test_supernova_stopping_condition_in_a_binary ____________

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_in_a_binary>

    def test_supernova_stopping_condition_in_a_binary(self):
        """ Test supernova stopping condition in a binary """
        instance = self.new_instance_of_an_optional_code(SeBa)
        instance.stopping_conditions.supernova_detection.enable()
    
        stars =  Particles(2)
        stars[0].mass = 10.0 | units.MSun
        stars[1].mass = 5.0 | units.MSun
        instance.particles.add_particles(stars)
    
        binaries =  Particles(1)
        binary = binaries[0]
        binary.semi_major_axis = 1.e6|units.RSun
        binary.eccentricity = 0.1
        binary.child1 = stars[0]
        binary.child2 = stars[1]
        instance.binaries.add_particles(binaries)
    
        instance.evolve_model(30 | units.Myr)
        self.assertEqual(instance.stopping_conditions.supernova_detection.is_set(), True)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, instance.binaries[0].child1.key)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, instance.particles[0].key)
    
        print(instance.parameters)
>       self.assertAlmostRelativeEqual(instance.particles[0].age, 27.35866 | units.Myr, 4)

test_seba.py:591: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_in_a_binary>
failures = array([ True], dtype=bool), first = quantity<27.2715197541 Myr>
second = quantity<27.35866 Myr>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<27.2715197541 Myr> != quantity<27.35866 Myr> within 4 places

../../amusetest.py:73: AssertionError
----------------------------- Captured stdout call -----------------------------
is_logging_of_evolve_enabled: False
metallicity: 0.02
stopping_condition_maximum_density: 1.79769313486e+308 mass / (length**3)
stopping_condition_maximum_internal_energy: 1.79769313486e+308 length**2 / (time**2)
stopping_condition_minimum_density: -1.0 mass / (length**3)
stopping_condition_minimum_internal_energy: -1.0 length**2 / (time**2)
stopping_conditions_number_of_steps: 1
stopping_conditions_out_of_box_size: 0.0 length
stopping_conditions_out_of_box_use_center_of_mass: True
stopping_conditions_timeout: 4.0 s
supernova_kick_velocity: 600.0 kms

________ TestSeBa.test_supernova_stopping_condition_with_multiple_stars ________

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars>

    def test_supernova_stopping_condition_with_multiple_stars(self):
        """ Test supernova stopping condition with multiple stars """
        instance = self.new_instance_of_an_optional_code(SeBa)
        instance.stopping_conditions.supernova_detection.enable()
    
        stars =  Particles(3)
        stars[0].mass = 10.0 | units.MSun
        stars[1].mass = 5.0 | units.MSun
        stars[2].mass = 0.5 | units.MSun
        instance.particles.add_particles(stars)
    
    
        instance.evolve_model(30 | units.Myr)
        self.assertEqual(instance.stopping_conditions.supernova_detection.is_set(), True)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, instance.particles[0].key)
    
>       self.assertAlmostRelativeEqual(instance.particles[0].age, 27.35866 | units.Myr, 4)

test_seba.py:619: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars>
failures = array([ True], dtype=bool), first = quantity<27.2715197541 Myr>
second = quantity<27.35866 Myr>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<27.2715197541 Myr> != quantity<27.35866 Myr> within 4 places

../../amusetest.py:73: AssertionError
_ TestSeBa.test_supernova_stopping_condition_with_multiple_stars_multiple_supernovae _

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars_multiple_supernovae>

    def test_supernova_stopping_condition_with_multiple_stars_multiple_supernovae(self):
        """ Test supernova stopping condition with multiple stars """
        instance = self.new_instance_of_an_optional_code(SeBa)
        instance.stopping_conditions.supernova_detection.enable()
    
        stars =  Particles(3)
        stars[0].mass = 10.0 | units.MSun
        stars[1].mass = 11.0 | units.MSun
        stars[2].mass = 0.5 | units.MSun
        instance.particles.add_particles(stars)
    
    
        instance.evolve_model(30 | units.Myr)
        self.assertEqual(instance.stopping_conditions.supernova_detection.is_set(), True)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, instance.particles[1].key)
    
>       self.assertAlmostRelativeEqual(instance.particles[0].age, 23.08688 | units.Myr, 4)

test_seba.py:643: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars_multiple_supernovae>
failures = array([ True], dtype=bool), first = quantity<23.0210208627 Myr>
second = quantity<23.08688 Myr>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<23.0210208627 Myr> != quantity<23.08688 Myr> within 4 places

../../amusetest.py:73: AssertionError
_ TestSeBa.test_supernova_stopping_condition_with_multiple_stars_of_equal_mass _

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars_of_equal_mass>

    def test_supernova_stopping_condition_with_multiple_stars_of_equal_mass(self):
        """ Test supernova stopping condition with multiple stars of equal mass """
        instance = self.new_instance_of_an_optional_code(SeBa)
        instance.stopping_conditions.supernova_detection.enable()
    
        stars =  Particles(3)
        stars[0].mass = 10.0 | units.MSun
        stars[1].mass = 10.0 | units.MSun
        stars[2].mass = 0.5 | units.MSun
        instance.particles.add_particles(stars)
    
    
        instance.evolve_model(30 | units.Myr)
        self.assertEqual(instance.stopping_conditions.supernova_detection.is_set(), True)
        self.assertEqual(len(instance.stopping_conditions.supernova_detection.particles(0)), 2)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[0].key, instance.particles[0].key)
        self.assertEqual(instance.stopping_conditions.supernova_detection.particles(0)[1].key, instance.particles[1].key)
    
>       self.assertAlmostRelativeEqual(instance.particles[0].age, 27.35866 | units.Myr, 4)

test_seba.py:681: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../amusetest.py:140: in failUnlessAlmostRelativeEqual
    self._raise_exceptions_if_any(failures, first, second, "{0!r} != {1!r} within {2!r} places", msg, places)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <amuse.test.suite.codes_tests.test_seba.TestSeBa testMethod=test_supernova_stopping_condition_with_multiple_stars_of_equal_mass>
failures = array([ True], dtype=bool), first = quantity<27.2715197541 Myr>
second = quantity<27.35866 Myr>
err_fmt_string = '{0!r} != {1!r} within {2!r} places', msg = None, args = (4,)

    def _raise_exceptions_if_any(self, failures, first, second, err_fmt_string, msg, *args):
        if len(failures) == 1:
            if failures[0]:
>               raise self.failureException(msg or err_fmt_string.format(first, second, *args))
E               AssertionError: quantity<27.2715197541 Myr> != quantity<27.35866 Myr> within 4 places

../../amusetest.py:73: AssertionError
=============================== warnings summary ===============================
src/amuse/test/suite/codes_tests/test_seba.py: 14 warnings
  /Users/srieder/Code/amuse-clean/src/amuse/datamodel/memory_storage.py:532: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
  Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
    elif dtype == numpy.object:

src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_add_binary_particles
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_add_binary_particles
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_evolution_of_close_binary_system
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_evolution_of_close_binary_system
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_set_semi_major_axis_eccentricity
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_set_semi_major_axis_eccentricity
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_supernova_stopping_condition_in_a_binary
src/amuse/test/suite/codes_tests/test_seba.py::TestSeBa::test_supernova_stopping_condition_in_a_binary
  /Users/srieder/Code/amuse-clean/src/amuse/datamodel/memory_storage.py:683: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
  Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
    dtype = numpy.object

src/amuse/test/suite/codes_tests/test_seba.py: 136 warnings
  /Users/srieder/Code/amuse-clean/src/amuse/support/interface.py:120: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
  Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
    result = base.LinkedArray(numpy.empty(len(keys), dtype= numpy.object))

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ============================
FAILED test_seba.py::TestSeBa::test_add_stars_at_different_times - AssertionE...
FAILED test_seba.py::TestSeBa::test_supernova_stopping_condition - AssertionE...
FAILED test_seba.py::TestSeBa::test_supernova_stopping_condition_in_a_binary
FAILED test_seba.py::TestSeBa::test_supernova_stopping_condition_with_multiple_stars
FAILED test_seba.py::TestSeBa::test_supernova_stopping_condition_with_multiple_stars_multiple_supernovae
FAILED test_seba.py::TestSeBa::test_supernova_stopping_condition_with_multiple_stars_of_equal_mass
================== 6 failed, 16 passed, 158 warnings in 5.83s ==================

@rieder
Copy link
Member

rieder commented Jan 31, 2022

@silviatoonen It would be good to also add tests for the new methods of course...

@rieder
Copy link
Member

rieder commented Feb 1, 2022

Ok, the tests are all passing again, so this can be merged (I'll do this).
Still, we should add tests for the new methods too!

@rieder rieder merged commit ddda8dd into amusecode:main Feb 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants