

import time, datetime, glob, os, re, sys, random,  pickle as pickle, collections, itertools 
import pandas as pd, numpy as np, scipy, sklearn
from sklearn import metrics
from sklearn import preprocessing
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import train_test_split
import IPython.display
import matplotlib.pylab as plt
import torch
from IPython.display import clear_output
from functools import reduce

####
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import DataLoader, Dataset, Sampler, ConcatDataset
from torch.nn import init
import torch.optim as optim
seed = 3
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False


####

os.environ["CUDA_VISIBLE_DEVICES"]="0" 

import warnings
warnings.filterwarnings(action='ignore', category=FutureWarning)


ROOT_DIR = "/home/pate/"



class Classifier(nn.Module):

    def __init__(self, num_input_feat):
        super().__init__()
        self.fc1 = nn.Linear(num_input_feat, 12, bias=True)
        self.fc2 = nn.Linear(12, 1)
    
    def forward(self, x):
        x = F.relu(self.fc1(x))
        #x = F.dropout(x, training=self.training)
        x = self.fc2(x)
        return x

    def predict_proba(self, x):
        logit = self.model(x)
        prob = torch.sigmoid(logit)
        return prob.data.numpy()

  
