diff --git a/SHA256SUMS.txt b/SHA256SUMS.txt new file mode 100644 index 0000000..c4d1eba --- /dev/null +++ b/SHA256SUMS.txt @@ -0,0 +1,3 @@ +533f290cc27e63f6ef8e2f6fc3079a10a8b7cb8081ed6c8a8685ade072794c0a README.md +d11f20f9f7fb7e9db3abce8027c6b2271dbb2a621bba45996032c7d729d23475 CHANGELOG.md +d24698a0eaca7c65fec5eb425574bcec4cbce33e749c0852d9c4911c1533e9a1 STATUS.md diff --git a/STATUS.md b/STATUS.md new file mode 100644 index 0000000..1cf09a0 --- /dev/null +++ b/STATUS.md @@ -0,0 +1,25 @@ +# STATUS + +Repository maturity: DATASET / EVIDENCE ARCHIVE + +## Completed + +✅ Real IBM hardware execution +✅ Real IBM Runtime execution +✅ Independent result verification +✅ DOI archival release + +## In Progress + +⚠ Raw job archive completion +⚠ Calibration archive completion +⚠ Reproducibility notebooks + +## Planned + +◻ Benchmark Record V2 export +◻ Measurement Error Mitigation +◻ Zero Noise Extrapolation + +Current status: +Revision v1.2.0 preparation diff --git a/data/benchmark_records/README.md b/data/benchmark_records/README.md new file mode 100644 index 0000000..b72cd6b --- /dev/null +++ b/data/benchmark_records/README.md @@ -0,0 +1,8 @@ +# QAB Benchmark Record V2 Exports + +Record order: + +ALGORITHM +EXECUTION +QUALITY +REFERENCE diff --git a/data/benchmark_records/bell_template.yaml b/data/benchmark_records/bell_template.yaml new file mode 100644 index 0000000..38f2f5c --- /dev/null +++ b/data/benchmark_records/bell_template.yaml @@ -0,0 +1,23 @@ +ALGORITHM: + name: BellState + num_qubits: 2 + depth: + gate_count: + two_qubit_gate_count: + +EXECUTION: + backend: + job_id: + shots: + runtime_seconds: + +QUALITY: + fidelity: + concurrence: + success_probability: + entropy: + +REFERENCE: + reference_value: + error: + relative_error: diff --git a/data/benchmark_records/generated/bell_record.yaml b/data/benchmark_records/generated/bell_record.yaml new file mode 100644 index 0000000..38f2f5c --- /dev/null +++ b/data/benchmark_records/generated/bell_record.yaml @@ -0,0 +1,23 @@ +ALGORITHM: + name: BellState + num_qubits: 2 + depth: + gate_count: + two_qubit_gate_count: + +EXECUTION: + backend: + job_id: + shots: + runtime_seconds: + +QUALITY: + fidelity: + concurrence: + success_probability: + entropy: + +REFERENCE: + reference_value: + error: + relative_error: diff --git a/data/calibration/README.md b/data/calibration/README.md new file mode 100644 index 0000000..02048b2 --- /dev/null +++ b/data/calibration/README.md @@ -0,0 +1,15 @@ +# Calibration Archive + +Calibration snapshots associated with IBM Quantum runs. + +Schema: + +backend: +date: +job_id: + +metrics: + t1: + t2: + readout_error: + two_qubit_error: diff --git a/data/calibration/snapshots/CALIBRATION_TEMPLATE.csv b/data/calibration/snapshots/CALIBRATION_TEMPLATE.csv new file mode 100644 index 0000000..76a9a44 --- /dev/null +++ b/data/calibration/snapshots/CALIBRATION_TEMPLATE.csv @@ -0,0 +1 @@ +backend,date,job_id,t1_us,t2_us,readout_error,cz_error diff --git a/data/results/runtime_jobs/README.md b/data/results/runtime_jobs/README.md new file mode 100644 index 0000000..94c39c2 --- /dev/null +++ b/data/results/runtime_jobs/README.md @@ -0,0 +1,15 @@ +# IBM Runtime Evidence Archive + +## Verified Runtime Jobs + +Sampler: +da24ra2ein7c73be5250 + +Estimator: +da24rbug52gs73cmccng + +Store for each workload: + +- job-info.json +- job-result.json +- metadata.json diff --git a/data/runtime_jobs/README.md b/data/runtime_jobs/README.md new file mode 100644 index 0000000..03dacca --- /dev/null +++ b/data/runtime_jobs/README.md @@ -0,0 +1,16 @@ +# Runtime Job Archive + +Reserved for archived IBM Runtime jobs. + +Recommended contents: + +job-id/ +├── metadata.json +├── job-info.json +├── job-result.json +└── backend_snapshot.json + +Verified Runtime workloads: + +- da24ra2ein7c73be5250 (SamplerV2) +- da24rbug52gs73cmccng (EstimatorV2) diff --git a/docs/reproducibility/PIPELINE.md b/docs/reproducibility/PIPELINE.md new file mode 100644 index 0000000..0402f95 --- /dev/null +++ b/docs/reproducibility/PIPELINE.md @@ -0,0 +1,13 @@ +# Reproducibility Pipeline + +RAW DATA +↓ +PARSER +↓ +METRICS +↓ +RESULTS +↓ +FIGURES + +No manual post-processing. diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..82f2d7b --- /dev/null +++ b/manifest.json @@ -0,0 +1,11 @@ +{ + "project": "IBM-Quantum-Experiments", + "type": "dataset-repository", + "runtime_jobs": [ + "da24ra2ein7c73be5250", + "da24rbug52gs73cmccng" + ], + "exports": [ + "QAB Benchmark Record V2" + ] +} diff --git a/requirements-freeze.txt b/requirements-freeze.txt new file mode 100644 index 0000000..2105162 --- /dev/null +++ b/requirements-freeze.txt @@ -0,0 +1,107 @@ +Cython==3.2.9 +PubChemPy==1.0.5 +PyJWT==2.13.0 +Pygments==2.20.0 +annotated-types==0.8.0 +antlr4-python3-runtime==4.13.2 +appdirs==1.4.4 +asteval==1.0.9 +attrs==26.1.0 +autograd==1.8.0 +autoray==0.8.4 +cachetools==7.1.7 +certifi==2026.7.22 +cffi==2.1.1 +charset-normalizer==3.4.9 +cirq-aqt==1.7.0 +cirq-core==1.7.0 +cirq-google==1.7.0 +cirq-ionq==1.7.0 +cirq-pasqal==1.7.0 +cirq-web==1.7.0 +cirq==1.7.0 +cmake==4.4.2 +contourpy==1.3.3 +cryptography==50.0.0 +cycler==0.12.1 +deprecation==2.1.0 +diastatic-malt==2.15.3 +dill==0.4.1 +distro==1.9.0 +duet==0.2.9 +fonttools==4.63.0 +gast==0.7.0 +google-api-core==2.33.0 +google-auth==2.56.2 +googleapis-common-protos==1.75.0 +grpcio-status==1.83.0 +grpcio==1.83.0 +h5py==3.16.0 +ibm-cloud-sdk-core==3.26.0 +ibm-platform-services==0.77.0 +ibm-quantum-schemas==0.10.20260723 +idna==3.18 +iniconfig==2.3.0 +joblib==1.5.3 +kiwisolver==1.5.0 +lmfit==1.3.4 +matplotlib==3.11.1 +mpmath==1.3.0 +mthree==3.0.0 +narwhals==2.24.0 +networkx==3.6.1 +ninja==1.13.0 +numpy==2.5.1 +openfermion==1.8.1 +openfermionpyscf==0.5 +openqasm3==1.0.1 +orjson==3.11.9 +packaging==26.3 +pandas==3.0.5 +pennylane==0.45.1 +pennylane_lightning==0.45.0 +pillow==12.3.0 +pluggy==1.6.0 +proto-plus==1.28.2 +protobuf==6.33.6 +psutil==7.2.2 +pyasn1==0.6.4 +pyasn1_modules==0.4.2 +pybase64==1.4.3 +pybind11==3.0.4 +pycparser==3.0 +pydantic==2.13.4 +pydantic_core==2.46.4 +pyparsing==3.3.2 +pyscf==2.14.0 +pyspnego==0.12.1 +pytest==9.1.1 +python-dateutil==2.9.0.post0 +qiskit-experiments==0.14.1 +qiskit-ibm-runtime==0.48.0 +qiskit-qasm3-import==0.6.0 +qiskit==2.5.1 +requests==2.34.2 +requests_ntlm==1.3.0 +runningman==2.3.0 +rustworkx==0.18.1 +samplomatic==0.20.0 +scikit-build==0.19.1 +scikit-learn==1.9.0 +scipy-openblas32==0.3.34.0.0 +scipy==1.18.0 +seaborn==0.13.2 +setuptools==83.0.0 +six==1.17.0 +stevedore==5.9.0 +sympy==1.14.0 +termcolor==3.3.0 +threadpoolctl==3.6.0 +tomlkit==0.15.1 +tqdm==4.70.0 +typedunits==0.0.2 +typing-inspection==0.4.2 +typing_extensions==4.16.0 +uncertainties==3.2.3 +urllib3==2.7.0 +wheel==0.47.0 diff --git a/requirements-lock.txt b/requirements-lock.txt new file mode 100644 index 0000000..705dd61 --- /dev/null +++ b/requirements-lock.txt @@ -0,0 +1,6 @@ +qiskit==2.5.1 +qiskit-ibm-runtime==0.48.0 +qiskit-aer==0.17.2 +qiskit-algorithms==0.4.0 +qiskit-nature==0.8.0 +qiskit-machine-learning==0.9.0 diff --git a/scripts/generate_qab_records.sh b/scripts/generate_qab_records.sh new file mode 100755 index 0000000..ac83def --- /dev/null +++ b/scripts/generate_qab_records.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -e + +mkdir -p data/benchmark_records/generated + +cp data/benchmark_records/bell_template.yaml \ +data/benchmark_records/generated/bell_record.yaml + +echo "QAB export generated." diff --git a/scripts/project_health.sh b/scripts/project_health.sh new file mode 100755 index 0000000..972c82d --- /dev/null +++ b/scripts/project_health.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +echo +echo "===== STATUS =====" +test -f STATUS.md && echo OK + +echo +echo "===== NOTEBOOKS =====" +ls notebooks/*.ipynb + +echo +echo "===== BENCHMARK RECORDS =====" +find data/benchmark_records -type f + +echo +echo "===== RUNTIME JOBS =====" +find data/results/runtime_jobs -type f + +echo +echo "===== CHECKSUMS =====" +test -f SHA256SUMS.txt && echo OK diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..94bf69b --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,5 @@ +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT))