archeo 2.0.0.dev1__tar.gz → 2.0.0.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/PKG-INFO +1 -1
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/agnostic.py +14 -4
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/n_generation.py +10 -2
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/second_generation.py +14 -4
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/simulation/simulate_merger.py +5 -3
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/PKG-INFO +1 -1
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/pyproject.toml +1 -1
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/LICENSE +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/README.md +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/__main__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/ancestral_posterior.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/bayes_factor_curve.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/assume_independence.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/base.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/generic.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/interface.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/enum.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/physics.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/annotation.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/bayesian/bayes_factor.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/distribution.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/math.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/binary.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/black_hole.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/mahapatra.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/simulation.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/visualization.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/postprocessing/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/postprocessing/dataframe.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/cli.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/forward/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/forward/compute_bayes_factor_curve.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/py.typed +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/simulation/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/app.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/visualization.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/decorator.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/env.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/fs.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/logger.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/parallel.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/version.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/__init__.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/animation.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/base.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/distribution.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/estimation.py +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/SOURCES.txt +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/dependency_links.txt +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/requires.txt +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/top_level.txt +0 -0
- {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/setup.cfg +0 -0
|
@@ -8,7 +8,9 @@ from archeo.simulation.simulate_merger import simulate_black_hole_mergers
|
|
|
8
8
|
from archeo.utils.parallel import get_n_workers
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
def simulate_agnostic_precession_spin_binaries(
|
|
11
|
+
def simulate_agnostic_precession_spin_binaries(
|
|
12
|
+
size: int = 1000, n_workers: int = 1, random_state: int = 42
|
|
13
|
+
) -> PipelineOutput:
|
|
12
14
|
"""Simulate a population of agnostic precession spin binaries.
|
|
13
15
|
|
|
14
16
|
Args:
|
|
@@ -17,6 +19,7 @@ def simulate_agnostic_precession_spin_binaries(size: int = 1000, n_workers: int
|
|
|
17
19
|
n_workers (int): The number of workers to use for parallel processing.
|
|
18
20
|
Default is 1.
|
|
19
21
|
If -1, it will use all available cores.
|
|
22
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
20
23
|
|
|
21
24
|
Returns:
|
|
22
25
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -32,12 +35,16 @@ def simulate_agnostic_precession_spin_binaries(size: int = 1000, n_workers: int
|
|
|
32
35
|
secondary_black_hole_source=bh_generator,
|
|
33
36
|
is_aligned_spin=False,
|
|
34
37
|
)
|
|
35
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
38
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
39
|
+
binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers, random_state
|
|
40
|
+
)
|
|
36
41
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
37
42
|
return df_binaries, binary_generator
|
|
38
43
|
|
|
39
44
|
|
|
40
|
-
def simulate_agnostic_aligned_spin_binaries(
|
|
45
|
+
def simulate_agnostic_aligned_spin_binaries(
|
|
46
|
+
size: int = 1000, n_workers: int = 1, random_state: int = 42
|
|
47
|
+
) -> PipelineOutput:
|
|
41
48
|
"""Simulate a population of agnostic aligned spin binaries.
|
|
42
49
|
|
|
43
50
|
Args:
|
|
@@ -46,6 +53,7 @@ def simulate_agnostic_aligned_spin_binaries(size: int = 1000, n_workers: int = 1
|
|
|
46
53
|
n_workers (int): The number of workers to use for parallel processing.
|
|
47
54
|
Default is 1.
|
|
48
55
|
If -1, it will use all available cores.
|
|
56
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
49
57
|
|
|
50
58
|
Returns:
|
|
51
59
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -61,6 +69,8 @@ def simulate_agnostic_aligned_spin_binaries(size: int = 1000, n_workers: int = 1
|
|
|
61
69
|
secondary_black_hole_source=bh_generator,
|
|
62
70
|
is_aligned_spin=True,
|
|
63
71
|
)
|
|
64
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
72
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
73
|
+
binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers, random_state
|
|
74
|
+
)
|
|
65
75
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
66
76
|
return df_binaries, binary_generator
|
|
@@ -16,6 +16,7 @@ def simulate_multi_generation_precession_spin_binaries(
|
|
|
16
16
|
df_bh2_binaries: Optional[pd.DataFrame] = None,
|
|
17
17
|
size: int = 1000,
|
|
18
18
|
n_workers: int = 1,
|
|
19
|
+
random_state: int = 42,
|
|
19
20
|
) -> PipelineOutput:
|
|
20
21
|
"""Simulate a population of multi-generation precession spin binaries.
|
|
21
22
|
|
|
@@ -30,6 +31,7 @@ def simulate_multi_generation_precession_spin_binaries(
|
|
|
30
31
|
n_workers (int): The number of workers to use for parallel processing.
|
|
31
32
|
Default is 1.
|
|
32
33
|
If -1, it will use all available cores.
|
|
34
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
33
35
|
|
|
34
36
|
Returns:
|
|
35
37
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -50,7 +52,9 @@ def simulate_multi_generation_precession_spin_binaries(
|
|
|
50
52
|
secondary_black_hole_source=bh2_generator,
|
|
51
53
|
is_aligned_spin=False,
|
|
52
54
|
)
|
|
53
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
55
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
56
|
+
binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers, random_state
|
|
57
|
+
)
|
|
54
58
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
55
59
|
return df_binaries, binary_generator
|
|
56
60
|
|
|
@@ -60,6 +64,7 @@ def simulate_multi_generation_aligned_spin_binaries(
|
|
|
60
64
|
df_bh2_binaries: Optional[pd.DataFrame] = None,
|
|
61
65
|
size: int = 1000,
|
|
62
66
|
n_workers: int = 1,
|
|
67
|
+
random_state: int = 42,
|
|
63
68
|
) -> PipelineOutput:
|
|
64
69
|
"""Simulate a population of multi-generation aligned spin binaries.
|
|
65
70
|
|
|
@@ -74,6 +79,7 @@ def simulate_multi_generation_aligned_spin_binaries(
|
|
|
74
79
|
n_workers (int): The number of workers to use for parallel processing.
|
|
75
80
|
Default is 1.
|
|
76
81
|
If -1, it will use all available cores.
|
|
82
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
77
83
|
|
|
78
84
|
Returns:
|
|
79
85
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -94,6 +100,8 @@ def simulate_multi_generation_aligned_spin_binaries(
|
|
|
94
100
|
secondary_black_hole_source=bh2_generator,
|
|
95
101
|
is_aligned_spin=True,
|
|
96
102
|
)
|
|
97
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
103
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
104
|
+
binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers, random_state
|
|
105
|
+
)
|
|
98
106
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
99
107
|
return df_binaries, binary_generator
|
|
@@ -7,7 +7,9 @@ from archeo.simulation.simulate_merger import simulate_black_hole_mergers
|
|
|
7
7
|
from archeo.utils.parallel import get_n_workers
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def simulate_second_generation_precession_spin_binaries(
|
|
10
|
+
def simulate_second_generation_precession_spin_binaries(
|
|
11
|
+
size: int = 1000, n_workers: int = 1, random_state: int = 42
|
|
12
|
+
) -> PipelineOutput:
|
|
11
13
|
"""Simulate a population of second generation precession spin binaries.
|
|
12
14
|
|
|
13
15
|
Args:
|
|
@@ -16,6 +18,7 @@ def simulate_second_generation_precession_spin_binaries(size: int = 1000, n_work
|
|
|
16
18
|
n_workers (int): The number of workers to use for parallel processing.
|
|
17
19
|
Default is 1.
|
|
18
20
|
If -1, it will use all available cores.
|
|
21
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
19
22
|
|
|
20
23
|
Returns:
|
|
21
24
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -31,12 +34,16 @@ def simulate_second_generation_precession_spin_binaries(size: int = 1000, n_work
|
|
|
31
34
|
secondary_black_hole_source=bh_generator,
|
|
32
35
|
is_aligned_spin=False,
|
|
33
36
|
)
|
|
34
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
37
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
38
|
+
binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers, random_state
|
|
39
|
+
)
|
|
35
40
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
36
41
|
return df_binaries, binary_generator
|
|
37
42
|
|
|
38
43
|
|
|
39
|
-
def simulate_second_generation_aligned_spin_binaries(
|
|
44
|
+
def simulate_second_generation_aligned_spin_binaries(
|
|
45
|
+
size: int = 1000, n_workers: int = 1, random_state: int = 42
|
|
46
|
+
) -> PipelineOutput:
|
|
40
47
|
"""Simulate a population of second generation aligned spin binaries.
|
|
41
48
|
|
|
42
49
|
Args:
|
|
@@ -45,6 +52,7 @@ def simulate_second_generation_aligned_spin_binaries(size: int = 1000, n_workers
|
|
|
45
52
|
n_workers (int): The number of workers to use for parallel processing.
|
|
46
53
|
Default is 1.
|
|
47
54
|
If -1, it will use all available cores.
|
|
55
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
48
56
|
|
|
49
57
|
Returns:
|
|
50
58
|
SimulationOutput: tuple(pd.DataFrame, BinaryGenerator)
|
|
@@ -60,6 +68,8 @@ def simulate_second_generation_aligned_spin_binaries(size: int = 1000, n_workers
|
|
|
60
68
|
secondary_black_hole_source=bh_generator,
|
|
61
69
|
is_aligned_spin=True,
|
|
62
70
|
)
|
|
63
|
-
black_hole_mergers = simulate_black_hole_mergers(
|
|
71
|
+
black_hole_mergers = simulate_black_hole_mergers(
|
|
72
|
+
binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers, random_state
|
|
73
|
+
)
|
|
64
74
|
df_binaries = convert_simulated_binaries_to_dataframe(black_hole_mergers)
|
|
65
75
|
return df_binaries, binary_generator
|
|
@@ -67,6 +67,7 @@ def simulate_black_hole_mergers(
|
|
|
67
67
|
fits: Fits,
|
|
68
68
|
size: int,
|
|
69
69
|
n_workers: int = 1,
|
|
70
|
+
random_state: int = 42,
|
|
70
71
|
) -> BlackHoleMergers:
|
|
71
72
|
"""Simulate black hole mergers.
|
|
72
73
|
|
|
@@ -75,19 +76,20 @@ def simulate_black_hole_mergers(
|
|
|
75
76
|
fits (Fits): surfinBH model to use for the simulation
|
|
76
77
|
size (int): Number of mergers to simulate
|
|
77
78
|
n_workers (int): Number of worker processes to use for parallelization. Default is 1.
|
|
79
|
+
random_state (int): Random state for reproducibility. Default is 42.
|
|
78
80
|
Returns:
|
|
79
81
|
BlackHoleMergers: List of tuples containing the binaries and their resulting black holes
|
|
80
82
|
"""
|
|
81
83
|
|
|
82
84
|
if n_workers == 1:
|
|
83
|
-
return _simulate_black_hole_mergers(binary_generator, fits, size)
|
|
85
|
+
return _simulate_black_hole_mergers(binary_generator, fits, size, random_state)
|
|
84
86
|
|
|
85
87
|
# If n_workers > 1, we can parallelize the simulation by splitting the size into chunks
|
|
86
88
|
chunk_size = size // n_workers
|
|
87
89
|
results = multiprocess_run(
|
|
88
90
|
func=_simulate_black_hole_mergers,
|
|
89
91
|
input_kwargs=[
|
|
90
|
-
{"binary_generator": binary_generator, "fits": fits, "size": chunk_size, "random_state":
|
|
92
|
+
{"binary_generator": binary_generator, "fits": fits, "size": chunk_size, "random_state": random_state + i}
|
|
91
93
|
for i in range(n_workers)
|
|
92
94
|
],
|
|
93
95
|
n_processes=n_workers,
|
|
@@ -99,7 +101,7 @@ def simulate_black_hole_mergers(
|
|
|
99
101
|
# If there are any remaining mergers to simulate (due to rounding), simulate them in the main process
|
|
100
102
|
remaining_size = size - len(black_hole_mergers)
|
|
101
103
|
remaining_bh_mergers = _simulate_black_hole_mergers(
|
|
102
|
-
binary_generator, fits, remaining_size, random_state=
|
|
104
|
+
binary_generator, fits, remaining_size, random_state=random_state + n_workers
|
|
103
105
|
)
|
|
104
106
|
black_hole_mergers.extend(remaining_bh_mergers)
|
|
105
107
|
|
|
@@ -16,7 +16,7 @@ classifiers = [
|
|
|
16
16
|
"Operating System :: OS Independent"
|
|
17
17
|
]
|
|
18
18
|
keywords = ["black-holes", "gravitational-waves", "black-hole-archeology"]
|
|
19
|
-
version = "2.0.0.
|
|
19
|
+
version = "2.0.0.dev2"
|
|
20
20
|
readme = "README.md"
|
|
21
21
|
requires-python = ">=3.11,<3.14"
|
|
22
22
|
dependencies = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/bayes_factor_curve.py
RENAMED
|
File without changes
|
{archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/base.py
RENAMED
|
File without changes
|
{archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/generic.py
RENAMED
|
File without changes
|
{archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/interface.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|