import os import json import numpy as np from tqdm import tqdm from pathlib import Path from datetime import datetime import matplotlib.pyplot as plt from collections import defaultdict import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.amp import autocast, GradScaler from torch.utils.data import DataLoader, WeightedRandomSampler, Subset from torch.optim.lr_scheduler import CosineAnnealingLR, SequentialLR, LinearLR from scipy.stats import pearsonr from sklearn.metrics import ( mean_squared_error, mean_absolute_error, r2_score, average_precision_score, roc_auc_score, f1_score, precision_score, recall_score, matthews_corrcoef, accuracy_score ) from ..loss import CLoss from .constants import DISK_DIR, BASE_DIR from ..data.data import create_data_loader from ..model.ReGEP import ReGEP from ..model.scheduler import get_scheduler torch.set_num_threads(12) class Evaluator: def __init__(self, args): self.device = torch.device(f"cuda:{args.device_id}" if torch.cuda.is_available() else "cpu") self.model = ReGEP.load(args.model_path, device=self.device, strict=False) self.model.eval()