A reproducible local bibliometric workflow for Scopus and Web of Science exports.
Project description
Chronotome
Chronotome is a Streamlit conversion of the original reproducible Jupyter/Kaggle bibliometric workflow. It accepts Scopus and Web of Science exports, harmonizes their schemas, fuses and deduplicates records, corrects for collection-year indexing lag, and produces the notebook's descriptive, citation, source, author, country, thematic, and institutional-network outputs.
Run locally
Chronotome is installable as a local Python package. Python 3.11 is recommended.
git clone https://github.com/AthenaP21/Chronotome.git
cd Chronotome
python3.11 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install --only-binary=:all: .
chronotome
The chronotome command starts the app at http://127.0.0.1:8501; it is deliberately limited to the local machine. Use chronotome --port 8502 if port 8501 is already occupied. For local development, the familiar command remains available:
pip install -r requirements.txt
streamlit run app.py --server.address 127.0.0.1
No notebook interface or local data paths are required. All uploaded and generated files are handled in memory. See the in-app Local installation page and SECURITY.md for the installation and release-safety guidance.
App pages
- Home introduces Chronotome, its expected outputs, the Zenodo open-science release, the bundled institution aliases, and the suggested citation.
- Data ingestion provides separate Scopus and WoS configuration, Single file and Appendage modes, upload verification, deterministic preprocessing, schema harmonization, deduplication, textual PRISMA reporting, and final CSV/Excel/ZIP downloads.
- Entity resolution explodes affiliations, standardizes institutions and countries, accepts the bundled or an uploaded
institutions.json, reports alias conflicts and unresolved geography, and exports affiliation/article-level tables. - Corpus & production uses the current entity-resolved article summary and starts only when Generate corpus analysis is selected. It reproduces notebook sections 9 and 11–16: corpus characteristics, internal MNCS, document typology, author productivity/contribution, annual growth, citation dynamics, and local journal/source impact.
- Geographic analysis starts only when Generate geographic analysis is selected. It reproduces notebook Sections 17–18 and 20–21: country distribution, SCP/MCP collaboration, country MNCS, citation prestige, the productivity-impact matrix, the international collaboration network, and clickable country case studies.
- Advanced analyses runs after the geographic phase and produces the final paper-ready dataset summary, article and author impact rankings, Bradford scattering, hot papers, team-size impact, and the journal landscape.
- Thematic analysis uses the current geographic dataset or prepares one uploaded Chronotome dataset in the background. It provides staged NLTK setup, optional query-term removal, visible editable noise-list categories, 1–4 gram extraction and word clouds, automatic LDA/NMF topic selection, longitudinal topic evolution, topic impact/co-occurrence, canonical papers, and country specialization.
- Institutional analysis uses the current geographic dataset or the unchanged
article_summary_with_country_classificationhandoff file. Choose one Global/EU × All/MCP/SCP scope and select Generate institutional network to create it. Completed scopes can be compared side by side using their original network graphs; the page also offers community visualizations, GraphML/CSV/Excel exports, and optional topic-specific networks. - Full workflow provides a single Run all workflow action. It starts from raw Scopus/WoS files or the current ingestion result, executes every modern stage through all six institutional community visualizations, and returns one structured ZIP containing the workflow's Excel files, plots, network exports, and manifest. The background runner streams stage artifacts directly into the master archive, releases completed figures and graphs, avoids nested ZIP/dataset duplication, and records process-memory usage after every stage.
- Local installation is a step-by-step guide to installing, launching, updating, and securing Chronotome on your own computer.
Input files
Upload one or more exports in .csv, .txt, .xls, or .xlsx format:
- Scopus CSV is recommended. The app recognizes fields such as
Title,Source title,Year,Cited by,Authors, andAffiliations. - Web of Science tab-delimited TXT, CSV, XLS, and XLSX are supported. WoS files with an
.xlsextension that are actually tab-delimited text use the notebook's fallback parser. - Tagged WoS plain text (
PT,AU,TI, …,ER) is also parsed. - Split files from the same database can be uploaded together and are appended before harmonization.
- At minimum, the export must contain the source-specific title field (
Titlefor Scopus orArticle Titlefor WoS). Full records with cited references are strongly recommended.
The app detects the database from the export columns. It does not infer or fetch missing records from external services.
In Appendage mode, files must represent one numbered split-export series, such as query_1.csv, query_2.csv, and query_3.csv. Chronotome verifies the common base name and extension, checks for duplicate or missing part numbers, and sorts parts numerically before stacking them. Scopus and WoS appendages are always processed separately.
Supported workflow
The Streamlit app preserves the notebook's current methods:
- Scopus/WoS schema mapping and merged common schema
- author-name and cited-reference preprocessing
- preprocessing audit tables for author delimiter changes, removed Scopus IDs, parsed references, and mapped fields
- DOI normalization, citation-prioritized DOI data fusion, and title/year deduplication for records without DOI
- optional collection-year cutoff for indexing-lag correction
- PRISMA-style identification, screening, and included counts
- notebook-style textual PRISMA report with an arithmetic integrity check (no PRISMA diagram)
- curated institution alias resolution using
chronotome_core/institutions.json - optional runtime upload of a manually updated or newer Zenodo
institutions.json; uploaded JSON is validated and treated as authoritative - affiliation-based institution and country extraction, including SCP/MCP classification
- internal year-normalized citation score (MNCS relative to the uploaded corpus)
- corpus summary, annual production, citation dynamics, and document-type taxonomy
- author full/fractional counts, citations, MNCS, and local h-index
- source productivity and local h-, g-, m-index and MNCS rankings, with the notebook's composite and prestige-versus-efficiency figures
- country-level full-counted production, SCP/MCP collaboration shares, total citations, and internal MNCS rankings
- advanced country citation distribution, productivity-impact matrix, and weighted international collaboration topology
- click-to-open country case studies with temporal dashboards and statistical field-guide exports
- final corpus summary plus advanced article, author, source, Bradford, hot-paper, and collaboration-impact outputs
- most-cited articles, recent highly cited papers, Bradford scattering, and team-size impact
- country productivity, collaboration, impact, and temporal tables
- Global and EU-only institutional networks for All, MCP, and SCP records
- optional topic-level institutional collaboration networks after LDA modeling
- one-click background execution from ingestion through six institutional community visualizations, with a consolidated non-nested ZIP package
- unigram, bigram, trigram, quadgram, LDA/NMF evaluation, topic-assignment, and topic-evolution tables
- CSV, Excel, 600-DPI PNG, vector SVG/PDF, and complete ZIP exports
The main entry point is:
from chronotome_core import run_chronotome
results = run_chronotome(uploaded_files, config)
results contains processed data, tables, figures, warnings, metadata, network objects, PRISMA counts, and in-memory export files.
Notebook assumptions retained
- DOI duplicates retain the most-cited record as the base and fill its missing fields from duplicates.
- Records without DOI are deduplicated by normalized title plus publication year.
- Citation normalization uses the uploaded corpus's mean citations for each publication year; it is not an external field benchmark.
- The collection year and later are excluded by default because those years may be incompletely indexed.
- Country and institution extraction uses semicolon-separated affiliations and comma-separated address components.
- Multi-country publications are MCP; one-country publications are SCP.
- EU network subsets include publications whose detected countries are exclusively EU member states.
- At most 50 institutions per paper are used to construct collaboration pairs by default.
- “Hot papers” means papers from the current year and previous three years, ranked by raw citations.
- Source and country impact rankings default to a minimum of five papers.
- Thematic analysis combines title, abstract, author keywords, and Keywords Plus.
Not yet supported
- OpenAlex integration is not implemented yet.
- No APIs are called to enrich incomplete metadata.
- The app does not replace missing affiliations, abstracts, references, or citation counts.
Deploy on Streamlit Community Cloud
- Push this repository to GitHub, including
app.py,requirements.txt,chronotome_core/, andchronotome_core/institutions.json. - In Streamlit Community Cloud, create an app from the repository.
- Set the main file path to
app.py. - Deploy. No secrets or external API keys are needed.
Large exports and dense networks can approach Community Cloud memory/time limits. For those datasets, disable thematic analysis or reduce the number of institutions displayed in network plots.
Analytical figure downloads preserve the notebook styling and filenames. Standard figures are exported as 600-DPI PNG plus vector SVG and PDF; oversized network rasters are safely bounded while SVG/PDF remain resolution-independent. Tables are available as individual CSV files and combined Excel workbooks inside ZIP folders organized into Plots/ and Results/.
For memory safety, oversized raster figures use an adaptive pixel ceiling while retaining their original aspect ratio and layout. Full-resolution SVG and PDF remain the publication masters. The one-click background workflow uses a stricter raster budget, streams outputs stage by stage, and keeps only its final archive and manifest in session memory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chronotome-0.1.0.tar.gz.
File metadata
- Download URL: chronotome-0.1.0.tar.gz
- Upload date:
- Size: 319.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1e92211dea68555825afb63a1188b471ff6404fa31e9f2f8178ad8357f7843e
|
|
| MD5 |
be9d3a2a6109d98607d0e9ef5b9b899a
|
|
| BLAKE2b-256 |
3d5cfdedf9bddcd67d0473d187e0d07f89c9fe0a35e9a2be7a1f712d15ba7c27
|
Provenance
The following attestation bundles were made for chronotome-0.1.0.tar.gz:
Publisher:
release.yml on AthenaP21/Chronotome
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chronotome-0.1.0.tar.gz -
Subject digest:
b1e92211dea68555825afb63a1188b471ff6404fa31e9f2f8178ad8357f7843e - Sigstore transparency entry: 2183897638
- Sigstore integration time:
-
Permalink:
AthenaP21/Chronotome@ed3f40e93416d396fdc28e72e9df88a4d5d1f667 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AthenaP21
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ed3f40e93416d396fdc28e72e9df88a4d5d1f667 -
Trigger Event:
release
-
Statement type:
File details
Details for the file chronotome-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chronotome-0.1.0-py3-none-any.whl
- Upload date:
- Size: 329.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64e8c5f18bb48da5e133eb0e4a45bcc654f2223673f60f55b24c95843aa46ddb
|
|
| MD5 |
fbc69455b958bf31e7dcd27c93b01b52
|
|
| BLAKE2b-256 |
603f69c392df378994c4554c6b7a79187647bf38b941a1110221b589fd37616d
|
Provenance
The following attestation bundles were made for chronotome-0.1.0-py3-none-any.whl:
Publisher:
release.yml on AthenaP21/Chronotome
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chronotome-0.1.0-py3-none-any.whl -
Subject digest:
64e8c5f18bb48da5e133eb0e4a45bcc654f2223673f60f55b24c95843aa46ddb - Sigstore transparency entry: 2183897979
- Sigstore integration time:
-
Permalink:
AthenaP21/Chronotome@ed3f40e93416d396fdc28e72e9df88a4d5d1f667 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AthenaP21
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ed3f40e93416d396fdc28e72e9df88a4d5d1f667 -
Trigger Event:
release
-
Statement type: