sxs 2024.0.29__tar.gz → 2024.0.30__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 (130) hide show
  1. {sxs-2024.0.29 → sxs-2024.0.30}/.github/workflows/build.yml +3 -0
  2. {sxs-2024.0.29 → sxs-2024.0.30}/CITATION.cff +2 -2
  3. {sxs-2024.0.29 → sxs-2024.0.30}/PKG-INFO +1 -1
  4. sxs-2024.0.30/sxs/__version__.py +1 -0
  5. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/metadata/metadata.py +22 -9
  6. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/simulations/simulations.py +22 -0
  7. sxs-2024.0.29/sxs/__version__.py +0 -1
  8. {sxs-2024.0.29 → sxs-2024.0.30}/.codecov.yml +0 -0
  9. {sxs-2024.0.29 → sxs-2024.0.30}/.github/dependabot.yml +0 -0
  10. {sxs-2024.0.29 → sxs-2024.0.30}/.github/scripts/parse_bump_rule.py +0 -0
  11. {sxs-2024.0.29 → sxs-2024.0.30}/.github/workflows/pr_rtd_link.yml +0 -0
  12. {sxs-2024.0.29 → sxs-2024.0.30}/.gitignore +0 -0
  13. {sxs-2024.0.29 → sxs-2024.0.30}/.readthedocs.yaml +0 -0
  14. {sxs-2024.0.29 → sxs-2024.0.30}/LICENSE +0 -0
  15. {sxs-2024.0.29 → sxs-2024.0.30}/README.md +0 -0
  16. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/catalog.md +0 -0
  17. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/horizons.md +0 -0
  18. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/load.md +0 -0
  19. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/metadata.md +0 -0
  20. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/simulation.md +0 -0
  21. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/simulations.md +0 -0
  22. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/time_series.md +0 -0
  23. {sxs-2024.0.29 → sxs-2024.0.30}/docs/api/waveforms.md +0 -0
  24. {sxs-2024.0.29 → sxs-2024.0.30}/docs/html/main.html +0 -0
  25. {sxs-2024.0.29 → sxs-2024.0.30}/docs/images/favicon.ico +0 -0
  26. {sxs-2024.0.29 → sxs-2024.0.30}/docs/index.md +0 -0
  27. {sxs-2024.0.29 → sxs-2024.0.30}/docs/javascript/mathjax.js +0 -0
  28. {sxs-2024.0.29 → sxs-2024.0.30}/docs/julia.md +0 -0
  29. {sxs-2024.0.29 → sxs-2024.0.30}/docs/mathematica.md +0 -0
  30. {sxs-2024.0.29 → sxs-2024.0.30}/docs/stylesheets/extra.css +0 -0
  31. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/00-Introduction.ipynb +0 -0
  32. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/01-Simulations_and_Metadata.ipynb +0 -0
  33. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/02-Simulation.ipynb +0 -0
  34. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/03-Horizons.ipynb +0 -0
  35. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/04-Waveforms.ipynb +0 -0
  36. {sxs-2024.0.29 → sxs-2024.0.30}/docs/tutorials/05-PreprocessingForFFTs.ipynb +0 -0
  37. {sxs-2024.0.29 → sxs-2024.0.30}/mkdocs.yml +0 -0
  38. {sxs-2024.0.29 → sxs-2024.0.30}/pyproject.toml +0 -0
  39. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/__init__.py +0 -0
  40. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/caltechdata/__init__.py +0 -0
  41. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/caltechdata/catalog.py +0 -0
  42. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/caltechdata/login.py +0 -0
  43. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/catalog/__init__.py +0 -0
  44. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/catalog/catalog.py +0 -0
  45. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/catalog/create.py +0 -0
  46. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/catalog/description.py +0 -0
  47. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/handlers.py +0 -0
  48. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/horizons/__init__.py +0 -0
  49. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/horizons/spec_horizons_h5.py +0 -0
  50. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/horizons/xor_multishuffle_bzip2.py +0 -0
  51. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/julia/GWFrames.py +0 -0
  52. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/julia/__init__.py +0 -0
  53. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/juliapkg.json +0 -0
  54. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/metadata/__init__.py +0 -0
  55. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/simulations/__init__.py +0 -0
  56. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/simulations/local.py +0 -0
  57. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/simulations/simulation.py +0 -0
  58. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/time_series.py +0 -0
  59. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/__init__.py +0 -0
  60. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/bitwise.py +0 -0
  61. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/decimation/__init__.py +0 -0
  62. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/decimation/greedy_spline.py +0 -0
  63. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/decimation/linear_bisection.py +0 -0
  64. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/decimation/peak_greed.py +0 -0
  65. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/decimation/suppression.py +0 -0
  66. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/dicts.py +0 -0
  67. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/downloads.py +0 -0
  68. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/files.py +0 -0
  69. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/formats.py +0 -0
  70. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/inspire.py +0 -0
  71. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/__init__.py +0 -0
  72. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/comparisons.py +0 -0
  73. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/conversion.py +0 -0
  74. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/dataset.py +0 -0
  75. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/horizons.py +0 -0
  76. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/metadata.py +0 -0
  77. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/waveform_amp_phase.py +0 -0
  78. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/lvcnr/waveforms.py +0 -0
  79. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/monotonicity.py +0 -0
  80. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/pretty_print.py +0 -0
  81. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/__init__.py +0 -0
  82. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/ads.py +0 -0
  83. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/arxiv.py +0 -0
  84. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/fairchild_report.py +0 -0
  85. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/inspire.py +0 -0
  86. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/journal_abbreviations.py +0 -0
  87. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/references/references.py +0 -0
  88. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/select.py +0 -0
  89. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/smooth_functions.py +0 -0
  90. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/sxs_directories.py +0 -0
  91. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/sxs_identifiers.py +0 -0
  92. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/utilities/url.py +0 -0
  93. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/__init__.py +0 -0
  94. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/alignment.py +0 -0
  95. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/__init__.py +0 -0
  96. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/grathena.py +0 -0
  97. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/lvc.py +0 -0
  98. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/nrar.py +0 -0
  99. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/rotating_paired_diff_multishuffle_bzip2.py +0 -0
  100. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/rotating_paired_xor_multishuffle_bzip2.py +0 -0
  101. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/format_handlers/spectre_cce_v1.py +0 -0
  102. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/memory.py +0 -0
  103. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/mode_utilities.py +0 -0
  104. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/transformations.py +0 -0
  105. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/waveform_grid.py +0 -0
  106. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/waveform_mixin.py +0 -0
  107. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/waveform_modes.py +0 -0
  108. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/waveforms/waveform_signal.py +0 -0
  109. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/__init__.py +0 -0
  110. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/api/__init__.py +0 -0
  111. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/api/deposit.py +0 -0
  112. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/api/login.py +0 -0
  113. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/api/records.py +0 -0
  114. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/catalog.py +0 -0
  115. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/creators.py +0 -0
  116. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/simannex.py +0 -0
  117. {sxs-2024.0.29 → sxs-2024.0.30}/sxs/zenodo/surrogatemodeling.py +0 -0
  118. {sxs-2024.0.29 → sxs-2024.0.30}/tests/__init__.py +0 -0
  119. {sxs-2024.0.29 → sxs-2024.0.30}/tests/conftest.py +0 -0
  120. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_catalog.py +0 -0
  121. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_horizons.py +0 -0
  122. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_julia.py +0 -0
  123. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_loader.py +0 -0
  124. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_metadata.py +0 -0
  125. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_simulation.py +0 -0
  126. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_time_series.py +0 -0
  127. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_transformations.py +0 -0
  128. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_utilities.py +0 -0
  129. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_waveform_rotations.py +0 -0
  130. {sxs-2024.0.29 → sxs-2024.0.30}/tests/test_waveforms.py +0 -0
@@ -31,6 +31,9 @@ jobs:
31
31
  matrix:
32
32
  os: [ubuntu-latest, macos-latest, windows-latest]
33
33
  python-version: ['3.10', '3.13']
34
+ exclude:
35
+ - os: windows-latest
36
+ python-version: '3.13'
34
37
 
35
38
  steps:
36
39
  - name: Skip replicates on main branch
@@ -10,5 +10,5 @@ authors:
10
10
  title: "The sxs package"
11
11
  license: MIT
12
12
  doi: 10.5281/zenodo.4034006
13
- version: 2024.0.29
14
- date-released: 2025-02-12
13
+ version: 2024.0.30
14
+ date-released: 2025-02-13
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sxs
3
- Version: 2024.0.29
3
+ Version: 2024.0.30
4
4
  Summary: Interface to data produced by the Simulating eXtreme Spacetimes collaboration
5
5
  Project-URL: Homepage, https://github.com/sxs-collaboration/sxs
6
6
  Project-URL: Documentation, https://sxs.readthedocs.io/
@@ -0,0 +1 @@
1
+ __version__ = "2024.0.30"
@@ -23,6 +23,17 @@ def _valid_identifier_to_metadata_key(key):
23
23
  return _metadata_key_map.get(key, key.replace('_', '-'))
24
24
 
25
25
 
26
+ def _backwards_compatibility(metadata):
27
+ """Deal with the fact that keys have been removed/renamed"""
28
+ # See also `sxs.simulations.simulations.Simulations.dataframe`;
29
+ # it's probably a good idea to duplicate whatever is included here
30
+ # in that function, just to make sure nothing slips through the
31
+ # cracks.
32
+ if "number_of_orbits" not in metadata and "number_of_orbits_from_start" in metadata:
33
+ metadata["number_of_orbits"] = metadata["number_of_orbits_from_start"]
34
+ return metadata
35
+
36
+
26
37
  class Metadata(collections.OrderedDict):
27
38
  """Interface to metadata
28
39
 
@@ -72,25 +83,27 @@ class Metadata(collections.OrderedDict):
72
83
  txt_path = path.with_suffix(".txt")
73
84
 
74
85
  if path.suffix == ".json":
75
- return cls.from_json_file(json_path)
86
+ metadata = cls.from_json_file(json_path)
76
87
  elif path.suffix == ".txt":
77
- return cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
88
+ metadata = cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
78
89
  else:
79
90
  json_exists = json_path.exists()
80
91
  txt_exists = txt_path.exists()
81
92
  if json_exists and not txt_exists:
82
- return cls.from_json_file(json_path)
93
+ metadata = cls.from_json_file(json_path)
83
94
  elif txt_exists and not json_exists:
84
- return cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
95
+ metadata = cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
85
96
  elif json_exists and txt_exists:
86
97
  json_time = json_path.stat().st_mtime
87
98
  txt_time = txt_path.stat().st_mtime
88
99
  if txt_time > json_time:
89
- return cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
100
+ metadata = cls.from_txt_file(txt_path, ignore_invalid_lines=ignore_invalid_lines, cache_json=cache_json)
90
101
  else:
91
- return cls.from_json_file(json_path)
102
+ metadata = cls.from_json_file(json_path)
92
103
  else:
93
104
  raise ValueError(f"Could not find file named '{json_path}' or '{txt_path}'")
105
+
106
+ return _backwards_compatibility(metadata)
94
107
 
95
108
  load = from_file
96
109
 
@@ -113,7 +126,7 @@ class Metadata(collections.OrderedDict):
113
126
  """
114
127
  import json
115
128
  # noinspection PyTypeChecker
116
- return json.load(json_data, object_pairs_hook=cls)
129
+ return _backwards_compatibility(json.load(json_data, object_pairs_hook=cls))
117
130
 
118
131
  @classmethod
119
132
  def from_json_file(cls, json_file):
@@ -136,7 +149,7 @@ class Metadata(collections.OrderedDict):
136
149
  # noinspection PyTypeChecker
137
150
  metadata = json.load(metadata_file, object_pairs_hook=cls)
138
151
  metadata["metadata_path"] = str(json_file)
139
- return metadata
152
+ return _backwards_compatibility(metadata)
140
153
 
141
154
  @classmethod
142
155
  def from_txt_file(cls, txt_file, ignore_invalid_lines=False, cache_json=True):
@@ -259,7 +272,7 @@ class Metadata(collections.OrderedDict):
259
272
  metadata.to_json_file(path.with_suffix(".json"))
260
273
 
261
274
  metadata["metadata_path"] = str(txt_file)
262
- return metadata
275
+ return _backwards_compatibility(metadata)
263
276
 
264
277
  def to_json(self, indent=4, separators=(",", ": ")):
265
278
  """Export to JSON string"""
@@ -404,6 +404,18 @@ class Simulations(collections.OrderedDict):
404
404
 
405
405
  simulations = pd.DataFrame.from_dict(self, orient="index")
406
406
 
407
+ # See also below for "number_of_orbits" field.
408
+ # See also `sxs.metadata.metadata._backwards_compatibility`;
409
+ # it's probably a good idea to duplicate whatever is included
410
+ # here in that function, just to make sure nothing slips
411
+ # through the cracks.
412
+ for col in [
413
+ "number_of_orbits", "number_of_orbits_from_start",
414
+ "number_of_orbits_from_reference_time"
415
+ ]:
416
+ if col not in simulations.columns:
417
+ simulations[col] = np.nan
418
+
407
419
  def floater(x):
408
420
  try:
409
421
  f = float(x)
@@ -509,6 +521,8 @@ class Simulations(collections.OrderedDict):
509
521
  # simulations["end_of_trajectory_time"].map(floater),
510
522
  # simulations["merger_time"].map(floater),
511
523
  simulations["number_of_orbits"].map(floater),
524
+ simulations["number_of_orbits_from_start"].map(floater),
525
+ simulations["number_of_orbits_from_reference_time"].map(floater),
512
526
  # simulations["superseded_by"],
513
527
  simulations["DOI_versions"],
514
528
  simulations["keywords"],
@@ -523,6 +537,14 @@ class Simulations(collections.OrderedDict):
523
537
  sims_df["keywords"].map(lambda ks: "deprecated" in ks)
524
538
  ))
525
539
 
540
+ # See also `sxs.metadata.metadata._backwards_compatibility`;
541
+ # it's probably a good idea to duplicate whatever is included
542
+ # here in that function, just to make sure nothing slips
543
+ # through the cracks.
544
+ sims_df["number_of_orbits"] = sims_df["number_of_orbits"].fillna(
545
+ sims_df["number_of_orbits_from_start"]
546
+ )
547
+
526
548
  # We have ignored the following fields present in the
527
549
  # simulations.json file (as of 2024-08-04), listed here with
528
550
  # the number of non-null entries:
@@ -1 +0,0 @@
1
- __version__ = "2024.0.29"
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
File without changes
File without changes
File without changes
File without changes
File without changes