Mercurial > repos > prog > lcmsmatching
annotate HmdbCompound.R @ 0:3afe41d3e9e7 draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
| author | prog |
|---|---|
| date | Mon, 11 Jul 2016 09:12:03 -0400 |
| parents | |
| children |
| rev | line source |
|---|---|
|
0
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
1 if ( ! exists('HmdbCompound')) { # Do not load again if already loaded |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
2 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
3 source('BiodbEntry.R') |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
4 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
5 ##################### |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
6 # CLASS DECLARATION # |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
7 ##################### |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
8 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
9 HmdbCompound <- setRefClass("HmdbCompound", contains = "BiodbEntry") |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
10 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
11 ########### |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
12 # FACTORY # |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
13 ########### |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
14 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
15 createHmdbCompoundFromXml <- function(contents, drop = FALSE) { |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
16 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
17 library(XML) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
18 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
19 compounds <- list() |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
20 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
21 # Define xpath expressions |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
22 xpath.expr <- character() |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
23 xpath.expr[[RBIODB.ACCESSION]] <- "/metabolite/accession" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
24 xpath.expr[[RBIODB.KEGG.ID]] <- "//kegg_id" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
25 xpath.expr[[RBIODB.NAME]] <- "/metabolite/name" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
26 xpath.expr[[RBIODB.FORMULA]] <- "/metabolite/chemical_formula" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
27 xpath.expr[[RBIODB.SUPER.CLASS]] <- "//super_class" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
28 xpath.expr[[RBIODB.AVERAGE.MASS]] <- "//average_molecular_weight" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
29 xpath.expr[[RBIODB.MONOISOTOPIC.MASS]] <- "//monisotopic_moleculate_weight" |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
30 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
31 for (content in contents) { |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
32 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
33 # Create instance |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
34 compound <- HmdbCompound$new() |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
35 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
36 # Parse XML |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
37 xml <- xmlInternalTreeParse(content, asText = TRUE) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
38 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
39 # An error occured |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
40 if (length(getNodeSet(xml, "//error")) == 0) { |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
41 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
42 # Test generic xpath expressions |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
43 for (field in names(xpath.expr)) { |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
44 v <- xpathSApply(xml, xpath.expr[[field]], xmlValue) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
45 if (length(v) > 0) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
46 compound$setField(field, v) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
47 } |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
48 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
49 } |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
50 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
51 compounds <- c(compounds, compound) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
52 } |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
53 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
54 # Replace elements with no accession id by NULL |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
55 compounds <- lapply(compounds, function(x) if (is.na(x$getField(RBIODB.ACCESSION))) NULL else x) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
56 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
57 # If the input was a single element, then output a single object |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
58 if (drop && length(contents) == 1) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
59 compounds <- compounds[[1]] |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
60 |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
61 return(compounds) |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
62 } |
|
3afe41d3e9e7
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit bb4d3e23d99828bfee16d31d794c49a17313ec2f
prog
parents:
diff
changeset
|
63 } |
