# dbparser: de bases de datos farmacológicas complejas a flujos reproducibles en R

HTML canónico: https://dsti.school/es/techblog/dbparser-datos-farmacologicos-r

Esta versión Markdown se genera con el mismo build del sitio estático de DSTI que la página HTML canónica. Está pensada para facilitar la lectura automática y la consulta concisa.

[DSTI TechBlog](https://dsti.school/es/techblog)  /  Egresados

Egresados Software de investigación de código abierto

Un proyecto estudiantil se convirtió en infraestructura de investigación mantenida y revisada por pares. Mohammed Ali, egresado de DSTI, creó `dbparser` para transformar bases de datos farmacológicas incompatibles en objetos de R consistentes y flujos de integración reproducibles.

MA Mohammed Ali Egresado de DSTI · Autor y responsable del mantenimiento de dbparser · R e integración de datos farmacológicos

23 jun 2026 12 min de lectura CRAN · rOpenSci · JOSS

R dbparser farmacovigilancia bioinformática código-abierto investigación-reproducible

![Logotipo oficial del paquete dbparser](https://dsti.school/assets/dsti-techblog-dbparser-logo.6ebb275baa.png)

## Tres fuentes. Un solo modelo de análisis.

DrugBank, OnSIDES y TWOSIDES se convierten en objetos de R consistentes y trazables.

DrugBank XML anidado

OnSIDES CSV relacionales

TWOSIDES interacciones comprimidas
dvobject un objeto drugverse consistente

3 bases compatibles

2.2.1 versión actual en CRAN

2018 primera versión en CRAN

2026 publicación en JOSS

Las grandes bases de datos farmacológicas son valiosas porque conservan relaciones complejas entre medicamentos, objetivos, vías biológicas, productos, efectos adversos e interacciones. También son difíciles de analizar por esa misma razón. DrugBank se distribuye como XML profundamente anidado; OnSIDES como archivos CSV relacionales; TWOSIDES como datos comprimidos de interacciones. `dbparser` transforma esas fuentes diferentes en objetos de R consistentes y flujos de integración trazables.

i
Acceso a datos y licencias dbparser procesa bases de datos a las que la persona investigadora está autorizada a acceder. El paquete no redistribuye contenido restringido de DrugBank. La reproducibilidad también exige registrar la versión de la base fuente, las condiciones de acceso y la versión exacta del paquete utilizada.

La abstracción útil no es simplemente un archivo más plano. Es un modelo de objetos estable que conserva relaciones, información de versión y procedencia, mientras ofrece una forma consistente de trabajar.

## 01 El problema es estructural, no cosmético

Una base farmacológica no es una hoja de cálculo con demasiadas columnas. Los registros de medicamentos se conectan con objetivos, enzimas, carriers, transporters, vías biológicas, productos, referencias e identificadores externos. Un parser que sólo aplana el archivo puede facilitar su carga y, al mismo tiempo, destruir silenciosamente las relaciones que dan significado a los datos.

Las fuentes tampoco comparten formatos ni identificadores. DrugBank utiliza una jerarquía XML extensa. OnSIDES distribuye tablas CSV relacionadas derivadas de etiquetas de medicamentos. TWOSIDES ofrece una representación comprimida de efectos adversos asociados con pares de medicamentos. Los scripts ad hoc pueden resolver un análisis, pero suelen ocultar supuestos sobre joins, versiones y valores faltantes.

DrugBank `Jerarquía XML`
Mecanismos, medicamentos, objetivos, vías biológicas e identificadores.

OnSIDES `Tablas CSV`
Eventos adversos extraídos de etiquetas de medicamentos de la FDA.

TWOSIDES `CSV.GZ`
Eventos adversos asociados con pares de medicamentos.

## 02 Un objeto común sin borrar la fuente

dbparser introduce el `dvobject`, un objeto drugverse implementado como una lista de R con patrones de acceso consistentes. Conserva tablas tidy para el análisis, metadatos sobre la versión de la base y el proceso de parsing, y mapas que describen cómo se relacionan las tablas.

Para una versión de DrugBank, el objeto puede exponer información de medicamentos, sales, productos, referencias y estructuras conectadas de carriers, enzymes, targets y transporters. Cuando se fusionan fuentes, el mismo objeto incorpora componentes anidados y tablas integradas, en lugar de convertirse en una colección de joins sin documentar.

### Lo que un dvobject mantiene unido

objeto listo para análisis

drugs tablas principales de medicamentos

cett carriers, enzymes, targets, transporters

products productos comerciales

references artículos, enlaces y libros

metadata versión y procedencia

## 03 De parser a motor de integración

La versión actual del paquete utiliza DrugBank como núcleo mecanístico. OnSIDES aporta eventos adversos extraídos de etiquetas de la FDA, mientras TWOSIDES aporta eventos asociados con combinaciones de medicamentos. Esta arquitectura radial reduce la cantidad de equivalencias entre identificadores que deben mantenerse y hace explícita la ruta de integración.

La decisión implica una condición: los flujos con varias bases dependen de los identificadores y equivalencias de DrugBank. Sin embargo, es una condición visible y comprobable, no un supuesto escondido dentro de un notebook de un solo uso.

OnSIDES Eventos adversos extraídos de etiquetas de medicamentos de la FDA.

DrugBank DrugBank como núcleo mecanístico

TWOSIDES Eventos adversos asociados con pares de medicamentos.

## 04 La ingeniería de software alrededor del parser

Un paquete de investigación útil necesita más que funciones de parsing que operen correctamente. Requiere una interfaz pública estable, pruebas, documentación, metadatos, ejemplos, versiones identificables y un proceso para revisar cambios. dbparser se distribuye por CRAN, se documenta mediante rOpenSci, se publica con licencia MIT y se mantiene en un repositorio público.

El paquete pasó por revisión por pares en rOpenSci y su artículo de software se publicó en el Journal of Open Source Software en febrero de 2026. Ese registro importa porque hace verificables las afirmaciones de calidad: cualquier persona puede consultar el repositorio, la revisión, la versión archivada, la documentación y el seguimiento de incidencias.

Versiones identificables
Los archivos de CRAN muestran la evolución del paquete y la versión exacta usada en un análisis.

Revisión por pares
La revisión de rOpenSci y el registro de JOSS exponen documentación, pruebas y decisiones de diseño.

Entradas reproducibles
Los metadatos conservan las versiones de las fuentes y los detalles del parsing junto con el objeto listo para análisis.

## 05 Un flujo compacto y reproducible

El código siguiente muestra la arquitectura sin esconderla detrás de una interfaz gráfica. Cada fuente se procesa de forma independiente. Después, los objetos resultantes se fusionan mediante operaciones explícitas y encadenables. El código se conserva exactamente como aparece en la documentación del paquete.

R Pipeline de integración

```r
library(dbparser)
library(dplyr)

drugbank_db <- parseDrugBank("data/drugbank.xml")
onsides_db  <- parseOnSIDES("data/onsides/")
twosides_db <- parseTWOSIDES("data/TWOSIDES.csv.gz")

final_db <- drugbank_db %>%
  merge_drugbank_onsides(onsides_db) %>%
  merge_drugbank_twosides(twosides_db)

head(final_db$integrated_data$drug_drug_interactions)
```

## 06 De proyecto estudiantil a infraestructura de investigación

CRAN registra la primera versión de dbparser en diciembre de 2018. El archivo público muestra después una secuencia de versiones mantenidas, no una publicación aislada. Para la versión 2.2.1, publicada en enero de 2026, el paquete ya había superado el procesamiento exclusivo de DrugBank y permitía flujos integrados de farmacovigilancia con tres fuentes.

La documentación del proyecto identifica más de diez publicaciones revisadas por pares en áreas como reposicionamiento de medicamentos, biomarcadores, modelado de vías biológicas y análisis de ensayos clínicos. La historia más sólida no es sólo que un estudiante escribió un parser, sino que el trabajo resistió el uso por otros equipos, la evolución de las bases fuente, la revisión del paquete y el mantenimiento a largo plazo.

2018 dbparser 1.0.0 se publica en CRAN.

2023–24 La serie 2.x moderniza el paquete y su modelo de datos.

2026 La versión 2.2.1 integra DrugBank, OnSIDES y TWOSIDES.

2026 El artículo de software se publica en JOSS después de una revisión abierta.

## 07 El egresado detrás del proyecto de código abierto

Mohammed Ali es egresado de DSTI, autor y responsable de mantenimiento de dbparser. Ali Ezzat es coautor del paquete y del artículo de JOSS. Su registro público permite revisar el software en varios niveles: la versión estable en CRAN, el manual de referencia, la documentación de rOpenSci, el repositorio fuente, la conversación de revisión y la publicación archivada en JOSS.

Esa apertura forma parte del resultado de ingeniería. Una herramienta de investigación reproducible debe permitir rastrear no sólo el resultado del análisis, sino también la versión del software, la versión de los datos fuente y las decisiones que transformaron una en el otro.

### Software, documentación y publicación

MA

### Mohammed Ali

Egresado de DSTI, autor y responsable del mantenimiento de dbparser. Su trabajo reúne ingeniería de software en R, integración de datos farmacológicos e infraestructura para investigación reproducible.

[LinkedIn](https://www.linkedin.com/in/mohammedali85/)

Fuentes y nota editorial: Artículo elaborado a partir del antiguo registro de DSTI sobre el proyecto estudiantil, un manuscrito proporcionado y las fuentes actuales de CRAN, rOpenSci, el repositorio y JOSS. Los nombres técnicos, funciones del paquete, código y títulos de publicaciones se conservan exactamente.
