# bib2graph
Un paquete de Python para el procesamiento de datos bibliométricos y análisis de redes.
[](https://pypi.org/project/bib2graph/)
[](https://github.com/complexluise/bib2graph/blob/main/LICENSE)
[](https://pypi.org/project/bib2graph/)
## Descripción
`bib2graph` es un pipeline de datos completo para el análisis bibliométrico de publicaciones científicas. Transforma datos bibliográficos en representaciones de red para análisis avanzados. El pipeline consta de tres fases principales:
1. **Ingesta de Datos**: Analiza y normaliza metadatos bibliográficos desde BibTeX y los carga en una base de datos de grafos Neo4j.
2. **Enriquecimiento de Datos**: Consulta APIs externas (Semantic Scholar, CrossRef, Scopus) para obtener metadatos adicionales como citas, referencias completas, ORCIDs de autores e información de financiamiento.
3. **Extracción de Redes**: Genera varias redes para análisis, incluyendo redes de co-citación, redes de colaboración entre autores, redes de colaboración institucional y redes de co-ocurrencia de palabras clave.
## Arquitectura
La arquitectura del sistema consta de tres módulos principales:
1. **Módulo de Ingesta de Datos** (`consigue_los_articulos.py`): Responsable de cargar datos desde diferentes fuentes y normalizarlos para su almacenamiento en Neo4j.
2. **Módulo de Enriquecimiento de Datos** (`enriquecimiento.py`): Consulta APIs externas para obtener metadatos adicionales y actualizar la base de datos.
3. **Módulo de Análisis de Redes** (`analisis_red.py`): Extrae diferentes tipos de redes del grafo y las exporta para análisis posterior.
## Requisitos
- Python 3.12 o superior
- Base de datos Neo4j (instalación local o en la nube)
- Claves de API para servicios externos (opcional):
- API de Semantic Scholar
- API de Scopus
## Instalación
### Desde PyPI (Recomendado)
```bash
pip install bib2graph
```
### Desde el Código Fuente
1. Clonar el repositorio:
```bash
git clone https://github.com/complexluise/bib2graph.git
cd bib2graph
```
2. Instalar dependencias con Poetry:
```bash
poetry install
```
### Configuración
Configurar variables de entorno para las claves de API y la conexión a Neo4j (opcional):
```bash
# Para Linux/macOS
export SEMANTIC_SCHOLAR_API_KEY="tu_clave_api"
export SCOPUS_API_KEY="tu_clave_api"
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="tu_contraseña"
# Para Windows (PowerShell)
$env:SEMANTIC_SCHOLAR_API_KEY="tu_clave_api"
$env:SCOPUS_API_KEY="tu_clave_api"
$env:NEO4J_URI="bolt://localhost:7687"
$env:NEO4J_USER="neo4j"
$env:NEO4J_PASSWORD="tu_contraseña"
```
## Uso
El script principal proporciona una interfaz de línea de comandos para ejecutar el pipeline completo o fases individuales:
### Ejecutar el pipeline completo:
```bash
bib2graph --mode full
```
### Ejecutar solo la fase de ingesta de datos:
```bash
bib2graph --mode ingest --input data/file.bib --file-type bibtex
```
### Ejecutar solo la fase de enriquecimiento de datos:
```bash
bib2graph --mode enrich
```
### Ejecutar solo la fase de análisis de redes:
```bash
bib2graph --mode analyze --network-type cocitation --output-dir results
```
### Opciones disponibles:
```
--mode Modo de operación (ingest, enrich, analyze, full)
--input Archivo o directorio de entrada
--file-type Tipo de archivo (csv, bibtex, json)
--network-type Tipo de red (cocitation, author, institution, keyword)
--min-weight Peso mínimo para relaciones
--output-dir Directorio para archivos de salida
--community-algorithm Algoritmo de detección de comunidades (louvain, label_propagation, greedy_modularity)
--neo4j-uri URI de conexión a Neo4j
--neo4j-user Nombre de usuario de Neo4j
--neo4j-password Contraseña de Neo4j
```
## Ejemplos
### Procesar un archivo BibTeX y generar una red de co-citación:
```bash
bib2graph --mode full --input data/references.bib --network-type cocitation --output-dir results
```
### Generar una red de colaboración entre autores:
```bash
bib2graph --mode analyze --network-type author --output-dir results
```
### Generar una red de co-ocurrencia de palabras clave:
```bash
bib2graph --mode analyze --network-type keyword --output-dir results
```
### Procesar un archivo CSV con un peso mínimo de arista de 2:
```bash
bib2graph --mode full --input data/citations.csv --file-type csv --network-type cocitation --min-weight 2 --output-dir results
```
## Estructura del Proyecto
```
bib2graph/
├── data/ # Directorio de datos de entrada
│ └── references.bib # Archivo BibTeX de ejemplo
├── src/ # Código fuente
│ ├── consigue_los_articulos.py # Módulo de ingesta de datos
│ ├── enriquecimiento.py # Módulo de enriquecimiento de datos
│ ├── analisis_red.py # Módulo de análisis de redes
│ ├── models.py # Modelos de datos
│ └── queries.py # Consultas a la base de datos
├── results/ # Resultados generados
├── main.py # Script principal
├── pyproject.toml # Configuración de Poetry
├── .github/ # Flujos de trabajo de GitHub
│ └── workflows/ # Flujos de trabajo de CI/CD
└── README.md # Documentación
```
## Licencia
Este proyecto está licenciado bajo la Licencia Apache 2.0 - consulte el archivo [LICENSE](LICENSE) para más detalles.
## Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar un Pull Request.
## Cita
Si utiliza bib2graph en su investigación, por favor cítelo como:
```
Higuera-Calderon, L. E. (2025). bib2graph: Un paquete de Python para el procesamiento de datos bibliométricos y análisis de redes.
https://github.com/complexluise/bib2graph
```
Raw data
{
"_id": null,
"home_page": "https://github.com/complexluise/bib2graph",
"name": "bib2graph",
"maintainer": "Luis Eduardo Higuera Calderon",
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": "lhiguerac@unal.edu.co",
"keywords": "bibliometrics, network-analysis, citation-analysis, data-science, neo4j",
"author": "Luis Eduardo Higuera Calderon",
"author_email": "lhiguerac@unal.edu.co",
"download_url": "https://files.pythonhosted.org/packages/40/27/75909286b31a0405581978cbdf799edf201ebc8db403b573c25aa2416dc8/bib2graph-0.1.0.tar.gz",
"platform": null,
"description": "\n# bib2graph\n\nUn paquete de Python para el procesamiento de datos bibliom\u00e9tricos y an\u00e1lisis de redes.\n\n[](https://pypi.org/project/bib2graph/)\n[](https://github.com/complexluise/bib2graph/blob/main/LICENSE)\n[](https://pypi.org/project/bib2graph/)\n\n## Descripci\u00f3n\n\n`bib2graph` es un pipeline de datos completo para el an\u00e1lisis bibliom\u00e9trico de publicaciones cient\u00edficas. Transforma datos bibliogr\u00e1ficos en representaciones de red para an\u00e1lisis avanzados. El pipeline consta de tres fases principales:\n\n1. **Ingesta de Datos**: Analiza y normaliza metadatos bibliogr\u00e1ficos desde BibTeX y los carga en una base de datos de grafos Neo4j.\n\n2. **Enriquecimiento de Datos**: Consulta APIs externas (Semantic Scholar, CrossRef, Scopus) para obtener metadatos adicionales como citas, referencias completas, ORCIDs de autores e informaci\u00f3n de financiamiento.\n\n3. **Extracci\u00f3n de Redes**: Genera varias redes para an\u00e1lisis, incluyendo redes de co-citaci\u00f3n, redes de colaboraci\u00f3n entre autores, redes de colaboraci\u00f3n institucional y redes de co-ocurrencia de palabras clave.\n\n## Arquitectura\n\nLa arquitectura del sistema consta de tres m\u00f3dulos principales:\n\n1. **M\u00f3dulo de Ingesta de Datos** (`consigue_los_articulos.py`): Responsable de cargar datos desde diferentes fuentes y normalizarlos para su almacenamiento en Neo4j.\n\n2. **M\u00f3dulo de Enriquecimiento de Datos** (`enriquecimiento.py`): Consulta APIs externas para obtener metadatos adicionales y actualizar la base de datos.\n\n3. **M\u00f3dulo de An\u00e1lisis de Redes** (`analisis_red.py`): Extrae diferentes tipos de redes del grafo y las exporta para an\u00e1lisis posterior.\n\n## Requisitos\n\n- Python 3.12 o superior\n- Base de datos Neo4j (instalaci\u00f3n local o en la nube)\n- Claves de API para servicios externos (opcional):\n - API de Semantic Scholar\n - API de Scopus\n\n## Instalaci\u00f3n\n\n### Desde PyPI (Recomendado)\n\n```bash\npip install bib2graph\n```\n\n### Desde el C\u00f3digo Fuente\n\n1. Clonar el repositorio:\n ```bash\n git clone https://github.com/complexluise/bib2graph.git\n cd bib2graph\n ```\n\n2. Instalar dependencias con Poetry:\n ```bash\n poetry install\n ```\n\n### Configuraci\u00f3n\n\nConfigurar variables de entorno para las claves de API y la conexi\u00f3n a Neo4j (opcional):\n\n```bash\n# Para Linux/macOS\nexport SEMANTIC_SCHOLAR_API_KEY=\"tu_clave_api\"\nexport SCOPUS_API_KEY=\"tu_clave_api\"\nexport NEO4J_URI=\"bolt://localhost:7687\"\nexport NEO4J_USER=\"neo4j\"\nexport NEO4J_PASSWORD=\"tu_contrase\u00f1a\"\n\n# Para Windows (PowerShell)\n$env:SEMANTIC_SCHOLAR_API_KEY=\"tu_clave_api\"\n$env:SCOPUS_API_KEY=\"tu_clave_api\"\n$env:NEO4J_URI=\"bolt://localhost:7687\"\n$env:NEO4J_USER=\"neo4j\"\n$env:NEO4J_PASSWORD=\"tu_contrase\u00f1a\"\n```\n\n## Uso\n\nEl script principal proporciona una interfaz de l\u00ednea de comandos para ejecutar el pipeline completo o fases individuales:\n\n### Ejecutar el pipeline completo:\n```bash\nbib2graph --mode full\n```\n\n### Ejecutar solo la fase de ingesta de datos:\n```bash\nbib2graph --mode ingest --input data/file.bib --file-type bibtex\n```\n\n### Ejecutar solo la fase de enriquecimiento de datos:\n```bash\nbib2graph --mode enrich\n```\n\n### Ejecutar solo la fase de an\u00e1lisis de redes:\n```bash\nbib2graph --mode analyze --network-type cocitation --output-dir results\n```\n\n### Opciones disponibles:\n```\n--mode Modo de operaci\u00f3n (ingest, enrich, analyze, full)\n--input Archivo o directorio de entrada\n--file-type Tipo de archivo (csv, bibtex, json)\n--network-type Tipo de red (cocitation, author, institution, keyword)\n--min-weight Peso m\u00ednimo para relaciones\n--output-dir Directorio para archivos de salida\n--community-algorithm Algoritmo de detecci\u00f3n de comunidades (louvain, label_propagation, greedy_modularity)\n--neo4j-uri URI de conexi\u00f3n a Neo4j\n--neo4j-user Nombre de usuario de Neo4j\n--neo4j-password Contrase\u00f1a de Neo4j\n```\n\n## Ejemplos\n\n### Procesar un archivo BibTeX y generar una red de co-citaci\u00f3n:\n```bash\nbib2graph --mode full --input data/references.bib --network-type cocitation --output-dir results\n```\n\n### Generar una red de colaboraci\u00f3n entre autores:\n```bash\nbib2graph --mode analyze --network-type author --output-dir results\n```\n\n### Generar una red de co-ocurrencia de palabras clave:\n```bash\nbib2graph --mode analyze --network-type keyword --output-dir results\n```\n\n### Procesar un archivo CSV con un peso m\u00ednimo de arista de 2:\n```bash\nbib2graph --mode full --input data/citations.csv --file-type csv --network-type cocitation --min-weight 2 --output-dir results\n```\n\n## Estructura del Proyecto\n\n```\nbib2graph/\n\u251c\u2500\u2500 data/ # Directorio de datos de entrada\n\u2502 \u2514\u2500\u2500 references.bib # Archivo BibTeX de ejemplo\n\u251c\u2500\u2500 src/ # C\u00f3digo fuente\n\u2502 \u251c\u2500\u2500 consigue_los_articulos.py # M\u00f3dulo de ingesta de datos\n\u2502 \u251c\u2500\u2500 enriquecimiento.py # M\u00f3dulo de enriquecimiento de datos\n\u2502 \u251c\u2500\u2500 analisis_red.py # M\u00f3dulo de an\u00e1lisis de redes\n\u2502 \u251c\u2500\u2500 models.py # Modelos de datos\n\u2502 \u2514\u2500\u2500 queries.py # Consultas a la base de datos\n\u251c\u2500\u2500 results/ # Resultados generados\n\u251c\u2500\u2500 main.py # Script principal\n\u251c\u2500\u2500 pyproject.toml # Configuraci\u00f3n de Poetry\n\u251c\u2500\u2500 .github/ # Flujos de trabajo de GitHub\n\u2502 \u2514\u2500\u2500 workflows/ # Flujos de trabajo de CI/CD\n\u2514\u2500\u2500 README.md # Documentaci\u00f3n\n```\n\n## Licencia\n\nEste proyecto est\u00e1 licenciado bajo la Licencia Apache 2.0 - consulte el archivo [LICENSE](LICENSE) para m\u00e1s detalles.\n\n## Contribuciones\n\n\u00a1Las contribuciones son bienvenidas! No dude en enviar un Pull Request.\n\n## Cita\n\nSi utiliza bib2graph en su investigaci\u00f3n, por favor c\u00edtelo como:\n\n```\nHiguera-Calderon, L. E. (2025). bib2graph: Un paquete de Python para el procesamiento de datos bibliom\u00e9tricos y an\u00e1lisis de redes. \nhttps://github.com/complexluise/bib2graph\n```",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A Python package for bibliometric data processing and network analysis",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://github.com/complexluise/bib2graph",
"Homepage": "https://github.com/complexluise/bib2graph",
"Repository": "https://github.com/complexluise/bib2graph"
},
"split_keywords": [
"bibliometrics",
" network-analysis",
" citation-analysis",
" data-science",
" neo4j"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "37be13c02bbdaa53e2b9c2b4b337da561af956aab9fce467c776ec065c783f9b",
"md5": "55274dd314486801ae01d0d800589073",
"sha256": "1ee8b4747b68c4284ad270fb98a98df0afc12dcfe45c0600a8233c47416cdf40"
},
"downloads": -1,
"filename": "bib2graph-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "55274dd314486801ae01d0d800589073",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 20685,
"upload_time": "2025-07-13T15:47:40",
"upload_time_iso_8601": "2025-07-13T15:47:40.575739Z",
"url": "https://files.pythonhosted.org/packages/37/be/13c02bbdaa53e2b9c2b4b337da561af956aab9fce467c776ec065c783f9b/bib2graph-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "402775909286b31a0405581978cbdf799edf201ebc8db403b573c25aa2416dc8",
"md5": "04e7355f32798276985000bfff5daa73",
"sha256": "840f14b91f16dcd51c5c0771b95c59455f38ccb3902f0e98c43386f75fa79d33"
},
"downloads": -1,
"filename": "bib2graph-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "04e7355f32798276985000bfff5daa73",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 18112,
"upload_time": "2025-07-13T15:47:41",
"upload_time_iso_8601": "2025-07-13T15:47:41.928614Z",
"url": "https://files.pythonhosted.org/packages/40/27/75909286b31a0405581978cbdf799edf201ebc8db403b573c25aa2416dc8/bib2graph-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 15:47:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "complexluise",
"github_project": "bib2graph",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "bib2graph"
}