From a779645271ab575a68dad8aff273e361980afd0a Mon Sep 17 00:00:00 2001 From: Runyang Xu Date: Thu, 5 Feb 2026 05:10:41 -0500 Subject: [PATCH 1/4] change dataset part --- docs/.doctrees/environment.pickle | Bin 293691 -> 294873 bytes docs/.doctrees/pyhazards_datasets.doctree | Bin 25248 -> 31739 bytes docs/_sources/pyhazards_datasets.rst.txt | 98 +++++++++++++++------- docs/pyhazards_datasets.html | 54 ++++++++++-- docs/searchindex.js | 2 +- docs/source/pyhazards_datasets.rst | 98 +++++++++++++++------- 6 files changed, 188 insertions(+), 64 deletions(-) diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index 4680e45c11f2c37ffa4c90ac8bd41910db66afd1..cc88aed84415ff27b9ed9c446fc3e7d5ffc56d98 100644 GIT binary patch literal 294873 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 T8#%myzy| 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

7!+ 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 diff --git a/docs/_sources/pyhazards_datasets.rst.txt b/docs/_sources/pyhazards_datasets.rst.txt index 70388ad2..13664858 100644 --- a/docs/_sources/pyhazards_datasets.rst.txt +++ b/docs/_sources/pyhazards_datasets.rst.txt @@ -4,7 +4,9 @@ Datasets Summary ------- -PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata. +PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. +Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata. + Datasets -------------------- @@ -38,19 +40,29 @@ Datasets * - :doc:`goesr ` - High-frequency geostationary multispectral imagery from the `NOAA GOES-R series `_, supporting continuous monitoring (e.g., smoke/thermal context) and early detection workflows when paired with fire and meteorology datasets. + Dataset inspection ------------------ -PyHazards provides a built-in inspection utility that allows users to -quickly explore dataset structure and contents through a unified API. +PyHazards provides a built-in inspection utility that allows users to quickly explore dataset structure and contents through a unified API. -The example below demonstrates how to inspect a daily MERRA-2 file using -the PyHazards dataset interface. +The example below demonstrates how to inspect a daily MERRA-2 file using the PyHazards dataset interface. .. code-block:: bash + # One command: download raw MERRA-2 (if needed) -> merge SFC+PRES -> inspect -> save plots/tables python -m pyhazards.datasets.inspection 20260101 +Notes: + +- MERRA-2 download requires Earthdata credentials via environment variables:: + + export EARTHDATA_USERNAME="YOUR_USERNAME" + export EARTHDATA_PASSWORD="YOUR_PASSWORD" + +- Outputs are written to ``outputs/`` under the repo root by default (can be changed via ``--outdir``). +- Merged NetCDF files are written under ``Prithvi-WxC/data/merra-2`` by default (repo-root inferred automatically). + Core classes ------------ @@ -60,31 +72,61 @@ Core classes - ``FeatureSpec`` / ``LabelSpec``: describe inputs/targets to simplify model construction. - ``register_dataset`` / ``load_dataset``: lightweight registry for discovering datasets by name. + Example skeleton ---------------- +This section provides a minimal, user-facing skeleton that makes the data flow explicit: +**load/download** → **merge** → **inspect** → **visualize**. + +Recommended: one-shot inspection CLI (MERRA-2) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + # Full pipeline (recommended) + python -m pyhazards.datasets.inspection 20260101 + + # Change the surface variable to summarize/plot (default: T2M) + python -m pyhazards.datasets.inspection 20260101 --var QV2M + + # If raw/merged files already exist, skip steps accordingly + python -m pyhazards.datasets.inspection 20260101 --skip-download --skip-merge + + # Force re-download even if files already exist + python -m pyhazards.datasets.inspection 20260101 --force-download + + # Change output directory (relative to repo root, unless absolute path) + python -m pyhazards.datasets.inspection 20260101 --outdir outputs_merra2_20260101 + + +Implementing a custom dataset (developer example) +------------------------------------------------- + +If you want to add a new dataset to PyHazards, implement ``Dataset._load()`` and register it. + .. code-block:: python - import torch - from pyhazards.datasets import ( - DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset - ) - - class MyHazardDataset(Dataset): - name = "my_hazard" - - def _load(self): - x = torch.randn(1000, 16) - y = torch.randint(0, 2, (1000,)) - splits = { - "train": DataSplit(x[:800], y[:800]), - "val": DataSplit(x[800:900], y[800:900]), - "test": DataSplit(x[900:], y[900:]), - } - return DataBundle( - splits=splits, - feature_spec=FeatureSpec(input_dim=16, description="example features"), - label_spec=LabelSpec(num_targets=2, task_type="classification"), - ) - - register_dataset(MyHazardDataset.name, MyHazardDataset) + import torch + from pyhazards.datasets import ( + DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset + ) + + class MyHazardDataset(Dataset): + name = "my_hazard" + + def _load(self): + x = torch.randn(1000, 16) + y = torch.randint(0, 2, (1000,)) + splits = { + "train": DataSplit(x[:800], y[:800]), + "val": DataSplit(x[800:900], y[800:900]), + "test": DataSplit(x[900:], y[900:]), + } + return DataBundle( + splits=splits, + feature_spec=FeatureSpec(input_dim=16, description="example features"), + label_spec=LabelSpec(num_targets=2, task_type="classification"), + ) + + register_dataset(MyHazardDataset.name, MyHazardDataset) diff --git a/docs/pyhazards_datasets.html b/docs/pyhazards_datasets.html index 07e1be46..95d24718 100644 --- a/docs/pyhazards_datasets.html +++ b/docs/pyhazards_datasets.html @@ -263,7 +263,8 @@

Datasets

Summary

-

PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata.

+

PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. +Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata.

Datasets

@@ -304,13 +305,23 @@

Datasets

Dataset inspection

-

PyHazards provides a built-in inspection utility that allows users to -quickly explore dataset structure and contents through a unified API.

-

The example below demonstrates how to inspect a daily MERRA-2 file using -the PyHazards dataset interface.

-
python -m pyhazards.datasets.inspection 20260101
+

PyHazards provides a built-in inspection utility that allows users to quickly explore dataset structure and contents through a unified API.

+

The example below demonstrates how to inspect a daily MERRA-2 file using the PyHazards dataset interface.

+
# One command: download raw MERRA-2 (if needed) -> merge SFC+PRES -> inspect -> save plots/tables
+python -m pyhazards.datasets.inspection 20260101
 
+

Notes:

+
    +
  • MERRA-2 download requires Earthdata credentials via environment variables:

    +
    export EARTHDATA_USERNAME="YOUR_USERNAME"
    +export EARTHDATA_PASSWORD="YOUR_PASSWORD"
    +
    +
    +
  • +
  • Outputs are written to outputs/ under the repo root by default (can be changed via --outdir).

  • +
  • Merged NetCDF files are written under Prithvi-WxC/data/merra-2 by default (repo-root inferred automatically).

  • +

Core classes

@@ -323,6 +334,31 @@

Core classes

Example skeleton

+

This section provides a minimal, user-facing skeleton that makes the data flow explicit: +load/downloadmergeinspectvisualize.

+ +

+
+

Implementing a custom dataset (developer example)

+

If you want to add a new dataset to PyHazards, implement Dataset._load() and register it.

import torch
 from pyhazards.datasets import (
     DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset
@@ -411,7 +447,11 @@ 

Example skeletonDatasets
  • Dataset inspection
  • Core classes
  • -
  • Example skeleton
  • +
  • Example skeleton +
  • +
  • Implementing a custom dataset (developer example)
  • diff --git a/docs/searchindex.js b/docs/searchindex.js index 7243a251..ce200b84 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[19, "core-classes"], [21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Indices and tables": [[17, "indices-and-tables"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 19, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": [16, 19], "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 19, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 19, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": [16, 19], "85": 9, "9": 9, "90": 14, "900": [16, 19], "96": 9, "98": 10, "A": [10, 11, 13, 17, 22], "For": [10, 12, 14, 22, 24], "If": [7, 8, 17], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "Or": 24, "The": [8, 9, 10, 12, 19, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 19, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "abstract": [1, 3, 4, 21], "accept": 16, "accuraci": 21, "across": [11, 13, 14, 15, 19], "activ": [9, 15, 19], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": 16, "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": 19, "alpha": 5, "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 19, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5], "argument": 16, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18, 19], "base_channel": 5, "baselin": [8, 10, 15], "basic": 17, "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 19, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 22], "canada": 9, "canopi": 11, "carri": 10, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 22], "channel": [0, 1, 2, 10], "character": 11, "checkpoint": 20, "cheng": [17, 26], "choos": 6, "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 19, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": 22, "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 19, 22], "contain": [1, 2, 15, 19], "content": [0, 19], "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "current": [2, 10, 11, 15], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 19, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "datasplit": [0, 1, 2, 16, 17, 19, 22, 24], "date": [8, 15], "db": 14, "ddp": [3, 16, 17, 20], "dedic": 26, "def": [16, 17, 19, 22, 24], "default": [1, 5, 10, 16, 20, 22], "default_build": [1, 5, 22], "delai": 10, "deleg": [1, 5], "demonstr": 19, "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 19, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "disc": 12, "discov": 19, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12], "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "expect": 8, "explicitli": 24, "explor": 19, "export": [22, 24], "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 19, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 19, 22, 24], "featurespec": [0, 1, 2, 16, 17, 19, 22, 24], "feb": 13, "field": [8, 10, 11, 12, 15], "fifth": 8, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flux": [8, 12], "follow": [7, 8], "forc": [8, 12], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histor": [8, 13, 14, 15], "hold": 19, "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22, 26], "id": 14, "ident": 22, "identifi": 15, "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 19, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 19, 22, 24], "ins": 22, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 19, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": 13, "iou": 21, "irwin": 15, "iso": 14, "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 19, 22, 24], "labelspec": [0, 1, 2, 16, 17, 19, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 19, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 24], "load_dataset": [0, 1, 2, 19], "loader": 2, "local": 14, "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": 15, "mainten": 26, "make": [1, 2, 9], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merra": 19, "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15, 19], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 22], "minut": [9, 10, 15], "mirror": 10, "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": [16, 19], "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": 19, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14], "next": [5, 17, 22], "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": 18, "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 19, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4, 19], "observ": [8, 9, 10, 11, 12], "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": 17, "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": 23, "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": [], "output": [1, 5, 22], "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3], "pattern": [9, 15], "payload": 10, "per": [5, 13, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 26], "pleas": [7, 17, 24], "plu": [1, 2, 9, 19, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": 13, "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "preprocess": [2, 16], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 22, 24], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 19, 22, 24], "randn": [16, 17, 19, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 19, 20, 22], "rather": 15, "rdnbr": 13, "re": 22, "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": 18, "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17], "register_dataset": [0, 1, 2, 16, 19], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 19, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": 9, "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 19, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": 20, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": 20, "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [20, 22], "select_strategi": [1, 3], "self": [16, 17, 19, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "shape": [1, 2, 5, 17, 22], "shapefil": [9, 13, 15], "ship": 22, "should": [1, 2], "show": 16, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": 19, "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17, 19], "specif": [1, 2, 9, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 19, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statu": [15, 19], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subscript": 10, "suit": 11, "suitabl": 13, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": 22, "tabular": [1, 5, 14, 17, 19, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 19, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 19, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 19, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 22, 24], "through": [9, 10, 13, 14, 15, 19], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 19, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 19, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": 8, "unifi": [17, 19], "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 19, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15], "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "w": [5, 9, 12], "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 19, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 19, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 22, 24], "your": [16, 17, 22], "yushun": 26, "yyyi": 11, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": 12, "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": [19, 21], "classif": 24, "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "core": [17, 19, 20, 21, 22, 26], "custom": 22, "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": 26, "devic": 20, "distribut": [3, 20], "engin": [3, 20], "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": 16, "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": 12, "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": 22, "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[19, "core-classes"], [21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Implementing a custom dataset (developer example)": [[19, "implementing-a-custom-dataset-developer-example"]], "Indices and tables": [[17, "indices-and-tables"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Recommended: one-shot inspection CLI (MERRA-2)": [[19, "recommended-one-shot-inspection-cli-merra-2"]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 19, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": [16, 19], "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 19, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": [16, 19], "85": 9, "9": 9, "90": 14, "900": [16, 19], "96": 9, "98": 10, "A": [10, 11, 13, 17, 22], "For": [10, 12, 14, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 19, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 19, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": 19, "abstract": [1, 3, 4, 21], "accept": 16, "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15, 19], "activ": [9, 15, 19], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": 19, "alpha": 5, "alreadi": 19, "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 19, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5], "argument": 16, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 19, 24], "avail": [9, 10, 12, 13, 14, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18, 19], "base_channel": 5, "baselin": [8, 10, 15], "basic": 17, "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 19, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 19, 22], "canada": 9, "canopi": 11, "carri": 10, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10], "character": 11, "checkpoint": 20, "cheng": [17, 26], "choos": 6, "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 19, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": 22, "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 19, 22], "contain": [1, 2, 15, 19], "content": [0, 19], "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "current": [2, 10, 11, 15], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 19, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "datasplit": [0, 1, 2, 16, 17, 19, 22, 24], "date": [8, 15], "db": 14, "ddp": [3, 16, 17, 20], "dedic": 26, "def": [16, 17, 19, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "delai": 10, "deleg": [1, 5], "demonstr": 19, "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 19, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": 19, "disc": 12, "discov": 19, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": 19, "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": 19, "expect": 8, "explicit": 19, "explicitli": 24, "explor": 19, "export": [19, 22, 24], "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "face": 19, "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 19, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 19, 22, 24], "featurespec": [0, 1, 2, 16, 17, 19, 22, 24], "feb": 13, "field": [8, 10, 11, 12, 15], "fifth": 8, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "follow": [7, 8], "forc": [8, 12, 19], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 19, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histor": [8, 13, 14, 15], "hold": 19, "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22, 26], "id": 14, "ident": 22, "identifi": 15, "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 19, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 19, 22, 24], "ins": 22, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 19, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": 13, "iou": 21, "irwin": 15, "iso": 14, "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 19, 22, 24], "labelspec": [0, 1, 2, 16, 17, 19, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 19, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2, 19], "loader": 2, "local": 14, "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": 15, "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": [], "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15, 19], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": 10, "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": [16, 19], "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": 19, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10, 19], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 22], "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": [18, 19], "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 19, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4, 19], "observ": [8, 9, 10, 11, 12], "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": 17, "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": 23, "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": 19, "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3, 19], "pattern": [9, 15], "payload": 10, "per": [5, 13, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17, 19], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 19, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "preprocess": [2, 16], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 22, 24], "prithvi": 19, "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": 19, "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 19, 22, 24], "randn": [16, 17, 19, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 19, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": [19, 22], "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": 18, "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17, 19], "register_dataset": [0, 1, 2, 16, 19], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 19, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": 19, "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "repo": 19, "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 19, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": 19, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": 20, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": 19, "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [20, 22], "select_strategi": [1, 3], "self": [16, 17, 19, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 22], "shapefil": [9, 13, 15], "ship": 22, "should": [1, 2], "show": 16, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": 19, "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": 19, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17, 19], "specif": [1, 2, 9, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 19, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statu": [15, 19], "step": 19, "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subscript": 10, "suit": 11, "suitabl": 13, "summar": 19, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12, 19], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": [19, 22], "tabl": 19, "tabular": [1, 5, 14, 17, 19, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 19, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 19, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 19, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 19, 22, 24], "through": [9, 10, 13, 14, 15, 19], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 19, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 19, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": [8, 19], "unifi": [17, 19], "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": 19, "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 19, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15], "var": 19, "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "w": [5, 9, 12], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": 19, "www": 14, "wxc": [12, 19], "x": [1, 2, 5, 16, 17, 19, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 19, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": 11, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": [12, 19], "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": [19, 21], "classif": 24, "cli": 19, "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "core": [17, 19, 20, 21, 22, 26], "custom": [19, 22], "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": [16, 19], "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": [12, 19], "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": 22, "one": 19, "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": 19, "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": 19, "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file diff --git a/docs/source/pyhazards_datasets.rst b/docs/source/pyhazards_datasets.rst index 70388ad2..13664858 100644 --- a/docs/source/pyhazards_datasets.rst +++ b/docs/source/pyhazards_datasets.rst @@ -4,7 +4,9 @@ Datasets Summary ------- -PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata. +PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. +Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata. + Datasets -------------------- @@ -38,19 +40,29 @@ Datasets * - :doc:`goesr ` - High-frequency geostationary multispectral imagery from the `NOAA GOES-R series `_, supporting continuous monitoring (e.g., smoke/thermal context) and early detection workflows when paired with fire and meteorology datasets. + Dataset inspection ------------------ -PyHazards provides a built-in inspection utility that allows users to -quickly explore dataset structure and contents through a unified API. +PyHazards provides a built-in inspection utility that allows users to quickly explore dataset structure and contents through a unified API. -The example below demonstrates how to inspect a daily MERRA-2 file using -the PyHazards dataset interface. +The example below demonstrates how to inspect a daily MERRA-2 file using the PyHazards dataset interface. .. code-block:: bash + # One command: download raw MERRA-2 (if needed) -> merge SFC+PRES -> inspect -> save plots/tables python -m pyhazards.datasets.inspection 20260101 +Notes: + +- MERRA-2 download requires Earthdata credentials via environment variables:: + + export EARTHDATA_USERNAME="YOUR_USERNAME" + export EARTHDATA_PASSWORD="YOUR_PASSWORD" + +- Outputs are written to ``outputs/`` under the repo root by default (can be changed via ``--outdir``). +- Merged NetCDF files are written under ``Prithvi-WxC/data/merra-2`` by default (repo-root inferred automatically). + Core classes ------------ @@ -60,31 +72,61 @@ Core classes - ``FeatureSpec`` / ``LabelSpec``: describe inputs/targets to simplify model construction. - ``register_dataset`` / ``load_dataset``: lightweight registry for discovering datasets by name. + Example skeleton ---------------- +This section provides a minimal, user-facing skeleton that makes the data flow explicit: +**load/download** → **merge** → **inspect** → **visualize**. + +Recommended: one-shot inspection CLI (MERRA-2) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + # Full pipeline (recommended) + python -m pyhazards.datasets.inspection 20260101 + + # Change the surface variable to summarize/plot (default: T2M) + python -m pyhazards.datasets.inspection 20260101 --var QV2M + + # If raw/merged files already exist, skip steps accordingly + python -m pyhazards.datasets.inspection 20260101 --skip-download --skip-merge + + # Force re-download even if files already exist + python -m pyhazards.datasets.inspection 20260101 --force-download + + # Change output directory (relative to repo root, unless absolute path) + python -m pyhazards.datasets.inspection 20260101 --outdir outputs_merra2_20260101 + + +Implementing a custom dataset (developer example) +------------------------------------------------- + +If you want to add a new dataset to PyHazards, implement ``Dataset._load()`` and register it. + .. code-block:: python - import torch - from pyhazards.datasets import ( - DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset - ) - - class MyHazardDataset(Dataset): - name = "my_hazard" - - def _load(self): - x = torch.randn(1000, 16) - y = torch.randint(0, 2, (1000,)) - splits = { - "train": DataSplit(x[:800], y[:800]), - "val": DataSplit(x[800:900], y[800:900]), - "test": DataSplit(x[900:], y[900:]), - } - return DataBundle( - splits=splits, - feature_spec=FeatureSpec(input_dim=16, description="example features"), - label_spec=LabelSpec(num_targets=2, task_type="classification"), - ) - - register_dataset(MyHazardDataset.name, MyHazardDataset) + import torch + from pyhazards.datasets import ( + DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset + ) + + class MyHazardDataset(Dataset): + name = "my_hazard" + + def _load(self): + x = torch.randn(1000, 16) + y = torch.randint(0, 2, (1000,)) + splits = { + "train": DataSplit(x[:800], y[:800]), + "val": DataSplit(x[800:900], y[800:900]), + "test": DataSplit(x[900:], y[900:]), + } + return DataBundle( + splits=splits, + feature_spec=FeatureSpec(input_dim=16, description="example features"), + label_spec=LabelSpec(num_targets=2, task_type="classification"), + ) + + register_dataset(MyHazardDataset.name, MyHazardDataset) From 5c059e0365db0cb5c6117cd9c15d26461d440e40 Mon Sep 17 00:00:00 2001 From: Runyang Xu Date: Thu, 5 Feb 2026 05:19:21 -0500 Subject: [PATCH 2/4] change dataset part --- docs/.doctrees/environment.pickle | Bin 294873 -> 294436 bytes docs/.doctrees/pyhazards_datasets.doctree | Bin 31739 -> 32644 bytes docs/_sources/pyhazards_datasets.rst.txt | 45 +++++++++++-------- docs/pyhazards_datasets.html | 50 +++++++++++++--------- docs/searchindex.js | 2 +- docs/source/pyhazards_datasets.rst | 45 +++++++++++-------- 6 files changed, 86 insertions(+), 56 deletions(-) diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index cc88aed84415ff27b9ed9c446fc3e7d5ffc56d98..2d3b9245a96f705d0871289fe727458b20060dad 100644 GIT binary patch literal 294436 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 Ni+6@Q>+AE?{{z6u{nG#d literal 294873 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 T8#%myzy| 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

    7!+ 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 Y7*NL(Vm*aPrYDataset inspectionoutputs/ under the repo root by default (can be changed via --outdir).

    -
  • Merged NetCDF files are written under Prithvi-WxC/data/merra-2 by default (repo-root inferred automatically).

  • +
  • By default, outputs are written to outputs/ (can be changed via --outdir).

  • +
  • The same inspection pattern is expected to be supported by other datasets (e.g., mtbs, era5), +with dataset-specific I/O handled inside each dataset implementation.

  • @@ -334,28 +335,38 @@

    Core classes

    Example skeleton

    -

    This section provides a minimal, user-facing skeleton that makes the data flow explicit: -load/downloadmergeinspectvisualize.

    - -

    Implementing a custom dataset (developer example)

    If you want to add a new dataset to PyHazards, implement Dataset._load() and register it.

    @@ -447,10 +458,7 @@

    Implementing a custom dataset (developer example)Datasets
  • Dataset inspection
  • Core classes
  • -
  • Example skeleton -
  • +
  • Example skeleton
  • Implementing a custom dataset (developer example)
  • diff --git a/docs/searchindex.js b/docs/searchindex.js index ce200b84..e7e68b16 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[19, "core-classes"], [21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Implementing a custom dataset (developer example)": [[19, "implementing-a-custom-dataset-developer-example"]], "Indices and tables": [[17, "indices-and-tables"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Recommended: one-shot inspection CLI (MERRA-2)": [[19, "recommended-one-shot-inspection-cli-merra-2"]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 19, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": [16, 19], "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 19, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": [16, 19], "85": 9, "9": 9, "90": 14, "900": [16, 19], "96": 9, "98": 10, "A": [10, 11, 13, 17, 22], "For": [10, 12, 14, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 19, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 19, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": 19, "abstract": [1, 3, 4, 21], "accept": 16, "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15, 19], "activ": [9, 15, 19], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": 19, "alpha": 5, "alreadi": 19, "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 19, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5], "argument": 16, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 19, 24], "avail": [9, 10, 12, 13, 14, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18, 19], "base_channel": 5, "baselin": [8, 10, 15], "basic": 17, "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 19, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 19, 22], "canada": 9, "canopi": 11, "carri": 10, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10], "character": 11, "checkpoint": 20, "cheng": [17, 26], "choos": 6, "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 19, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": 22, "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 19, 22], "contain": [1, 2, 15, 19], "content": [0, 19], "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "current": [2, 10, 11, 15], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 19, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "datasplit": [0, 1, 2, 16, 17, 19, 22, 24], "date": [8, 15], "db": 14, "ddp": [3, 16, 17, 20], "dedic": 26, "def": [16, 17, 19, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "delai": 10, "deleg": [1, 5], "demonstr": 19, "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 19, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": 19, "disc": 12, "discov": 19, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": 19, "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": 19, "expect": 8, "explicit": 19, "explicitli": 24, "explor": 19, "export": [19, 22, 24], "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "face": 19, "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 19, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 19, 22, 24], "featurespec": [0, 1, 2, 16, 17, 19, 22, 24], "feb": 13, "field": [8, 10, 11, 12, 15], "fifth": 8, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "follow": [7, 8], "forc": [8, 12, 19], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 19, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histor": [8, 13, 14, 15], "hold": 19, "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22, 26], "id": 14, "ident": 22, "identifi": 15, "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 19, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 19, 22, 24], "ins": 22, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 19, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": 13, "iou": 21, "irwin": 15, "iso": 14, "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 19, 22, 24], "labelspec": [0, 1, 2, 16, 17, 19, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 19, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2, 19], "loader": 2, "local": 14, "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": 15, "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": [], "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15, 19], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": 10, "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": [16, 19], "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": 19, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10, 19], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 22], "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": [18, 19], "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 19, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4, 19], "observ": [8, 9, 10, 11, 12], "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": 17, "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": 23, "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": 19, "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3, 19], "pattern": [9, 15], "payload": 10, "per": [5, 13, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17, 19], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 19, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "preprocess": [2, 16], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 22, 24], "prithvi": 19, "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": 19, "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 19, 22, 24], "randn": [16, 17, 19, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 19, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": [19, 22], "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": 18, "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17, 19], "register_dataset": [0, 1, 2, 16, 19], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 19, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": 19, "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "repo": 19, "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 19, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": 19, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": 20, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": 19, "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [20, 22], "select_strategi": [1, 3], "self": [16, 17, 19, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 22], "shapefil": [9, 13, 15], "ship": 22, "should": [1, 2], "show": 16, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": 19, "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": 19, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17, 19], "specif": [1, 2, 9, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 19, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statu": [15, 19], "step": 19, "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subscript": 10, "suit": 11, "suitabl": 13, "summar": 19, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12, 19], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": [19, 22], "tabl": 19, "tabular": [1, 5, 14, 17, 19, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 19, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 19, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 19, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 19, 22, 24], "through": [9, 10, 13, 14, 15, 19], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 19, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 19, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": [8, 19], "unifi": [17, 19], "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": 19, "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 19, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15], "var": 19, "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "w": [5, 9, 12], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": 19, "www": 14, "wxc": [12, 19], "x": [1, 2, 5, 16, 17, 19, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 19, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": 11, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": [12, 19], "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": [19, 21], "classif": 24, "cli": 19, "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "core": [17, 19, 20, 21, 22, 26], "custom": [19, 22], "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": [16, 19], "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": [12, 19], "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": 22, "one": 19, "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": 19, "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": 19, "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[19, "core-classes"], [21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Implementing a custom dataset (developer example)": [[19, "implementing-a-custom-dataset-developer-example"]], "Indices and tables": [[17, "indices-and-tables"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 19, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 19, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": [16, 19], "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 19, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 19, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "2d": 19, "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 19, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": [16, 19], "85": 9, "9": 9, "90": 14, "900": [16, 19], "96": 9, "98": 10, "A": [10, 11, 13, 17, 22], "By": 19, "For": [10, 12, 14, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 19, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 19, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": [], "abstract": [1, 3, 4, 21], "accept": 16, "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15, 19], "activ": [9, 15, 19], "actual": 19, "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": 19, "alpha": 5, "alreadi": [], "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 19, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 19, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "appropri": 19, "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5], "argument": 16, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18, 19], "base_channel": 5, "baselin": [8, 10, 15], "basic": 17, "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "boxplot": 19, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 19, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 19, 22], "burn": [13, 19], "c": [5, 19], "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 19, 22], "canada": 9, "canopi": 11, "carri": 10, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10, 19], "character": 11, "checkpoint": 20, "cheng": [17, 26], "choos": 6, "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 19, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": 22, "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [19, 20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 19, 22], "contain": [1, 2, 15, 19], "content": [0, 19], "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "current": [2, 10, 11, 15], "curv": 19, "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 19, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "dataset_nam": 19, "datasplit": [0, 1, 2, 16, 17, 19, 22, 24], "date": [8, 15, 19], "db": 14, "ddp": [3, 16, 17, 20], "decid": 19, "dedic": 26, "def": [16, 17, 19, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "delai": 10, "deleg": [1, 5], "demonstr": 19, "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 19, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": [], "disc": 12, "discov": 19, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 19, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": [], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": [], "expect": [8, 19], "explicit": 19, "explicitli": 24, "explor": 19, "export": [19, 22, 24], "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "f": 19, "face": [], "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 19, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 19, 22, 24], "featurespec": [0, 1, 2, 16, 17, 19, 22, 24], "feb": 13, "field": [8, 10, 11, 12, 15], "fifth": 8, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 19, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "follow": [7, 8], "forc": [8, 12], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 19, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "getattr": 19, "gi": 11, "giglio": 9, "github": 17, "given": [19, 22], "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8, 19], "handl": [19, 20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histogram": 19, "histor": [8, 13, 14, 15], "hold": 19, "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 26], "id": [14, 19], "ident": 22, "identifi": [15, 19], "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15, 19], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 19, 22, 24], "ins": 22, "insid": 19, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 19, 21, 24], "intern": [11, 22], "interpret": [10, 19], "inventori": 13, "iou": 21, "irwin": 15, "iso": 14, "iter": [1, 3, 19], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "kei": 19, "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 19, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 19, 22, 24], "labelspec": [0, 1, 2, 16, 17, 19, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 19, 22], "like": [17, 19, 22], "limit": 12, "line": [16, 19], "linear": [16, 22], "link": 15, "list": [1, 3, 19], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2, 19], "loader": 2, "local": 14, "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": 15, "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "materi": 19, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": 19, "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15, 19], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": 10, "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": [16, 19], "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": 19, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 19, 22], "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": [18, 19], "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 19, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "o": 19, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4, 19], "observ": [8, 9, 10, 11, 12], "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": 17, "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 19, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": [19, 23], "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": [], "over": [3, 10, 19, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "particularli": [10, 14], "partner": [13, 14], "pass": [16, 19, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3, 19], "pattern": [9, 15, 19], "payload": 10, "per": [5, 13, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pick": 19, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 19, 22], "point": [9, 10, 14, 15, 19], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "preprocess": [2, 16], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 19, 22, 24], "prithvi": [], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": [], "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 19, 22, 24], "randn": [16, 17, 19, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 19, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": 22, "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": 18, "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17, 19], "register_dataset": [0, 1, 2, 16, 19], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 19, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": [], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 19, 22], "repo": [], "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 19, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": [], "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": 20, "same": 19, "sampl": [2, 17, 19, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "scene": 19, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": [], "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [20, 22], "select_strategi": [1, 3], "self": [16, 17, 19, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 19, 22], "shapefil": [9, 13, 15], "ship": 22, "should": [1, 2, 19], "show": [16, 19], "show_rast": 19, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": 19, "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": [], "slice": 19, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17, 19], "specif": [1, 2, 9, 19, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 19, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statu": [15, 19], "step": [], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subscript": 10, "suit": 11, "suitabl": 13, "summar": [], "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": [10, 19], "t2m": 22, "tabl": 19, "tabular": [1, 5, 14, 17, 19, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 19, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 19, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 19, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 19, 22, 24], "through": [9, 10, 13, 14, 15, 19], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "timestep": 19, "titl": [17, 19], "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 19, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 19, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 19, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": 8, "unifi": [17, 19], "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": [], "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 19, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15], "valu": 19, "var": [], "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "viz": 19, "w": [5, 9, 12, 19], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": 19, "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 19, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 19, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 19, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": 11, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": 12, "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": [19, 21], "classif": 24, "cli": [], "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "core": [17, 19, 20, 21, 22, 26], "custom": [19, 22], "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": [16, 19], "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": 12, "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": 22, "one": [], "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": [], "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": [], "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file diff --git a/docs/source/pyhazards_datasets.rst b/docs/source/pyhazards_datasets.rst index 13664858..20d32ab8 100644 --- a/docs/source/pyhazards_datasets.rst +++ b/docs/source/pyhazards_datasets.rst @@ -60,8 +60,9 @@ Notes: export EARTHDATA_USERNAME="YOUR_USERNAME" export EARTHDATA_PASSWORD="YOUR_PASSWORD" -- Outputs are written to ``outputs/`` under the repo root by default (can be changed via ``--outdir``). -- Merged NetCDF files are written under ``Prithvi-WxC/data/merra-2`` by default (repo-root inferred automatically). +- By default, outputs are written to ``outputs/`` (can be changed via ``--outdir``). +- The same inspection pattern is expected to be supported by other datasets (e.g., ``mtbs``, ``era5``), + with dataset-specific I/O handled inside each dataset implementation. Core classes @@ -76,28 +77,38 @@ Core classes Example skeleton ---------------- -This section provides a minimal, user-facing skeleton that makes the data flow explicit: -**load/download** → **merge** → **inspect** → **visualize**. +This is a minimal end-to-end skeleton showing **load data → inspect → visualization**. +The key point is to make the data flow explicit (i.e., you should see a line like +``data = load_dataset("merra2")`` or ``data = load_dataset("mtbs")``). -Recommended: one-shot inspection CLI (MERRA-2) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. code-block:: python -.. code-block:: bash + # 0) Pick a dataset to load (use accordingly) + # Options include: "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr", ... + from pyhazards.datasets import load_dataset - # Full pipeline (recommended) - python -m pyhazards.datasets.inspection 20260101 + dataset_name = "merra2" # or: "mtbs", "era5", ... + data = load_dataset(dataset_name) # dataset-specific config/paths can be passed via kwargs + + # 1) Load / materialize a DataBundle (dataset decides how to interpret the "key" such as date/id) + # Example key: a daily date for MERRA-2, or an event/scene id for other datasets. + bundle = data.load(key="20260101") # replace "key" with the appropriate identifier - # Change the surface variable to summarize/plot (default: T2M) - python -m pyhazards.datasets.inspection 20260101 --var QV2M + # 2) Inspect the returned structure + print("splits:", list(bundle.splits.keys())) + print("feature_spec:", bundle.feature_spec) + print("label_spec:", bundle.label_spec) - # If raw/merged files already exist, skip steps accordingly - python -m pyhazards.datasets.inspection 20260101 --skip-download --skip-merge + split = bundle.splits.get("train", next(iter(bundle.splits.values()))) + x, y = split.x, split.y + print("x:", getattr(x, "shape", type(x)), "y:", getattr(y, "shape", type(y))) - # Force re-download even if files already exist - python -m pyhazards.datasets.inspection 20260101 --force-download + # 3) Visualization (examples; use the appropriate visualization for your data type) + # Raster: show a 2D slice (H x W) or a channel (C) at a given timestep (T) + # Time series: plot a variable curve over time; Tabular: histogram/boxplot + from pyhazards.viz import show_raster # replace with your actual viz utility - # Change output directory (relative to repo root, unless absolute path) - python -m pyhazards.datasets.inspection 20260101 --outdir outputs_merra2_20260101 + show_raster(x[0], title=f"{dataset_name}: first sample (train)") # use accordingly Implementing a custom dataset (developer example) From cb210f4e06956c3e745359d03ce5442e209b4f10 Mon Sep 17 00:00:00 2001 From: Runyang Xu Date: Thu, 5 Feb 2026 05:53:40 -0500 Subject: [PATCH 3/4] change dataset part --- docs/.doctrees/environment.pickle | Bin 294436 -> 294912 bytes docs/.doctrees/pyhazards_datasets.doctree | Bin 32644 -> 34676 bytes docs/_sources/pyhazards_datasets.rst.txt | 140 +++++++++++---------- docs/pyhazards_datasets.html | 145 +++++++++++----------- docs/searchindex.js | 2 +- docs/source/pyhazards_datasets.rst | 140 +++++++++++---------- 6 files changed, 217 insertions(+), 210 deletions(-) diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index 2d3b9245a96f705d0871289fe727458b20060dad..af7ecf5bf040b43a3e65fb3212ee2092f64eceea 100644 GIT binary patch delta 13353 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 MDEt0?uXg$W12Y-KD*ylh delta 13478 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 merge SFC+PRES -> inspect -> save plots/tables + # One command: download (if needed) -> merge -> inspect -> save outputs python -m pyhazards.datasets.inspection 20260101 -Notes: -- MERRA-2 download requires Earthdata credentials via environment variables:: +Notes (MERRA-2) +~~~~~~~~~~~~~~~ + +- Download requires Earthdata credentials via environment variables:: export EARTHDATA_USERNAME="YOUR_USERNAME" export EARTHDATA_PASSWORD="YOUR_PASSWORD" -- By default, outputs are written to ``outputs/`` (can be changed via ``--outdir``). -- The same inspection pattern is expected to be supported by other datasets (e.g., ``mtbs``, ``era5``), - with dataset-specific I/O handled inside each dataset implementation. - - -Core classes ------------- - -- ``Dataset``: base class to implement ``_load()`` and return a ``DataBundle``. -- ``DataBundle``: holds named ``DataSplit`` objects, plus ``feature_spec`` and ``label_spec``. -- ``FeatureSpec`` / ``LabelSpec``: describe inputs/targets to simplify model construction. -- ``register_dataset`` / ``load_dataset``: lightweight registry for discovering datasets by name. +- Date formats accepted: ``YYYYMMDD`` (e.g., ``20260101``) or ISO ``YYYY-MM-DD``. +- Optional flags commonly used: + - ``--outdir outputs`` (default: ``outputs`` under repo root) + - ``--skip-download`` / ``--skip-merge`` for re-running on existing files + - ``--force-download`` to re-fetch raw files + - ``--var T2M`` to choose the plotted surface variable (default: ``T2M``) Example skeleton ---------------- -This is a minimal end-to-end skeleton showing **load data → inspect → visualization**. -The key point is to make the data flow explicit (i.e., you should see a line like -``data = load_dataset("merra2")`` or ``data = load_dataset("mtbs")``). +A "nice" skeleton should make it explicit **what data you load** and how it flows into +**inspection/visualization**. + +Below is the recommended pattern: set ``data`` to a dataset name (e.g., ``"merra2"`` or ``"mtbs"``) +and run the dataset's inspection entrypoint accordingly. .. code-block:: python - # 0) Pick a dataset to load (use accordingly) - # Options include: "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr", ... - from pyhazards.datasets import load_dataset + import subprocess - dataset_name = "merra2" # or: "mtbs", "era5", ... - data = load_dataset(dataset_name) # dataset-specific config/paths can be passed via kwargs + # 1) Choose what dataset you want to load/inspect + data = "merra2" # e.g., "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr" (use accordingly) - # 1) Load / materialize a DataBundle (dataset decides how to interpret the "key" such as date/id) - # Example key: a daily date for MERRA-2, or an event/scene id for other datasets. - bundle = data.load(key="20260101") # replace "key" with the appropriate identifier + # 2) Choose the dataset key (identifier) + # - For MERRA-2, the key is a daily date: "YYYYMMDD" (e.g., "20260101") + # - For other datasets (e.g., MTBS), the key could be an event/scene id (to be defined per dataset) + key = "20260101" - # 2) Inspect the returned structure - print("splits:", list(bundle.splits.keys())) - print("feature_spec:", bundle.feature_spec) - print("label_spec:", bundle.label_spec) + # 3) Run the inspection pipeline (download/preprocess if needed -> inspect -> visualize -> save outputs) + if data == "merra2": + cmd = [ + "python", "-m", "pyhazards.datasets.inspection", + key, + "--var", "T2M", # change variable to plot (e.g., QV2M) + "--outdir", "outputs", # output folder under repo root by default + ] + else: + # Convention for other datasets: + # provide a dataset-specific inspection entrypoint: + # python -m pyhazards.datasets..inspection ... + cmd = ["python", "-m", f"pyhazards.datasets.{data}.inspection", key, "--outdir", "outputs"] - split = bundle.splits.get("train", next(iter(bundle.splits.values()))) - x, y = split.x, split.y - print("x:", getattr(x, "shape", type(x)), "y:", getattr(y, "shape", type(y))) + subprocess.run(cmd, check=True) - # 3) Visualization (examples; use the appropriate visualization for your data type) - # Raster: show a 2D slice (H x W) or a channel (C) at a given timestep (T) - # Time series: plot a variable curve over time; Tabular: histogram/boxplot - from pyhazards.viz import show_raster # replace with your actual viz utility + # 4) After running, check outputs/ for saved artifacts (tables + plots). + # Example (MERRA-2): CSV tables for variable inventory + a PDF plot for the selected surface variable. - show_raster(x[0], title=f"{dataset_name}: first sample (train)") # use accordingly +Inspection entrypoints (convention for all datasets) +---------------------------------------------------- -Implementing a custom dataset (developer example) -------------------------------------------------- +Each dataset should expose a minimal inspection entrypoint that supports the same user experience: -If you want to add a new dataset to PyHazards, implement ``Dataset._load()`` and register it. +- **Input**: a dataset identifier (``key``) such as a date/event id. +- **Work**: download/prepare (if needed) → open files → summarize → visualize. +- **Output**: saved artifacts under ``outputs/`` (tables + figures). -.. code-block:: python +Recommended CLI shape (dataset-specific): + +.. code-block:: bash + + # Example convention (to be implemented per dataset): + python -m pyhazards.datasets..inspection --outdir outputs + + +Developer note +-------------- + +If you plan to add inspection for a new dataset, mirror the MERRA-2 inspection pattern: - import torch - from pyhazards.datasets import ( - DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset - ) - - class MyHazardDataset(Dataset): - name = "my_hazard" - - def _load(self): - x = torch.randn(1000, 16) - y = torch.randint(0, 2, (1000,)) - splits = { - "train": DataSplit(x[:800], y[:800]), - "val": DataSplit(x[800:900], y[800:900]), - "test": DataSplit(x[900:], y[900:]), - } - return DataBundle( - splits=splits, - feature_spec=FeatureSpec(input_dim=16, description="example features"), - label_spec=LabelSpec(num_targets=2, task_type="classification"), - ) - - register_dataset(MyHazardDataset.name, MyHazardDataset) +1) parse CLI args (key + outdir + skip/force flags), +2) materialize required local files (download/preprocess), +3) open files and print structure/statistics, +4) generate at least one saved visualization to ``outputs/``. diff --git a/docs/pyhazards_datasets.html b/docs/pyhazards_datasets.html index 219b6455..363a111b 100644 --- a/docs/pyhazards_datasets.html +++ b/docs/pyhazards_datasets.html @@ -263,8 +263,10 @@

    Datasets

    Summary

    -

    PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. -Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata.

    +

    PyHazards maintains a curated catalog of commonly used hazard datasets and provides +dataset-specific utilities for download / preprocessing / inspection / visualization.

    +

    Each dataset page describes: (1) what the dataset is, (2) how to obtain it, and (3) how to +quickly validate local data files via an inspection entrypoint (when available).

    Datasets

    @@ -305,97 +307,95 @@

    Datasets

    Dataset inspection

    -

    PyHazards provides a built-in inspection utility that allows users to quickly explore dataset structure and contents through a unified API.

    -

    The example below demonstrates how to inspect a daily MERRA-2 file using the PyHazards dataset interface.

    -
    # One command: download raw MERRA-2 (if needed) -> merge SFC+PRES -> inspect -> save plots/tables
    +

    PyHazards provides dataset inspection entrypoints to quickly validate local files and produce +basic summaries/plots.

    +

    Currently implemented:

    +
      +
    • MERRA-2 (merra2): one-shot pipeline to download raw MERRA-2 → merge SFC+PRES → inspect → save plots/tables.

    • +
    +
    # One command: download (if needed) -> merge -> inspect -> save outputs
     python -m pyhazards.datasets.inspection 20260101
     
    -

    Notes:

    +
    +

    Notes (MERRA-2)

      -
    • MERRA-2 download requires Earthdata credentials via environment variables:

      +
    • Download requires Earthdata credentials via environment variables:

      export EARTHDATA_USERNAME="YOUR_USERNAME"
       export EARTHDATA_PASSWORD="YOUR_PASSWORD"
       
    • -
    • By default, outputs are written to outputs/ (can be changed via --outdir).

    • -
    • The same inspection pattern is expected to be supported by other datasets (e.g., mtbs, era5), -with dataset-specific I/O handled inside each dataset implementation.

    • +
    • Date formats accepted: YYYYMMDD (e.g., 20260101) or ISO YYYY-MM-DD.

    • +
    • Optional flags commonly used: +- --outdir outputs (default: outputs under repo root) +- --skip-download / --skip-merge for re-running on existing files +- --force-download to re-fetch raw files +- --var T2M to choose the plotted surface variable (default: T2M)

    -
    -

    Core classes

    -
      -
    • Dataset: base class to implement _load() and return a DataBundle.

    • -
    • DataBundle: holds named DataSplit objects, plus feature_spec and label_spec.

    • -
    • FeatureSpec / LabelSpec: describe inputs/targets to simplify model construction.

    • -
    • register_dataset / load_dataset: lightweight registry for discovering datasets by name.

    • -

    Example skeleton

    -

    This is a minimal end-to-end skeleton showing load data → inspect → visualization. -The key point is to make the data flow explicit (i.e., you should see a line like -data = load_dataset("merra2") or data = load_dataset("mtbs")).

    -
    # 0) Pick a dataset to load (use accordingly)
    -#    Options include: "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr", ...
    -from pyhazards.datasets import load_dataset
    +

    A “nice” skeleton should make it explicit what data you load and how it flows into +inspection/visualization.

    +

    Below is the recommended pattern: set data to a dataset name (e.g., "merra2" or "mtbs") +and run the dataset’s inspection entrypoint accordingly.

    +
    import subprocess
     
    -dataset_name = "merra2"  # or: "mtbs", "era5", ...
    -data = load_dataset(dataset_name)   # dataset-specific config/paths can be passed via kwargs
    +# 1) Choose what dataset you want to load/inspect
    +data = "merra2"   # e.g., "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr" (use accordingly)
     
    -# 1) Load / materialize a DataBundle (dataset decides how to interpret the "key" such as date/id)
    -#    Example key: a daily date for MERRA-2, or an event/scene id for other datasets.
    -bundle = data.load(key="20260101")  # replace "key" with the appropriate identifier
    +# 2) Choose the dataset key (identifier)
    +#    - For MERRA-2, the key is a daily date: "YYYYMMDD" (e.g., "20260101")
    +#    - For other datasets (e.g., MTBS), the key could be an event/scene id (to be defined per dataset)
    +key = "20260101"
     
    -# 2) Inspect the returned structure
    -print("splits:", list(bundle.splits.keys()))
    -print("feature_spec:", bundle.feature_spec)
    -print("label_spec:", bundle.label_spec)
    +# 3) Run the inspection pipeline (download/preprocess if needed -> inspect -> visualize -> save outputs)
    +if data == "merra2":
    +    cmd = [
    +        "python", "-m", "pyhazards.datasets.inspection",
    +        key,
    +        "--var", "T2M",           # change variable to plot (e.g., QV2M)
    +        "--outdir", "outputs",    # output folder under repo root by default
    +    ]
    +else:
    +    # Convention for other datasets:
    +    # provide a dataset-specific inspection entrypoint:
    +    #   python -m pyhazards.datasets.<dataset>.inspection <key> ...
    +    cmd = ["python", "-m", f"pyhazards.datasets.{data}.inspection", key, "--outdir", "outputs"]
     
    -split = bundle.splits.get("train", next(iter(bundle.splits.values())))
    -x, y = split.x, split.y
    -print("x:", getattr(x, "shape", type(x)), "y:", getattr(y, "shape", type(y)))
    +subprocess.run(cmd, check=True)
     
    -# 3) Visualization (examples; use the appropriate visualization for your data type)
    -#    Raster: show a 2D slice (H x W) or a channel (C) at a given timestep (T)
    -#    Time series: plot a variable curve over time; Tabular: histogram/boxplot
    -from pyhazards.viz import show_raster  # replace with your actual viz utility
    -
    -show_raster(x[0], title=f"{dataset_name}: first sample (train)")  # use accordingly
    +# 4) After running, check outputs/ for saved artifacts (tables + plots).
    +#    Example (MERRA-2): CSV tables for variable inventory + a PDF plot for the selected surface variable.
     
    -
    -

    Implementing a custom dataset (developer example)

    -

    If you want to add a new dataset to PyHazards, implement Dataset._load() and register it.

    -
    import torch
    -from pyhazards.datasets import (
    -    DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset
    -)
    -
    -class MyHazardDataset(Dataset):
    -    name = "my_hazard"
    -
    -    def _load(self):
    -        x = torch.randn(1000, 16)
    -        y = torch.randint(0, 2, (1000,))
    -        splits = {
    -            "train": DataSplit(x[:800], y[:800]),
    -            "val": DataSplit(x[800:900], y[800:900]),
    -            "test": DataSplit(x[900:], y[900:]),
    -        }
    -        return DataBundle(
    -            splits=splits,
    -            feature_spec=FeatureSpec(input_dim=16, description="example features"),
    -            label_spec=LabelSpec(num_targets=2, task_type="classification"),
    -        )
    -
    -register_dataset(MyHazardDataset.name, MyHazardDataset)
    +
    +

    Inspection entrypoints (convention for all datasets)

    +

    Each dataset should expose a minimal inspection entrypoint that supports the same user experience:

    +
      +
    • Input: a dataset identifier (key) such as a date/event id.

    • +
    • Work: download/prepare (if needed) → open files → summarize → visualize.

    • +
    • Output: saved artifacts under outputs/ (tables + figures).

    • +
    +

    Recommended CLI shape (dataset-specific):

    +
    # Example convention (to be implemented per dataset):
    +python -m pyhazards.datasets.<dataset>.inspection <key> --outdir outputs
     
    +
    +

    Developer note

    +

    If you plan to add inspection for a new dataset, mirror the MERRA-2 inspection pattern:

    +
      +
    1. parse CLI args (key + outdir + skip/force flags),

    2. +
    3. materialize required local files (download/preprocess),

    4. +
    5. open files and print structure/statistics,

    6. +
    7. generate at least one saved visualization to outputs/.

    8. +
    +
    @@ -456,10 +456,13 @@

    Implementing a custom dataset (developer example)Datasets diff --git a/docs/searchindex.js b/docs/searchindex.js index e7e68b16..efb99ad6 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[19, "core-classes"], [21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Implementing a custom dataset (developer example)": [[19, "implementing-a-custom-dataset-developer-example"]], "Indices and tables": [[17, "indices-and-tables"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 19, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 19, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": [16, 19], "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 19, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 19, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "2d": 19, "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 19, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": [16, 19], "85": 9, "9": 9, "90": 14, "900": [16, 19], "96": 9, "98": 10, "A": [10, 11, 13, 17, 22], "By": 19, "For": [10, 12, 14, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 19, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 19, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": [], "abstract": [1, 3, 4, 21], "accept": 16, "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15, 19], "activ": [9, 15, 19], "actual": 19, "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": 19, "alpha": 5, "alreadi": [], "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 19, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 19, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "appropri": 19, "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5], "argument": 16, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18, 19], "base_channel": 5, "baselin": [8, 10, 15], "basic": 17, "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "boxplot": 19, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 19, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 19, 22], "burn": [13, 19], "c": [5, 19], "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 19, 22], "canada": 9, "canopi": 11, "carri": 10, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10, 19], "character": 11, "checkpoint": 20, "cheng": [17, 26], "choos": 6, "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 19, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": 22, "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [19, 20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 19, 22], "contain": [1, 2, 15, 19], "content": [0, 19], "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "current": [2, 10, 11, 15], "curv": 19, "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 19, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "dataset_nam": 19, "datasplit": [0, 1, 2, 16, 17, 19, 22, 24], "date": [8, 15, 19], "db": 14, "ddp": [3, 16, 17, 20], "decid": 19, "dedic": 26, "def": [16, 17, 19, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "delai": 10, "deleg": [1, 5], "demonstr": 19, "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 19, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": [], "disc": 12, "discov": 19, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 19, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": [], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": [], "expect": [8, 19], "explicit": 19, "explicitli": 24, "explor": 19, "export": [19, 22, 24], "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "f": 19, "face": [], "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 19, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 19, 22, 24], "featurespec": [0, 1, 2, 16, 17, 19, 22, 24], "feb": 13, "field": [8, 10, 11, 12, 15], "fifth": 8, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 19, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "follow": [7, 8], "forc": [8, 12], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 19, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "getattr": 19, "gi": 11, "giglio": 9, "github": 17, "given": [19, 22], "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8, 19], "handl": [19, 20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histogram": 19, "histor": [8, 13, 14, 15], "hold": 19, "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 26], "id": [14, 19], "ident": 22, "identifi": [15, 19], "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15, 19], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 19, 22, 24], "ins": 22, "insid": 19, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 19, 21, 24], "intern": [11, 22], "interpret": [10, 19], "inventori": 13, "iou": 21, "irwin": 15, "iso": 14, "iter": [1, 3, 19], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "kei": 19, "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 19, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 19, 22, 24], "labelspec": [0, 1, 2, 16, 17, 19, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 19, 22], "like": [17, 19, 22], "limit": 12, "line": [16, 19], "linear": [16, 22], "link": 15, "list": [1, 3, 19], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2, 19], "loader": 2, "local": 14, "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": 15, "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "materi": 19, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": 19, "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15, 19], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": 10, "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": [16, 19], "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": 19, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 19, 22], "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": [18, 19], "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 19, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "o": 19, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4, 19], "observ": [8, 9, 10, 11, 12], "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": 17, "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 19, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": [19, 23], "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": [], "over": [3, 10, 19, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "particularli": [10, 14], "partner": [13, 14], "pass": [16, 19, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3, 19], "pattern": [9, 15, 19], "payload": 10, "per": [5, 13, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pick": 19, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 19, 22], "point": [9, 10, 14, 15, 19], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "preprocess": [2, 16], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 19, 22, 24], "prithvi": [], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": [], "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 19, 22, 24], "randn": [16, 17, 19, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 19, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": 22, "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": 18, "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17, 19], "register_dataset": [0, 1, 2, 16, 19], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 19, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": [], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 19, 22], "repo": [], "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 19, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": [], "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": 20, "same": 19, "sampl": [2, 17, 19, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "scene": 19, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": [], "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [20, 22], "select_strategi": [1, 3], "self": [16, 17, 19, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 19, 22], "shapefil": [9, 13, 15], "ship": 22, "should": [1, 2, 19], "show": [16, 19], "show_rast": 19, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": 19, "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": [], "slice": 19, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17, 19], "specif": [1, 2, 9, 19, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 19, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statu": [15, 19], "step": [], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subscript": 10, "suit": 11, "suitabl": 13, "summar": [], "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": [10, 19], "t2m": 22, "tabl": 19, "tabular": [1, 5, 14, 17, 19, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 19, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 19, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 19, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 19, 22, 24], "through": [9, 10, 13, 14, 15, 19], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "timestep": 19, "titl": [17, 19], "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 19, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 19, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 19, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": 8, "unifi": [17, 19], "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": [], "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 19, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15], "valu": 19, "var": [], "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "viz": 19, "w": [5, 9, 12, 19], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": 19, "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 19, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 19, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 19, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": 11, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": 12, "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": [19, 21], "classif": 24, "cli": [], "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "core": [17, 19, 20, 21, 22, 26], "custom": [19, 22], "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": [16, 19], "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": 12, "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": 22, "one": [], "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": [], "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": [], "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Developer note": [[19, "developer-note"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Indices and tables": [[17, "indices-and-tables"]], "Inspection entrypoints (convention for all datasets)": [[19, "inspection-entrypoints-convention-for-all-datasets"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Notes (MERRA-2)": [[19, "notes-merra-2"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 19, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": 16, "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "2d": [], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 19, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17, 19], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": 16, "85": 9, "9": 9, "90": 14, "900": 16, "96": 9, "98": 10, "A": [10, 11, 13, 17, 19, 22], "By": [], "For": [10, 12, 14, 19, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": [], "abstract": [1, 3, 4, 21], "accept": [16, 19], "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15], "activ": [9, 15, 19], "actual": [], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16, 19], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": [], "alpha": 5, "alreadi": [], "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 19, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "appropri": [], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5, 19], "argument": 16, "artifact": 19, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 19, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18], "base_channel": 5, "baselin": [8, 10, 15], "basic": [17, 19], "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "boxplot": [], "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 22], "canada": 9, "canopi": 11, "carri": 10, "catalog": 19, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10], "character": 11, "check": 19, "checkpoint": 20, "cheng": [17, 26], "choos": [6, 19], "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": [19, 22], "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cmd": 19, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 22], "contain": [1, 2, 15], "content": 0, "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "could": 19, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14, 19], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "curat": 19, "current": [2, 10, 11, 15, 19], "curv": [], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "dataset_nam": [], "datasplit": [0, 1, 2, 16, 17, 22, 24], "date": [8, 15, 19], "db": 14, "dd": 19, "ddp": [3, 16, 17, 20], "decid": [], "dedic": 26, "def": [16, 17, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "defin": 19, "delai": 10, "deleg": [1, 5], "demonstr": [], "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": [], "disc": 12, "discov": [], "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "els": 19, "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": [], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": 19, "expect": 8, "experi": 19, "explicit": 19, "explicitli": 24, "explor": [], "export": [19, 22, 24], "expos": 19, "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "f": 19, "face": [], "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 22, 24], "featurespec": [0, 1, 2, 16, 17, 22, 24], "feb": 13, "fetch": 19, "field": [8, 10, 11, 12, 15], "fifth": 8, "figur": 19, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9, 19], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "folder": 19, "follow": [7, 8], "forc": [8, 12, 19], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15, 19], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10, 19], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "getattr": [], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histogram": [], "histor": [8, 13, 14, 15], "hold": [], "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 26], "id": [14, 19], "ident": 22, "identifi": [15, 19], "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 19, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 22, 24], "ins": 22, "insid": [], "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": [13, 19], "iou": 21, "irwin": 15, "iso": [14, 19], "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "kei": 19, "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 22, 24], "labelspec": [0, 1, 2, 16, 17, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "least": 19, "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2], "loader": 2, "local": [14, 19], "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": [15, 19], "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "materi": 19, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": [], "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": [10, 19], "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mm": 19, "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": 16, "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": [], "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 22], "nice": 19, "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": 18, "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "o": [], "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4], "observ": [8, 9, 10, 11, 12], "obtain": 19, "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": [17, 19], "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15, 19], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 19, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": [19, 23], "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": [], "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17, 19], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "pars": 19, "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3], "pattern": [9, 15, 19], "payload": 10, "pdf": 19, "per": [5, 13, 19, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pick": [], "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17, 19], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 19, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "prepar": 19, "preprocess": [2, 16, 19], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 19, 22, 24], "prithvi": [], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13, 19], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": 19, "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 22, 24], "randn": [16, 17, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": [19, 22], "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": [18, 19], "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17], "register_dataset": [0, 1, 2, 16], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": [], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "repo": 19, "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": 19, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": [19, 20], "same": 19, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "scene": 19, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": [], "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [19, 20, 22], "select_strategi": [1, 3], "self": [16, 17, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 19, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 19, 22], "shapefil": [9, 13, 15], "ship": 22, "shot": 19, "should": [1, 2, 19], "show": 16, "show_rast": [], "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": [], "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": 19, "slice": [], "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17], "specif": [1, 2, 9, 19, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statist": 19, "statu": [15, 19], "step": [], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subprocess": 19, "subscript": 10, "suit": 11, "suitabl": 13, "summar": 19, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12, 19], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": [19, 22], "tabl": 19, "tabular": [1, 5, 14, 17, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 22, 24], "through": [9, 10, 13, 14, 15], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "timestep": [], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 19, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": [8, 19], "unifi": 17, "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": [], "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15, 19], "valu": [], "var": 19, "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "viz": [], "w": [5, 9, 12], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "what": 19, "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 19, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": [], "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": [11, 19], "yyyymmdd": 19, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": [12, 19], "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "all": 19, "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": 21, "classif": 24, "cli": [], "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "convent": 19, "core": [17, 20, 21, 22, 26], "custom": 22, "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "entrypoint": 19, "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": 16, "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": [12, 19], "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": [19, 22], "one": [], "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": [], "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": [], "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file diff --git a/docs/source/pyhazards_datasets.rst b/docs/source/pyhazards_datasets.rst index 20d32ab8..2bd18413 100644 --- a/docs/source/pyhazards_datasets.rst +++ b/docs/source/pyhazards_datasets.rst @@ -4,8 +4,11 @@ Datasets Summary ------- -PyHazards provides a unified dataset interface for hazard prediction across tabular, temporal, and raster data. -Each dataset returns a DataBundle containing splits, feature specs, label specs, and metadata. +PyHazards maintains a curated catalog of commonly used hazard datasets and provides +dataset-specific utilities for **download / preprocessing / inspection / visualization**. + +Each dataset page describes: (1) what the dataset is, (2) how to obtain it, and (3) how to +quickly validate local data files via an inspection entrypoint (when available). Datasets @@ -44,100 +47,99 @@ Datasets Dataset inspection ------------------ -PyHazards provides a built-in inspection utility that allows users to quickly explore dataset structure and contents through a unified API. +PyHazards provides dataset inspection entrypoints to quickly validate local files and produce +basic summaries/plots. + +Currently implemented: -The example below demonstrates how to inspect a daily MERRA-2 file using the PyHazards dataset interface. +- **MERRA-2 (merra2)**: one-shot pipeline to **download raw MERRA-2 → merge SFC+PRES → inspect → save plots/tables**. .. code-block:: bash - # One command: download raw MERRA-2 (if needed) -> merge SFC+PRES -> inspect -> save plots/tables + # One command: download (if needed) -> merge -> inspect -> save outputs python -m pyhazards.datasets.inspection 20260101 -Notes: -- MERRA-2 download requires Earthdata credentials via environment variables:: +Notes (MERRA-2) +~~~~~~~~~~~~~~~ + +- Download requires Earthdata credentials via environment variables:: export EARTHDATA_USERNAME="YOUR_USERNAME" export EARTHDATA_PASSWORD="YOUR_PASSWORD" -- By default, outputs are written to ``outputs/`` (can be changed via ``--outdir``). -- The same inspection pattern is expected to be supported by other datasets (e.g., ``mtbs``, ``era5``), - with dataset-specific I/O handled inside each dataset implementation. - - -Core classes ------------- - -- ``Dataset``: base class to implement ``_load()`` and return a ``DataBundle``. -- ``DataBundle``: holds named ``DataSplit`` objects, plus ``feature_spec`` and ``label_spec``. -- ``FeatureSpec`` / ``LabelSpec``: describe inputs/targets to simplify model construction. -- ``register_dataset`` / ``load_dataset``: lightweight registry for discovering datasets by name. +- Date formats accepted: ``YYYYMMDD`` (e.g., ``20260101``) or ISO ``YYYY-MM-DD``. +- Optional flags commonly used: + - ``--outdir outputs`` (default: ``outputs`` under repo root) + - ``--skip-download`` / ``--skip-merge`` for re-running on existing files + - ``--force-download`` to re-fetch raw files + - ``--var T2M`` to choose the plotted surface variable (default: ``T2M``) Example skeleton ---------------- -This is a minimal end-to-end skeleton showing **load data → inspect → visualization**. -The key point is to make the data flow explicit (i.e., you should see a line like -``data = load_dataset("merra2")`` or ``data = load_dataset("mtbs")``). +A "nice" skeleton should make it explicit **what data you load** and how it flows into +**inspection/visualization**. + +Below is the recommended pattern: set ``data`` to a dataset name (e.g., ``"merra2"`` or ``"mtbs"``) +and run the dataset's inspection entrypoint accordingly. .. code-block:: python - # 0) Pick a dataset to load (use accordingly) - # Options include: "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr", ... - from pyhazards.datasets import load_dataset + import subprocess - dataset_name = "merra2" # or: "mtbs", "era5", ... - data = load_dataset(dataset_name) # dataset-specific config/paths can be passed via kwargs + # 1) Choose what dataset you want to load/inspect + data = "merra2" # e.g., "merra2", "mtbs", "era5", "firms", "landfire", "wfigs", "goesr" (use accordingly) - # 1) Load / materialize a DataBundle (dataset decides how to interpret the "key" such as date/id) - # Example key: a daily date for MERRA-2, or an event/scene id for other datasets. - bundle = data.load(key="20260101") # replace "key" with the appropriate identifier + # 2) Choose the dataset key (identifier) + # - For MERRA-2, the key is a daily date: "YYYYMMDD" (e.g., "20260101") + # - For other datasets (e.g., MTBS), the key could be an event/scene id (to be defined per dataset) + key = "20260101" - # 2) Inspect the returned structure - print("splits:", list(bundle.splits.keys())) - print("feature_spec:", bundle.feature_spec) - print("label_spec:", bundle.label_spec) + # 3) Run the inspection pipeline (download/preprocess if needed -> inspect -> visualize -> save outputs) + if data == "merra2": + cmd = [ + "python", "-m", "pyhazards.datasets.inspection", + key, + "--var", "T2M", # change variable to plot (e.g., QV2M) + "--outdir", "outputs", # output folder under repo root by default + ] + else: + # Convention for other datasets: + # provide a dataset-specific inspection entrypoint: + # python -m pyhazards.datasets..inspection ... + cmd = ["python", "-m", f"pyhazards.datasets.{data}.inspection", key, "--outdir", "outputs"] - split = bundle.splits.get("train", next(iter(bundle.splits.values()))) - x, y = split.x, split.y - print("x:", getattr(x, "shape", type(x)), "y:", getattr(y, "shape", type(y))) + subprocess.run(cmd, check=True) - # 3) Visualization (examples; use the appropriate visualization for your data type) - # Raster: show a 2D slice (H x W) or a channel (C) at a given timestep (T) - # Time series: plot a variable curve over time; Tabular: histogram/boxplot - from pyhazards.viz import show_raster # replace with your actual viz utility + # 4) After running, check outputs/ for saved artifacts (tables + plots). + # Example (MERRA-2): CSV tables for variable inventory + a PDF plot for the selected surface variable. - show_raster(x[0], title=f"{dataset_name}: first sample (train)") # use accordingly +Inspection entrypoints (convention for all datasets) +---------------------------------------------------- -Implementing a custom dataset (developer example) -------------------------------------------------- +Each dataset should expose a minimal inspection entrypoint that supports the same user experience: -If you want to add a new dataset to PyHazards, implement ``Dataset._load()`` and register it. +- **Input**: a dataset identifier (``key``) such as a date/event id. +- **Work**: download/prepare (if needed) → open files → summarize → visualize. +- **Output**: saved artifacts under ``outputs/`` (tables + figures). -.. code-block:: python +Recommended CLI shape (dataset-specific): + +.. code-block:: bash + + # Example convention (to be implemented per dataset): + python -m pyhazards.datasets..inspection --outdir outputs + + +Developer note +-------------- + +If you plan to add inspection for a new dataset, mirror the MERRA-2 inspection pattern: - import torch - from pyhazards.datasets import ( - DataBundle, DataSplit, Dataset, FeatureSpec, LabelSpec, register_dataset - ) - - class MyHazardDataset(Dataset): - name = "my_hazard" - - def _load(self): - x = torch.randn(1000, 16) - y = torch.randint(0, 2, (1000,)) - splits = { - "train": DataSplit(x[:800], y[:800]), - "val": DataSplit(x[800:900], y[800:900]), - "test": DataSplit(x[900:], y[900:]), - } - return DataBundle( - splits=splits, - feature_spec=FeatureSpec(input_dim=16, description="example features"), - label_spec=LabelSpec(num_targets=2, task_type="classification"), - ) - - register_dataset(MyHazardDataset.name, MyHazardDataset) +1) parse CLI args (key + outdir + skip/force flags), +2) materialize required local files (download/preprocess), +3) open files and print structure/statistics, +4) generate at least one saved visualization to ``outputs/``. From 77f1c4adae2fc92814f1e76b195f84a9dd7d6635 Mon Sep 17 00:00:00 2001 From: Runyang Xu Date: Thu, 5 Feb 2026 06:32:18 -0500 Subject: [PATCH 4/4] change dataset part --- docs/searchindex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/searchindex.js b/docs/searchindex.js index efb99ad6..e056e83f 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Developer note": [[19, "developer-note"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Indices and tables": [[17, "indices-and-tables"]], "Inspection entrypoints (convention for all datasets)": [[19, "inspection-entrypoints-convention-for-all-datasets"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Notes (MERRA-2)": [[19, "notes-merra-2"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 22, 24], "00230": 10, "008": 9, "01": [], "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 19, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": 16, "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 20, 22, 24], "17": [], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2024": [], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "2d": [], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 19, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17, 19], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": 16, "85": 9, "9": 9, "90": 14, "900": 16, "96": 9, "98": 10, "A": [10, 11, 13, 17, 19, 22], "By": [], "For": [10, 12, 14, 19, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "absolut": [], "abstract": [1, 3, 4, 21], "accept": [16, 19], "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15], "activ": [9, 15, 19], "actual": [], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16, 19], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "allow": [], "alpha": 5, "alreadi": [], "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 19, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "appropri": [], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5, 19], "argument": 16, "artifact": 19, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 19, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18], "base_channel": 5, "baselin": [8, 10, 15], "basic": [17, 19], "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "big": [], "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "boxplot": [], "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 22], "canada": 9, "canopi": 11, "carri": 10, "catalog": 19, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10], "character": 11, "check": 19, "checkpoint": 20, "cheng": [17, 26], "choos": [6, 19], "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": [19, 22], "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cmd": 19, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 22], "contain": [1, 2, 15], "content": 0, "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "could": 19, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14, 19], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "curat": 19, "current": [2, 10, 11, 15, 19], "curv": [], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "dataset_nam": [], "datasplit": [0, 1, 2, 16, 17, 22, 24], "date": [8, 15, 19], "db": 14, "dd": 19, "ddp": [3, 16, 17, 20], "decid": [], "dedic": 26, "def": [16, 17, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "defin": 19, "delai": 10, "deleg": [1, 5], "demonstr": [], "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "directori": [], "disc": 12, "discov": [], "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "els": 19, "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "even": [], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": 19, "expect": 8, "experi": 19, "explicit": 19, "explicitli": 24, "explor": [], "export": [19, 22, 24], "expos": 19, "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "f": 19, "face": [], "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 22, 24], "featurespec": [0, 1, 2, 16, 17, 22, 24], "feb": 13, "fetch": 19, "field": [8, 10, 11, 12, 15], "fifth": 8, "figur": 19, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9, 19], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "folder": 19, "follow": [7, 8], "forc": [8, 12, 19], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15, 19], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10, 19], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "getattr": [], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histogram": [], "histor": [8, 13, 14, 15], "hold": [], "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 26], "id": [14, 19], "ident": 22, "identifi": [15, 19], "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 19, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 22, 24], "ins": 22, "insid": [], "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": [13, 19], "iou": 21, "irwin": 15, "iso": [14, 19], "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "kei": 19, "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 22, 24], "labelspec": [0, 1, 2, 16, 17, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latest": [], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "least": 19, "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2], "loader": 2, "local": [14, 19], "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": [15, 19], "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "materi": 19, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra": [], "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": [10, 19], "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mm": 19, "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": 16, "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "myhazarddataset": [], "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 22], "nice": 19, "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": 18, "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "o": [], "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4], "observ": [8, 9, 10, 11, 12], "obtain": 19, "occasion": 14, "occurr": [9, 14, 15, 19], "ocean": [], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": [17, 19], "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15, 19], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 19, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": [19, 23], "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "outputs_merra2_20260101": [], "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17, 19], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "pars": 19, "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3], "pattern": [9, 15, 19], "payload": 10, "pdf": 19, "per": [5, 13, 19, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pick": [], "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17, 19], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 19, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "prepar": 19, "preprocess": [2, 16, 19], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 19, 22, 24], "prithvi": [], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13, 19], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quasi": [], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": 19, "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 22, 24], "randn": [16, 17, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": [19, 22], "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": [18, 19], "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17], "register_dataset": [0, 1, 2, 16], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "rel": [], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "repo": 19, "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": 19, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": [19, 20], "same": 19, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "scene": 19, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "section": [], "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [19, 20, 22], "select_strategi": [1, 3], "self": [16, 17, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 19, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 19, 22], "shapefil": [9, 13, 15], "ship": 22, "shot": 19, "should": [1, 2, 19], "show": 16, "show_rast": [], "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simplifi": [], "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": 19, "slice": [], "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17], "specif": [1, 2, 9, 19, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statist": 19, "statu": [15, 19], "step": [], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subprocess": 19, "subscript": 10, "suit": 11, "suitabl": 13, "summar": 19, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12, 19], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": [19, 22], "tabl": 19, "tabular": [1, 5, 14, 17, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 22, 24], "through": [9, 10, 13, 14, 15], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "timestep": [], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 19, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": [8, 19], "unifi": 17, "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "unless": [], "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15, 19], "valu": [], "var": 19, "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "viz": [], "w": [5, 9, 12], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "what": 19, "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 19, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "written": [], "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": [11, 19], "yyyymmdd": 19, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": [12, 19], "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "all": 19, "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": 21, "classif": 24, "cli": [], "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "convent": 19, "core": [17, 20, 21, 22, 26], "custom": 22, "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "entrypoint": 19, "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": 16, "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": [12, 19], "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": [19, 22], "one": [], "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "recommend": [], "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "shot": [], "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Academic Publications": [[25, "academic-publications"]], "Access": [[8, "access"], [9, "access"], [10, "access"], [11, "access"], [12, "access"], [13, "access"], [14, "access"], [15, "access"]], "At-a-glance (Quick Facts)": [[8, null], [9, null], [10, null], [11, null], [12, null], [13, null], [14, null], [15, null]], "Basic Usage": [[24, "basic-usage"]], "Build a built-in model": [[22, "build-a-built-in-model"]], "Contributors": [[26, "contributors"]], "Core Components": [[17, "core-components"]], "Core Contributors": [[26, "core-contributors"]], "Core Team": [[26, null]], "Core classes": [[21, "core-classes"]], "Core modules": [[20, "core-modules"], [22, "core-modules"]], "Data Characteristics": [[8, "data-characteristics"], [9, "data-characteristics"], [10, "data-characteristics"], [11, "data-characteristics"], [12, "data-characteristics"], [13, "data-characteristics"], [14, "data-characteristics"], [15, "data-characteristics"]], "Dataset inspection": [[19, "dataset-inspection"]], "Datasets": [[16, "datasets"], [19, null], [19, "id1"]], "Design notes": [[22, "design-notes"]], "Developer note": [[19, "developer-note"]], "Distributed and devices": [[20, "distributed-and-devices"]], "ERA5": [[8, null]], "Engine": [[20, null]], "Example skeleton": [[19, "example-skeleton"]], "FIRMS": [[9, null]], "GOES-R": [[10, null]], "GPU Support": [[24, "gpu-support"]], "How to Cite": [[7, null], [17, "how-to-cite"]], "Implementation Guide": [[16, null]], "Indices and tables": [[17, "indices-and-tables"]], "Inspection entrypoints (convention for all datasets)": [[19, "inspection-entrypoints-convention-for-all-datasets"]], "Installation": [[18, null]], "Installing PyHazards": [[18, "installing-pyhazards"]], "LANDFIRE": [[11, null]], "Lead Developer": [[26, "lead-developer"]], "MERRA-2": [[12, null]], "MTBS": [[13, null]], "Mamba-based wildfire model (spatio-temporal)": [[22, "mamba-based-wildfire-model-spatio-temporal"]], "Metrics": [[16, "metrics"], [21, null]], "Models": [[16, "models"], [22, null]], "Module contents": [[1, "module-pyhazards"], [2, "module-pyhazards.datasets"], [3, "module-pyhazards.engine"], [5, "module-pyhazards.models"], [6, "module-pyhazards.utils"]], "NOAA Flood Events": [[14, null]], "Next Steps": [[24, "next-steps"]], "Notes (MERRA-2)": [[19, "notes-merra-2"]], "Overview": [[8, "overview"], [9, "overview"], [10, "overview"], [11, "overview"], [12, "overview"], [13, "overview"], [14, "overview"], [15, "overview"]], "Principal Contributors & Maintainers": [[26, "principal-contributors-maintainers"]], "Quick Start": [[24, null]], "Reference": [[8, "reference"], [9, "reference"], [10, "reference"], [11, "reference"], [12, "reference"], [13, "reference"], [14, "reference"], [15, "reference"]], "References": [[25, null]], "Register a custom model": [[22, "register-a-custom-model"]], "Requirements": [[18, "requirements"]], "Stats": [[8, "stats"], [9, "stats"], [10, "stats"], [11, "stats"], [12, "stats"], [13, "stats"], [14, "stats"], [15, "stats"]], "Submodules": [[2, "submodules"], [3, "submodules"], [5, "submodules"], [6, "submodules"], [23, "submodules"]], "Subpackages": [[1, "subpackages"]], "Summary": [[19, "summary"], [20, "summary"], [21, "summary"], [22, "summary"], [23, "summary"]], "Toy Example (tabular classification)": [[24, "toy-example-tabular-classification"]], "Training": [[16, "training"]], "Transforms": [[16, "transforms"]], "Typical Use Cases": [[8, "typical-use-cases"], [9, "typical-use-cases"], [10, "typical-use-cases"], [11, "typical-use-cases"], [12, "typical-use-cases"], [13, "typical-use-cases"], [14, "typical-use-cases"], [15, "typical-use-cases"]], "Typical usage": [[20, "typical-usage"]], "Usage": [[21, "usage"]], "Utils": [[23, null]], "Variables": [[8, "variables"], [9, "variables"], [10, "variables"], [11, "variables"], [12, "variables"], [13, "variables"], [14, "variables"], [15, "variables"]], "WFIGS": [[15, null]], "Wildfire Mamba (spatio-temporal toy)": [[17, null]], "pyhazards": [[0, null]], "pyhazards package": [[1, null]], "pyhazards.datasets package": [[2, null]], "pyhazards.datasets.base module": [[2, "module-pyhazards.datasets.base"]], "pyhazards.datasets.hazards package": [[2, "module-pyhazards.datasets.hazards"]], "pyhazards.datasets.registry module": [[2, "module-pyhazards.datasets.registry"]], "pyhazards.datasets.transforms package": [[2, "module-pyhazards.datasets.transforms"]], "pyhazards.engine package": [[3, null]], "pyhazards.engine.distributed module": [[3, "module-pyhazards.engine.distributed"]], "pyhazards.engine.inference module": [[3, "module-pyhazards.engine.inference"]], "pyhazards.engine.trainer module": [[3, "module-pyhazards.engine.trainer"]], "pyhazards.metrics package": [[4, null]], "pyhazards.models package": [[5, null]], "pyhazards.models.backbones module": [[5, "module-pyhazards.models.backbones"]], "pyhazards.models.builder module": [[5, "module-pyhazards.models.builder"]], "pyhazards.models.heads module": [[5, "module-pyhazards.models.heads"]], "pyhazards.models.registry module": [[5, "module-pyhazards.models.registry"]], "pyhazards.utils package": [[6, null]], "pyhazards.utils.common module": [[6, "module-pyhazards.utils.common"]], "pyhazards.utils.hardware module": [[6, "module-pyhazards.utils.hardware"]]}, "docnames": ["api/modules", "api/pyhazards", "api/pyhazards.datasets", "api/pyhazards.engine", "api/pyhazards.metrics", "api/pyhazards.models", "api/pyhazards.utils", "cite", "datasets/era5", "datasets/firms", "datasets/goesr", "datasets/landfire", "datasets/merra2", "datasets/mtbs", "datasets/noaa_flood", "datasets/wfigs", "implementation", "index", "installation", "pyhazards_datasets", "pyhazards_engine", "pyhazards_metrics", "pyhazards_models", "pyhazards_utils", "quick_start", "references", "team"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["api/modules.rst", "api/pyhazards.rst", "api/pyhazards.datasets.rst", "api/pyhazards.engine.rst", "api/pyhazards.metrics.rst", "api/pyhazards.models.rst", "api/pyhazards.utils.rst", "cite.rst", "datasets/era5.rst", "datasets/firms.rst", "datasets/goesr.rst", "datasets/landfire.rst", "datasets/merra2.rst", "datasets/mtbs.rst", "datasets/noaa_flood.rst", "datasets/wfigs.rst", "implementation.rst", "index.rst", "installation.rst", "pyhazards_datasets.rst", "pyhazards_engine.rst", "pyhazards_metrics.rst", "pyhazards_models.rst", "pyhazards_utils.rst", "quick_start.rst", "references.rst", "team.rst"], "indexentries": {"_abc_impl (pyhazards.classificationmetrics attribute)": [[1, "pyhazards.ClassificationMetrics._abc_impl", false]], "_abc_impl (pyhazards.datasets.base.transform attribute)": [[2, "pyhazards.datasets.base.Transform._abc_impl", false]], "_abc_impl (pyhazards.metricbase attribute)": [[1, "pyhazards.MetricBase._abc_impl", false]], "_abc_impl (pyhazards.metrics.classificationmetrics attribute)": [[4, "pyhazards.metrics.ClassificationMetrics._abc_impl", false]], "_abc_impl (pyhazards.metrics.metricbase attribute)": [[4, "pyhazards.metrics.MetricBase._abc_impl", false]], "_abc_impl (pyhazards.metrics.regressionmetrics attribute)": [[4, "pyhazards.metrics.RegressionMetrics._abc_impl", false]], "_abc_impl (pyhazards.metrics.segmentationmetrics attribute)": [[4, "pyhazards.metrics.SegmentationMetrics._abc_impl", false]], "_abc_impl (pyhazards.regressionmetrics attribute)": [[1, "pyhazards.RegressionMetrics._abc_impl", false]], "_abc_impl (pyhazards.segmentationmetrics attribute)": [[1, "pyhazards.SegmentationMetrics._abc_impl", false]], "_get_adjacency() (pyhazards.models.wildfiremamba method)": [[5, "pyhazards.models.WildfireMamba._get_adjacency", false]], "_is_protocol (pyhazards.datasets.base.transform attribute)": [[2, "pyhazards.datasets.base.Transform._is_protocol", false]], "_load() (pyhazards.dataset method)": [[1, "pyhazards.Dataset._load", false]], "_load() (pyhazards.datasets.base.dataset method)": [[2, "pyhazards.datasets.base.Dataset._load", false]], "_load() (pyhazards.datasets.dataset method)": [[2, "pyhazards.datasets.Dataset._load", false]], "_make_loader() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer._make_loader", false]], "_make_loader() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer._make_loader", false]], "_make_loader() (pyhazards.trainer method)": [[1, "pyhazards.Trainer._make_loader", false]], "_temporal_delta() (pyhazards.models.wildfiremamba static method)": [[5, "pyhazards.models.WildfireMamba._temporal_delta", false]], "_to_device() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer._to_device", false]], "_to_device() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer._to_device", false]], "_to_device() (pyhazards.trainer method)": [[1, "pyhazards.Trainer._to_device", false]], "auto_device() (in module pyhazards.utils)": [[6, "pyhazards.utils.auto_device", false]], "auto_device() (in module pyhazards.utils.hardware)": [[6, "pyhazards.utils.hardware.auto_device", false]], "available_datasets() (in module pyhazards)": [[1, "pyhazards.available_datasets", false]], "available_datasets() (in module pyhazards.datasets)": [[2, "pyhazards.datasets.available_datasets", false]], "available_datasets() (in module pyhazards.datasets.registry)": [[2, "pyhazards.datasets.registry.available_datasets", false]], "available_models() (in module pyhazards)": [[1, "pyhazards.available_models", false]], "available_models() (in module pyhazards.models)": [[5, "pyhazards.models.available_models", false]], "available_models() (in module pyhazards.models.registry)": [[5, "pyhazards.models.registry.available_models", false]], "build_model() (in module pyhazards)": [[1, "pyhazards.build_model", false]], "build_model() (in module pyhazards.models)": [[5, "pyhazards.models.build_model", false]], "build_model() (in module pyhazards.models.builder)": [[5, "pyhazards.models.builder.build_model", false]], "channels (pyhazards.datasets.base.featurespec attribute)": [[2, "pyhazards.datasets.base.FeatureSpec.channels", false]], "channels (pyhazards.datasets.featurespec attribute)": [[2, "pyhazards.datasets.FeatureSpec.channels", false]], "channels (pyhazards.featurespec attribute)": [[1, "pyhazards.FeatureSpec.channels", false]], "classificationhead (class in pyhazards)": [[1, "pyhazards.ClassificationHead", false]], "classificationhead (class in pyhazards.models)": [[5, "pyhazards.models.ClassificationHead", false]], "classificationhead (class in pyhazards.models.heads)": [[5, "pyhazards.models.heads.ClassificationHead", false]], "classificationmetrics (class in pyhazards)": [[1, "pyhazards.ClassificationMetrics", false]], "classificationmetrics (class in pyhazards.metrics)": [[4, "pyhazards.metrics.ClassificationMetrics", false]], "cnn_aspp_builder() (in module pyhazards.models)": [[5, "pyhazards.models.cnn_aspp_builder", false]], "cnnpatchencoder (class in pyhazards)": [[1, "pyhazards.CNNPatchEncoder", false]], "cnnpatchencoder (class in pyhazards.models)": [[5, "pyhazards.models.CNNPatchEncoder", false]], "cnnpatchencoder (class in pyhazards.models.backbones)": [[5, "pyhazards.models.backbones.CNNPatchEncoder", false]], "compute() (pyhazards.classificationmetrics method)": [[1, "pyhazards.ClassificationMetrics.compute", false]], "compute() (pyhazards.metricbase method)": [[1, "pyhazards.MetricBase.compute", false]], "compute() (pyhazards.metrics.classificationmetrics method)": [[4, "pyhazards.metrics.ClassificationMetrics.compute", false]], "compute() (pyhazards.metrics.metricbase method)": [[4, "pyhazards.metrics.MetricBase.compute", false]], "compute() (pyhazards.metrics.regressionmetrics method)": [[4, "pyhazards.metrics.RegressionMetrics.compute", false]], "compute() (pyhazards.metrics.segmentationmetrics method)": [[4, "pyhazards.metrics.SegmentationMetrics.compute", false]], "compute() (pyhazards.regressionmetrics method)": [[1, "pyhazards.RegressionMetrics.compute", false]], "compute() (pyhazards.segmentationmetrics method)": [[1, "pyhazards.SegmentationMetrics.compute", false]], "databundle (class in pyhazards)": [[1, "pyhazards.DataBundle", false]], "databundle (class in pyhazards.datasets)": [[2, "pyhazards.datasets.DataBundle", false]], "databundle (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.DataBundle", false]], "dataset (class in pyhazards)": [[1, "pyhazards.Dataset", false]], "dataset (class in pyhazards.datasets)": [[2, "pyhazards.datasets.Dataset", false]], "dataset (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.Dataset", false]], "datasplit (class in pyhazards)": [[1, "pyhazards.DataSplit", false]], "datasplit (class in pyhazards.datasets)": [[2, "pyhazards.datasets.DataSplit", false]], "datasplit (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.DataSplit", false]], "default_builder() (in module pyhazards.models.builder)": [[5, "pyhazards.models.builder.default_builder", false]], "description (pyhazards.datasets.base.featurespec attribute)": [[2, "pyhazards.datasets.base.FeatureSpec.description", false]], "description (pyhazards.datasets.base.labelspec attribute)": [[2, "pyhazards.datasets.base.LabelSpec.description", false]], "description (pyhazards.datasets.featurespec attribute)": [[2, "pyhazards.datasets.FeatureSpec.description", false]], "description (pyhazards.datasets.labelspec attribute)": [[2, "pyhazards.datasets.LabelSpec.description", false]], "description (pyhazards.featurespec attribute)": [[1, "pyhazards.FeatureSpec.description", false]], "description (pyhazards.labelspec attribute)": [[1, "pyhazards.LabelSpec.description", false]], "devices (pyhazards.engine.distributed.distributedconfig attribute)": [[3, "pyhazards.engine.distributed.DistributedConfig.devices", false]], "devices (pyhazards.engine.distributedconfig attribute)": [[3, "pyhazards.engine.DistributedConfig.devices", false]], "distributedconfig (class in pyhazards.engine)": [[3, "pyhazards.engine.DistributedConfig", false]], "distributedconfig (class in pyhazards.engine.distributed)": [[3, "pyhazards.engine.distributed.DistributedConfig", false]], "evaluate() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer.evaluate", false]], "evaluate() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer.evaluate", false]], "evaluate() (pyhazards.trainer method)": [[1, "pyhazards.Trainer.evaluate", false]], "extra (pyhazards.datasets.base.featurespec attribute)": [[2, "pyhazards.datasets.base.FeatureSpec.extra", false]], "extra (pyhazards.datasets.base.labelspec attribute)": [[2, "pyhazards.datasets.base.LabelSpec.extra", false]], "extra (pyhazards.datasets.featurespec attribute)": [[2, "pyhazards.datasets.FeatureSpec.extra", false]], "extra (pyhazards.datasets.labelspec attribute)": [[2, "pyhazards.datasets.LabelSpec.extra", false]], "extra (pyhazards.featurespec attribute)": [[1, "pyhazards.FeatureSpec.extra", false]], "extra (pyhazards.labelspec attribute)": [[1, "pyhazards.LabelSpec.extra", false]], "feature_spec (pyhazards.databundle attribute)": [[1, "pyhazards.DataBundle.feature_spec", false]], "feature_spec (pyhazards.datasets.base.databundle attribute)": [[2, "pyhazards.datasets.base.DataBundle.feature_spec", false]], "feature_spec (pyhazards.datasets.databundle attribute)": [[2, "pyhazards.datasets.DataBundle.feature_spec", false]], "featurespec (class in pyhazards)": [[1, "pyhazards.FeatureSpec", false]], "featurespec (class in pyhazards.datasets)": [[2, "pyhazards.datasets.FeatureSpec", false]], "featurespec (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.FeatureSpec", false]], "fit() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer.fit", false]], "fit() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer.fit", false]], "fit() (pyhazards.trainer method)": [[1, "pyhazards.Trainer.fit", false]], "forward() (pyhazards.classificationhead method)": [[1, "pyhazards.ClassificationHead.forward", false]], "forward() (pyhazards.cnnpatchencoder method)": [[1, "pyhazards.CNNPatchEncoder.forward", false]], "forward() (pyhazards.mlpbackbone method)": [[1, "pyhazards.MLPBackbone.forward", false]], "forward() (pyhazards.models.backbones.cnnpatchencoder method)": [[5, "pyhazards.models.backbones.CNNPatchEncoder.forward", false]], "forward() (pyhazards.models.backbones.mlpbackbone method)": [[5, "pyhazards.models.backbones.MLPBackbone.forward", false]], "forward() (pyhazards.models.backbones.temporalencoder method)": [[5, "pyhazards.models.backbones.TemporalEncoder.forward", false]], "forward() (pyhazards.models.classificationhead method)": [[5, "pyhazards.models.ClassificationHead.forward", false]], "forward() (pyhazards.models.cnnpatchencoder method)": [[5, "pyhazards.models.CNNPatchEncoder.forward", false]], "forward() (pyhazards.models.heads.classificationhead method)": [[5, "pyhazards.models.heads.ClassificationHead.forward", false]], "forward() (pyhazards.models.heads.regressionhead method)": [[5, "pyhazards.models.heads.RegressionHead.forward", false]], "forward() (pyhazards.models.heads.segmentationhead method)": [[5, "pyhazards.models.heads.SegmentationHead.forward", false]], "forward() (pyhazards.models.mlpbackbone method)": [[5, "pyhazards.models.MLPBackbone.forward", false]], "forward() (pyhazards.models.regressionhead method)": [[5, "pyhazards.models.RegressionHead.forward", false]], "forward() (pyhazards.models.segmentationhead method)": [[5, "pyhazards.models.SegmentationHead.forward", false]], "forward() (pyhazards.models.temporalencoder method)": [[5, "pyhazards.models.TemporalEncoder.forward", false]], "forward() (pyhazards.models.tverskyloss method)": [[5, "pyhazards.models.TverskyLoss.forward", false]], "forward() (pyhazards.models.wildfirecnnaspp method)": [[5, "pyhazards.models.WildfireCNNASPP.forward", false]], "forward() (pyhazards.models.wildfiremamba method)": [[5, "pyhazards.models.WildfireMamba.forward", false]], "forward() (pyhazards.regressionhead method)": [[1, "pyhazards.RegressionHead.forward", false]], "forward() (pyhazards.segmentationhead method)": [[1, "pyhazards.SegmentationHead.forward", false]], "forward() (pyhazards.temporalencoder method)": [[1, "pyhazards.TemporalEncoder.forward", false]], "get_device() (in module pyhazards.utils)": [[6, "pyhazards.utils.get_device", false]], "get_device() (in module pyhazards.utils.hardware)": [[6, "pyhazards.utils.hardware.get_device", false]], "get_logger() (in module pyhazards.utils)": [[6, "pyhazards.utils.get_logger", false]], "get_logger() (in module pyhazards.utils.common)": [[6, "pyhazards.utils.common.get_logger", false]], "get_model_config() (in module pyhazards.models.registry)": [[5, "pyhazards.models.registry.get_model_config", false]], "get_split() (pyhazards.databundle method)": [[1, "pyhazards.DataBundle.get_split", false]], "get_split() (pyhazards.datasets.base.databundle method)": [[2, "pyhazards.datasets.base.DataBundle.get_split", false]], "get_split() (pyhazards.datasets.databundle method)": [[2, "pyhazards.datasets.DataBundle.get_split", false]], "graph_collate() (in module pyhazards.datasets)": [[2, "pyhazards.datasets.graph_collate", false]], "graphtemporaldataset (class in pyhazards.datasets)": [[2, "pyhazards.datasets.GraphTemporalDataset", false]], "input_dim (pyhazards.datasets.base.featurespec attribute)": [[2, "pyhazards.datasets.base.FeatureSpec.input_dim", false]], "input_dim (pyhazards.datasets.featurespec attribute)": [[2, "pyhazards.datasets.FeatureSpec.input_dim", false]], "input_dim (pyhazards.featurespec attribute)": [[1, "pyhazards.FeatureSpec.input_dim", false]], "inputs (pyhazards.datasets.base.datasplit attribute)": [[2, "pyhazards.datasets.base.DataSplit.inputs", false]], "inputs (pyhazards.datasets.datasplit attribute)": [[2, "pyhazards.datasets.DataSplit.inputs", false]], "inputs (pyhazards.datasplit attribute)": [[1, "pyhazards.DataSplit.inputs", false]], "label_spec (pyhazards.databundle attribute)": [[1, "pyhazards.DataBundle.label_spec", false]], "label_spec (pyhazards.datasets.base.databundle attribute)": [[2, "pyhazards.datasets.base.DataBundle.label_spec", false]], "label_spec (pyhazards.datasets.databundle attribute)": [[2, "pyhazards.datasets.DataBundle.label_spec", false]], "labelspec (class in pyhazards)": [[1, "pyhazards.LabelSpec", false]], "labelspec (class in pyhazards.datasets)": [[2, "pyhazards.datasets.LabelSpec", false]], "labelspec (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.LabelSpec", false]], "load() (pyhazards.dataset method)": [[1, "pyhazards.Dataset.load", false]], "load() (pyhazards.datasets.base.dataset method)": [[2, "pyhazards.datasets.base.Dataset.load", false]], "load() (pyhazards.datasets.dataset method)": [[2, "pyhazards.datasets.Dataset.load", false]], "load_dataset() (in module pyhazards)": [[1, "pyhazards.load_dataset", false]], "load_dataset() (in module pyhazards.datasets)": [[2, "pyhazards.datasets.load_dataset", false]], "load_dataset() (in module pyhazards.datasets.registry)": [[2, "pyhazards.datasets.registry.load_dataset", false]], "metadata (pyhazards.databundle attribute)": [[1, "pyhazards.DataBundle.metadata", false]], "metadata (pyhazards.datasets.base.databundle attribute)": [[2, "pyhazards.datasets.base.DataBundle.metadata", false]], "metadata (pyhazards.datasets.base.datasplit attribute)": [[2, "pyhazards.datasets.base.DataSplit.metadata", false]], "metadata (pyhazards.datasets.databundle attribute)": [[2, "pyhazards.datasets.DataBundle.metadata", false]], "metadata (pyhazards.datasets.datasplit attribute)": [[2, "pyhazards.datasets.DataSplit.metadata", false]], "metadata (pyhazards.datasplit attribute)": [[1, "pyhazards.DataSplit.metadata", false]], "metricbase (class in pyhazards)": [[1, "pyhazards.MetricBase", false]], "metricbase (class in pyhazards.metrics)": [[4, "pyhazards.metrics.MetricBase", false]], "mlpbackbone (class in pyhazards)": [[1, "pyhazards.MLPBackbone", false]], "mlpbackbone (class in pyhazards.models)": [[5, "pyhazards.models.MLPBackbone", false]], "mlpbackbone (class in pyhazards.models.backbones)": [[5, "pyhazards.models.backbones.MLPBackbone", false]], "module": [[1, "module-pyhazards", false], [2, "module-pyhazards.datasets", false], [2, "module-pyhazards.datasets.base", false], [2, "module-pyhazards.datasets.hazards", false], [2, "module-pyhazards.datasets.registry", false], [2, "module-pyhazards.datasets.transforms", false], [3, "module-pyhazards.engine", false], [3, "module-pyhazards.engine.distributed", false], [3, "module-pyhazards.engine.inference", false], [3, "module-pyhazards.engine.trainer", false], [4, "module-pyhazards.metrics", false], [5, "module-pyhazards.models", false], [5, "module-pyhazards.models.backbones", false], [5, "module-pyhazards.models.builder", false], [5, "module-pyhazards.models.heads", false], [5, "module-pyhazards.models.registry", false], [6, "module-pyhazards.utils", false], [6, "module-pyhazards.utils.common", false], [6, "module-pyhazards.utils.hardware", false]], "name (pyhazards.dataset attribute)": [[1, "pyhazards.Dataset.name", false]], "name (pyhazards.datasets.base.dataset attribute)": [[2, "pyhazards.datasets.base.Dataset.name", false]], "name (pyhazards.datasets.dataset attribute)": [[2, "pyhazards.datasets.Dataset.name", false]], "num_devices() (in module pyhazards.utils)": [[6, "pyhazards.utils.num_devices", false]], "num_devices() (in module pyhazards.utils.hardware)": [[6, "pyhazards.utils.hardware.num_devices", false]], "num_targets (pyhazards.datasets.base.labelspec attribute)": [[2, "pyhazards.datasets.base.LabelSpec.num_targets", false]], "num_targets (pyhazards.datasets.labelspec attribute)": [[2, "pyhazards.datasets.LabelSpec.num_targets", false]], "num_targets (pyhazards.labelspec attribute)": [[1, "pyhazards.LabelSpec.num_targets", false]], "predict() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer.predict", false]], "predict() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer.predict", false]], "predict() (pyhazards.trainer method)": [[1, "pyhazards.Trainer.predict", false]], "pyhazards": [[1, "module-pyhazards", false]], "pyhazards.datasets": [[2, "module-pyhazards.datasets", false]], "pyhazards.datasets.base": [[2, "module-pyhazards.datasets.base", false]], "pyhazards.datasets.hazards": [[2, "module-pyhazards.datasets.hazards", false]], "pyhazards.datasets.registry": [[2, "module-pyhazards.datasets.registry", false]], "pyhazards.datasets.transforms": [[2, "module-pyhazards.datasets.transforms", false]], "pyhazards.engine": [[3, "module-pyhazards.engine", false]], "pyhazards.engine.distributed": [[3, "module-pyhazards.engine.distributed", false]], "pyhazards.engine.inference": [[3, "module-pyhazards.engine.inference", false]], "pyhazards.engine.trainer": [[3, "module-pyhazards.engine.trainer", false]], "pyhazards.metrics": [[4, "module-pyhazards.metrics", false]], "pyhazards.models": [[5, "module-pyhazards.models", false]], "pyhazards.models.backbones": [[5, "module-pyhazards.models.backbones", false]], "pyhazards.models.builder": [[5, "module-pyhazards.models.builder", false]], "pyhazards.models.heads": [[5, "module-pyhazards.models.heads", false]], "pyhazards.models.registry": [[5, "module-pyhazards.models.registry", false]], "pyhazards.utils": [[6, "module-pyhazards.utils", false]], "pyhazards.utils.common": [[6, "module-pyhazards.utils.common", false]], "pyhazards.utils.hardware": [[6, "module-pyhazards.utils.hardware", false]], "register_dataset() (in module pyhazards)": [[1, "pyhazards.register_dataset", false]], "register_dataset() (in module pyhazards.datasets)": [[2, "pyhazards.datasets.register_dataset", false]], "register_dataset() (in module pyhazards.datasets.registry)": [[2, "pyhazards.datasets.registry.register_dataset", false]], "register_model() (in module pyhazards)": [[1, "pyhazards.register_model", false]], "register_model() (in module pyhazards.models)": [[5, "pyhazards.models.register_model", false]], "register_model() (in module pyhazards.models.registry)": [[5, "pyhazards.models.registry.register_model", false]], "regressionhead (class in pyhazards)": [[1, "pyhazards.RegressionHead", false]], "regressionhead (class in pyhazards.models)": [[5, "pyhazards.models.RegressionHead", false]], "regressionhead (class in pyhazards.models.heads)": [[5, "pyhazards.models.heads.RegressionHead", false]], "regressionmetrics (class in pyhazards)": [[1, "pyhazards.RegressionMetrics", false]], "regressionmetrics (class in pyhazards.metrics)": [[4, "pyhazards.metrics.RegressionMetrics", false]], "reset() (pyhazards.classificationmetrics method)": [[1, "pyhazards.ClassificationMetrics.reset", false]], "reset() (pyhazards.metricbase method)": [[1, "pyhazards.MetricBase.reset", false]], "reset() (pyhazards.metrics.classificationmetrics method)": [[4, "pyhazards.metrics.ClassificationMetrics.reset", false]], "reset() (pyhazards.metrics.metricbase method)": [[4, "pyhazards.metrics.MetricBase.reset", false]], "reset() (pyhazards.metrics.regressionmetrics method)": [[4, "pyhazards.metrics.RegressionMetrics.reset", false]], "reset() (pyhazards.metrics.segmentationmetrics method)": [[4, "pyhazards.metrics.SegmentationMetrics.reset", false]], "reset() (pyhazards.regressionmetrics method)": [[1, "pyhazards.RegressionMetrics.reset", false]], "reset() (pyhazards.segmentationmetrics method)": [[1, "pyhazards.SegmentationMetrics.reset", false]], "save_checkpoint() (pyhazards.engine.trainer method)": [[3, "pyhazards.engine.Trainer.save_checkpoint", false]], "save_checkpoint() (pyhazards.engine.trainer.trainer method)": [[3, "pyhazards.engine.trainer.Trainer.save_checkpoint", false]], "save_checkpoint() (pyhazards.trainer method)": [[1, "pyhazards.Trainer.save_checkpoint", false]], "seed_all() (in module pyhazards.utils)": [[6, "pyhazards.utils.seed_all", false]], "seed_all() (in module pyhazards.utils.common)": [[6, "pyhazards.utils.common.seed_all", false]], "segmentationhead (class in pyhazards)": [[1, "pyhazards.SegmentationHead", false]], "segmentationhead (class in pyhazards.models)": [[5, "pyhazards.models.SegmentationHead", false]], "segmentationhead (class in pyhazards.models.heads)": [[5, "pyhazards.models.heads.SegmentationHead", false]], "segmentationmetrics (class in pyhazards)": [[1, "pyhazards.SegmentationMetrics", false]], "segmentationmetrics (class in pyhazards.metrics)": [[4, "pyhazards.metrics.SegmentationMetrics", false]], "select_strategy() (in module pyhazards.engine)": [[3, "pyhazards.engine.select_strategy", false]], "select_strategy() (in module pyhazards.engine.distributed)": [[3, "pyhazards.engine.distributed.select_strategy", false]], "set_adjacency() (pyhazards.models.wildfiremamba method)": [[5, "pyhazards.models.WildfireMamba.set_adjacency", false]], "set_device() (in module pyhazards.utils)": [[6, "pyhazards.utils.set_device", false]], "set_device() (in module pyhazards.utils.hardware)": [[6, "pyhazards.utils.hardware.set_device", false]], "slidingwindowinference (class in pyhazards.engine)": [[3, "pyhazards.engine.SlidingWindowInference", false]], "slidingwindowinference (class in pyhazards.engine.inference)": [[3, "pyhazards.engine.inference.SlidingWindowInference", false]], "splits (pyhazards.databundle attribute)": [[1, "pyhazards.DataBundle.splits", false]], "splits (pyhazards.datasets.base.databundle attribute)": [[2, "pyhazards.datasets.base.DataBundle.splits", false]], "splits (pyhazards.datasets.databundle attribute)": [[2, "pyhazards.datasets.DataBundle.splits", false]], "strategy (pyhazards.engine.distributed.distributedconfig attribute)": [[3, "pyhazards.engine.distributed.DistributedConfig.strategy", false]], "strategy (pyhazards.engine.distributedconfig attribute)": [[3, "pyhazards.engine.DistributedConfig.strategy", false]], "targets (pyhazards.datasets.base.datasplit attribute)": [[2, "pyhazards.datasets.base.DataSplit.targets", false]], "targets (pyhazards.datasets.datasplit attribute)": [[2, "pyhazards.datasets.DataSplit.targets", false]], "targets (pyhazards.datasplit attribute)": [[1, "pyhazards.DataSplit.targets", false]], "task_type (pyhazards.datasets.base.labelspec attribute)": [[2, "pyhazards.datasets.base.LabelSpec.task_type", false]], "task_type (pyhazards.datasets.labelspec attribute)": [[2, "pyhazards.datasets.LabelSpec.task_type", false]], "task_type (pyhazards.labelspec attribute)": [[1, "pyhazards.LabelSpec.task_type", false]], "temporalencoder (class in pyhazards)": [[1, "pyhazards.TemporalEncoder", false]], "temporalencoder (class in pyhazards.models)": [[5, "pyhazards.models.TemporalEncoder", false]], "temporalencoder (class in pyhazards.models.backbones)": [[5, "pyhazards.models.backbones.TemporalEncoder", false]], "trainer (class in pyhazards)": [[1, "pyhazards.Trainer", false]], "trainer (class in pyhazards.engine)": [[3, "pyhazards.engine.Trainer", false]], "trainer (class in pyhazards.engine.trainer)": [[3, "pyhazards.engine.trainer.Trainer", false]], "transform (class in pyhazards.datasets.base)": [[2, "pyhazards.datasets.base.Transform", false]], "tverskyloss (class in pyhazards.models)": [[5, "pyhazards.models.TverskyLoss", false]], "update() (pyhazards.classificationmetrics method)": [[1, "pyhazards.ClassificationMetrics.update", false]], "update() (pyhazards.metricbase method)": [[1, "pyhazards.MetricBase.update", false]], "update() (pyhazards.metrics.classificationmetrics method)": [[4, "pyhazards.metrics.ClassificationMetrics.update", false]], "update() (pyhazards.metrics.metricbase method)": [[4, "pyhazards.metrics.MetricBase.update", false]], "update() (pyhazards.metrics.regressionmetrics method)": [[4, "pyhazards.metrics.RegressionMetrics.update", false]], "update() (pyhazards.metrics.segmentationmetrics method)": [[4, "pyhazards.metrics.SegmentationMetrics.update", false]], "update() (pyhazards.regressionmetrics method)": [[1, "pyhazards.RegressionMetrics.update", false]], "update() (pyhazards.segmentationmetrics method)": [[1, "pyhazards.SegmentationMetrics.update", false]], "wildfire_aspp_builder() (in module pyhazards.models)": [[5, "pyhazards.models.wildfire_aspp_builder", false]], "wildfire_mamba_builder() (in module pyhazards.models)": [[5, "pyhazards.models.wildfire_mamba_builder", false]], "wildfireaspp (class in pyhazards.models)": [[5, "pyhazards.models.WildfireASPP", false]], "wildfirecnnaspp (class in pyhazards.models)": [[5, "pyhazards.models.WildfireCNNASPP", false]], "wildfiremamba (class in pyhazards.models)": [[5, "pyhazards.models.WildfireMamba", false]]}, "objects": {"": [[1, 0, 0, "-", "pyhazards"]], "pyhazards": [[1, 1, 1, "", "CNNPatchEncoder"], [1, 1, 1, "", "ClassificationHead"], [1, 1, 1, "", "ClassificationMetrics"], [1, 1, 1, "", "DataBundle"], [1, 1, 1, "", "DataSplit"], [1, 1, 1, "", "Dataset"], [1, 1, 1, "", "FeatureSpec"], [1, 1, 1, "", "LabelSpec"], [1, 1, 1, "", "MLPBackbone"], [1, 1, 1, "", "MetricBase"], [1, 1, 1, "", "RegressionHead"], [1, 1, 1, "", "RegressionMetrics"], [1, 1, 1, "", "SegmentationHead"], [1, 1, 1, "", "SegmentationMetrics"], [1, 1, 1, "", "TemporalEncoder"], [1, 1, 1, "", "Trainer"], [1, 4, 1, "", "available_datasets"], [1, 4, 1, "", "available_models"], [1, 4, 1, "", "build_model"], [2, 0, 0, "-", "datasets"], [3, 0, 0, "-", "engine"], [1, 4, 1, "", "load_dataset"], [4, 0, 0, "-", "metrics"], [5, 0, 0, "-", "models"], [1, 4, 1, "", "register_dataset"], [1, 4, 1, "", "register_model"], [6, 0, 0, "-", "utils"]], "pyhazards.CNNPatchEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationHead": [[1, 2, 1, "", "forward"]], "pyhazards.ClassificationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.DataBundle": [[1, 3, 1, "", "feature_spec"], [1, 2, 1, "", "get_split"], [1, 3, 1, "", "label_spec"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "splits"]], "pyhazards.DataSplit": [[1, 3, 1, "", "inputs"], [1, 3, 1, "", "metadata"], [1, 3, 1, "", "targets"]], "pyhazards.Dataset": [[1, 2, 1, "", "_load"], [1, 2, 1, "", "load"], [1, 3, 1, "", "name"]], "pyhazards.FeatureSpec": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "input_dim"]], "pyhazards.LabelSpec": [[1, 3, 1, "", "description"], [1, 3, 1, "", "extra"], [1, 3, 1, "", "num_targets"], [1, 3, 1, "", "task_type"]], "pyhazards.MLPBackbone": [[1, 2, 1, "", "forward"]], "pyhazards.MetricBase": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.RegressionHead": [[1, 2, 1, "", "forward"]], "pyhazards.RegressionMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.SegmentationHead": [[1, 2, 1, "", "forward"]], "pyhazards.SegmentationMetrics": [[1, 3, 1, "", "_abc_impl"], [1, 2, 1, "", "compute"], [1, 2, 1, "", "reset"], [1, 2, 1, "", "update"]], "pyhazards.TemporalEncoder": [[1, 2, 1, "", "forward"]], "pyhazards.Trainer": [[1, 2, 1, "", "_make_loader"], [1, 2, 1, "", "_to_device"], [1, 2, 1, "", "evaluate"], [1, 2, 1, "", "fit"], [1, 2, 1, "", "predict"], [1, 2, 1, "", "save_checkpoint"]], "pyhazards.datasets": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "GraphTemporalDataset"], [2, 1, 1, "", "LabelSpec"], [2, 4, 1, "", "available_datasets"], [2, 0, 0, "-", "base"], [2, 4, 1, "", "graph_collate"], [2, 0, 0, "-", "hazards"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"], [2, 0, 0, "-", "registry"], [2, 0, 0, "-", "transforms"]], "pyhazards.datasets.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base": [[2, 1, 1, "", "DataBundle"], [2, 1, 1, "", "DataSplit"], [2, 1, 1, "", "Dataset"], [2, 1, 1, "", "FeatureSpec"], [2, 1, 1, "", "LabelSpec"], [2, 1, 1, "", "Transform"]], "pyhazards.datasets.base.DataBundle": [[2, 3, 1, "", "feature_spec"], [2, 2, 1, "", "get_split"], [2, 3, 1, "", "label_spec"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "splits"]], "pyhazards.datasets.base.DataSplit": [[2, 3, 1, "", "inputs"], [2, 3, 1, "", "metadata"], [2, 3, 1, "", "targets"]], "pyhazards.datasets.base.Dataset": [[2, 2, 1, "", "_load"], [2, 2, 1, "", "load"], [2, 3, 1, "", "name"]], "pyhazards.datasets.base.FeatureSpec": [[2, 3, 1, "", "channels"], [2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "input_dim"]], "pyhazards.datasets.base.LabelSpec": [[2, 3, 1, "", "description"], [2, 3, 1, "", "extra"], [2, 3, 1, "", "num_targets"], [2, 3, 1, "", "task_type"]], "pyhazards.datasets.base.Transform": [[2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "_is_protocol"]], "pyhazards.datasets.registry": [[2, 4, 1, "", "available_datasets"], [2, 4, 1, "", "load_dataset"], [2, 4, 1, "", "register_dataset"]], "pyhazards.engine": [[3, 1, 1, "", "DistributedConfig"], [3, 1, 1, "", "SlidingWindowInference"], [3, 1, 1, "", "Trainer"], [3, 0, 0, "-", "distributed"], [3, 0, 0, "-", "inference"], [3, 4, 1, "", "select_strategy"], [3, 0, 0, "-", "trainer"]], "pyhazards.engine.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.engine.distributed": [[3, 1, 1, "", "DistributedConfig"], [3, 4, 1, "", "select_strategy"]], "pyhazards.engine.distributed.DistributedConfig": [[3, 3, 1, "", "devices"], [3, 3, 1, "", "strategy"]], "pyhazards.engine.inference": [[3, 1, 1, "", "SlidingWindowInference"]], "pyhazards.engine.trainer": [[3, 1, 1, "", "Trainer"]], "pyhazards.engine.trainer.Trainer": [[3, 2, 1, "", "_make_loader"], [3, 2, 1, "", "_to_device"], [3, 2, 1, "", "evaluate"], [3, 2, 1, "", "fit"], [3, 2, 1, "", "predict"], [3, 2, 1, "", "save_checkpoint"]], "pyhazards.metrics": [[4, 1, 1, "", "ClassificationMetrics"], [4, 1, 1, "", "MetricBase"], [4, 1, 1, "", "RegressionMetrics"], [4, 1, 1, "", "SegmentationMetrics"]], "pyhazards.metrics.ClassificationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.MetricBase": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.RegressionMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.metrics.SegmentationMetrics": [[4, 3, 1, "", "_abc_impl"], [4, 2, 1, "", "compute"], [4, 2, 1, "", "reset"], [4, 2, 1, "", "update"]], "pyhazards.models": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"], [5, 1, 1, "", "TemporalEncoder"], [5, 1, 1, "", "TverskyLoss"], [5, 1, 1, "", "WildfireASPP"], [5, 1, 1, "", "WildfireCNNASPP"], [5, 1, 1, "", "WildfireMamba"], [5, 4, 1, "", "available_models"], [5, 0, 0, "-", "backbones"], [5, 4, 1, "", "build_model"], [5, 0, 0, "-", "builder"], [5, 4, 1, "", "cnn_aspp_builder"], [5, 0, 0, "-", "heads"], [5, 4, 1, "", "register_model"], [5, 0, 0, "-", "registry"], [5, 4, 1, "", "wildfire_aspp_builder"], [5, 4, 1, "", "wildfire_mamba_builder"]], "pyhazards.models.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.TverskyLoss": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireCNNASPP": [[5, 2, 1, "", "forward"]], "pyhazards.models.WildfireMamba": [[5, 2, 1, "", "_get_adjacency"], [5, 2, 1, "", "_temporal_delta"], [5, 2, 1, "", "forward"], [5, 2, 1, "", "set_adjacency"]], "pyhazards.models.backbones": [[5, 1, 1, "", "CNNPatchEncoder"], [5, 1, 1, "", "MLPBackbone"], [5, 1, 1, "", "TemporalEncoder"]], "pyhazards.models.backbones.CNNPatchEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.MLPBackbone": [[5, 2, 1, "", "forward"]], "pyhazards.models.backbones.TemporalEncoder": [[5, 2, 1, "", "forward"]], "pyhazards.models.builder": [[5, 4, 1, "", "build_model"], [5, 4, 1, "", "default_builder"]], "pyhazards.models.heads": [[5, 1, 1, "", "ClassificationHead"], [5, 1, 1, "", "RegressionHead"], [5, 1, 1, "", "SegmentationHead"]], "pyhazards.models.heads.ClassificationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.RegressionHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.heads.SegmentationHead": [[5, 2, 1, "", "forward"]], "pyhazards.models.registry": [[5, 4, 1, "", "available_models"], [5, 4, 1, "", "get_model_config"], [5, 4, 1, "", "register_model"]], "pyhazards.utils": [[6, 4, 1, "", "auto_device"], [6, 0, 0, "-", "common"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "get_logger"], [6, 0, 0, "-", "hardware"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "seed_all"], [6, 4, 1, "", "set_device"]], "pyhazards.utils.common": [[6, 4, 1, "", "get_logger"], [6, 4, 1, "", "seed_all"]], "pyhazards.utils.hardware": [[6, 4, 1, "", "auto_device"], [6, 4, 1, "", "get_device"], [6, 4, 1, "", "num_devices"], [6, 4, 1, "", "set_device"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [10, 11, 13, 15, 19, 26], "0": [1, 3, 5, 8, 10, 12, 16, 17, 18, 22, 24], "00230": 10, "008": 9, "0301003": 13, "06": 5, "0758": 12, "08": 9, "1": [1, 3, 5, 9, 10, 12, 13, 17, 19, 22], "10": [8, 9, 10, 11, 12, 13, 16, 20], "1000": 16, "1002": 8, "1016": 9, "1071": 11, "11": 9, "1175": [10, 12], "12": [5, 18, 22], "120": 14, "128": [1, 5, 16, 22], "14": 12, "143": 9, "146": 8, "15": [10, 15], "16": [12, 16, 17, 20, 22, 24], "18": 11, "1940": 8, "1950": 14, "1980": 12, "1984": 13, "1999": 8, "1b": 10, "1e": [5, 16, 17, 20, 22, 24], "2": [1, 5, 8, 9, 10, 16, 17, 18, 20, 22, 24], "20": 9, "2007": [13, 19], "2009": 11, "2013": 9, "2014": [9, 19], "2017": [10, 12, 19], "2020": [8, 19], "2025": 17, "20260101": 19, "2049": 8, "21": [9, 13], "235": 11, "24": 17, "249": 11, "25": 8, "256": [1, 5, 22], "3": [1, 5, 8, 9, 11, 12, 13, 16, 17, 18, 19, 20, 22, 24], "30": [9, 10, 11, 12, 13], "30m": 9, "32": [1, 3, 5, 17, 22], "350": [17, 24], "375": 9, "3803": 8, "3h": 9, "4": [9, 10, 17, 19], "42": 6, "425": [17, 24], "48": 22, "4996": 13, "5": [5, 8, 9, 10, 12, 15, 17, 22, 24], "500": [17, 24], "5419": 12, "5454": 12, "6": [5, 9, 10, 17, 18, 22], "60": 9, "625": 12, "64": [1, 3, 5, 22], "681": 10, "698": 10, "7": 9, "730": 8, "75": 14, "8": [9, 17, 18, 22], "800": 16, "85": 9, "9": 9, "90": 14, "900": 16, "96": 9, "98": 10, "A": [10, 11, 13, 17, 19, 22], "For": [10, 12, 14, 19, 22, 24], "If": [7, 8, 17, 19], "It": [8, 12, 22], "Near": [8, 9, 12, 19], "One": 19, "Or": 24, "The": [8, 9, 10, 12, 20, 22, 26], "To": [15, 16, 24], "_abc": [1, 2, 4], "_abc_data": [1, 2, 4], "_abc_impl": [0, 1, 2, 4], "_get_adjac": [1, 5], "_is_protocol": [1, 2], "_load": [0, 1, 2, 16, 17, 24], "_make_load": [0, 1, 3], "_temporal_delta": [1, 5], "_to_devic": [0, 1, 3], "abc": [1, 4], "abi": 10, "abov": 10, "abstract": [1, 3, 4, 21], "accept": [16, 19], "accordingli": 19, "accuraci": 21, "across": [11, 13, 14, 15], "activ": [9, 15, 19], "ad": 10, "adam": [16, 17, 20, 22, 24], "add": [16, 19], "addit": 11, "adj": 5, "adjac": [2, 5, 17, 22], "administr": 14, "adopt": 8, "advanc": 10, "aerosol": 10, "after": [10, 12, 14, 16, 19], "agenc": 15, "aggreg": [13, 15, 16, 21], "ai": 17, "aim": 11, "al": [8, 10, 12, 19], "alaska": [11, 13], "algorithm": 9, "alpha": 5, "also": 12, "america": 10, "american": 10, "amount": 8, "amp": [16, 20], "an": [2, 8, 9, 15, 19, 22], "analysi": [8, 9, 10, 12, 13, 14, 15, 19], "analyz": 17, "ani": [1, 2, 3, 5, 22], "annual": 11, "anomali": [9, 10], "api": [1, 3, 17, 24], "appear": [10, 12, 15], "append": [14, 15], "appli": [5, 15, 22], "applic": [8, 12], "approxim": 15, "aqua": 9, "ar": [8, 9, 10, 11, 13, 14, 15, 20, 21, 22], "arcgi": 15, "architectur": [16, 17, 22], "archiv": [9, 10, 13, 14], "arg": [2, 5, 19], "argument": 16, "artifact": 19, "aspp": 5, "aspp_channel": 5, "assess": [8, 9, 11, 13, 14, 17, 19], "assimil": [8, 12], "associ": [9, 15], "assur": 26, "atmospher": [8, 10, 12, 19], "attribut": [8, 15], "aug": 13, "author": 17, "authorit": [15, 19], "auto": [1, 3, 20], "auto_devic": [1, 6, 20], "automat": [6, 24], "avail": [9, 10, 12, 13, 14, 19, 20, 24], "available_dataset": [0, 1, 2], "available_model": [0, 1, 5, 22], "awar": [9, 10, 17], "b": [5, 8, 13], "back": 22, "backbon": [0, 1, 12, 16, 17, 22], "background": 11, "backward": 5, "bam": 10, "band": 10, "base": [0, 1, 3, 4, 5, 9, 11, 13, 14, 15, 18], "base_channel": 5, "baselin": [8, 10, 15], "basic": [17, 19], "batch": [2, 5, 22], "batch_siz": [1, 3, 5, 17, 22], "bcewithlogitsloss": [17, 22], "becaus": 22, "begin": 14, "behavior": [8, 11, 19], "bell": 8, "below": [10, 19], "benchmark": [8, 12, 19], "berrisford": 8, "best": 10, "beta": 5, "bin": 14, "binari": [5, 17, 22], "block": 22, "boundari": 8, "box": 17, "branch": 22, "brewer": 13, "bright": 10, "broad": 12, "build": [1, 5, 17], "build_model": [0, 1, 5, 16, 17, 20, 22, 24], "builder": [0, 1, 2, 16, 22], "built": [17, 21], "bulk": [9, 11, 14], "bulletin": 10, "bundl": [1, 2, 13, 17, 22], "burn": [13, 19], "c": 5, "c00648": 14, "c3": 8, "ca": 9, "cache_dir": [1, 2], "cadenc": [8, 9, 10, 11, 12, 13, 14, 15], "calcul": 17, "call": 21, "callabl": 2, "can": [9, 10, 12, 16, 18, 22], "canada": 9, "canopi": 11, "carri": 10, "catalog": 19, "categor": 13, "caus": 15, "cd": [8, 19], "center": [14, 15], "centr": 8, "chain": 16, "chang": [8, 13, 15, 19, 22], "channel": [0, 1, 2, 10], "character": 11, "check": 19, "checkpoint": 20, "cheng": [17, 26], "choos": [6, 19], "class": [1, 2, 3, 4, 5, 10, 13, 16, 17, 20, 24], "classif": [1, 5, 13, 16, 17, 20, 22], "classificationhead": [0, 1, 5], "classificationmetr": [0, 1, 4, 16, 17, 20, 21, 24], "cli": [19, 22], "climat": [8, 12], "close": 8, "closer": 10, "cloud": 10, "cmd": 19, "cnn": [1, 5, 16, 17, 22], "cnn_aspp_build": [1, 5], "cnnpatchencod": [0, 1, 5], "code": 26, "collat": [2, 17], "collate_fn": [1, 3, 17], "collect": 16, "com": [15, 17], "combin": [8, 9], "command": 19, "common": [0, 1, 12, 21, 22, 23], "commonli": [8, 11, 12, 13, 15, 19], "commun": 26, "compat": 5, "compil": 14, "complex": [1, 3, 22], "compos": [22, 26], "comprehens": [8, 17], "comput": [0, 1, 2, 4, 16, 21], "concret": 2, "conda": 18, "confid": 9, "config": [20, 22], "consid": 7, "consist": [1, 5, 8, 11, 12], "construct": [1, 2, 22], "contain": [1, 2, 15], "content": 0, "contentrefer": 9, "context": 19, "contextu": 10, "continu": [10, 12, 13, 15, 19], "contribut": 26, "conu": [10, 11, 13], "conv_kernel": 5, "conveni": 22, "convent": 12, "coord": 14, "coordin": [8, 10, 11, 12, 13, 14], "copernicu": [8, 19], "core": [10, 12], "correl": [17, 22], "correspond": 9, "could": 19, "count": [5, 22], "counti": [2, 5, 14, 17, 22], "coupl": 22, "covari": [8, 11, 12, 19], "cover": [11, 21], "coverag": [8, 9, 10, 11, 12, 13, 14, 15], "cpu": [16, 24], "cr": [8, 9, 10, 11, 12, 13, 15], "creat": [16, 22], "credenti": 19, "critic": 10, "crop": 14, "crossentropyloss": [16, 17, 20, 24], "csiszar": 9, "csv": [9, 14, 19], "cu126": 18, "cube": 22, "cuda": [18, 20, 24], "curat": 19, "current": [2, 10, 11, 15, 19], "custom": [1, 3, 16, 17, 24], "d": [10, 12], "d2m": 22, "dai": [2, 5, 8, 9, 14, 17, 22], "daili": [8, 12, 19], "damag": 14, "danger": 8, "data": [1, 2, 3, 17, 19, 22, 24], "data_bundl": [16, 20], "databas": [14, 19], "databundl": [0, 1, 2, 16, 17, 22, 24], "dataload": [1, 3], "dataset": [0, 1, 9, 11, 13, 14, 15, 17, 22, 24], "datasplit": [0, 1, 2, 16, 17, 22, 24], "date": [8, 15, 19], "db": 14, "dd": 19, "ddp": [3, 16, 17, 20], "dedic": 26, "def": [16, 17, 22, 24], "default": [1, 5, 10, 16, 19, 20, 22], "default_build": [1, 5, 22], "defin": 19, "delai": 10, "deleg": [1, 5], "densiti": 11, "depend": [9, 10, 11, 13, 15], "deploi": 17, "depth": [1, 5, 22], "deriv": [9, 10, 11, 12, 13, 14, 19], "describ": [1, 2, 19], "descript": [0, 1, 2, 9, 14, 16, 17, 24], "descriptor": 11, "design": [17, 21], "detail": 24, "detect": [9, 10, 15, 19, 24], "determinist": 6, "develop": 8, "devic": [1, 3, 6, 17, 23, 24], "device_str": 6, "dewpoint": 8, "diagnost": [8, 10, 12], "dice": 21, "dict": [1, 2, 3, 4, 5, 22], "differenti": 22, "dilat": 5, "direct": 26, "directli": 21, "disc": 12, "discover": 22, "discoveri": 15, "disk": 10, "displai": 15, "dissemin": 10, "distanc": [17, 22], "distribut": [0, 1, 8, 9, 10, 11, 13, 15, 16], "distributedconfig": [1, 3], "disturb": 11, "dnbr": 13, "document": [12, 14, 15, 24, 26], "doi": [8, 9, 10, 11, 12, 13], "dong": 26, "download": [9, 14, 15, 18, 19], "downstream": [1, 2], "dp": 3, "driven": [16, 22], "driver": [12, 14, 19], "dropout": 5, "drought": 12, "dtype": [1, 2], "due": 14, "e": [9, 11, 12, 13, 15, 16, 19, 22], "each": [2, 9, 12, 15, 19], "earli": [9, 10, 19], "earthdata": [9, 12, 19], "earthdata_password": 19, "earthdata_usernam": 19, "earthquak": 2, "easi": [1, 2, 17], "ecmwf": [8, 19], "ecolog": [11, 13], "ecologi": 13, "ecosystem": 19, "edu": 26, "eidenshink": [13, 19], "els": 19, "emerg": 14, "enabl": [5, 20], "encod": [1, 5, 16, 17, 22], "end": [11, 12, 14, 21], "endpoint": 9, "energi": 12, "engag": 26, "engin": [0, 1, 16, 17, 22, 24], "entri": 14, "environ": [9, 18, 19, 24], "environment": [8, 10, 12, 14, 17], "era": 12, "era5": [5, 17, 19, 22], "era5t": 8, "estim": [8, 12], "et": [8, 10, 12, 19], "etc": 2, "european": 8, "evalu": [0, 1, 3, 13, 16, 17, 20, 22, 24], "event": [9, 13, 15, 19], "everi": [9, 10, 15], "evolut": 10, "evolv": 15, "exampl": [16, 17, 18], "exist": 19, "expect": 8, "experi": 19, "explicit": 19, "explicitli": 24, "export": [19, 22, 24], "expos": 19, "extend": [1, 3, 21], "extens": [17, 22], "extent": [13, 19], "extern": 5, "extra": [0, 1, 2, 17, 22], "extract": 14, "extractor": 22, "extrem": [8, 12], "ey": [17, 22], "f": 19, "factori": [1, 2], "fake": [17, 22], "fall": [15, 22], "fals": [1, 3, 5, 6, 17, 22], "familiar": [1, 3], "faster": 9, "fatal": 14, "featur": [1, 2, 5, 15, 16, 17, 22, 24], "feature_spec": [0, 1, 2, 16, 17, 22, 24], "featurespec": [0, 1, 2, 16, 17, 22, 24], "feb": 13, "fetch": 19, "field": [8, 10, 11, 12, 15], "fifth": 8, "figur": 19, "file": [9, 10, 13, 19], "final": 8, "find": 7, "fire": [9, 10, 11, 13, 15, 17, 19, 22], "fireecologi": 13, "firm": [15, 19], "first": [16, 17, 18, 24], "fit": [0, 1, 3, 16, 17, 20, 22, 24], "fix": 10, "flag": [6, 9, 19], "float": [1, 3, 4, 5, 17, 22], "flood": [2, 8, 19], "florida": 26, "flow": 19, "flux": [8, 12], "folder": 19, "follow": [7, 8], "forc": [8, 12, 19], "forecast": 8, "forest": [11, 13], "format": [8, 9, 10, 11, 12, 13, 14, 15, 19], "forward": [0, 1, 5], "framework": 17, "frequenc": [8, 9, 10, 11, 12, 13, 14, 15, 19], "from": [9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24], "from_logit": 5, "frp": 9, "fsu": 26, "fuel": [9, 11, 13, 15, 19], "full": [10, 15, 21], "function": [2, 16, 17, 22, 24], "g": [9, 11, 12, 13, 15, 16, 19, 22], "gcn": 22, "gcn_hidden": 5, "ge": 12, "gelaro": [12, 19], "gener": [5, 8, 10, 19], "geo": 12, "geodatabas": 13, "geograph": [9, 15], "geojson": [9, 15], "geolog": 13, "geometri": 15, "geopotenti": [8, 12], "geospati": [11, 15], "geostationari": [10, 19], "geotiff": [11, 13], "get": [16, 22, 24], "get_devic": [1, 6], "get_logg": [1, 6], "get_model_config": [1, 5], "get_split": [0, 1, 2], "gi": 11, "giglio": 9, "github": 17, "given": 22, "global": [8, 9, 12, 19], "gmao": [12, 19], "goe": [15, 19], "goesr": 19, "gov": 14, "gpu": [16, 17, 20], "granul": 10, "graph": 17, "graph_col": [1, 2, 17, 22], "graphtemporaldataset": [1, 2, 17, 22], "grib": 8, "grid": [3, 8, 9, 10, 11, 12, 14, 19, 20], "griffith": 10, "ground": [10, 15, 19], "grow": 13, "growth": 10, "gru": [1, 5], "guid": 24, "gunshor": 10, "h": [5, 8], "handl": [20, 22], "hardwar": [0, 1, 20, 23], "have": 10, "hawaii": [11, 13], "hazard": [0, 1, 8, 9, 10, 11, 12, 14, 16, 17, 19, 24], "head": [0, 1, 16, 17, 22], "heat": 12, "height": [11, 12], "help": 24, "helper": [17, 20, 22, 23, 24], "hemispher": 10, "hersbach": [8, 19], "hidden": [16, 22], "hidden_dim": [1, 5, 16, 22], "high": [8, 10, 19], "highlight": 22, "histor": [8, 13, 14, 15], "hotspot": [9, 15], "hour": 9, "hourli": [8, 9, 12, 19], "how": [16, 19], "howard": 13, "hr": 10, "http": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "humid": 12, "hurrican": [2, 12], "i": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 26], "id": [14, 19], "ident": 22, "identifi": [15, 19], "ignit": [10, 11, 13, 15, 19], "imag": 10, "imageri": [10, 13, 19], "impact": [13, 14, 19], "implement": [2, 3, 17, 19, 24], "import": [16, 17, 19, 20, 21, 22, 24], "in_channel": [1, 5], "in_dim": [1, 5, 16, 17, 20, 22, 24], "incid": [15, 19], "includ": [8, 9, 10, 11, 12, 13, 14, 15], "index": [2, 9, 16, 17, 18], "indic": [9, 10], "individu": 13, "infer": [0, 1, 20], "inform": [9, 14, 15], "infrar": 10, "ingest": 10, "initi": [8, 9], "injuri": 14, "input": [0, 1, 2, 3, 5, 8, 12, 19, 22], "input_dim": [0, 1, 2, 5, 16, 17, 22, 24], "ins": 22, "int": [1, 2, 3, 6, 16, 22], "integr": [9, 10, 11, 13, 14, 15], "interag": [13, 15, 19], "interfac": [1, 5, 17, 21, 24], "intern": [11, 22], "interpret": 10, "inventori": [13, 19], "iou": 21, "irwin": 15, "iso": [14, 19], "iter": [1, 3], "j": [9, 10, 12, 13], "jcli": 12, "journal": [8, 11, 12], "k": 13, "keep": [1, 2, 5, 15, 22], "kei": 19, "km": [9, 10], "kml": 9, "kwarg": [1, 2, 5, 16, 22], "l": 9, "label": [1, 2, 9, 13, 14, 15, 17, 19, 22], "label_spec": [0, 1, 2, 16, 17, 22, 24], "labelspec": [0, 1, 2, 16, 17, 22, 24], "labrai": 17, "lag": 14, "lanc": 9, "land": [8, 9, 12, 14], "landfir": 19, "landsat": [13, 19], "landscap": [11, 19], "landslid": 2, "larg": [3, 20], "last": 15, "lat": [9, 10, 12], "latenc": [8, 9, 10, 11, 12, 14], "later": [8, 9], "latitud": [8, 9, 12], "layer": [8, 11, 13, 15, 16, 19, 22], "learn": [8, 11, 12, 14, 17], "least": 19, "level": [8, 9, 10, 12, 14, 15, 19], "lf": 11, "librari": 17, "lightweight": [1, 3, 5, 22], "like": [17, 22], "limit": 12, "line": 16, "linear": [16, 22], "link": 15, "list": [1, 3], "liter": 3, "load": [0, 1, 2, 16, 17, 19, 24], "load_dataset": [0, 1, 2], "loader": 2, "local": [14, 19], "locat": [9, 14, 15, 19], "log": [17, 23], "logger": 6, "logic": 3, "login": 9, "logit": [5, 17, 22], "lon": [9, 10, 12], "long": [12, 13, 19], "longer": [10, 14], "longitud": [8, 9, 12], "look": 10, "loop": [1, 3, 22], "loss": 5, "loss_fn": [1, 3, 16, 17, 20, 22, 24], "lr": [16, 17, 20, 22, 24], "m": [8, 9, 10, 11, 12, 13, 19], "machin": [8, 11, 12, 17], "mae": 21, "mai": [8, 10, 11, 13, 14, 15], "maintain": [15, 19], "mainten": 26, "make": [1, 2, 9, 19], "mamba": 5, "mamba_lay": 5, "manag": [9, 11, 14, 15, 17, 23], "map": [9, 11, 13], "mask": [1, 5], "match": 18, "materi": 19, "matrix": [17, 22], "max_epoch": [1, 3, 16, 17, 20, 22, 24], "mccarti": 12, "medium": 8, "merg": 19, "merra2": 19, "mesoscal": 10, "metadata": [0, 1, 2, 5, 9, 11, 13, 14, 15], "meteorolog": [8, 9, 10, 11, 12, 14, 15, 19], "meteorologi": [8, 12, 13, 19], "metric": [0, 1, 3, 13, 17, 20, 24], "metricbas": [0, 1, 4, 16, 21], "min": [9, 10, 15], "minim": [1, 3, 19, 22], "minut": [9, 10, 15], "mirror": [10, 19], "mix": [17, 22], "mixed_precis": [1, 3, 16, 17, 20, 22, 24], "mixtur": 8, "mlp": [1, 5, 16, 17, 20, 22, 24], "mlpbackbon": [0, 1, 5], "mm": 19, "mode": 10, "model": [0, 1, 2, 3, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 24], "modern": [8, 12], "modi": [9, 19], "modifi": 15, "modul": [0, 16, 17, 23], "modular": [16, 17], "moistur": 12, "monitor": [9, 10, 13, 19], "month": [8, 9, 12, 14], "monthli": [12, 14], "more": [22, 24], "mosaic": 13, "most": [8, 14], "motion": 10, "mtb": 19, "multi": [1, 5, 12, 16, 17], "multipl": [9, 10, 11, 20], "multispectr": [10, 19], "my_custom_build": 22, "my_hazard": 16, "my_mlp": [16, 22], "my_model_build": 16, "myhazard": 16, "n": 5, "name": [0, 1, 2, 5, 6, 13, 15, 16, 17, 19, 20, 22, 24], "namespac": 2, "narr": 14, "nasa": [9, 12, 19], "nation": [11, 13, 14, 15], "nationwid": [11, 19], "nativ": 8, "natur": [8, 12, 17], "ncdc": 14, "ncei": 14, "need": [3, 19, 21, 22], "neighbor": 22, "netcdf": [8, 10], "netcdf4": 12, "new": [9, 10, 12, 14, 19], "next": [5, 17, 22], "nice": 19, "nifc": 15, "nn": [16, 17, 20, 22, 24], "no_grad": [17, 22], "noaa": [9, 10, 19], "noaa_flood": 19, "none": [1, 2, 3, 4, 5, 6, 17, 22], "normal": [1, 2, 16], "note": 18, "nov": 13, "npp": 9, "nrt": 9, "num_class": [1, 4, 5], "num_counti": [2, 5, 17, 22], "num_devic": [1, 6], "num_featur": [2, 5, 17, 22], "num_lay": [1, 5], "num_target": [0, 1, 2, 16, 17, 22, 24], "num_work": [1, 3], "numer": 12, "nw": 14, "oaicit": 9, "obj": [1, 3], "object": [1, 2, 3, 4], "observ": [8, 9, 10, 11, 12], "obtain": 19, "occasion": 14, "occurr": [9, 14, 15, 19], "off": 15, "offic": [12, 14], "offici": 15, "often": 19, "oliva": 9, "one": [17, 19], "ongo": 15, "onlin": 14, "onward": 13, "open": [10, 15, 19], "opendata": 15, "oper": [9, 10, 12, 15, 19], "optim": [1, 3, 16, 17, 20, 22, 24], "option": [1, 2, 5, 8, 14, 15, 16, 17, 19, 20, 22], "orbit": 9, "org": [8, 9, 10, 11, 12, 13, 18], "other": [19, 23], "otherwis": 20, "our": 26, "out": 17, "out_dim": [1, 5, 16, 17, 20, 22, 24], "outdir": 19, "output": [1, 5, 19, 22], "over": [3, 10, 21, 22], "overpass": 9, "overrid": 5, "overview": 19, "own": [16, 22], "p": [8, 9, 10], "packag": [0, 11], "page": [14, 17, 19], "pair": [14, 19], "paramet": [5, 16, 17, 20, 22, 24], "pars": 19, "particularli": [10, 14], "partner": [13, 14], "pass": [16, 21, 22], "past_dai": [2, 5, 17, 22], "patch": [1, 5, 16, 21, 22], "path": [1, 3], "pattern": [9, 15, 19], "payload": 10, "pdf": 19, "per": [5, 13, 19, 22], "perimet": [13, 15, 19], "period": [8, 12, 13, 14], "physic": 12, "pip": 18, "pipelin": [8, 9, 10, 11, 12, 15, 17, 19], "pixel": 21, "placehold": [2, 3, 20], "plain": 22, "plan": [11, 19, 26], "pleas": [7, 17, 24], "plot": 19, "plu": [1, 2, 9, 22], "point": [9, 10, 14, 15], "polar": 9, "polygon": [13, 15], "popul": [2, 13], "portal": [9, 11, 13, 15], "post": [13, 19], "potenti": 9, "power": [9, 17], "pre": [13, 19], "precipit": [8, 12], "precis": 17, "pred": [1, 4, 20], "predict": [0, 1, 3, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 22], "prefer": [3, 6], "preliminari": 8, "prepar": 19, "preprocess": [2, 16, 19], "present": [8, 12, 13, 14], "pressur": [8, 12, 19], "previou": 11, "primari": [11, 14], "print": [17, 19, 22, 24], "prob": [17, 22], "probabl": [5, 17, 22], "process": [10, 14], "produc": [8, 11, 12, 13, 19], "product": [9, 10, 11, 12, 13, 15], "profil": 12, "program": [10, 11, 13, 19], "progress": 13, "project": [10, 11, 13], "properti": 14, "protocol": 2, "provid": [1, 2, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 22], "prvi": 11, "public": [12, 14], "publicli": [9, 11, 13, 14, 15], "publish": [10, 12, 14], "puerto": 13, "pyhazard": [8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26], "pyhazards2025": 17, "pyhazards_devic": [6, 24], "python": [17, 18, 19, 24], "pytorch": [17, 18, 22], "qj": 8, "qualiti": [9, 26], "quarterli": [8, 13], "quayl": 13, "queri": 14, "quick": 17, "quickli": [19, 24], "qv2m": 19, "r": [12, 19], "radi": 9, "radianc": 10, "radiat": 8, "randint": [16, 17, 22, 24], "randn": [16, 17, 22, 24], "random": 22, "rang": 8, "rapid": [9, 10], "rare": 14, "raster": [1, 3, 5, 10, 11, 13, 17, 20, 22], "rather": 15, "raw": 19, "rdnbr": 13, "re": [19, 22], "readi": [1, 2, 17], "real": [8, 9, 10, 13, 15, 19], "reanalysi": [8, 10, 12, 14, 19], "receiv": 22, "recent": [8, 13, 14], "recommend": [18, 19], "reconcili": 15, "record": [8, 9, 10, 12, 13, 14, 15, 19], "reduc": 11, "refer": 24, "refin": 15, "refresh": [9, 10, 14, 15], "regim": [11, 13, 19], "region": 14, "regist": [2, 16, 17], "register_dataset": [0, 1, 2, 16], "register_model": [0, 1, 5, 16, 22], "registr": [22, 24], "registri": [0, 1, 16, 17, 22], "regress": [1, 2, 5, 16, 17, 22], "regressionhead": [0, 1, 5], "regressionmetr": [0, 1, 4, 21], "regular": [8, 12], "relat": [8, 10, 14, 19], "releas": [8, 11, 13], "relu": [16, 22], "remap": 10, "remot": [9, 11, 13], "remov": 15, "replac": [1, 3, 9, 17, 22], "repo": 19, "report": [14, 15, 19], "repres": 15, "represent": [9, 10, 11, 13, 14, 15], "request": 8, "requir": [9, 19], "research": [12, 17, 26], "reset": [0, 1, 4, 16, 21], "resolut": [8, 9, 10, 11, 12, 13, 14, 15], "resourc": [9, 11], "respect": 6, "respons": 26, "rest": 15, "result": [16, 17, 20, 24], "retain": 15, "retrospect": 12, "return": [1, 2, 3, 4, 5, 6, 16, 17, 22, 24], "reusabl": [2, 16, 22], "review": 26, "rico": 13, "risk": [8, 11, 17, 19], "rmse": 21, "role": [8, 10, 11, 12, 13, 14, 15], "rollin": 11, "root": 19, "rout": [9, 10], "royal": 8, "rse": 9, "rule": 15, "run": [19, 20], "same": 19, "sampl": [2, 17, 22], "satellit": [9, 10, 12, 15], "save": [19, 20], "save_checkpoint": [0, 1, 3], "scalar": [1, 5], "scale": [11, 13], "scan": 10, "scene": 19, "schmit": 10, "schroeder": [9, 19], "schwind": 13, "scienc": 9, "search": 17, "season": 13, "sector": 10, "see": [10, 19], "seed": [6, 17, 23], "seed_al": [1, 6], "segment": [1, 5, 16, 17, 22], "segmentationhead": [0, 1, 5], "segmentationmetr": [0, 1, 4, 21], "select": [19, 20, 22], "select_strategi": [1, 3], "self": [16, 17, 24], "sens": [9, 11, 13], "sensibl": 20, "sensor": 9, "sequenti": [16, 22], "seri": [1, 5, 10, 19, 22], "serv": [8, 19], "servic": [8, 9, 10, 11, 12, 13, 14, 15], "set": [5, 8, 12, 15, 19, 24], "set_adjac": [1, 5], "set_devic": [1, 6, 24], "sever": [13, 14, 19], "sfc": 19, "shape": [1, 2, 5, 17, 19, 22], "shapefil": [9, 13, 15], "ship": 22, "shot": 19, "should": [1, 2, 19], "show": 16, "shp": 9, "shuffl": [1, 3], "sigmoid": [5, 17, 22], "signal": [1, 5], "simpl": [1, 2, 5, 16, 17], "simul": 11, "singl": [1, 2, 8, 19, 20], "situat": [9, 10], "size": 15, "skin": 12, "skip": 19, "slide": [3, 20], "slidingwindowinfer": [1, 3], "slowli": 11, "smoke": [10, 19], "smooth": 5, "so": [16, 22], "societi": [8, 10], "softwar": 17, "soil": 12, "some": [9, 10, 11], "soon": 10, "sourc": [1, 2, 3, 4, 5, 6, 14, 15], "space": 22, "spatial": [5, 8, 9, 10, 11, 12, 13, 14, 15, 22], "spatio": 5, "spatiotempor": [8, 9, 12], "spec": [1, 2, 17], "specif": [1, 2, 9, 19, 22], "spectral": [10, 13], "split": [0, 1, 2, 3, 16, 17, 20, 21, 22, 24], "spread": 11, "ssm": 22, "ssr": 22, "stack": [2, 22], "stale": 15, "stamp": 9, "standard": [5, 8, 9, 12, 13], "start": [14, 17], "state": [8, 11, 12, 13, 14, 15, 22, 26], "state_dim": 5, "static": [5, 11, 19], "statist": 19, "statu": [15, 19], "stitch": 3, "store": [8, 22], "storm": [14, 19], "str": [1, 2, 3, 4, 5, 16, 22], "strateg": 26, "strategi": [1, 3, 11, 20], "stream": [9, 12], "strictli": 13, "structur": [8, 9, 10, 11, 12, 13, 14, 15, 19], "studi": [8, 12, 13, 14, 15, 19], "style": [2, 5, 12, 17, 22], "subclass": [1, 2, 16], "submodul": [0, 1], "subpackag": 0, "subprocess": 19, "subscript": 10, "suit": 11, "suitabl": 13, "summar": 19, "suomi": 9, "supervis": [9, 14], "support": [11, 13, 16, 17, 19, 20, 26], "surfac": [8, 9, 10, 12, 19], "survei": 13, "su\u00e1rez": 12, "switch": 22, "system": [8, 9, 10, 11, 12, 13, 15], "t": 10, "t2m": [19, 22], "tabl": 19, "tabular": [1, 5, 14, 17, 22], "take": 15, "target": [0, 1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, 21, 22], "task": [1, 2, 5, 8, 16, 17, 20, 21, 22, 24], "task_typ": [0, 1, 2, 16, 17, 22, 24], "technic": 26, "temperatur": [8, 10, 12], "tempor": [2, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16], "temporalencod": [0, 1, 5], "tensor": [1, 2, 3, 5, 9, 14, 17, 22], "term": [12, 13, 19], "terra": 9, "test": [1, 2, 3, 16, 17, 20, 24], "than": 15, "thei": 10, "them": [2, 16, 22], "themat": 11, "thermal": [9, 10, 19], "thi": [1, 5, 8, 14, 16, 22, 24], "through": [9, 10, 13, 14, 15], "time": [1, 5, 8, 9, 10, 12, 13, 14, 15, 19, 22], "timestamp": [14, 15], "titl": 17, "todai": 8, "toi": 22, "tool": 11, "topographi": 13, "torch": [16, 17, 18, 20, 22, 24], "toyhazard": [17, 24], "tp": 22, "train": [1, 2, 3, 13, 17, 20, 22, 24], "train_d": 17, "train_split": [1, 3], "trainer": [0, 1, 16, 17, 20, 21, 22, 24], "transform": [0, 1, 17], "transit": 11, "treat": 15, "trend": [8, 12, 13], "true": [1, 2, 3, 5, 16, 17, 19, 20, 22, 24], "truth": [10, 15, 19], "tverski": 5, "tverskyloss": [1, 5], "two": [16, 22], "type": [1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 22], "u": [9, 11, 13, 15, 19], "u10": 22, "under": [8, 19], "unifi": 17, "uniqu": 15, "unit": [11, 13, 14, 15], "univers": 26, "up": [14, 15], "updat": [0, 1, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21], "url": [17, 18], "us": [5, 7, 16, 17, 18, 19, 20, 22, 24], "usag": [17, 22], "usda": 13, "user": [16, 19], "usf": 19, "usg": 13, "util": [0, 1, 17, 19, 20, 24], "v": 15, "v10": 22, "val": [1, 2, 16, 17, 22, 24], "val_d": 17, "val_split": [1, 3], "valid": [8, 13, 14, 15, 19], "var": 19, "vari": [10, 11, 15], "variabl": [19, 24], "vast": 8, "vector": [9, 13, 15], "veget": [11, 19], "veri": 14, "version": [11, 12], "vertic": [8, 12], "via": [8, 11, 12, 14, 16, 17, 19, 20, 22], "view": 10, "viir": [9, 19], "visibl": 10, "visual": 19, "w": [5, 9, 12], "want": 19, "we": 18, "weather": [8, 10, 12, 14], "web": [9, 14], "week": 12, "western": 10, "wf08088": 11, "wfig": 19, "wgs84": [9, 15], "what": 19, "wheel": 18, "when": [9, 14, 19, 20], "where": [10, 14], "which": [10, 14], "whl": 18, "who": 26, "wide": [8, 9, 10, 11, 12, 13, 14, 15, 19], "wildfir": [2, 5, 8, 9, 10, 11, 12, 13, 15, 19], "wildfire_aspp_build": [1, 5], "wildfire_mamba": [17, 22], "wildfire_mamba_build": [1, 5], "wildfireaspp": [1, 5], "wildfirecnnaspp": [1, 5], "wildfiremamba": [1, 5], "wildland": [11, 15], "wind": [8, 12], "window": [2, 3, 16, 17, 20], "window_fn": 3, "with_count_head": [5, 22], "within": [9, 14], "work": [1, 3, 7, 15, 19, 22], "workflow": [10, 12, 13, 19], "wrap": [20, 22], "www": 14, "wxc": 12, "x": [1, 2, 5, 16, 17, 22, 24], "xc25": 26, "xueqi": [17, 26], "y": [2, 16, 17, 22, 24], "year": [11, 13, 15, 17], "yearli": 11, "yet": 14, "you": [7, 8, 17, 19, 22, 24], "your": [16, 17, 22], "your_password": 19, "your_usernam": 19, "yushun": 26, "yyyi": [11, 19], "yyyymmdd": 19, "z": 13, "zhu": 13, "zone": 14}, "titles": ["pyhazards", "pyhazards package", "pyhazards.datasets package", "pyhazards.engine package", "pyhazards.metrics package", "pyhazards.models package", "pyhazards.utils package", "How to Cite", "ERA5", "FIRMS", "GOES-R", "LANDFIRE", "MERRA-2", "MTBS", "NOAA Flood Events", "WFIGS", "Implementation Guide", "Wildfire Mamba (spatio-temporal toy)", "Installation", "Datasets", "Engine", "Metrics", "Models", "Utils", "Quick Start", "References", "Core Team"], "titleterms": {"2": [12, 19], "At": [8, 9, 10, 11, 12, 13, 14, 15], "academ": 25, "access": [8, 9, 10, 11, 12, 13, 14, 15], "all": 19, "backbon": 5, "base": [2, 22], "basic": 24, "build": 22, "builder": 5, "built": 22, "case": [8, 9, 10, 11, 12, 13, 14, 15], "characterist": [8, 9, 10, 11, 12, 13, 14, 15], "cite": [7, 17], "class": 21, "classif": 24, "common": 6, "compon": 17, "content": [1, 2, 3, 5, 6], "contributor": 26, "convent": 19, "core": [17, 20, 21, 22, 26], "custom": 22, "data": [8, 9, 10, 11, 12, 13, 14, 15], "dataset": [2, 16, 19], "design": 22, "develop": [19, 26], "devic": 20, "distribut": [3, 20], "engin": [3, 20], "entrypoint": 19, "era5": 8, "event": 14, "exampl": [19, 24], "fact": [8, 9, 10, 11, 12, 13, 14, 15], "firm": 9, "flood": 14, "glanc": [8, 9, 10, 11, 12, 13, 14, 15], "goe": 10, "gpu": 24, "guid": 16, "hardwar": 6, "hazard": 2, "head": 5, "how": [7, 17], "implement": 16, "indic": 17, "infer": 3, "inspect": 19, "instal": 18, "landfir": 11, "lead": 26, "maintain": 26, "mamba": [17, 22], "merra": [12, 19], "metric": [4, 16, 21], "model": [5, 16, 22], "modul": [1, 2, 3, 5, 6, 20, 22], "mtb": 13, "next": 24, "noaa": 14, "note": [19, 22], "overview": [8, 9, 10, 11, 12, 13, 14, 15], "packag": [1, 2, 3, 4, 5, 6], "princip": 26, "public": 25, "pyhazard": [0, 1, 2, 3, 4, 5, 6, 18], "quick": [8, 9, 10, 11, 12, 13, 14, 15, 24], "r": 10, "refer": [8, 9, 10, 11, 12, 13, 14, 15, 25], "regist": 22, "registri": [2, 5], "requir": 18, "skeleton": 19, "spatio": [17, 22], "start": 24, "stat": [8, 9, 10, 11, 12, 13, 14, 15], "step": 24, "submodul": [2, 3, 5, 6, 23], "subpackag": 1, "summari": [19, 20, 21, 22, 23], "support": 24, "tabl": 17, "tabular": 24, "team": 26, "tempor": [17, 22], "toi": [17, 24], "train": 16, "trainer": 3, "transform": [2, 16], "typic": [8, 9, 10, 11, 12, 13, 14, 15, 20], "us": [8, 9, 10, 11, 12, 13, 14, 15], "usag": [20, 21, 24], "util": [6, 23], "variabl": [8, 9, 10, 11, 12, 13, 14, 15], "wfig": 15, "wildfir": [17, 22]}}) \ No newline at end of file