Skip to content

Commit

Permalink
change naming and reusing atomic data fixture
Browse files Browse the repository at this point in the history
  • Loading branch information
karthik11135 committed Jan 28, 2025
1 parent 665a7f2 commit d8d9d73
Showing 1 changed file with 24 additions and 25 deletions.
49 changes: 24 additions & 25 deletions tardis/model/matter/tests/test_composition.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,33 +8,32 @@
from tardis.io.model.parse_composition_configuration import parse_composition_from_config


@pytest.fixture(scope="function")
def composition_instance(config_verysimple):
@pytest.fixture(scope="module")
def test_composition_simple(config_verysimple, atomic_dataset):
time_explosion = config_verysimple.supernova.time_explosion.cgs
geometry = parse_geometry_from_config(config_verysimple, time_explosion)
atom_data = parse_atom_data(config_verysimple)

composition, _ = parse_composition_from_config(
atom_data, config_verysimple, time_explosion, geometry
atomic_dataset, config_verysimple, time_explosion, geometry
)
return composition


def test_elemental_mass_fraction(composition_instance):
elemental_mass_fraction = composition_instance.elemental_mass_fraction
def test_elemental_mass_fraction(test_composition_simple):
elemental_mass_fraction = test_composition_simple.elemental_mass_fraction
assert isinstance(elemental_mass_fraction, pd.DataFrame)
np.testing.assert_allclose(elemental_mass_fraction.sum(), 1.0)


def test_elemental_number_density(composition_instance):
number_density = composition_instance.elemental_number_density
def test_elemental_number_density(test_composition_simple):
number_density = test_composition_simple.elemental_number_density
assert isinstance(number_density, pd.DataFrame)
assert np.all(number_density.values >= 0)

# Calculating expected number density manually
density_value = composition_instance.density.to(u.g / u.cm**3).value
mass_fractions = composition_instance.elemental_mass_fraction
element_masses = composition_instance.effective_element_masses.reindex(
density_value = test_composition_simple.density.to(u.g / u.cm**3).value
mass_fractions = test_composition_simple.elemental_mass_fraction
element_masses = test_composition_simple.effective_element_masses.reindex(
mass_fractions.index
)

Expand All @@ -51,21 +50,21 @@ def test_elemental_number_density(composition_instance):


@pytest.mark.parametrize("time_explosion", [10 * u.s, 100 * u.s])
def test_calculate_mass_fraction_at_time(composition_instance, time_explosion):
if composition_instance.isotopic_mass_fraction.empty:
result = composition_instance.calculate_mass_fraction_at_time(time_explosion)
pd.testing.assert_frame_equal(result, composition_instance.elemental_mass_fraction)
def test_calculate_mass_fraction_at_time(test_composition_simple, time_explosion):
if test_composition_simple.isotopic_mass_fraction.empty:
result = test_composition_simple.calculate_mass_fraction_at_time(time_explosion)
pd.testing.assert_frame_equal(result, test_composition_simple.elemental_mass_fraction)
else:
initial_state = composition_instance.isotopic_mass_fraction.copy()
composition_instance.calculate_mass_fraction_at_time(time_explosion)
initial_state = test_composition_simple.isotopic_mass_fraction.copy()
test_composition_simple.calculate_mass_fraction_at_time(time_explosion)

assert not composition_instance.isotopic_mass_fraction.equals(initial_state)
assert not test_composition_simple.isotopic_mass_fraction.equals(initial_state)


def test_calculate_cell_masses(composition_instance):
def test_calculate_cell_masses(test_composition_simple):
volume = 10 * u.cm**3
density = composition_instance.density
cell_masses = composition_instance.calculate_cell_masses(volume)
density = test_composition_simple.density
cell_masses = test_composition_simple.calculate_cell_masses(volume)

assert isinstance(cell_masses, u.Quantity)
assert cell_masses.unit == u.g
Expand All @@ -74,14 +73,14 @@ def test_calculate_cell_masses(composition_instance):
np.testing.assert_allclose(cell_masses.value, expected_masses.value)


def test_calculate_elemental_cell_masses(composition_instance):
def test_calculate_elemental_cell_masses(test_composition_simple):
volume = 10 * u.cm**3
density = composition_instance.density
elemental_masses = composition_instance.calculate_elemental_cell_masses(volume)
density = test_composition_simple.density
elemental_masses = test_composition_simple.calculate_elemental_cell_masses(volume)

assert isinstance(elemental_masses, pd.DataFrame)
assert np.all(elemental_masses.values >= 0)

expected_masses = composition_instance.elemental_mass_fraction * (density * volume).to(u.g).value
expected_masses = test_composition_simple.elemental_mass_fraction * (density * volume).to(u.g).value
np.testing.assert_allclose(elemental_masses.values, expected_masses.values)

0 comments on commit d8d9d73

Please sign in to comment.