Source code for TSARL.process

import os
import torch
import pickle
import random
import numpy as np
from joblib import dump,load
from .tsarp import CnnGru


[docs]def seed_torch(seed): random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) # if you are using multi-GPU. torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True
[docs]def oneHot(stringInput): matrix = np.zeros((4, len(stringInput))) seq = stringInput.upper() for pos in range(len(seq)): if seq[pos] == 'A': matrix[0, pos] = 1 elif seq[pos] == 'C': matrix[1, pos] = 1 elif seq[pos] == 'G': matrix[2, pos] = 1 elif seq[pos] == 'T': matrix[3, pos] = 1 else: continue return matrix
[docs]def predict(stringInput): seed_torch(seed=12) model = CnnGru(256, 128) data = torch.Tensor(oneHot(stringInput)) data = torch.unsqueeze(data, 0) model.load_state_dict(torch.load('TSARL/regression.h5', map_location='cpu')) model.eval() with torch.no_grad(): target = model(data).squeeze(1) target = target.numpy() scaler = load('TSARL/scaler.pkl') target = scaler.inverse_transform(target) target = str(int(target[0])) out = f'Have a TSAR signal, {target} bp from the first base of input sequence' return out