Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-f https://download.pytorch.org/whl/cpu/torch-1.6.0%2Bcpu-cp37-cp37m-linux_x86_64.whl
torch>=1.5
pytorch-ignite==0.4.4
pytorch-ignite==0.4.5
numpy>=1.17
itk>=5.0, <=5.1.2
nibabel
Expand Down
8 changes: 4 additions & 4 deletions monai/apps/pathology/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@

import numpy as np

from monai.config import DtypeLike
from monai.utils import exact_version, optional_import
from monai.config import DtypeLike, IgniteInfo
from monai.utils import min_version, optional_import

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class ProbMapProducer:
Expand Down
1 change: 1 addition & 0 deletions monai/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

from .deviceconfig import (
USE_COMPILED,
IgniteInfo,
get_gpu_info,
get_system_info,
print_config,
Expand Down
10 changes: 10 additions & 0 deletions monai/config/deviceconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"print_gpu_info",
"print_debug_info",
"USE_COMPILED",
"IgniteInfo",
]


Expand Down Expand Up @@ -252,5 +253,14 @@ def print_debug_info(file=sys.stdout) -> None:
print_gpu_info(file)


class IgniteInfo:
"""
Config information of the PyTorch ignite package.

"""

OPT_IMPORT_VERSION = "0.4.4"


if __name__ == "__main__":
print_debug_info()
9 changes: 5 additions & 4 deletions monai/engines/evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,22 @@
import torch
from torch.utils.data import DataLoader

from monai.config import IgniteInfo
from monai.engines.utils import IterationEvents, default_prepare_batch
from monai.engines.workflow import Workflow
from monai.inferers import Inferer, SimpleInferer
from monai.networks.utils import eval_mode, train_mode
from monai.transforms import Transform
from monai.utils import ForwardMode, ensure_tuple, exact_version, optional_import
from monai.utils import ForwardMode, ensure_tuple, min_version, optional_import
from monai.utils.enums import CommonKeys as Keys

if TYPE_CHECKING:
from ignite.engine import Engine, EventEnum
from ignite.metrics import Metric
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Metric, _ = optional_import("ignite.metrics", "0.4.4", exact_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", "0.4.4", exact_version, "EventEnum")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum")

__all__ = ["Evaluator", "SupervisedEvaluator", "EnsembleEvaluator"]

Expand Down
19 changes: 12 additions & 7 deletions monai/engines/multi_gpu_supervised_trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,23 @@
from torch.nn.parallel import DataParallel, DistributedDataParallel
from torch.optim.optimizer import Optimizer

from monai.config import IgniteInfo
from monai.engines.utils import get_devices_spec
from monai.utils import exact_version, optional_import

create_supervised_trainer, _ = optional_import("ignite.engine", "0.4.4", exact_version, "create_supervised_trainer")
create_supervised_evaluator, _ = optional_import("ignite.engine", "0.4.4", exact_version, "create_supervised_evaluator")
_prepare_batch, _ = optional_import("ignite.engine", "0.4.4", exact_version, "_prepare_batch")
from monai.utils import min_version, optional_import

create_supervised_trainer, _ = optional_import(
"ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "create_supervised_trainer"
)
create_supervised_evaluator, _ = optional_import(
"ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "create_supervised_evaluator"
)
_prepare_batch, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "_prepare_batch")
if TYPE_CHECKING:
from ignite.engine import Engine
from ignite.metrics import Metric
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Metric, _ = optional_import("ignite.metrics", "0.4.4", exact_version, "Metric")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")

__all__ = [
"create_multigpu_supervised_trainer",
Expand Down
9 changes: 5 additions & 4 deletions monai/engines/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,21 @@
from torch.optim.optimizer import Optimizer
from torch.utils.data import DataLoader

from monai.config import IgniteInfo
from monai.engines.utils import GanKeys, IterationEvents, default_make_latent, default_prepare_batch
from monai.engines.workflow import Workflow
from monai.inferers import Inferer, SimpleInferer
from monai.transforms import Transform
from monai.utils import exact_version, optional_import
from monai.utils import min_version, optional_import
from monai.utils.enums import CommonKeys as Keys

if TYPE_CHECKING:
from ignite.engine import Engine, EventEnum
from ignite.metrics import Metric
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Metric, _ = optional_import("ignite.metrics", "0.4.4", exact_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", "0.4.4", exact_version, "EventEnum")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum")

__all__ = ["Trainer", "SupervisedTrainer", "GanTrainer"]

Expand Down
5 changes: 3 additions & 2 deletions monai/engines/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@

import torch

from monai.config import IgniteInfo
from monai.transforms import apply_transform
from monai.utils import exact_version, optional_import
from monai.utils import min_version, optional_import
from monai.utils.enums import CommonKeys

if TYPE_CHECKING:
from ignite.engine import EventEnum
else:
EventEnum, _ = optional_import("ignite.engine", "0.4.4", exact_version, "EventEnum")
EventEnum, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum")

__all__ = [
"IterationEvents",
Expand Down
15 changes: 8 additions & 7 deletions monai/engines/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,23 @@
from torch.utils.data import DataLoader
from torch.utils.data.distributed import DistributedSampler

from monai.config import IgniteInfo
from monai.engines.utils import IterationEvents, default_prepare_batch
from monai.utils import ensure_tuple, exact_version, optional_import
from monai.utils import ensure_tuple, min_version, optional_import

from .utils import engine_apply_transform

IgniteEngine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
State, _ = optional_import("ignite.engine", "0.4.4", exact_version, "State")
Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
IgniteEngine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
State, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "State")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")

if TYPE_CHECKING:
from ignite.engine import Engine, EventEnum
from ignite.metrics import Metric
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Metric, _ = optional_import("ignite.metrics", "0.4.4", exact_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", "0.4.4", exact_version, "EventEnum")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")
EventEnum, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum")


class Workflow(IgniteEngine): # type: ignore[valid-type, misc] # due to optional_import
Expand Down
9 changes: 5 additions & 4 deletions monai/handlers/checkpoint_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@

import torch

from monai.config import IgniteInfo
from monai.networks.utils import copy_model_state
from monai.utils import exact_version, optional_import
from monai.utils import min_version, optional_import

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Checkpoint, _ = optional_import("ignite.handlers", "0.4.4", exact_version, "Checkpoint")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
Checkpoint, _ = optional_import("ignite.handlers", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Checkpoint")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class CheckpointLoader:
Expand Down
11 changes: 6 additions & 5 deletions monai/handlers/checkpoint_saver.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
import warnings
from typing import TYPE_CHECKING, Dict, Optional

from monai.utils import exact_version, optional_import
from monai.config import IgniteInfo
from monai.utils import min_version, optional_import

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Checkpoint, _ = optional_import("ignite.handlers", "0.4.4", exact_version, "Checkpoint")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
Checkpoint, _ = optional_import("ignite.handlers", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Checkpoint")

if TYPE_CHECKING:
from ignite.engine import Engine
from ignite.handlers import DiskSaver
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
DiskSaver, _ = optional_import("ignite.handlers", "0.4.4", exact_version, "DiskSaver")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
DiskSaver, _ = optional_import("ignite.handlers", IgniteInfo.OPT_IMPORT_VERSION, min_version, "DiskSaver")


class CheckpointSaver:
Expand Down
9 changes: 5 additions & 4 deletions monai/handlers/classification_saver.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,23 @@

import torch

from monai.config import IgniteInfo
from monai.data import CSVSaver
from monai.utils import ImageMetaKey as Key
from monai.utils import (
evenly_divisible_all_gather,
exact_version,
issequenceiterable,
min_version,
optional_import,
string_list_all_gather,
)

idist, _ = optional_import("ignite", "0.4.4", exact_version, "distributed")
Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
idist, _ = optional_import("ignite", IgniteInfo.OPT_IMPORT_VERSION, min_version, "distributed")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class ClassificationSaver:
Expand Down
9 changes: 5 additions & 4 deletions monai/handlers/earlystop_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@

from typing import TYPE_CHECKING, Callable, Optional

from monai.utils import exact_version, optional_import
from monai.config import IgniteInfo
from monai.utils import min_version, optional_import

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
EarlyStopping, _ = optional_import("ignite.handlers", "0.4.4", exact_version, "EarlyStopping")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
EarlyStopping, _ = optional_import("ignite.handlers", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EarlyStopping")

if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class EarlyStopHandler:
Expand Down
7 changes: 4 additions & 3 deletions monai/handlers/garbage_collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@
import gc
from typing import TYPE_CHECKING

from monai.utils import exact_version, optional_import
from monai.config import IgniteInfo
from monai.utils import min_version, optional_import

if TYPE_CHECKING:
from ignite.engine import Engine, Events
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")


class GarbageCollector:
Expand Down
13 changes: 8 additions & 5 deletions monai/handlers/ignite_metric.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,19 @@

import torch

from monai.config import IgniteInfo
from monai.metrics import CumulativeIterationMetric
from monai.utils import exact_version, optional_import
from monai.utils import min_version, optional_import

idist, _ = optional_import("ignite", "0.4.4", exact_version, "distributed")
Metric, _ = optional_import("ignite.metrics", "0.4.4", exact_version, "Metric")
reinit__is_reduced, _ = optional_import("ignite.metrics.metric", "0.4.4", exact_version, "reinit__is_reduced")
idist, _ = optional_import("ignite", IgniteInfo.OPT_IMPORT_VERSION, min_version, "distributed")
Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")
reinit__is_reduced, _ = optional_import(
"ignite.metrics.metric", IgniteInfo.OPT_IMPORT_VERSION, min_version, "reinit__is_reduced"
)
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class IgniteMetric(Metric): # type: ignore[valid-type, misc] # due to optional_import
Expand Down
7 changes: 4 additions & 3 deletions monai/handlers/lr_schedule_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@

from torch.optim.lr_scheduler import ReduceLROnPlateau, _LRScheduler

from monai.utils import ensure_tuple, exact_version, optional_import
from monai.config import IgniteInfo
from monai.utils import ensure_tuple, min_version, optional_import

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class LrScheduleHandler:
Expand Down
7 changes: 4 additions & 3 deletions monai/handlers/metric_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@
from threading import RLock
from typing import TYPE_CHECKING, Callable, DefaultDict, List, Optional

from monai.utils import exact_version, optional_import
from monai.config import IgniteInfo
from monai.utils import min_version, optional_import
from monai.utils.enums import CommonKeys

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


def _get_loss_from_output(output, loss_key: str = CommonKeys.LOSS):
Expand Down
9 changes: 5 additions & 4 deletions monai/handlers/metrics_saver.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,17 @@

from typing import TYPE_CHECKING, Callable, List, Optional, Sequence, Union

from monai.config import IgniteInfo
from monai.handlers.utils import write_metrics_reports
from monai.utils import ImageMetaKey as Key
from monai.utils import ensure_tuple, exact_version, issequenceiterable, optional_import, string_list_all_gather
from monai.utils import ensure_tuple, issequenceiterable, min_version, optional_import, string_list_all_gather

Events, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Events")
idist, _ = optional_import("ignite", "0.4.4", exact_version, "distributed")
Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
idist, _ = optional_import("ignite", IgniteInfo.OPT_IMPORT_VERSION, min_version, "distributed")
if TYPE_CHECKING:
from ignite.engine import Engine
else:
Engine, _ = optional_import("ignite.engine", "0.4.4", exact_version, "Engine")
Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")


class MetricsSaver:
Expand Down
Loading