"""
Imports for CORE registration

This module provides a convenient way to import all commonly used 
CORE components in one import statement.
"""

# Core libraries
import cv2
import numpy as np
import pandas as pd
import os
import sys
import datetime
import builtins
from matplotlib.gridspec import GridSpec
from matplotlib import pyplot as plt
import scipy.ndimage
from scipy.interpolate import Rbf, RBFInterpolator, griddata
from scipy.ndimage import gaussian_filter, map_coordinates

# Image processing and registration
from skimage.registration import phase_cross_correlation
from skimage import transform, color
from PIL import Image
import SimpleITK as sitk

# Machine learning and point cloud processing
import torch
try:
    import open3d as o3d
    HAS_OPEN3D = True
except ImportError:
    o3d = None
    HAS_OPEN3D = False
from sklearn.neighbors import NearestNeighbors
from pycpd import DeformableRegistration

# TIA Toolbox
import tiatoolbox
from tiatoolbox.wsicore.wsireader import WSIReader
try:
    from tiatoolbox.wsicore.wsireader import TransformedWSIReader
except ImportError:
    TransformedWSIReader = None
from tiatoolbox.tools import patchextraction
from tiatoolbox.tools.registration.wsi_registration import AffineWSITransformer

# Bokeh for interactive visualization
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool, ColorBar, Title, Legend
from bokeh.transform import linear_cmap
from bokeh.palettes import Viridis256, Inferno256
from bokeh.io import output_notebook

# CORE modules  
from core import preprocessing
from core import evaluation
from core import registration
from core import utils
from core import config
from core.preprocessing import padding
