## ----echo=FALSE---------------------------------------------------------------
source(system.file('vignettes_inc.R', package='biodb'))

## -----------------------------------------------------------------------------
mybiodb <- biodb::BiodbMain$new()

## ----echo=FALSE, results='asis'-----------------------------------------------
make_vignette_ref('new_connector')

## ----echo=FALSE, results='asis'-----------------------------------------------
make_vignette_ref('new_connector')

## ----echo=FALSE, results='asis'-----------------------------------------------
make_vignette_ref('new_connector')

## -----------------------------------------------------------------------------
chebiexDefFile <- system.file("extdata", "chebi_ex.yml", package='biodb')
connClass <- system.file("extdata", "ChebiExConn.R", package='biodb')
entryClass <- system.file("extdata", "ChebiExEntry.R", package='biodb')
source(connClass)
source(entryClass)
mybiodb$loadDefinitions(chebiexDefFile)

## -----------------------------------------------------------------------------
conn <- mybiodb$getFactory()$createConn('chebi.ex')

## -----------------------------------------------------------------------------
entryIds <- c('17001', '40304', '64679')
entriesDf <- mybiodb$entriesToDataframe(conn$getEntry(entryIds))

## ----entriesChebiExTable, echo=FALSE, results='asis'--------------------------
# Prevent RMarkdown from interpreting @ character as a reference:
entriesDf$smiles <- vapply(entriesDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entriesDf), "pipe", caption="Some entries from ChebiEx database. Their charge value is not visible become it was not parsed from database file.")

## -----------------------------------------------------------------------------
id <- entryIds[[1]]
id

## -----------------------------------------------------------------------------
conn$getEntryPageUrl(id)

## ----echo=FALSE, results='asis'-----------------------------------------------
cat("<", conn$getEntryPageUrl(id), ">", sep='')

## -----------------------------------------------------------------------------
conn$getCacheFile(id)

## -----------------------------------------------------------------------------
chargeParsingDefFile <- system.file("extdata", "chebi_ex_charge_parsing.yml", package='biodb')

## ----eval=FALSE, highlight=FALSE, code=readLines(chargeParsingDefFile)--------
#  databases:
#    chebi.ex:
#      parsing.expr:
#        charge: //chebi:charge

## -----------------------------------------------------------------------------
mybiodb$loadDefinitions(chargeParsingDefFile)

## -----------------------------------------------------------------------------
mybiodb$getFactory()$deleteConn(conn)

## -----------------------------------------------------------------------------
conn <- mybiodb$getFactory()$createConn('chebi.ex')
entriesDf <- mybiodb$entriesToDataframe(conn$getEntry(entryIds))

## ----entriesChebiExWithChargeTable, echo=FALSE, results='asis'----------------
# Prevent RMarkdown from interpreting @ character as a reference:
entriesDf$smiles <- vapply(entriesDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entriesDf), "pipe", caption="Some entries from ChebiEx database. Their charge value is now visible, since the parsing expression has been added to the connector.")

## ----echo=FALSE, results='asis'-----------------------------------------------
make_vignette_ref('in_house_compound_db')

## -----------------------------------------------------------------------------
fileUrl <- system.file("extdata", "chebi_extract_with_unknown_column.tsv", package='biodb')

## ----compDbTable, echo=FALSE, results='asis'----------------------------------
compDbDf <- read.table(fileUrl, sep="\t", header=TRUE, quote="")
# Prevent RMarkdown from interpreting @ character as a reference:
compDbDf$smiles <- vapply(compDbDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(compDbDf), "pipe", caption="First lines of the compound database file.")

## -----------------------------------------------------------------------------
conn <- mybiodb$getFactory()$createConn('comp.csv.file', url=fileUrl)

## -----------------------------------------------------------------------------
entriesDf <- mybiodb$entriesToDataframe(conn$getEntry(conn$getEntryIds()))

## ----entriesTable, echo=FALSE, results='asis'---------------------------------
# Prevent RMarkdown from interpreting @ character as a reference:
entriesDf$smiles <- vapply(entriesDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entriesDf), "pipe", caption="Some entries from the compound database.")

## -----------------------------------------------------------------------------
conn$setField('charge', 'elecCharge')

## -----------------------------------------------------------------------------
conn$deleteAllEntriesFromVolatileCache()

## -----------------------------------------------------------------------------
entries2Df <- mybiodb$entriesToDataframe(conn$getEntry(conn$getEntryIds()))

## ----entries2Table, echo=FALSE, results='asis'--------------------------------
# Prevent RMarkdown from interpreting @ character as a reference:
entries2Df$smiles <- vapply(entries2Df$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entries2Df), "pipe", caption="Some entries from the compound database. They now show the newly parsed \"charge\" field.")

## ----echo=FALSE, results='asis'-----------------------------------------------
make_vignette_ref('new_connector')

## -----------------------------------------------------------------------------
conn <- mybiodb$getFactory()$getConn('chebi.ex')
entryIds <- c('17001', '40304', '64679')
entriesDf <- mybiodb$entriesToDataframe(conn$getEntry(entryIds))

## ----entriesChebiEx2Table, echo=FALSE, results='asis'-------------------------
# Prevent RMarkdown from interpreting @ character as a reference:
entriesDf$smiles <- vapply(entriesDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entriesDf), "pipe", caption="Some entries from ChebiEx database. There is no field that indicates the number of stars of an entry.")

## -----------------------------------------------------------------------------
nStarsDefFile <- system.file("extdata", "chebi_ex_stars_field.yml", package='biodb')

## ----eval=FALSE, highlight=FALSE, code=readLines(nStarsDefFile)---------------
#  databases:
#    chebi.ex:
#      parsing.expr:
#        n_stars: //chebi:return/chebi:entityStar
#  
#  fields:
#    n_stars:
#      description: The ChEBI example stars indicator.
#      class: integer

## -----------------------------------------------------------------------------
mybiodb$loadDefinitions(nStarsDefFile)

## -----------------------------------------------------------------------------
mybiodb$getFactory()$deleteConn(conn)

## -----------------------------------------------------------------------------
conn <- mybiodb$getFactory()$createConn('chebi.ex')
entriesDf <- mybiodb$entriesToDataframe(conn$getEntry(entryIds))

## ----entriesChebiEx2WithNstarsTable, echo=FALSE, results='asis'---------------
# Prevent RMarkdown from interpreting @ character as a reference:
entriesDf$smiles <- vapply(entriesDf$smiles, function(s) paste0('`', s, '`'), FUN.VALUE='')
knitr::kable(head(entriesDf), "pipe", caption="Some entries from ChebiEx database. Now there is a n_stars no field that indicates the number of stars of an entry.")

## -----------------------------------------------------------------------------
mybiodb$terminate()

## -----------------------------------------------------------------------------
sessionInfo()