{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c00",
   "metadata": {
    "id": "c00"
   },
   "source": "# Quantum Evaporite Exploration — End-to-End QML Pipeline **v3.4**\n### Na₂SO₄ + K co-location · Qubit bütçesine göre **otomatik veri kodlama**\n\n**Yeni (v3.1):** Kodlama artık sabit 4 qubit değil, **qubit bütçesinden** türetilir.\n\n| Mod | Qubit bütçesi | Kodlama |\n|---|---|---|\n| `EXEC_MODE=\"simulator\"` (Colab) | `SIM_QUBITS = 20` | Ölçülen özellikler + **bağlam özellikleri** ile 20 qubit'e kadar doldurulur (1 özellik / qubit, açı kodlama) |\n| `EXEC_MODE=\"hardware\"` | **cihazın fiziksel qubit sayısı**, devre-doğruluk sınırı ve `MAX_ENCODING_QUBITS` içinden en küçüğü; en yüksek doğruluklu fiziksel qubit'ler seçilir | Bütçe < özellik ise **PCA → açı kodlama**, bütçe > özellik ise bağlam özellikleriyle doldurma; açı üst sınırı gürültüye göre otomatik |\n\nAynı kod her iki modda çalışır: VQC, QSVM, SWAP-test kümeleme ve Qiskit çevirisi **genişlikten bağımsızdır**; genişliği `QubitBudget` + `plan_for` belirler.\n\n**Bağlam özellikleri (neden?):** Ölçülen 4 jeofizik özellik 20 qubit'i doldurmaz. Boş qubit bırakmak yerine, her noktanın komşularının (2.5 / 6 / 12 km) özellik **ortalama/std** değerleri eklenir — jeoistatistikte yaygın uzamsal bağlam. Yalnızca **özellikler** kullanılır, etiket kullanılmaz (sızıntı yok). Gerçek veride daha fazla ölçülen kanal (hidrokimya, uydu indeksleri, magnetik) varsa önce onlar kullanılır; bağlam yalnızca kalan qubit'leri doldurur.\n\n> ⚠️ **20 qubit simülasyon maliyeti:** CPU'da 16 → 20 qubit geçişi örnek başına ~13× yavaşlatır (ölçüm: 16q ≈ 0.1 sn, 20q ≈ 1.4 sn ileri+geri). Bu yüzden eğitim **hesap bütçelidir** (`TRAIN_BUDGET_S`): örnek başına süre ölçülür, adım/batch buna göre ayarlanır. GPU (`lightning.gpu`) varsa tam bütçeyle eğitilir. Sonuçlar bu kısıtı raporda gösterir.\n\n> ⚠️ `USE_SYNTHETIC=True` iken sonuçlar boru hattı doğrulamasıdır, **jeolojik bulgu değildir.** Maliyet katsayıları yer tutucudur; Logo Tiger şeması şirketinizde doğrulanmalıdır.\n\n<details><summary>v3'te Gemini sürümünden düzeltilenler (özet)</summary>\n\nSPSA eğitmiyordu (tuple parametre) · GeoTIFF düşeyde ters (3.2 km sapma) · piksel piksel poligon (960 talep) · Qiskit çevirisi sapıyordu (CNOT aralığı) · \"QUBO K-Means\" anlamsızdı → sondaj yeri seçimi QUBO'su · HA-PCA çöküyordu · train=test · tuzsuz SHA-256 → HMAC · Logo talepleri dry-run + insan onayı · başarı bandı koşulsuzdu → doğrulama kapıları.\n</details>"
  },
  {
   "cell_type": "markdown",
   "id": "c01",
   "metadata": {
    "id": "c01"
   },
   "source": "## Module 0 — Kurulum ve konfigürasyon"
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c02",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 152068,
     "status": "ok",
     "timestamp": 1792690990496,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c02",
    "outputId": "baa23e9e-f492-4e84-e6a5-ebe18386b6ab"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m80.3/80.3 kB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.2/56.2 kB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.4/5.4 MB\u001b[0m \u001b[31m35.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m937.5/937.5 kB\u001b[0m \u001b[31m25.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m25.5/25.5 MB\u001b[0m \u001b[31m36.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.1/9.1 MB\u001b[0m \u001b[31m52.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m35.3/35.3 MB\u001b[0m \u001b[31m13.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.1/10.1 MB\u001b[0m \u001b[31m67.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m24.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.2/14.2 MB\u001b[0m \u001b[31m30.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.7/8.7 MB\u001b[0m \u001b[31m21.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m51.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.5/46.5 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.9/9.9 MB\u001b[0m \u001b[31m54.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m106.1/106.1 kB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.5/51.5 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m412.6/412.6 kB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m122.9/122.9 kB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m95.7/95.7 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m113.3/113.3 kB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.4/2.4 MB\u001b[0m \u001b[31m52.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m234.2/234.2 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m32.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m54.9/54.9 kB\u001b[0m \u001b[31m1.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m167.2/167.2 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.8/76.8 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m131.0/131.0 kB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m541.5/541.5 kB\u001b[0m \u001b[31m16.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.5/144.5 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25h/bin/bash: line 1: nvidia-smi: command not found\n",
      "GPU yok\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m924.5/924.5 kB\u001b[0m \u001b[31m19.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m73.2/73.2 MB\u001b[0m \u001b[31m12.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m581.2/581.2 MB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.5/3.5 MB\u001b[0m \u001b[31m45.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m366.5/366.5 MB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m39.7/39.7 MB\u001b[0m \u001b[31m18.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m89.6/89.6 MB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25h"
     ]
    }
   ],
   "source": "# -U: pennylane ve pennylane-lightning sürümlerinin eşleşmesi için (uyumsuzluk lightning.qubit'i devre dışı bırakır)\n!pip -q install -U pennylane pennylane-lightning scikit-learn scipy geopandas rasterio shapely qiskit qiskit-ibm-runtime qiskit-aer dimod dwave-samplers lasio matplotlib cerebras_cloud_sdk\n# A100 (Çalışma zamanı > Çalışma zamanı türünü değiştir > A100 GPU) varsa 20+ qubit eğitimi çok hızlanır; kurulum başarısız olursa not defteri otomatik CPU'ya düşer:\n!nvidia-smi -L || echo \"GPU yok\"\n!pip -q install pennylane-lightning-gpu custatevec-cu12 || echo \"lightning.gpu kurulamadı -> CPU kullanılacak\""
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c03",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 17358,
     "status": "ok",
     "timestamp": 1792691007852,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c03",
    "outputId": "af7fbf1d-8a44-4f22-fe1d-2d68d1acf947"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "PennyLane 0.45.1 | mod: simulator\n",
      "\n",
      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",
      " SENTETİK VERİ MODU — sonuçlar jeolojik bulgu DEĞİLDİR, pipeline testidir.\n",
      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
     ]
    }
   ],
   "source": "import os, json, time, hmac, hashlib, secrets, datetime, itertools, warnings, subprocess\nimport numpy as np\nimport pennylane as qml\nfrom pennylane import numpy as pnp\ntry: qml.device(\"lightning.qubit\", wires=2)       # ikili kütüphaneleri (libgomp) diğer paketlerden ÖNCE yükle\n# NOT: Qiskit bu süreçte ASLA import edilmez (libgomp/static-TLS çakışması); tüm Qiskit işleri ayrı süreç işçisinde (qpu_worker) çalışır.\nexcept Exception as _e: print(\"lightning.qubit ön yükleme:\", type(_e).__name__)\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom scipy.interpolate import griddata\nfrom scipy.spatial import cKDTree\nfrom scipy.stats import spearmanr\nfrom sklearn.model_selection import GroupKFold\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.cluster import KMeans\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import (roc_auc_score, average_precision_score, f1_score,\n                             adjusted_rand_score, normalized_mutual_info_score, silhouette_score)\nimport geopandas as gpd\nimport rasterio\nfrom rasterio.transform import from_origin\nfrom rasterio.features import shapes, rasterize\nfrom shapely.geometry import Point, shape\nimport dimod\ntry:\n    from dwave.samplers import SimulatedAnnealingSampler as SASampler\nexcept Exception:\n    SASampler = dimod.SimulatedAnnealingSampler\nwarnings.filterwarnings(\"ignore\")\n\nSEED = 42\nnp.random.seed(SEED)\n\nCFG = dict(\n    USE_SYNTHETIC=True,          # False -> DATA_CSV okunur; dosya yoksa HATA (sessiz sentetik yok)\n    USE_DRIVE=False, PREFER_GPU=True,\n    DATA_CSV=\"/content/drive/MyDrive/Quantum_Evaporite_Exploration/boreholes_merged.csv\",\n    DATA_CRS=\"EPSG:32636\", WORK_CRS=\"EPSG:32636\",       # UTM 36N (Karapınar/Tuz Gölü bölgesi)\n    OUT_DIR=\"outputs_v3_1\",\n    # ===== QUBIT BÜTÇESİ =====\n    EXEC_MODE=\"simulator\",       # \"simulator\" -> SIM_QUBITS | \"hardware\" -> cihaz profili (qubit sınırı otomatik)\n    SIM_QUBITS=20,               # simülatör modunda kullanılabilir qubit\n    MAX_ENCODING_QUBITS=20,      # her modda sert üst sınır (simülasyon/transpile maliyeti)\n    MIN_CIRCUIT_FIDELITY=0.5,    # donanımda tahmini devre doğruluğu alt sınırı -> genişlik sınırı\n    HW_PROFILE_SOURCE=\"mock\",    # \"mock\" (profil sözlüğü) | \"fake\" (IBM FakeBackend: gerçek cihazın hata modeliyle yerel gürültülü simülasyon; test edildi)\n                                 # | \"ibm\" (GERÇEK cihaz, IBM Quantum hesabı gerekir; kod yolu fake ile aynı, gerçek cihazda test EDİLMEMİŞTİR)\n    HW_BACKEND=None,             # \"ibm\": backend adı (None -> en az meşgul); \"fake\": FakeBackend sınıf adı\n    HW_FAKE_CLASS=\"FakeLagosV2\", # 7 qubit; ör. FakeGuadalupeV2 (16q), FakeSherbrooke (127q)\n    HW_SUBMIT=False,             # True -> \"ibm\" kaynağında işi GERÇEKTEN gönderir (kota harcar!). False -> yalnızca transpile\n    HW_MITIGATION=True,          # IBM Estimator: dynamical decoupling + ölçüm hatası azaltma (TREX) dener; desteklenmezse kapatır\n    HW_ZNE=True,                 # yazılım ZNE (devre katlama + ekstrapolasyon): fake/gerçek cihazda çalışır, süre ~3x\n    HW_IBM_ZNE=False, HW_IBM_PEC=False,   # IBM sunucu tarafı ZNE/PEC seçenekleri (kota/ek iş; gerçek cihazda TEST EDİLMEDİ)\n    HW_EVAL_N=16,                # cihazda skorlanacak test örneği sayısı\n    HW_SHOTS_PRECISION=0.02,     # Estimator hedef hassasiyeti\n    HW_PROFILE_MOCK=dict(name=\"mock_7q\", num_qubits=7, avg_cnot_error=0.012,\n                         qubit_fidelities={0: .97, 1: .95, 2: .93, 3: .91, 4: .90, 5: .88, 6: .85}),\n    TRAIN_BUDGET_S=\"auto\",        # fold başına VQC eğitim süre bütçesi (sn); \"auto\": CPU 240, GPU 1200\n    QSVM_MAX_QUBITS=12,          # kernel yazmacı genişliği (durum-vektörü kernel belleği 2^n)\n    ABLATION_MAX_QUBITS=8,       # SPSA ablasyonu ve gürültü çalışması (yoğunluk matrisi 4^n) genişliği\n    # --- Etiket ve CV ---\n    BLOCK_SIZE_M=5000, N_SPLITS=3, NA_CUTOFF=15.0, K_CUTOFF=8000.0,          # eşikler ÖRNEK\n    N_LAYERS=2, STEPS=40, BATCH=16, LR=0.05, N_QSVM_TRAIN=80, K_CLUSTERS=3,\n    # --- GIS ---\n    GRID_RES_M=200, P_MIN=0.5, MIN_TARGET_AREA_M2=40000, MAX_TARGETS=8,\n    # --- Sondaj yeri seçimi (QUBO) ---\n    N_DRILL_SITES=4, MIN_SITE_SPACING_M=1000, QUBO_CANDIDATES=40, CAND_THIN_M=400,\n    # --- Maliyet: YER TUTUCU ---\n    CURRENCY=\"USD\", UNIT_COST_DRILLING_PER_M=120.0, UNIT_COST_PAD_PER_SQM=5.0, PAD_AREA_SQM=2500.0, DEPTH_M=150.0,\n    LOGO_DRY_RUN=True,\n)\nos.makedirs(CFG[\"OUT_DIR\"], exist_ok=True)\nif CFG[\"USE_DRIVE\"]:\n    from google.colab import drive\n    drive.mount(\"/content/drive\")\nprint(\"PennyLane\", qml.__version__, \"| mod:\", CFG[\"EXEC_MODE\"])\nif CFG[\"USE_SYNTHETIC\"]:\n    print(\"\\n\" + \"!\"*74 + \"\\n SENTETİK VERİ MODU — sonuçlar jeolojik bulgu DEĞİLDİR, pipeline testidir.\\n\" + \"!\"*74)"
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c04",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 35,
     "status": "ok",
     "timestamp": 1792691007900,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c04",
    "outputId": "725f35cd-0030-4d77-942f-1eabace4e548"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "GPU: yok (CPU)\n",
      "{'classifier': 'lightning.qubit', 'kernel': 'lightning.qubit', 'clustering': 'default.qubit', 'vqe': 'default.qubit'} | lightning.gpu aktif: False\n",
      "TRAIN_BUDGET_S = 240\n"
     ]
    }
   ],
   "source": "BACKENDS = {\n    \"classifier\": dict(sim=\"lightning.qubit\", planned=\"IBM süperiletken (hızlı kapı)\"),\n    \"kernel\":     dict(sim=\"lightning.qubit\", planned=\"IBM süperiletken\"),\n    \"clustering\": dict(sim=\"default.qubit\",   planned=\"Kapı-tabanlı cihaz (SWAP-test)\"),\n    \"vqe\":        dict(sim=\"default.qubit\",   planned=\"Quantinuum iyon tuzağı (all-to-all)\"),\n}\n_WARNED = set()\nGPU_OK = False\ndef detect_gpu():\n    try:\n        out = subprocess.run([\"nvidia-smi\", \"--query-gpu=name,memory.total\", \"--format=csv,noheader\"], capture_output=True, text=True, timeout=10)\n        return out.stdout.strip().splitlines()[0] if out.returncode == 0 and out.stdout.strip() else None\n    except Exception:\n        return None\nGPU_NAME = detect_gpu()\nprint(\"GPU:\", GPU_NAME or \"yok (CPU)\")\n\ndef get_device(role, wires, shots=None):\n    global GPU_OK\n    kw = dict(wires=wires)\n    if shots is not None: kw[\"shots\"] = shots\n    if role in (\"classifier\", \"kernel\"):\n        if CFG[\"PREFER_GPU\"] and role == \"classifier\" and GPU_NAME:\n            try:\n                d = qml.device(\"lightning.gpu\", c_dtype=np.complex64, **kw); GPU_OK = True; return d\n            except Exception:\n                pass\n        try:\n            return qml.device(\"lightning.qubit\", c_dtype=np.complex64, **kw) if role == \"classifier\" else qml.device(\"lightning.qubit\", **kw)\n        except Exception as e:\n            if wires > 12:\n                raise RuntimeError(f\"{wires} qubit için lightning.qubit gerekli ({type(e).__name__}). Çözüm: \"\n                                   \"!pip install -U pennylane pennylane-lightning  ya da CFG['SIM_QUBITS'] değerini düşürün.\")\n            if role not in _WARNED:\n                print(f\"UYARI: lightning.qubit açılamadı -> default.qubit ({type(e).__name__})\"); _WARNED.add(role)\n            return qml.device(\"default.qubit\", **kw)\n    try:\n        return qml.device(BACKENDS[role][\"sim\"], **kw)\n    except Exception:\n        return qml.device(\"default.qubit\", **kw)\n\nprint({r: get_device(r, 4).name for r in BACKENDS}, \"| lightning.gpu aktif:\", GPU_OK)\nif CFG[\"TRAIN_BUDGET_S\"] == \"auto\":\n    CFG[\"TRAIN_BUDGET_S\"] = 1200 if GPU_OK else 240\nprint(\"TRAIN_BUDGET_S =\", CFG[\"TRAIN_BUDGET_S\"])"
  },
  {
   "cell_type": "markdown",
   "id": "c05",
   "metadata": {
    "id": "c05"
   },
   "source": "## Module 1 — Yerel Kasa (Vault) ve giden veri sözleşmesi\n- Koordinatlar **HMAC-SHA256** ile tokenlaştırılır (gizli anahtar yerelde, izin 600). Buluta/QPU'ya giden yük **yalnızca `token + özellikler`**; koordinat alanı bulunması bir **kapıyla** engellenir.\n- Sondaj koordinatları kişisel veri değil **ticari sırdır**; \"KVKK/GDPR uyumu\" yerine veri sınıflandırma ve bulut sözleşmeleri hukuk/BT ile teyit edilmelidir. Bu katman pseudonymization'dır, şifreleme garantisi değildir."
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c06",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 30,
     "status": "ok",
     "timestamp": 1792691007931,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c06",
    "outputId": "71bf9c33-2e33-44bf-e646-f864095a8644"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Token deterministik: True | uzunluk: 32\n"
     ]
    }
   ],
   "source": "class LocalVault:\n    def __init__(self, key_path):\n        if os.path.exists(key_path):\n            self._key = open(key_path, \"rb\").read()\n        else:\n            self._key = secrets.token_bytes(32)\n            with open(key_path, \"wb\") as f: f.write(self._key)\n            os.chmod(key_path, 0o600)\n        self._map = {}\n    def tokenize(self, point_id, x, y):\n        tok = hmac.new(self._key, f\"{point_id}|{x:.2f}|{y:.2f}\".encode(), hashlib.sha256).hexdigest()[:32]\n        self._map[tok] = dict(point_id=point_id, x=float(x), y=float(y)); return tok\n    def lookup(self, tok): return self._map[tok]\n    def save(self, path):\n        json.dump(self._map, open(path, \"w\")); os.chmod(path, 0o600)\n\nFORBIDDEN_KEYS = {\"x\", \"y\", \"lon\", \"lat\", \"easting\", \"northing\", \"geometry\", \"point_id\", \"coords\"}\n\ndef build_cloud_payload(tokens, F):\n    payload = [dict(token=t, features=[float(v) for v in f]) for t, f in zip(tokens, F)]\n    leaked = FORBIDDEN_KEYS & set().union(*[p.keys() for p in payload])\n    assert not leaked, f\"Giden payload'da yasak alan: {leaked}\"\n    return payload\n\nvault = LocalVault(os.path.join(CFG[\"OUT_DIR\"], \"vault_key.bin\"))\nt1 = vault.tokenize(\"P0001\", 500000.0, 4180000.0); t2 = vault.tokenize(\"P0001\", 500000.0, 4180000.0)\nprint(\"Token deterministik:\", t1 == t2, \"| uzunluk:\", len(t1))"
  },
  {
   "cell_type": "markdown",
   "id": "c07",
   "metadata": {
    "id": "c07"
   },
   "source": "## Module 2 — Veri, **qubit bütçesi** ve otomatik kodlama planı\n1. `QubitBudget`: kullanılabilir qubit sayısı. Simülatörde `SIM_QUBITS`; donanımda `min(cihaz qubit, devre-doğruluk sınırı, MAX_ENCODING_QUBITS)`. Devre-doğruluk sınırı: `(1−e₂)^(L·n) ≥ MIN_CIRCUIT_FIDELITY` ⇒ `n ≤ ln(F_min) / (L·ln(1−e₂))`. Donanımda en yüksek doğruluklu fiziksel qubit'ler seçilir (`qubit_map` → transpile `initial_layout`).\n2. `plan_for(n_ölçülen, bütçe)`: özellik > bütçe ⇒ **PCA→açı kodlama**; özellik ≤ bütçe ⇒ **bağlam özellikleriyle doldurma**, 1 özellik/qubit.\n3. `FeatureEncoder`: yalnızca eğitim fold'una fit edilir; açı aralığı `[0, angle_max]` (gürültülü donanımda `π/2`)."
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c08",
   "metadata": {
    "executionInfo": {
     "elapsed": 41,
     "status": "ok",
     "timestamp": 1792691007987,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c08"
   },
   "outputs": [],
   "source": "REQUIRED = [\"x\", \"y\", \"K40_pct\", \"eTh_ppm\", \"res_ohm_m\", \"density\", \"vp\", \"na2so4_pct\", \"k2o_ppm\"]\n\nclass GeologicalDataIngestor:\n    def __init__(self, cfg, seed=SEED):\n        self.cfg, self.rng = cfg, np.random.default_rng(seed)\n        self.truth_center = None\n    def load(self):\n        if self.cfg[\"USE_SYNTHETIC\"]:\n            return self._synthetic()\n        path = self.cfg[\"DATA_CSV\"]\n        if not os.path.exists(path):\n            raise FileNotFoundError(f\"Gerçek veri bulunamadı: {path} (sessizce sentetiğe düşülmez)\")\n        df = pd.read_csv(path)\n        missing = [c for c in REQUIRED if c not in df.columns]\n        if missing: raise ValueError(f\"Eksik sütunlar: {missing}\")\n        df = df.dropna(subset=REQUIRED).reset_index(drop=True)\n        if self.cfg[\"DATA_CRS\"] != self.cfg[\"WORK_CRS\"]:\n            g = gpd.GeoSeries(gpd.points_from_xy(df.x, df.y), crs=self.cfg[\"DATA_CRS\"]).to_crs(self.cfg[\"WORK_CRS\"])\n            df[\"x\"], df[\"y\"] = g.x.values, g.y.values\n        return df\n    def _synthetic(self, n=400):\n        r = self.rng\n        o = gpd.GeoSeries([Point(33.50, 37.70)], crs=\"EPSG:4326\").to_crs(self.cfg[\"WORK_CRS\"]).iloc[0]\n        lx = r.uniform(0, 40000, n); ly = r.uniform(0, 40000, n)\n        blob = lambda cx, cy, s: np.exp(-((lx-cx)**2 + (ly-cy)**2) / (2*s**2))\n        na = blob(12000, 15000, 6000) + 0.6*blob(30000, 28000, 5000)\n        k  = blob(14000, 17000, 5000) + 0.7*blob(8000, 32000, 4000)\n        self.truth_center = (o.x + 13000, o.y + 16000)\n        return pd.DataFrame(dict(\n            x=o.x + lx, y=o.y + ly,\n            K40_pct=np.clip(1.2 + 2.0*k + r.normal(0, .25, n), .05, None),\n            eTh_ppm=np.clip(8 - 4*(na+k) + r.normal(0, .8, n), .1, None),\n            res_ohm_m=np.clip(20*np.exp(-1.5*(na+k)) + r.normal(0, 1, n), .5, None),\n            density=2.2 + .15*(na+k) + r.normal(0, .04, n),\n            vp=1800 + 300*(na+k) + r.normal(0, 50, n),\n            na2so4_pct=np.clip(40*na + r.normal(0, 3, n), 0, None),\n            k2o_ppm=np.clip(20000*k + r.normal(0, 1500, n), 0, None)))\n    @staticmethod\n    def read_las_resampled(las_path, step=0.5):\n        import lasio\n        d = lasio.read(las_path).df().reset_index(); dep = d.columns[0]\n        grid = np.arange(d[dep].min(), d[dep].max(), step); out = pd.DataFrame({dep: grid})\n        for c in d.columns[1:]: out[c] = np.interp(grid, d[dep], d[c])\n        return out\n    @staticmethod\n    def sample_raster_at_points(gdf, raster_path, name):\n        with rasterio.open(raster_path) as src:\n            g = gdf.to_crs(src.crs)\n            gdf[name] = [v[0] for v in src.sample([(p.x, p.y) for p in g.geometry])]\n        return gdf\n\ndef build_features(d):\n    f = pd.DataFrame(index=d.index)\n    f[\"f0_K40\"]      = d[\"K40_pct\"]\n    f[\"f1_eThK\"]     = np.log1p(d[\"eTh_ppm\"]) - np.log1p(d[\"K40_pct\"])\n    f[\"f2_logRes\"]   = np.log10(d[\"res_ohm_m\"])\n    f[\"f3_logImped\"] = np.log(d[\"density\"] * d[\"vp\"])\n    return f"
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c09",
   "metadata": {
    "executionInfo": {
     "elapsed": 101,
     "status": "ok",
     "timestamp": 1792691008091,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c09"
   },
   "outputs": [],
   "source": "# ---------- Qubit bütçesi ----------\nQPU_WORKER_SRC = r\"\"\"\nimport sys, json, numpy as np\ncfg = json.load(open(sys.argv[1])); mode = cfg[\"MODE\"]\ndef get_backend():\n    if cfg[\"HW_PROFILE_SOURCE\"] == \"fake\":\n        import qiskit_ibm_runtime.fake_provider as fp\n        return getattr(fp, cfg[\"HW_BACKEND\"] or cfg[\"HW_FAKE_CLASS\"])()\n    from qiskit_ibm_runtime import QiskitRuntimeService\n    svc = QiskitRuntimeService()\n    return svc.backend(cfg[\"HW_BACKEND\"]) if cfg[\"HW_BACKEND\"] else svc.least_busy(operational=True, simulator=False)\n\nif mode == \"profile\":\n    be = get_backend(); t = be.target; n = be.num_qubits\n    two_q = next(op for op in (\"cz\", \"ecr\", \"cx\") if op in t.operation_names)\n    errs = [p.error for p in t[two_q].values() if p is not None and p.error is not None]\n    fid = {q: 1.0 - float((t[\"measure\"][(q,)].error or 0.0)) for q in range(n)}\n    json.dump(dict(name=be.name, num_qubits=n, avg_cnot_error=float(np.mean(errs)) if errs else 0.01, qubit_fidelities=fid), open(sys.argv[3], \"w\"))\n    sys.exit(0)\n\nfrom qiskit import QuantumCircuit\nfrom qiskit.quantum_info import SparsePauliOp, Statevector\ndef translate(w, x, s):\n    L, n = w.shape[0], w.shape[2]; qc = QuantumCircuit(n)\n    for l in range(L):\n        for i in range(n): qc.ry(float(x[i]) * float(s[l, i]), i)\n        for k in range(w.shape[1]):\n            for i in range(n):\n                qc.rz(float(w[l, k, i, 0]), i); qc.ry(float(w[l, k, i, 1]), i); qc.rz(float(w[l, k, i, 2]), i)\n            r = (k % (n - 1)) + 1\n            for i in range(n): qc.cx(i, (i + r) % n)\n    return qc\ndef mean_z(n): return SparsePauliOp.from_list([(\"I\" * (n - 1 - i) + \"Z\" + \"I\" * i, 1.0 / n) for i in range(n)])\n\nd = np.load(sys.argv[2]); w, X, b, layout = d[\"w\"], d[\"X\"], float(d[\"b\"]), [int(q) for q in d[\"layout\"]]\nsc = d[\"s\"] if \"s\" in d.files else np.ones((w.shape[0], w.shape[2]))\nobs = mean_z(w.shape[2])\nideal = np.array([Statevector.from_instruction(translate(w, x, sc)).expectation_value(obs).real for x in X]) + b\nout = dict(ideal=ideal, depth=0.0, backend=\"\", submitted=0, scores=np.full(len(X), np.nan))\nif mode == \"run\":\n    from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n    be = get_backend(); pm = generate_preset_pass_manager(optimization_level=2, backend=be, initial_layout=layout)\n    pubs, depths = [], []\n    for x in X:\n        isa = pm.run(translate(w, x, sc)); depths.append(isa.depth()); pubs.append((isa, obs.apply_layout(isa.layout)))\n    out.update(depth=float(np.mean(depths)), backend=be.name)\n    if cfg[\"HW_PROFILE_SOURCE\"] == \"fake\" or cfg[\"HW_SUBMIT\"]:\n        try:    from qiskit_ibm_runtime import EstimatorV2 as Estimator\n        except Exception: from qiskit_ibm_runtime import Estimator\n        def make_est(mitigate):\n            est = Estimator(mode=be); applied = []\n            try: est.options.default_precision = cfg[\"HW_SHOTS_PRECISION\"]\n            except Exception: pass\n            if mitigate:                                       # IBM Estimator V2: dynamical decoupling + TREX (ölçüm hatası azaltma); seçenek adı sürüme göre değişebilir\n                for path in [\"dynamical_decoupling.enable\", \"resilience.measure_mitigation\"] + ([\"resilience.zne_mitigation\"] if cfg.get(\"HW_IBM_ZNE\") else []) + ([\"resilience.pec_mitigation\"] if cfg.get(\"HW_IBM_PEC\") else []):\n                    try:\n                        o = est.options\n                        for q in path.split(\".\")[:-1]: o = getattr(o, q)\n                        setattr(o, path.split(\".\")[-1], True); applied.append(path)\n                    except Exception: pass\n            return est, applied\n        est, applied = make_est(cfg.get(\"HW_MITIGATION\", False))\n        try: res = est.run(pubs).result()\n        except Exception:\n            est, applied = make_est(False); res = est.run(pubs).result(); applied = [\"mitigasyon hata verdi -> kapalı\"]\n        out[\"mitigation\"] = \",\".join(applied) if applied else \"yok\"\n        out[\"scores\"] = np.array([float(np.ravel(r.data.evs)[0]) for r in res]) + b; out[\"submitted\"] = 1\n        if cfg.get(\"HW_ZNE\"):                                  # yazılım ZNE: global katlama U (U^-1 U)^k, ölçekler 1,3,5 -> doğrusal ekstrapolasyon (sıfır gürültü)\n            pm1 = generate_preset_pass_manager(optimization_level=1, backend=be, initial_layout=layout); per, lams = [], []\n            for k in (0, 1, 2):\n                pk = []\n                for x in X:\n                    qc = translate(w, x, sc); f = qc.copy()\n                    for _ in range(k):\n                        f.barrier(); f.compose(qc.inverse(), inplace=True); f.barrier(); f.compose(qc, inplace=True)\n                    isa = pm1.run(f); pk.append((isa, obs.apply_layout(isa.layout)))\n                rk = est.run(pk).result(); per.append([float(np.ravel(r.data.evs)[0]) for r in rk]); lams.append(1 + 2 * k)\n            per = np.array(per); out[\"zne\"] = np.array([np.polyfit(lams, per[:, j], 1)[1] for j in range(per.shape[1])]) + b\nnp.savez(sys.argv[3], **out)\n\"\"\"\n\ndef qpu_worker(mode, cfg, arrays=None):\n    \"\"\"Qiskit işleri AYRI SÜREÇTE (libgomp çakışması + izolasyon). mode: profile | ideal | run.\"\"\"\n    import subprocess, sys, tempfile\n    with tempfile.TemporaryDirectory() as d:\n        wp, cj, ip, op = (os.path.join(d, n) for n in (\"w.py\", \"cfg.json\", \"in.npz\", \"out\"))\n        open(wp, \"w\").write(QPU_WORKER_SRC)\n        c = {k: cfg[k] for k in (\"HW_PROFILE_SOURCE\", \"HW_BACKEND\", \"HW_FAKE_CLASS\", \"HW_SUBMIT\", \"HW_SHOTS_PRECISION\", \"HW_MITIGATION\", \"HW_ZNE\", \"HW_IBM_ZNE\", \"HW_IBM_PEC\")}; c[\"MODE\"] = mode\n        json.dump(c, open(cj, \"w\"))\n        if arrays is not None: np.savez(ip, **arrays)\n        env = {k: v for k, v in os.environ.items() if k != \"GLIBC_TUNABLES\"}\n        r = subprocess.run([sys.executable, \"-I\", wp, cj, ip, op + (\".json\" if mode == \"profile\" else \".npz\")], capture_output=True, text=True, timeout=3600, env=env)\n        if r.returncode != 0: raise RuntimeError(f\"Qiskit işçi süreci ({mode}) başarısız rc={r.returncode}:\\n\" + r.stderr[-1500:])\n        if mode == \"profile\": return json.load(open(op + \".json\"))\n        return dict(np.load(op + \".npz\", allow_pickle=True))\n\ndef load_hardware_profile(cfg):\n    if cfg[\"HW_PROFILE_SOURCE\"] == \"mock\": return cfg[\"HW_PROFILE_MOCK\"]\n    p = qpu_worker(\"profile\", cfg); p[\"qubit_fidelities\"] = {int(k): v for k, v in p[\"qubit_fidelities\"].items()}; return p\n\nclass QubitBudget:\n    def __init__(self, cfg, n_layers):\n        self.mode = cfg[\"EXEC_MODE\"]\n        if self.mode == \"simulator\":\n            self.source, self.device_qubits, self.e2 = \"simülatör\", int(cfg[\"SIM_QUBITS\"]), 0.0\n            self.fid = {i: 1.0 for i in range(self.device_qubits)}\n        elif self.mode == \"hardware\":\n            p = load_hardware_profile(cfg)\n            self.source, self.device_qubits, self.e2, self.fid = p[\"name\"], int(p[\"num_qubits\"]), float(p[\"avg_cnot_error\"]), dict(p[\"qubit_fidelities\"])\n        else:\n            raise ValueError(\"EXEC_MODE 'simulator' veya 'hardware' olmalı\")\n        cap_fid = int(np.log(cfg[\"MIN_CIRCUIT_FIDELITY\"]) / (n_layers * np.log(1 - self.e2))) if self.e2 > 0 else 10**9\n        self.limits = dict(cihaz=self.device_qubits, devre_dogrulugu=cap_fid, ust_sinir=int(cfg[\"MAX_ENCODING_QUBITS\"]))\n        self.n_qubits = int(max(1, min(self.limits.values())))\n        order = sorted(self.fid, key=self.fid.get, reverse=True) if self.mode == \"hardware\" else list(range(self.device_qubits))\n        self.qubit_map = order[:self.n_qubits]                       # mantıksal i -> fiziksel qubit_map[i]\n        self.angle_max = np.pi if self.e2 <= 0.03 else np.pi / 2\n        self.limiting = min(self.limits, key=self.limits.get)\n\nCONTEXT_TIERS = [(\"mean\", 2500.0), (\"mean\", 6000.0), (\"std\", 2500.0), (\"mean\", 12000.0), (\"std\", 6000.0)]\n\ndef plan_for(n_measured, B):\n    \"\"\"B: efektif qubit bütçesi. Dönen genişlik her zaman <= B.\"\"\"\n    max_ctx = len(CONTEXT_TIERS) * n_measured\n    if n_measured > B:\n        return dict(width=B, pca=True, n_context=0, idle=0, strategy=f\"PCA ({n_measured}→{B}) + açı kodlama\")\n    width = min(B, n_measured + max_ctx)\n    return dict(width=width, pca=False, n_context=width - n_measured, idle=B - width,\n                strategy=(\"açı kodlama (1 özellik/qubit)\" if width == n_measured else f\"açı kodlama: {n_measured} ölçülen + {width - n_measured} bağlam\"))\n\ndef context_block(Xb, tree, R, kind):\n    out = np.empty_like(Xb)\n    for i in range(len(Xb)):\n        nb = [j for j in tree.query_ball_point(tree.data[i], R) if j != i]\n        if not nb: out[i] = Xb[i] if kind == \"mean\" else 0.0\n        else:      out[i] = Xb[nb].mean(0) if kind == \"mean\" else Xb[nb].std(0)\n    return out\n\ndef build_pool(base_df, xy, B):\n    \"\"\"Ölçülen özellikler + (bütçe izin veriyorsa) komşuluk bağlam özellikleri. Etiket kullanılmaz.\"\"\"\n    cols, names, n0 = [base_df.values], list(base_df.columns), base_df.shape[1]\n    n = n0\n    if n0 < B:\n        tree = cKDTree(xy)\n        for kind, R in CONTEXT_TIERS:\n            if n >= B: break\n            blk = context_block(base_df.values, tree, R, kind); take = min(n0, B - n)\n            cols.append(blk[:, :take]); names += [f\"{kind}{R/1000:g}km_{c}\" for c in base_df.columns[:take]]; n += take\n    return np.hstack(cols), names\n\nclass FeatureEncoder:\n    def __init__(self, budget): self.b = budget\n    def fit(self, X):\n        self.use_pca = X.shape[1] > self.b.n_qubits\n        if self.use_pca:\n            self.sc = StandardScaler().fit(X); self.pca = PCA(self.b.n_qubits).fit(self.sc.transform(X)); Z = self.pca.transform(self.sc.transform(X))\n        else:\n            Z = X\n        self.lo, self.hi = np.percentile(Z, 1, 0), np.percentile(Z, 99, 0); self.width = Z.shape[1]; return self\n    def transform(self, X):\n        Z = self.pca.transform(self.sc.transform(X)) if self.use_pca else X\n        return (np.clip(Z, self.lo, self.hi) - self.lo) / (self.hi - self.lo + 1e-12) * self.b.angle_max"
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c10",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 327,
     "status": "ok",
     "timestamp": 1792691008435,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c10",
    "outputId": "7b6afee5-6d19-43e1-aa89-49bde66e6910"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "N=400 | Na 0.172 | K 0.135 | Co-location 0.068 | uzamsal blok 78\n",
      "\n",
      "QUBIT BÜTÇESİ  mod=simulator (simülatör) | limitler={'cihaz': 20, 'devre_dogrulugu': 1000000000, 'ust_sinir': 20} | bütçe=20 (sınırlayan: cihaz)\n",
      "KODLAMA PLANI  açı kodlama: 4 ölçülen + 16 bağlam | genişlik=20 qubit | boşta=0 | açı üst sınırı=3.14\n",
      "fiziksel qubit haritası (mantıksal→fiziksel): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n",
      "kodlanan özellikler: ['f0_K40', 'f1_eThK', 'f2_logRes', 'f3_logImped', 'mean2.5km_f0_K40', 'mean2.5km_f1_eThK'] ...\n",
      "\n",
      "  cihaz_qubit  efektif_butce  olculen_ozellik  genislik  bosta                           strateji\n",
      "           3              3                4         3      0            PCA (4→3) + açı kodlama\n",
      "           3              3               30         3      0           PCA (30→3) + açı kodlama\n",
      "           5              5                4         5      0  açı kodlama: 4 ölçülen + 1 bağlam\n",
      "           5              5               30         5      0           PCA (30→5) + açı kodlama\n",
      "           7              7                4         7      0  açı kodlama: 4 ölçülen + 3 bağlam\n",
      "           7              7               30         7      0           PCA (30→7) + açı kodlama\n",
      "          12             12                4        12      0  açı kodlama: 4 ölçülen + 8 bağlam\n",
      "          12             12               30        12      0          PCA (30→12) + açı kodlama\n",
      "          20             20                4        20      0 açı kodlama: 4 ölçülen + 16 bağlam\n",
      "          20             20               30        20      0          PCA (30→20) + açı kodlama\n",
      "          27             20                4        20      0 açı kodlama: 4 ölçülen + 16 bağlam\n",
      "          27             20               30        20      0          PCA (30→20) + açı kodlama\n",
      "         127             20                4        20      0 açı kodlama: 4 ölçülen + 16 bağlam\n",
      "         127             20               30        20      0          PCA (30→20) + açı kodlama\n",
      "\n",
      "Tokenlaştırılan nokta: 400\n"
     ]
    }
   ],
   "source": "ingestor = GeologicalDataIngestor(CFG)\ndf = ingestor.load()\nX_df = build_features(df); X_base = X_df.values\ny_na = (df[\"na2so4_pct\"] >= CFG[\"NA_CUTOFF\"]).astype(int).values\ny_k  = (df[\"k2o_ppm\"]    >= CFG[\"K_CUTOFF\"]).astype(int).values\ny    = (y_na & y_k).astype(int)                 # ikili hedef: co-location\nfacies = y_na + y_k                             # 0: hiçbiri, 1: tek mineral, 2: ikisi birlikte\nB_ = CFG[\"BLOCK_SIZE_M\"]\ngroups = ((df[\"x\"]//B_).astype(int)*100000 + (df[\"y\"]//B_).astype(int)).values\n\nbudget = QubitBudget(CFG, CFG[\"N_LAYERS\"])\nX_pool, pool_names = build_pool(X_df, df[[\"x\", \"y\"]].values, budget.n_qubits)\nplan = plan_for(X_df.shape[1], budget.n_qubits)\nNQ = min(budget.n_qubits, X_pool.shape[1])\nassert NQ >= 4, \"VQE ve kümeleme için en az 4 qubit gerekir\"\n\nprint(f\"N={len(df)} | Na {y_na.mean():.3f} | K {y_k.mean():.3f} | Co-location {y.mean():.3f} | uzamsal blok {len(np.unique(groups))}\")\nprint(f\"\\nQUBIT BÜTÇESİ  mod={budget.mode} ({budget.source}) | limitler={budget.limits} | bütçe={budget.n_qubits} (sınırlayan: {budget.limiting})\")\nprint(f\"KODLAMA PLANI  {plan['strategy']} | genişlik={NQ} qubit | boşta={budget.n_qubits - NQ} | açı üst sınırı={budget.angle_max:.2f}\")\nprint(f\"fiziksel qubit haritası (mantıksal→fiziksel): {budget.qubit_map[:NQ]}\")\nprint(\"kodlanan özellikler:\", pool_names[:6], \"...\" if len(pool_names) > 6 else \"\")\n\n# Planlayıcı davranış tablosu: farklı bütçeler ve özellik sayıları\nrows = []\nfor Bq in (3, 5, 7, 12, 20, 27, 127):\n    for nm in (4, 30):\n        eff = min(Bq, CFG[\"MAX_ENCODING_QUBITS\"]); p = plan_for(nm, eff)\n        rows.append(dict(cihaz_qubit=Bq, efektif_butce=eff, olculen_ozellik=nm, genislik=p[\"width\"], bosta=p[\"idle\"], strateji=p[\"strategy\"]))\nplan_table = pd.DataFrame(rows); print(\"\\n\", plan_table.to_string(index=False))\nplanner_ok = bool((plan_table.genislik <= plan_table.efektif_butce).all())\n\ntokens = [vault.tokenize(f\"P{i:04d}\", xx, yy) for i, (xx, yy) in enumerate(zip(df.x, df.y))]\nvault.save(os.path.join(CFG[\"OUT_DIR\"], \"vault_map.json\")); print(\"\\nTokenlaştırılan nokta:\", len(tokens))"
  },
  {
   "cell_type": "markdown",
   "id": "c11",
   "metadata": {
    "id": "c11"
   },
   "source": "## Module 3 — Kümeleme (SWAP-test K-Means, **amplitüd kodlama bütçeye göre**) ve VQE (oyuncak)\nKodlanan `d` özellik `[0,1]`'e ölçeklenir, tamamlayıcı amplitüd kodlamayla `2d` genliğe çıkarılır `v=[x,1−x]` ve `2^m` boyutuna sıfırla doldurulur (`m=⌈log₂ 2d⌉`). SWAP-test iki yazmaç + 1 ancilla ister: **`2m+1 ≤ bütçe`**. Bütçeye sığmazsa özellik sayısı PCA ile otomatik azaltılır. (20 özellik → `m=6` → 13 qubit; 4 özellik → `m=3` → 7 qubit.)\nDevre sonucu klasik hesapla doğrulanır; klasik K-Means ile kıyaslanır. VQE katsayıları **yer tutucudur** (jeolojik karar üretmez)."
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c12",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 15229,
     "status": "ok",
     "timestamp": 1792691023665,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c12",
    "outputId": "18300615-2b86-4b73-96c5-ccab1327055f"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "ozellik                20.0000\n",
      "amplitud_m              6.0000\n",
      "swap_qubit             13.0000\n",
      "swap_test_max_err       0.0000\n",
      "n_circuit_calls      4800.0000\n",
      "sec                    15.1000\n",
      "ari_q_vs_facies         0.4446\n",
      "ari_c_vs_facies         0.4288\n",
      "ari_q_vs_c              0.9720\n",
      "sil_q                   0.6539\n"
     ]
    }
   ],
   "source": "def cluster_encoding(Z01, B):\n    d = Z01.shape[1]; m = max(1, int(np.ceil(np.log2(2 * d))))\n    info = dict(d_in=d, pca=False)\n    if 2 * m + 1 > B:                                     # SWAP-test yazmaçları bütçeye sığmıyor -> özellik azalt\n        m = max(1, (B - 1) // 2); d_new = max(1, 2 ** (m - 1))\n        Zr = PCA(d_new).fit_transform(Z01); Z01 = (Zr - Zr.min(0)) / (np.ptp(Zr, axis=0) + 1e-12); info.update(pca=True, d_used=d_new)\n    V = np.hstack([Z01, 1 - Z01]); V = np.hstack([V, np.zeros((len(V), 2 ** m - V.shape[1]))])\n    info.update(m=m, qubits=2 * m + 1)\n    return V / np.linalg.norm(V, axis=1, keepdims=True), info\n\nclass SwapTestKMeans:\n    def __init__(self, m, k=3, max_iter=15, seed=SEED):\n        self.m, self.k, self.max_iter, self.seed, self.calls = m, k, max_iter, seed, 0\n        self.dev = get_device(\"clustering\", 2 * m + 1)\n        A, Bw = list(range(1, m + 1)), list(range(m + 1, 2 * m + 1))\n        @qml.qnode(self.dev)\n        def swap(states):\n            qml.StatePrep(states, wires=A + Bw)\n            qml.Hadamard(wires=0)\n            for a, b in zip(A, Bw): qml.CSWAP(wires=[0, a, b])\n            qml.Hadamard(wires=0)\n            return qml.expval(qml.PauliZ(0))                  # = |<a|c>|^2\n        self.swap = swap\n    def fidelity(self, A, c):\n        self.calls += len(A); dim = 2 ** (2 * self.m); chunk = max(1, 4_000_000 // dim); out = []\n        for s in range(0, len(A), chunk):\n            out.append(np.asarray(self.swap(np.einsum(\"ni,j->nij\", A[s:s+chunk], c).reshape(-1, dim))))\n        return np.concatenate(out)\n    def fit_predict(self, V):\n        r = np.random.default_rng(self.seed); cent = [V[r.integers(len(V))]]\n        for _ in range(self.k - 1):\n            d = np.min([1 - self.fidelity(V, c) for c in cent], axis=0); cent.append(V[np.argmax(d)])\n        cent = np.array(cent); labels = None\n        for it in range(self.max_iter):\n            new = np.stack([1 - self.fidelity(V, c) for c in cent], axis=1).argmin(1)\n            if labels is not None and np.array_equal(new, labels): break\n            labels = new\n            for j in range(self.k):\n                if (labels == j).any(): mu = V[labels == j].mean(0); cent[j] = mu / np.linalg.norm(mu)\n        self.n_iter = it + 1\n        return labels\n\nenc_all = FeatureEncoder(budget).fit(X_pool); Xs_all = enc_all.transform(X_pool)\nV_all, cinfo = cluster_encoding(Xs_all / budget.angle_max, budget.n_qubits)\nqk = SwapTestKMeans(cinfo[\"m\"], CFG[\"K_CLUSTERS\"])\nswap_err = float(np.max(np.abs(qk.fidelity(V_all[:50], V_all[0]) - (V_all[:50] @ V_all[0]) ** 2)))\nt0 = time.time(); qk.calls = 0\nlab_q = qk.fit_predict(V_all)\nlab_c = KMeans(CFG[\"K_CLUSTERS\"], n_init=10, random_state=SEED).fit_predict(V_all)\nclu = dict(ozellik=cinfo[\"d_in\"], amplitud_m=cinfo[\"m\"], swap_qubit=cinfo[\"qubits\"], swap_test_max_err=swap_err, n_circuit_calls=int(qk.calls), sec=round(time.time()-t0, 1),\n           ari_q_vs_facies=adjusted_rand_score(facies, lab_q), ari_c_vs_facies=adjusted_rand_score(facies, lab_c),\n           ari_q_vs_c=adjusted_rand_score(lab_q, lab_c), sil_q=silhouette_score(V_all, lab_q, metric=\"cosine\"))\nprint(pd.Series(clu).round(4).to_string())"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c13",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 62820,
     "status": "ok",
     "timestamp": 1792691086482,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c13",
    "outputId": "e9dbf4f7-e1b6-4906-8e51-d23e6d57bef3"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "{'E_vqe': -2.2697, 'E_exact': -2.2788, 'rel_err_pct': 0.3984}\n"
     ]
    }
   ],
   "source": "class IonicToyVQE:\n    H_FIELD = [0.30, 0.20, -0.40, 0.10]                                             # YER TUTUCU: K+, Na+, SO4--, Cl-\n    J = {(0, 2): -0.8, (1, 2): -0.6, (0, 3): -0.5, (1, 3): -0.4, (0, 1): 0.3}       # YER TUTUCU\n    GAMMA = 0.2\n    def __init__(self, layers=3, seed=SEED):\n        self.L, self.seed = layers, seed\n        coeffs, ops = list(self.H_FIELD), [qml.Z(i) for i in range(4)]\n        for (i, j), v in self.J.items(): coeffs.append(v); ops.append(qml.Z(i) @ qml.Z(j))\n        for i in range(4): coeffs.append(self.GAMMA); ops.append(qml.X(i))\n        self.H = qml.dot(coeffs, ops)\n        self.exact = float(np.linalg.eigvalsh(qml.matrix(self.H, wire_order=range(4)))[0])\n        self.dev = get_device(\"vqe\", 4)\n    def run(self, steps=150, restarts=3, lr=0.05):\n        @qml.qnode(self.dev, interface=\"autograd\")\n        def energy(p):\n            qml.StronglyEntanglingLayers(p, wires=range(4)); return qml.expval(self.H)\n        best = (np.inf, None)\n        for r_i in range(restarts):\n            r = np.random.default_rng(self.seed + r_i)\n            p = pnp.array(r.normal(0, 0.1, (self.L, 4, 3)), requires_grad=True); opt = qml.AdamOptimizer(lr); curve = []\n            for _ in range(steps): p, e = opt.step_and_cost(energy, p); curve.append(float(e))\n            e_f = float(energy(p))\n            if e_f < best[0]: best = (e_f, curve)\n        self.curve = best[1]\n        return dict(E_vqe=best[0], E_exact=self.exact, rel_err_pct=100*abs(best[0]-self.exact)/abs(self.exact))\n\nvqe_res = IonicToyVQE().run(); print({k: round(v, 4) for k, v in vqe_res.items()})"
  },
  {
   "cell_type": "markdown",
   "id": "c14",
   "metadata": {
    "id": "c14"
   },
   "source": "## Module 4 — Kuantum sınıflandırıcılar (genişlikten bağımsız) ve uzamsal blok CV\n- **VQC:** data re-uploading, **ortalama-Z okuma** `(1/n)Σ⟨Zᵢ⟩` (geniş devrelerde tek-qubit okumasına göre daha iyi koşullu), küçük başlangıç ağırlıkları, dengeli mini-batch, adjoint gradyan. Eğitim **hesap bütçelidir**: örnek başına süre ölçülür, adım/batch `TRAIN_BUDGET_S`'e göre ayarlanır.\n- **QSVM:** IQP kuantum kernel, **durum-vektörü** ile hesaplanır (`K=|⟨ψᵢ|ψⱼ⟩|²`; compute-uncompute devresiyle sayısal olarak doğrulanır — `O(N)` devre, `O(N²)` değil). Yazmaç genişliği `min(genişlik, QSVM_MAX_QUBITS)`.\n- **Taban çizgileri:** SVM-RBF, Random Forest (kodlanan özelliklerle), **Random Forest (yalnızca 4 temel özellik)** ve rastgele. Böylece bağlam özelliklerinin katkısı ayrı görülür."
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c15",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 499,
     "status": "ok",
     "timestamp": 1792691086828,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c15",
    "outputId": "0e720104-bbe0-4150-82e8-58531252c667"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "QSVM durum-vektörü kernel vs compute-uncompute: maks fark 1.11e-15\n"
     ]
    }
   ],
   "source": "class VQCModule:\n    def __init__(self, nq, layers=2, seed=SEED, entangle=True):\n        self.nq, self.L, self.seed, self.entangle = nq, layers, seed, entangle\n        self.dev = get_device(\"classifier\", nq)\n        coeffs = [1.0 / nq] * nq\n        @qml.qnode(self.dev, interface=\"autograd\", diff_method=\"adjoint\")\n        def circ(w, x):\n            for l in range(layers):\n                qml.AngleEmbedding(x, wires=range(nq), rotation=\"Y\")\n                if entangle: qml.StronglyEntanglingLayers(w[l], wires=range(nq))\n                else:\n                    for i in range(nq): qml.Rot(w[l][0, i, 0], w[l][0, i, 1], w[l][0, i, 2], wires=i)   # dolanıksız (ürün durumu) ablasyonu\n            return qml.expval(qml.dot(coeffs, [qml.Z(i) for i in range(nq)]))\n        self.circ = circ\n    def _init(self, r): return pnp.array(r.normal(0, 0.1, size=(self.L, 1, self.nq, 3)), requires_grad=True)\n    def _pred(self, w, b, X): return pnp.stack([self.circ(w, x) for x in X]) + b\n\n    def sec_per_sample(self, x):\n        w = self._init(np.random.default_rng(self.seed)); f = lambda w_: self.circ(w_, x)\n        qml.grad(f)(w)                                           # ısınma\n        t = time.time(); qml.grad(f)(w); qml.grad(f)(w); return (time.time() - t) / 2\n\n    def fit(self, X, y, steps, batch, lr, optimizer=\"adam\"):\n        r = np.random.default_rng(self.seed); w = self._init(r); b = pnp.array(0.0, requires_grad=True)\n        cost = lambda w, b, Xb, yb: pnp.mean((self._pred(w, b, Xb) - yb) ** 2)\n        pos, neg = np.where(y == 1)[0], np.where(y == 0)[0]\n        opt = qml.AdamOptimizer(lr) if optimizer == \"adam\" else qml.SPSAOptimizer(maxiter=steps, c=0.1, a=0.3)\n        self.history = []\n        for _ in range(steps):\n            idx = np.concatenate([r.choice(pos, batch//2), r.choice(neg, batch//2)])\n            Xb = pnp.array(X[idx], requires_grad=False); yb = pnp.array(2.0*y[idx] - 1.0, requires_grad=False)\n            if optimizer == \"adam\":\n                (w, b, _, _), c = opt.step_and_cost(cost, w, b, Xb, yb)\n            else:                                            # SPSA: parametreler AYRI argüman (tuple vermek eğitimi sessizce durdurur)\n                (w, b), c = opt.step_and_cost(lambda w_, b_: cost(w_, b_, Xb, yb), w, b)\n            self.history.append(float(c))\n        self.w, self.b = w, b\n        return self\n\n    def decision_function(self, X):\n        return np.array(self._pred(self.w, self.b, pnp.array(X, requires_grad=False)))\n\n    def decision_function_noisy(self, X, p):                 # yoğunluk matrisi (4^n): yalnızca küçük genişlikte\n        assert self.nq <= 10, \"gürültülü simülasyon yalnızca <=10 qubit\"\n        dev = qml.device(\"default.mixed\", wires=self.nq); coeffs = [1.0 / self.nq] * self.nq\n        @qml.qnode(dev)\n        def c(w, x):\n            for l in range(self.L):\n                qml.AngleEmbedding(x, wires=range(self.nq), rotation=\"Y\")\n                qml.StronglyEntanglingLayers(w[l], wires=range(self.nq))\n                for q in range(self.nq): qml.DepolarizingChannel(p, wires=q)\n            return qml.expval(qml.dot(coeffs, [qml.Z(i) for i in range(self.nq)]))\n        w = pnp.array(self.w, requires_grad=False)\n        return np.array([float(c(w, x)) for x in X]) + float(self.b)\n\n\ndef plan_training(sps, steps, batch, budget_s):\n    total = budget_s / max(sps, 1e-6); b = batch\n    while b * steps > total and b > 4: b //= 2\n    s = int(min(steps, max(8, total // b)))\n    return b, s, s * b * sps\n\n\nclass QSVMModule:\n    def __init__(self, kq, n_train=80, seed=SEED):\n        self.kq, self.n_train, self.seed = kq, n_train, seed\n        self.dev = get_device(\"kernel\", kq)\n        pattern = None if kq <= 6 else [(i, i + 1) for i in range(kq - 1)]     # geniş yazmaçta komşu-ZZ (O(n) kapı)\n        @qml.qnode(self.dev)\n        def st(x):\n            qml.IQPEmbedding(x, wires=range(kq), n_repeats=2, pattern=pattern); return qml.state()\n        self.st = st\n    def _states(self, X): return np.array([self.st(x) for x in X[:, :self.kq]])\n    def fit(self, X, y):\n        r = np.random.default_rng(self.seed)\n        pos, neg = np.where(y == 1)[0], np.where(y == 0)[0]\n        k = min(len(pos), self.n_train // 2); n_neg = min(len(neg), self.n_train - k)\n        idx = np.concatenate([r.choice(pos, k, replace=False), r.choice(neg, n_neg, replace=False)])\n        self.S, ya = self._states(X[idx]), y[idx]\n        self.svc = SVC(kernel=\"precomputed\", C=1.0, class_weight=\"balanced\").fit(np.abs(self.S.conj() @ self.S.T) ** 2, ya)\n        return self\n    def decision_function(self, X):\n        return self.svc.decision_function(np.abs(self._states(X).conj() @ self.S.T) ** 2)\n\n# QSVM durum-vektörü çekirdeği doğrulaması (4 qubit, compute-uncompute devresine karşı)\n_dk = qml.device(\"default.qubit\", wires=4)\n@qml.qnode(_dk)\ndef _kc(a, b): qml.IQPEmbedding(a, wires=range(4), n_repeats=2); qml.adjoint(qml.IQPEmbedding)(b, wires=range(4), n_repeats=2); return qml.probs(wires=range(4))\n_q4 = QSVMModule(4); _Y = np.random.default_rng(3).uniform(0, np.pi, (5, 4)); _S = _q4._states(_Y)\nkernel_err = float(np.abs(np.abs(_S.conj() @ _S.T) ** 2 - np.array([[_kc(a, b)[0] for b in _Y] for a in _Y])).max())\nprint(f\"QSVM durum-vektörü kernel vs compute-uncompute: maks fark {kernel_err:.2e}\")\n\n\ndef best_f1(y_true, s):\n    ts = np.quantile(s, np.linspace(0.05, 0.95, 40))\n    return max(f1_score(y_true, (s >= t).astype(int), zero_division=0) for t in ts)\n\nMODEL_NAMES = [\"VQC\", \"QSVM\", \"SVM-RBF\", \"RandomForest\", \"RF-temel4\"]\nQUANTUM, CLASSICAL = [\"VQC\", \"QSVM\"], [\"SVM-RBF\", \"RandomForest\", \"RF-temel4\"]\n\ndef run_cv(X_pool, X_base, y, groups, cfg, budget):\n    folds = list(GroupKFold(n_splits=cfg[\"N_SPLITS\"]).split(X_pool, y, groups))\n    oof = {n: np.full(len(y), np.nan) for n in MODEL_NAMES}\n    rows, hist, fold0, train_plan = [], [], None, None\n    for i, (tr, te) in enumerate(folds):\n        if y[tr].sum() == 0 or y[te].sum() == 0:\n            print(f\"Fold {i}: tek sınıf, atlandı\"); continue\n        enc = FeatureEncoder(budget).fit(X_pool[tr]); Xtr, Xte, ytr, yte = enc.transform(X_pool[tr]), enc.transform(X_pool[te]), y[tr], y[te]\n        W = enc.width; scores, secs = {}, {}\n        m = VQCModule(W, cfg[\"N_LAYERS\"])\n        if train_plan is None:                                        # örnek başına süreyi bir kez ölç, bütçeye göre planla\n            sps = m.sec_per_sample(Xtr[0]); b_, s_, est = plan_training(sps, cfg[\"STEPS\"], cfg[\"BATCH\"], cfg[\"TRAIN_BUDGET_S\"])\n            train_plan = dict(width=W, sec_per_sample=sps, batch=b_, steps=s_, est_train_s=est, full=(b_ == cfg[\"BATCH\"] and s_ == cfg[\"STEPS\"]))\n            print(f\"Eğitim planı: {W} qubit | örnek başına {sps:.2f} sn | batch {b_} × {s_} adım ≈ {est:.0f} sn/fold\" + (\"\" if train_plan[\"full\"] else \"  (hesap bütçesiyle kısaltıldı)\"))\n        t0 = time.time(); m.fit(Xtr, ytr, train_plan[\"steps\"], train_plan[\"batch\"], cfg[\"LR\"]); hist.append(m.history)\n        scores[\"VQC\"] = m.decision_function(Xte); secs[\"VQC\"] = time.time() - t0\n        if fold0 is None: fold0 = dict(model=m, enc=enc, Xtr=Xtr, ytr=ytr, Xte=Xte, yte=yte)\n        t0 = time.time(); scores[\"QSVM\"] = QSVMModule(min(W, cfg[\"QSVM_MAX_QUBITS\"]), cfg[\"N_QSVM_TRAIN\"]).fit(Xtr, ytr).decision_function(Xte); secs[\"QSVM\"] = time.time() - t0\n        t0 = time.time(); scores[\"SVM-RBF\"] = SVC(kernel=\"rbf\", class_weight=\"balanced\").fit(Xtr, ytr).decision_function(Xte); secs[\"SVM-RBF\"] = time.time() - t0\n        t0 = time.time(); scores[\"RandomForest\"] = RandomForestClassifier(300, class_weight=\"balanced\", random_state=SEED).fit(Xtr, ytr).predict_proba(Xte)[:, 1]; secs[\"RandomForest\"] = time.time() - t0\n        t0 = time.time(); scores[\"RF-temel4\"] = RandomForestClassifier(300, class_weight=\"balanced\", random_state=SEED).fit(X_base[tr], ytr).predict_proba(X_base[te])[:, 1]; secs[\"RF-temel4\"] = time.time() - t0\n        for n in MODEL_NAMES:\n            s = scores[n]; oof[n][te] = s\n            rows.append(dict(fold=i, model=n, auc=roc_auc_score(yte, s), ap=average_precision_score(yte, s), f1=best_f1(yte, s), sec=secs[n]))\n        rows.append(dict(fold=i, model=\"Taban (rastgele)\", auc=0.5, ap=float(yte.mean()), f1=np.nan, sec=0))\n        print(f\"Fold {i} tamam | test pozitif oranı {yte.mean():.3f} | VQC {secs['VQC']:.0f} sn\")\n    return pd.DataFrame(rows), oof, hist, fold0, train_plan"
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c16",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 371
    },
    "executionInfo": {
     "elapsed": 1082253,
     "status": "ok",
     "timestamp": 1792692169082,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     },
     "user_tz": -180
    },
    "id": "c16",
    "outputId": "51ef18d6-70b4-4022-c15f-7ae214be173d"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Eğitim planı: 20 qubit | örnek başına 1.53 sn | batch 4 × 39 adım ≈ 238 sn/fold  (hesap bütçesiyle kısaltıldı)\n",
      "Fold 0 tamam | test pozitif oranı 0.075 | VQC 359 sn\n",
      "Fold 1 tamam | test pozitif oranı 0.113 | VQC 366 sn\n",
      "Fold 2 tamam | test pozitif oranı 0.015 | VQC 342 sn\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                    auc            ap            f1             sec        \n",
       "                   mean    std   mean    std   mean    std     mean     std\n",
       "model                                                                      \n",
       "QSVM              0.978  0.032  0.789  0.208  0.745  0.270    1.594   0.103\n",
       "RF-temel4         0.997  0.005  0.968  0.049  0.744  0.269    0.571   0.025\n",
       "RandomForest      0.999  0.001  0.992  0.013  0.771  0.285    0.621   0.006\n",
       "SVM-RBF           0.999  0.001  0.992  0.013  0.771  0.285    0.005   0.000\n",
       "Taban (rastgele)  0.500  0.000  0.067  0.049    NaN    NaN    0.000   0.000\n",
       "VQC               0.979  0.029  0.959  0.044  0.758  0.272  355.755  12.580"
      ],
      "text/html": [
       "\n",
       "  <div id=\"df-2b33c522-f0e7-4bb0-be53-e446c6e55f50\" class=\"colab-df-container\">\n",
       "    <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">auc</th>\n",
       "      <th colspan=\"2\" halign=\"left\">ap</th>\n",
       "      <th colspan=\"2\" halign=\"left\">f1</th>\n",
       "      <th colspan=\"2\" halign=\"left\">sec</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>model</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>QSVM</th>\n",
       "      <td>0.978</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.789</td>\n",
       "      <td>0.208</td>\n",
       "      <td>0.745</td>\n",
       "      <td>0.270</td>\n",
       "      <td>1.594</td>\n",
       "      <td>0.103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RF-temel4</th>\n",
       "      <td>0.997</td>\n",
       "      <td>0.005</td>\n",
       "      <td>0.968</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.744</td>\n",
       "      <td>0.269</td>\n",
       "      <td>0.571</td>\n",
       "      <td>0.025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RandomForest</th>\n",
       "      <td>0.999</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.013</td>\n",
       "      <td>0.771</td>\n",
       "      <td>0.285</td>\n",
       "      <td>0.621</td>\n",
       "      <td>0.006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SVM-RBF</th>\n",
       "      <td>0.999</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.992</td>\n",
       "      <td>0.013</td>\n",
       "      <td>0.771</td>\n",
       "      <td>0.285</td>\n",
       "      <td>0.005</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Taban (rastgele)</th>\n",
       "      <td>0.500</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.067</td>\n",
       "      <td>0.049</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>VQC</th>\n",
       "      <td>0.979</td>\n",
       "      <td>0.029</td>\n",
       "      <td>0.959</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.758</td>\n",
       "      <td>0.272</td>\n",
       "      <td>355.755</td>\n",
       "      <td>12.580</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "    <div class=\"colab-df-buttons\">\n",
       "\n",
       "  <div class=\"colab-df-container\">\n",
       "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2b33c522-f0e7-4bb0-be53-e446c6e55f50')\"\n",
       "            title=\"Convert this dataframe to an interactive table.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
       "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "\n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    .colab-df-buttons div {\n",
       "      margin-bottom: 4px;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "    <script>\n",
       "      const buttonEl =\n",
       "        document.querySelector('#df-2b33c522-f0e7-4bb0-be53-e446c6e55f50 button.colab-df-convert');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      async function convertToInteractive(key) {\n",
       "        const element = document.querySelector('#df-2b33c522-f0e7-4bb0-be53-e446c6e55f50');\n",
       "        const dataTable =\n",
       "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                    [key], {});\n",
       "        if (!dataTable) return;\n",
       "\n",
       "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "          + ' to learn more about interactive tables.';\n",
       "        element.innerHTML = '';\n",
       "        dataTable['output_type'] = 'display_data';\n",
       "        await google.colab.output.renderOutput(dataTable, element);\n",
       "        const docLink = document.createElement('div');\n",
       "        docLink.innerHTML = docLinkHtml;\n",
       "        element.appendChild(docLink);\n",
       "      }\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "\n",
       "  <div id=\"id_29a3dbf8-47cb-4e4d-b6b2-2c66ce01a391\">\n",
       "    <style>\n",
       "      .colab-df-generate {\n",
       "        background-color: #E8F0FE;\n",
       "        border: none;\n",
       "        border-radius: 50%;\n",
       "        cursor: pointer;\n",
       "        display: none;\n",
       "        fill: #1967D2;\n",
       "        height: 32px;\n",
       "        padding: 0 0 0 0;\n",
       "        width: 32px;\n",
       "      }\n",
       "\n",
       "      .colab-df-generate:hover {\n",
       "        background-color: #E2EBFA;\n",
       "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "        fill: #174EA6;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate {\n",
       "        background-color: #3B4455;\n",
       "        fill: #D2E3FC;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate:hover {\n",
       "        background-color: #434B5C;\n",
       "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "        fill: #FFFFFF;\n",
       "      }\n",
       "    </style>\n",
       "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('summary')\"\n",
       "            title=\"Generate code using this dataframe.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "    <script>\n",
       "      (() => {\n",
       "      const buttonEl =\n",
       "        document.querySelector('#id_29a3dbf8-47cb-4e4d-b6b2-2c66ce01a391 button.colab-df-generate');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      buttonEl.onclick = () => {\n",
       "        google.colab.notebook.generateWithVariable('summary');\n",
       "      }\n",
       "      })();\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "    </div>\n",
       "  </div>\n"
      ],
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "dataframe",
       "variable_name": "summary",
       "summary": "{\n  \"name\": \"summary\",\n  \"rows\": 6,\n  \"fields\": [\n    {\n      \"column\": [\n        \"model\",\n        \"\"\n      ],\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 6,\n        \"samples\": [\n          \"QSVM\",\n          \"RF-temel4\",\n          \"VQC\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"auc\",\n        \"mean\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.2004421778635092,\n        \"min\": 0.5,\n        \"max\": 0.999,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          0.997,\n          0.979,\n          0.999\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"auc\",\n        \"std\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.014975535605335346,\n        \"min\": 0.0,\n        \"max\": 0.032,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          0.005,\n          0.029,\n          0.001\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"ap\",\n        \"mean\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3645439616836356,\n        \"min\": 0.067,\n        \"max\": 0.992,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          0.968,\n          0.959,\n          0.992\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"ap\",\n        \"std\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.07318105401445557,\n        \"min\": 0.013,\n        \"max\": 0.208,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.049,\n          0.044,\n          0.208\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"f1\",\n        \"mean\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.013255187663703608,\n        \"min\": 0.744,\n        \"max\": 0.771,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.744,\n          0.758,\n          0.745\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"f1\",\n        \"std\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.008105553651663756,\n        \"min\": 0.269,\n        \"max\": 0.285,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.269,\n          0.272,\n          0.27\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"sec\",\n        \"mean\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 145.00965499947466,\n        \"min\": 0.0,\n        \"max\": 355.755,\n        \"num_unique_values\": 6,\n        \"samples\": [\n          1.594,\n          0.571,\n          355.755\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": [\n        \"sec\",\n        \"std\"\n      ],\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 5.124972273095729,\n        \"min\": 0.0,\n        \"max\": 12.58,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          0.025,\n          12.58,\n          0.006\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
      }
     },
     "metadata": {},
     "execution_count": 11
    }
   ],
   "source": "res, oof_raw, hist, fold0, train_plan = run_cv(X_pool, X_base, y, groups, CFG, budget)\nsummary = res.groupby(\"model\")[[\"auc\", \"ap\", \"f1\", \"sec\"]].agg([\"mean\", \"std\"]).round(3)\nsummary"
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "c17",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 493
    },
    "id": "c17",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693018961,
     "user_tz": -180,
     "elapsed": 849875,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "ef7181eb-5839-4e70-d40e-578f623b4301"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Ablasyon (8 qubit alt model, fold0): AP Adam(40 adım) 0.973 | SPSA(150 adım) 0.353 | SPSA kaybı 0.995 -> 0.952 (130 sn)\n",
      " p_depolarizing    AP   AUC  F1_sabit_esik  skor_std_orani\n",
      "           0.00 0.973 0.998            0.9           1.000\n",
      "           0.01 0.973 0.998            0.9           0.931\n",
      "           0.03 0.973 0.998            0.9           0.807\n",
      "           0.06 0.973 0.998            0.9           0.649\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 1100x380 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEEAAAFyCAYAAAAat8RwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd8FHX6wPHPbE/vPSGFEHrvIIKIYEPFrtj1fnoeeup5ntzZ9ezds9/ZUbGgnqeigCIiSO+9JUB679k6vz8mu8mSTbIJgSA879crrySzM7PfTd159imKqqoqQgghhBBCCCGEEMc5XXcvQAghhBBCCCGEEOJokCCIEEIIIYQQQgghTggSBBFCCCGEEEIIIcQJQYIgQgghhBBCCCGEOCFIEEQIIYQQQgghhBAnBAmCCCGEEEIIIYQQ4oQgQRAhhBBCCCGEEEKcECQIIoQQQgghhBBCiBOCBEGEEEIIIYQQQghxQpAgiBC/EyNGjODdd9/FZrOxbt06wsLCqKmp8drngQceQFEUv873zjvvoCgK2dnZR2C1Le9n9erVR/R+DpWWlsbZZ5/d5ed98skn6dOnDy6Xq8vP3R0mTZrEgAED2t0vOzsbRVF455132t23tLSUoKAgvv322y5YoRBCiMPVkb/hQnQXRVF44IEHOnTMNddcQ1pa2hFZjzh+SRBEHHfOOeccAgMDqa6ubnWfmTNnYjKZKC0t9Wyrra3l4YcfZtCgQQQGBhIWFsaECRN4//33UVXV53kaGhp47rnnGD16NGFhYVgsFrKyspg1axY7d+7s0sc1a9YsrrvuOsxmM8OGDePCCy8kODi43eMeffRRvvzyyy5dy4mqqqqKJ554gr/97W/odNqfz9LSUp566ilOPvlkYmJiCA8PZ8yYMcydO9fnOaxWK3/7299ITEwkICCA0aNHs2DBgqP5MLrMt99+6/PJSlRUFDfccAP33nvv0V+UEEI0435xoKSkxOftAwYMYNKkSUd3Ub8DhYWF3HnnnfTp04fAwECCgoIYPnw4jzzyCBUVFRQVFWEwGLjiiitaPUd1dTUBAQGcf/75R3HlLX377bcoikJiYuJx8wJGV5k0aRKKonjeIiMjGTlyJG+99ZZ8rcRxTYIg4rgzc+ZM6uvr+eKLL3zeXldXx1dffcXpp59OVFQUoP2zHz16NA888AADBw7k+eef5+GHH0an03HVVVdxxRVXtPhnUFJSwkknncQdd9xBbGwsDz30EC+//DLnnXce//3vf/16db0jrrnmGnbs2MHnn3/Ob7/9xn/+858W+9xzzz3U19d7bWstCHLllVdSX19Pampql67zePbWW2/hcDi47LLLPNuWL1/OP/7xDyIjI7nnnnv45z//SWBgIJdeein3339/i3Ncc801PPvss8ycOZMXXngBvV7PmWeeydKlS4/mQ+mw1NRU6uvrufLKKz3bvv32Wx588EGf+990002sXbuWH3/88WgtUQghRBdYtWoVAwYM4OWXX2bChAk8++yzPPPMMwwdOpTHH3+ciy++mNjYWE477TS++uor6urqfJ5n3rx5NDQ0tBkoORrmzJlDWloa+fn58j/Jh+TkZN5//33ef/997r33XhwOB9dffz1///vfj/pa6uvrueeeezp0zJtvvsmOHTuO0IrEcUsV4jhTV1enhoSEqNOmTfN5+4cffqgC6scff+zZNm3aNFWn06lfffVVi/3vvPNOFVCffPJJr+1nnXWWqtPp1M8++6zFMQ0NDepf/vKXw3wkXSMoKEi9+uqru+3+3377bRVQV61adVTvNzU1VT3rrLO69JyDBg1Sr7jiCq9te/fuVbOzs722uVwudfLkyarZbFZramo821esWKEC6lNPPeXZVl9fr/bs2VMdO3Zsl67VXxMnTlT79+/fqWP/9Kc/qW39GxkwYIB65ZVXdnZpQghx2O6//34VUIuLi33e3r9/f3XixIlHd1HdYN++fSqgvv32223uV15eriYlJalxcXHqtm3bWtxeUFCgPvzww6qqqur777+vAupHH33k81xTp05Vw8LC1IaGhsNef2fV1NSoQUFB6osvvqgOHTpUveaaa476Glwul1pXV3fU79cfvp4D1NbWqsnJyWpQUJBqs9l8Hud0OtX6+vqjsUQhjgjJBBHHHXfq5aJFiygqKmpx+4cffkhISAjnnHMOAL/99hvff/8911xzjWdbc4899hi9evXi8ccf92RZrFixgm+++Ybrr7+eCy64oMUxZrOZp59+ut21VlRUcNttt5GSkoLZbCYzM5MnnniiRdZJaWkpV155JaGhoYSHh3P11VezYcOGFvW9h/YEURSF2tpa3n33XU+q4zXXXAP47gni7qOxePFiRowYQUBAAAMHDmTx4sWA9qrOwIEDsVgsDB8+nHXr1rX7GH0pLy9n1KhRJCcne6L3X331FWeddRaJiYmYzWZ69uzJww8/jNPp9Bx3//33YzQaKS4ubnHO//u//yM8PJyGhgav7T/88ANDhgzBYrHQr18/5s2b53X74sWLURTF8xhbs2/fPjZu3MiUKVO8tqenp7fIplEUhfPOOw+r1crevXs92z/77DP0ej3/93//59lmsVi4/vrrWb58OQcOHGhzDQBvvPEGPXv2JCAggFGjRvHLL78wadIkr3Tu1vq9tPVY16xZw7hx4wgICCA9PZ3XXnvN6/ZD68mvueYaXn75Zc/jdb81d9ppp/H111+3Wk4mhBDHmrS0NK+/ac3f3H87c3JyuPnmm+nduzcBAQFERUVx0UUXtfib6/5bvHTpUm699VZPyeSNN96IzWajoqKCq666ioiICCIiIrjrrrta/L38+OOPGT58OCEhIYSGhjJw4EBeeOEFz+1lZWXceeedDBw4kODgYEJDQznjjDPYsGFDpx7/66+/Tm5uLs8++yx9+vRpcXtcXJznlfoZM2YQFBTEhx9+2GK/oqIiFi1axIUXXojZbO7UWrrCF198QX19PRdddBGXXnqpJzvFbcCAAZxyyiktjnO5XCQlJXHhhRd6bXv++efp378/FouFuLg4brzxRsrLy72OdT+X+v777z3PpV5//XUA3n77bSZPnkxsbCxms5l+/frx6quv+rz/Bx54gMTERAIDAznllFPYunUraWlpnudxbv4+l/RXYGAgY8aMoba21vN8S1EUZs2axZw5c+jfvz9ms5n58+cDkJuby3XXXUdcXBxms5n+/fvz1ltvtThvQ0MDDzzwAFlZWVgsFhISEjj//PPZs2ePZ59De4JUV1dz2223kZaWhtls9mQgrV271rOPr54gtbW1/OUvf/F8TXr37s3TTz/d4vfL/bi+/PJLBgwY4Fm/+7GJ45cEQcRxaebMmTgcDj755BOv7WVlZXz//ffMmDGDgIAAAL7++msArrrqKp/nMhgMXH755ZSVlbFs2TIA/vvf/wJ4lQZ0VF1dHRMnTuSDDz7gqquu4sUXX2T8+PHMnj2bO+64w7Ofy+Vi+vTpfPTRR1x99dX885//JD8/n6uvvrrd+3j//fcxm82e3ibvv/8+N954Y5vH7N69m8svv5zp06fz2GOPUV5ezvTp05kzZw633347V1xxBQ8++CB79uzh4osv7vA/2ZKSEiZPnkxhYSE///wzvXv3BrQni8HBwdxxxx288MILDB8+nPvuu4+7777bc+yVV16Jw+Fo0W/DZrPx2WefccEFF2CxWDzbd+3axSWXXMIZZ5zBY489hsFg4KKLLupUDw73937YsGF+7V9QUABAdHS0Z9u6devIysoiNDTUa99Ro0YBsH79+jbP+Z///Icbb7yR+Ph4nnzyScaPH88555zjV/CkLeXl5Zx55pkMHz6cJ598kuTkZP74xz/6fBLjduONN3LaaacBeH623n//fa99hg8fTkVFBVu2bDms9QkhxNHy/PPPe/1Ne//99xk2bBg6nc5TQrtq1SqWLVvGpZdeyosvvshNN93EokWLmDRpks/SkFtuuYVdu3bx4IMPcs455/DGG29w7733Mn36dJxOJ48++ignnXQSTz31lNff0QULFnDZZZcRERHBE088weOPP86kSZP49ddfPfvs3buXL7/8krPPPptnn32Wv/71r2zatImJEyeSl5fX4cf/3//+l4CAAK+L/9YEBQVx7rnn8v3331NWVuZ129y5c3E6ncycObPDa+hKc+bM4ZRTTiE+Pp5LL72U6upqz/M+gEsuuYQlS5Z4/me7LV26lLy8PC699FLPthtvvJG//vWvjB8/nhdeeIFrr72WOXPmMG3aNOx2u9fxO3bs4LLLLuO0007jhRdeYMiQIQC8+uqrpKam8ve//51nnnmGlJQUbr75Zs+LCm6zZ8/mwQcfZMSIETz11FP06tWLadOmUVtb67Wfv88lO2rv3r3o9XrCw8M923788Uduv/12LrnkEl544QXS0tIoLCxkzJgxLFy4kFmzZvHCCy+QmZnJ9ddfz/PPP+851ul0cvbZZ/Pggw8yfPhwnnnmGf785z9TWVnJ5s2bW13HTTfdxKuvvsoFF1zAK6+8wp133klAQADbtm1r9RhVVTnnnHN47rnnOP3003n22Wfp3bs3f/3rX31+TZYuXcrNN9/MpZdeypNPPklDQwMXXHCBV99AcRzq3kQUIY4Mh8OhJiQktCgxeO2111RA/f777z3bzjvvPBVQy8vLWz3fvHnzVEB98cUXVVVV1RkzZrR7THsefvhhNSgoSN25c6fX9rvvvlvV6/Xq/v37VVVV1c8//1wF1Oeff96zj9PpVCdPntwitdWd9ttca+Uw7jKVffv2ebalpqaqgLps2TLPtu+//14F1ICAADUnJ8ez/fXXX1cB9aeffmrzcTYvh8nPz1f79++vZmRktCgh8ZUqeuONN6qBgYFeqbRjx45VR48e7bWf+/vTfC3ux/L55597tlVWVqoJCQnq0KFDPdt++uknvx7HPffcowJqdXV1m/upqqqWlpaqsbGx6oQJE7y29+/fX508eXKL/bds2aIC6muvvdbqOW02mxobG6sOGTJEtVqtnu1vvPGGCnilc/v63qqq78c6ceJEFVCfeeYZzzar1aoOGTJEjY2N9aTC+kqlbq8cZtmyZSqgzp07t9V9hBDiSDrccphPPvlEBdSHHnrIs83X/6vly5ergPree+95trn/Fk+bNk11uVye7WPHjlUVRVFvuukmzzaHw6EmJyd7reXPf/6zGhoaqjocjlbX19DQoDqdTq9t+/btU81ms9ea/S2HiYiIUAcPHtzmPs198803KqC+/vrrXtvHjBmjJiUltVjb0VRYWKgaDAb1zTff9GwbN26ceu6553o+37FjhwqoL730ktexN998sxocHOz5Xv/yyy8qoM6ZM8drv/nz57fY7n7+MX/+/BZr8vWzM23aNDUjI8PzeUFBgWowGNTzzjvPa78HHnhABbye0/n7XLI1EydOVPv06aMWFxerxcXF6rZt29Rbb71VBdTp06d79gNUnU6nbtmyxev466+/Xk1ISFBLSkq8tl966aVqWFiY5/G+9dZbKqA+++yzLdbQ/HcDUO+//37P52FhYeqf/vSnNh/D1Vdfraampno+//LLL1VAfeSRR7z2u/DCC1VFUdTdu3d73Z/JZPLatmHDBp8/E+L4Ipkg4rik1+u59NJLWb58uVd66ocffkhcXBynnnqqZ5t7ikxISEir53Pf5t63qqqq3WPa8+mnnzJhwgQiIiIoKSnxvE2ZMgWn08mSJUsAmD9/PkajkT/84Q+eY3U6HX/60586fd9t6devH2PHjvV8Pnr0aAAmT55Mjx49WmxvXu7RloMHDzJx4kTsdjtLlixpUULizswB7etcUlLChAkTqKurY/v27Z7brrrqKlasWOGVPjlnzhxSUlKYOHGi1zkTExOZMWOG5/PQ0FCuuuoq1q1b1+JVn/aUlpZiMBjancjjcrmYOXMmFRUVvPTSS1631dfX+0wLdmevHNrUtrnVq1dTVFTETTfdhMlk8my/5pprCAsL68hDacFgMHhlCJlMJm688UaKiopYs2ZNp88bEREB0OpUBiGEOJZt3bqV6667jnPPPderWWPz/1d2u53S0lIyMzMJDw/3StN3u/76673KBUePHo2qqlx//fWebXq9nhEjRnj9Tw0PD6e2trbN7EWz2eyZVuZ0OiktLSU4OJjevXv7XEt7qqqqOvTcZurUqcTExHiVxOzbt4/ffvuNyy67zLO27vDxxx+j0+m8ypYvu+wyvvvuO08JS1ZWFkOGDPHKMHU6nXz22WdMnz7d873+9NNPCQsL47TTTvN6zjZ8+HCCg4P56aefvO47PT2dadOmtVhT85+dyspKSkpKmDhxInv37qWyshKARYsW4XA4uPnmm72OveWWW1qcz9/nkm3Zvn07MTExxMTE0LdvX1566SXOOuusFtmgEydOpF+/fp7PVVXl888/Z/r06aiq6nX/06ZNo7Ky0vMz+PnnnxMdHe3zMRxaSttceHg4K1as6FBW07fffoter+fWW2/12v6Xv/wFVVX57rvvvLZPmTKFnj17ej4fNGgQoaGhfj+/Fb9PEgQRxy13Cqb7H/PBgwf55ZdfuPTSS9Hr9Z79Dg1w+OK+LTY2FsBTztDWMe3ZtWsX8+fP9/zjcb+5e064+5nk5OSQkJBAYGCg1/GZmZmdvu+2NA90AJ4L7JSUFJ/bD62Fbc2VV15JUVERP//8M0lJSS1u37JlCzNmzCAsLIzQ0FBiYmI8HeXdTwxAS101m83MmTPHc9v//vc/Zs6c2eIfaWZmZottWVlZAC1qt7vKLbfcwvz58/n3v//N4MGDvW4LCAjAarW2OMZdn9z8ydGhcnJyAOjVq5fXdqPRSEZGxmGtOTExkaCgIK9tXfF1Uhtrb9t6giOEEN3N19+oqqoqzj//fJKSknjvvfe89qmvr+e+++7z9BuIjo4mJiaGiooKr/9Xbh35v9r8f+rNN99MVlYWZ5xxBsnJyVx33XUtehW4XC6ee+45evXq5bWWjRs3+lxLe0JDQzv03MZgMHDJJZfwyy+/kJubCzQ97/KnFKagoKDTb+354IMPGDVqFKWlpezevZvdu3czdOhQbDYbn376qWe/Sy65hF9//dWz/sWLF1NUVMQll1zi2WfXrl1UVlYSGxvb4nlbTU1Nix506enpPtf066+/MmXKFIKCgggPDycmJsYzhcX9/XL/vz/0eV5kZKTnxYXm6/LnuWRb0tLSWLBgAQsXLmTp0qUUFBTwv//9z6uc19djKi4upqKigjfeeKPF/V977bVe979nzx569+6NwWBodz3NPfnkk2zevJmUlBRGjRrFAw880G5wIicnh8TExBbBvL59+3pub+7Q30/QXsTx9/mt+H3q2E+iEL8jw4cPp0+fPnz00Uf8/e9/56OPPkJV1Rb/lPv168eXX37Jxo0bOfnkk32ea+PGjQCei013s7BNmzYxYcKETq3P5XJx2mmncdddd/m83X0RerQ1DxD5s131s+nl+eefz3vvvccLL7zAY4895nVbRUUFEydOJDQ0lIceeoiePXtisVhYu3Ytf/vb37z6jkRERHD22WczZ84c7rvvPj777DOsVusRH8EXFRWFw+Ggurq61VfJHnzwQV555RUef/xxn/1iEhISPE+ymsvPzwe0YERXaC3o0LzJ7NHgfgJx6BMpIYQ4WtrLtKurq/PqJeV2zTXXkJeXx8qVK1v0cbrlllt4++23ue222xg7dixhYWEoisKll17qs09WR/6vNv+fGhsby/r16/n+++/57rvv+O6773j77be56qqrePfddwF49NFHuffee7nuuut4+OGHiYyMRKfTcdttt3WqMWafPn1Yv349NpvNK+uwLVdccQX/+te/+Oijj7jzzjv56KOP6Nevn6cPRlsSEhI6vEa3tp5/7Nq1i1WrVgEtXzwALYPU3aT8kksuYfbs2Xz66afcdtttfPLJJ4SFhXH66ad79ne5XMTGxnpegDlUTEyM1+e+XtTYs2cPp556Kn369OHZZ58lJSUFk8nEt99+y3PPPdep71dXPJcMCgpq0fTdl0Mfk3u9V1xxRat96gYNGtTuedty8cUXM2HCBL744gt++OEHnnrqKZ544gnmzZvHGWeccVjndjvc57fi90mCIOK4NnPmTO699142btzIhx9+SK9evRg5cqTXPtOnT+fRRx/lvffe8xkEcTqdnjIa9+3upqEffPBBp4MgPXv2pKampt1/PKmpqfz000/U1dV5ZYPs3r3br/s5Vl6Fv+WWW8jMzOS+++4jLCzMq+Hp4sWLKS0tZd68eV7fg3379vk811VXXcW5557LqlWrmDNnDkOHDqV///4t9tu9ezeqqnp9DXbu3AnQopN4e9yBr3379vn8p/7yyy/zwAMPcNttt/G3v/3N5zmGDBnCTz/9RFVVldeT6hUrVnhub427fGjXrl1MnjzZs91ut7Nv3z6vrBP3K0UVFRVe5zj01Q+3vLw8amtrvbJB/Pk6tfez5f7+uV99EUKIo839t3PHjh0tMi/q6uo4cOAAU6dO9dr++OOP8+WXXzJv3jyfE1I+++wzrr76ap555hnPtoaGhhZ/c7uCyWRi+vTpTJ8+HZfLxc0338zrr7/OvffeS2ZmJp999hmnnHIK//nPf7yOq6io6FQAevr06SxfvpzPP/+cyy67zK9jRo8eTc+ePfnwww857bTT2LJlC//85z/9OrYzjcr9MWfOHIxGI++//36Li9ylS5fy4osvsn//fnr06EF6ejqjRo1i7ty5zJo1i3nz5nHeeed5la/27NmThQsXMn78+DazNtvy9ddfY7Va+e9//+uVfXBoKY37Z3b37t1e2RelpaUtshP8fS55JMTExBASEoLT6Wz3/nv27MmKFSuw2+0YjcYO3U9CQgI333wzN998M0VFRQwbNox//vOfrQZBUlNTWbhwYYsXrdyl1YeWY4sTk5TDiOOaO+vjvvvuY/369T5TM8eMGcPUqVN5++23+d///tfi9n/84x/s3LmTu+66y5PGN3bsWE4//XT+/e9/8+WXX7Y4xmazceedd7a5tosvvpjly5fz/ffft7itoqICh8MB4Ok63vwJjqqqPkeq+RIUFHREnph1xr333sudd97J7NmzvdbvfoLSPOpus9l45ZVXfJ7njDPOIDo6mieeeIKff/651SyQvLw8vvjiC8/nVVVVvPfeewwZMoT4+PgOrd3dJ2X16tUtbps7dy633norM2fO5Nlnn231HBdeeCFOp5M33njDs81qtfL2228zevToFk/QmxsxYgQxMTG89tpr2Gw2z/Z33nmnxffXXdvavBb40PttzuFweMb3gfa1f/3114mJiWH48OGtrskdNGnt52vNmjWEhYX5DFAJIcTRcOqpp2IymXj11VdbvNL+xhtv4HA4vC6mFi5cyD333MM//vEPzjvvPJ/n1Ov1LV4lfumll7o82+7Q6RQ6nc4ThHeXVvpay6effuoz69AfN910EwkJCfzlL3/xBMObKyoq4pFHHmmxfebMmaxbt477778fRVG4/PLL/bq/KVOmdPqtLXPmzGHChAlccsklXHjhhV5vf/3rXwH46KOPPPtfcskl/Pbbb7z11luUlJR4lcKA9pzN6XTy8MMPt7gvh8Ph1/MsX891Kisrefvtt732O/XUUzEYDC2e5/3rX/9qcU5/n0seCXq9ngsuuIDPP//c54QX93hdgAsuuICSkhKfj6G1jAun09mipCs2NpbExESfpcVuZ555Jk6ns8V9PffccyiK0mUZJOL3TTJBxHEtPT2dcePG8dVXXwGt16e+9957TJ48mXPPPZfLL7+cCRMmYLVamTdvHosXL+aKK67g9ttvb3HM1KlTOf/885k+fTqnnnoqQUFB7Nq1i48//pj8/HyefvrpVtf217/+lf/+97+cffbZXHPNNQwfPpza2lo2bdrEZ599RnZ2NtHR0Zx33nmMGjWK22+/nb1799KnTx+++uorT51le6/GDx8+nIULF/Lss8+SmJhIenq6p6lpd3jqqaeorKzkT3/6EyEhIVxxxRWMGzeOiIgIrr76am699VYUReH9999v9R+j0Wjk0ksv5V//+hd6vb7VV6uysrK4/vrrWbVqFXFxcbz11lsUFha2eMLhj4yMDAYMGMDChQu57rrrPNtXrlzJVVddRVRUFKeeemqLVNlx48Z5yqhGjx7NRRddxOzZsykqKiIzM5N3332X7OzsFq/i+XrMjzzyCDfeeCOTJ0/mkksuYd++fbz99tsteoL079+fMWPGMHv2bMrKyoiMjOTjjz9u9clQYmIiTzzxBNnZ2WRlZTF37lzWr1/PG2+80eYrNu4Aya233sq0adM8DYndFixYwPTp04+ZbCQhxIknNjaW++67j3vuuYeTTz6Zc845h8DAQJYtW8ZHH33E1KlTmT59umf/yy67jJiYGHr16sUHH3zgda7TTjuNuLg4zj77bN5//33CwsLo168fy5cvZ+HChZ4Rul3lhhtuoKysjMmTJ5OcnExOTg4vvfQSQ4YM8WTYnX322Tz00ENce+21jBs3jk2bNjFnzpxO94qKiIjgiy++4Mwzz2TIkCFcccUVnr/1a9eu5aOPPvJqnu52xRVX8NBDD/HVV18xfvz4DmdbdqUVK1awe/duZs2a5fP2pKQkhg0bxpw5czyZmxdffDF33nknd955J5GRkS2CLBMnTuTGG2/kscceY/369UydOhWj0ciuXbv49NNPeeGFF9odKzx16lRPZs+NN95ITU0Nb775JrGxsZ6yWIC4uDj+/Oc/88wzz3DO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IR2IxWJp6SWQerBarS29hDZLr9e39BJIK0ZBkFp8+OGHCAsLg0qlQmxsLI4ePdrSS2pyr7zyCjiOs/no1q1bSy+rSezfvx8TJ05EQEAAOI7DL7/8YrOfMYYlS5bA398fDg4OiIuLQ1JSUsss9jrVda0PPPBAtef5tttua5nFXofly5djwIABcHZ2ho+PD6ZMmYILFy7YHKPX6zFv3jx4enrCyckJd9xxB3JyclpoxY1Xn2sdOXJkted1zpw5LbTixlu7di169+4NFxcXuLi4YNCgQdi5c6e4v708p0Dd19penlPScf3777/Yv38/AHoB15pJpVKYzWYYjUYA/O9EpPURRn1brVZYrVZ6nuqQlZWF5557Dr169cIPP/zQ0sshrRgFQWrw/fffY+HChVi6dClOnDiB6OhojBkzBrm5uS29tCbXs2dPZGVliR8HDx5s6SU1Ca1Wi+joaHz44Yd297/55pt4//33sW7dOhw5cgSOjo4YM2ZMm4wc13WtAHDbbbfZPM/ffffdDVxh09i3bx/mzZuHf//9F7t374bJZMLo0aOh1WrFYxYsWIBff/0VP/74I/bt24fMzEzcfvvtLbjqxqnPtQLAww8/bPO8vvnmmy204sYLCgrCihUrEB8fj+PHj+OWW27B5MmTcebMGQDt5zkF6r5WoH08p6TjMRqNePXVVzF48GAsXrwYQOULONL6rFmzBgqFAu+88w4Aygxprf755x+MGjUK2dnZkEgk4DiupZfUKn311Vfo3bs3goKC8O+//+K5557Dvffe29LLajOOHTuGbdu2IS0treME2hixa+DAgWzevHnivy0WCwsICGDLly9vwVU1vaVLl7Lo6OiWXkazA8C2bNki/ttqtTI/Pz/21ltviduKi4uZUqlk3333XQussOlce62MMTZz5kw2efLkFllPc8rNzWUA2L59+xhj/HMol8vZjz/+KB5z7tw5BoAdPny4pZbZJK69VsYYGzFiBHvyySdbblHNyN3dnX366aft+jkVCNfKWPt+Tkn7YjAYqm274447WKdOndigQYPYoUOHGGP8z1vSMlJSUtixY8cYY/zvsYzxz4fBYGBTp05lPXr0YH379m3JJRI7LBaLzfPFcRz7/PPP2SuvvMK6d+/OkpOTW3iFrcupU6cYx3Hsf//7HystLW3p5bR6wvfk/Px89vLLLzN/f3/W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vXv3MmDAAJxOJ3V1dZSXl9Pd3c3Vq1dpaGggPDycjz76iO7ubqB3CG1aWhoLFixQACIi/5NCEBERERERIDU1lUmTJtF3WrzvH3i5sb7jLU1NTSxZsoSEhATS0tL44IMPaG9vB6CmpgabzUZWVhZms5n6+nrmz5/P7t27AXjqqacYOXIkFy9e5Nq1awBER0eTmJhIc3MzTU1NpKam8sorr/Daa6/x9NNP8+ijj+Lz+Th8+DBbt27V7TsiclP0l11EREREBBg/fjxFRUVYLJZAl3JXOHHiBHa7ncTERC5fvsxbb71FTEwMeXl5bN68Geid+zFt2jROnz7Nhx9+yJ49e7BYLJSUlNDe3o7ZbGbChAm43W6am5uNd0+fPh2v18vevXsBWLduHS6Xi+nTp1NcXExRURFWq5WEhISA7F1E7l4ajCoiIiIiIjft3LlzPP/888yfP9+4QefSpUs899xzeL1evv32W7q7u+nXrx9Xrlzhvffe47PPPuP8+fPExsaSk5NDWloalZWVrFmzhldffZWMjAwAenp6ePbZZ3nwwQfZtm2bjreIyD9GnSAiIiIiInLTYmNjmThxIg0NDcbaL7/8wtmzZ4mJiaG7u5uIiAh+/vlnFixYwKFDh8jOzqauro6BAweyf/9+AKZNm8bw4cM5ePAgly9fBiAsLIx3332XoqIiBSAi8o/S7TAiIiIiInLTTCYTDoeDgoIC8vPzaWhooLKykp6eHlJSUoiIiMDv9/PFF19w/PhxamtriYuLA3rDkiNHjnDmzBlGjhzJ2LFjOXXqFB0dHQwZMgSAxx9/PJDbE5F7lDpBRERERETklkydOhWv18vatWuJi4tj+/bt5Ofn43K5KC0txWQycfHiRcaMGWP8zMcff8zgwYP56aefcLlcAOTm5lJRUcGIESMCtRURCRLqBBERERERkVtiNpux2WwMHTqUnJwcIiIicDgcREVFsX79etra2pg4cSJVVVXMmTOHIUOG0NXVxZo1a4iJiWHSpEkADB48OMA7EZFgocGoIiIiIiJyy2pra1m1ahWZmZnMnj3bWK+oqGDZsmVYLBY2btzIpk2biIqKIiMjg0ceeSSAFYtIMFMniIiIiIiI3DKbzUZkZCTV1dXXhSCzZs3C4/Fw4MABYmNj2bRpUwCrFBHppU4QERERERH5W7Kzs6moqKCsrIzHHnsMn89HSIjGD4rInUedICIiIiIi8rekpqbS2tpK3/erCkBE5E6lThARERERERERCQqKaEVEREREREQkKCgEEREREREREZGgoBBERERERERERIKCQhARERERERERCQoKQUREREREREQkKCgEEREREREREZGgoBBERERERERERIKCQhARERERERERCQoKQUREREREREQkKCgEEREREREREZGgoBBERERERERERIKCQhARERERERERCQr/AdIk8U8UIA72AAAAAElFTkSuQmCC\n"
     },
     "metadata": {}
    }
   ],
   "source": "# --- Ablasyon ve gürültü çalışması: <= ABLATION_MAX_QUBITS genişliğinde alt model (SPSA ve yoğunluk matrisi pahalı) ---\naw = min(fold0[\"enc\"].width, CFG[\"ABLATION_MAX_QUBITS\"])\nXa_tr, Xa_te, ytr_, yte_ = fold0[\"Xtr\"][:, :aw], fold0[\"Xte\"][:, :aw], fold0[\"ytr\"], fold0[\"yte\"]\nt0 = time.time()\nm_adam = VQCModule(aw, CFG[\"N_LAYERS\"]).fit(Xa_tr, ytr_, CFG[\"STEPS\"], CFG[\"BATCH\"], CFG[\"LR\"])\nm_spsa = VQCModule(aw, CFG[\"N_LAYERS\"]).fit(Xa_tr, ytr_, 150, CFG[\"BATCH\"], CFG[\"LR\"], optimizer=\"spsa\")\nap_adam = average_precision_score(yte_, m_adam.decision_function(Xa_te)); ap_spsa = average_precision_score(yte_, m_spsa.decision_function(Xa_te))\nprint(f\"Ablasyon ({aw} qubit alt model, fold0): AP Adam(40 adım) {ap_adam:.3f} | SPSA(150 adım) {ap_spsa:.3f} | SPSA kaybı {m_spsa.history[0]:.3f} -> {np.mean(m_spsa.history[-10:]):.3f} ({time.time()-t0:.0f} sn)\")\n\n# Rank-tabanlı AP/AUC gürültünün neden olduğu skor küçülmesini göremez; sabit eşikli F1 ve skor yayılımı da raporlanır.\ns0 = m_adam.decision_function_noisy(Xa_te, 0.0)\nt_fix = max(np.quantile(s0, np.linspace(0.05, 0.95, 40)), key=lambda t: f1_score(yte_, (s0 >= t).astype(int), zero_division=0))\nrows = []\nfor p in (0.0, 0.01, 0.03, 0.06):\n    s = m_adam.decision_function_noisy(Xa_te, p)\n    rows.append(dict(p_depolarizing=p, AP=average_precision_score(yte_, s), AUC=roc_auc_score(yte_, s),\n                     F1_sabit_esik=f1_score(yte_, (s >= t_fix).astype(int), zero_division=0), skor_std_orani=float(np.std(s)/np.std(s0))))\nnoise_df = pd.DataFrame(rows).round(3); print(noise_df.to_string(index=False))\n\nfig, ax = plt.subplots(1, 2, figsize=(11, 3.8))\nfor h in hist: ax[0].plot(h, alpha=.7)\nax[0].set_title(f\"VQC eğitim kaybı ({fold0['enc'].width} qubit)\"); ax[0].set_xlabel(\"adım\")\nmm = res[res.model != \"Taban (rastgele)\"].groupby(\"model\")[\"ap\"].agg([\"mean\", \"std\"]).fillna(0)\nax[1].bar(mm.index, mm[\"mean\"], yerr=mm[\"std\"], capsize=4); ax[1].axhline(y.mean(), color=\"k\", ls=\"--\", lw=1, label=\"rastgele taban\")\nax[1].legend(); ax[1].set_title(\"Uzamsal CV — Average Precision\"); plt.xticks(rotation=20); plt.tight_layout(); plt.show()"
  },
  {
   "cell_type": "markdown",
   "id": "c18",
   "metadata": {
    "id": "c18"
   },
   "source": "## Module 4b — Literatür tabanlı sertleştirme: ayarlı taban çizgileri, kuantum çekirdek tanıları, dolanıklık ablasyonu\nLiteratür taraması sonucu eklenen kontroller (kaynaklar notun sonunda):\n- **Bowles ve ark. (2024), \"Better than classical?\":** 12 kuantum modeli × 160 veri kümesinde hazır klasik modeller kuantum sınıflandırıcılardan iyi; **dolanıklığı çıkarmak çoğu zaman performansı bozmuyor**. Bu yüzden (1) klasik taban çizgileri **uzamsal CV ile ayarlanır** (SVM-RBF, RF), (2) VQC için **dolanıksız ablasyon** yapılır.\n- **Thanasilp ve ark. — üstel yoğunlaşma:** fidelity çekirdeğin değerleri qubit sayısıyla sabit bir değere yığılır; sebepler: gömmenin ifade gücü, global ölçüm, dolanıklık, gürültü. Çare olarak **bant genişliği ayarı** ve **projected quantum kernel** (tek-qubit indirgenmiş durumlar) kullanılır. Yoğunlaşma tanısı yazmaç genişliğine göre raporlanır.\n- **Bant genişliği ayarlı çekirdekler RBF'ye benzer (2025):** bu yüzden ayarlı kuantum çekirdek, ayarlı RBF ile **CKA hizasıyla** karşılaştırılır; hizalı ise \"kuantum\" çekirdeğin klasik olarak taklit edilebilir olduğu raporlanır."
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c19",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c19",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693100230,
     "user_tz": -180,
     "elapsed": 81254,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "08a119bf-36dd-4565-f8a0-edc2b26b1a87"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Bloch özellikleri vs yoğunluk matrisi: maks fark 1.1e-16\n",
      "                        mean    std\n",
      "model                              \n",
      "QSVM-fidelity-ayarlı   0.994  0.010\n",
      "QSVM-projected-ayarlı  0.994  0.010\n",
      "RF-ayarlı              0.994  0.010\n",
      "SVM-RBF-ayarlı         0.992  0.013\n",
      "\n",
      "Çekirdek hizası (CKA) ayarlı kuantum çekirdek ↔ ayarlı RBF (≈1: kuantum çekirdek klasik RBF'ye benziyor):\n",
      "            mean    min    max\n",
      "kind                          \n",
      "fidelity   0.996  0.990  1.000\n",
      "projected  0.986  0.976  0.999\n",
      "(67 sn)\n",
      "\n",
      "Fidelity çekirdek dışı-köşegen (ölçek=1):\n",
      " qubit  ortalama    std\n",
      "     4    0.2112 0.2012\n",
      "     8    0.1064 0.1753\n",
      "    12    0.0617 0.1270\n",
      "\n",
      "Dolanıklık ablasyonu (8 qubit, fold0): AP dolanık 0.973 | dolanıksız (ürün durumu) 0.962\n",
      "Ayarlanmış kuantum çekirdek AP 0.994 vs ayarlanmış klasik 0.994; klasik önde/eşit; dolanıklık çıkarınca AP -0.011.\n"
     ]
    }
   ],
   "source": "from scipy.spatial.distance import cdist\nfrom sklearn.model_selection import GridSearchCV\n\ndef bloch_features(S, n):\n    \"\"\"Durum vektörlerinden tek-qubit indirgenmiş yoğunluk matrislerinin Bloch vektörleri (projected quantum kernel).\"\"\"\n    N = S.shape[0]; T = S.reshape((N,) + (2,) * n); F = []\n    for i in range(n):\n        A = np.moveaxis(T, i + 1, 1).reshape(N, 2, -1)\n        rho = np.einsum(\"nar,nbr->nab\", A, A.conj())\n        F.append(np.stack([2 * rho[:, 0, 1].real, -2 * rho[:, 0, 1].imag, (rho[:, 0, 0] - rho[:, 1, 1]).real], 1))\n    return np.concatenate(F, 1)\n\n_ST_CACHE = {}\ndef qk_states(kq, X, scale):\n    \"\"\"IQP gömme (özellikler * bant genişliği ölçeği) -> durum vektörleri.\"\"\"\n    if kq not in _ST_CACHE:\n        dev = get_device(\"kernel\", kq); pattern = None if kq <= 6 else [(i, i + 1) for i in range(kq - 1)]\n        @qml.qnode(dev)\n        def st(x): qml.IQPEmbedding(x, wires=range(kq), n_repeats=2, pattern=pattern); return qml.state()\n        _ST_CACHE[kq] = st\n    return np.array([_ST_CACHE[kq](scale * x) for x in X[:, :kq]])\n\ndef cka(K1, K2):\n    n = len(K1); H = np.eye(n) - 1.0 / n\n    A, B = H @ K1 @ H, H @ K2 @ H\n    return float((A * B).sum() / (np.linalg.norm(A) * np.linalg.norm(B) + 1e-12))\n\nclass QKernelSVM:\n    \"\"\"Bant genişliği (giriş ölçeği) ve C, uzamsal iç-CV ile ayarlanan kuantum çekirdekli SVM. kind: fidelity | projected.\"\"\"\n    SCALES, GAMMAS, CS = (0.25, 0.5, 1.0, 2.0), (0.3, 1.0, 3.0), (0.3, 3.0, 30.0)\n    def __init__(self, kq, kind, n_train, seed=SEED): self.kq, self.kind, self.n_train, self.seed = kq, kind, n_train, seed\n    def _K(self, S1, S2, gamma):\n        if self.kind == \"fidelity\": return np.abs(S1.conj() @ S2.T) ** 2\n        return np.exp(-gamma * cdist(bloch_features(S1, self.kq), bloch_features(S2, self.kq), \"sqeuclidean\") / self.kq)\n    def fit(self, X, y, g):\n        r = np.random.default_rng(self.seed); pos, neg = np.where(y == 1)[0], np.where(y == 0)[0]\n        k = min(len(pos), self.n_train // 2); idx = np.concatenate([r.choice(pos, k, replace=False), r.choice(neg, min(len(neg), self.n_train - k), replace=False)])\n        ys, gs = y[idx], g[idx]; folds = list(GroupKFold(n_splits=3).split(idx, ys, gs)); best = (-1, None)\n        for sc in self.SCALES:\n            S = qk_states(self.kq, X[idx], sc)\n            for gm in (self.GAMMAS if self.kind == \"projected\" else (None,)):\n                K = self._K(S, S, gm)\n                for C in self.CS:\n                    aps = []\n                    for a, b in folds:\n                        if ys[a].sum() == 0 or ys[b].sum() == 0 or ys[a].sum() == len(a): continue\n                        m = SVC(kernel=\"precomputed\", C=C, class_weight=\"balanced\").fit(K[np.ix_(a, a)], ys[a])\n                        aps.append(average_precision_score(ys[b], m.decision_function(K[np.ix_(b, a)])))\n                    sc_ = np.mean(aps) if aps else 0.0\n                    if sc_ > best[0] + 1e-9: best = (sc_, (sc, gm, C))\n        self.best_scale, self.best_gamma, self.best_C = best[1]; self.inner_ap = best[0]; self.idx = idx\n        self.S = qk_states(self.kq, X[idx], self.best_scale); self.K_train = self._K(self.S, self.S, self.best_gamma)\n        self.svc = SVC(kernel=\"precomputed\", C=self.best_C, class_weight=\"balanced\").fit(self.K_train, ys)\n        return self\n    def decision_function(self, X):\n        return self.svc.decision_function(self._K(qk_states(self.kq, X, self.best_scale), self.S, self.best_gamma))\n\ndef kernel_study(X_pool, y, groups, cfg, budget):\n    rows, ckas, folds_info = [], [], []\n    for i, (tr, te) in enumerate(GroupKFold(n_splits=cfg[\"N_SPLITS\"]).split(X_pool, y, groups)):\n        if y[tr].sum() == 0 or y[te].sum() == 0: continue\n        enc = FeatureEncoder(budget).fit(X_pool[tr]); Xtr, Xte, ytr, yte, gtr = enc.transform(X_pool[tr]), enc.transform(X_pool[te]), y[tr], y[te], groups[tr]\n        kq = min(enc.width, cfg[\"QSVM_MAX_QUBITS\"])\n        svm = GridSearchCV(SVC(kernel=\"rbf\", class_weight=\"balanced\"), {\"C\": [0.3, 3, 30, 300], \"gamma\": [0.01, 0.03, 0.1, 0.3, 1.0]}, cv=GroupKFold(n_splits=3), scoring=\"average_precision\", error_score=0.0).fit(Xtr, ytr, groups=gtr)\n        rf = GridSearchCV(RandomForestClassifier(200, class_weight=\"balanced\", random_state=SEED), {\"max_depth\": [3, 6, None], \"min_samples_leaf\": [1, 3, 5]}, cv=GroupKFold(n_splits=3), scoring=\"average_precision\", error_score=0.0).fit(Xtr, ytr, groups=gtr)\n        rows += [dict(fold=i, model=\"SVM-RBF-ayarlı\", ap=average_precision_score(yte, svm.decision_function(Xte)), scale=np.nan),\n                 dict(fold=i, model=\"RF-ayarlı\", ap=average_precision_score(yte, rf.predict_proba(Xte)[:, 1]), scale=np.nan)]\n        for kind in (\"fidelity\", \"projected\"):\n            m = QKernelSVM(kq, kind, cfg[\"N_QSVM_TRAIN\"]).fit(Xtr, ytr, gtr)\n            rows.append(dict(fold=i, model=f\"QSVM-{kind}-ayarlı\", ap=average_precision_score(yte, m.decision_function(Xte)), scale=m.best_scale))\n            Xs = Xtr[m.idx][:, :kq]; Krbf = np.exp(-svm.best_params_[\"gamma\"] * cdist(Xs, Xs, \"sqeuclidean\"))\n            ckas.append(dict(fold=i, kind=kind, cka_vs_tuned_rbf=cka(m.K_train, Krbf)))\n    return pd.DataFrame(rows), pd.DataFrame(ckas)\n\n# --- doğrulama: Bloch vektörleri yoğunluk matrisiyle aynı mı? ---\n_r = np.random.default_rng(5); _n = 4; _psi = _r.normal(size=2 ** _n) + 1j * _r.normal(size=2 ** _n); _psi /= np.linalg.norm(_psi)\n_bf = bloch_features(_psi[None], _n)[0]; _err = 0.0\nfor _i in range(_n):\n    _rho = np.array(qml.math.reduce_dm(qml.math.dm_from_state_vector(_psi), indices=[_i]))\n    _err = max(_err, abs(_bf[3*_i] - 2*_rho[0, 1].real), abs(_bf[3*_i+1] + 2*_rho[0, 1].imag), abs(_bf[3*_i+2] - (_rho[0, 0] - _rho[1, 1]).real))\nbloch_err = float(_err); print(f\"Bloch özellikleri vs yoğunluk matrisi: maks fark {bloch_err:.1e}\")\n\nt0 = time.time(); kres, kcka = kernel_study(X_pool, y, groups, CFG, budget)\nksum = kres.groupby(\"model\")[\"ap\"].agg([\"mean\", \"std\"]).round(3)\nprint(ksum.to_string()); print(\"\\nÇekirdek hizası (CKA) ayarlı kuantum çekirdek ↔ ayarlı RBF (≈1: kuantum çekirdek klasik RBF'ye benziyor):\")\nprint(kcka.groupby(\"kind\")[\"cka_vs_tuned_rbf\"].agg([\"mean\", \"min\", \"max\"]).round(3).to_string()); print(f\"({time.time()-t0:.0f} sn)\")\n\n# --- üstel yoğunlaşma tanısı: fidelity çekirdeğin yazmaç genişliğine göre dışı-köşegen dağılımı (ölçek=1) ---\nconc = []\nfor w_ in sorted({min(4, fold0[\"enc\"].width), min(8, fold0[\"enc\"].width), min(12, fold0[\"enc\"].width)}):\n    S_ = qk_states(w_, fold0[\"Xtr\"][:40], 1.0); K_ = np.abs(S_.conj() @ S_.T) ** 2; off = K_[~np.eye(len(K_), dtype=bool)]\n    conc.append(dict(qubit=w_, ortalama=float(off.mean()), std=float(off.std())))\nconc_df = pd.DataFrame(conc).round(4); print(\"\\nFidelity çekirdek dışı-köşegen (ölçek=1):\"); print(conc_df.to_string(index=False))\n\n# --- Bowles ve ark. (2024) önerisi: dolanıklık çıkarma ablasyonu (ürün-durumu VQC) ---\nm_prod = VQCModule(aw, CFG[\"N_LAYERS\"], entangle=False).fit(Xa_tr, ytr_, CFG[\"STEPS\"], CFG[\"BATCH\"], CFG[\"LR\"])\nap_prod = average_precision_score(yte_, m_prod.decision_function(Xa_te))\nprint(f\"\\nDolanıklık ablasyonu ({aw} qubit, fold0): AP dolanık {ap_adam:.3f} | dolanıksız (ürün durumu) {ap_prod:.3f}\")\nbest_q_ap = ksum.loc[[n for n in ksum.index if n.startswith(\"QSVM\")], \"mean\"].max(); best_c_ap = ksum.loc[[\"SVM-RBF-ayarlı\", \"RF-ayarlı\"], \"mean\"].max()\nkernel_verdict = (f\"Ayarlanmış kuantum çekirdek AP {best_q_ap:.3f} vs ayarlanmış klasik {best_c_ap:.3f}; \"\n                  + (\"klasik önde/eşit\" if best_q_ap <= best_c_ap + 0.01 else \"kuantum önde (tek veri kümesi; genelleme için gerçek veride tekrar edin)\")\n                  + f\"; dolanıklık çıkarınca AP {ap_prod - ap_adam:+.3f}.\")\nprint(kernel_verdict)"
  },
  {
   "cell_type": "markdown",
   "id": "c20",
   "metadata": {
    "id": "c20"
   },
   "source": "## Module 5 — Qiskit çevirisi (genişlikten bağımsız) ve donanım kancası\nPennyLane `StronglyEntanglingLayers` blok başına CNOT halkası `r=(l mod (n−1))+1`; okuma `(1/n)ΣZᵢ`. Çeviri bunu birebir izler ve **PennyLane çıktısıyla karşılaştırılır** (kapı toleransı `1e-5`, çünkü sınıflandırıcı `complex64` çalışır). Mantıksal qubit `i` → fiziksel qubit `qubit_map[i]` eşlemesi transpile'da `initial_layout` ile verilir. Geniş devrede Qiskit statevector yavaştır; kontrol örnek sayısı genişliğe göre azalır."
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c21",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c21",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693118559,
     "user_tz": -180,
     "elapsed": 18294,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "b5691991-df4c-4740-aded-adf5fe3a04c5"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "PennyLane vs Qiskit-ayrı süreç (20 qubit, 3 örnek): maks |fark| = 2.53e-06  (18 sn)\n"
     ]
    }
   ],
   "source": "def model_arrays(model, X, layout):\n    a = dict(w=np.array(model.w), X=np.asarray(X), b=float(model.b), layout=np.array(layout))\n    if hasattr(model, \"s\"): a[\"s\"] = np.array(model.s)\n    return a\n\ndef qiskit_scores(model, X, layout=None):\n    \"\"\"Qiskit statevector (ayrı süreçte) ideal skorları.\"\"\"\n    layout = layout if layout is not None else list(range(model.nq))\n    r = qpu_worker(\"ideal\", CFG, model_arrays(model, X, layout))\n    return np.array(r[\"ideal\"])\n\nm_chk, W_chk = fold0[\"model\"], fold0[\"model\"].nq\nn_chk = 40 if W_chk <= 10 else 3\nchk = fold0[\"Xte\"][:n_chk]\nt0 = time.time(); pl_scores, qk_scores = m_chk.decision_function(chk), qiskit_scores(m_chk, chk)\nqiskit_maxdiff = float(np.max(np.abs(pl_scores - qk_scores)))\nprint(f\"PennyLane vs Qiskit-ayrı süreç ({W_chk} qubit, {n_chk} örnek): maks |fark| = {qiskit_maxdiff:.2e}  ({time.time()-t0:.0f} sn)\")"
  },
  {
   "cell_type": "markdown",
   "id": "c22",
   "metadata": {
    "id": "c22"
   },
   "source": "## Module 4c — Eğitilebilir giriş ölçekli veri-yeniden-yükleme\nHer katmanda giriş açıları `x·s[l]` ile ölçeklenir ve `s` ağırlıklarla birlikte eğitilir (veri-yeniden-yükleme literatüründe frekans/ölçek öğrenimi). Aynı genişlik ve adım sayısıyla sabit ölçekle kıyaslanır; Qiskit çevirisi ölçeği taşır ve PennyLane ile doğrulanır."
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c23",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c23",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693138490,
     "user_tz": -180,
     "elapsed": 19927,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "f0e4ef35-ebe6-4ba0-d689-e46e724c61ef"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Eğitilebilir giriş ölçeği (8 qubit, fold0): AP sabit 0.973 | eğitilebilir ölçek 0.991 | öğrenilen ölçek ort. 0.78 (aralık 0.30–1.32)\n",
      "ScaledVQC PennyLane vs Qiskit: maks fark 2.2e-07\n"
     ]
    }
   ],
   "source": "class ScaledVQC(VQCModule):\n    \"\"\"Eğitilebilir giriş ölçekli veri-yeniden-yükleme: katman l'de AngleEmbedding(x * s[l]) (s: katman x qubit, eğitilir).\"\"\"\n    def __init__(self, nq, layers=2, seed=SEED, entangle=True):\n        super().__init__(nq, layers, seed, entangle)\n        coeffs = [1.0 / nq] * nq\n        @qml.qnode(self.dev, interface=\"autograd\", diff_method=\"adjoint\")\n        def circ_s(w, s, x):\n            for l in range(layers):\n                qml.AngleEmbedding(x * s[l], wires=range(nq), rotation=\"Y\")\n                if entangle: qml.StronglyEntanglingLayers(w[l], wires=range(nq))\n                else:\n                    for i in range(nq): qml.Rot(w[l][0, i, 0], w[l][0, i, 1], w[l][0, i, 2], wires=i)\n            return qml.expval(qml.dot(coeffs, [qml.Z(i) for i in range(nq)]))\n        self.circ_s = circ_s\n    def _pred_s(self, w, s, b, X): return pnp.stack([self.circ_s(w, s, x) for x in X]) + b\n    def fit(self, X, y, steps, batch, lr, optimizer=\"adam\"):\n        r = np.random.default_rng(self.seed); w = self._init(r); b = pnp.array(0.0, requires_grad=True)\n        s = pnp.array(np.ones((self.L, self.nq)), requires_grad=True)\n        cost = lambda w, s, b, Xb, yb: pnp.mean((self._pred_s(w, s, b, Xb) - yb) ** 2)\n        pos, neg = np.where(y == 1)[0], np.where(y == 0)[0]; opt = qml.AdamOptimizer(lr); self.history = []\n        for _ in range(steps):\n            idx = np.concatenate([r.choice(pos, batch // 2), r.choice(neg, batch // 2)])\n            Xb = pnp.array(X[idx], requires_grad=False); yb = pnp.array(2.0 * y[idx] - 1.0, requires_grad=False)\n            (w, s, b, _, _), c = opt.step_and_cost(cost, w, s, b, Xb, yb); self.history.append(float(c))\n        self.w, self.s, self.b = w, s, b\n        return self\n    def decision_function(self, X): return np.array(self._pred_s(self.w, self.s, self.b, pnp.array(X, requires_grad=False)))\n\n# --- Ablasyon: sabit ölçek vs eğitilebilir ölçek (aynı genişlik, aynı adım) ---\nm_sc = ScaledVQC(aw, CFG[\"N_LAYERS\"]).fit(Xa_tr, ytr_, CFG[\"STEPS\"], CFG[\"BATCH\"], CFG[\"LR\"])\nap_scaled = average_precision_score(yte_, m_sc.decision_function(Xa_te))\nprint(f\"Eğitilebilir giriş ölçeği ({aw} qubit, fold0): AP sabit {ap_adam:.3f} | eğitilebilir ölçek {ap_scaled:.3f} | öğrenilen ölçek ort. {float(np.mean(np.array(m_sc.s))):.2f} (aralık {float(np.min(np.array(m_sc.s))):.2f}–{float(np.max(np.array(m_sc.s))):.2f})\")\n\n# --- Qiskit çevirisi eğitilebilir ölçeği doğru taşıyor mu? ---\n_chk = Xa_te[:3]; scale_qk_diff = float(np.max(np.abs(m_sc.decision_function(_chk) - qiskit_scores(m_sc, _chk))))\nprint(f\"ScaledVQC PennyLane vs Qiskit: maks fark {scale_qk_diff:.1e}\")"
  },
  {
   "cell_type": "markdown",
   "id": "c24",
   "metadata": {
    "id": "c24"
   },
   "source": "### Module 5b — QPU yürütücü (gerçek cihaz / cihaz hata modeli)\n`EXEC_MODE=\"hardware\"` iken VQC **simülatörde (GPU) eğitilir**; test örnekleri seçilen genişlikte, `qubit_map` ile en iyi fiziksel qubit'lere yerleştirilerek **Qiskit Runtime Estimator** ile skorlanır. `fake`: cihazın gerçek hata modeliyle yerel gürültülü simülasyon. `ibm`: gerçek cihaz, yalnızca `HW_SUBMIT=True` ise gönderilir. Çıktı: ideal skorlarla Spearman korelasyonu ve gürültü kaynaklı skor büzülmesi."
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c25",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c25",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693138500,
     "user_tz": -180,
     "elapsed": 8,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "2cdf62d0-d210-4c9a-f212-f482b21a2d7a"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "atlandı (donanım modu değil veya backend yok)\n"
     ]
    }
   ],
   "source": "class QPUExecutor:\n    \"\"\"QPU işi ayrı süreçte çalışır (bkz. qpu_worker).\"\"\"\n    def __init__(self, cfg, budget):\n        self.cfg, self.budget = cfg, budget\n        self.available = cfg[\"HW_PROFILE_SOURCE\"] in (\"fake\", \"ibm\")\n    def score(self, model, X):\n        layout = self.budget.qubit_map[:model.nq]\n        o = qpu_worker(\"run\", self.cfg, model_arrays(model, X, layout)); self.last_zne = np.array(o[\"zne\"]) if \"zne\" in o else None\n        info = dict(backend=str(o[\"backend\"]), layout=list(layout), mean_depth=round(float(o[\"depth\"]), 1), n=len(X), submitted=bool(o[\"submitted\"]), mitigation=str(o[\"mitigation\"]) if \"mitigation\" in o else \"yok\")\n        return (np.array(o[\"scores\"]) if info[\"submitted\"] else None), info, np.array(o[\"ideal\"])\n\nqpu = QPUExecutor(CFG, budget); qpu_info, qpu_rho, qpu_shrink, qpu_ok = {\"durum\": \"atlandı (donanım modu değil veya backend yok)\"}, None, None, True\nif CFG[\"EXEC_MODE\"] == \"hardware\" and qpu.available:\n    n_hw = min(CFG[\"HW_EVAL_N\"], len(fold0[\"Xte\"])); Xh = fold0[\"Xte\"][:n_hw]\n    t0 = time.time(); s_hw, qpu_info, ideal_qk = qpu.score(m_chk, Xh); s_id = m_chk.decision_function(Xh)\n    qpu_ok = bool(np.max(np.abs(ideal_qk - s_id)) < 1e-5)       # işçideki çeviri = PennyLane (ideal)\n    if s_hw is None:\n        qpu_info[\"durum\"] = \"transpile tamam, gönderilmedi (HW_SUBMIT=False)\"; qpu_ok = qpu_ok\n    else:\n        qpu_rho = float(spearmanr(s_hw, s_id).statistic); qpu_shrink = float(np.std(s_hw) / (np.std(s_id) + 1e-12))\n        if getattr(qpu, \"last_zne\", None) is not None:\n            qpu_info[\"zne_spearman\"] = round(float(spearmanr(qpu.last_zne, s_id).statistic), 3); qpu_info[\"zne_std_orani\"] = round(float(np.std(qpu.last_zne) / (np.std(s_id) + 1e-12)), 3)\n        qpu_ok = qpu_ok and bool(np.all(np.isfinite(s_hw)) and len(s_hw) == n_hw)\n        qpu_info[\"durum\"] = f\"tamam ({time.time()-t0:.0f} sn)\"\n    print(\"QPU yürütücü:\", qpu_info, \"| Spearman(ideal, cihaz) =\", None if qpu_rho is None else round(qpu_rho, 3), \"| skor std oranı =\", None if qpu_shrink is None else round(qpu_shrink, 3))\nelse:\n    print(qpu_info[\"durum\"])"
  },
  {
   "cell_type": "markdown",
   "id": "c26",
   "metadata": {
    "id": "c26"
   },
   "source": "**Gerçek IBM donanımı (özet):** `CFG[\"EXEC_MODE\"]=\"hardware\"`, `HW_PROFILE_SOURCE=\"ibm\"`, `HW_BACKEND=\"ibm_...\"` (veya None), bir kez `QiskitRuntimeService.save_account(token=...)`; önce `HW_SUBMIT=False` ile transpile derinliğini görün, sonra `HW_SUBMIT=True`. Bütçe, qubit haritası ve kodlama cihazdan otomatik türetilir (Module 2). Kod yolu `fake` profiliyle uçtan uca test edilmiştir; gerçek cihazda test edilmemiştir.\nÇalıştırmadan önce yalnızca **token + özellik** payload'ının (Module 1) kullanıldığından emin olun."
  },
  {
   "cell_type": "markdown",
   "id": "c27",
   "metadata": {
    "id": "c27"
   },
   "source": "## Module 6 — GIS: kalibre olasılık yüzeyi → GeoTIFF → hedef poligonlar\n- Skorlar **out-of-fold** alınır ve lojistik kalibrasyonla **olasılığa** çevrilir; hedef eşiği `P_MIN` bu olasılığa uygulanır.\n- Izgara **piksel merkezli**, kuzey üstte; `from_origin(xmin, ymax, res, res)` ile birebir hizalı. Hull dışı `nodata=-9999`.\n- Hedefler: ikili maske → bağlı bölgeler → min alan → bölgesel ortalama/maks olasılık → en iyi `MAX_TARGETS`."
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c28",
   "metadata": {
    "id": "c28",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693138504,
     "user_tz": -180,
     "elapsed": 3,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    }
   },
   "outputs": [],
   "source": "def make_surface(xs, ys, z, res):\n    xmin, xmax, ymin, ymax = xs.min(), xs.max(), ys.min(), ys.max()\n    nx, ny = int(np.ceil((xmax-xmin)/res)), int(np.ceil((ymax-ymin)/res))\n    cx = xmin + res*(np.arange(nx) + 0.5); cy = ymax - res*(np.arange(ny) + 0.5)\n    XX, YY = np.meshgrid(cx, cy)\n    Z = np.clip(griddata((xs, ys), z, (XX, YY), method=\"linear\"), 0, 1).astype(\"float32\")\n    return Z, from_origin(xmin, ymax, res, res), cx, cy\n\ndef save_geotiff(Z, transform, crs, path, nodata=-9999.0):\n    arr = np.where(np.isfinite(Z), Z, nodata).astype(\"float32\")\n    with rasterio.open(path, \"w\", driver=\"GTiff\", height=arr.shape[0], width=arr.shape[1], count=1, dtype=\"float32\",\n                       crs=crs, transform=transform, nodata=nodata, compress=\"lzw\") as dst:\n        dst.write(arr, 1)\n\ndef raster_alignment(path, xs, ys, z):\n    with rasterio.open(path) as src:\n        v  = np.array([s[0] for s in src.sample(list(zip(xs, ys)))])\n        ym = (ys.min() + ys.max()) - ys\n        vm = np.array([s[0] for s in src.sample(list(zip(xs, ym)))])\n    ok = (v > -9000) & (vm > -9000)\n    return float(np.corrcoef(v[ok], z[ok])[0, 1]), float(np.corrcoef(vm[ok], z[ok])[0, 1]), int(ok.sum())\n\ndef extract_targets(Z, transform, crs, p_min, min_area, max_targets):\n    mask = np.isfinite(Z) & (Z >= p_min)\n    polys = [shape(g) for g, _ in shapes(mask.astype(\"uint8\"), mask=mask, transform=transform)]\n    polys = [p for p in polys if p.area >= min_area]\n    n_before = len(polys)\n    if not polys: return gpd.GeoDataFrame({\"geometry\": []}, crs=crs), 0\n    gdf = gpd.GeoDataFrame({\"geometry\": polys}, crs=crs)\n    ids = rasterize(((g, i+1) for i, g in enumerate(gdf.geometry)), out_shape=Z.shape, transform=transform, fill=0, dtype=\"int32\")\n    st = pd.DataFrame({\"id\": ids.ravel(), \"z\": Z.ravel()}); st = st[(st.id > 0) & np.isfinite(st.z)]\n    agg = st.groupby(\"id\")[\"z\"].agg([\"mean\", \"max\"]).reindex(range(1, len(gdf)+1))\n    gdf[\"mean_p\"], gdf[\"max_p\"], gdf[\"area_m2\"] = agg[\"mean\"].values, agg[\"max\"].values, gdf.geometry.area.values\n    gdf = gdf.sort_values(\"mean_p\", ascending=False).head(max_targets).reset_index(drop=True)\n    gdf[\"target_id\"] = [f\"QML_ZON_{i+1:02d}\" for i in range(len(gdf))]\n    return gdf, n_before"
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c29",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c29",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693139451,
     "user_tz": -180,
     "elapsed": 945,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "0ebba4ee-4d7f-4554-bab3-9ef6809e1a81"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Harita modeli: RandomForest | hiza: raster↔skor r=1.000 (düşey yansıma r=0.350, n=385)\n",
      "Hedef bölge: 1 (üst sınır öncesi 1) | P_MIN=0.5\n",
      " target_id  mean_p  max_p     area_m2\n",
      "QML_ZON_01   0.867  0.998 134760000.0\n"
     ]
    }
   ],
   "source": "best_name = res[res.model.isin(MODEL_NAMES)].groupby(\"model\")[\"ap\"].mean().idxmax()\nraw = oof_raw[best_name]; ok = np.isfinite(raw)\ncalib = LogisticRegression(C=1e6, max_iter=1000).fit(raw[ok].reshape(-1, 1), y[ok])\np_oof = np.full(len(y), np.nan); p_oof[ok] = calib.predict_proba(raw[ok].reshape(-1, 1))[:, 1]\n\nscores_by_token = {t: float(p) for t, p in zip(tokens, p_oof)}\ncloud_payload = build_cloud_payload(tokens, Xs_all)                 # giden yük sözleşmesi (koordinat yok); Xs_all = kodlanmış özellikler\nloc = [vault.lookup(t) for t in scores_by_token]\nxs = np.array([l[\"x\"] for l in loc]); ys = np.array([l[\"y\"] for l in loc]); zz = np.array(list(scores_by_token.values()))\nm_ok = np.isfinite(zz)\n\nZ, transform, cx, cy = make_surface(xs[m_ok], ys[m_ok], zz[m_ok], CFG[\"GRID_RES_M\"])\ntif_path = os.path.join(CFG[\"OUT_DIR\"], \"quantum_anomaly_prob.tif\"); save_geotiff(Z, transform, CFG[\"WORK_CRS\"], tif_path)\nc_al, c_mir, n_al = raster_alignment(tif_path, xs[m_ok], ys[m_ok], zz[m_ok])\ntargets, n_zones_before_cap = extract_targets(Z, transform, CFG[\"WORK_CRS\"], CFG[\"P_MIN\"], CFG[\"MIN_TARGET_AREA_M2\"], CFG[\"MAX_TARGETS\"])\nprint(f\"Harita modeli: {best_name} | hiza: raster↔skor r={c_al:.3f} (düşey yansıma r={c_mir:.3f}, n={n_al})\")\nprint(f\"Hedef bölge: {len(targets)} (üst sınır öncesi {n_zones_before_cap}) | P_MIN={CFG['P_MIN']}\")\nif len(targets):\n    targets.to_file(os.path.join(CFG[\"OUT_DIR\"], \"QML_Sondaj_Hedefleri.shp\"))\n    targets.to_crs(\"EPSG:4326\").to_file(os.path.join(CFG[\"OUT_DIR\"], \"QML_Sondaj_Hedefleri.geojson\"), driver=\"GeoJSON\")\n    print(targets[[\"target_id\", \"mean_p\", \"max_p\", \"area_m2\"]].round(3).to_string(index=False))"
  },
  {
   "cell_type": "markdown",
   "id": "c30",
   "metadata": {
    "id": "c30"
   },
   "source": "## Module 6b — QUBO ile sondaj yeri seçimi (D-Wave tarzı annealing)\n`min  −Σ pᵢ xᵢ + A·Σ_{dᵢⱼ<d_min} xᵢ xⱼ + B·(Σ xᵢ − K)²` — noktalar arasında **gerçek bağ** (aralık cezası). Sonuç **tam çözüm** ve **greedy** ile karşılaştırılır. Simüle tavlama kullanılır; gerçek D-Wave için `SASampler` yerine `EmbeddingComposite(DWaveSampler())` verilir."
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c31",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c31",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693141329,
     "user_tz": -180,
     "elapsed": 1797,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "fd15c55f-c3da-464b-f21b-a51cbea36805"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "{'status': 'tamam', 'aday': 40, 'k': 4, 'feasible': True, 'obj_qubo': 3.9924540519714355, 'obj_greedy': 3.9924540519714355, 'obj_exact': 3.9924540519714355}\n",
      "site_id     p  target_id        x         y\n",
      " SND-01 0.998 QML_ZON_01 553872.0 4190912.0\n",
      " SND-02 0.998 QML_ZON_01 554872.0 4189712.0\n",
      " SND-03 0.998 QML_ZON_01 558472.0 4189112.0\n",
      " SND-04 0.998 QML_ZON_01 556272.0 4188912.0\n"
     ]
    }
   ],
   "source": "def candidate_cells(Z, cx, cy, p_min, m, thin_m):\n    iy, ix = np.where(np.isfinite(Z) & (Z >= p_min))\n    if len(iy) == 0: return np.empty((0, 2)), np.empty(0)\n    vals = Z[iy, ix]; order = np.argsort(-vals)\n    pts = np.column_stack([cx[ix], cy[iy]])[order]; vals = vals[order]; keep = []\n    for i in range(len(pts)):\n        if all(np.hypot(*(pts[i] - pts[j])) >= thin_m for j in keep): keep.append(i)\n        if len(keep) >= m: break\n    return pts[keep], vals[keep]\n\ndef greedy_sites(p, D, k, dmin):\n    chosen = []\n    for i in np.argsort(-p):\n        if all(D[i, j] >= dmin for j in chosen): chosen.append(i)\n        if len(chosen) == k: break\n    return chosen\n\ndef exact_sites(p, D, k, dmin, limit=1_500_000):\n    from math import comb\n    if comb(len(p), k) > limit: return None\n    best, best_set = -1.0, None\n    for c in itertools.combinations(range(len(p)), k):\n        if all(D[i, j] >= dmin for i, j in itertools.combinations(c, 2)):\n            s = float(p[list(c)].sum())\n            if s > best: best, best_set = s, list(c)\n    return best_set\n\ndef qubo_sites(p, D, k, dmin, num_reads=1000, seed=SEED):          # 300 okumada 40 örneğin 30'unda optimum; 1000'de 40/40 (ceza katsayısını büyütmek kötüleştirdi)\n    n = len(p); A = B = 2.0 * max(1.0, float(p.max()))\n    bqm = dimod.BinaryQuadraticModel(\"BINARY\")\n    for i in range(n): bqm.add_variable(i, -float(p[i]))\n    for i, j in itertools.combinations(range(n), 2):\n        if D[i, j] < dmin: bqm.add_interaction(i, j, A)\n    bqm.add_linear_equality_constraint([(i, 1.0) for i in range(n)], constant=-k, lagrange_multiplier=B)\n    try:    ss = SASampler().sample(bqm, num_reads=num_reads, seed=seed)\n    except TypeError: ss = SASampler().sample(bqm, num_reads=num_reads)\n    for rec in ss.data(sorted_by=\"energy\"):\n        sel = [i for i in range(n) if rec.sample[i] == 1]\n        if len(sel) == k and all(D[i, j] >= dmin for i, j in itertools.combinations(sel, 2)): return sel, True\n    rec = next(ss.data(sorted_by=\"energy\")); return [i for i in range(n) if rec.sample[i] == 1], False\n\nsites = gpd.GeoDataFrame({\"geometry\": []}, crs=CFG[\"WORK_CRS\"]); qubo_info = dict(status=\"hedef yok\")\nif len(targets):\n    pts, pv = candidate_cells(Z, cx, cy, CFG[\"P_MIN\"], CFG[\"QUBO_CANDIDATES\"], CFG[\"CAND_THIN_M\"])\n    D = np.linalg.norm(pts[:, None, :] - pts[None], axis=2)\n    k_eff = min(CFG[\"N_DRILL_SITES\"], len(greedy_sites(pv, D, CFG[\"N_DRILL_SITES\"], CFG[\"MIN_SITE_SPACING_M\"])))\n    if k_eff >= 1:\n        sel_q, feas = qubo_sites(pv, D, k_eff, CFG[\"MIN_SITE_SPACING_M\"])\n        sel_g = greedy_sites(pv, D, k_eff, CFG[\"MIN_SITE_SPACING_M\"]); sel_e = exact_sites(pv, D, k_eff, CFG[\"MIN_SITE_SPACING_M\"])\n        obj = lambda s: float(pv[s].sum()) if s else float(\"nan\")\n        qubo_info = dict(status=\"tamam\", aday=len(pts), k=k_eff, feasible=bool(feas), obj_qubo=obj(sel_q), obj_greedy=obj(sel_g), obj_exact=obj(sel_e) if sel_e else None)\n        print(qubo_info)\n        rows = []\n        for n_, i in enumerate(sel_q):\n            pt = Point(*pts[i]); tid = next((r.target_id for r in targets.itertuples() if r.geometry.contains(pt)), \"—\")\n            rows.append(dict(site_id=f\"SND-{n_+1:02d}\", p=float(pv[i]), target_id=tid, geometry=pt))\n        sites = gpd.GeoDataFrame(rows, crs=CFG[\"WORK_CRS\"])\n        sites.to_file(os.path.join(CFG[\"OUT_DIR\"], \"QML_Sondaj_Noktalari.geojson\"), driver=\"GeoJSON\")\n        print(sites.assign(x=sites.geometry.x.round(0), y=sites.geometry.y.round(0)).drop(columns=\"geometry\").round(3).to_string(index=False))\n    else:\n        qubo_info = dict(status=\"aday yetersiz\")\nelse:\n    print(\"Hedef bölge yok → sondaj yeri seçimi atlandı.\")"
  },
  {
   "cell_type": "markdown",
   "id": "c32",
   "metadata": {
    "id": "c32"
   },
   "source": "**QUBO formülasyon doğrulaması.** Gerçek veride adaylar çoğu zaman eşit olasılıklı (plato) olduğundan yukarıdaki karşılaştırma ayırt edici olmayabilir; bu yüzden formülasyon, tam çözümü bilinen **rastgele örneklerde** de sınanır. Bu bir doğruluk testidir, kuantum üstünlüğü iddiası değildir. Ayar notu: 300 okumada QUBO greedy'nin gerisinde kaldı; sorun formülasyonda değil örnekleme bütçesindeydi — 1000 okumada tam çözümle eşleşti, ceza katsayısını büyütmek ise sonucu kötüleştirdi."
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c33",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c33",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693160515,
     "user_tz": -180,
     "elapsed": 19168,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "a8fb024e-42a7-4bd8-962c-5c58aa049474"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "{'instances': 20, 'qubo_optimal': 20, 'greedy_optimal': 20, 'qubo_mean_gap_pct': 0.0, 'greedy_mean_gap_pct': 6.278194394762332e-16}\n"
     ]
    }
   ],
   "source": "def qubo_validation(n_inst=20, n=25, k=4, dmin=1500.0, area=6000.0, seed=SEED):\n    r = np.random.default_rng(seed); gq, gg, opt_q, opt_g, used = [], [], 0, 0, 0\n    for _ in range(n_inst):\n        pts = r.uniform(0, area, (n, 2)); p = r.uniform(0.3, 1.0, n); D = np.linalg.norm(pts[:, None] - pts[None], axis=2)\n        ex = exact_sites(p, D, k, dmin)\n        if ex is None: continue\n        best = float(p[ex].sum()); used += 1\n        sq, feas = qubo_sites(p, D, k, dmin); oq = float(p[sq].sum()) if feas else 0.0\n        og = float(p[greedy_sites(p, D, k, dmin)].sum())\n        gq.append((best - oq)/best); gg.append((best - og)/best); opt_q += oq >= best - 1e-9; opt_g += og >= best - 1e-9\n    return dict(instances=used, qubo_optimal=int(opt_q), greedy_optimal=int(opt_g),\n                qubo_mean_gap_pct=100*float(np.mean(gq)), greedy_mean_gap_pct=100*float(np.mean(gg)))\nqval = qubo_validation(); print(qval)"
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c34",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 557
    },
    "id": "c34",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693162225,
     "user_tz": -180,
     "elapsed": 1714,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "e4fcaac1-88dc-4d8a-a04a-47e70aacb391"
   },
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 1300x520 with 3 Axes>"
      ],
      "image/png": "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exSz4VbrYkzDF28/fDKDp298kerKGrbec0tGHbGjTmdspt2P+h3vPVnXi1yMsOvYnZp8/aTaP3EHQ+nEoBcfCcBBSq5AQhus2vmKTgVThq19DYghhWORyHbABQ2PFYONHQzVDxMsrxTAIgV/XOWvRynVvuQlhVpcXMyQIUOytsLCQnr06MGQIcE7GmPHjuWCC+p+MV177bVccskl3H333QwaNIi5c+cyd+5cKiqCsc4iwrhx4xg/fjzPPvssn332GWPHjqV///7sv//+AGy00UaMHj2a448/ng8//JD//ve/nHLKKRx66KE6uVcppZRqI9bmflO5NXHixMxzq6bceeed7LDDDpSVlVFWVsaoUaP48MMPs46x1nLppZfSr18/YrEYo0aN4rvvvss6ZtGiRYwZM4aSkhK6devGsccem3l+pzqe7n3L2HqvLdl4m/UbTfh9//FPnLrNBbx6/zu8+/gHXHfUTTx0zZN5iLRj2mbvLbno4XGsPXQt+q3dhwPH7cWpNx+f77DUapLY/kjv/yI9nkJ6v48UHLzq5xJBCo/AdL8f0/32VMJvBceXXASFfwFnXQhtinS7SYcnKNWJtNu6yZkzZzJnzpzM7VtvvZV4PM5BBx1Ev379MtukSZMyx5x77rmceuqpnHDCCYwYMYKKigpefvnlrL5/Dz74IBtuuCG77LILe+65J9tvvz133HFHm35tSimllFLt1dSpU7n99tuz2qg05u233+awww7jrbfeYvLkyQwcOJDddtuNX375JXPMddddx4033shtt93GlClTKCwsZPfdd6empiZzzJgxY/jiiy947bXXeP7553n33Xc54QTt59NZPXHD83hJH9/zsX6QsX/o6ifwfV2n31w7H7Idt0+fxP3f38SfJx1JOBJa+YO6EBv/H/6C/fDnbYW/6BisN2flD2oHxHRDQpsgpqxtryshTPEZmF4vYno8jkR3a9PrK6Val1ir74+3VHl5OaWlpQQ5U12KoJRSqmMQEc46axwTJ07EcZzMv2dLly5tk3616evNPvwQSsLLNxpfjfPG46zx70fb7OvozCoqKhg2bBi33HIL48ePZ/PNN+eGG25o1mM9z6OsrIybbrqJsWPHYq2lf//+nHXWWZx9djBtc+nSpfTp04d7772XQw89lK+++oqNN96YqVOnZlq3vPzyy+y5557Mnj272Ssx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Dz74gPPPP59Fixax8847c9999xWadSxYsADPK06ImDJlCrfffjvnnXceP/jBD9h66625++67mTRpUrVOwfQx9v1vz4Gd/8Z9/mDPwcZ+/mDPgZ1/3zt/0d7oEWyMMcYYY4wxxhhjjOk1tqafMcYYY4wxxhhjjDEDjIV+xhhjjDHGGGOMMcYMMBb6GWOMMcYYY4wxxhgzwFjoZ4wxxhhjjDHGGGPMALPRhX4//OEPEZGyy8SJEzvsp6oceOCBiAh333132W3t7y8i3HHHHWX7PPzww+y6666k02m22morbr755g6Pcc011zB+/HhqamqYPHky//rXv8pub2tr4+STT2b48OE0NDRw6KGHsnjx4vU+t3333bfD7SeeeGLZMRYsWMBBBx1EXV0dm266KWeeeSZBEAyIc+uvXzeAp556ik9/+tPU19czaNAg9t57b1pbWwu3L1u2jCOOOIJBgwYxZMgQjj32WFavXl12jBdeeIG99tqLmpoaxo0bx2WXXdZhLHfddRcTJ06kpqaGHXbYgXvvvbfsdlXl/PPPZ/To0dTW1jJ16lRef/31Hj238ePHdzjGzJkz+/S5vfXWW53+exMR7rrrrsIx+uP3W3fPrb9+vy1atIgjjzySUaNGUV9fz6677srvfve7smP01e83Y8yaDeTXgJU4//78OrE3n4OB/G8A+u9rzt58Dvrqa9MNPf/+/vq1t86/P/8MWNtzAAP/tXAlzr/f/QzQjcwFF1yg22+/vb7//vuFywcffNBhvyuvvFIPPPBABfQPf/hD2W2A3nTTTWXHaG1tLdz+3//+V+vq6vSMM87QV155Ra+66ir1fV/vu+++wj533HGHplIpvfHGG/Xll1/W4447TocMGaKLFy8u7HPiiSfquHHj9MEHH9RnnnlGP/7xj+uUKVPW+9z22WcfPe6448puX7lyZeH2IAh00qRJOnXqVH3uuef03nvv1REjRui5557b78+tP3/dnnzySR00aJDOmDFDX3rpJf3Pf/6jd955p7a1tRX2+X//7//pTjvtpP/85z/1scce06222kq/9rWvFW5fuXKljhw5Uo844gh96aWX9Ne//rXW1tbq9ddfX9jniSeeUN/39bLLLtNXXnlFzzvvPE0mk/riiy8W9pk5c6YOHjxY7777bn3++ef1C1/4gk6YMKHseaz0uW2++eZ60UUXlR1j9erVffrcgiAo2/7+++/rhRdeqA0NDbpq1arCPv3x+60756baf7/fPvOZz+juu++uTz/9tM6fP18vvvhi9TxPn3322cI+ffX7zRizZgP5NWAlzr8/v07sredAdWD/G+jPrzl78znoq69NN/T8+/vr1944f9X+/TNgbc+B6sB/LVyJ8+9vPwM2ytBvp512WuM+zz33nI4dO1bff//9Ll/wtd9W6qyzztLtt9++bNthhx2mBxxwQOH6HnvsoSeffHLhehiGOmbMGJ0xY4aqqq5YsUKTyaTeddddhX3+/e9/K6BPPfXUep3bPvvso6eeemqXt997773qeZ4uWrSosO3aa6/VQYMGaSaT6dfnptp/v26TJ0/W8847r8vbX3nlFQV0zpw5hW1//etfVUT03XffVVXVn/3sZzp06NDC11FV9eyzz9Ztt922cP2rX/2qHnTQQR0e+4QTTlBVVeecjho1Si+//PLC7StWrNB0Oq2//vWve+TcVKMfqj/+8Y+7vL2vnlt7O++8s06bNq1wvT9/v63t3FT77/dbfX293nrrrWXbhg0bpjfccIOq9u3vN2PMmg3k14DdMZBfJ3bXQH492R0D+TVndw3k16bdMZBfv3bHQH6N210b+2vhDT1/1f73M2Cjm94L8PrrrzNmzBi22GILjjjiCBYsWFC4raWlha9//etcc801jBo1qstjnHzyyYwYMYI99tiDG2+8EVUt3PbUU08xderUsv0POOAAnnrqKQCy2Sxz584t28fzPKZOnVrYZ+7cueRyubJ9Jk6cyGabbVbYZ13PDeC2225jxIgRTJo0iXPPPZeWlpayce+www6MHDmybNxNTU28/PLL/frc8vrb123JkiU8/fTTbLrppkyZMoWRI0eyzz778Pjjj5eNe8iQIey2226FbVOnTsXzPJ5++unCPnvvvTepVKrs3F599VWWL1/erfN/8803WbRoUdk+gwcPZvLkyT12bnkzZ85k+PDh7LLLLlx++eVlUwj64rm1N3fuXObNm8exxx5bNu7+/P22pnPL62/fbwBTpkzhzjvvZNmyZTjnuOOOO2hra2PfffctjLsvf78ZY9ZsIL8G3NDzh/79OrE3noO8gfhvYCC85uyN5yCvr7423ZDzb68/vn7t6fPP688/A8BeC2/I+ef1p58BiXXaewCYPHkyN998M9tuuy3vv/8+F154IXvttRcvvfQSjY2NnH766UyZMoWDDz64y2NcdNFFfPrTn6auro6///3vfPvb32b16tWccsopQDQPvPQHIcDIkSNpamqitbWV5cuXE4Zhp/v85z//KRwjlUoxZMiQDvssWrRovc7t61//OptvvjljxozhhRde4Oyzz+bVV1/l97///RrHnb+tP58b9M+v23//+18gWntg1qxZ7Lzzztx6663st99+vPTSS2y99dYsWrSITTfdtOyYiUSCYcOGlX3dJkyY0GFM+duGDh3a5fmXHqP0fr1xbgCnnHIKu+66K8OGDePJJ5/k3HPP5f333+fKK6/ss+fW2NhYtu8vf/lLtttuO6ZMmVLY1p+/39Z2btA/v98aGxv5zW9+w2GHHcbw4cNJJBLU1dXxhz/8ga222qrwmH31+80Ys2YD+TVgJc6/P79O7K3nAAbuv4H+/pqzt54D6LuvTTf0/Pv769feOH/o3z8DuvMcDPTXwht6/tD/fgZsdKHfgQceWPh8xx13ZPLkyWy++eb85je/YZNNNuGhhx7iueeeW+Mxpk+fXvh8l112obm5mcsvv7zwjV4tazq3Y489luOPP75w+w477MDo0aPZb7/9mD9/PltuuWU1htxtlTi3/vh122677QA44YQTOOaYY4Bo7A8++CA33ngjM2bMqMqYu6sS53bGGWeUHSOVSnHCCScwY8YM0ul0L55NubX9m8xrbW3l9ttvL/v319dV4tz64/fbsccey/Tp01mxYgUPPPAAI0aM4O677+arX/0qjz32GDvssEMVR26M2VAD+TVgdwzk14ndNZBfT3bHQH7N2V0D+bVpdwzk16/dMZBf43bXxv5auBLn399+BmyU03tLDRkyhG222YY33niDhx56iPnz5zNkyBASiQSJRJSJHnrooR3KOUtNnjyZd955h0wmA8CoUaM6dNZZvHgxgwYNora2lhEjRuD7fqf75KeTjBo1imw2y4oVK7rcZ13OratxA4Xbuxp3/rb+fG5d7dPXv26jR48G4KMf/WjZPtttt12hDHnUqFEsWbKk7PYgCFi2bNlav27529a0T+ntpffrjXPrzOTJkwmCgLfeeqvPnlup3/72t7S0tHDUUUeVbR8I329dnVtn+sP32/z587n66qu58cYb2W+//dhpp5244IIL2G233bjmmmsKj9lfvt+MMWs2kF8DdsdAfp3YXQP59WR3DOTXnN01kF+bdsdAfv3aHQP5NW53beyvhdf1/DvT138GbPSh3+rVq5k/fz6jR4/mnHPO4YUXXmDevHmFC8CPf/xjbrrppi6PMW/ePIYOHVpIdffcc08efPDBsn3uv/9+9txzTwBSqRQf+9jHyvZxzvHggw8W9vnYxz5GMpks2+fVV19lwYIFhX3W5dy6GjdQuH3PPffkxRdfLPsmvv/++xk0aFDhl19/Pbeu9unrX7fx48czZswYXn311bJ9XnvtNTbffPPCuFesWMHcuXMLtz/00EM45wovVvfcc08effRRcrlc2bltu+22DB06tFvnP2HCBEaNGlW2T1NTE08//XSPnVtn5s2bh+d5hbLyvnhupX75y1/yhS98gU022aRs+0D4fuvq3DrTH77f8us2eV75r0bf93HOFcbdX77fjDFrNpBfA3bHQH6d2F0D+fVkdwzk15zdNZBfm3bHQH792h0D+TVud23sr4XX9fw70+d/BqxT248B4Hvf+54+/PDD+uabb+oTTzyhU6dO1REjRuiSJUs63Z923Xn+9Kc/6Q033KAvvviivv766/qzn/1M6+rq9Pzzzy/sk2/TfeaZZ+q///1vveaaazpt051Op/Xmm2/WV155RY8//ngdMmRIWSekE088UTfbbDN96KGH9JlnntH/3979x1RV/3Ecf135ceF6EbC4UKDdEabFBE2Xu1OxohE0WwGWiyJlc+vHGrk1VxYu6w/0DzfmcM2yqbR0JlKyQZj9kU5muKGpZcykRLKiFQhxCzLs/f3Deb/y1fqqoHivz8d2tnvv4XzO+/259xw+e+9z78fn85nP57ui3FpbW+3NN9+05uZmO378uNXW1lpqaqplZWUFjj+3BHtOTo4dPHjQduzYYQkJCRddgj3YcgvW983MrKKiwsaMGWPV1dV27NgxKysrs6ioKGttbQ20kZuba1OnTrV9+/ZZY2OjTZgwYdCy6d3d3ZaYmGjFxcX21Vdf2ZYtW8zlcl2wbHh4eLitWrXKWlpa7PXXX7/osuFxcXFWW1trhw8ftkceeeRflw0fam579+61iooKO3jwoH377bf2/vvvW0JCgj399NPXfW5mZseOHTOHw2ENDQ0XHB+s19ul5Bas19vp06ctLS3NZs+ebfv27bPW1lZbtWqVORwOq6+vD7RxvV5vAP5dKI8Bh5p/sI8Tr1UfhPJnwCy4x5zXqg+u57HpcORvFrzj12uRf7DfA/5fH9wIY+Gh5h+M94Abrug3f/58u+WWWywyMtKSk5Nt/vz5g/6R/a//HfA1NDTYlClTzO122+jRoy0zM9PWrl1rZ86cGXTcZ599ZlOmTLHIyEhLTU21DRs2XNB2ZWWljR8/3iIjI+2ee+6xpqamQfv7+vrs+eeft/j4eHO5XJafn28//fTTFeXW3t5uWVlZNnbsWHM6nZaWlmZLliyxnp6eQW20tbVZXl6eRUdH280332wvvfSS/fXXX0GfW7C+b+esWLHCUlJSzOVymc/nsz179gza39nZaU888YS53W4bM2aMlZSUWG9v76C/OXTokM2aNcucTqclJyfbypUrL4hl69atdscdd1hkZKSlp6cPurmbnV06fNmyZZaYmGhOp9Oys7Pt6NGjVy23/fv324wZMyw2NtaioqLszjvvtPLycuvv7w+K3JYuXWrjxo274HN2TjBeb5eSWzBfb998840VFBSYx+Mxl8tlGRkZ9t577w1q43q93gD8u1AeAw41/2AfJ16rPgjlz8A5wTrmvFZ9cD2PTYcr/2Adv16L/IP9HnApfRDqY+Gh5h+M9wCH2XnrSwMAAAAAAAAIejf8b/oBAAAAAAAAoYaiHwAAAAAAABBiKPoBAAAAAAAAIYaiHwAAAAAAABBiKPoBAAAAAAAAIYaiHwAAAAAAABBiKPoBAAAAAAAAIYaiH4BhlZ6ers8//3xY22xra5PD4ZDb7VZNTc2wtj0cXnjhBUVHRystLW2kQwEAAAAAQBJFP+CG4vV65XK55Ha7A9tbb711xe0tX75cixYtGvTakSNH5PP5hhrqBcLCwuT3+1VYWDjsbXu9XjU2Nl7x8WvWrFFDQ8MwRgQAAAAAwNCEj3QAAK6tnTt3atasWSMdRlAZGBhQeDi3SwAAAABA8GCmHwBJUl1dnSZPnqyYmBhNmDBB1dXVg/ZNnDhRMTEx8nq92rJli3bt2qXy8nJVVVXJ7XYrLy9P0uBZcwsXLlRpaamys7MVExOjnJwcdXV1Bdpdt26dUlJSlJSUpHXr1snhcOjkyZOXFO/y5ctVVFSkwsJCud1uzZw5Ux0dHXr22WcVGxuru+++W999913g77/88ktlZWUpPj5e06ZNU3NzsyRp0aJFam9vV05OjtxutzZt2qSNGzfqvvvu0zPPPKPY2Fht2LBBXV1dKioqksfjUWpqqqqqqobc5wAAAAAAXC0U/QBIkmJiYrRt2zb19PRo9erVKikpUUdHh6SzhbH169ert7dXTU1NysjI0L333qtXX31VCxYskN/v/8evt27dulUVFRX65ZdfdObMGa1evVrS2SLckiVLtH37dh0/flx79+697Jhra2u1ePFidXV1afTo0fL5fLr//vvV2dmpqVOn6o033pAk+f1+5ebm6sUXX9Svv/6qZcuWqaCgQP39/Xr33Xc1fvx47dy5U36/X08++aQkac+ePfL5fDp16pSeeuopFRcX69Zbb9X333+vjz/+WEuXLtXhw4evpKsBAAAAALjqKPoBN5i8vDzFxcUFtt27d0uS5syZo4kTJ2rUqFF66KGHNHny5MBsuIiICLW0tMjv9yspKUl33XXXJZ/vscceU0ZGhqKiolRYWKhDhw5JkmpqalRQUKDp06crOjpaZWVll51Ldna2Zs+ercjISOXn5ysmJkaPP/64wsPDNW/evMC56urqlJ6ersLCQoWFhenRRx+Vx+NRU1PTP7Z9++23a+HChRo1apR6enq0a9curVixQk6nU5MmTVJRUZE+/PDDy44ZAAAAAIBrgaIfcINpaGhQd3d3YJszZ44kqbGxUTNnztTYsWMVFxen5uZmdXZ2SpK2bdumjz76SCkpKcrNzVVLS8slny8xMTHw2OVyye/3S5I6OjqUkpIS2Hf+40vl8XgCj6Ojoy94fu5c7e3t2r1796BiZ0tLi3788cd/bPv8eNrb29Xf36+EhITA8W+//XZgJiQAAAAAANcbin4AJEnFxcVasGCBOjo61N3drenTp8vMJEkzZsxQfX29fv75Z2VmZuq5556TJDkcjis+X1JSkn744YfA80v9Lb8rkZycrAcffHBQsfP3339XUVGRpIvncf5rycnJcrvdOnXqVOD43t5erV279qrFDAAAAADAUFD0AyBJ6u3t1U033aSIiAjV1NRo//79kqTTp09r8+bN+u233xQRESG3262wsDBJZ2fanThxIlAcvBz5+fmqqanRgQMH1N/fr/Ly8mHN53xz587VF198oe3bt2tgYEB9fX3asWOHenp6JJ3No62t7R+PT05Ols/nU1lZmf744w8NDAzowIED+vrrr69azAAAAAAADAVFP+AGc26V2nPba6+9JkmqrKxUaWmp4uPj9cknnwS+9itJVVVVuu222xQfH69PP/1Ua9askSTNmzdPfr9f8fHxmjt37mXFkZmZqZUrV+rhhx+W1+vVtGnTJElOp3OYMv2v2NhY1dfXq7KyUh6PR16vV++8805g/8svv6xXXnlFcXFx2rx580Xb2LRpk06ePKnU1FR5PB4tXrxYfX19wx4rAAAAAADDwWFXMkUHAIbZ0aNHlZGRof7+/gu+bnvixAlNmjRJTqdT69evV0FBwQhFeXGlpaXauHGjxo0bpyNHjox0OAAAAAAAUPQDMHLq6ur0wAMP6M8//1RJSYnCwsJUXV090mEBAAAAABD0+HovgBHzwQcfKDExUV6vV3///bcqKytHOiQAAAAAAEICM/0AAAAAAACAEMNMPwAAAAAAACDEUPQDAAAAAAAAQgxFPwAAAAAAACDEUPQDAAAAAAAAQgxFPwAAAAAAACDEUPQDAAAAAAAAQgxFPwAAAAAAACDEUPQDAAAAAAAAQgxFPwAAAAAAACDE/Ac/MKLuQAsFFgAAAABJRU5ErkJggg==\n"
     },
     "metadata": {}
    }
   ],
   "source": "fig, ax = plt.subplots(1, 2, figsize=(13, 5.2))\next = [transform.c, transform.c + transform.a*Z.shape[1], transform.f + transform.e*Z.shape[0], transform.f]\nim = ax[0].imshow(Z, extent=ext, cmap=\"magma\", vmin=0, vmax=1, origin=\"upper\"); plt.colorbar(im, ax=ax[0], label=\"kalibre olasılık\")\npos_m = m_ok & (y == 1)\nax[0].scatter(xs[pos_m], ys[pos_m], c=\"cyan\", s=12, edgecolors=\"none\", label=\"gözlenen co-location\")\nif len(targets): targets.boundary.plot(ax=ax[0], color=\"lime\", lw=1.5)\nif len(sites): sites.plot(ax=ax[0], color=\"white\", edgecolor=\"k\", markersize=60, marker=\"*\")\nif ingestor.truth_center: ax[0].plot(*ingestor.truth_center, \"x\", color=\"red\", ms=10, label=\"sentetik gerçek merkez\")\nax[0].legend(loc=\"upper right\", fontsize=8); ax[0].set_title(\"Olasılık yüzeyi, hedefler (yeşil), sondaj noktaları (★)\")\nax[1].scatter(xs, ys, c=lab_q, cmap=\"viridis\", s=10); ax[1].set_title(\"SWAP-test K-Means fasiyes kümeleri\")\nplt.tight_layout(); fig.savefig(os.path.join(CFG[\"OUT_DIR\"], \"map_v3_1.png\"), dpi=150); plt.show()"
  },
  {
   "cell_type": "markdown",
   "id": "c35",
   "metadata": {
    "id": "c35"
   },
   "source": "## Module 6d — Belirsizlik: coğrafi ağırlıklı konformal tahmin (GeoConformal tarzı) ve senaryo sınırları\nNokta olasılığı tek başına karar için yetersizdir. Bölgesel kalibrasyon ağırlıklarıyla (**Tobler yasası**: yakın noktalar daha benzer) **split-conformal** aralıklar üretilir: her hücre için `[p−q, p+q]`. Kapsama, **blok-dışı bırakma** ile doğrulanır (hedef %90). Alt/orta/üst sınırlar sondaj noktalarında toplanıp **Best / Optimum / Worst** senaryolarının sayısal girdisi olur (beklenen isabet sayısı). Not: ikili etiket ve `|y−p|` skoru kullanıldığı için kapsama garantisi yaklaşıktır (ağırlıklı, değiştirilebilirlik varsayımı uzamsal bağımlılıkla tam sağlanmaz)."
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c36",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c36",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693162235,
     "user_tz": -180,
     "elapsed": 9,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "3f697bd8-8fa2-41a4-a59d-1ccc815fc5cb"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Konformal (α=0.1) blok-dışı kapsama: genel 0.958 | pozitifler 0.815 | ortalama aralık genişliği 0.024\n",
      "Beklenen isabet (alt / orta / üst): {'n_sites': 4, 'lo': 3.81, 'mid': 3.99, 'hi': 4.0, 'top2_mid': 2.0, 'capex_per_expected_hit': 30557.65}\n"
     ]
    }
   ],
   "source": "def spatial_conformal_q(score, cal_xy, tgt_xy, alpha, h, chunk=2000):\n    \"\"\"Coğrafi ağırlıklı (GeoConformal tarzı) split-conformal: hedefin yakınındaki kalibrasyon noktaları daha ağırlıklı.\n    score: kalibrasyon uyumsuzluk skorları |y-p|. Dönüş: her hedef için ağırlıklı (1-alpha) niceliği.\"\"\"\n    order = np.argsort(score); ss = score[order]; out = np.empty(len(tgt_xy))\n    for a in range(0, len(tgt_xy), chunk):\n        d2 = cdist(tgt_xy[a:a+chunk], cal_xy[order], \"sqeuclidean\"); W = np.exp(-d2 / (2 * h ** 2))\n        cum = np.cumsum(W, 1) / (W.sum(1, keepdims=True) + 1.0)                 # +1: test noktasının kendi kütlesi\n        ok = cum >= 1 - alpha; j = np.where(ok.any(1), ok.argmax(1), len(ss) - 1)\n        out[a:a+chunk] = np.where(ok.any(1), ss[j], 1.0)\n    return out\n\n# --- 1) Blok-dışı bırakma ile kapsama doğrulaması (OOF olasılıklar üzerinde) ---\nALPHA, H_M = 0.10, float(CFG[\"BLOCK_SIZE_M\"])\nm_ = np.isfinite(p_oof); P_, Y_, XY_, G_ = p_oof[m_], y[m_], np.column_stack([xs[m_], ys[m_]]), groups[m_]\ncov, cov_pos, widths = [], [], []\nfor g_ in np.unique(G_):\n    te_ = G_ == g_\n    if te_.sum() == 0 or (~te_).sum() < 30: continue\n    q_ = spatial_conformal_q(np.abs(Y_[~te_] - P_[~te_]), XY_[~te_], XY_[te_], ALPHA, H_M)\n    hit = np.abs(Y_[te_] - P_[te_]) <= q_; cov += list(hit); widths += list(2 * q_)\n    cov_pos += list(hit[Y_[te_] == 1])\nconf_cov, conf_cov_pos, conf_width = float(np.mean(cov)), (float(np.mean(cov_pos)) if cov_pos else float(\"nan\")), float(np.mean(widths))\nprint(f\"Konformal (α={ALPHA}) blok-dışı kapsama: genel {conf_cov:.3f} | pozitifler {conf_cov_pos:.3f} | ortalama aralık genişliği {conf_width:.3f}\")\n\n# --- 2) Belirsizlik yüzeyi: alt/üst olasılık sınırı (kaba ızgarada hesapla, tam ızgaraya genişlet) ---\nny_, nx_ = Z.shape; st_ = max(1, int(np.ceil(np.sqrt(nx_ * ny_ / 6000))))\ngx, gy = np.meshgrid(cx[::st_], cy[::st_]); tg = np.column_stack([gx.ravel(), gy.ravel()])\nQc = spatial_conformal_q(np.abs(Y_ - P_), XY_, tg, ALPHA, H_M).reshape(gx.shape)\nQ = np.repeat(np.repeat(Qc, st_, 0), st_, 1)[:ny_, :nx_]\nZ_lo, Z_hi = np.clip(Z - Q, 0, 1).astype(\"float32\"), np.clip(Z + Q, 0, 1).astype(\"float32\")\nsave_geotiff(Z_lo, transform, CFG[\"WORK_CRS\"], os.path.join(CFG[\"OUT_DIR\"], \"prob_lower.tif\")); save_geotiff(Z_hi, transform, CFG[\"WORK_CRS\"], os.path.join(CFG[\"OUT_DIR\"], \"prob_upper.tif\"))\n\n# --- 3) Karar senaryoları için sayısal sınırlar: sondaj noktalarında beklenen isabet ---\ndef at_pts(A, gdf):\n    ix = np.clip(((gdf.geometry.x.values - transform.c) / transform.a).astype(int), 0, A.shape[1] - 1)\n    iy = np.clip(((gdf.geometry.y.values - transform.f) / transform.e).astype(int), 0, A.shape[0] - 1)\n    return A[iy, ix]\nif len(sites):\n    ps_, lo_, hi_ = at_pts(Z, sites), at_pts(Z_lo, sites), at_pts(Z_hi, sites)\n    top2 = np.sort(ps_)[::-1][:2].sum()\n    hits = dict(n_sites=int(len(sites)), lo=float(lo_.sum()), mid=float(ps_.sum()), hi=float(hi_.sum()), top2_mid=float(top2),\n                capex_per_expected_hit=float(len(sites) * (CFG[\"PAD_AREA_SQM\"] * CFG[\"UNIT_COST_PAD_PER_SQM\"] + CFG[\"DEPTH_M\"] * CFG[\"UNIT_COST_DRILLING_PER_M\"]) / max(ps_.sum(), 1e-9)))   # YER TUTUCU maliyet\nelse:\n    hits = None\nprint(\"Beklenen isabet (alt / orta / üst):\", None if hits is None else {k: round(v, 2) if isinstance(v, float) else v for k, v in hits.items()})"
  },
  {
   "cell_type": "markdown",
   "id": "c37",
   "metadata": {
    "id": "c37"
   },
   "source": "## Module 6e — Aktif öğrenme: bir sonraki sondaj önerisi\nHer yeni sondaj hem bir kazanç hem bir ölçümdür. **Edinim yüzeyi (UCB)** `p + κ·(konformal yarı genişlik)` — yüksek olasılıklı **ve** belirsiz hücreleri öne çıkarır; mevcut sondajlara yakın hücreler cezalandırılır; parti, aralık kısıtlı **QUBO** ile seçilir. Strateji seçimi, etiketlerin sondajla açıldığı **havuz simülasyonunda** (rastgele / yalnız-sömürü / UCB / yalnız-belirsizlik) sınanır. Sentetik veri üzerinde gösterilen kazanç, gerçek sahada doğrulanmadıkça kanıt değildir."
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c38",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c38",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693189504,
     "user_tz": -180,
     "elapsed": 27267,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "ac0b82ae-23e5-4c92-f7e6-c034cecea4b2"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Aktif öğrenme simülasyonu (60 başlangıç, 5 tur × 6 sondaj, 6 tekrar):\n",
      "             yeni_pozitif_ort   std\n",
      "random                   2.33  0.94\n",
      "exploit                 22.33  1.49\n",
      "ucb                     21.33  1.11\n",
      "uncertainty              7.83  1.21\n",
      "Sonraki sondaj önerisi (uygun=True):\n",
      "well_id  acquisition     p  p_lo  p_hi\n",
      "NEXT-01        0.957 0.968 0.906   1.0\n",
      "NEXT-02        0.914 0.968 0.906   1.0\n",
      "NEXT-03        0.880 0.939 0.789   1.0\n",
      "NEXT-04        0.810 0.937 0.787   1.0\n",
      "En iyi strateji: exploit (rastgeleye göre +20.00 yeni pozitif)\n"
     ]
    }
   ],
   "source": "def acquisition_surface(Z, Z_lo, Z_hi, ex_xy, cx, cy, kappa, r_m):\n    \"\"\"UCB = p + κ·(yarı konformal genişlik); mevcut sondajlara yakın hücreler cezalandırılır (tekrar sondaj yok).\"\"\"\n    XX, YY = np.meshgrid(cx, cy); d = cKDTree(ex_xy).query(np.column_stack([XX.ravel(), YY.ravel()]))[0].reshape(Z.shape)\n    return np.where(np.isfinite(Z), np.clip(Z + kappa * (Z_hi - Z_lo) / 2.0, 0, None) * (1 - np.exp(-(d / r_m) ** 2)), np.nan)\n\ndef al_simulation(Xf, y, xy, n0=60, batch=6, rounds=5, seeds=6, kappa=1.0, dmin=1500.0):\n    \"\"\"Havuz-tabanlı aktif öğrenme simülasyonu: etiketler sondajla 'açılır'. Strateji başına yeni bulunan pozitif sayısı.\"\"\"\n    strategies = [\"random\", \"exploit\", \"ucb\", \"uncertainty\"]; out = {s: [] for s in strategies}\n    for sd in range(seeds):\n        r0 = np.random.default_rng(sd); init = r0.choice(len(y), n0, replace=False)\n        for strat in strategies:\n            r = np.random.default_rng(1000 + sd); lab = set(init.tolist()); n_init = int(y[list(lab)].sum()); curve = [0]\n            for rd in range(rounds):\n                L = np.array(sorted(lab)); U = np.array([i for i in range(len(y)) if i not in lab])\n                if 0 < y[L].sum() < len(L):\n                    rf = RandomForestClassifier(100, class_weight=\"balanced\", random_state=sd).fit(Xf[L], y[L])\n                    tp = np.stack([t.predict_proba(Xf[U])[:, 1] for t in rf.estimators_]); p, sg = tp.mean(0), tp.std(0)\n                else: p, sg = np.zeros(len(U)), np.ones(len(U))\n                score = {\"random\": r.random(len(U)), \"exploit\": p, \"ucb\": p + kappa * sg, \"uncertainty\": sg}[strat]\n                chosen = []\n                for j in np.argsort(-score):\n                    if all(np.hypot(*(xy[U[j]] - xy[U[c]])) >= dmin for c in chosen): chosen.append(j)\n                    if len(chosen) == batch: break\n                lab |= set(U[chosen].tolist()); curve.append(int(y[list(lab)].sum()) - n_init)\n            out[strat].append(curve)\n    return {s: np.mean(v, 0) for s, v in out.items()}, {s: np.std(np.array(v)[:, -1]) for s, v in out.items()}\n\n# --- 1) Simülasyon: hangi seçim stratejisi daha çok yeni pozitif buluyor? ---\nal_mean, al_std = al_simulation(Xs_all, y, df[[\"x\", \"y\"]].values)\nal_tab = pd.DataFrame({s: [al_mean[s][-1], al_std[s]] for s in al_mean}, index=[\"yeni_pozitif_ort\", \"std\"]).T.round(2)\nprint(\"Aktif öğrenme simülasyonu (60 başlangıç, 5 tur × 6 sondaj, 6 tekrar):\"); print(al_tab.to_string())\nal_best = al_tab[\"yeni_pozitif_ort\"].idxmax(); al_gain = float(al_tab.loc[al_best, \"yeni_pozitif_ort\"] - al_tab.loc[\"random\", \"yeni_pozitif_ort\"])\n\n# --- 2) Haritadan: bir sonraki sondaj partisi (UCB yüzeyi + QUBO aralık kısıtı) ---\nKAPPA, R_EXIST = 1.0, 1500.0\nA_surf = acquisition_surface(Z, Z_lo, Z_hi, df[[\"x\", \"y\"]].values, cx, cy, KAPPA, R_EXIST)\nnext_w = gpd.GeoDataFrame({\"geometry\": []}, crs=CFG[\"WORK_CRS\"])\nfin_ = A_surf[np.isfinite(A_surf)]\nif fin_.size:\n    pa, va = candidate_cells(A_surf, cx, cy, float(np.quantile(fin_, 0.9)), CFG[\"QUBO_CANDIDATES\"], CFG[\"CAND_THIN_M\"])\n    if len(pa) >= CFG[\"N_DRILL_SITES\"]:\n        Da = np.linalg.norm(pa[:, None, :] - pa[None], axis=2); sel_a, feas_a = qubo_sites(va, Da, CFG[\"N_DRILL_SITES\"], CFG[\"MIN_SITE_SPACING_M\"])\n        rows = [dict(well_id=f\"NEXT-{n_+1:02d}\", acquisition=float(va[i]), p=float(at_pts(Z, gpd.GeoDataFrame(geometry=[Point(*pa[i])]))[0]),\n                     p_lo=float(at_pts(Z_lo, gpd.GeoDataFrame(geometry=[Point(*pa[i])]))[0]), p_hi=float(at_pts(Z_hi, gpd.GeoDataFrame(geometry=[Point(*pa[i])]))[0]), geometry=Point(*pa[i])) for n_, i in enumerate(sel_a)]\n        next_w = gpd.GeoDataFrame(rows, crs=CFG[\"WORK_CRS\"]); next_w.to_file(os.path.join(CFG[\"OUT_DIR\"], \"QML_Sonraki_Sondajlar.geojson\"), driver=\"GeoJSON\")\n        print(f\"Sonraki sondaj önerisi (uygun={feas_a}):\"); print(next_w.drop(columns=\"geometry\").round(3).to_string(index=False))\nprint(f\"En iyi strateji: {al_best} (rastgeleye göre {al_gain:+.2f} yeni pozitif)\")"
  },
  {
   "cell_type": "markdown",
   "id": "c39",
   "metadata": {
    "id": "c39"
   },
   "source": "## Module 6c — Cihaz ağı (DeviceFabric): tüm cihazlara tek altyapı ve görev paylaşımı\nProgram, kuantum ve diğer hesaplama cihazlarını **tek bir kayıt/yönlendirme katmanı** üzerinden kullanır. Her cihaz bir **adaptör** (kimlik/sağlık kontrolü + `run`) ve bir **DeviceSpec** (tür, qubit, hata, maliyet, kuyruk) ile tanımlanır; her görev türü hangi cihaz türlerinde çalışabileceğini bildirir.\n\n| Cihaz | Tür | Aldığı görevler | Durum |\n|---|---|---|---|\n| `local_sim` | GPU/CPU simülatör | eğitim, çıkarım, çekirdek, kümeleme, VQE, QUBO | test edildi |\n| `ibm` | süperiletken kapı | VQC çıkarımı | `fake` ile test edildi; gerçek cihaz test edilmedi |\n| `rigetti`, `wukong`, `saxonq` | kapı tabanlı | VQC çıkarımı (OpenQASM) | **iskelet**: `submit_hook` + SDK + hesap gerekir |\n| `quera`, `pasqal` | analog Rydberg | sondaj noktası seçimi (MIS/QUBO) | **iskelet**: `submit_hook` gerekir |\n| `xanadu` | fotonik (sürekli değişkenli) | — (kapı tabanlı devre eşlenmez) | kayıtlı, görev almaz |\n| `cerebras` / `rule_wisdom` | LLM çıkarımı / deterministik | SWOT yorum metni | Cerebras anahtar gerektirir |\n\n**Kurallar:** (1) Görev, türüne uygun ve **sağlıklı** cihazlara öncelik sırasıyla verilir; cihaz yoksa/başarısızsa sıradakine **otomatik düşer**, son durak yerel simülatördür. (2) Donanım modunda uzak kapı cihazları önce, simülatör modunda yerel önce denenir. (3) Uzak cihaza giden yükte **koordinat/kimlik alanı** olamaz (sözleşme ihlalinde cihaz atlanır). (4) Eğitim hiçbir uzak cihaza gitmez. (5) Her dağıtım `fabric_audit.json` dosyasına yazılır (yük içeriği yazılmaz)."
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c40",
   "metadata": {
    "id": "c40",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693189511,
     "user_tz": -180,
     "elapsed": 3,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    }
   },
   "outputs": [],
   "source": "from dataclasses import dataclass, field\nfrom abc import ABC, abstractmethod\n\n# ---- Görev katalogları: hangi iş hangi cihaz türünde çalışabilir ----\nTASKS = {\n    \"vqc_inference\": dict(kinds={\"gate\", \"simulator\"}, remote_ok=True,  note=\"eğitilmiş VQC ağırlıklarıyla skorlama (kapı tabanlı)\"),\n    \"vqc_training\":  dict(kinds={\"simulator\"},         remote_ok=False, note=\"gradyanlı eğitim: GPU simülatörde (donanımda parametre-kayması pahalı)\"),\n    \"kernel\":        dict(kinds={\"gate\", \"simulator\"}, remote_ok=True,  note=\"kuantum çekirdek (fidelity) hesabı\"),\n    \"swap_cluster\":  dict(kinds={\"gate\", \"simulator\"}, remote_ok=True,  note=\"SWAP-test kümeleme\"),\n    \"vqe\":           dict(kinds={\"gate\", \"simulator\"}, remote_ok=True,  note=\"oyuncak VQE\"),\n    \"qubo_sites\":    dict(kinds={\"analog_rydberg\", \"annealer\", \"simulator\"}, remote_ok=True, note=\"sondaj noktası seçimi (MIS/QUBO)\"),\n    \"wisdom_llm\":    dict(kinds={\"llm\"},               remote_ok=True,  note=\"SWOT/senaryo yorum metni (yalnızca toplu metrik)\"),\n    \"classical\":     dict(kinds={\"cpu\"},               remote_ok=False, note=\"klasik taban çizgileri, GIS\"),\n}\nclass NotConfigured(RuntimeError): pass\n\n@dataclass\nclass DeviceSpec:\n    name: str; provider: str; kind: str; n_qubits: int = 0; e2: float = 0.0\n    tasks: set = field(default_factory=set); remote: bool = False; enabled: bool = True\n    cost: float = 0.0; queue_s: float = 0.0           # göreli maliyet ve tahmini kuyruk (sn)\n\nclass Adapter(ABC):\n    def __init__(self, spec): self.spec = spec\n    def healthy(self):                                  # kimlik bilgisi/erişim kontrolü; çağrı kota harcamaz\n        return True, \"hazır\"\n    @abstractmethod\n    def run(self, task, payload): ...\n\nclass LocalSimAdapter(Adapter):\n    \"\"\"GPU/CPU simülatör: tüm kuantum görevleri için her zaman çalışan yedek.\"\"\"\n    def __init__(self, spec, handlers): super().__init__(spec); self.h = handlers\n    def run(self, task, payload):\n        if task not in self.h: raise NotConfigured(f\"{self.spec.name}: '{task}' işleyicisi yok\")\n        return self.h[task](payload)\n\nclass IBMAdapter(Adapter):\n    \"\"\"IBM (fake: yerelde test edildi; ibm: gerçek cihaz, test edilmedi). Ayrı süreç işçisini kullanır.\"\"\"\n    def __init__(self, spec, executor, model_getter): super().__init__(spec); self.ex, self.mg = executor, model_getter\n    def healthy(self):\n        if CFG[\"HW_PROFILE_SOURCE\"] not in (\"fake\", \"ibm\"): return False, \"HW_PROFILE_SOURCE fake/ibm değil\"\n        if CFG[\"HW_PROFILE_SOURCE\"] == \"ibm\" and not CFG[\"HW_SUBMIT\"]: return False, \"HW_SUBMIT=False (kota koruması)\"\n        return True, \"hazır\"\n    def run(self, task, payload):\n        if task != \"vqc_inference\": raise NotConfigured(\"IBM adaptörü şimdilik yalnızca vqc_inference\")\n        sc, info, _ = self.ex.score(self.mg(), payload[\"feats\"]); return dict(scores=sc, info=info)\n\nclass QASMGateAdapter(Adapter):\n    \"\"\"Rigetti / Wukong (Origin) / SaxonQ: devreyi OpenQASM'e çevirir, sağlayıcı SDK'sını `submit_hook` ile bağlar.\n    submit_hook(qasm_list, shots) -> sonuçlar. Kimlik bilgisi yoksa NotConfigured. TEST EDİLMEMİŞ iskelet.\"\"\"\n    ENV = {\"rigetti\": \"RIGETTI_API_KEY\", \"wukong\": \"ORIGIN_QUANTUM_API_KEY\", \"saxonq\": \"SAXONQ_API_KEY\"}\n    def __init__(self, spec, to_qasm, submit_hook=None): super().__init__(spec); self.to_qasm, self.hook = to_qasm, submit_hook\n    def healthy(self):\n        if self.hook is None: return False, f\"submit_hook tanımlı değil ({self.ENV.get(self.spec.provider, 'kimlik bilgisi')} + SDK gerekir)\"\n        return True, \"hazır\"\n    def run(self, task, payload):\n        if self.hook is None: raise NotConfigured(self.healthy()[1])\n        return self.hook([self.to_qasm(payload[\"weights\"], x) for x in payload[\"feats\"]], payload.get(\"shots\", 1000))\n\nclass NeutralAtomAdapter(Adapter):\n    \"\"\"QuEra / Pasqal: MIS problemi (düğüm = aday nokta, kenar = mesafe < d_min). TEST EDİLMEMİŞ iskelet.\"\"\"\n    def __init__(self, spec, submit_hook=None): super().__init__(spec); self.hook = submit_hook\n    def healthy(self):\n        return (self.hook is not None, \"hazır\" if self.hook else \"submit_hook yok (QuEra/Pasqal SDK + hesap gerekir)\")\n    def run(self, task, payload):\n        if self.hook is None: raise NotConfigured(self.healthy()[1])\n        return self.hook(dict(p=payload[\"p\"], D=payload[\"D\"], d_min=payload[\"dmin\"], k=payload[\"k\"]))   # mutlak koordinat yok: yalnızca olasılık + mesafe matrisi (hook göreli yerleşimi kurar)\n\nclass UnsupportedAdapter(Adapter):\n    \"\"\"Xanadu (fotonik, sürekli değişkenli): kapı tabanlı VQC/QUBO görevleri eşlenmez -> kayıtlı ama görev almaz.\"\"\"\n    def run(self, task, payload): raise NotConfigured(f\"{self.spec.name}: bu görev türü desteklenmiyor\")\n\nclass LLMAdapter(Adapter):\n    def __init__(self, spec, fn): super().__init__(spec); self.fn = fn\n    def healthy(self):\n        k = os.environ.get(\"CEREBRAS_API_KEY\")\n        if not k:\n            try:\n                from google.colab import userdata; k = userdata.get(\"CEREBRAS_API_KEY\")\n            except Exception: k = None\n        return (bool(k), \"hazır\" if k else \"CEREBRAS_API_KEY yok\")\n    def run(self, task, payload):\n        text, src = self.fn(payload[\"facts\"], payload[\"wisdom\"])\n        if text is None: raise NotConfigured(src)\n        return dict(text=text, source=src)\n\ndef payload_is_clean(task, payload):\n    \"\"\"Uzak cihaza çıkan yük sözleşmesi: koordinat/kimlik alanı yok.\"\"\"\n    def walk(o):\n        if isinstance(o, dict):\n            for k, v in o.items():\n                if str(k).lower() in FORBIDDEN_KEYS: return False\n                if not walk(v): return False\n        elif isinstance(o, (list, tuple)):\n            return all(walk(v) for v in o)\n        return True\n    return walk(payload)\n\nclass DeviceFabric:\n    def __init__(self, policy=\"fidelity\", prefer_remote=False):\n        self.devs, self.log, self.policy, self.prefer_remote = {}, [], policy, prefer_remote   # policy: fidelity | cost | latency\n    def register(self, adapter): self.devs[adapter.spec.name] = adapter; return self\n    def eligible(self, task, width=0):\n        t, out = TASKS[task], []\n        for a in self.devs.values():\n            s = a.spec; ok, why = a.healthy()\n            if not s.enabled or s.kind not in t[\"kinds\"] or (s.remote and not t[\"remote_ok\"]) or (width and s.n_qubits and s.n_qubits < width): continue\n            if task not in s.tasks: continue\n            out.append((a, ok, why))\n        key = {\"fidelity\": lambda a: (a.spec.remote != self.prefer_remote, a.spec.e2, a.spec.cost),   # donanım modunda uzak cihaz önce, değilse yerel önce\n               \"cost\": lambda a: (a.spec.cost, a.spec.e2), \"latency\": lambda a: (a.spec.queue_s, a.spec.e2)}[self.policy]\n        return sorted(out, key=lambda r: key(r[0]))\n    def plan(self, task, width=0):\n        el = self.eligible(task, width)\n        return [dict(task=task, device=a.spec.name, provider=a.spec.provider, kind=a.spec.kind, hazir=ok, durum=why) for a, ok, why in el]\n    def dispatch(self, task, payload, width=0):\n        tried = []\n        for a, ok, why in self.eligible(task, width):\n            if not ok: tried.append((a.spec.name, why)); continue\n            if a.spec.remote and not payload_is_clean(task, payload):\n                tried.append((a.spec.name, \"payload sözleşmesi ihlali (koordinat/kimlik alanı)\")); continue\n            t0 = time.time()\n            try:\n                res = a.run(task, payload)\n                self.log.append(dict(task=task, device=a.spec.name, ok=True, sec=round(time.time() - t0, 2), skipped=tried))\n                return res, a.spec.name\n            except NotConfigured as e: tried.append((a.spec.name, str(e)))\n            except Exception as e:\n                tried.append((a.spec.name, f\"{type(e).__name__}: {str(e)[:120]}\"))\n        self.log.append(dict(task=task, device=None, ok=False, skipped=tried))\n        raise RuntimeError(f\"'{task}' için uygun cihaz bulunamadı: {tried}\")"
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "c41",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c41",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693214576,
     "user_tz": -180,
     "elapsed": 25063,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "b383825b-4a24-4c7a-ed00-67b02a7c991b"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "GÖREV PAYLAŞIMI (öncelik sırasıyla):\n",
      "         task      device provider           kind  hazir                                                            durum\n",
      "vqc_inference   local_sim    local      simulator   True                                                            hazır\n",
      "vqc_inference         ibm      ibm           gate  False                                 HW_PROFILE_SOURCE fake/ibm değil\n",
      "vqc_inference     rigetti  rigetti           gate  False        submit_hook tanımlı değil (RIGETTI_API_KEY + SDK gerekir)\n",
      "vqc_inference      wukong   wukong           gate  False submit_hook tanımlı değil (ORIGIN_QUANTUM_API_KEY + SDK gerekir)\n",
      "vqc_inference      saxonq   saxonq           gate  False         submit_hook tanımlı değil (SAXONQ_API_KEY + SDK gerekir)\n",
      "   qubo_sites   local_sim    local      simulator   True                                                            hazır\n",
      "   qubo_sites       quera    quera analog_rydberg  False               submit_hook yok (QuEra/Pasqal SDK + hesap gerekir)\n",
      "   qubo_sites      pasqal   pasqal analog_rydberg  False               submit_hook yok (QuEra/Pasqal SDK + hesap gerekir)\n",
      "   wisdom_llm rule_wisdom    local            llm   True                                                            hazır\n",
      "   wisdom_llm    cerebras cerebras            llm  False                                             CEREBRAS_API_KEY yok\n",
      "vqc_inference -> local_sim: 16 skor, ilk 3: [-0.049 -0.048 -0.048]\n",
      "qubo_sites -> local_sim: 4 nokta, uygun=True\n",
      "Denetim kaydı: [{\"task\": \"vqc_inference\", \"device\": \"local_sim\", \"ok\": true, \"sec\": 18.78, \"skipped\": []}, {\"task\": \"qubo_sites\", \"device\": \"local_sim\", \"ok\": true, \"sec\": 2.61, \"skipped\": []}]\n"
     ]
    }
   ],
   "source": "# ---------- Kayıt: tüm cihazlar tek yapıda ----------\ndef to_qasm(w, x):\n    \"\"\"OpenQASM 2.0 metni (Qiskit gerektirmez).\"\"\"\n    w = np.asarray(w); L, K, n = w.shape[0], w.shape[1], w.shape[2]\n    q = [f\"OPENQASM 2.0;\", 'include \"qelib1.inc\";', f\"qreg q[{n}];\"]\n    for l in range(L):\n        q += [f\"ry({float(x[i]):.10f}) q[{i}];\" for i in range(n)]\n        for k in range(K):\n            for i in range(n): q += [f\"rz({float(w[l,k,i,0]):.10f}) q[{i}];\", f\"ry({float(w[l,k,i,1]):.10f}) q[{i}];\", f\"rz({float(w[l,k,i,2]):.10f}) q[{i}];\"]\n            r = (k % (n - 1)) + 1\n            q += [f\"cx q[{i}],q[{(i + r) % n}];\" for i in range(n)]\n    return \"\\n\".join(q)\n\nclass RuleWisdomAdapter(Adapter):                                        # LLM yoksa deterministik yedek\n    def run(self, task, payload): return dict(text=None, source=\"deterministik (LLM yok)\")\n\nhw_mode = CFG[\"EXEC_MODE\"] == \"hardware\"\nfabric = DeviceFabric(policy=\"fidelity\", prefer_remote=hw_mode)\nlocal_handlers = {\n    \"vqc_inference\": lambda p: dict(scores=m_chk.decision_function(p[\"feats\"])),\n    \"qubo_sites\":    lambda p: dict(zip((\"sel\", \"feasible\"), qubo_sites(p[\"p\"], p[\"D\"], p[\"k\"], p[\"dmin\"]))),\n}\nfabric.register(LocalSimAdapter(DeviceSpec(\"local_sim\", \"local\", \"simulator\", budget.n_qubits if not hw_mode else CFG[\"SIM_QUBITS\"], 0.0,\n                                           {\"vqc_inference\", \"vqc_training\", \"kernel\", \"swap_cluster\", \"vqe\", \"qubo_sites\"}), local_handlers))\nfabric.register(IBMAdapter(DeviceSpec(\"ibm\", \"ibm\", \"gate\", budget.device_qubits if hw_mode else 0, budget.e2 if hw_mode else 0.01, {\"vqc_inference\"}, remote=True, cost=1.0, queue_s=600), qpu, lambda: m_chk))\nfor nm, prov in ((\"rigetti\", \"rigetti\"), (\"wukong\", \"wukong\"), (\"saxonq\", \"saxonq\")):             # n_qubits=0: bilinmiyor (cihaz profili okunana kadar)\n    fabric.register(QASMGateAdapter(DeviceSpec(nm, prov, \"gate\", 0, 0.05, {\"vqc_inference\"}, remote=True, cost=1.0, queue_s=900), to_qasm))\nfor nm in (\"quera\", \"pasqal\"):\n    fabric.register(NeutralAtomAdapter(DeviceSpec(nm, nm, \"analog_rydberg\", 0, 0.05, {\"qubo_sites\"}, remote=True, cost=2.0, queue_s=1800)))\nfabric.register(UnsupportedAdapter(DeviceSpec(\"xanadu\", \"xanadu\", \"photonic_cv\", 0, 1.0, set(), remote=True)))\nfabric.register(LLMAdapter(DeviceSpec(\"cerebras\", \"cerebras\", \"llm\", 0, 0.0, {\"wisdom_llm\"}, remote=True, cost=0.1, queue_s=1), lambda f, w: cerebras_narrative(f, w)))\nfabric.register(RuleWisdomAdapter(DeviceSpec(\"rule_wisdom\", \"local\", \"llm\", 0, 0.5, {\"wisdom_llm\"})))\n\nrows = []\nfor t in (\"vqc_inference\", \"qubo_sites\", \"wisdom_llm\"):\n    rows += fabric.plan(t, width=NQ if t == \"vqc_inference\" else 0)\nalloc_table = pd.DataFrame(rows); print(\"GÖREV PAYLAŞIMI (öncelik sırasıyla):\"); print(alloc_table.to_string(index=False))\n\n# ---------- Çalıştır: görevleri en uygun cihaza dağıt ----------\nfab_res = {}\nXf = fold0[\"Xte\"][:CFG[\"HW_EVAL_N\"]]\nr_, dev_ = fabric.dispatch(\"vqc_inference\", dict(feats=Xf, weights=np.array(m_chk.w)), width=NQ); fab_res[\"vqc_inference\"] = dev_\nsc_ = r_[\"scores\"] if r_.get(\"scores\") is not None else None\nif sc_ is not None: print(f\"vqc_inference -> {dev_}: {len(sc_)} skor, ilk 3: {np.round(sc_[:3], 3)}\")\nif len(targets) and \"pts\" in globals():\n    r2, dev2 = fabric.dispatch(\"qubo_sites\", dict(p=pv, D=D, k=k_eff, dmin=CFG[\"MIN_SITE_SPACING_M\"]))\n    fab_res[\"qubo_sites\"] = dev2; print(f\"qubo_sites -> {dev2}: {len(r2['sel'])} nokta, uygun={r2['feasible']}\")\nfabric_leak_blocked = not payload_is_clean(\"vqc_inference\", dict(feats=[[0.1]], x=[1.0]))\njson.dump(fabric.log, open(os.path.join(CFG[\"OUT_DIR\"], \"fabric_audit.json\"), \"w\"), indent=1, ensure_ascii=False, default=str)\nprint(\"Denetim kaydı:\", json.dumps(fabric.log, ensure_ascii=False, default=str)[:600])"
  },
  {
   "cell_type": "markdown",
   "id": "c42",
   "metadata": {
    "id": "c42"
   },
   "source": "## Module 7 — Logo Tiger 3 CAPEX talepleri (**kuru çalıştırma + insan onayı**)\nTalep **sondaj noktası** başına üretilir (platform hazırlığı = sabit pad alanı × birim maliyet; sondaj = derinlik × birim maliyet). Tüm tutarlar **yer tutucudur**; şema **doğrulanmamıştır** (`schema_verified=False`). `post_to_logo` varsayılan olarak **hiçbir şey göndermez**; gerçek gönderim için `LOGO_DRY_RUN=False` ve açık onay belirteci gerekir, HTTP katmanı bilinçli olarak uygulanmamıştır."
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c43",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c43",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693214592,
     "user_tz": -180,
     "elapsed": 12,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "73e2e297-fe97-4b08-b54a-c66c5b8457f1"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "4 talep taslağı | toplam CAPEX tahmini (YER TUTUCU): 122,000 USD\n",
      "Gönderim kapısı çalışıyor: Kuru çalıştırma veya onay belirteci yok: Logo Tiger'a gönderim reddedildi.\n"
     ]
    }
   ],
   "source": "def generate_logo_payloads(sites_gdf, cfg):\n    out = []; now = datetime.datetime.now().strftime(\"%Y-%m-%dT%H:%M:%S\")\n    for n_, r in enumerate(sites_gdf.itertuples(), start=1):\n        pad_cost = cfg[\"PAD_AREA_SQM\"] * cfg[\"UNIT_COST_PAD_PER_SQM\"]\n        body = {\"INTERNAL_REFERENCE\": n_, \"TYPE\": 1, \"NUMBER\": f\"QML-{r.site_id}\", \"DATE\": now,\n                \"AUXIL_CODE\": \"MADEN_KESIF\", \"AUTH_CODE\": \"QML_AUTO\", \"STATUS\": 1,\n                \"TRANSACTIONS\": {\"items\": [\n                    {\"TYPE\": 4, \"MASTER_CODE\": \"HZ.KESIF.001\", \"QUANTITY\": 1, \"PRICE\": float(pad_cost), \"UNIT_CODE\": \"ADET\",\n                     \"DESCRIPTION\": f\"{r.site_id} ({r.target_id}) - Platform hazırlığı {cfg['PAD_AREA_SQM']:.0f} m2\"},\n                    {\"TYPE\": 4, \"MASTER_CODE\": \"HZ.SONDAJ.002\", \"QUANTITY\": cfg[\"DEPTH_M\"], \"PRICE\": cfg[\"UNIT_COST_DRILLING_PER_M\"], \"UNIT_CODE\": \"MT\",\n                     \"DESCRIPTION\": f\"{r.site_id} - Karotlu sondaj {cfg['DEPTH_M']:.0f} m\"}]}}\n        capex = pad_cost + cfg[\"DEPTH_M\"] * cfg[\"UNIT_COST_DRILLING_PER_M\"]\n        out.append(dict(meta=dict(dry_run=cfg[\"LOGO_DRY_RUN\"], requires_human_approval=True, schema_verified=False,\n                                  currency=cfg[\"CURRENCY\"], capex_estimate=float(capex), site_id=r.site_id, p=round(r.p, 3)), body=body))\n    return out\n\ndef post_to_logo(payload, approval_token=None):\n    if payload[\"meta\"][\"dry_run\"] or not approval_token:\n        raise PermissionError(\"Kuru çalıştırma veya onay belirteci yok: Logo Tiger'a gönderim reddedildi.\")\n    raise NotImplementedError(\"HTTP katmanı bilinçli olarak uygulanmadı; şirket Logo Tiger REST dokümantasyonuna göre ekleyin.\")\n\nlogo_payloads = generate_logo_payloads(sites, CFG) if len(sites) else []\ntotal_capex = sum(p[\"meta\"][\"capex_estimate\"] for p in logo_payloads)\nprint(f\"{len(logo_payloads)} talep taslağı | toplam CAPEX tahmini (YER TUTUCU): {total_capex:,.0f} {CFG['CURRENCY']}\")\nwith open(os.path.join(CFG[\"OUT_DIR\"], \"logo_payload_drafts.json\"), \"w\", encoding=\"utf-8\") as f: json.dump(logo_payloads, f, indent=1, ensure_ascii=False)\ntry: post_to_logo(logo_payloads[0]) if logo_payloads else None\nexcept PermissionError as e: print(\"Gönderim kapısı çalışıyor:\", e)"
  },
  {
   "cell_type": "markdown",
   "id": "c44",
   "metadata": {
    "id": "c44"
   },
   "source": "## Module 8 — Orkestratör: doğrulama kapıları ve veri güdümlü rapor\nBaşarı bandı yalnızca **tüm kapılar** geçerse basılır. \"Kuantum avantajı\" ifadesi yalnızca en iyi kuantum modelin ortalama AP değeri en iyi klasik modeli, iki modelin büyük olan standart sapmasından fazla geçerse yazılır."
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "c45",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c45",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693214643,
     "user_tz": -180,
     "elapsed": 49,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "14acee40-62b3-4d3e-a9d2-aa02c301799f"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "==============================================================================\n",
      "QUANTUM EVAPORITE EXPLORATION v3.4 — OTOMATİK RAPOR\n",
      "==============================================================================\n",
      "!! SENTETİK VERİ: sonuçlar boru hattı doğrulamasıdır, jeolojik bulgu DEĞİLDİR. !!\n",
      "\n",
      "[Qubit bütçesi] mod=simulator (simülatör) | bütçe=20 qubit (sınırlayan: cihaz; limitler {'cihaz': 20, 'devre_dogrulugu': 1000000000, 'ust_sinir': 20})\n",
      "[Kodlama] açı kodlama: 4 ölçülen + 16 bağlam | genişlik=20 | açı üst sınırı=3.14 | fiziksel qubit haritası=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n",
      "[Eğitim] VQC 20 qubit | örnek başına 1.53 sn | batch 4 × 39 adım  → HESAP BÜTÇESİYLE KISALTILDI (TRAIN_BUDGET_S=240); GPU veya daha yüksek bütçe önerilir\n",
      "          QSVM kernel genişliği 12 qubit | ablasyon/gürültü alt modeli 8 qubit | GPU: False\n",
      "[Hesap] GPU: yok (lightning.gpu: False) | QPU: {'durum': 'atlandı (donanım modu değil veya backend yok)'}\n",
      "\n",
      "Co-location oranı 0.068 (rastgele AP tabanı ≈ 0.068)\n",
      "[Sınıflandırma — uzamsal blok CV]\n",
      "  VQC           AP 0.959 ± 0.044 | AUC 0.979 ± 0.029 | F1 0.758\n",
      "  QSVM          AP 0.789 ± 0.208 | AUC 0.978 ± 0.032 | F1 0.745\n",
      "  SVM-RBF       AP 0.992 ± 0.013 | AUC 0.999 ± 0.001 | F1 0.771\n",
      "  RandomForest  AP 0.992 ± 0.013 | AUC 0.999 ± 0.001 | F1 0.771\n",
      "  RF-temel4     AP 0.968 ± 0.049 | AUC 0.997 ± 0.005 | F1 0.744\n",
      "  → Kuantum (VQC) ve klasik (SVM-RBF) ayırt edilemez (fark -0.033, belirsizlik ±0.044). Kuantum avantajı kanıtı YOK.\n",
      "  Bağlam özelliklerinin katkısı (RandomForest − RF-temel4, AP): +0.025\n",
      "  [Ayarlı taban çizgileri ve kuantum çekirdekler, uzamsal CV AP] QSVM-fidelity-ayarlı 0.994±0.010; QSVM-projected-ayarlı 0.994±0.010; RF-ayarlı 0.994±0.010; SVM-RBF-ayarlı 0.992±0.013\n",
      "  → Ayarlanmış kuantum çekirdek AP 0.994 vs ayarlanmış klasik 0.994; klasik önde/eşit; dolanıklık çıkarınca AP -0.011. Çekirdek hizası (CKA↔RBF): fidelity 1.00, projected 0.99\n",
      "  Fidelity çekirdek yoğunlaşma tanısı (qubit: dışı-köşegen ort±std): 4q 0.211±0.201; 8q 0.106±0.175; 12q 0.062±0.127\n",
      "  [Belirsizlik] konformal blok-dışı kapsama 0.958 (hedef 0.90); beklenen isabet (alt/orta/üst): 3.81 / 3.99 / 4.00\n",
      "  [Eğitilebilir giriş ölçeği, 8q fold0 AP] sabit 0.973 | eğitilebilir 0.991 | dolanıksız 0.962\n",
      "  [Aktif öğrenme simülasyonu, yeni pozitif/30 sondaj] random 2.33±0.94; exploit 22.33±1.49; ucb 21.33±1.11; uncertainty 7.83±1.21 → en iyi: exploit\n",
      "  SPSA ablasyonu (8q, fold0 AP): Adam 0.973 | SPSA 0.353\n",
      "  Gürültü (depolarizing p → AP | F1@sabit eşik | skor std oranı): 0→0.973|0.90|1.00; 0.01→0.973|0.90|0.93; 0.03→0.973|0.90|0.81; 0.06→0.973|0.90|0.65\n",
      "\n",
      "[Fasiyes kümeleme — SWAP-test K-Means, 20 özellik → 13 qubit] ARI: kuantum 0.445 | klasik 0.429 | uyum 0.972  → simülatörde hız avantajı iddia edilmez\n",
      "[VQE — oyuncak] bağıl hata %0.40 (yer tutucu katsayılar; jeolojik sonuç değildir)\n",
      "[Hedefler] harita modeli=RandomForest (kalibre OOF olasılık) | bölge=1 | sondaj noktası=4 | QUBO: {'status': 'tamam', 'aday': 40, 'k': 4, 'feasible': True, 'obj_qubo': 3.9924540519714355, 'obj_greedy': 3.9924540519714355, 'obj_exact': 3.9924540519714355}\n",
      "[QUBO doğrulaması, 20 rastgele örnek] optimumdan sapma: QUBO %0.00 | greedy %0.00\n",
      "[Maliyet] 4 Logo taslağı, toplam 122,000 USD (YER TUTUCU, onaysız gönderilmez)\n",
      "\n",
      "[Doğrulama kapıları]\n",
      "  [GEÇTİ] G1 Qiskit = PennyLane (<1e-5, complex64) — 20 qubit, maks fark 2.5e-06\n",
      "  [GEÇTİ] G2 Raster hizası (r>0.9 ve yansımadan iyi) — r=1.000, yansıma r=0.350\n",
      "  [GEÇTİ] G3 Giden payload'da koordinat yok — alanlar: token,features\n",
      "  [GEÇTİ] G4 Uzamsal CV (blok sayısı ≥ fold) — 78 blok\n",
      "  [GEÇTİ] G5 Logo talepleri kuru-çalıştırma/onaylı — 4 taslak\n",
      "  [GEÇTİ] G6 SWAP-test = klasik örtüşme (<1e-9) — maks hata 7.8e-16 (13 qubit)\n",
      "  [GEÇTİ] G7 Hedef sayısı üst sınırda — 1 / 8\n",
      "  [GEÇTİ] G8 QUBO uygulanabilir ve greedy'nin %0.5 içinde — gerçek koşu: 3.9924540519714355 vs greedy 3.9924540519714355 | rastgele test: QUBO 20/20, greedy 20/20\n",
      "  [GEÇTİ] G9 (sentetik) en iyi hedef gerçek merkeze yakın (<5 km) — 295 m\n",
      "  [GEÇTİ] G10 Kodlama planı fiziksel/bütçe sınırını aşmıyor — genişlik 20 ≤ bütçe 20 ≤ cihaz 20; SWAP-test 13 qubit; 14 plan senaryosu\n",
      "  [GEÇTİ] G11 QSVM durum-vektörü kernel = compute-uncompute (<1e-9) — maks fark 1.1e-15\n",
      "  [GEÇTİ] G12 QPU yürütücü (donanım modunda) sonlu skor döndürdü — atlandı (donanım modu değil veya backend yok)\n",
      "  [GEÇTİ] G13 Cihaz ağı: görevler dağıtıldı, sızıntı engeli çalışıyor — dağıtım: vqc_inference→local_sim, qubo_sites→local_sim | koordinat yükü engelli: True\n",
      "  [GEÇTİ] G14 Konformal blok-dışı kapsama ≥ hedef−0.07 — kapsama 0.958 (hedef 0.90), pozitif 0.815, ort. genişlik 0.02\n",
      "  [GEÇTİ] G15 Projected-kernel Bloch özellikleri = yoğunluk matrisi (<1e-10) — maks fark 1.1e-16\n",
      "  [GEÇTİ] G16 Aktif öğrenme: en iyi strateji rastgeleden kötü değil — en iyi exploit, rastgeleye göre +20.00 yeni pozitif; öneri 4 nokta\n",
      "  [GEÇTİ] G17 Eğitilebilir ölçekli VQC Qiskit çevirisi doğru (<1e-5) — maks fark 2.2e-07\n",
      "\n",
      "TÜM KAPILAR GEÇTİ — pipeline teknik olarak tutarlı.\n",
      "==============================================================================\n",
      "\n",
      "Kaydedilen dosyalar: ['QML_Sondaj_Hedefleri.cpg', 'QML_Sondaj_Hedefleri.dbf', 'QML_Sondaj_Hedefleri.geojson', 'QML_Sondaj_Hedefleri.prj', 'QML_Sondaj_Hedefleri.shp', 'QML_Sondaj_Hedefleri.shx', 'QML_Sondaj_Noktalari.geojson', 'QML_Sonraki_Sondajlar.geojson', 'cv_results.csv', 'encoding_plan_table.csv', 'fabric_audit.json', 'logo_payload_drafts.json', 'map_v3_1.png', 'prob_lower.tif', 'prob_upper.tif', 'quantum_anomaly_prob.tif', 'report.txt', 'summary.json', 'vault_key.bin', 'vault_map.json']\n"
     ]
    }
   ],
   "source": "ms = res[res.model != \"Taban (rastgele)\"].groupby(\"model\")[[\"auc\", \"ap\", \"f1\"]].agg([\"mean\", \"std\"]).fillna(0)\nbq = ms.loc[QUANTUM, (\"ap\", \"mean\")].idxmax(); bc = ms.loc[CLASSICAL, (\"ap\", \"mean\")].idxmax()\ndiff = ms.loc[bq, (\"ap\", \"mean\")] - ms.loc[bc, (\"ap\", \"mean\")]; tol = max(ms.loc[bq, (\"ap\", \"std\")], ms.loc[bc, (\"ap\", \"std\")])\nverdict = (f\"En iyi kuantum ({bq}), en iyi klasik modeli ({bc}) {diff:+.3f} AP ile belirsizliğin üzerinde geçti.\" if diff > tol else\n           f\"En iyi klasik ({bc}), en iyi kuantum modelin ({bq}) {-diff:.3f} AP üzerinde.\" if diff < -tol else\n           f\"Kuantum ({bq}) ve klasik ({bc}) ayırt edilemez (fark {diff:+.3f}, belirsizlik ±{tol:.3f}). Kuantum avantajı kanıtı YOK.\")\n\ngates = {}\ngates[\"G1 Qiskit = PennyLane (<1e-5, complex64)\"]    = (qiskit_maxdiff < 1e-5, f\"{W_chk} qubit, maks fark {qiskit_maxdiff:.1e}\")\ngates[\"G2 Raster hizası (r>0.9 ve yansımadan iyi)\"]   = (c_al > 0.9 and c_al > c_mir, f\"r={c_al:.3f}, yansıma r={c_mir:.3f}\")\ngates[\"G3 Giden payload'da koordinat yok\"]           = (not (FORBIDDEN_KEYS & set(cloud_payload[0].keys())), \"alanlar: \" + \",\".join(cloud_payload[0].keys()))\ngates[\"G4 Uzamsal CV (blok sayısı ≥ fold)\"]           = (len(np.unique(groups)) >= CFG[\"N_SPLITS\"], f\"{len(np.unique(groups))} blok\")\ngates[\"G5 Logo talepleri kuru-çalıştırma/onaylı\"]     = (all(p[\"meta\"][\"dry_run\"] == CFG[\"LOGO_DRY_RUN\"] and p[\"meta\"][\"requires_human_approval\"] for p in logo_payloads), f\"{len(logo_payloads)} taslak\")\ngates[\"G6 SWAP-test = klasik örtüşme (<1e-9)\"]        = (clu[\"swap_test_max_err\"] < 1e-9, f\"maks hata {clu['swap_test_max_err']:.1e} ({clu['swap_qubit']} qubit)\")\ngates[\"G7 Hedef sayısı üst sınırda\"]                  = (len(targets) <= CFG[\"MAX_TARGETS\"], f\"{len(targets)} / {CFG['MAX_TARGETS']}\")\ngates[\"G8 QUBO uygulanabilir ve greedy'nin %0.5 içinde\"] = (\n    (qubo_info.get(\"status\") != \"tamam\") or (qubo_info[\"feasible\"] and qubo_info[\"obj_qubo\"] >= qubo_info[\"obj_greedy\"] * 0.995),\n    f\"gerçek koşu: {qubo_info.get('obj_qubo')} vs greedy {qubo_info.get('obj_greedy')} | rastgele test: QUBO {qval['qubo_optimal']}/{qval['instances']}, greedy {qval['greedy_optimal']}/{qval['instances']}\")\nif ingestor.truth_center is not None and len(targets):\n    t0_ = targets.iloc[0].geometry.centroid; dist = float(np.hypot(t0_.x - ingestor.truth_center[0], t0_.y - ingestor.truth_center[1]))\n    gates[\"G9 (sentetik) en iyi hedef gerçek merkeze yakın (<5 km)\"] = (dist < 5000, f\"{dist:.0f} m\")\ngates[\"G10 Kodlama planı fiziksel/bütçe sınırını aşmıyor\"] = (planner_ok and NQ <= budget.n_qubits <= budget.device_qubits and len(budget.qubit_map) >= NQ and cinfo[\"qubits\"] <= budget.n_qubits,\n                                                                f\"genişlik {NQ} ≤ bütçe {budget.n_qubits} ≤ cihaz {budget.device_qubits}; SWAP-test {cinfo['qubits']} qubit; {len(plan_table)} plan senaryosu\")\ngates[\"G11 QSVM durum-vektörü kernel = compute-uncompute (<1e-9)\"] = (kernel_err < 1e-9, f\"maks fark {kernel_err:.1e}\")\ngates[\"G12 QPU yürütücü (donanım modunda) sonlu skor döndürdü\"] = (qpu_ok, qpu_info.get(\"durum\", \"\") + (\"\" if qpu_rho is None else f\" | Spearman {qpu_rho:.2f}, std oranı {qpu_shrink:.2f}\"))\ngates[\"G13 Cihaz ağı: görevler dağıtıldı, sızıntı engeli çalışıyor\"] = (bool(fab_res.get(\"vqc_inference\")) and (not hw_mode or fab_res[\"vqc_inference\"] == \"ibm\") and fabric_leak_blocked and ((\"qubo_sites\" not in fab_res) or bool(r2[\"feasible\"])),\n                                                                     \"dağıtım: \" + \", \".join(f\"{k}→{v}\" for k, v in fab_res.items()) + f\" | koordinat yükü engelli: {fabric_leak_blocked}\")\ngates[\"G14 Konformal blok-dışı kapsama ≥ hedef−0.07\"] = (conf_cov >= 1 - ALPHA - 0.07, f\"kapsama {conf_cov:.3f} (hedef {1-ALPHA:.2f}), pozitif {conf_cov_pos:.3f}, ort. genişlik {conf_width:.2f}\")\ngates[\"G15 Projected-kernel Bloch özellikleri = yoğunluk matrisi (<1e-10)\"] = (bloch_err < 1e-10, f\"maks fark {bloch_err:.1e}\")\ngates[\"G16 Aktif öğrenme: en iyi strateji rastgeleden kötü değil\"] = (al_gain >= 0, f\"en iyi {al_best}, rastgeleye göre {al_gain:+.2f} yeni pozitif; öneri {len(next_w)} nokta\")\ngates[\"G17 Eğitilebilir ölçekli VQC Qiskit çevirisi doğru (<1e-5)\"] = (scale_qk_diff < 1e-5, f\"maks fark {scale_qk_diff:.1e}\")\nall_ok = all(v[0] for v in gates.values())\n\nL = [\"=\"*78, \"QUANTUM EVAPORITE EXPLORATION v3.4 — OTOMATİK RAPOR\", \"=\"*78]\nif CFG[\"USE_SYNTHETIC\"]: L += [\"!! SENTETİK VERİ: sonuçlar boru hattı doğrulamasıdır, jeolojik bulgu DEĞİLDİR. !!\", \"\"]\nL.append(f\"[Qubit bütçesi] mod={budget.mode} ({budget.source}) | bütçe={budget.n_qubits} qubit (sınırlayan: {budget.limiting}; limitler {budget.limits})\")\nL.append(f\"[Kodlama] {plan['strategy']} | genişlik={NQ} | açı üst sınırı={budget.angle_max:.2f} | fiziksel qubit haritası={budget.qubit_map[:NQ]}\")\nL.append(f\"[Eğitim] VQC {train_plan['width']} qubit | örnek başına {train_plan['sec_per_sample']:.2f} sn | batch {train_plan['batch']} × {train_plan['steps']} adım\" + (\"\" if train_plan[\"full\"] else f\"  → HESAP BÜTÇESİYLE KISALTILDI (TRAIN_BUDGET_S={CFG['TRAIN_BUDGET_S']}); GPU veya daha yüksek bütçe önerilir\"))\nL.append(f\"          QSVM kernel genişliği {min(NQ, CFG['QSVM_MAX_QUBITS'])} qubit | ablasyon/gürültü alt modeli {aw} qubit | GPU: {GPU_OK}\")\nL.append(f\"[Hesap] GPU: {GPU_NAME or 'yok'} (lightning.gpu: {GPU_OK}) | QPU: {qpu_info}\")\nL.append(f\"\\nCo-location oranı {y.mean():.3f} (rastgele AP tabanı ≈ {y.mean():.3f})\")\nL.append(\"[Sınıflandırma — uzamsal blok CV]\")\nfor n in MODEL_NAMES:\n    L.append(f\"  {n:<13} AP {ms.loc[n,('ap','mean')]:.3f} ± {ms.loc[n,('ap','std')]:.3f} | AUC {ms.loc[n,('auc','mean')]:.3f} ± {ms.loc[n,('auc','std')]:.3f} | F1 {ms.loc[n,('f1','mean')]:.3f}\")\nL.append(\"  → \" + verdict)\nL.append(f\"  Bağlam özelliklerinin katkısı (RandomForest − RF-temel4, AP): {ms.loc['RandomForest', ('ap','mean')] - ms.loc['RF-temel4', ('ap','mean')]:+.3f}\")\nL.append(\"  [Ayarlı taban çizgileri ve kuantum çekirdekler, uzamsal CV AP] \" + \"; \".join(f\"{n} {r['mean']:.3f}±{(0 if pd.isna(r['std']) else r['std']):.3f}\" for n, r in ksum.iterrows()))\nL.append(\"  → \" + kernel_verdict + \" Çekirdek hizası (CKA↔RBF): \" + \", \".join(f\"{k} {v:.2f}\" for k, v in kcka.groupby(\"kind\")[\"cka_vs_tuned_rbf\"].mean().items()))\nL.append(\"  Fidelity çekirdek yoğunlaşma tanısı (qubit: dışı-köşegen ort±std): \" + \"; \".join(f\"{int(r.qubit)}q {r.ortalama:.3f}±{r.std:.3f}\" for r in conc_df.itertuples()))\nL.append(f\"  [Belirsizlik] konformal blok-dışı kapsama {conf_cov:.3f} (hedef {1-ALPHA:.2f}); beklenen isabet (alt/orta/üst): \" + (\"—\" if hits is None else f\"{hits['lo']:.2f} / {hits['mid']:.2f} / {hits['hi']:.2f}\"))\nL.append(f\"  [Eğitilebilir giriş ölçeği, {aw}q fold0 AP] sabit {ap_adam:.3f} | eğitilebilir {ap_scaled:.3f} | dolanıksız {ap_prod:.3f}\")\nL.append(\"  [Aktif öğrenme simülasyonu, yeni pozitif/30 sondaj] \" + \"; \".join(f\"{k} {r['yeni_pozitif_ort']:.2f}±{r['std']:.2f}\" for k, r in al_tab.iterrows()) + f\" → en iyi: {al_best}\")\nL.append(f\"  SPSA ablasyonu ({aw}q, fold0 AP): Adam {ap_adam:.3f} | SPSA {ap_spsa:.3f}\")\nL.append(\"  Gürültü (depolarizing p → AP | F1@sabit eşik | skor std oranı): \" + \"; \".join(f\"{r.p_depolarizing:g}→{r.AP:.3f}|{r.F1_sabit_esik:.2f}|{r.skor_std_orani:.2f}\" for r in noise_df.itertuples()))\nL.append(f\"\\n[Fasiyes kümeleme — SWAP-test K-Means, {clu['ozellik']} özellik → {clu['swap_qubit']} qubit] ARI: kuantum {clu['ari_q_vs_facies']:.3f} | klasik {clu['ari_c_vs_facies']:.3f} | uyum {clu['ari_q_vs_c']:.3f}  → simülatörde hız avantajı iddia edilmez\")\nL.append(f\"[VQE — oyuncak] bağıl hata %{vqe_res['rel_err_pct']:.2f} (yer tutucu katsayılar; jeolojik sonuç değildir)\")\nL.append(f\"[Hedefler] harita modeli={best_name} (kalibre OOF olasılık) | bölge={len(targets)} | sondaj noktası={len(sites)} | QUBO: {qubo_info}\")\nL.append(f\"[QUBO doğrulaması, {qval['instances']} rastgele örnek] optimumdan sapma: QUBO %{qval['qubo_mean_gap_pct']:.2f} | greedy %{qval['greedy_mean_gap_pct']:.2f}\")\nL.append(f\"[Maliyet] {len(logo_payloads)} Logo taslağı, toplam {total_capex:,.0f} {CFG['CURRENCY']} (YER TUTUCU, onaysız gönderilmez)\")\nL.append(\"\\n[Doğrulama kapıları]\")\nfor k, (ok_, d_) in gates.items(): L.append(f\"  [{'GEÇTİ' if ok_ else 'KALDI'}] {k} — {d_}\")\nL.append(\"\\n\" + (\"TÜM KAPILAR GEÇTİ — pipeline teknik olarak tutarlı.\" if all_ok else \"UYARI: bazı kapılar KALDI — çıktıları kullanmadan önce inceleyin.\"))\nL.append(\"=\"*78)\nreport = \"\\n\".join(L); print(report)\n\nres.to_csv(os.path.join(CFG[\"OUT_DIR\"], \"cv_results.csv\"), index=False); plan_table.to_csv(os.path.join(CFG[\"OUT_DIR\"], \"encoding_plan_table.csv\"), index=False)\nopen(os.path.join(CFG[\"OUT_DIR\"], \"report.txt\"), \"w\", encoding=\"utf-8\").write(report)\njson.dump(dict(budget=dict(mode=budget.mode, n_qubits=budget.n_qubits, limits=budget.limits, width=NQ, plan=plan[\"strategy\"]), train_plan=train_plan,\n               gates={k: [bool(v[0]), v[1]] for k, v in gates.items()}, qubo=qubo_info, clustering=clu, vqe=vqe_res),\n          open(os.path.join(CFG[\"OUT_DIR\"], \"summary.json\"), \"w\"), indent=1, default=float)\nif CFG[\"USE_DRIVE\"]:\n    import shutil; shutil.copytree(CFG[\"OUT_DIR\"], os.path.join(os.path.dirname(CFG[\"DATA_CSV\"]), \"outputs_v3_1\"), dirs_exist_ok=True)\nprint(\"\\nKaydedilen dosyalar:\", sorted(os.listdir(CFG[\"OUT_DIR\"])))"
  },
  {
   "cell_type": "markdown",
   "id": "c46",
   "metadata": {
    "id": "c46"
   },
   "source": "## Module 9 — Wisdom katmanı: SWOT + Best/Optimum/Worst → Kural Motoru çıktısı (Cerebras)\n**Cerebras kuantum donanım değildir;** kuantum devreleri burada çalışmaz. Cerebras bu hatta **karar/yorum katmanı** (LLM çıkarımı) için kullanılır. Katman iki aşamalıdır: (1) metriklerden **deterministik** SWOT ve 3 senaryo üretilir (her zaman çalışır, yeniden üretilebilir); (2) `CEREBRAS_API_KEY` varsa LLM aynı gerçekleri yöneticiye uygun dille **yorumlar** (yeni sayı üretmesi yasaktır; yalnızca verilen JSON'u kullanır). Buluta yalnızca **toplu metrikler** gider — koordinat, token veya sondaj noktası gitmez. Kural motoruna (ERP/CRM) çıkan JSON her zaman **insan onayı** ister. Model adı ve SDK çağrısı sürüme göre değişebilir ve burada doğrulanmamıştır (`CEREBRAS_MODEL`)."
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "c47",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c47",
    "executionInfo": {
     "status": "ok",
     "timestamp": 1792693215244,
     "user_tz": -180,
     "elapsed": 534,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "dd3fea4c-0ff3-4371-c0b7-41225f88e761"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Önerilen senaryo: optimum | rule_wisdom: deterministik (LLM yok)\n",
      "{\n",
      " \"strengths\": [\n",
      "  \"Model, rastgele tabanın 14.6 katı Average Precision üretiyor (0.992 vs 0.068).\"\n",
      " ],\n",
      " \"weaknesses\": [\n",
      "  \"Kuantum modelin klasik modele üstünlüğü kanıtlanmadı: Kuantum (VQC) ve klasik (SVM-RBF) ayırt edilemez (fark -0.033, belirsizlik ±0.044). Kuantum avantajı kanıtı YOK.\",\n",
      "  \"Sonuçlar sentetik veriden; jeolojik kanıt değildir.\"\n",
      " ],\n",
      " \"opportunities\": [\n",
      "  \"1 hedef bölge ve 4 sondaj noktası önerildi.\",\n",
      "  \"Aktif öğrenme: sonraki partide 4 bilgilendirici sondaj önerildi (strateji: exploit).\"\n",
      " ],\n",
      " \"threats\": [\n",
      "  \"Maliyet katsayıları yer tutucu; gerçek CAPEX sapabilir.\",\n",
      "  \"Uzamsal dağılım kayması (başka sahaya genelleme) test edilmedi.\"\n",
      " ]\n",
      "}\n"
     ]
    }
   ],
   "source": "CEREBRAS_MODEL = \"llama-3.3-70b\"       # hesabınızdaki güncel model adıyla değiştirin (doğrulanmadı)\n\ndef build_wisdom_facts():\n    return dict(\n        decision=\"Maden arama bütçesinin Na2SO4+K co-location hedeflerine ayrılması (sondaj önerisi)\",\n        data_mode=\"SENTETİK (yalnızca test)\" if CFG[\"USE_SYNTHETIC\"] else \"gerçek veri\",\n        n_samples=int(len(y)), hits=hits, next_wells=int(len(next_w)), active_learning_best=al_best, active_learning_gain=round(al_gain, 2), zne=qpu_info.get(\"zne_spearman\"), conformal_coverage=round(conf_cov, 3), conformal_alpha=ALPHA, kernel_verdict=kernel_verdict, co_location_rate=round(float(y.mean()), 3),\n        best_ap=round(float(ms[(\"ap\", \"mean\")].max()), 3), best_model=str(ms[(\"ap\", \"mean\")].idxmax()),\n        quantum_vs_classical=verdict, context_gain_ap=round(float(ms.loc[\"RandomForest\", (\"ap\", \"mean\")] - ms.loc[\"RF-temel4\", (\"ap\", \"mean\")]), 3),\n        n_target_zones=int(len(targets)), n_drill_sites=int(len(sites)), capex_placeholder=round(float(total_capex), 0), currency=CFG[\"CURRENCY\"],\n        gates_passed=int(sum(v[0] for v in gates.values())), gates_total=len(gates), all_gates_ok=bool(all_ok),\n        qubits=NQ, mode=budget.mode, gpu=GPU_NAME or \"yok\")\n\ndef deterministic_wisdom(f):\n    ap, base = f[\"best_ap\"], f[\"co_location_rate\"]\n    lift = ap / max(base, 1e-9)\n    S = [f\"Model, rastgele tabanın {lift:.1f} katı Average Precision üretiyor ({ap} vs {base}).\"] if lift > 1.5 else []\n    W = [\"Kuantum modelin klasik modele üstünlüğü kanıtlanmadı: \" + f[\"quantum_vs_classical\"]]\n    if f[\"data_mode\"].startswith(\"SENTETİK\"): W.append(\"Sonuçlar sentetik veriden; jeolojik kanıt değildir.\")\n    O = ([f\"{f['n_target_zones']} hedef bölge ve {f['n_drill_sites']} sondaj noktası önerildi.\"] if f[\"n_drill_sites\"] else []) + ([f\"Aktif öğrenme: sonraki partide {f['next_wells']} bilgilendirici sondaj önerildi (strateji: {f['active_learning_best']}).\"] if f.get(\"next_wells\") else [])\n    T = [\"Maliyet katsayıları yer tutucu; gerçek CAPEX sapabilir.\", \"Uzamsal dağılım kayması (başka sahaya genelleme) test edilmedi.\"]\n    if not f[\"all_gates_ok\"]: T.append(\"Bazı doğrulama kapıları KALDI.\")\n    h = f.get(\"hits\") or {}\n    scen = dict(\n        best=dict(desc=\"Konformal üst sınırda isabet: model hedefleri doğrular.\", drill_sites=f[\"n_drill_sites\"], expected_hits=round(h.get(\"hi\", 0), 2), action=\"Tüm önerilen noktalar için Logo Tiger talebi onaya sunulur.\"),\n        optimum=dict(desc=\"Önce en yüksek olasılıklı 2 nokta sondajlanır, sonuca göre genişletilir.\", drill_sites=min(2, f[\"n_drill_sites\"]), expected_hits=round(h.get(\"top2_mid\", 0), 2), action=\"Aşamalı bütçe: yalnızca ilk 2 talep onaya sunulur.\"),\n        worst=dict(desc=\"Konformal alt sınır: tüm sondajlarda beklenen isabet düşük.\", drill_sites=f[\"n_drill_sites\"], expected_hits=round(h.get(\"lo\", 0), 2), action=\"Alt sınır beklenen isabet < 1 ise tam bütçe bloklanır; ek jeofizik/hidrokimya verisi toplanır.\"))\n    rec = \"optimum\" if (f[\"all_gates_ok\"] and lift > 1.5) else \"worst\"\n    return dict(swot=dict(strengths=S, weaknesses=W, opportunities=O, threats=T), scenarios=scen, recommended=rec)\n\ndef cerebras_narrative(f, w):\n    key = os.environ.get(\"CEREBRAS_API_KEY\")\n    if not key:\n        try:\n            from google.colab import userdata; key = userdata.get(\"CEREBRAS_API_KEY\")\n        except Exception: key = None\n    if not key: return None, \"CEREBRAS_API_KEY yok -> yalnızca deterministik özet\"\n    try:\n        from cerebras.cloud.sdk import Cerebras\n        r = Cerebras(api_key=key).chat.completions.create(model=CEREBRAS_MODEL, max_tokens=600, messages=[\n            {\"role\": \"system\", \"content\": \"Koyuncu Group yöneticileri için kısa, Türkçe bir karar notu yaz. YALNIZCA verilen JSON'daki gerçekleri kullan; yeni sayı veya iddia ekleme.\"},\n            {\"role\": \"user\", \"content\": json.dumps(dict(facts=f, wisdom=w), ensure_ascii=False)}])\n        return r.choices[0].message.content, \"Cerebras: \" + CEREBRAS_MODEL\n    except Exception as e:\n        return None, f\"Cerebras çağrısı başarısız ({type(e).__name__}) -> deterministik özet\"\n\nfacts = build_wisdom_facts(); wisdom = deterministic_wisdom(facts); _w, _dev = fabric.dispatch(\"wisdom_llm\", dict(facts=facts, wisdom=wisdom)); narrative, narr_src = _w[\"text\"], f\"{_dev}: {_w['source']}\"\nrules_engine_payload = dict(schema=\"koyuncu.wisdom.decision.v0 (taslak, doğrulanmadı)\", requires_human_approval=True, dry_run=True,\n                            vertical=\"Madencilik/Kimya\", function=\"Teknoloji/Arama\", facts=facts, swot=wisdom[\"swot\"], scenarios=wisdom[\"scenarios\"],\n                            recommended_scenario=wisdom[\"recommended\"], narrative=narrative, narrative_source=narr_src,\n                            erp_actions=[dict(system=\"Logo Tiger\", ref=\"logo_payload_drafts.json\", state=\"onay bekliyor\")])\nassert not (FORBIDDEN_KEYS & set(rules_engine_payload[\"facts\"].keys())), \"koordinat sızıntısı\"\njson.dump(rules_engine_payload, open(os.path.join(CFG[\"OUT_DIR\"], \"wisdom_decision.json\"), \"w\"), indent=1, ensure_ascii=False)\nprint(\"Önerilen senaryo:\", wisdom[\"recommended\"], \"|\", narr_src); print(json.dumps(wisdom[\"swot\"], indent=1, ensure_ascii=False))"
  },
  {
   "cell_type": "markdown",
   "id": "c48",
   "metadata": {
    "id": "c48"
   },
   "source": "## Literatür ve kaynaklar (bu sürümdeki eklemelerin dayanağı)\n- Bowles, Ahmed, Schuld, *Better than classical? The subtle art of benchmarking quantum machine learning models* — arXiv:2403.07059 (XanaduAI/qml-benchmarks).\n- Thanasilp ve ark., *Exponential concentration in quantum kernel methods* — arXiv:2208.11060.\n- *On the similarity of bandwidth-tuned quantum kernels and classical kernels* — arXiv:2503.05602.\n- *GeoConformal prediction: a model-agnostic framework of measuring the uncertainty of spatial prediction* — arXiv:2412.08661.\n- IBM Quantum dokümantasyonu: *Configure error mitigation* (Estimator V2: dynamical decoupling, twirling, TREX, ZNE, PEC).\n- Jeofizikte kuantum-destekli global optimizasyon (TU Delft, Geophysics 2022) ve Stanford SCERF *quantum computing geosciences* çalışmaları (QUBO/annealing yaklaşımının gerekçesi).\n\n**Tarama sonucu (dürüst not):** Aynı hedefe (Na₂SO₄+K evaporit, QML + kural motoru) doğrudan benzeyen açık kaynaklı bir sistem bulamadım; bulunanlar klasik maden prospektivite haritalaması (MPM) ve genel QML kıyaslama çalışmalarıdır. Bu nedenle eklemeler, en güçlü literatür bulgularını (klasik tabanlarla adil kıyas, çekirdek yoğunlaşması, konformal belirsizlik) boru hattına taşır. Henüz eklenmeyenler: eğitilebilir giriş ölçekli veri-yeniden-yükleme, Bayesçi/aktif öğrenme ile bir sonraki sondaj önerisi, ZNE/PEC (gerçek cihazda kota ve ek iş gerektirir)."
  },
  {
   "cell_type": "markdown",
   "id": "c49",
   "metadata": {
    "id": "c49"
   },
   "source": "## Mod değiştirme ve sonraki adımlar\n- **Simülatör (varsayılan):** `EXEC_MODE=\"simulator\"`, `SIM_QUBITS=20`. Daha hızlı deneme için `SIM_QUBITS=8` veya `12`.\n- **Donanım profili (simülasyonla kuru çalıştırma):** `EXEC_MODE=\"hardware\"` ve `HW_PROFILE_MOCK` (örnek: 7 qubit, `avg_cnot_error=0.012`) — kodlama otomatik olarak 7 qubit'e uyar, en yüksek doğruluklu fiziksel qubit'ler `qubit_map`'e alınır; yürütme yine simülatörde olur.\n- **Gerçek cihaz:** `HW_PROFILE_SOURCE=\"ibm\"` (cihaz profili otomatik okunur, **test edilmemiş**) ve Module 5'teki kanca; ayrıca `get_device` içinde gerçek cihaz bağlantısı gerekir.\n1. **Gerçek veri:** birleşik tabloyu Drive'a koyun → `USE_SYNTHETIC=False`, `USE_DRIVE=True`, `DATA_CRS`. Ek ölçülen kanallar (hidrokimya, uydu indeksleri) `build_features` çıktısına eklenirse bağlam özelliklerinden önce kodlanır.\n2. **Eşikler ve maliyetler** (`NA_CUTOFF/K_CUTOFF`, `P_MIN`, birim maliyetler) şu an örnek değerdir.\n3. **Logo Tiger** şemasını test ortamında doğrulayın; onay iş akışını tanımlayın; ancak sonra `LOGO_DRY_RUN=False`.\n4. **Karar motoru:** rapor metriklerini ve kapı sonuçlarını SWOT / Best–Optimum–Worst senaryo katmanına girdi olarak verin."
  }
 ],
 "metadata": {
  "colab": {
   "provenance": [],
   "machine_shape": "hm",
   "gpuType": "L4"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  },
  "accelerator": "GPU"
 },
 "nbformat": 4,
 "nbformat_minor": 5
}