sxs 2024.0.32__tar.gz → 2024.0.34__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.32 → sxs-2024.0.34}/CITATION.cff +2 -2
  2. {sxs-2024.0.32 → sxs-2024.0.34}/PKG-INFO +1 -1
  3. sxs-2024.0.34/sxs/__version__.py +1 -0
  4. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/local.py +46 -6
  5. sxs-2024.0.32/sxs/__version__.py +0 -1
  6. {sxs-2024.0.32 → sxs-2024.0.34}/.codecov.yml +0 -0
  7. {sxs-2024.0.32 → sxs-2024.0.34}/.github/dependabot.yml +0 -0
  8. {sxs-2024.0.32 → sxs-2024.0.34}/.github/scripts/parse_bump_rule.py +0 -0
  9. {sxs-2024.0.32 → sxs-2024.0.34}/.github/workflows/build.yml +0 -0
  10. {sxs-2024.0.32 → sxs-2024.0.34}/.github/workflows/pr_rtd_link.yml +0 -0
  11. {sxs-2024.0.32 → sxs-2024.0.34}/.gitignore +0 -0
  12. {sxs-2024.0.32 → sxs-2024.0.34}/.readthedocs.yaml +0 -0
  13. {sxs-2024.0.32 → sxs-2024.0.34}/LICENSE +0 -0
  14. {sxs-2024.0.32 → sxs-2024.0.34}/README.md +0 -0
  15. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/catalog.md +0 -0
  16. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/horizons.md +0 -0
  17. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/load.md +0 -0
  18. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/metadata.md +0 -0
  19. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/simulation.md +0 -0
  20. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/simulations.md +0 -0
  21. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/time_series.md +0 -0
  22. {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/waveforms.md +0 -0
  23. {sxs-2024.0.32 → sxs-2024.0.34}/docs/html/main.html +0 -0
  24. {sxs-2024.0.32 → sxs-2024.0.34}/docs/images/favicon.ico +0 -0
  25. {sxs-2024.0.32 → sxs-2024.0.34}/docs/index.md +0 -0
  26. {sxs-2024.0.32 → sxs-2024.0.34}/docs/javascript/mathjax.js +0 -0
  27. {sxs-2024.0.32 → sxs-2024.0.34}/docs/julia.md +0 -0
  28. {sxs-2024.0.32 → sxs-2024.0.34}/docs/mathematica.md +0 -0
  29. {sxs-2024.0.32 → sxs-2024.0.34}/docs/stylesheets/extra.css +0 -0
  30. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/00-Introduction.ipynb +0 -0
  31. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/01-Simulations_and_Metadata.ipynb +0 -0
  32. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/02-Simulation.ipynb +0 -0
  33. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/03-Horizons.ipynb +0 -0
  34. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/04-Waveforms.ipynb +0 -0
  35. {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/05-PreprocessingForFFTs.ipynb +0 -0
  36. {sxs-2024.0.32 → sxs-2024.0.34}/mkdocs.yml +0 -0
  37. {sxs-2024.0.32 → sxs-2024.0.34}/pyproject.toml +0 -0
  38. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/__init__.py +0 -0
  39. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/__init__.py +0 -0
  40. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/catalog.py +0 -0
  41. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/login.py +0 -0
  42. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/__init__.py +0 -0
  43. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/catalog.py +0 -0
  44. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/create.py +0 -0
  45. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/description.py +0 -0
  46. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/handlers.py +0 -0
  47. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/__init__.py +0 -0
  48. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/spec_horizons_h5.py +0 -0
  49. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/xor_multishuffle_bzip2.py +0 -0
  50. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/julia/GWFrames.py +0 -0
  51. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/julia/__init__.py +0 -0
  52. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/juliapkg.json +0 -0
  53. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/metadata/__init__.py +0 -0
  54. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/metadata/metadata.py +0 -0
  55. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/__init__.py +0 -0
  56. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/simulation.py +0 -0
  57. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/simulations.py +0 -0
  58. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/time_series.py +0 -0
  59. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/__init__.py +0 -0
  60. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/bitwise.py +0 -0
  61. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/__init__.py +0 -0
  62. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/greedy_spline.py +0 -0
  63. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/linear_bisection.py +0 -0
  64. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/peak_greed.py +0 -0
  65. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/suppression.py +0 -0
  66. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/dicts.py +0 -0
  67. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/downloads.py +0 -0
  68. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/files.py +0 -0
  69. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/formats.py +0 -0
  70. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/inspire.py +0 -0
  71. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/__init__.py +0 -0
  72. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/comparisons.py +0 -0
  73. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/conversion.py +0 -0
  74. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/dataset.py +0 -0
  75. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/horizons.py +0 -0
  76. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/metadata.py +0 -0
  77. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/waveform_amp_phase.py +0 -0
  78. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/waveforms.py +0 -0
  79. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/monotonicity.py +0 -0
  80. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/pretty_print.py +0 -0
  81. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/__init__.py +0 -0
  82. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/ads.py +0 -0
  83. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/arxiv.py +0 -0
  84. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/fairchild_report.py +0 -0
  85. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/inspire.py +0 -0
  86. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/journal_abbreviations.py +0 -0
  87. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/references.py +0 -0
  88. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/select.py +0 -0
  89. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/smooth_functions.py +0 -0
  90. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/sxs_directories.py +0 -0
  91. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/sxs_identifiers.py +0 -0
  92. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/url.py +0 -0
  93. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/__init__.py +0 -0
  94. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/alignment.py +0 -0
  95. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/__init__.py +0 -0
  96. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/grathena.py +0 -0
  97. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/lvc.py +0 -0
  98. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/nrar.py +0 -0
  99. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/rotating_paired_diff_multishuffle_bzip2.py +0 -0
  100. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/rotating_paired_xor_multishuffle_bzip2.py +0 -0
  101. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/spectre_cce_v1.py +0 -0
  102. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/memory.py +0 -0
  103. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/mode_utilities.py +0 -0
  104. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/transformations.py +0 -0
  105. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_grid.py +0 -0
  106. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_mixin.py +0 -0
  107. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_modes.py +0 -0
  108. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_signal.py +0 -0
  109. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/__init__.py +0 -0
  110. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/__init__.py +0 -0
  111. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/deposit.py +0 -0
  112. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/login.py +0 -0
  113. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/records.py +0 -0
  114. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/catalog.py +0 -0
  115. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/creators.py +0 -0
  116. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/simannex.py +0 -0
  117. {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/surrogatemodeling.py +0 -0
  118. {sxs-2024.0.32 → sxs-2024.0.34}/tests/__init__.py +0 -0
  119. {sxs-2024.0.32 → sxs-2024.0.34}/tests/conftest.py +0 -0
  120. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_catalog.py +0 -0
  121. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_horizons.py +0 -0
  122. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_julia.py +0 -0
  123. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_loader.py +0 -0
  124. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_metadata.py +0 -0
  125. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_simulation.py +0 -0
  126. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_time_series.py +0 -0
  127. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_transformations.py +0 -0
  128. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_utilities.py +0 -0
  129. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_waveform_rotations.py +0 -0
  130. {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_waveforms.py +0 -0
@@ -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.32
14
- date-released: 2025-02-17
13
+ version: 2024.0.34
14
+ date-released: 2025-02-19
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sxs
3
- Version: 2024.0.32
3
+ Version: 2024.0.34
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.34"
@@ -1,7 +1,7 @@
1
1
  from pathlib import Path
2
2
  from .. import sxs_id, Metadata, sxs_directory
3
3
  from ..utilities import sxs_identifier_re
4
- from ..zenodo import path_to_invenio as p2i
4
+ from ..zenodo import path_to_invenio
5
5
 
6
6
  def file_upload_allowed(file, directory_listing):
7
7
  """Return True if the file should be uploaded
@@ -65,7 +65,7 @@ def extract_id_from_common_metadata(file, annex_dir):
65
65
  return key
66
66
 
67
67
 
68
- def local_simulations(annex_dir):
68
+ def local_simulations(annex_dir, compute_md5=False, show_progress=False):
69
69
  """
70
70
  Walk the annex directory to find and process all simulations
71
71
 
@@ -88,6 +88,11 @@ def local_simulations(annex_dir):
88
88
  ----------
89
89
  annex_dir : (str or Path)
90
90
  The path to the annex directory to be processed.
91
+ compute_md5 : bool, optional
92
+ Whether to compute the MD5 hash of each file. Default is
93
+ False.
94
+ show_progress : bool, optional
95
+ Whether to show a progress bar. Default is False.
91
96
 
92
97
  Returns
93
98
  -------
@@ -95,10 +100,25 @@ def local_simulations(annex_dir):
95
100
  A dictionary containing the processed metadata.
96
101
  """
97
102
  from os import walk
103
+ from ..utilities import md5checksum
104
+ from tqdm import tqdm
98
105
 
99
106
  simulations = {}
100
107
  annex_dir = Path(annex_dir).resolve()
101
108
 
109
+ if show_progress: # Count the number of common-metadata.txt files
110
+ num_files = 0
111
+ for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
112
+ if Path(dirpath).name.startswith("."):
113
+ dirnames[:] = []
114
+ continue
115
+ if "common-metadata.txt" in filenames:
116
+ if not any(d.startswith("Lev") for d in dirnames):
117
+ continue
118
+ num_files += 1
119
+ dirnames[:] = []
120
+ progress_bar = tqdm(total=num_files, desc="Processing simulations")
121
+
102
122
  # The `walk` method can be made *much* faster than the `glob` method
103
123
  for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
104
124
  dirpath = Path(dirpath)
@@ -112,6 +132,9 @@ def local_simulations(annex_dir):
112
132
  if not any(d.startswith("Lev") for d in dirnames):
113
133
  continue
114
134
 
135
+ if show_progress:
136
+ progress_bar.update(1)
137
+
115
138
  key = extract_id_from_common_metadata(dirpath / "common-metadata.txt", annex_dir)
116
139
 
117
140
  # Find the highest Lev directory and extract the metadata
@@ -121,8 +144,14 @@ def local_simulations(annex_dir):
121
144
  metadata = Metadata.load(dirpath / highest_lev / "metadata")
122
145
  metadata = metadata.add_standard_parameters()
123
146
 
147
+ metadata["directory"] = str(dirpath.relative_to(annex_dir))
148
+
124
149
  metadata["files"] = {
125
- p2i(file.relative_to(dirpath)): {"link": str(file)}
150
+ path_to_invenio(file.relative_to(dirpath)): {
151
+ "link": str(file),
152
+ "size": file.stat().st_size,
153
+ "checksum": md5checksum(file) if compute_md5 else "",
154
+ }
126
155
  for file in files_to_upload(dirpath, annex_dir)
127
156
  }
128
157
 
@@ -133,9 +162,12 @@ def local_simulations(annex_dir):
133
162
  return simulations
134
163
 
135
164
 
136
- def write_local_simulations(annex_dir, output_file=None):
165
+ def write_local_simulations(annex_dir, output_file=None, compute_md5=False, show_progress=False):
137
166
  """Write the local simulations to a file for use when loading `Simulations`
138
167
 
168
+ This function calls `local_simulations` to obtain the dictionary,
169
+ but also writes the dictionary to a JSON file.
170
+
139
171
  Parameters
140
172
  ----------
141
173
  annex_dir : (str or Path)
@@ -145,15 +177,21 @@ def write_local_simulations(annex_dir, output_file=None):
145
177
  written to `sxs_directory("cache") / "local_simulations.json"`.
146
178
  N.B.: If you specify a different file, `sxs.load` will not
147
179
  automatically find it.
180
+ compute_md5 : bool, optional
181
+ Whether to compute the MD5 hash of each file. Default is
182
+ False.
183
+ show_progress : bool, optional
184
+ Whether to show a progress bar. Default is False.
148
185
 
149
186
  Returns
150
187
  -------
151
- None
188
+ dict :
189
+ A dictionary containing the processed metadata.
152
190
  """
153
191
  from json import dump
154
192
 
155
193
  # Process the annex directory to find all simulations
156
- simulations = local_simulations(annex_dir)
194
+ simulations = local_simulations(annex_dir, compute_md5=compute_md5, show_progress=show_progress)
157
195
 
158
196
  # Write the simulations to file
159
197
  if output_file is None:
@@ -163,3 +201,5 @@ def write_local_simulations(annex_dir, output_file=None):
163
201
  output_file.parent.mkdir(parents=True, exist_ok=True)
164
202
  with output_file.open("w") as f:
165
203
  dump(simulations, f, indent=2, separators=(",", ": "), ensure_ascii=True)
204
+
205
+ return simulations
@@ -1 +0,0 @@
1
- __version__ = "2024.0.32"
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