遇见数据集

Adoption Dynamics of Python-based Quantum Programming Ecosystems: An Empirical Study

收藏
Zenodo2026-05-07 更新2026-05-26 收录
官方服务:

资源简介:

This package contains the dataset, analysis notebooks, and figures supporting a research article submitted to a conference. The study analyses 397 Python-based quantum programming libraries (QPLibs) adopted in 2,722 GitHub repositories. The data is mined from the GitHub REST/GraphQL APIs and PyPI on 16 January 2026; all file dates and analysis windows are anchored to that snapshot. Folder layout replication_package/ ├── requirements.txt # Python packages used by the notebooks ├── data/ # raw + processed datasets (also data.zip) ├── figures/ # final figures used in the paper (also figures.zip) └── scripts_notebooks/ # Jupyter notebooks reproducing the analysis (also scripts_notebooks.zip) Notebooks (scripts_notebooks/) The notebooks are intended to be run in the order below. Each one reads files in data/ and writes its outputs back there; the figures are written to figures/. File Paper section Purpose data_collection.ipynb Section III, Fig. 1, Tables I–II End-to-end pipeline: repository identification (GitHub REST search), dependency-file and import extraction (GraphQL + raw content), pre-processing, PyPI lookup, and QPLib selection. Produces the final 397 QPLibs and 2,722 repositories. RQ1.ipynb Section IV, Fig. 2, Table III Ecosystem evolution: QPLib release timeline per QPE, growth rate, maintenance, adoption concentration (Gini index). RQ2.ipynb Section V, Fig. 3, Table IV Declared adoption / de-adoption at the QPE level, mined from commit histories of dependency files. RQ3.ipynb Section VI, Tables V–VI Dependency hygiene: under- and over-declaration of QPLibs (declared vs. imported), Kruskal–Wallis and Dunn pairwise tests. RQ4.ipynb Section VII, Fig. 4, Table VII Multi-ecosystem usage: co-occurrence, lag between adopting the first and second QPE, cross-ecosystem switching. dep_file_parsers.py Section III-B Helper module with regex/TOML parsers for requirements*.txt, pyproject.toml, setup.py, setup.cfg, Pipfile, and environment.yml. A Python environment satisfying requirements.txt is sufficient to run all notebooks. A GitHub personal access token is required only if data_collection.ipynb is re-executed against the GitHub API; all downstream notebooks operate solely on the cached data files in data/. Data files (data/) The pipeline (Fig. 1 of the paper) produces these files in roughly the order listed. Repository identification (Section III-A) File Description Maps to raw_candidates.jsonl 8,024 candidate repositories returned by the GitHub search/repositories endpoint for the 23 quantum key terms, with metadata (stars, default branch, archived flag, language, topics, …). Section III-A, Table I (initial) active_no_dup_no_arch_repos.jsonl 4,309 repositories retained after de-duplication, archived-repo filtering, and the activity-since-2025 filter. Section III-A, Table I (final) Dependency and import extraction (Section III-B) File Description repo_files_all.jsonl Snapshot, at data-collection time, of every recognised dependency file at the HEAD branch of each repository: file type, raw text, and the list of declared packages. repo_imports.jsonl Imports extracted from up to 50 .py files per repository (prioritising src/, core/, lib/, package/). repo_files_all_pkgs.jsonl Per-repository union of declared dependencies and observed imports — input for the dependency-hygiene analysis (RQ3). import_deps.jsonl Intermediate by-repo dependency-file view used during pre-processing. QPLib identification (Section III-C, Table II) File Description pkg_pypi.jsonl PyPI metadata (description, classifiers) per candidate package, used to decide whether a package is quantum-related. pkg_repo_pypi.jsonl Per-package: list of repositories that adopt it, plus the PyPI metadata. package_parent_framework.csv Mapping from each QPLib to its parent QPE (e.g., pennylane-qiskit → pennylane and qiskit). Implements the QPLib↔QPE assignment described in Section IV. selected_packages.jsonl Final 397 QPLibs retained by the selection criteria in Table II, with QPE membership flags. selected_repos.jsonl Final 2,722 repositories that adopt at least one of the 397 QPLibs. checkpoint.json Progress checkpoint written by data_collection.ipynb so long-running API calls can resume. Not used by the analysis itself. Longitudinal data for adoption / de-adoption (Sections V, VII) File Description dependency_file_commits.jsonl Up to 100 most recent commits per dependency file per repository (commit hash, commit date, file type, author). commits_package_presence.jsonl For every (repository, package, commit) triple, whether the package was present in the dependency file at that commit. Drives the adoption / de-adoption event detection. adoption_deadoption_events.jsonl Per-event records (already_present, adoption, de_adoption) with timestamps, used to build Fig. 3 and Table IV. rq2_first_adoption_per_repo_qpf.csv Per repository × parent QPE, the date of the first observed adoption event — used by RQ2 (cohort 2) and RQ4 (lag and switching). Pre-computed inputs for figures and tables File Description rq1_qplib_release_dates.csv Per QPLib: associated repositories, first/latest PyPI release dates, total releases, and status — input for Fig. 2 and Table III. Figures (figures/) File Paper artefact dataselection.pdf Fig. 1 — Overview of the QPLib identification process. rq1_number_qplibs_evol.pdf Fig. 2 — Monthly cumulative number of new QPLibs released per QPE. rq2_adoption_deadoption_panel.pdf Fig. 3 — Daily cumulative adoption (top) and de-adoption (bottom) per QPE. rq3_hygiene_heatmap_combined.pdf Visual companion to Section VI on dependency hygiene (over- / under-declaration). rq4_lag_to_second_qpf.pdf Fig. 4 — Distribution of days between first and second QPE adoption in multi-QPE repositories. Reproducing the results Install dependencies: pip install -r requirements.txt. Open the notebooks in scripts_notebooks/ and run them in the order RQ1 → RQ2 → RQ3 → RQ4. The cached data in data/ is sufficient — the notebooks read the *.jsonl and *.csv files listed above and regenerate every figure and statistical result reported in the paper. To re-mine the dataset from scratch, set a GitHub token and run data_collection.ipynb. The data snapshot was taken on 16 January 2026; a fresh re-mine will return more recent (and likely larger) numbers because the GitHub corpus and PyPI release history continue to grow. Citation If you use this dataset or analysis, please cite this Zenodo record (DOI: 10.5281/zenodo.18895240).

提供机构:
Zenodo
创建时间:
2026-03-06
二维码
社区交流群
二维码
科研交流群
商业服务