{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"<h3>What we do here:</h3>\n<div style=\"line-height:24px; font-size:16px\">\n    <ul style=\"list-style:circle\">\n<li>Convert protein sequence embeddings from .npy to readable with R .qs format (quick serialization of R objects)\n    </ul>\n    Source files - embeddings calculated for proteins of <a href= \"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction\">CAFA 5 Protein Function Prediction competition</a> - are available in the input tab. Thanks to authors for sharing!<br>\n    <a href= \"https://github.com/traversc/qs\">qs package</a>\n</div>\n<hr>","metadata":{}},{"cell_type":"code","source":"library(data.table)\nlibrary(reticulate)\nlibrary(qs)\nnp <- import(\"numpy\")","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:07:52.929926Z","iopub.execute_input":"2023-08-23T20:07:52.93296Z","iopub.status.idle":"2023-08-23T20:07:59.456519Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"All public embeddings are in the standard .npy binary file format; values and protein ids are stored separately. For direct access to the NumPy module for Python, we can use the reticulate package (see the [vignette](https://cran.r-project.org/web/packages/RcppCNPy/vignettes/UsingReticulate.pdf)). Then we combine values and ids into one data.table for easy use. The qs:qsave() function serializes and compresses R objects using block compression, resulting in smaller file sizes.","metadata":{}},{"cell_type":"markdown","source":"# <p style=\"background-color:#2D735F;font-family:Verdana;color:white;font-size:80%;text-align:left;border-radius: 15px;padding:10px 15px\"> - T5 embeddings</p>","metadata":{}},{"cell_type":"markdown","source":"Link to dataset: https://www.kaggle.com/datasets/sergeifironov/t5embeds/versions/4","metadata":{}},{"cell_type":"markdown","source":"**Train data**","metadata":{}},{"cell_type":"code","source":"train_ids <- np$load(\"/kaggle/input/t5embeds/train_ids.npy\")\ntrain_embeds <- np$load(\"/kaggle/input/t5embeds/train_embeds.npy\")\n\ntrain_features <- data.table(EntryID = train_ids)\n\ncols <- paste0(\"f\", 1:ncol(train_embeds))\ntrain_features[, (cols) := as.data.table(train_embeds)]\n\nhead(train_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:22:44.075748Z","iopub.execute_input":"2023-08-23T20:22:44.078813Z","iopub.status.idle":"2023-08-23T20:23:14.461412Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Test data**","metadata":{}},{"cell_type":"code","source":"test_ids <- np$load(\"/kaggle/input/t5embeds/test_ids.npy\")\ntest_embeds <- np$load(\"/kaggle/input/t5embeds/test_embeds.npy\")\n\ntest_features <- data.table(EntryID = test_ids)\n\ncols <- paste0(\"f\", 1:ncol(test_embeds))\ntest_features[, (cols) := as.data.table(test_embeds)]\n\nhead(test_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:23:23.171936Z","iopub.execute_input":"2023-08-23T20:23:23.17498Z","iopub.status.idle":"2023-08-23T20:23:52.601413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Save as data.tables**","metadata":{}},{"cell_type":"code","source":"qsave(train_features, \"T5_train_features.qs\")\nqsave(test_features, \"T5_test_features.qs\")\nrm(train_features, test_features, train_embeds, test_embeds)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:09:42.05884Z","iopub.execute_input":"2023-08-23T20:09:42.061114Z","iopub.status.idle":"2023-08-23T20:09:58.401755Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files_paths <- list(\n    \"npy_train\" = \"/kaggle/input/t5embeds/train_embeds.npy\",\n    \"npy_test\" = \"/kaggle/input/t5embeds/test_embeds.npy\",\n    \"qs_train\" = \"/kaggle/working/T5_train_features.qs\",\n    \"qs_test\" = \"/kaggle/working/T5_test_features.qs\"\n)\ncat(\"Size of the initial and resultong files\")\nt(as.data.table(lapply(files_paths, function(x) paste(round(file.size(x)/10^6, 2), \"Mb\"))))","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:25:24.297198Z","iopub.execute_input":"2023-08-23T20:25:24.305696Z","iopub.status.idle":"2023-08-23T20:25:24.378013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <p style=\"background-color:#2D735F;font-family:Verdana;color:white;font-size:80%;text-align:left;border-radius: 15px;padding:10px 15px\"> - ProtBert embeddings</p>","metadata":{}},{"cell_type":"markdown","source":"Link to dataset: https://www.kaggle.com/datasets/henriupton/protbert-embeddings-for-cafa5/versions/1","metadata":{}},{"cell_type":"markdown","source":"**Train data**","metadata":{}},{"cell_type":"code","source":"train_ids <- np$load(\"/kaggle/input/protbert-embeddings-for-cafa5/train_ids.npy\")\ntrain_embeds <- np$load(\"/kaggle/input/protbert-embeddings-for-cafa5/train_embeddings.npy\")\n\ntrain_features <- data.table(EntryID = train_ids)\n\ncols <- paste0(\"f\", 1:ncol(train_embeds))\ntrain_features[, (cols) := as.data.table(train_embeds)]\n\nhead(train_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:30:33.79548Z","iopub.execute_input":"2023-08-23T20:30:33.800201Z","iopub.status.idle":"2023-08-23T20:30:56.232044Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Test data**","metadata":{}},{"cell_type":"code","source":"test_ids <- np$load(\"/kaggle/input/protbert-embeddings-for-cafa5/test_ids.npy\")\ntest_embeds <- np$load(\"/kaggle/input/protbert-embeddings-for-cafa5/test_embeddings.npy\")\n\ntest_features <- data.table(EntryID = test_ids)\n\ncols <- paste0(\"f\", 1:ncol(test_embeds))\ntest_features[, (cols) := as.data.table(test_embeds)]\n\nhead(test_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:31:09.255677Z","iopub.execute_input":"2023-08-23T20:31:09.257822Z","iopub.status.idle":"2023-08-23T20:31:27.889079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Save as data.tables**","metadata":{}},{"cell_type":"code","source":"qsave(train_features, \"ProtBert_train_features.qs\")\nqsave(test_features, \"ProtBert_test_features.qs\")\nrm(train_features, test_features, train_embeds, test_embeds)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:32:30.662189Z","iopub.execute_input":"2023-08-23T20:32:30.664184Z","iopub.status.idle":"2023-08-23T20:32:42.996099Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files_paths <- list(\n    \"npy_train\" = \"/kaggle/input/protbert-embeddings-for-cafa5/train_embeddings.npy\",\n    \"npy_test\" = \"/kaggle/input/protbert-embeddings-for-cafa5/test_embeddings.npy\",\n    \"qs_train\" = \"/kaggle/working/ProtBert_train_features.qs\",\n    \"qs_test\" = \"/kaggle/working/ProtBert_test_features.qs\"\n)\ncat(\"Size of the initial and resultong files\")\nt(as.data.table(lapply(files_paths, function(x) paste(round(file.size(x)/10^6, 2), \"Mb\"))))","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:32:47.083838Z","iopub.execute_input":"2023-08-23T20:32:47.085845Z","iopub.status.idle":"2023-08-23T20:32:47.125384Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <p style=\"background-color:#2D735F;font-family:Verdana;color:white;font-size:80%;text-align:left;border-radius: 15px;padding:10px 15px\"> - ESM2, t33, 650M embeddings</p>","metadata":{}},{"cell_type":"markdown","source":"Link to dataset: https://www.kaggle.com/datasets/andreylalaley/23468234/versions/1","metadata":{}},{"cell_type":"markdown","source":"**Train data**","metadata":{}},{"cell_type":"code","source":"train_ids <- np$load(\"/kaggle/input/23468234/train_ids_esm2_t33_650M_UR50D.npy\")\ntrain_embeds <- np$load(\"/kaggle/input/23468234/train_embeds_esm2_t33_650M_UR50D.npy\")\n\ntrain_features <- data.table(EntryID = train_ids)\n\ncols <- paste0(\"f\", 1:ncol(train_embeds))\ntrain_features[, (cols) := as.data.table(train_embeds)]\n\nhead(train_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:52:10.185579Z","iopub.execute_input":"2023-08-23T20:52:10.1876Z","iopub.status.idle":"2023-08-23T20:52:37.567949Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Test data**","metadata":{}},{"cell_type":"code","source":"test_ids <- np$load(\"/kaggle/input/23468234/test_ids_esm2_t33_650M_UR50D.npy\")\ntest_embeds <- np$load(\"/kaggle/input/23468234/test_embeds_esm2_t33_650M_UR50D.npy\")\n\ntest_features <- data.table(EntryID = test_ids)\n\ncols <- paste0(\"f\", 1:ncol(test_embeds))\ntest_features[, (cols) := as.data.table(test_embeds)]\n\nhead(test_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:51:43.684455Z","iopub.execute_input":"2023-08-23T20:51:43.686379Z","iopub.status.idle":"2023-08-23T20:51:54.838963Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Save as data.tables**","metadata":{}},{"cell_type":"code","source":"qsave(train_features, \"ESM2_t33_train_features.qs\")\nqsave(test_features, \"ESM2_t33_test_features.qs\")\nrm(train_features, test_features, train_embeds, test_embeds)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:53:19.446651Z","iopub.execute_input":"2023-08-23T20:53:19.448498Z","iopub.status.idle":"2023-08-23T20:53:34.116392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files_paths <- list(\n    \"npy_train\" = \"/kaggle/input/23468234/train_embeds_esm2_t33_650M_UR50D.npy\",\n    \"npy_test\" = \"/kaggle/input/23468234/test_embeds_esm2_t33_650M_UR50D.npy\",\n    \"qs_train\" = \"/kaggle/working/ESM2_t33_train_features.qs\",\n    \"qs_test\" = \"/kaggle/working/ESM2_t33_test_features.qs\"\n)\ncat(\"Size of the initial and resultong files\")\nt(as.data.table(lapply(files_paths, function(x) paste(round(file.size(x)/10^6, 2), \"Mb\"))))","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:53:40.35577Z","iopub.execute_input":"2023-08-23T20:53:40.358066Z","iopub.status.idle":"2023-08-23T20:53:40.398499Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <p style=\"background-color:#2D735F;font-family:Verdana;color:white;font-size:80%;text-align:left;border-radius: 15px;padding:10px 15px\"> - ESM2, t36, 3B embeddings</p>","metadata":{}},{"cell_type":"markdown","source":"Link to dataset: https://www.kaggle.com/datasets/andreylalaley/4637427/versions/1","metadata":{}},{"cell_type":"markdown","source":"**Train data**","metadata":{}},{"cell_type":"code","source":"train_ids <- np$load(\"/kaggle/input/4637427/train_ids_esm2_t36_3B_UR50D.npy\")\ntrain_embeds <- np$load(\"/kaggle/input/4637427/train_embeds_esm2_t36_3B_UR50D.npy\")\n\ntrain_features <- data.table(EntryID = train_ids)\n\ncols <- paste0(\"f\", 1:ncol(train_embeds))\ntrain_features[, (cols) := as.data.table(train_embeds)]\n\nhead(train_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:53:56.633729Z","iopub.execute_input":"2023-08-23T20:53:56.6358Z","iopub.status.idle":"2023-08-23T20:54:54.474318Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Test data**","metadata":{}},{"cell_type":"code","source":"test_ids <- np$load(\"/kaggle/input/4637427/test_ids_esm2_t36_3B_UR50D.npy\")\ntest_embeds <- np$load(\"/kaggle/input/4637427/test_embeds_esm2_t36_3B_UR50D.npy\")\n\ntest_features <- data.table(EntryID = test_ids)\n\ncols <- paste0(\"f\", 1:ncol(test_embeds))\ntest_features[, (cols) := as.data.table(test_embeds)]\n\nhead(test_features)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:54:54.477633Z","iopub.execute_input":"2023-08-23T20:54:54.479361Z","iopub.status.idle":"2023-08-23T20:55:52.165883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Save as data.tables**","metadata":{}},{"cell_type":"code","source":"qsave(train_features, \"ESM2_t36_train_features.qs\")\nqsave(test_features, \"ESM2_t36_test_features.qs\")\nrm(train_features, test_features, train_embeds, test_embeds)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:55:52.169393Z","iopub.execute_input":"2023-08-23T20:55:52.171203Z","iopub.status.idle":"2023-08-23T20:56:21.802546Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"files_paths <- list(\n    \"npy_train\" = \"/kaggle/input/4637427/train_embeds_esm2_t36_3B_UR50D.npy\",\n    \"npy_test\" = \"/kaggle/input/4637427/test_embeds_esm2_t36_3B_UR50D.npy\",\n    \"qs_train\" = \"/kaggle/working/ESM2_t36_train_features.qs\",\n    \"qs_test\" = \"/kaggle/working/ESM2_t36_test_features.qs\"\n)\ncat(\"Size of the initial and resultong files\")\nt(as.data.table(lapply(files_paths, function(x) paste(round(file.size(x)/10^6, 2), \"Mb\"))))","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:56:21.807957Z","iopub.execute_input":"2023-08-23T20:56:21.809869Z","iopub.status.idle":"2023-08-23T20:56:21.851825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <p style=\"background-color:#2D735F;font-family:Verdana;color:white;font-size:80%;text-align:left;border-radius: 15px;padding:10px 15px\"> - Uniprot Description embeddings - no protein IDs</p>","metadata":{}},{"cell_type":"markdown","source":"Link to dataset: https://www.kaggle.com/datasets/visualcomments/uniprot-description-only\n\nI didn't find protein IDs in for these embeddings.","metadata":{}},{"cell_type":"markdown","source":"**Train data**","metadata":{}},{"cell_type":"code","source":"train_embeds <- np$load(\"/kaggle/input/uniprot-description-only/embeddings_train.npy\")\nhead(train_embeds)\nrm(train_embeds)","metadata":{"execution":{"iopub.status.busy":"2023-08-23T20:56:42.327579Z","iopub.execute_input":"2023-08-23T20:56:42.329816Z","iopub.status.idle":"2023-08-23T20:56:55.734578Z"},"trusted":true},"execution_count":null,"outputs":[]}]}