Download scripts/fake_data.py from OneScience-Group/Pangu-ICON-DKE: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/OneScience-Group/Pangu-ICON-DKE/resolve/main/scripts/fake_data.py
- Command line
-
hf download hf://OneScience-Group/Pangu-ICON-DKE/scripts/fake_data.py
-
curl -L -o fake_data.py https://huggingface.co/OneScience-Group/Pangu-ICON-DKE/resolve/main/scripts/fake_data.py
2.56 kB
| """Write a lightweight lazy-data protocol and content-determining coefficients.""" | |
| import argparse | |
| from pathlib import Path | |
| import numpy as np | |
| import yaml | |
| ROOT = Path(__file__).resolve().parents[1] | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--force", action="store_true") | |
| args = parser.parse_args() | |
| config = yaml.safe_load((ROOT / "conf/config.yaml").read_text()) | |
| data, generator = config["data"], config["generator"] | |
| output = ROOT / data["root"] / data["protocol_file"] | |
| output.parent.mkdir(parents=True, exist_ok=True) | |
| if output.exists() and not args.force: | |
| print(f"exists={output.relative_to(ROOT)}") | |
| return | |
| rng = np.random.default_rng(int(config["seed"])) | |
| experiments = len(data["experiments"]) | |
| growth = float(generator["growth_rate_per_hour"]) * np.asarray(generator["experiment_growth_multipliers"]) | |
| np.savez_compressed( | |
| output, | |
| format_version=np.asarray(data["format_version"]), | |
| generation_method=np.asarray("deterministic_structured_lazy_low_rank_v1"), | |
| experiments=np.asarray(data["experiments"]), | |
| times_hours=np.arange(int(data["time_steps"]), dtype=np.int16) * int(data["step_hours"]), | |
| pressure_levels_hpa=np.asarray(data["pressure_levels_hpa"], dtype=np.int16), | |
| latitudes_degrees=np.linspace(90.0, -90.0, int(data["latitude_points"])), | |
| longitudes_degrees=np.linspace(0.0, 360.0, int(data["longitude_points"]), endpoint=False), | |
| field_shape=np.asarray(data["field_shape"], dtype=np.int64), | |
| spectral_shape=np.asarray(data["spectral_shape"], dtype=np.int64), | |
| ensemble_size=np.asarray(data["ensemble_size"]), | |
| triangular_truncation=np.asarray(data["triangular_truncation"]), | |
| nsp=np.asarray(data["nsp"]), | |
| phase=rng.uniform(0, 2 * np.pi, experiments), | |
| amplitude=float(generator["perturbation_ms"]) * np.asarray(generator["compensation_scales"]), | |
| growth_rate=growth, | |
| spectral_phase=rng.uniform(0, 2 * np.pi, experiments), | |
| spectral_amplitude=rng.uniform(0.8, 1.2, experiments) * 1e-5, | |
| base_wind_ms=np.asarray(generator["base_wind_ms"]), | |
| spectral_slope=np.asarray(generator["spectral_slope"]), | |
| coefficient_seed=np.asarray(config["seed"]), | |
| raw_fields_materialized=np.asarray(False), | |
| ) | |
| print(f"protocol={output.relative_to(ROOT)} bytes={output.stat().st_size} logical_field={data['field_shape']} logical_spectral={data['spectral_shape']}") | |
| if __name__ == "__main__": | |
| main() | |