From d9c82e4090e9cfeaef06bed53a4e86cf6a89fa40 Mon Sep 17 00:00:00 2001
From: Marek Ostaszewski <marek.ostaszewski@uni.lu>
Date: Tue, 22 Sep 2020 10:26:47 +0200
Subject: [PATCH] Hipathia translation script updated, zip handled

---
 Resources/Hipathia/resolve_aliases.R | 30 ++++++++++++++++++----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/Resources/Hipathia/resolve_aliases.R b/Resources/Hipathia/resolve_aliases.R
index 1e103fc..c0f549b 100644
--- a/Resources/Hipathia/resolve_aliases.R
+++ b/Resources/Hipathia/resolve_aliases.R
@@ -11,21 +11,32 @@ library(jsonlite)
 ### A convenience function to handle API queries
 ask_GET <- function(furl, fask) {
   print(URLencode(paste0(furl, fask)))
-  resp <- httr::GET(url = URLencode(paste0(furl, fask)),
+  resp <- httr::GET(url = URLencode(paste0(furl, fask)), write_memory(),
                     httr::add_headers('Content-Type' = "application/x-www-form-urlencoded"),
                     ### Currently ignoring SSL!
                     httr::set_config(config(ssl_verifypeer = 0L)))
   if(httr::status_code(resp) == 200) {
+    ### when the content is sent as a zip file, it needs to be handled differently,
+    ### i.e. saved to a tmp file and unzipped
+    if(headers(resp)$`content-type` == "application/zip") {
+      tmp <- tempfile()
+      tmpc <- file(tmp, "wb")
+      writeBin(httr::content(resp, as = "raw"), con = tmpc)
+      close(tmpc)
+      unzipped <- unzip(tmp)
+      file.remove(tmp)
+      return(unzipped)
+    }
     return(httr::content(resp, as = "text"))
   }
   return(NULL)
 }
 
 ### Define the source file (GitLab, raw link)
-diagram <- "https://git-r3lab.uni.lu/covid/models/-/raw/master/Curation/Pyrimidine%20deprivation/Pyrimidine_deprivation_stable.xml"
+diagram <- "https://git-r3lab.uni.lu/covid/models/-/raw/master/Curation/ER%20Stress/ER_Stress_stable.xml"
 
 ### Read in the raw SIF version (here straight from the github of Aurelien)
-raw_sif <- read.table(url("https://git-r3lab.uni.lu/covid/models/-/raw/master/Executable%20Modules/SBML_qual_build/sif/Pyrimidine_deprivation_stable_raw.sif"),
+raw_sif <- read.table(url("https://git-r3lab.uni.lu/covid/models/-/raw/master/Executable%20Modules/SBML_qual_build/sif/ER_Stress_stable_raw.sif"),
                       sep = " ", header = F, stringsAsFactors = F)
 
 ### Read the list of resources to be integrated, from the MINERVA build scripts
@@ -86,13 +97,11 @@ group_elements <- function(feid, felements, fentrez) {
 get_groups <- function(fname) {
   message(paste0("Getting groups for ", fname, "..."))
   library(xml2)
-  ### Currently comment out the MINERVA download, some content dlded as binary!
-  # cd_map <- read_xml(ask_GET(mnv_base, 
-  #                            paste0("models/",
-  #                                   models$idObject[models$name == fname],
-  #                                   ":downloadModel?handlerClass=lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser")))
-  cd_map <- read_xml(diagram)
-  print(cd_map)
+  ## Currently comment out the MINERVA download, some content dlded as binary!
+  cd_map <- read_xml(ask_GET(mnv_base,
+                             paste0("models/",
+                                    models$idObject[models$name == fname],
+                                    ":downloadModel?handlerClass=lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser")))
   ### CellDesigner namespace
   ns_cd <- xml_ns_rename(xml_ns(read_xml("<root>
                                             <sbml xmlns = \"http://www.sbml.org/sbml/level2/version4\"/>
@@ -101,7 +110,6 @@ get_groups <- function(fname) {
                          d1 = "sbml", d2 = "cd")
   ### Get complex ids
   cids <- xml_attr(xml_find_all(cd_map, "//cd:complexSpeciesAlias", ns_cd), "species")
-  print(cids)
   ### For each check, which is hypothetical
   hypocs <- sapply(cids, 
                    function(x) {
-- 
GitLab