| Title: | Drugs Databases Parser |
|---|---|
| Description: | This tool is for parsing public drug databases such as 'DrugBank' XML database <https://go.drugbank.com/>. The parsed data are then returned in a proper 'R' object called 'dvobject'. |
| Authors: | Mohammed Ali [aut, cre], Ali Ezzat [aut], Hao Zhu [rev], Emma Mendelsohn [rev] |
| Maintainer: | Mohammed Ali <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 2.2.0 |
| Built: | 2025-12-30 17:23:37 UTC |
| Source: | https://github.com/ropensci/dbparser |
add_database_info Assign passed databases db metadata to passed dvobject
add_database_info( dvobject, db_type = "DrugBank", db_version = NULL, db_exported_date = NULL )add_database_info( dvobject, db_type = "DrugBank", db_version = NULL, db_exported_date = NULL )
dvobject |
dvobject to assign metadata to it |
db_type |
database type (defualt="DrugBank") |
db_version |
database version as string |
db_exported_date |
database official export date |
dvobject
Other utility:
show_dvobject_metadata(),
subset_drugbank_dvobject(),
subset_onsides_dvobject()
returns carriers, enzymes,targets and transporters node valid options.
cett_nodes_options()cett_nodes_options()
list of CETT valid options
Other parsers:
drug_node_options(),
parseDrugBank(),
parseOnSIDES(),
parseTWOSIDES(),
references_node_options()
returns drug node valid options.
drug_node_options()drug_node_options()
list of drug valid options
Other parsers:
cett_nodes_options(),
parseDrugBank(),
parseOnSIDES(),
parseTWOSIDES(),
references_node_options()
Creates an integrated dvobject object by linking DrugBank dvobject with OnSIDES dvobject using RxNorm CUIs as the bridge.
merge_drugbank_onsides(db_object, onsides_db)merge_drugbank_onsides(db_object, onsides_db)
db_object |
A dvobject from 'parseDrugBank()' OR an existing merged dvobject (containing '$drugbank'). |
onsides_db |
A dvobject produced by 'dbparser::parseOnSIDES()'. |
This function performs the following key steps: 1. Creates a mapping table between DrugBank IDs and RxNorm CUIs from the DrugBank object. 2. Enriches the relevant OnSIDES tables ('vocab_rxnorm_ingredient' and optionally 'high_confidence') by adding a 'drugbank_id' column. 3. Assembles a new list object containing all original tables plus the enriched ones and the ID mapping table itself.
The resulting object allows for powerful queries that span both mechanistic data from DrugBank and clinical side-effect data from OnSIDES. Supports piping and chaining with other merge functions.
A new dvobject containing the integrated data.
Other mergers:
merge_drugbank_twosides()
## Not run: # First, parse the individual databases drugbank <- parseDrugBank("path/to/drugbank.xml") onsides <- parseOnSIDES("path/to/onsides_csvs/") # Now, merge them into a single, powerful object merged_db <- merge_drugbank_onsides(drugbank, onsides) # --- Example Analysis: Find the protein targets of all drugs known to --- # --- cause the side effect "Hepatitis" with high confidence. --- # 1. Find the MedDRA ID for "Hepatitis" hepatitis_id <- merged_db$onsides$vocab_meddra_adverse_effect %>% filter(meddra_name == "Hepatitis") %>% pull(meddra_id) # 2. Find all drug ingredients linked to this effect in the high_confidence table drug_ids_causing_hepatitis <- merged_db$onsides$high_confidence_enriched %>% filter(effect_meddra_id == hepatitis_id) %>% pull(drugbank_id) %>% na.omit() %>% unique() # 3. Look up the targets for these DrugBank IDs targets_of_interest <- merged_db$targets %>% filter(parent_key %in% drug_ids_causing_hepatitis) %>% select(drug_id = parent_key, target_name = name, gene_name) head(targets_of_interest) ## End(Not run)## Not run: # First, parse the individual databases drugbank <- parseDrugBank("path/to/drugbank.xml") onsides <- parseOnSIDES("path/to/onsides_csvs/") # Now, merge them into a single, powerful object merged_db <- merge_drugbank_onsides(drugbank, onsides) # --- Example Analysis: Find the protein targets of all drugs known to --- # --- cause the side effect "Hepatitis" with high confidence. --- # 1. Find the MedDRA ID for "Hepatitis" hepatitis_id <- merged_db$onsides$vocab_meddra_adverse_effect %>% filter(meddra_name == "Hepatitis") %>% pull(meddra_id) # 2. Find all drug ingredients linked to this effect in the high_confidence table drug_ids_causing_hepatitis <- merged_db$onsides$high_confidence_enriched %>% filter(effect_meddra_id == hepatitis_id) %>% pull(drugbank_id) %>% na.omit() %>% unique() # 3. Look up the targets for these DrugBank IDs targets_of_interest <- merged_db$targets %>% filter(parent_key %in% drug_ids_causing_hepatitis) %>% select(drug_id = parent_key, target_name = name, gene_name) head(targets_of_interest) ## End(Not run)
Integrates drug-drug interaction data from TWOSIDES with the rich mechanistic information from DrugBank. This function is chainable and can accept a raw DrugBank object or an already-merged dvobject.
merge_drugbank_twosides(db_object, twosides_db)merge_drugbank_twosides(db_object, twosides_db)
db_object |
A dvobject from 'parseDrugBank()' or an existing merged dvobject. |
twosides_db |
A dvobject from 'parseTWOSIDES()'. |
A new, nested dvobject with the TWOSIDES data added.
Other mergers:
merge_drugbank_onsides()
parses given DrugBank XML database into a dvobject. dvobject is a list of data.frames in which each data.frame represents a part of parsed data (i.e drugs, prices, carriers, ...)
parseDrugBank( db_path, drug_options = NULL, parse_salts = FALSE, parse_products = FALSE, references_options = NULL, cett_options = NULL )parseDrugBank( db_path, drug_options = NULL, parse_salts = FALSE, parse_products = FALSE, references_options = NULL, cett_options = NULL )
db_path |
string, full path for the DrugBank xml or zip file. |
drug_options |
character vector, list of sub drug related nodes
names options to parse (default = NULL). Check |
parse_salts |
boolean, parse salts info (default = FALSE) |
parse_products |
boolean, parse products info (default = FALSE) |
references_options |
character vector, list of sub references
related nodes names options to parse (default = NULL).
Check |
cett_options |
character vector, list of sub cett related nodes
names options to parse (default = NULL). Check |
dvobject
Other parsers:
cett_nodes_options(),
drug_node_options(),
parseOnSIDES(),
parseTWOSIDES(),
references_node_options()
Parses the core relational tables from the OnSIDES database.
parseOnSIDES( dataDir, include_high_confidence = TRUE, db_version = NULL, db_exported_date = NULL )parseOnSIDES( dataDir, include_high_confidence = TRUE, db_version = NULL, db_exported_date = NULL )
dataDir |
A string specifying the path to the directory containing the OnSIDES CSV files. |
include_high_confidence |
Logical. If TRUE (the default), the function will also parse the 'high_confidence.csv' file, which is a pre-aggregated summary of ingredient-to-effect relationships. If the file is not found, a warning is issued. |
db_version |
used onside version (default = NULL) |
db_exported_date |
used onside release date (default = NULL) |
dvobject
Other parsers:
cett_nodes_options(),
drug_node_options(),
parseDrugBank(),
parseTWOSIDES(),
references_node_options()
Other parsers:
cett_nodes_options(),
drug_node_options(),
parseDrugBank(),
parseTWOSIDES(),
references_node_options()
Reads the TWOSIDES data file, which contains adverse event data for pairs of drugs taken concurrently (N=2 interactions).
parseTWOSIDES(twosides_file_path, db_version = NULL, db_exported_date = NULL)parseTWOSIDES(twosides_file_path, db_version = NULL, db_exported_date = NULL)
twosides_file_path |
Path to the TWOSIDES data file (e.g., 'TWOSIDES.csv.gz'). |
db_version |
used twoside version (default = NULL) |
db_exported_date |
used twoside release date (default = NULL) |
TWOSIDES is a database of drug-drug interaction safety signals mined from the FDA's Adverse Event Reporting System using the same approach as is used to generate OffSIDES.
Database fields as follow:
RxNORM identifier for drug 1
RxNORM name string for drug 1
RxNORM identifier for drug 2
RxNORM name string for drug 3
MedDRA identifier for the side effect
MedDRA name string for the side effect
The number of reports for the pair of drugs that report the side effect
The number of reports for the pair of drugs that do not report the side effect
The number of reports for other PSM matched drugs (including perhaps the single versions of drug 1 or drug 2) that report the side effect
The number of reports for other PSM matched drugs and other side effects
Proportional reporting ratio, PRR=(A/(A+B))/(C/(C+D))
Error estimate of the PRR
Proportion of reports for the drug that report the side effect, A/(A+B)
A dvobject of class 'TWOSIDESDB' containing the 'drug_drug_interactions' data frame and associated metadata.
Other parsers:
cett_nodes_options(),
drug_node_options(),
parseDrugBank(),
parseOnSIDES(),
references_node_options()
returns references node valid options.
references_node_options()references_node_options()
list of references valid options
Other parsers:
cett_nodes_options(),
drug_node_options(),
parseDrugBank(),
parseOnSIDES(),
parseTWOSIDES()
Displays information about passed dbobject object including basic info, database metadata, and all data.frames contained within nested lists.
show_dvobject_metadata(obj, return_df = FALSE)show_dvobject_metadata(obj, return_df = FALSE)
obj |
A dvobject |
return_df |
Logical. If TRUE, returns metadata data.frame without printing. Default is FALSE. |
Invisibly returns a data.frame containing dvobject metadata
Other utility:
add_database_info(),
subset_drugbank_dvobject(),
subset_onsides_dvobject()
## Not run: display_merged_db_attrs(drugbank) metadata <- display_merged_db_attrs(drugbank, return_df = TRUE) ## End(Not run)## Not run: display_merged_db_attrs(drugbank) metadata <- display_merged_db_attrs(drugbank, return_df = TRUE) ## End(Not run)
Subset a DrugBank dvobject by a vector of DrugBank IDs
subset_drugbank_dvobject(dvobject, drug_ids)subset_drugbank_dvobject(dvobject, drug_ids)
dvobject |
The dvobject from 'parseDrugBank()'. |
drug_ids |
A character vector of 'drugbank_id' values to keep. |
Intelligently filters a DrugBank dvobject to retain only the data associated with a specified list of drugbank_ids. It correctly handles the deep, multi-level nested structure of the entire object, including the complex relationships within the 'cett' list.
A new, smaller dvobject with the same structure and attributes.
Other utility:
add_database_info(),
show_dvobject_metadata(),
subset_onsides_dvobject()
## Not run: library(dbparser) one_drug <- subset_drugbank_dvobject(dvobject = dbdataset::drugbank, drug_ids = "DB00001") ## End(Not run)## Not run: library(dbparser) one_drug <- subset_drugbank_dvobject(dvobject = dbdataset::drugbank, drug_ids = "DB00001") ## End(Not run)
Intelligently filters an OnSIDES dvobject by cascading filters through the relational tables, ensuring the final subset is self-consistent.
subset_onsides_dvobject(dvobject, ingredient_ids)subset_onsides_dvobject(dvobject, ingredient_ids)
dvobject |
A dvobject from 'parseOnSIDES()'. |
ingredient_ids |
A character vector of RxNorm CUIs (ingredients) to keep. |
A new, smaller dvobject with the same structure.
Other utility:
add_database_info(),
show_dvobject_metadata(),
subset_drugbank_dvobject()