Question: KEGGREST using keggGet() for over 10 results and URL errors for unexisting records
0
gravatar for gualapuro.moises
7 weeks ago by
gualapuro.moises0 wrote:

1. Over 10 results

I am trying to get pathway names using a list of 16 list of enzymes (list of lists). I used lapply and works correctly for the first 10 enzymes from each list.

# list of 16 list of enzymes    
list_Enz <- lapply(read_files, function(z) paste0("ec:",z[,3]))

# example enzymes 

    x<- c("ec:1.1.1.2", "ec:6.2.1.1", "ec:1.2.4.1", "ec:2.3.1.12", "ec:1.8.1.4", "ec:1.2.1.51", 
"ec:1.1.1.27", "ec:1.2.1.4", "ec:1.2.1.5", "ec:2.7.1.11", "ec:4.1.2.13", "ec:2.7.1.40", 
"ec:1.2.1.49", "ec:2.7.2.3", "ec:5.3.1.9", "ec:5.3.1.1", "ec:2.7.1.1", "ec:2.7.1.2", 
"ec:2.7.1.147", "ec:5.4.2.2", "ec:5.4.2.5", "ec:5.4.2.6", "ec:5.2.2.2", "ec:5.1.3.3", "ec:2.7.1.1")

    y <- c("ec:1.1.1.1", "ec:1.1.1.71", "ec:1.1.1.27", "ec:1.2.1.4", "ec:1.2.1.5", "ec:2.7.1.11", 
"ec:4.2.1.11", "ec:3.6.1.7", "ec:1.2.1.12", "ec:4.1.2.13", "ec:1.2.4.1", "ec:2.3.1.12", 
"ec:2.7.1.147", "ec:5.3.1.9", "ec:3.2.1.20", "ec:3.2.1.28", "ec:2.4.1.186", "ec:2.4.1.11", 
"ec:2.4.1.11", "ec:2.4.1.18", "ec:2.4.1.1", "ec:3.2.1.1")

  # trial 25 enzymes
  list_Enzh<- list(x,y)
  listpaths <- lapply(list_Enzh, function(m) keggGet(m))

How could I use a for or while loops to got all the information?. Tried a nested loop and it doesn't work:

for (k in 1:16){
  for (l in 1:25){
    listpaths2 <- lapply(list_Enzh, function(m) keggGet(m[[k]][[l]]))
  }
}

Error in m[[k]][[l]] : subscript out of bounds

2. Error for some enzyme records I used while loop for a single list of enzymes. It works correctly, but for "ec:5.2.2.2" (x example list) gives an error message.

paths <- c()
i<- 1
while (i < length (x)){
paths[i] <- keggGet(x[i])
}

Error in .getUrl(url, .flatFileParser) : Not Found (HTTP 404).

I appreciate a lot any help!

ADD COMMENTlink modified 6 weeks ago • written 7 weeks ago by gualapuro.moises0
0
gravatar for gualapuro.moises
6 weeks ago by
gualapuro.moises0 wrote:

So far I found the following code works and avoid URL errors:

for(i in 1:length(enz)){
  data_all[i] <- tryCatch(keggGet(enz[i]), error=function(e) NULL)
}

If anyone could like to check, I reviewed line 89 in: https://github.com/GuangchuangYu/clusterProfiler/blob/master/R/kegg-utilities.R#L88

ADD COMMENTlink modified 6 weeks ago • written 6 weeks ago by gualapuro.moises0
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 847 users visited in the last hour