Instructions to use OneScience-Group/Antibody_deep_learning with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- TF-Keras
How to use OneScience-Group/Antibody_deep_learning with TF-Keras:
# Note: 'keras<3.x' or 'tf_keras' must be installed (legacy) # See https://github.com/keras-team/tf-keras for more details. from huggingface_hub import from_pretrained_keras model = from_pretrained_keras("OneScience-Group/Antibody_deep_learning") - Notebooks
- Google Colab
- Kaggle
| args <- commandArgs(trailingOnly = FALSE) | |
| script_arg <- grep("^--file=", args, value = TRUE) | |
| if (length(script_arg) > 0) { | |
| script_path <- normalizePath(sub("^--file=", "", script_arg[1])) | |
| setwd(normalizePath(file.path(dirname(script_path), ".."))) | |
| } | |
| library(caret) | |
| pep_mat_local <- function(pep) { | |
| do.call(rbind, strsplit(as.character(pep), split = "")) | |
| } | |
| one_hot <- function(y, num_classes = 2) { | |
| y <- as.integer(as.character(y)) | |
| out <- matrix(0, nrow = length(y), ncol = num_classes) | |
| out[cbind(seq_along(y), y + 1)] <- 1 | |
| out | |
| } | |
| load("model/BLOSUM62_with_deletion.Rdata") | |
| pep_encode_blosum <- function(pep) { | |
| bl62_prob <- BLOSUM62 | |
| p_mat <- pep_mat_local(pep) | |
| n_peps <- length(pep) | |
| l_peps <- nchar(pep[1]) | |
| l_enc <- ncol(bl62_prob) | |
| o_tensor <- array(data = NA, dim = c(n_peps, l_peps, l_enc)) | |
| for (i in 1:n_peps) { | |
| pep_i_residues <- p_mat[i, ] | |
| pep_img <- bl62_prob[pep_i_residues, ] | |
| o_tensor[i, , ] <- pep_img | |
| } | |
| o_tensor | |
| } | |
| all <- read.delim("model/CNN/all_ab_pre_post.txt", sep = "\t", header = TRUE, stringsAsFactors = FALSE) | |
| set.seed(42) | |
| all <- all[sample(nrow(all)), ] | |
| max_k <- max(nchar(all$CDR3K)) | |
| max_h <- max(nchar(all$CDR3H)) | |
| all$paddedh <- gsub("\\s", "-", format(all$CDR3H, width = max_h)) | |
| all$paddedk <- gsub("\\s", "-", format(all$CDR3K, width = max_k)) | |
| all$lengthh <- nchar(all$CDR3H) | |
| all$lengthk <- nchar(all$CDR3K) | |
| all$padded <- paste0(all$paddedk, all$paddedh) | |
| all <- all[order(all$padded, -all$post), ] | |
| all2 <- all[!duplicated(all$padded), ] | |
| all2$enriched <- ifelse((all2$fc >= 1.8 & all2$post >= 0.01), 1, | |
| ifelse(all2$fc < 1 & all2$pre >= 0.01, 0, "ambi")) | |
| all2 <- all2[all2$enriched != "ambi", ] | |
| all2$enriched <- as.integer(all2$enriched) | |
| split_train_test <- function(antigenx) { | |
| mini <- all2[all2$antigen == antigenx, ] | |
| set.seed(22) | |
| trainIndex <- createDataPartition(mini$enriched, p = .8, list = FALSE, times = 1) | |
| list(train = mini[trainIndex, ], test = mini[-trainIndex, ]) | |
| } | |
| c1 <- split_train_test("CTLA-4") | |
| p1 <- split_train_test("PD-1") | |
| saveRDS(c1, file = "model/CNN/c1.RDS") | |
| saveRDS(p1, file = "model/CNN/p1.RDS") | |
| c1_train <- pep_encode_blosum(c1$train$padded) | |
| c1_test <- pep_encode_blosum(c1$test$padded) | |
| p1_train <- pep_encode_blosum(p1$train$padded) | |
| p1_test <- pep_encode_blosum(p1$test$padded) | |
| c1_train <- array(c1_train, dim = c(dim(c1_train), 1)) | |
| c1_test <- array(c1_test, dim = c(dim(c1_test), 1)) | |
| p1_train <- array(p1_train, dim = c(dim(p1_train), 1)) | |
| p1_test <- array(p1_test, dim = c(dim(p1_test), 1)) | |
| c1_train_y <- one_hot(c1$train$enriched) | |
| c1_test_y <- one_hot(c1$test$enriched) | |
| p1_train_y <- one_hot(p1$train$enriched) | |
| p1_test_y <- one_hot(p1$test$enriched) | |
| saveRDS(p1_train, file = "model/CNN/p1_train.RDS") | |
| saveRDS(p1_test, file = "model/CNN/p1_test.RDS") | |
| saveRDS(p1_train_y, file = "model/CNN/p1_train_y.RDS") | |
| saveRDS(p1_test_y, file = "model/CNN/p1_test_y.RDS") | |
| saveRDS(c1_train, file = "model/CNN/c1_train.RDS") | |
| saveRDS(c1_test, file = "model/CNN/c1_test.RDS") | |
| saveRDS(c1_train_y, file = "model/CNN/c1_train_y.RDS") | |
| saveRDS(c1_test_y, file = "model/CNN/c1_test_y.RDS") | |
| seq_all <- readRDS("model/GAN/seq_all.RDS") | |
| encoded <- vector("list", 15) | |
| names(encoded) <- names(seq_all) | |
| for (i in 1:15) { | |
| seq_encoded <- pep_encode_blosum(seq_all[[i]]) | |
| encoded[[i]] <- array(seq_encoded, dim = c(dim(seq_encoded), 1)) | |
| } | |
| saveRDS(encoded, file = "model/GAN/seq_all_encoded.RDS") | |
| print("prepare data OK") | |
| print(dim(c1_train)) | |
| print(dim(p1_train)) | |
| print(names(encoded)) | |