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.
Files changed (63) hide show
  1. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/PKG-INFO +1 -1
  2. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/agnostic.py +14 -4
  3. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/n_generation.py +10 -2
  4. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/second_generation.py +14 -4
  5. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/simulation/simulate_merger.py +5 -3
  6. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/PKG-INFO +1 -1
  7. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/pyproject.toml +1 -1
  8. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/LICENSE +0 -0
  9. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/README.md +0 -0
  10. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/__init__.py +0 -0
  11. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/__main__.py +0 -0
  12. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/__init__.py +0 -0
  13. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/ancestral_posterior.py +0 -0
  14. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/__init__.py +0 -0
  15. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/bayes_factor_curve.py +0 -0
  16. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/__init__.py +0 -0
  17. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/assume_independence.py +0 -0
  18. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/base.py +0 -0
  19. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/generic.py +0 -0
  20. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/bayesian/importance_sampling/resampler/interface.py +0 -0
  21. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/__init__.py +0 -0
  22. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/enum.py +0 -0
  23. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/constants/physics.py +0 -0
  24. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/__init__.py +0 -0
  25. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/annotation.py +0 -0
  26. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/bayesian/bayes_factor.py +0 -0
  27. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/distribution.py +0 -0
  28. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/math.py +0 -0
  29. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/__init__.py +0 -0
  30. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/binary.py +0 -0
  31. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/black_hole.py +0 -0
  32. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/mahapatra.py +0 -0
  33. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/physics/simulation.py +0 -0
  34. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/data_structures/visualization.py +0 -0
  35. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/postprocessing/__init__.py +0 -0
  36. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/postprocessing/dataframe.py +0 -0
  37. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/__init__.py +0 -0
  38. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/cli.py +0 -0
  39. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/forward/__init__.py +0 -0
  40. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/forward/compute_bayes_factor_curve.py +0 -0
  41. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/preset/simulation/__init__.py +0 -0
  42. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/py.typed +0 -0
  43. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/simulation/__init__.py +0 -0
  44. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/__init__.py +0 -0
  45. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/app.py +0 -0
  46. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/ui/visualization.py +0 -0
  47. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/__init__.py +0 -0
  48. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/decorator.py +0 -0
  49. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/env.py +0 -0
  50. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/fs.py +0 -0
  51. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/logger.py +0 -0
  52. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/utils/parallel.py +0 -0
  53. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/version.py +0 -0
  54. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/__init__.py +0 -0
  55. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/animation.py +0 -0
  56. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/base.py +0 -0
  57. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/distribution.py +0 -0
  58. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo/visualization/estimation.py +0 -0
  59. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/SOURCES.txt +0 -0
  60. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/dependency_links.txt +0 -0
  61. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/requires.txt +0 -0
  62. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/archeo.egg-info/top_level.txt +0 -0
  63. {archeo-2.0.0.dev1 → archeo-2.0.0.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: archeo
3
- Version: 2.0.0.dev1
3
+ Version: 2.0.0.dev2
4
4
  Summary: Bayesian framework for inferring natal kick, ancestral masses and spins of black holes.
5
5
  Author-email: wyhwong <wyhwong@link.cuhk.edu.hk>
6
6
  License-Expression: MIT
@@ -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(size: int = 1000, n_workers: int = 1) -> PipelineOutput:
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(binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers)
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(size: int = 1000, n_workers: int = 1) -> PipelineOutput:
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(binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers)
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(binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers)
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(binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers)
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(size: int = 1000, n_workers: int = 1) -> PipelineOutput:
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(binary_generator, Fits.NRSUR7DQ4REMNANT, size, n_workers)
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(size: int = 1000, n_workers: int = 1) -> PipelineOutput:
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(binary_generator, Fits.NRSUR3DQ8REMNANT, size, n_workers)
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": 42 + i}
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=42 + n_workers
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: archeo
3
- Version: 2.0.0.dev1
3
+ Version: 2.0.0.dev2
4
4
  Summary: Bayesian framework for inferring natal kick, ancestral masses and spins of black holes.
5
5
  Author-email: wyhwong <wyhwong@link.cuhk.edu.hk>
6
6
  License-Expression: MIT
@@ -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.dev1"
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