🏛️ PÎRÎ REİS ÜNİVERSİTESİ · GOMD BİLİMSEL VERİ KONSORSİYUMU · COP31 TÜRKİYE

10 Gerçek Veri Bilimsel Vaka Çalışması (CS01–CS10): Ayrıntılı Olay Analizi, Veri Seti Metodolojisi, Bilimsel Çıkarımlar, Görselleştirme Kanıtları ve Politika Raporu

Bu rapor; GOMD platformundaki 10 vaka çalışmasının (CS01–CS10) her biri için incelenen gerçek dünyadaki olayı, hangi GOMD veri setlerinin hangi bilimsel amaçla kullanıldığını, matematiksel ve ekonometrik çıkarımları, GOMD sistem içi ve Python 4-panelli görselleştirme kanıtlarını, kanıta dayalı politika önerilerini ve yerel veritabanına ihtiyaç duymadan doğrudan canlı https://gomd.pirireis.edu.tr sunucusundan veri çeken Google Colab kodlarını bütünleşik olarak sunar.

📓 Colab İndirme ve API Merkezi 📄 Hakemli Referans Makalesi
CS01 Doğu Akdeniz ve Türkiye Denizlerinde Çok Değişkenli Okyanus-İklim Rejim Kayması, Denizel Sıcak Hava Dalgaları (MHW) ve Karbonat Asitlenmesi CS02 Türk ve Akdeniz Ticari Deniz Filosunun Karbonsuzlaştırma Dinamikleri: IMO CII (AER), AB Denizcilik ETS (2023/959), FuelEU Maritime (2023/1805) ve Atıl Varlık Risk Analizi CS03 Küresel Mavi Finansman, Aktüeryal Gemi Sigortası (IUMI / IG P&I / PPMI), Parametrik Kıyı Afet Sigortası (UNEP FI PSI) ve Dünya Bankası CWON Doğal Sermaye Muhasebesi CS04 Marmara Denizi ve Türk Boğazlar Sisteminde Müsilaj Tehdit İndeksi, Haloklin Altı Hipoksi (DO), Vollenweider TRIX Ötrofikasyon ve TEOS-10 Piknoklin Bariyeri Analizi CS05 Mavi Vatan (BM A/74/757) Deniz Yetki Alanları, UAD (ICJ) 3 Aşamalı Hakkaniyetli Sınırlandırma Denetimi, Küresel Boğaz Jeodezisi ve Sentetik Farkların Farkı (SDID) Nedensel Politika Değerlendirmesi CS06 Türkiye Denizlerinde 75 Yıllık Balıkçılık ve Su Ürünleri Yetiştiriciliği Dönüşümü (1950–2024) ile 5 Deniz Havzasında Dip Trolü Baskısı, Demersal Biyokütle ve Shannon Biyoçeşitlilik Panel Analizi CS07 Küresel Karbon Bütçesi (1959–2024), Mauna Loa Atmosferik CO₂, Okyanus Karbon Yutağı Engle–Granger Eşbütünleşmesi, Okyanus Isı İçeriği (OHC) ve Arktik Deniz Buzu Erimesi Nedensel Analizi CS08 Doğu Akdeniz, Ege, Karadeniz, Marmara ve Küresel Deniz Darboğazlarında Yüksek Frekanslı Met-Ocean Telemetrisi: Gumbel (EV1) 100-Yıllık Ekstrem Dalga, OU Termal Hafıza ve Sabit Etkiler Paneli CS09 COP31 Türkiye İklim Diplomasisi Perspektifinden 6 Akdeniz ve Avrupa Ekonomisinde Yenilenebilir Enerji Dönüşümü ve Sektörel Sera Gazı (Enerji, Ulaştırma, Sanayi, Toplam GHG) Karbonsuzlaşma Paneli (1970–2026) CS10 Küresel Deniz Ticareti, Konteyner Liman Elleçleme Trafiği (TEU), UNCTAD Doğrusal Deniz Taşımacılığı Bağlantılılık İndeksi (LSCI), Dünya Bankası LPI ve OECD Okyanus Ekonomisi Panel Analizi (1970–2026)

📊 Canlı GOMD Veritabanı Kayıt Sayısı Denetimi (2.896.376 Toplam Tablosal Gözlem — 10 Vaka Çalışmasında 770.322 Kayıt ve Grafiklerde 163.499 Ham Gözlem Noktası)

Aşağıdaki tablo, canlı https://gomd.pirireis.edu.tr veritabanındaki 210 kurumsal kaynak ve 1.071 gösterge içinden bu 10 vaka çalışmasında (CS01–CS10) kullanılan birincil yüksek frekanslı (günlük uydu, günlük AIS boğaz geçişi, aylık Mauna Loa/OECD/UNCTAD ve yıllık FAO/EDGAR/WTO/CWON) veri setlerinin tam veritabanı kayıt sayılarını ve 4-panelli (2×2) grafiklerde doğrudan çizilen gerçek gözlem sayılarını (N) göstermektedir:

Vaka Birincil Yüksek Frekanslı / Çok-Ülkeli GOMD Göstergeleri Frekans ve Dönem Veritabanı Kayıt Sayısı (DB) 4-Panelli Grafikte Çizilen Gözlem (N)
CS01 noaa_oisst_area_mean_daily_v1 (82.435), omi_sea_level_anomaly (50.958) Günlük Uydu (1981–2026) 189.138 kayıt 77.594 günlük gözlem
CS02 OECD_MARITIME_CO2_RESIDENCE_M (13.641), edgar_ghg_navigation (6.481), unctad_fleet_dwt_* (27.467) Aylık AIS & Yıllık (1970–2026) 52.076 kayıt 1.038 aylık/yıllık gözlem
CS03 wb_merchandise_marine_cargo_insurance_* (14.983), wb_cwon_* (63.938), iumi_* (1.550) Yıllık Panel (1970–2025) 96.609 kayıt 478 ülke-yıl gözlemi
CS04 IMF_PW_N_TOTAL / TANKER / CAPACITY (89.344), noaa_oisst_area_mean_daily_v1, argo_doxy_surface (2.411) Günlük AIS & Aylık Argo (1981–2026) 87.981 kayıt 44.454 günlük/aylık gözlem
CS05 mavi_vatan_un_registered_jurisdiction_km2, edgar_wb_co2_transport_mt (11.220), unctad_fleet_owned_dwt (2.379), ohi_index (2.398) Yıllık Panel (1970–2026) 26.867 kayıt 474 ülke-yıl gözlemi
CS06 fao_capture_marine_total (13.770), fao_aquaculture_marine (6.229), ices_sag_* (9.289), wb_fishing_value_added (6.578) 75 Yıllık FAO & ICES (1905–2025) 51.239 kayıt 617 ülke/stok-yıl gözlemi
CS07 gml_mauna_loa_co2_ppm (3.813), nsidc_seaice_extent_daily (31.662), gcb2025_* (264), noaa_gml_ch4_global (514) Günlük Buz & Aylık CO₂ (1958–2026) 36.466 kayıt 17.432 günlük/aylık/yıllık gözlem
CS08 IMF_PW_N_TOTAL 4 Boğaz (22.336), metocean_global_basin_wave_height_max_m / swell / wind_wave (28.256) Günlük AIS & Dalga (2019–2026) 117.600 kayıt 13.958 günlük gözlem
CS09 cm_co2_daily (5.538), edgar_wb_total_ghg_* & sektörel (45.320), iea_wb_renewable_electricity_output_pct (5.829) Günlük CO₂ & Yıllık (1970–2026) 78.918 kayıt 6.280 günlük/yıllık gözlem
CS10 UNCTAD_LSCI_MONTHLY (3.410), OECD_SOE_TRANSPORT_CONT_SEA_TEU_NA_NA (1.152), wto_wb_merchandise_* (21.769), lpi_wb_overall_score (1.141) Aylık LSCI & Yıllık (1970–2026) 33.428 kayıt 1.199 aylık/yıllık gözlem
TOPLAM 42 Birincil Gösterge Ailesi (210 Kurumsal Kaynak İçinden) 1905–2026 (Günlük/Aylık/Yıllık) 770.322 DB Kaydı 163.499 Çizilen Gözlem
VAKA 01 · OKYANUS-İKLİM VERİ MADENCİLİĞİ VE ASİTLENME REJİMLERİ (1981–2026)

CS01: Doğu Akdeniz ve Türkiye Denizlerinde Çok Değişkenli Okyanus-İklim Rejim Kayması, Denizel Sıcak Hava Dalgaları (MHW) ve Karbonat Asitlenmesi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Doğu Akdeniz (Levant Havzası) ve Türkiye çevre denizleri, küresel okyanus ortalamasının yaklaşık 2,5 katı hızla ısınan başlıca bir iklim değişikliği odak noktasıdır. 1981–2026 döneminde atmosferik CO₂ birikiminin (Mauna Loa 354 ppm seviyesinden 429 ppm seviyesine) yüzey sularına difüzyonu ile üst okyanus ısı içeriğindeki (0–700 m OHC) artış eşzamanlı gerçekleşmiş; deniz yüzeyi sıcaklığındaki (SST) sıçrama, su kolonunun yoğunluk tabakalaşmasını (σ_t) güçlendirerek görünür oksijen kullanımını (AOU) artırmış ve kalsiyum karbonat kabuklu deniz canlıları için hayati öneme sahip Aragonit doygunluk katsayısını (Ω_arag) aşağı çekmiştir. Bu olay tek bir değişkenle açıklanamayacak kadar karmaşık, çok boyutlu bir termo-kimyasal faz geçişidir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
noaa_oisst_area_mean_daily_v1 NOAA NCEI OISST v2.1 (0,25° Uydu) 5 Havza (Doğu Akdeniz, Ege, Karadeniz, Batı Akdeniz, Küresel — 1981–2026, Toplam 82.435 Günlük Gözlem; Çizilen N = 65.948 Gün) °C (Günlük) Günlük uydu deniz yüzeyi sıcaklığı, 95. yüzdelik MHW eşiği ve 1982–2000 baz anomalisi
omi_sea_level_anomaly Copernicus Marine (CMEMS) Uydu Altimetrisi Avrupa Denizleri ve Küresel Havzalar (1993–2024, Toplam 50.958 Günlük Gözlem; Çizilen N = 11.646 Gün) cm / m (Günlük) Yüksek frekanslı uydu deniz seviyesi anomalisi (SLA) ve termosterik yükselme eğilimi
gml_mauna_loa_co2_ppm NOAA GML Mauna Loa Gözlemevi Küresel (1958–2026, Toplam 3.813 Kayıt; 823 Aylık Gözlem) ppm Atmosferik sera gazı zorlaması ve okyanus karbonat dengesi sürücüsü
socat_surface_ph_total_scale SOCAT v2024 / GOA-ON Türkiye ve Akdeniz (1990–2026) pH (Toplam) Deniz suyu asitlenme hızı ve Lueker (2000) karbonat sistemi çözücüsü
socat_omega_aragonite SOCAT / GLODAP Türkiye ve Akdeniz (1990–2026) Ω_arag Kalsifikasyon doygunluğu ve Shannon Transfer Entropisi hedef değişkeni

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Spektral Temel Bileşenler Analizi (PCA / EOF): 7 fiziksel ve biyojeokimyasal değişkenin toplam varyansının %91,80’i tek başına birinci temel bileşen (PC1: Bileşik Termo-Kimyasal İklim Zorlaması), %5,92’si ise ikinci bileşen (PC2: MHW Sıklık ve Yoğunluk Salınımı) tarafından açıklanmaktadır (Kümülatif PC1+PC2 = %97,72).
  • Pettitt (1979) Yapısal Rejim Kırılması ve Theil–Sen Eğimi: Doğu Akdeniz SST serisinde on yılda +0,445 °C (p < 10⁻⁶) monotonik ısınma tespit edilmiş; 2009 yılında (+0,896 °C ortalama rejim sıçraması, p = 0,000018) geri dönüşsüz bir yapısal kırılma yaşanmıştır.
  • Deterministik K-Means++ Rejim Kümelemesi (Silüet Katsayısı = 0,4600): 1990–2002 dönemi "Rejim 1: Tarihsel Baz Dönemi", 2003–2014 dönemi "Rejim 2: Hızlanan Isınma ve Tuzlulaşma", 2015–2026 dönemi ise "Rejim 3: Bileşik MHW ve Asitlenme Ekstremi" olarak ayrışmıştır.
  • Shannon Transfer Entropisi (Runge vd., 2023): Yüzey ısınmasından Aragonit doygunluğuna doğru T(SST -> Ω_arag) = 0,2203 bit doğrusal olmayan bilgi akışı ölçülmüş; termal anomalilerin karbonat tampon kapasitesini doğrudan zayıflattığı kanıtlanmıştır.
  • Genişleyen Pencere Çapraz Doğrulamalı Lag-1 Ridge Tahmini: Örneklem dışı test kümesinde 0,0492 °C hata (RMSE) ile naif kalıcılık modeline kıyasla +%63,04 tahmin beceri skoru elde edilmiştir.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı Günlük Uydu SST Zaman Serisi ve Haritası (N = 82.435 Gün)

NOAA OISST v2.1 Doğu Akdeniz (16.487 gün), Ege, Karadeniz ve Küresel günlük uydu SST zaman serisini ve haritasını canlı inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Copernicus CMEMS Günlük Deniz Seviyesi Anomalisi (N = 50.958 Gün)

Copernicus Marine (CMEMS) 1993–2024 günlük uydu altimetri deniz seviyesi anomalisi (SLA) serisini canlı grafikte açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 SST Anomali Bülteni ve 3B Küresel Okyanus Haritası

Doğu Akdeniz 1990–2026 ısınma hızını ve MHW sıcak noktalarını interaktif GOMD bilim haritası ve SST bülteni üzerinde canlı izleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Okyanus Gözlemevi — Üst 0–700 m Okyanus Isı İçeriği (OHC)

NOAA NCEI 0–700 m Okyanus Isı İçeriği (OHC) ve termosterik deniz seviyesi serilerini karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

77.594 gerçek günlük uydu gözlemiyle çizilen 4-panelli yüksek çözünürlüklü bilimsel kanıt grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs01_multivariate_ocean_climate_data_mining) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 01 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. COP31 Türkiye Başkanlığı "Doğu Akdeniz Bileşik Ekstrem Erken Uyarı Sistemi": 2009 kırılması sonrası kalıcı hale gelen Rejim 3 koşulları nedeniyle MGM, SHODB ve ODTÜ-DBE ortaklığında gerçek zamanlı MHW + Asitlenme (Ω_arag < 3,2) erken uyarı şamandıra ağı kurulmalıdır.
  2. Deniz Koruma Alanlarında (DKA) İklim Sığınakları Planlaması: ÇŞİDB Tabiat Varlıklarını Koruma Genel Müdürlüğü, PC1 termal stres yükü düşük derin kanyon ve yükselim bölgelerini (Finike Denizaltı Dağları ve Gökova) öncelikli mutlak koruma statüsüne almalıdır.
  3. Bölgesel Denizcilik ve Balıkçılık Uyum Kredileri: MHW kümülatif yoğunluğunun 80 °C·gün eşiğini aştığı yıllarda kıyı balıkçıları ve su ürünleri yetiştiriciliği tesisleri için parametrik iklim sigortası devreye sokulmalıdır.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Doğu Akdeniz ve Türkiye Havzalarında Çok Değişkenli Okyanus-İklim Veri Madenciliği: Spektral PCA, K-Means++, Walk-Forward Ridge CV ve Shannon Transfer Entropisi (1990–2026)
Eastern Mediterranean & Türkiye Multivariate Ocean-Climate Data Mining: Spectral PCA, K-Means++, Walk-Forward Ridge CV & Shannon Transfer Entropy (1990–2026)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan 8 Oşinografik Göstergenin Çekimi (1990–2026)
# STEP 1: Live Retrieval of 8 Oceanographic Series from GOMD Server (1990–2026)
# ==============================================================================
from gomd.ocean import (
    seawater_density_eos80,
    oxygen_solubility,
    carbonate_system,
    marine_heatwave_detect,
    compound_mhw_oax_event,
    sst_warming_velocity_profile,
)
from gomd.stats import (
    mann_kendall_sen,
    pettitt_changepoint,
    transfer_entropy_causal,
    multivariate_data_mining_pipeline,
)

sst_map   = fetch_gomd_annual_series("copernicus_sst_med", entity="TUR", period_from=1990, period_to=2026)
sal_map   = fetch_gomd_annual_series("teos10_med_salinity_psu", entity="TUR", period_from=1990, period_to=2026)
fco2_map  = fetch_gomd_annual_series("socat_fco2", entity="TUR", period_from=1990, period_to=2026)
ph_map    = fetch_gomd_annual_series("socat_surface_ph_total_scale", entity="TUR", period_from=1990, period_to=2026)
omega_map = fetch_gomd_annual_series("socat_aragonite_saturation_omega", entity="TUR", period_from=1990, period_to=2026)
ohc_map   = fetch_gomd_annual_series("cmems_med_ohc_0_700m_zj", entity="TUR", period_from=1990, period_to=2026)
mhw_map   = fetch_gomd_annual_series("cmems_med_mhw_cumulative_intensity", entity="TUR", period_from=1990, period_to=2026)
do_map    = fetch_gomd_annual_series("marmara_subhalocline_do_mg_l", entity="TUR", period_from=1990, period_to=2026)

common_years = sorted(
    set(sst_map) & set(sal_map) & set(fco2_map) & set(ph_map)
    & set(omega_map) & set(ohc_map) & set(mhw_map) & set(do_map)
)
baseline_sst_1990_2000 = float(np.mean([sst_map[y] for y in common_years if y <= 2000]))

records = []
for yr in common_years:
    sst_degc = sst_map[yr]
    sst_anom = round(sst_degc - baseline_sst_1990_2000, 4)
    sal_psu  = sal_map[yr]
    ph_total = ph_map[yr]
    do_mg_l  = do_map[yr]

    eos = seawater_density_eos80(salinity_psu=sal_psu, temp_c=sst_degc, pressure_dbar=15.0)
    # mg/L -> umol/kg dönüşümü (O2 molar kütle = 31.9988 g/mol)
    do_umol_kg = round((do_mg_l * 1000.0) / (31.9988 * (eos["rho_kg_m3"] / 1000.0)), 3)
    oxy  = oxygen_solubility(temp_c=sst_degc, salinity_psu=sal_psu, observed_do_umol_kg=do_umol_kg)
    carb = carbonate_system(ph_total=ph_total, temp_c=sst_degc, salinity_psu=sal_psu, ta_umol_kg=2610.0)

    records.append({
        "year": yr,
        "sst_degc": round(sst_degc, 4),
        "sst_anom_c": sst_anom,
        "sal_psu": round(sal_psu, 4),
        "sigma_t": eos["sigma_t_kg_m3"],
        "do_mg_l": round(do_mg_l, 4),
        "aou_umol_kg": oxy["aou_umol_kg"],
        "ph_total": round(ph_total, 4),
        "omega_arag_obs": round(omega_map[yr], 4),
        "omega_arag_calc": carb["omega_aragonite"],
        "fco2_uatm": round(fco2_map[yr], 2),
        "ohc_0_700m_zj": round(ohc_map[yr], 4),
        "mhw_cum_intensity": round(mhw_map[yr], 2),
    })

df = pd.DataFrame(records)
mhw = marine_heatwave_detect(df["sst_degc"].tolist(), dates_or_steps=df["year"].tolist(), pct_threshold=85.0, min_duration=1)
comp = compound_mhw_oax_event(
    sst_series=df["sst_degc"].tolist(),
    ph_series=df["ph_total"].tolist(),
    do_mg_l_series=df["do_mg_l"].tolist(),
    labels=df["year"].tolist(),
)

print(f"\n📊 Doğu Akdeniz & Türkiye Gerçek GOMD Okyanus-İklim Matrisi (N={len(df)} yıl, Son 8 Yıl):")
print(df.tail(8).to_string(index=False))

# ==============================================================================
# ADIM 2: GOMD Çok Değişkenli Veri Madenciliği Hattı (PCA + K-Means++ + Ridge CV)
# STEP 2: GOMD Multivariate Data Mining Pipeline (PCA + K-Means++ + Ridge CV)
# ==============================================================================
feature_cols = ["sst_degc", "sigma_t", "aou_umol_kg", "omega_arag_obs", "fco2_uatm", "ohc_0_700m_zj", "mhw_cum_intensity"]
feature_matrix = df[feature_cols].values.tolist()

mining = multivariate_data_mining_pipeline(
    feature_matrix=feature_matrix,
    feature_names=feature_cols,
    period_labels=df["year"].tolist(),
    target_index=0,
    k_clusters=3,
    ridge_alphas=(0.01, 0.1, 1.0, 5.0, 10.0),
)

pca_info = mining["pca"]
km_info  = mining["kmeans_regimes"]
ml_info  = mining["ridge_ml_forecast"]

df["PC1"] = [s["pc1"] for s in pca_info["scores"]]
df["PC2"] = [s["pc2"] for s in pca_info["scores"]]
df["regime_id"] = km_info["regime_labels"]
regime_names = {
    1: "Rejim 1: Tarihsel Baz Dönemi",
    2: "Rejim 2: Hızlanan Isınma & Tuzlulaşma",
    3: "Rejim 3: Bileşik MHW-Asitlenme Ekstremi",
}
df["regime_label"] = df["regime_id"].map(regime_names)

mk_sst = mann_kendall_sen(df["sst_degc"].tolist(), t=df["year"].tolist())
pt_sst = pettitt_changepoint(df["sst_degc"].tolist(), labels=df["year"].tolist())
te_sst_arag = transfer_entropy_causal(df["sst_degc"].tolist(), df["omega_arag_obs"].tolist(), bins=3)
vel_sst = sst_warming_velocity_profile(df["sst_degc"].tolist(), dt_days=df["year"].tolist())

print(f"🔬 PCA Varyans Açıklama Oranı       : PC1 = %{pca_info['explained_variance_ratio'][0]*100:.2f}, PC2 = %{pca_info['explained_variance_ratio'][1]*100:.2f} (Toplam = %{pca_info['cumulative_variance_pc1_pc2_pct']:.2f})")
print(f"🧩 K-Means++ Silhouette Skoru       : {km_info['silhouette_score']:.4f} (WCSS Inertia = {km_info['wcss_inertia']:.2f})")
print(f"🤖 Lag-1 Ridge CV Test RMSE         : {ml_info['test_rmse']:.4f} °C (Yetenek Skoru / Skill = +%{ml_info['forecast_skill_score_pct']:.2f}, α = {ml_info['optimal_alpha_l2']})")
print(f"📈 Mann-Kendall SST Trendi          : +{mk_sst['theil_sen_slope']*10:.3f} °C/on-yıl (p = {mk_sst['p_value']:.2e}, {mk_sst['trend_classification']})")
print(f"⚡ Pettitt Yapısal Kırılma Yılı     : {pt_sst['changepoint_label']} (Δ = +{pt_sst['regime_shift_delta']:.3f} °C, p = {pt_sst['p_value_approx']:.4f})")
print(f"🔗 Shannon Transfer Entropisi       : T(SST -> Ω_arag) = {te_sst_arag['transfer_entropy_x_to_y_bits']:.4f} bits ({te_sst_arag['dominant_causal_direction']})")

# ==============================================================================
# ADIM 3: 4 Panelli Yayın Kalitesinde Görselleştirme (Matplotlib / Google Colab)
# STEP 3: 4-Panel Publication-Grade Visualization in Google Colab
# ==============================================================================
fig, axes = plt.subplots(2, 2, figsize=(14, 9.5), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in axes.flat:
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for spine in ax.spines.values():
        spine.set_color("#1e3a5f")

# Panel A: Gerçek GOMD SST Serisi, Pettitt Kırılma Yılı ve Theil-Sen Trend Doğrusu
ax1 = axes[0, 0]
ax1.plot(df["year"], df["sst_degc"], color="#38bdf8", marker="o", lw=2, label="Copernicus Akdeniz SST (°C)")
trend_line = [mk_sst["theil_sen_intercept"] + mk_sst["theil_sen_slope"] * yr for yr in df["year"]]
ax1.plot(df["year"], trend_line, color="#f59e0b", ls="--", lw=2, label=f"Theil-Sen (+{mk_sst['theil_sen_slope']*10:.2f} °C/10y)")
ax1.axvline(int(pt_sst["changepoint_label"]), color="#ef4444", ls=":", lw=1.8, label=f"Pettitt Kırılma ({pt_sst['changepoint_label']})")
ax1.set_title("A) Gerçek GOMD Doğu Akdeniz SST Serisi ve Yapısal Kırılma (1990–2026)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Deniz Yüzeyi Sıcaklığı (°C)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: Spektral PCA (PC1 vs PC2) & K-Means++ Okyanus-İklim Rejimleri
ax2 = axes[0, 1]
palette = {1: "#22c55e", 2: "#f59e0b", 3: "#ef4444"}
for rid, rname in regime_names.items():
    sub = df[df["regime_id"] == rid]
    ax2.scatter(sub["PC1"], sub["PC2"], s=70, c=palette[rid], label=rname, edgecolors="#ffffff", linewidth=0.6)
    for _, row in sub.iloc[::3].iterrows():
        ax2.annotate(str(int(row["year"])), (row["PC1"], row["PC2"]), xytext=(4, 4), textcoords="offset points", color="#e2e8f0", fontsize=7.5)
ax2.set_title(f"B) Spektral PCA & K-Means++ Kümeleme (Silhouette = {km_info['silhouette_score']:.3f})", color="#f8fafc", fontweight="bold")
ax2.set_xlabel(f"PC1 (%{pca_info['explained_variance_ratio'][0]*100:.1f} Varyans)", color="#cbd5e1")
ax2.set_ylabel(f"PC2 (%{pca_info['explained_variance_ratio'][1]*100:.1f} Varyans)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax2.grid(alpha=0.18, color="#64748b")

# Panel C: SOCAT Karbonat Asitlenmesi (Omega Aragonit) vs. CMEMS Okyanus Isı İçeriği (OHC)
ax3 = axes[1, 0]
ax3.plot(df["year"], df["omega_arag_obs"], color="#14b8a6", lw=2.2, label="SOCAT Aragonit Doygunluğu (Ω_arag)")
ax3_twin = ax3.twinx()
ax3_twin.plot(df["year"], df["ohc_0_700m_zj"], color="#f43f5e", lw=2.0, ls="-.", label="CMEMS OHC 0–700m (ZJ)")
ax3_twin.tick_params(colors="#fda4af")
ax3.set_title("C) SOCAT Deniz Asitlenmesi (Ω_arag) ve CMEMS Okyanus Isı İçeriği", color="#f8fafc", fontweight="bold")
ax3.set_ylabel("Ω_arag", color="#14b8a6")
ax3_twin.set_ylabel("Okyanus Isı İçeriği 0–700m (ZJ)", color="#f43f5e")
ax3.grid(alpha=0.18, color="#64748b")

# Panel D: Walk-Forward CV Lag-1 Ridge Regresyonu Örneklem Dışı Tahmin Performansı
ax4 = axes[1, 1]
preds = pd.DataFrame(ml_info["test_predictions"])
preds["period_int"] = preds["period"].astype(int)
ax4.plot(preds["period_int"], preds["observed"], color="#38bdf8", marker="o", lw=2.2, label="Gözlenen SST (°C)")
ax4.plot(preds["period_int"], preds["ridge_predicted"], color="#22c55e", marker="s", ls="--", lw=2.0, label=f"Lag-1 Ridge Tahmini (RMSE={ml_info['test_rmse']:.3f})")
ax4.plot(preds["period_int"], preds["naive_baseline"], color="#94a3b8", marker="^", ls=":", lw=1.5, label=f"Naif Kalıcılık (RMSE={ml_info['naive_baseline_rmse']:.3f})")
ax4.set_title("D) Zaman Serisi CV Lag-1 Ridge Örneklem Dışı Tahmin (Test)", color="#f8fafc", fontweight="bold")
ax4.set_ylabel("SST (°C)", color="#cbd5e1")
ax4.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax4.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 1: Doğu Akdeniz Gerçek Veri Okyanus-İklim Madenciliği", color="#ffffff", fontsize=13, fontweight="bold", y=0.99)
plt.tight_layout()
fig.savefig("cs01_multivariate_ocean_climate_data_mining.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 02 · DENİZCİLİK KARBONSUZLAŞTIRMA: IMO CII, AB ETS VE FUELEU MARITIME (1970–2026)

CS02: Türk ve Akdeniz Ticari Deniz Filosunun Karbonsuzlaştırma Dinamikleri: IMO CII (AER), AB Denizcilik ETS (2023/959), FuelEU Maritime (2023/1805) ve Atıl Varlık Risk Analizi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Uluslararası deniz taşımacılığı, 2023–2026 döneminde tarihin en kapsamlı düzenleyici dönüşümüne girmiştir: (1) IMO MEPC.354(78) Operasyonel Karbon Yoğunluğu Göstergesi (CII / AER) gemileri A–E arasında derecelendirmekte, (2) AB Direktifi 2023/959 (AB Denizcilik ETS) AB limanlarına uğrak yapan 5.000 GT üzeri gemilerin emisyonlarını (%100 AB-içi, %50 AB-dışı kapsamla) karbon fiyatlamasına tabi tutmakta ve (3) AB Tüzüğü 2023/1805 (FuelEU Maritime) Kuyudan-Dümene (WtW) sera gazı yoğunluğuna katı sınırlar getirerek uyumsuz ton başına 2.400 EUR/tVLSFOe ceza uygulamaktadır. Ticaretinin %86’sını deniz yoluyla gerçekleştiren ve AB ile yoğun Ro-Ro, konteyner ve dökme yük hattına sahip olan Türkiye (TUR) filosu için bu üçlü regülasyon doğrudan rekabetçilik ve gemi finansmanı (Poseidon İlkeleri) meselesidir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
OECD_MARITIME_CO2_RESIDENCE_M OECD Deniz Taşımacılığı AIS Emisyon Veritabanı 163 Ülke (2019-01 .. 2026-06, Toplam 13.641 Aylık Gözlem; TUR, GRC, ITA, DEU, ESP, NOR için 90’ar Ay) Ton CO₂ / Ay AIS gemi hareketlerinden türetilen gerçek aylık denizcilik CO₂ emisyonları ve AB ETS maruziyeti
edgar_ghg_navigation Avrupa Komisyonu JRC EDGAR v8.0 162 Ülke (1970–2023, Toplam 6.481 Yıllık Gözlem; Türkiye için 54 Yıl) kt CO₂e / Yıl Ulusal denizcilik sera gazı emisyonlarının 54 yıllık tarihsel seyri
unctad_fleet_dwt_total UNCTAD Deniz Taşımacılığı İstatistikleri 209 Ülke (1980–2026, Toplam 7.779 Gözlem; Türkiye için 47 Yıl) Bin DWT Toplam ulusal ticari deniz filosu taşıma kapasitesi
unctad_fleet_dwt_bulk_carriers / oil_tankers / container UNCTAD 209 Ülke (1980–2026, Toplam 16.693 Gözlem) Bin DWT Dökme yük (5.450 kayıt), petrol tankeri (6.406 kayıt) ve konteyner (4.837 kayıt) filo kırılımı
unctad_fleet_age_avg UNCTAD 209 Ülke (2.995 Gözlem) Yıl Ticari filo yaş dağılımı ve EEXI/CII yenileme ihtiyacı

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Türkiye Filosu Karbon Yoğunluğu (AER) İyileşme Hızı: Canlı GOMD verilerine göre Türkiye (TUR) ticari filosunun ortalama AER değeri 1995’teki 7,325 gCO₂/(DWT·nm) seviyesinden 2026’da 4,180 gCO₂/(DWT·nm) seviyesine gerilemiştir (Mann–Kendall Theil–Sen eğimi = -0,850 gCO₂/DWT·nm/on-yıl, p < 10⁻⁶).
  • EEXI Teknik Uyum ve FuelEU WtW Dengesi: 2026 itibarıyla Türk filosunun EEXI teknik uyum oranı %91,50’ye ulaşmış; FuelEU Maritime WtW yoğunluğu 85,64 gCO₂e/MJ olarak gerçekleşerek 2025–2029 hedef eşiği olan 89,34 gCO₂e/MJ değerinin altında (uyumlu bölgede) kalmıştır.
  • AB Denizcilik ETS Karbon Maliyeti ve Atıl Varlık Eşiği: Türkiye bağlantılı deniz taşımacılığının yıllık AB ETS kapsamındaki emisyon yükümlülüğü 2,45 Mt CO₂ (EUA fiyatı 75 EUR/tCO₂ iken yıllık ~183,75 Milyon EUR) düzeyindedir. IMO MEPC.377(80) 2030/2040 (%40 ve %80 azaltım) patikası altında konvansiyonel VLSFO yakan gemiler biyo-LNG veya yeşil metanol dönüşümü yapılmazsa 2031–2034 bandında atıl varlık riskiyle karşılaşmaktadır.
  • AIS Admiralty Kübik Hız-Güç Optimizasyonu: Sefer hızında %10’luk yavaş seyir (ör. 13,4 deniz milinden 12,1 deniz miline düşüş) uygulaması, gemi başına seferlik 187,7 ton CO₂ tasarrufu sağlayarak CII derecesini bir üst banda (D -> C veya C -> B) taşımaktadır.
  • Poseidon İlkeleri Sürdürülebilirlik Bağlantılı Kredi Etkisi: CII ve Poseidon yörüngesiyle uyumlu gemi finansmanında yıllık baz puan faiz indirimi sağlanırken, uyumsuz filolarda kredi marjı cezası doğmaktadır.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı OECD Aylık Denizcilik AIS CO₂ Emisyonu (N = 13.641 Ay · TUR)

Türkiye (TUR) ve 163 ülkenin 2019–2026 gerçek aylık AIS deniz taşımacılığı CO₂ emisyon serisini ve haritasını canlı inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Okyanus Gözlemevi — Çok Ülkeli Aylık Denizcilik CO₂ Karşılaştırması

Türkiye, Yunanistan, İtalya, Almanya, İspanya ve Norveç aylık denizcilik emisyonlarını tek grafikte karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı JRC EDGAR 54 Yıllık Ulusal Denizcilik GHG Serisi (TUR)

Avrupa Komisyonu JRC EDGAR v8.0 1970–2023 Türkiye ulusal denizcilik sera gazı serisini canlı grafikte açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Denizcilik Yönetişimi ve İnteraktif IMO CII / EEXI / AB ETS / FuelEU Hesaplayıcı

Filo karbon yoğunluğu (AER), EEXI, AB ETS karbon maliyeti ve FuelEU Maritime cezalarını interaktif hesaplayıcıda simüle edin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

1.038 gerçek aylık/yıllık gözlemle üretilen 4-panelli denizcilik karbonsuzlaştırma grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs02_maritime_decarbonization_cii_ets_fueleu) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 02 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Ulusal Denizcilik ETS Gelir Geri Dönüşüm Fonu (Milli Yeşil Filo Fonu): T.C. Ulaştırma ve Altyapı Bakanlığı Denizcilik Genel Müdürlüğü, Türk bayraklı ve Türk sahipli gemilerin AB limanlarında ödediği ~184 Milyon EUR/yıl ETS maliyetinin yurt içinde "Ulusal Denizcilik Karbonsuzlaştırma Fonu"na yönlendirilmesi için AB ile eşdeğer ulusal karbon fiyatlama ve mahsuplaşma mekanizması kurmalıdır.
  2. Tersanelerde Biyo-Metanol / Biyo-LNG Dönüşümü ve Kıyı Elektriği (OPS) Teşviki: Tuzla, Yalova ve Aliağa tersanelerinde EEXI/CII D ve E sınıfı gemilerin çift yakıtlı dönüşümü ile Ambarlı, Mersin, İzmir ve İskenderun limanlarında Yüksek Gerilim Kıyı Elektriği (OPS) yatırımları KDV/ÖTV istisnası ve yeşil kira sertifikası/tahvil ile desteklenmelidir.
  3. Türk Bankacılık Sektörü İçin Poseidon İlkeleri Entegrasyonu: BDDK ve Türkiye Bankalar Birliği, gemi ipoteği portföylerinde Poseidon İlkeleri iklim uyum deltasını (Δ_PP) standart kredi derecelendirme kriteri haline getirmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Ulusal Deniz Ticaret Filoları Karbonsuzlaştırma Madenciliği: Gerçek UNCTAD Filo Tonajı, IMO CII, AB Denizcilik ETS (2023/959), FuelEU Maritime ve AIS Hız Optimizasyonu (1990–2026)
National Merchant Fleet Decarbonization Mining: Real UNCTAD Fleet DWT, IMO CII, Maritime EU ETS (2023/959), FuelEU Maritime & AIS Speed-Power Optimization (1990–2026)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan 8 Denizci Ülkenin Gerçek Filo ve Emisyon Verisi
# STEP 1: Fetch Real UNCTAD Fleet DWT, IMO CII, EU ETS & FuelEU Series from GOMD
# ==============================================================================
from gomd.maritime import (
    calculate_imo_cii,
    calculate_eu_ets_exposure,
    calculate_fueleu_maritime,
    imo_2023_strive_trajectory,
    ais_speed_power_emissions,
    poseidon_principles_alignment,
    psc_detention_risk_score,
)
from gomd.stats import mann_kendall_sen

countries = ["TUR", "GRC", "ITA", "ESP", "FRA", "DEU", "NOR", "CHN"]

# Türkiye (TUR) ve Küresel (WLD) için 1990-2026 gerçek karbonsuzlaştırma serileri
tur_aer   = fetch_gomd_annual_series("imo_cii_fleet_aer", entity="TUR", period_from=1990, period_to=2026)
tur_ets   = fetch_gomd_annual_series("eu_ets_shipping_surrender_mt_co2", entity="TUR", period_from=1990, period_to=2026)
tur_feu   = fetch_gomd_annual_series("fueleu_maritime_wtw_intensity", entity="TUR", period_from=1990, period_to=2026)
tur_eexi  = fetch_gomd_annual_series("imo_eedi_eexi_attainment_pct", entity="TUR", period_from=1990, period_to=2026)
tur_zfuel = fetch_gomd_annual_series("green_corridor_zero_emission_fuel_share_pct", entity="TUR", period_from=1990, period_to=2026)

# 8 ülkenin son yıl gerçek GOMD gözlemlerini çekerek ülke filosu denetim tablosu oluşturma
fleet_audit_rows = []
for iso in countries:
    aer_s  = fetch_gomd_annual_series("imo_cii_fleet_aer", entity=iso, period_from=2008, period_to=2026)
    ets_s  = fetch_gomd_annual_series("eu_ets_shipping_surrender_mt_co2", entity=iso, period_from=2020, period_to=2026)
    feu_s  = fetch_gomd_annual_series("fueleu_maritime_wtw_intensity", entity=iso, period_from=2020, period_to=2026)
    eexi_s = fetch_gomd_annual_series("imo_eedi_eexi_attainment_pct", entity=iso, period_from=2020, period_to=2026)
    bulk_s = fetch_gomd_annual_series("unctad_fleet_dwt_bulk_carriers", entity=iso, period_from=2018, period_to=2026)
    tank_s = fetch_gomd_annual_series("unctad_fleet_dwt_oil_tankers", entity=iso, period_from=2018, period_to=2026)
    cont_s = fetch_gomd_annual_series("unctad_fleet_dwt_container", entity=iso, period_from=2018, period_to=2026)
    age_s  = fetch_gomd_annual_series("unctad_fleet_age_avg", entity=iso, period_from=2018, period_to=2026)

    aer_2008 = aer_s.get(2008, list(aer_s.values())[0])
    aer_2026 = aer_s[max(aer_s)]
    ets_mt   = ets_s[max(ets_s)]
    wtw_2026 = feu_s[max(feu_s)]
    eexi_pct = eexi_s[max(eexi_s)]
    bulk_dwt = bulk_s[max(bulk_s)]
    tank_dwt = tank_s[max(tank_s)]
    cont_dwt = cont_s[max(cont_s)]
    avg_age  = age_s[max(age_s)]
    total_dwt = bulk_dwt + tank_dwt + cont_dwt

    # Baskın filo segmentini gerçek UNCTAD DWT payına göre belirle
    dom_type = "bulk_carrier" if bulk_dwt >= max(tank_dwt, cont_dwt) else ("tanker" if tank_dwt >= cont_dwt else "container")
    rep_dwt  = 82000.0 if dom_type == "bulk_carrier" else (110000.0 if dom_type == "tanker" else 68000.0)
    rep_dist = 56000.0
    # Gerçek GOMD imo_cii_fleet_aer değerine karşılık gelen temsilci gemi yakıt tüketimi (ton VLSFO)
    rep_fuel_t = (aer_2026 * rep_dwt * rep_dist) / (3.151 * 1e6)

    cii = calculate_imo_cii(
        fuel_consumption_tonnes={"vlsfo": rep_fuel_t},
        dwt_or_gt=rep_dwt,
        distance_nm=rep_dist,
        ship_type=dom_type,
        year=2026,
    )
    ets = calculate_eu_ets_exposure(
        co2_tonnes=ets_mt * 1e6,
        voyage_scope="extra_eu" if iso in ("TUR", "CHN", "NOR") else "intra_eu",
        year=2026,
        eua_price_eur=78.5,
    )
    ghg = imo_2023_strive_trajectory(
        baseline_2008_aer=aer_2008,
        current_aer=aer_2026,
        annual_emissions_tco2e=ets_mt * 1e6,
        annual_efficiency_gain_pct=2.1,
        current_year=2026,
    )
    pos = poseidon_principles_alignment(
        attained_aer=aer_2026,
        required_trajectory_aer=cii["required_cii_g_dwt_nm"],
        loan_outstanding_usd=100_000_000.0,
    )
    psc = psc_detention_risk_score(
        ship_age_years=avg_age,
        flag_tier="white",
        ro_performance="high",
        deficiencies_36m=max(1, int(round((100.0 - eexi_pct) / 6.0))),
        detentions_36m=1 if avg_age > 15.0 else 0,
        ship_type=dom_type,
    )

    fleet_audit_rows.append({
        "ISO3": iso,
        "UNCTAD_Core_DWT_M": round(total_dwt / 1e6, 2),
        "Fleet_Age_Yr": round(avg_age, 2),
        "GOMD_AER_2026": round(aer_2026, 3),
        "CII_Rating": cii["cii_rating"],
        "EEXI_Attain_%": round(eexi_pct, 1),
        "FuelEU_WtW": round(wtw_2026, 2),
        "EU_ETS_MtCO2": round(ets_mt, 3),
        "ETS_Cost_MEUR": round(ets["estimated_ets_cost_eur"] / 1e6, 2),
        "Stranded_Yr": ghg["stranded_asset_year_strive"],
        "Poseidon_Delta_%": pos["alignment_delta_pct"],
        "PSC_Risk_%": psc["estimated_detention_risk_pct"],
    })

df_fleet = pd.DataFrame(fleet_audit_rows)
print("\n⚓ 8 Denizci Ülkenin Gerçek GOMD Verilerine Dayalı 2026 Karbonsuzlaştırma Denetim Tablosu:")
print(df_fleet.to_string(index=False))

# ==============================================================================
# ADIM 2: Türkiye (TUR) 1990–2026 Filo Karbonsuzlaştırma Zaman Serisi ve AIS Hız Eğrisi
# STEP 2: Türkiye (TUR) 1990–2026 Decarbonization Trajectory & AIS Speed Optimization
# ==============================================================================
tur_years = sorted(set(tur_aer) & set(tur_ets) & set(tur_feu) & set(tur_eexi) & set(tur_zfuel))
df_tur_ts = pd.DataFrame([
    {
        "year": y,
        "aer_gco2_dwt_nm": tur_aer[y],
        "ets_mt_co2": tur_ets[y],
        "fueleu_wtw": tur_feu[y],
        "eexi_pct": tur_eexi[y],
        "zero_fuel_pct": tur_zfuel[y],
    }
    for y in tur_years
])
mk_aer = mann_kendall_sen(df_tur_ts["aer_gco2_dwt_nm"].tolist(), t=df_tur_ts["year"].tolist())
print(f"\n📉 Türkiye (TUR) 1990–2026 Filo AER Trendi: {mk_aer['theil_sen_slope']*10:.3f} gCO₂/DWT·nm / 10-yıl (p = {mk_aer['p_value']:.2e})")

# Türkiye UNCTAD Dökme Yük Filosu Temsilci Gemisi İçin AIS Seyir Hızı Optimizasyonu
speeds = np.linspace(10.5, 16.0, 12)
speed_rows = []
for spd in speeds:
    voyage_hrs = 56000.0 / float(spd)
    sim = ais_speed_power_emissions(
        mcr_kw=12800.0,
        design_speed_kn=14.5,
        observed_speed_kn=float(spd),
        design_draft_m=14.2,
        observed_draft_m=13.4,
        voyage_hours=voyage_hrs,
        aux_power_kw=620.0,
        weather_fouling_margin=1.12,
        sfoc_g_kwh=171.0,
    )
    cii_sim = calculate_imo_cii(
        fuel_consumption_tonnes=sim["fuel_consumption_tonnes"],
        dwt_or_gt=82000.0,
        distance_nm=56000.0,
        ship_type="bulk_carrier",
        fuel_type="vlsfo",
        year=2026,
    )
    speed_rows.append({
        "speed_knots": round(float(spd), 2),
        "fuel_tonnes": sim["fuel_consumption_tonnes"],
        "co2_tonnes": sim["co2_emissions_tonnes"],
        "aer": cii_sim["attained_aer_g_dwt_nm"],
        "cii_rating": cii_sim["cii_rating"],
    })
df_speed = pd.DataFrame(speed_rows)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.2), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Türkiye (TUR) Gerçek GOMD Filo AER ve EEDI/EEXI Uyum Oranı (1990–2026)
ax1.plot(df_tur_ts["year"], df_tur_ts["aer_gco2_dwt_nm"], color="#38bdf8", marker="o", lw=2.2, label="Türkiye Filo AER (gCO₂/DWT·nm)")
ax1_t = ax1.twinx()
ax1_t.plot(df_tur_ts["year"], df_tur_ts["eexi_pct"], color="#22c55e", marker="s", ls="--", lw=2.0, label="EEDI/EEXI Uyum Oranı (%)")
ax1_t.tick_params(colors="#86efac")
ax1.set_title("A) Türkiye (TUR) Filo Karbon Yoğunluğu (AER) & EEXI Uyumu (1990–2026)", color="#f8fafc", fontweight="bold")
ax1.set_xlabel("Yıl", color="#cbd5e1")
ax1.set_ylabel("Filo AER (gCO₂/DWT·nm)", color="#38bdf8")
ax1_t.set_ylabel("IMO EEDI/EEXI Uyum (%)", color="#22c55e")
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: 8 Denizci Ülkenin 2026 Gerçek GOMD AB ETS Karbon Maliyeti ve CII AER Karşılaştırması
x_pos = np.arange(len(df_fleet))
ax2.bar(x_pos, df_fleet["ETS_Cost_MEUR"], width=0.55, color="#f59e0b", edgecolor="#ffffff", linewidth=0.6, label="2026 AB ETS Tahsisat Maliyeti (Milyon EUR)")
ax2.set_xticks(x_pos)
ax2.set_xticklabels(df_fleet["ISO3"], fontsize=9.5, fontweight="bold")
ax2.set_title("B) 8 Denizci Ülkenin Gerçek GOMD 2026 AB ETS Maliyetleri (Milyon EUR)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("AB ETS Maliyeti (Milyon EUR)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 2: Gerçek UNCTAD Filo & IMO CII/ETS Karbonsuzlaştırma", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs02_maritime_decarbonization_cii_ets_fueleu.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 03 · MAVİ FİNANS, DENİZ SİGORTASI (IUMI/PPMI), UNEP FI PSI VE DÜNYA BANKASI CWON (1970–2025)

CS03: Küresel Mavi Finansman, Aktüeryal Gemi Sigortası (IUMI / IG P&I / PPMI), Parametrik Kıyı Afet Sigortası (UNEP FI PSI) ve Dünya Bankası CWON Doğal Sermaye Muhasebesi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Deniz ekonomisinin büyüyen ölçeği ve artan jeopolitik/iklimsel şoklar (Kızıldeniz/Babülmendep ve Karadeniz boğaz geçiş riskleri, kıyısal fırtına kabarmaları, doğal sermaye aşınması), deniz sigortacılığı ile makroekonomik servet muhasebesini birbirine bağlamıştır. Geleneksel GSYH büyümesi; fosil yakıt tükenmesini, CO₂/PM₂.₅ hasarlarını ve kıyı ekosistemlerinin (Posidonia çayırları ve tuzcul bataklıklar) kaybını hesaba katmadığında yanıltıcı olmaktadır. Bu vaka çalışması; IUMI gövde/makine (H&M) ve kargo primlerini, International Group of P&I Clubs karşılıklı havuz çağrılarını, Poseidon Deniz Sigortası İlkelerini (PPMI), UNEP FI Sürdürülebilir Sigorta İlkeleri (PSI) kapsamında deniz çayırlarının dalga sönümleme değerini ve Dünya Bankası Ulusların Değişen Zenginliği (CWON 2024) Mavi-Kapsayıcı Düzeltilmiş Net Tasarruf (ANS) modelini Türkiye ve 5 karşılaştırma ekonomisi üzerinde birleştirmektedir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
wb_merchandise_marine_cargo_insurance_exports_pct Dünya Bankası WDI / IMF Ödemeler Dengesi 202 Ülke (1970–2025, Toplam 7.067 Gözlem; Türkiye için 44 Yıl) % (Hizmet İhracatı) Deniz kargo taşımacılığı ve finansal sigorta hizmetlerinin ihracat içindeki gerçek payı
wb_merchandise_marine_cargo_insurance_imports_pct Dünya Bankası WDI / IMF Ödemeler Dengesi 209 Ülke (1970–2025, Toplam 7.916 Gözlem; Türkiye için 44 Yıl) % (Hizmet İthalatı) Deniz kargo taşımacılığı ve finansal sigorta hizmetlerinin ithalat içindeki gerçek payı
wb_cwon_carbon_dioxide_damage_usd Dünya Bankası CWON 2024 209 Ülke (1970–2021, Toplam 13.728 Gözlem) Cari ABD$ Ulusların Değişen Zenginliği (CWON) karbon hasar maliyeti muhasebesi
wb_cwon_energy_depletion_usd & mineral_depletion_usd Dünya Bankası CWON 2024 213 Ülke (1970–2021, Toplam 42.048 Gözlem) Cari ABD$ Enerji (19.486 kayıt) ve mineral (22.562 kayıt) doğal sermaye tükenme serileri
wb_cwon_adjusted_net_savings_usd Dünya Bankası CWON 2024 191 Ülke (1970–2021, Toplam 8.162 Gözlem) Cari ABD$ Düzeltilmiş Net Tasarruf (ANS) dolar serisi
iumi_marine_insurance_total_premium_usd_mn IUMI Küresel Deniz Sigortası Raporu 50 Ülke (1995–2025, Toplam 1.550 Gözlem) Milyon ABD$ Ulusal deniz sigortası prim hacmi

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Türkiye Deniz Sigortası Piyasası ve PPMI Uyumu: Türkiye’nin toplam IUMI deniz sigortası prim hacmi 1995–2025 döneminde yıllık ortalama +25,0 Milyon ABD$/yıl (p < 10⁻⁶) büyüyerek 953,68 Milyon ABD$’a (Kargo: 525,21 M$, Gövde/Makine: 256,82 M$, P&I: 190,74 M$) ulaşmıştır; portföyün PPMI iklim uyumu %33,83’tür.
  • Aktüeryal Gemi Fiyatlaması ve Solvency II Sermaye Yükümlülüğü: 68 Milyon ABD$ gövde değerine sahip çift yakıtlı (CII=B) bir gemide yıllık toplam sigorta maliyeti 940.185 ABD$ (PPMI iklim indirimi sonrası), Solvency II %99,5 VaR sermaye gereksinimi ise 17,97 Milyon ABD$ olarak hesaplanmıştır.
  • Mavi Karbon Doğal Sermaye Değeri (Rennert vd., Nature 2022 SCC = 185$/tCO₂): Türkiye kıyılarındaki 148.200 hektarlık mavi karbon ekosistemi yılda 853.928 tCO₂e karbon gömmekte; 30 yıllık %2 iskonto oranıyla 3,277 Milyar ABD$ doğal sermaye net bugünkü değeri (NPV) ve Paris Anlaşması Madde 6 kapsamında yıllık 29,89 Milyon ABD$ gönüllü karbon piyasası geliri üretmektedir.
  • UNEP FI PSI Doğa Temelli Kıyı Koruma ve Parametrik Sigorta (Beck vd., 2022): Kıyıdaki Posidonia çayırları ve sulak alanlar fırtına dalga yüksekliğini %43,16 sönümleyerek Türkiye kıyılarında yılda 11,74 Milyon ABD$ beklenen kıyı hasarını (EAD) önlemekte ve 10,70x Fayda/Maliyet Oranı (BCR) sağlamaktadır.
  • Dünya Bankası CWON Mavi-Kapsayıcı Net Tasarruf (ANS): Türkiye’nin gerçek WDI ve CWON serileriyle yapılan hesaplamada Mavi-Kapsayıcı ANS oranı GNI’nin %14,66’sı (162,48 Milyar ABD$) düzeyinde gerçekleşerek "Güçlü Kapsayıcı Servet Birikimi" rejiminde yer almıştır.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı Deniz Kargo ve Finansal Sigorta İhracat Payı (N = 7.067 · TUR)

1970–2025 Dünya Bankası WDI / IMF Ödemeler Dengesi deniz kargo ve finansal sigorta hizmetleri payını Türkiye (44 yıl) ve 202 ülke için canlı inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Dünya Bankası CWON Düzeltilmiş Net Tasarruf (ANS) ve Karbon Hasarı

Dünya Bankası Ulusların Değişen Zenginliği (CWON 2024) 63.938 kayıtlık doğal sermaye, karbon hasarı ve net tasarruf serilerini açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Mavi Finansman, Hibe Çağrıları ve Fonlanabilirlik Skoru Modülü

Mavi tahviller, uluslararası fon programları, proje fonlanabilirlik skorlaması ve finansal araçları inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Okyanus Gözlemevi — Kıyısal Yapılı Alan İklim ve Fırtına Maruziyeti

100 yıllık kıyı taşkınına maruz kalan kıyısal yapılı alan oranlarını (OECD) ülkeler arasında karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

478 gerçek ülke-yıl gözlemiyle üretilen 4-panelli mavi finans ve CWON doğal sermaye grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs03_blue_finance_actuarial_insurance_cwon) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 03 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. SEDDK ve Türk P&I / DASK "Kıyısal Parametrik Fırtına ve Deniz Çayırı Koruma Poliçesi": Sigortacılık ve Özel Emeklilik Düzenleme ve Denetleme Kurumu (SEDDK), belirgin dalga yüksekliği (Hs >= 4,6 m) tetiklemeli parametrik kıyı altyapı sigortasını limanlar ve kıyı belediyeleri için başlatmalı; Posidonia çayırlarını koruyan tesislere %25–40 prim indirimi uygulamalıdır.
  2. Hazine ve Maliye Bakanlığı "Egemen Mavi Tahvil" İhracı: Türkiye’nin 3,28 Milyar ABD$ değerindeki mavi karbon doğal sermayesi ve Paris Anlaşması Madde 6.2/6.4 kredileri dayanak gösterilerek ICMA Mavi Tahvil İlkeleri’ne uygun uluslararası ihraç gerçekleştirilmelidir.
  3. TÜİK Ulusal Hesaplara CWON Mavi Doğal Sermaye Entegrasyonu: BM SEEA-EA (Ekosistem Muhasebesi) standardı uyarınca deniz çayırları, balık stokları ve kıyı erozyon koruması TÜİK ulusal servet tablolarına dahil edilmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Küresel Mavi Finans, IUMI/PPMI Aktüeryal Deniz Sigortası, UNEP FI PSI Kıyı Sigortası ve Dünya Bankası CWON Doğal Sermaye Muhasebesi (1995–2025)
Global Blue Finance, IUMI/PPMI Marine Actuarial Underwriting, UNEP FI PSI Coastal Insurance & World Bank CWON Natural Capital Accounting (1995–2025)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan IUMI Deniz Sigortası, Poseidon ve UNEP FI PSI Serileri
# STEP 1: Live Retrieval of IUMI Marine Insurance, Poseidon & UNEP FI PSI Series
# ==============================================================================
from gomd.maritime import marine_insurance_actuarial_pricing
from gomd.ocean import (
    sustainable_insurance_cat_var,
    blue_carbon_sequestration_valuation,
    cwon_wealth_accounting,
)

# 1. Türkiye (TUR) ve Küresel (WLD) 1995–2025 gerçek IUMI ve UNEP FI PSI serileri
tur_iumi_tot = fetch_gomd_annual_series("iumi_marine_insurance_total_premium_usd_mn", entity="TUR", period_from=1995, period_to=2025)
tur_iumi_hm  = fetch_gomd_annual_series("iumi_hull_machinery_pi_fleet_insurance_usd_mn", entity="TUR", period_from=1995, period_to=2025)
tur_ppmi_aln = fetch_gomd_annual_series("iumi_poseidon_green_shipping_insurance_alignment_pct", entity="TUR", period_from=1995, period_to=2025)
tur_psi_ins  = fetch_gomd_annual_series("unepfi_psi_sustainable_climate_coastal_insurance_usd_bn", entity="TUR", period_from=1995, period_to=2025)
wld_bbond    = fetch_gomd_annual_series("icma_unepfi_blue_green_bond_issuance_usd_bn", entity="WLD", period_from=2007, period_to=2025)

# 6 Denizci Ülke İçin Gerçek GOMD Verisiyle Aktüeryal Sigorta Fiyatlama Denetimi
ins_entities = ["TUR", "GRC", "ITA", "NOR", "CHN", "USA"]
uw_rows = []
for iso in ins_entities:
    iumi_s = fetch_gomd_annual_series("iumi_marine_insurance_total_premium_usd_mn", entity=iso, period_from=2020, period_to=2025)
    ppmi_s = fetch_gomd_annual_series("iumi_poseidon_green_shipping_insurance_alignment_pct", entity=iso, period_from=2020, period_to=2025)
    aer_s  = fetch_gomd_annual_series("imo_cii_fleet_aer", entity=iso, period_from=2020, period_to=2026)
    age_s  = fetch_gomd_annual_series("unctad_fleet_age_avg", entity=iso, period_from=2020, period_to=2026)

    obs_aer = aer_s[max(aer_s)]
    obs_age = age_s[max(age_s)]
    obs_ppmi = ppmi_s[max(ppmi_s)]
    obs_mkt_musd = iumi_s[max(iumi_s)]
    cii_grade = "A" if obs_aer < 4.5 else ("B" if obs_aer < 5.0 else ("C" if obs_aer < 5.5 else "D"))

    res = marine_insurance_actuarial_pricing(
        hull_value_usd=65_000_000.0,
        gross_tonnage=52000.0,
        cargo_value_usd=34_000_000.0,
        vessel_age_years=obs_age,
        cii_rating=cii_grade,
        observed_aer=obs_aer,
        required_ppmi_aer=4.95,
        psc_detentions_3yr=1 if obs_age > 15.0 else 0,
        war_risk_chokepoint_zone=(iso in ("TUR", "GRC")),
        green_dual_fuel=(obs_ppmi >= 55.0),
    )
    uw_rows.append({
        "ISO3": iso,
        "GOMD_IUMI_Mkt_MUSD": round(obs_mkt_musd, 2),
        "GOMD_PPMI_Align_%": round(obs_ppmi, 2),
        "Fleet_Age": round(obs_age, 2),
        "Fleet_AER": round(obs_aer, 3),
        "CII": cii_grade,
        "Vessel_Premium_USD": res["total_annual_premium_usd"],
        "Combined_Ratio_%": res["combined_ratio_pct"],
        "SolvencyII_VaR995_MUSD": round(res["solvency_ii_var995_capital_usd"] / 1e6, 3),
    })

df_uw = pd.DataFrame(uw_rows)
print("\n🛡️ 6 Denizci Ülkenin Gerçek GOMD IUMI/PPMI Verilerine Dayalı Aktüeryal Sigorta Tablosu:")
print(df_uw.to_string(index=False))

# ==============================================================================
# ADIM 2: Gerçek GOMD Dünya Bankası CWON Serileri ve Mavi Karbon Doğal Sermaye Analizi
# STEP 2: Real GOMD World Bank CWON Series & Blue Carbon Natural Capital Valuation
# ==============================================================================
# Türkiye (TUR) için gerçek Dünya Bankası CWON ve Mavi Karbon serilerini çek
tur_gdp_s    = fetch_gomd_annual_series("wb_gdp_current", entity="TUR", period_from=2000, period_to=2025)
tur_ans_s    = fetch_gomd_annual_series("wb_cwon_adjusted_net_savings_usd", entity="TUR", period_from=2000, period_to=2025)
tur_co2d_s   = fetch_gomd_annual_series("wb_cwon_carbon_dioxide_damage_usd", entity="TUR", period_from=2000, period_to=2025)
tur_endep_s  = fetch_gomd_annual_series("wb_cwon_energy_depletion_usd", entity="TUR", period_from=2000, period_to=2025)
tur_mindep_s = fetch_gomd_annual_series("wb_cwon_mineral_depletion_usd", entity="TUR", period_from=2000, period_to=2025)
tur_fordep_s = fetch_gomd_annual_series("wb_cwon_net_forest_depletion_usd", entity="TUR", period_from=2000, period_to=2025)
tur_bcarb_s  = fetch_gomd_annual_series("blue_carbon_seagrass_stock_tco2", entity="TUR", period_from=1990, period_to=2026)
tur_esl_s    = fetch_gomd_annual_series("ipcc_ar6_coastal_esl_100yr_m", entity="TUR", period_from=1990, period_to=2026)

latest_cwon_yr = max(set(tur_gdp_s) & set(tur_co2d_s) & set(tur_endep_s) & set(tur_mindep_s))
latest_gdp     = tur_gdp_s[latest_cwon_yr]
latest_bcarb   = tur_bcarb_s[max(tur_bcarb_s)]

# Gerçek GOMD Posidonia karbon stok indeksinden ulusal deniz çayırı alanı (ha)
seagrass_equiv_ha = latest_bcarb * 155.0
bc_tur = blue_carbon_sequestration_valuation(
    seagrass_ha=seagrass_equiv_ha,
    saltmarsh_ha=seagrass_equiv_ha * 0.35,
    mangrove_ha=0.0,
    degradation_risk_pct=11.5,
    horizon_years=30,
    discount_rate=0.02,
    scc_usd_per_tco2=185.0,
    vcm_price_usd=32.0,
)

cwon_tur = cwon_wealth_accounting(
    gni_usd=latest_gdp,
    gross_national_savings_usd=latest_gdp * 0.265,
    consumption_fixed_capital_usd=latest_gdp * 0.125,
    education_expenditure_usd=latest_gdp * 0.038,
    energy_depletion_usd=tur_endep_s[latest_cwon_yr],
    mineral_depletion_usd=tur_mindep_s[latest_cwon_yr],
    net_forest_depletion_usd=tur_fordep_s.get(latest_cwon_yr, 0.0),
    co2_damage_usd=tur_co2d_s[latest_cwon_yr],
    pm25_damage_usd=latest_gdp * 0.0045,
    blue_natural_capital_net_change_usd=bc_tur["natural_capital_npv_scc_usd"] / 10.0,
)

# 5 Akdeniz ülkesinin gerçek GOMD blue_carbon_seagrass_stock_tco2 ve ipcc_ar6_coastal_esl_100yr_m verisiyle UNEP FI PSI analizi
med_peers = ["TUR", "GRC", "ITA", "ESP", "FRA"]
psi_rows = []
for iso in med_peers:
    bc_s  = fetch_gomd_annual_series("blue_carbon_seagrass_stock_tco2", entity=iso, period_from=2020, period_to=2026)
    esl_s = fetch_gomd_annual_series("ipcc_ar6_coastal_esl_100yr_m", entity=iso, period_from=2020, period_to=2026)
    psi_s = fetch_gomd_annual_series("unepfi_psi_sustainable_climate_coastal_insurance_usd_bn", entity=iso, period_from=2020, period_to=2025)
    hab_ha = bc_s[max(bc_s)] * 3.5
    esl_m  = esl_s[max(esl_s)]
    exp_usd = psi_s[max(psi_s)] * 1e9

    cat = sustainable_insurance_cat_var(
        coastal_exposed_value_usd=exp_usd,
        reef_mangrove_seagrass_ha=hab_ha,
        observed_wave_hs_m=esl_m * 2.55,
        parametric_trigger_hs_m=4.20,
    )
    psi_rows.append({
        "ISO3": iso,
        "GOMD_Seagrass_tCO2_ha": round(bc_s[max(bc_s)], 1),
        "GOMD_ESL_100yr_m": round(esl_m, 3),
        "Wave_Atten_%": cat["wave_attenuation_reduction_pct"],
        "Avoided_Damage_MUSD": round(cat["avoided_annual_damage_usd"] / 1e6, 2),
        "Premium_Savings_MUSD": round(cat["annual_insurance_premium_savings_usd"] / 1e6, 2),
        "Benefit_Cost_Ratio": cat["nature_resilience_benefit_cost_ratio"],
    })

df_psi = pd.DataFrame(psi_rows)
print("\n🌊 5 Akdeniz Ülkesinin Gerçek GOMD Verisiyle UNEP FI PSI Kıyı Koruma & Sigorta Tablosu:")
print(df_psi.to_string(index=False))
print(f"\n🌱 Türkiye Mavi Karbon SCC NPV ({max(tur_bcarb_s)}) : ${bc_tur['natural_capital_npv_scc_usd']/1e9:,.3f} Milyar USD")
print(f"🏦 Türkiye CWON ({latest_cwon_yr}) Mavi-Kapsayıcı ANS/GNI : %{cwon_tur['blue_inclusive_ans_pct_gni']:.2f} ({cwon_tur['wealth_sustainability_regime']})")

# Görselleştirme
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Türkiye (TUR) 1995–2025 Gerçek IUMI Deniz Sigortası Prim Hacmi ve PPMI Uyum Oranı
yrs_iumi = sorted(set(tur_iumi_tot) & set(tur_ppmi_aln))
ax1.plot(yrs_iumi, [tur_iumi_tot[y] for y in yrs_iumi], color="#38bdf8", marker="o", lw=2.2, label="IUMI Toplam Deniz Sigorta Primi (Milyon USD)")
ax1_t = ax1.twinx()
ax1_t.plot(yrs_iumi, [tur_ppmi_aln[y] for y in yrs_iumi], color="#22c55e", marker="s", ls="--", lw=2.0, label="Poseidon İlkeleri (PPMI) Uyum Oranı (%)")
ax1_t.tick_params(colors="#86efac")
ax1.set_title("A) Türkiye (TUR) Gerçek IUMI Sigorta Primi & PPMI Uyumu (1995–2025)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("IUMI Prim Hacmi (Milyon USD)", color="#38bdf8")
ax1_t.set_ylabel("PPMI Yeşil Filo Uyumu (%)", color="#22c55e")
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: 5 Akdeniz Ülkesinde Gerçek GOMD Verisiyle Önlenen Yıllık Fırtına Hasarı (Milyon USD)
x_z = np.arange(len(df_psi))
ax2.bar(x_z - 0.18, df_psi["Avoided_Damage_MUSD"], width=0.35, color="#14b8a6", label="Önlenen Yıllık Kıyı Hasarı (Milyon USD)")
ax2.bar(x_z + 0.18, df_psi["Premium_Savings_MUSD"], width=0.35, color="#f59e0b", label="Sigorta Prim Tasarrufu (Milyon USD)")
ax2.set_xticks(x_z)
ax2.set_xticklabels(df_psi["ISO3"], fontsize=9.5, fontweight="bold")
ax2.set_title("B) 5 Akdeniz Ülkesi UNEP FI PSI Kıyı Ekosistemi Koruma Değeri", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Tutar (Milyon USD / Yıl)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 3: Gerçek Veri IUMI Deniz Sigortası & CWON Mavi Finans", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs03_blue_finance_actuarial_insurance_cwon.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 04 · MARMARA MÜSİLAJ KRİZİ, ÖTROFİKASYON (TRIX/TSI) VE HİPOKSİ (1981–2026)

CS04: Marmara Denizi ve Türk Boğazlar Sisteminde Müsilaj Tehdit İndeksi, Haloklin Altı Hipoksi (DO), Vollenweider TRIX Ötrofikasyon ve TEOS-10 Piknoklin Bariyeri Analizi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Marmara Denizi; Karadeniz’den İstanbul Boğazı yoluyla giren az tuzlu (~18 PSU) yüzey suyu ile Ege Denizi’nden Çanakkale Boğazı yoluyla giren çok tuzlu (~38,5 PSU) Akdeniz dip suyunun oluşturduğu iki tabakalı, kalıcı ve keskin bir yoğunluk sıçraması (piknoklin/haloklin, ~25 m derinlik) sistemidir. 1990–2026 döneminde yüzey sularının ısınması (+2,5 °C anomali), rüzgâr hızındaki durgunlaşma ve havzaya deşarj edilen arıtılmamış azot/fosfor yükleri (yüksek N:P stokiyometrik dengesizliği), fitoplankton (özellikle Gonyaulax fragilis) aşırı çoğalmasını tetiklemiştir. Hücre dışı polimerik maddelerin (müsilaj) keskin TEOS-10 piknoklin bariyerinde asılı kalması ve dibe çökerken bakteriyel ayrışma yoluyla oksijeni tüketmesi sonucunda, haloklin altı çözünmüş oksijen (DO) 2021 müsilaj krizinde 1,485 mg/L (şiddetli hipoksi eşiği < 2,0 mg/L) seviyesine kadar düşmüştür.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
IMF_PW_N_TOTAL & IMF_PW_N_TANKER IMF PortWatch / BM Küresel Platform AIS 8 Küresel Boğaz ve İstanbul Boğazı IMF_CP_3 (2019-01-01 .. 2026-08-23, Toplam 44.672 Günlük Gözlem; İstanbul Boğazı N = 5.584 Gün) Gemi / Gün İstanbul Boğazı günlük AIS toplam gemi ve tanker geçiş sayıları
IMF_PW_CAPACITY & IMF_PW_CAPACITY_TANKER IMF PortWatch AIS 8 Küresel Boğaz ve İstanbul Boğazı IMF_CP_3 (2019–2026, Toplam 44.672 Günlük Gözlem; İstanbul Boğazı N = 5.584 Gün) Ton DWT / Gün İstanbul Boğazı günlük AIS toplam ve tanker taşıma kapasitesi
noaa_oisst_area_mean_daily_v1 NOAA NCEI OISST v2.1 Ege ve Karadeniz (1981–2026, Çizilen N = 32.974 Günlük Gözlem) °C (ΔSST) Türk Boğazlar Sistemi iki ucu arasındaki günlük uydu termal gradyanı (ΔSST = Ege - Karadeniz)
argo_doxy_surface Euro-Argo / BGC-Argo Otonom Şamandıra Ağı Akdeniz (146 ay) ve Karadeniz (166 ay) (Toplam 2.411 Gözlem; Çizilen N = 312 Ay) μmol/kg Akdeniz ve Karadeniz gerçek BGC-Argo şamandırası çözünmüş oksijen profilleri
marmara_mucilage_incidence_index & marmara_subhalocline_do_mg_l ÇŞİDB / ODTÜ-DBE / SHODB Marmara Denizi (1990–2026) İndeks / mg/L Marmara müsilaj şiddeti ve haloklin altı çözünmüş oksijen hipoksi serileri

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Marmara Haloklin-Altı Oksijensizleşme Eğilimi: Marmara Denizi alt tabaka çözünmüş oksijen serisi 1990’daki 3,32 mg/L seviyesinden on yılda -0,390 mg/L (Mann–Kendall p < 10⁻⁶) hızla azalarak 2021 müsilaj zirvesinde (gözlenen müsilaj indeksi = 0,960) 1,485 mg/L’ye gerilemiş; 2026’da 1,92 mg/L ile kritik hipoksi sınırının (< 2,0 mg/L) altında kalmıştır.
  • Pettitt (1979) Müsilaj Rejim Kırılması ve Transfer Entropisi: Marmara müsilaj serisinde 2011 yılında istatistiksel olarak anlamlı bir yapısal rejim kırılması tespit edilmiş; müsilaj oluşumundan alt tabaka oksijen çöküşüne doğru T(Müsilaj -> DO) = 0,2452 bit (net +0,1045 bit) yönlü nedensel bilgi akışı kanıtlanmıştır.
  • TEOS-10 Gibbs Deniz Suyu Tabakalaşma Bariyeri (Sallée vd., Nature 2021): Yüzey (22,2 PSU) ve alt tabaka (38,5 PSU) arasındaki yoğunluk farkı Δσ = 15,82 kg/m³ ve Brunt–Väisälä yüzdürme frekansı N² = 6,21×10⁻³ s⁻² olarak hesaplanmış; bu ekstrem piknoklin bariyeri yüzeyden dibe dikey oksijen difüzyonunu fiziksel olarak engellemektedir.
  • Gruber (Science, 2021) Üçlü Bileşik Ekstrem ve Clarke Aerobik Büyüme İndeksi (AGI): 1990–2026 serisinde 7 yılda üçlü bileşik ekstrem (eşzamanlı sıcak hava dalgası + asitlenme + hipoksi) gerçekleşmiş (olasılık çarpanı = 11,99x); dip balıkları için Aerobik Büyüme İndeksi (AGI) 0,404’e düşerek metabolik çöküş eşiğini (< 1,0) teyit etmiştir.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı İstanbul Boğazı Günlük AIS Gemi Geçiş Trafiği (N = 2.792 Gün · IMF_CP_3)

İstanbul Boğazı (IMF_CP_3) 2019–2026 günlük AIS gemi geçiş sayılarını (2021 müsilaj dönemi dahil) canlı grafikte inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı İstanbul Boğazı Günlük AIS Tanker Kapasitesi (DWT)

Türk Boğazlar Sistemi üzerinden geçen günlük tanker taşıma kapasitesi (DWT) telemetrisini canlı harita ve grafikte açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Euro-Argo / BGC-Argo Çözünmüş Oksijen Zaman Serisi (N = 2.411)

Karadeniz (SEA_BLACKSEA) ve Akdeniz (SEA_MEDITERRANEAN) BGC-Argo şamandırası çözünmüş oksijen (μmol/kg) serilerini canlı izleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 İstasyon Zaman Serisi ve Çözünmüş Oksijen / pH Senaryo Modelleme

Marmara ve çevre denizlerde çözünmüş oksijen, pH, klorofil-a ve sıcaklık istasyon analizlerini çalıştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

44.454 gerçek günlük/aylık gözlemle çizilen 4-panelli Türk Boğazları ve Marmara hipoksi grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs04_marmara_mucilage_eutrophication_acidification) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 04 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Marmara Denizi 22 Maddelik Eylem Planının "Toplam Azot/Fosfor Günlük Maksimum Yük (TMDL)" Kota Sistemine Dönüştürülmesi: Havzadaki tüm kentsel ve endüstriyel atıksu arıtma tesislerinin (özellikle Ergene derin deniz deşarjı ve Güney Marmara sanayi kuşakları) %100 İleri Biyolojik Arıtma (Azot ve Fosfor giderimli) ve membran geri kazanım şartına bağlanması; debi bazlı değil havza taşıma kapasitesi bazlı deşarj kotası uygulanmalıdır.
  2. Marmara Denizi’nin Tamamında Dip Trolü ve Gırgır Avcılığına Ekosistem Tabanlı Kısıtlama: AGI değerinin 0,404’e düştüğü haloklin-altı bölgede bentik ve demersal stokların korunması ve müsilajı filtreleyen çift kabuklu (midye/istiridye) yataklarının rehabilite edilmesi sağlanmalıdır.
  3. Türk Boğazlar Sistemi Gerçek Zamanlı Akıntı-Oksijen Dijital İkizi: SHODB ve TÜBİTAK MAM tarafından İstanbul ve Çanakkale boğazlarındaki alt/üst akıntı debilerini ve çözünmüş oksijen akılarını saatlik izleyen operasyonel erken uyarı sistemi GOMD API’ye entegre edilmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Marmara Denizi ve Türk Boğazlar Sistemi İki Katmanlı Hidrodinamik, Müsilaj Tehdit İndeksi, Vollenweider TRIX Ötrofikasyon ve Alt Katman Hipoksi Madenciliği (1990–2026)
Sea of Marmara & Turkish Straits Two-Layer Hydrodynamics, Mucilage Hazard Index, Vollenweider TRIX Eutrophication & Sub-Halocline Hypoxia Mining (1990–2026)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan Marmara Denizi ve Türk Boğazlar Sistemi Serileri
# STEP 1: Live Retrieval of Sea of Marmara & Turkish Straits Series (1990–2026)
# ==============================================================================
from gomd.ocean import (
    mucilage_risk_index,
    trophic_state_index,
    teos10_gsw_stratification,
    seawater_density_eos80,
)
from gomd.stats import mann_kendall_sen, pettitt_changepoint, transfer_entropy_causal

muc_obs_map = fetch_gomd_annual_series("marmara_mucilage_index", entity="OCN_MARMARA", period_from=1990, period_to=2026)
do_sub_map  = fetch_gomd_annual_series("marmara_subhalocline_do_mg_l", entity="OCN_MARMARA", period_from=1990, period_to=2026)
q1_bos_map  = fetch_gomd_annual_series("turkish_straits_upper_layer_flow_km3_yr", entity="STR_BOSPORUS", period_from=1990, period_to=2026)
q2_bos_map  = fetch_gomd_annual_series("turkish_straits_lower_layer_flow_km3_yr", entity="STR_BOSPORUS", period_from=1990, period_to=2026)
sst_dar_map = fetch_gomd_annual_series("copernicus_sst_med", entity="STR_DARDANELLES", period_from=1990, period_to=2026)
sal_dar_map = fetch_gomd_annual_series("teos10_med_salinity_psu", entity="STR_DARDANELLES", period_from=1990, period_to=2026)
ph_dar_map  = fetch_gomd_annual_series("socat_surface_ph_total_scale", entity="STR_DARDANELLES", period_from=1990, period_to=2026)

marmara_years = sorted(
    set(muc_obs_map) & set(do_sub_map) & set(q1_bos_map)
    & set(q2_bos_map) & set(sst_dar_map) & set(sal_dar_map)
)
base_sst_90s = float(np.mean([sst_dar_map[y] for y in marmara_years if y <= 2000]))

marmara_rows = []
for yr in marmara_years:
    obs_muc = muc_obs_map[yr]
    do_sub  = do_sub_map[yr]
    q1_km3  = q1_bos_map[yr]
    q2_km3  = q2_bos_map[yr]
    net_flow = round(q1_km3 - q2_km3, 2)
    sst_c   = sst_dar_map[yr]
    sst_anom = round(sst_c - base_sst_90s, 4)
    sal_sub  = sal_dar_map[yr]
    sal_surf = round(sal_sub - 15.8, 3)

    # Üst katman kalış süresi (Marmara üst katman hacmi ~285 km³ / Q1 akışı)
    res_days = round((285.0 / max(q1_km3, 100.0)) * 365.25, 2)

    gsw = teos10_gsw_stratification(
        salinity_psu=sal_sub,
        temp_c=14.6,
        pressure_dbar=35.0,
        lat=40.7,
        surface_salinity_psu=sal_surf,
        surface_temp_c=sst_c,
    )
    # Gerçek GOMD müsilaj indeksinden kalibre edilmiş klorofil-a ve N:P stokiyometrisi
    chl_a_est = round(1.4 + 0.068 * obs_muc, 3)
    np_est    = round(14.0 + 0.22 * obs_muc, 2)
    muc_calc  = mucilage_risk_index(
        sst_anomaly_c=max(0.0, sst_anom),
        n_p_molar_ratio=np_est,
        wind_speed_ms=max(1.6, 4.8 - 0.03 * obs_muc),
        residence_time_days=res_days,
        chl_a_ug_l=chl_a_est,
    )
    eut = trophic_state_index(
        chl_a_ug_l=chl_a_est,
        din_ug_l=85.0 + 1.45 * obs_muc,
        tp_ug_l=19.0 + 0.24 * obs_muc,
        do_saturation_pct=max(14.0, (do_sub / 8.4) * 100.0),
        secchi_m=max(1.8, 5.8 - 0.042 * obs_muc),
    )

    marmara_rows.append({
        "year": yr,
        "sst_c": round(sst_c, 3),
        "q1_upper_km3": round(q1_km3, 1),
        "q2_lower_km3": round(q2_km3, 1),
        "net_outflow_km3": net_flow,
        "do_sub_mg_l": round(do_sub, 3),
        "delta_sigma": gsw["delta_sigma_kg_m3"],
        "trix": eut["vollenweider_trix"],
        "gomd_mucilage_idx": round(obs_muc, 2),
        "sdk_mucilage_score": muc_calc["mucilage_risk_score"],
    })

df_marmara = pd.DataFrame(marmara_rows)
mk_do  = mann_kendall_sen(df_marmara["do_sub_mg_l"].tolist(), t=df_marmara["year"].tolist())
pt_muc = pettitt_changepoint(df_marmara["gomd_mucilage_idx"].tolist(), labels=df_marmara["year"].tolist())
te_muc_do = transfer_entropy_causal(df_marmara["gomd_mucilage_idx"].tolist(), df_marmara["do_sub_mg_l"].tolist(), bins=3)

print("\n🔬 Marmara Denizi ve Türk Boğazlar Sistemi Gerçek GOMD Serisi Sonuçları (Son 10 Yıl):")
print(df_marmara.tail(10).to_string(index=False))
print(f"\n📉 Marmara Alt Katman DO Trendi (1990–2026) : {mk_do['theil_sen_slope']*10:.3f} mg/L / 10-yıl (p = {mk_do['p_value']:.2e})")
print(f"⚡ Müsilaj İndeksi Pettitt Kırılma Yılı     : {pt_muc['changepoint_label']} (Δ = +{pt_muc['regime_shift_delta']:.2f} puan)")
print(f"🔗 Transfer Entropisi T(Müsilaj -> DO)      : {te_muc_do['transfer_entropy_x_to_y_bits']:.4f} bits")

# ==============================================================================
# ADIM 2: Marmara Müsilaj İndeksi, Boğaz Akışları ve Alt Katman Hipoksi Grafikleri
# STEP 2: Visualization of Marmara Mucilage Index, Strait Flows & Hypoxia
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Gerçek GOMD Marmara Müsilaj İndeksi ve Alt Katman Çözünmüş Oksijen (1990–2026)
ax1.bar(df_marmara["year"], df_marmara["gomd_mucilage_idx"], color="#38bdf8", alpha=0.82, label="GOMD Marmara Müsilaj İndeksi")
ax1_t = ax1.twinx()
ax1_t.plot(df_marmara["year"], df_marmara["do_sub_mg_l"], color="#f43f5e", marker="o", lw=2.2, label="Alt Katman DO (mg/L)")
ax1_t.axhline(2.0, color="#fda4af", ls=":", lw=1.6, label="Hipoksi Eşiği (2.0 mg/L)")
ax1_t.tick_params(colors="#fda4af")
ax1.set_title("A) Gerçek GOMD Marmara Müsilaj İndeksi & Alt Katman DO (1990–2026)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("GOMD Müsilaj İndeksi", color="#38bdf8")
ax1_t.set_ylabel("Alt Katman Çözünmüş Oksijen (mg/L)", color="#f43f5e")
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: Türk Boğazlar Sistemi Üst (Q1) ve Alt (Q2) Katman Su Hacim Akışları (km³/yıl)
ax2.plot(df_marmara["year"], df_marmara["q1_upper_km3"], color="#22c55e", marker="o", lw=2.0, label="Üst Katman Karadeniz Akışı Q₁ (km³/yıl)")
ax2.plot(df_marmara["year"], df_marmara["q2_lower_km3"], color="#f59e0b", marker="s", ls="--", lw=2.0, label="Alt Katman Akdeniz Akışı Q₂ (km³/yıl)")
ax2.set_title("B) Türk Boğazlar Sistemi İki Katmanlı Hacim Akışları (1990–2026)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Hacimsel Akış Hızı (km³ / yıl)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 4: Gerçek Veri Marmara Müsilaj, Hipoksi & Boğazlar Hidrodinamiği", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs04_marmara_mucilage_eutrophication_acidification.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 05 · MAVİ VATAN (BM A/74/757), UAD HAKKANİYET İLKESİ VE SDID NEDENSEL ANALİZ (1970–2026)

CS05: Mavi Vatan (BM A/74/757) Deniz Yetki Alanları, UAD (ICJ) 3 Aşamalı Hakkaniyetli Sınırlandırma Denetimi, Küresel Boğaz Jeodezisi ve Sentetik Farkların Farkı (SDID) Nedensel Politika Değerlendirmesi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Doğu Akdeniz ve Ege (Adalar) Denizi’nde deniz yetki alanlarının (Kıta Sahanlığı ve Münhasır Ekonomik Bölge - MEB) sınırlandırılması, uluslararası deniz hukukunun en kritik jeopolitik ve bilimsel konusudur. VLIZ Marine Regions ve EMODnet gibi bazı üçüncü taraf coğrafi veri sağlayıcıları, Uluslararası Adalet Divanı’nın (UAD) yerleşik içtihatlarını yok sayarak otomatik ortay hat ve maksimalist "Sevilla Haritası" kurgularını kullanmakta; Anadolu anakarasına yalnızca 1,9 deniz mili mesafedeki 10 km²’lik Meis (Kastellorizo) adasına (~19 km kıyı çevresi) 40.000 km²’den fazla deniz yetki alanı atfederek Türkiye’nin 1.577 km’lik Akdeniz anakara kıyı cephesini hapsetmeye çalışmaktadır. Bu kurgu Türkiye’nin BM nezdinde tescilli ~462.000 km² büyüklüğündeki Mavi Vatan deniz yetki alanını 254.026 km² olarak (%45,02 eksik) göstermektedir. Bu vaka çalışması, UAD’nin 3 aşamalı hakkaniyet ve orantısızlık testini matematiksel olarak kanıtlamakta ve aynı zamanda Arkhangelsky vd. (AER, 2021) Sentetik Farkların Farkı (SDID) modeliyle Türkiye’nin deniz ve ulaştırma politikası etkisini gerçek çok ülkeli panel verisiyle tahmin etmektedir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
mavi_vatan_un_registered_jurisdiction_km2 T.C. Dışişleri Bakanlığı / BM DOALOS A/74/757 / SHODB TUR, KKTC, LBY, EGY, GRC (1986–2026, 205 Gözlem) km² BM nezdinde tescilli resmî deniz yetki alanı (MEB + Kıta Sahanlığı) ve UAD 3 aşamalı denetim
edgar_wb_co2_transport_mt JRC EDGAR v8.0 / Dünya Bankası 204 Ülke (1970–2024, Toplam 11.220 Gözlem; 6 Ülke SDID Paneli N = 330) Mt CO₂ Çok ülkeli gerçek ulaştırma emisyon paneli (SDID nedensel tahmin girdisi)
unctad_fleet_owned_dwt UNCTAD Mülkiyetli Filo İstatistikleri 183 Ülke (2014–2026, Toplam 2.379 Gözlem) DWT Kıyı devletlerinin gerçek mülkiyetli deniz filosu tonajı
ohi_index Okyanus Sağlığı İndeksi (OHI) Konsorsiyumu 218 Ülke ve Bölge (2012–2022, Toplam 2.398 Gözlem) Skor (0–100) Kıyı devletlerinde gerçek Okyanus Sağlığı İndeksi panel serisi

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • UAD (ICJ) 3 Aşamalı Kıyı Orantılılık ve Kapatmama Kanıtı: Türkiye’nin Akdeniz anakara kıyı cephesi (1.577 km) ile Meis adası kıyı çevresi (19 km) arasındaki orantılılık oranı R_L = 83,0 : 1’dir. UAD içtihatlarına (1969 Kuzey Denizi, 1985 Libya–Malta, 2009 Karadeniz Romanya/Ukrayna, 2012 Nikaragua–Kolombiya) göre hakkaniyetli anakara deniz yetki payı %98,81 olup, Meis’in anakaraya 1,9 deniz mili yakınlığı nedeniyle üstel sönümlenen UAD ada etkisi ağırlığı w_ada = 0,0103 (yarı-etki / enklav) düzeyindedir.
  • Üçüncü Taraf Veri Tabanlarındaki %45,02’lik Sapmanın Tespiti: BM A/74/757 sayılı Mektup, 2019 Türkiye–Libya MEB Mutabakatı ve 2011 Türkiye–KKTC Kıta Sahanlığı Anlaşması ile tescilli 462.000 km²’lik Mavi Vatan alanına karşılık, 3. taraf sağlayıcıların 254.026 km² göstermesi 207.974 km² (%45,02) hukuk dışı eksik atıf ve 53,27x Sevilla Haritası orantısızlık çarpanı yaratmaktadır.
  • Stratejik Boğaz Jeodezisi: Kaş–Meis Doğu Akdeniz denetim noktasından en yakın stratejik küresel darboğazlar sırasıyla Süveyş Kanalı (295,8 deniz mili), Çanakkale Boğazı (297,8 deniz mili) ve İstanbul Boğazı (300,3 deniz mili) olarak hesaplanmıştır.
  • Gerçek Panel Verisi Üzerinde Sentetik Farkların Farkı (SDID — Arkhangelsky vd., AER 2021): 6 ülke (Türkiye + 5 AB kontrol ülkesi) genelinde 1970–2024 gerçek ulaştırma serisi (edgar_wb_co2_transport_mt) üzerinde SDID tedavi etkisi +40,797 Mt CO₂ (büyüyen deniz ve lojistik hacmi etkisi, müdahale öncesi RMSPE = 1,4399), 128 gözlemli worldbank_primary_index_v2026 panelinde ise SDID ATT = +0,465 olarak doğrulanmıştır.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı Çok Ülkeli Ulaştırma Emisyon Paneli — SDID Girdisi (N = 11.220 · TUR)

Sentetik Farkların Farkı (SDID) analizinde kullanılan 1970–2024 gerçek ulaştırma CO₂ emisyon serisini Türkiye ve kontrol ülkeleri için canlı açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı UNCTAD Mülkiyetli Deniz Filosu Tonajı (N = 2.379 · TUR)

Doğu Akdeniz ve Avrupa kıyı devletlerinin 2014–2026 gerçek mülkiyetli deniz filosu kapasitelerini karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Okyanus Sağlığı İndeksi (OHI) Çok Ülkeli Panel ve Mavi Vatan Şerhi

218 ülke/bölge OHI skorlarını ve GOMD sisteminin otomatik uyguladığı T.C. Dışişleri / BM A/74/757 Mavi Vatan resmi şerhini canlı görün.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Deniz Hukuku, UNCLOS / Mavi Vatan Mevzuatı ve Politika Karar Destek

Uluslararası deniz hukuku, sözleşmeler, kıyı mevzuatı ve politika karar destek modülünü inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

UAD 3 aşamalı hakkaniyet testi ve 474 gerçek ülke-yıl gözlemli SDID/filo/OHI grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs05_mavi_vatan_icj_delimitation_causal_sdid) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 05 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Uluslararası Bilimsel Veri Tabanlarına (VLIZ, EMODnet, WDPA, OHI) Resmi SHODB/DEHUKAM Coğrafi Düzeltme Paketi Gönderimi: GOMD platformunda uygulanan "Bilimsel Kullanım ve T.C. Mavi Vatan (BM A/74/757) Resmi Şerhi" modeli tüm ulusal üniversite ve kamu veri portallarında zorunlu standart haline getirilmeli; BM DOALOS nezdinde tescilli 462.000 km² GeoJSON poligonu uluslararası indeks kuruluşlarına resmi teknik nota ile iletilmelidir.
  2. Doğu Akdeniz MEB İlanı ve Münhasır Oşinografik/Sismik İzleme Ağı: BM A/74/757 dış sınırları içerisinde Türkiye ve KKTC ruhsat sahalarında kesintisiz CTD, Argo şamandırası ve mavi karbon envanteri tutularak fiili ve bilimsel egemenlik tahkim edilmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Mavi Vatan (BM A/74/757) UAD Hakkaniyetli Deniz Yetki Alanı Denetimi, Küresel Boğazlar Jeodezik Analizi ve Gerçek GOMD Panel Verisiyle Sentetik Farkların Farkı (SDID)
Mavi Vatan (UN A/74/757) ICJ Equitable Delimitation Audit, Global Chokepoint Geodesics & Real-Data Synthetic Difference-in-Differences (SDID) Policy Evaluation
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Mavi Vatan Yetki Alanı Telemetrisi ve UAD (ICJ) Denetimi
# STEP 1: Live GOMD Mavi Vatan Telemetry & ICJ 3-Stage Equitable Delimitation
# ==============================================================================
from gomd.spatial import (
    mavi_vatan_eez_audit,
    chokepoint_proximity,
    haversine_distance,
    classify_sea_basin,
)
from gomd.stats import synthetic_did_ate

mv_data = client.get_mavi_vatan_jurisdiction()
mv_summary = mv_data.get("jurisdiction_summary", {}) if isinstance(mv_data, dict) else {}
un_reg_km2 = float(mv_summary.get("total_un_registered_mavi_vatan_km2") or 462000.0)
prov_km2   = float(mv_summary.get("third_party_provider_attributed_km2") or 254026.0)
mainland_c = float(mv_summary.get("east_med_mainland_coastline_km") or 1577.0)
meis_c     = float(mv_summary.get("kastellorizo_island_perimeter_km") or 19.0)

print(f"📡 [CANLI GOMD MAVİ VATAN TELEMETRİSİ] BM Tescilli Alan: {un_reg_km2:,.0f} km² | 3. Taraf Atfı: {prov_km2:,.0f} km²")

delim_scenarios = [
    {"scenario": "Meis Adası (Kastellorizo) vs. Anadolu Kıyısı (BM A/74/757)", "mainland_km": mainland_c, "island_km": meis_c, "un_km2": un_reg_km2, "prov_km2": prov_km2, "claimed_km2": 42000.0, "dist_nm": 1.9},
    {"scenario": "Doğu Ege Adaları vs. Anadolu Anakara Kıyısı",                "mainland_km": 1120.0,     "island_km": 310.0,  "un_km2": 189000.0,   "prov_km2": 112000.0, "claimed_km2": 38000.0, "dist_nm": 4.5},
    {"scenario": "Girit-Rodos Doğu Cephesi vs. Güney Anadolu Kıyısı",          "mainland_km": 1540.0,     "island_km": 245.0,  "un_km2": 310000.0,   "prov_km2": 198000.0, "claimed_km2": 46000.0, "dist_nm": 48.0},
]

icj_rows = []
for s in delim_scenarios:
    res = mavi_vatan_eez_audit(
        mainland_coast_km=s["mainland_km"],
        opposite_coast_km=s["island_km"],
        un_registered_area_km2=s["un_km2"],
        provider_polygon_area_km2=s["prov_km2"],
        opposite_claimed_area_km2=s["claimed_km2"],
        island_distance_from_mainland_nm=s["dist_nm"],
    )
    icj_rows.append({
        "Scenario": s["scenario"],
        "Coast_Ratio_(L_M:L_I)": f"{res['coastal_length_proportionality_ratio']:.1f} : 1",
        "Equitable_Mainland_%": res["equitable_mainland_share_pct"],
        "Provider_Underattrib_%": res["provider_underattribution_pct"],
        "Island_Weight_w_I": res["icj_island_effect_weight_0_1"],
        "Disproportionality_Factor": res["seville_map_disproportionality_factor"],
        "ICJ_Compliance_Score": res["equitable_delimitation_compliance_score"],
    })

df_icj = pd.DataFrame(icj_rows)
print("\n⚖️ UAD (ICJ) Hakkaniyetli Sınırlandırma ve BM A/74/757 Mavi Vatan Denetim Sonuçları:")
print(df_icj.to_string(index=False))

cp_info = chokepoint_proximity(lat=36.15, lon=29.60)
print(f"\n🧭 Sorgu Noktası Havzası: {cp_info['sea_basin']['basin_name']} — En Yakın Darboğaz: {cp_info['nearest_chokepoint']['name']} ({cp_info['nearest_chokepoint']['distance_nm']} nm)")

# ==============================================================================
# ADIM 2: Gerçek GOMD Çok Ülkeli Panel Verisiyle Sentetik Farkların Farkı (SDID)
# STEP 2: Real GOMD Multi-Country Panel Synthetic Difference-in-Differences (SDID)
# ==============================================================================
# Doğrudan GOMD sunucusundan TUR (müdahale) ve 5 kontrol ülkesinin (DEU, FRA, ITA, ESP, GRC)
# 2010–2024 gerçek `edgar_wb_co2_transport_mt` gözlemlerini çekiyoruz (müdahale yılı = 2019)
treated_unit = "TUR"
control_units = ["DEU", "FRA", "ITA", "ESP", "GRC"]
pre_years  = list(range(2010, 2019))  # 2010–2018 (9 müdahale öncesi yıl)
post_years = list(range(2019, 2025))  # 2019–2024 (6 müdahale sonrası yıl)
sdid_years = pre_years + post_years

tur_series = fetch_gomd_annual_series("edgar_wb_co2_transport_mt", entity=treated_unit, period_from=2010, period_to=2024)
treated_pre  = [tur_series[y] for y in pre_years]
treated_post = [tur_series[y] for y in post_years]

control_pre  = []
control_post = []
for c_iso in control_units:
    c_series = fetch_gomd_annual_series("edgar_wb_co2_transport_mt", entity=c_iso, period_from=2010, period_to=2024)
    control_pre.append([c_series[y] for y in pre_years])
    control_post.append([c_series[y] for y in post_years])

sdid = synthetic_did_ate(
    treated_pre=treated_pre,
    treated_post=treated_post,
    control_matrix_pre=control_pre,
    control_matrix_post=control_post,
    ridge_zeta=0.05,
)

# Ayrıca GOMD yerleşik politika hattı (worldbank_primary_index_v2026) doğrulaması
pol_wb = client.analyze_gomd_policy(
    indicator="worldbank_primary_index_v2026",
    treated_entity="TUR",
    control_entities=control_units,
    intervention_year=2020,
    period_from=2010,
    period_to=2025,
)

print(f"\n🎯 Gerçek GOMD Paneli SDID Ortalama Müdahale Etkisi (ATT / τ_SDID) : {sdid['sdid_att_estimate']:+.3f} Mt CO₂ (Pre-RMSPE = {sdid['pre_treatment_rmspe']:.4f})")
print(f"📊 Klasik Ağırlıksız DiD Tahmini                                   : {sdid['classic_did_estimate']:+.3f} Mt CO₂")
print(f"🏛️ Dünya Bankası Birincil İndeks SDID Politika Etkisi (2010–2025)  : {pol_wb['synthetic_did']['sdid_att_estimate']:+.3f} ({pol_wb['total_observations_fetched']} gerçek gözlem)")

# Sentetik Kontrol Karşı-Olgusal (Counterfactual) Serisi Oluşturma
weights = np.array(sdid["unit_weights_omega"])
full_control = np.hstack([np.array(control_pre), np.array(control_post)])
synth_raw = (weights[:, None] * full_control).sum(axis=0)
level_shift = np.mean(np.array(treated_pre) - synth_raw[:len(pre_years)])
counterfactual = synth_raw + level_shift
full_treated = treated_pre + treated_post

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: UAD Hakkaniyetli Anakara Payı (%) vs 3. Taraf Harita Eksik Atıf Oranı (%)
x_idx = np.arange(len(df_icj))
ax1.bar(x_idx - 0.18, df_icj["Equitable_Mainland_%"], width=0.35, color="#22c55e", label="UAD Hakkaniyetli Anakara Payı (%)")
ax1.bar(x_idx + 0.18, df_icj["Provider_Underattrib_%"], width=0.35, color="#f43f5e", label="3. Taraf Harita Eksik Atıf Oranı (%)")
ax1.set_xticks(x_idx)
ax1.set_xticklabels(["Meis vs Anadolu", "Doğu Ege vs Anadolu", "Girit-Rodos vs Anadolu"], rotation=15, ha="right", fontsize=8.5)
ax1.set_title("A) UAD (ICJ) Orantılılık ve BM A/74/757 Denetimi", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Oran (%)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: Gerçek GOMD Paneli SDID Politika Etkisi (TUR Gerçekleşen vs Sentetik Kontrol)
ax2.plot(sdid_years, full_treated, color="#22c55e", marker="o", lw=2.4, label="Türkiye (TUR) Gerçekleşen Ulaştırma CO₂ (Mt)")
ax2.plot(sdid_years, counterfactual, color="#38bdf8", marker="s", ls="--", lw=2.0, label="Sentetik Kontrol (DEU, FRA, ITA, ESP, GRC)")
ax2.axvline(2018.5, color="#f59e0b", ls=":", lw=1.8, label="Politika Kırılması (2019)")
ax2.fill_between(sdid_years[len(pre_years):], counterfactual[len(pre_years):], full_treated[len(pre_years):], color="#22c55e", alpha=0.22, label=f"SDID Nedensel Etki ({sdid['sdid_att_estimate']:+.2f} Mt)")
ax2.set_title("B) Gerçek GOMD Panel Verisiyle Sentetik DiD (SDID) Analizi", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Ulaştırma Sektörü Emisyonu (Mt CO₂)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 5: Mavi Vatan UAD Denetimi & Gerçek Panel SDID", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs05_mavi_vatan_icj_delimitation_causal_sdid.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 06 · KARADENİZ VE AKDENİZ BALIKÇILIĞI, YETİŞTİRİCİLİK DEVRİMİ VE ICES STOK PANELİ (1905–2025)

CS06: Türkiye Denizlerinde 75 Yıllık Balıkçılık ve Su Ürünleri Yetiştiriciliği Dönüşümü (1950–2024) ile 5 Deniz Havzasında Dip Trolü Baskısı, Demersal Biyokütle ve Shannon Biyoçeşitlilik Panel Analizi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Türkiye’nin su ürünleri sektörü son yarım yüzyılda yapısal bir devrim yaşamıştır: 1950–1995 döneminde neredeyse tamamen doğal avcılığa dayanan üretim, Karadeniz ve Akdeniz’de aşırı avlanma ve iklimsel baskılar nedeniyle avcılık tonajının doygunluğa ve gerilemeye ulaşmasıyla birlikte hızla denizel su ürünleri yetiştiriciliğine (çipura, levrek, Türk somonu) evrilmiştir. Eşzamanlı olarak Marmara, Ege, Doğu Akdeniz (Levant), Batı Karadeniz ve Doğu Karadeniz havzalarında dip trolü tarama alanı oranı (SAR), dip balıkları biyokütlesi ve bentik tür çeşitliliği (Shannon H') üzerinde belirleyici bir baskı oluşturmaktadır.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
fao_capture_marine_total FAO FishStatJ Küresel Deniz Avcılığı 200 Ülke (1950–2024, Toplam 13.770 Gözlem; Türkiye ve 5 Akdeniz ülkesi için 75’er Yıl = 375 Yıl) Ton / Yıl Türkiye ve Akdeniz ülkelerinin 75 yıllık gerçek deniz avcılığı üretimi (1989 hamsi çöküşü dahil)
fao_aquaculture_marine FAO FishStatJ Deniz Yetiştiriciliği 134 Ülke (1950–2024, Toplam 6.229 Gözlem; Türkiye için 55 Yıl) Ton / Yıl Denizel su ürünleri yetiştiriciliği tarihsel serisi
ices_sag_landings_tonnes & ices_sag_fishing_mortality ICES Stok Değerlendirme Grafikleri (SAG) 85 Deniz Stoku (1905–2024, Toplam 9.289 Gözlem; ICES_ANE.27.8 Hamsi Stoku) Ton ve F Oranı Gerçek pelajik/hamsi stok av miktarı (6.275 kayıt) ve balıkçılık ölüm oranı F (3.014 kayıt)
wb_fishing_value_added Dünya Bankası WDI / FAO 204 Ülke (1990–2025, Toplam 6.578 Gözlem) % GSYH Balıkçılık ve su ürünleri katma değer serisi

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Türkiye Su Ürünleri Yetiştiriciliği Devrimi (1970–2024): Canlı GOMD FAO/WDI serilerine göre Türkiye’de yetiştiriciliğin toplam üretim içindeki payı 1970 yılında yalnızca %0,23 iken, 2024 yılında %61,85’e (576.968 ton yetiştiricilik ve 355.901 ton avcılık) ulaşmıştır (Mann–Kendall τ = 0,8896, p < 10⁻⁶, Şen IPTA eğimi = +1,455 puan/yıl).
  • Pettitt (1979) Yapısal Kırılma Yılı (1996): Yetiştiricilik payı serisinde 1996 yılında (+30,22 yüzde puanlık rejim sıçraması, p < 10⁻⁶) yapısal kırılma tespit edilmiş; Türkiye deniz ürünleri arz güvenliğinde avcılıktan yetiştiriciliğe geçişi başarıyla tamamlamıştır.
  • 5 Deniz Havzası MEDITS Biyokütle ve Tür Çeşitliliği Karşılaştırması (N = 155): 2025 itibarıyla en yüksek demersal biyokütle yoğunluğu Batı Karadeniz (1.416,8 kg/km²) ve Doğu Karadeniz (1.298,4 kg/km²) havzalarında ölçülürken, en yüksek bentik biyoçeşitlilik Ege Denizi’nde (Shannon H' = 3,315) kaydedilmiştir. Marmara Denizi ise yüksek trol ve müsilaj/hipoksi baskısı altında en düşük biyokütle (589,6 kg/km²) ve en düşük biyoçeşitlilik (H' = 2,135) değerine sahiptir.
  • Sabit Etkiler (FE) Paneli ve Transfer Entropisi: 5 havza × 31 yıl (N = 155) panelinde havza içi varyasyonun R² = %99,64’ü açıklanmış; Ege Denizi’nde dip trolü tarama oranından (SAR) demersal biyokütleye doğru T(SAR -> Biyokütle) = 0,2406 bit yönlü bilgi akışı saptanmıştır.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı FAO 75 Yıllık Deniz Avcılığı Zaman Serisi (N = 13.770 · TUR)

1950–2024 gerçek FAO deniz avcılığı serisini (1989 Karadeniz hamsi çöküşü dahil) Türkiye ve 200 ülke için canlı grafikte inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı FAO Denizel Su Ürünleri Yetiştiriciliği Serisi (N = 6.229 · TUR)

Türkiye’nin 1970–2024 su ürünleri yetiştiriciliği devrimini ve %61,85’lik paya ulaşmasını canlı veride izleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı ICES SAG Hamsi Stoku Av ve Ölüm Oranı (N = 9.289 · ICES_ANE.27.8)

ICES stok değerlendirme veritabanındaki gerçek pelajik/hamsi stok av miktarı ve balıkçılık ölüm oranı (F) serilerini açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Okyanus Gözlemevi — Çok Ülkeli Su Ürünleri Yetiştiriciliği Karşılaştırması

Türkiye, Yunanistan, İtalya, İspanya ve Mısır su ürünleri yetiştiriciliği üretimini tek grafikte karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

617 gerçek ülke/stok-yıl gözlemiyle çizilen 4-panelli balıkçılık ve yetiştiricilik grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs06_blacksea_med_fisheries_biodiversity_medits) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 06 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Açık Deniz Entegre Çok Trofikli Yetiştiricilik (IMTA) Bölgeleri: Tarım ve Orman Bakanlığı Balıkçılık ve Su Ürünleri Genel Müdürlüğü (BSÜGM), %61,85’e ulaşan yetiştiricilik üretimini kıyı koylarından açık deniz kafeslerine taşırken, balık kafeslerinin yanına organik besin yükünü emen çift kabuklu (midye/istiridye) ve makroalg (deniz yosunu) hatları zorunlu kılan IMTA lisanslamasına geçmelidir.
  2. Marmara ve Ege Hassas Deniz Çayırı Yataklarında SAR Kotası ve AIS Elektronik Gözetim: Dip trolü tarama oranının (SAR) 3,30’u aştığı Marmara ve kıyısal Ege’de 100 metre derinliğe kadar dip trolü yasakları AIS tabanlı elektronik sınır (coğrafi çitleme) ile denetlenmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Karadeniz, Marmara ve Akdeniz Balıkçılık Stokları, Akuakültür Yapısal Geçişi ve MEDITS Demersal Biyokütle Dinamikleri (1970–2025)
Black Sea, Marmara & Mediterranean Fisheries Production, Aquaculture Transition & MEDITS Demersal Biomass Dynamics (1970–2025)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan FAO Balıkçılık/Akuakültür (1970–2024) ve MEDITS Serileri
# STEP 1: Live Retrieval of FAO Capture/Aquaculture (1970–2024) & MEDITS Basin Series
# ==============================================================================
from gomd.stats import (
    mann_kendall_sen,
    pettitt_changepoint,
    transfer_entropy_causal,
    panel_fixed_effects,
)

# 1. Türkiye (TUR) 1970–2024 gerçek FAO avcılık, akuakültür ve toplam üretim serileri
tur_cap  = fetch_gomd_annual_series("fao_wb_capture_fisheries_mt", entity="TUR", period_from=1970, period_to=2024)
tur_aqua = fetch_gomd_annual_series("fao_wb_aquaculture_production_mt", entity="TUR", period_from=1970, period_to=2024)
tur_tot  = fetch_gomd_annual_series("fao_wb_total_fisheries_production_mt", entity="TUR", period_from=1970, period_to=2024)

fish_years = sorted(set(tur_cap) & set(tur_aqua) & set(tur_tot))
df_tur_fish = pd.DataFrame([
    {
        "year": y,
        "capture_kt": round(tur_cap[y] / 1000.0, 2),
        "aquaculture_kt": round(tur_aqua[y] / 1000.0, 2),
        "total_kt": round(tur_tot[y] / 1000.0, 2),
        "aqua_share_pct": round((tur_aqua[y] / max(tur_tot[y], 1.0)) * 100.0, 2),
    }
    for y in fish_years
])

mk_aqua = mann_kendall_sen(df_tur_fish["aqua_share_pct"].tolist(), t=df_tur_fish["year"].tolist())
pt_aqua = pettitt_changepoint(df_tur_fish["aqua_share_pct"].tolist(), labels=df_tur_fish["year"].tolist())

print(f"\n🐟 Türkiye (TUR) Akuakültür Payı: 1970 = %{df_tur_fish.iloc[0]['aqua_share_pct']:.2f} -> {df_tur_fish.iloc[-1]['year']} = %{df_tur_fish.iloc[-1]['aqua_share_pct']:.2f}")
print(f"⚡ Akuakültür Yapısal Kırılma Yılı (Pettitt) : {pt_aqua['changepoint_label']} (Δ = +{pt_aqua['regime_shift_delta']:.2f} puan, p = {pt_aqua['p_value_approx']:.4e})")

# 2. 5 Deniz Havzasında (1995–2025) Gerçek MEDITS Demersal Biyokütle, SSB ve SAR Analizi
medits_basins = ["BASIN_MARMARA", "BASIN_MED_LEV", "BASIN_MED_AEG", "BASIN_BLACKSEA_W", "BASIN_BLACKSEA_E"]
basin_summary = []
basin_panels = {}
fe_records = []

for b_code in medits_basins:
    bio_s = fetch_gomd_annual_series("medits_demersal_biomass_kg_km2", entity=b_code, period_from=1995, period_to=2025)
    ssb_s = fetch_gomd_annual_series("medits_spawning_stock_ratio", entity=b_code, period_from=1995, period_to=2025)
    sar_s = fetch_gomd_annual_series("medits_swept_area_ratio_sar", entity=b_code, period_from=1995, period_to=2025)
    b_yrs = sorted(set(bio_s) & set(ssb_s) & set(sar_s))
    b_rows = [
        {"basin": b_code, "year": y, "biomass_kg_km2": bio_s[y], "ssb_ratio": ssb_s[y], "sar": sar_s[y]}
        for y in b_yrs
    ]
    basin_panels[b_code] = pd.DataFrame(b_rows)
    fe_records.extend(b_rows)

    mk_b = mann_kendall_sen([bio_s[y] for y in b_yrs], t=b_yrs)
    te_b = transfer_entropy_causal([sar_s[y] for y in b_yrs], [bio_s[y] for y in b_yrs], bins=3)
    latest_ssb = ssb_s[b_yrs[-1]]
    latest_sar = sar_s[b_yrs[-1]]
    kobe_status = (
        "Yeşil (Sürdürülebilir)" if (latest_ssb >= 1.0 and latest_sar <= 1.5)
        else ("Kırmızı (Aşırı Avlanma & Stok Çöküşü)" if (latest_ssb < 0.8 and latest_sar > 1.5) else "Sarı (Geçiş / Baskı Altında)")
    )
    basin_summary.append({
        "Basin": b_code,
        "Biomass_1995": round(bio_s[b_yrs[0]], 1),
        "Biomass_2025": round(bio_s[b_yrs[-1]], 1),
        "Slope_kg_km2_decade": round(mk_b["theil_sen_slope"] * 10.0, 2),
        "SSB_Ratio_2025": round(latest_ssb, 3),
        "SAR_2025": round(latest_sar, 3),
        "TE_SAR_to_Bio_bits": te_b["transfer_entropy_x_to_y_bits"],
        "Kobe_Phase": kobe_status,
    })

df_medits = pd.DataFrame(basin_summary)
fe_medits = panel_fixed_effects(fe_records, entity_col="basin", y_col="biomass_kg_km2", x_col="sar")
print("\n🦀 5 Deniz Havzasında Gerçek GOMD MEDITS Demersal Biyokütle ve Kobe Stok Durumu (1995–2025):")
print(df_medits.to_string(index=False))
print(f"\n📊 MEDITS Dip Trolü SAR -> Demersal Biyokütle Sabit Etkiler (FE) Panel Eğimi : β_FE = {fe_medits['beta_fe']:+.2f} kg/km² (t = {fe_medits['t_stat']:.2f}, p = {fe_medits['p_value']:.4e}, Within R² = {fe_medits['r_squared_within']:.4f})")

# ==============================================================================
# ADIM 2: FAO Balıkçılık/Akuakültür Geçişi ve MEDITS Havza Biyokütle Görselleştirmesi
# STEP 2: Visualization of Türkiye Aquaculture Transition & MEDITS Demersal Biomass
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Türkiye (TUR) 1970–2024 Gerçek FAO Avcılık vs Akuakültür Üretimi (Bin Ton)
ax1.plot(df_tur_fish["year"], df_tur_fish["capture_kt"], color="#38bdf8", lw=2.2, label="Deniz & İçsu Avcılığı (Bin Ton)")
ax1.plot(df_tur_fish["year"], df_tur_fish["aquaculture_kt"], color="#22c55e", lw=2.4, label="Akuakültür Yetiştiriciliği (Bin Ton)")
ax1.axvline(int(pt_aqua["changepoint_label"]), color="#f59e0b", ls=":", lw=1.8, label=f"Pettitt Kırılma ({pt_aqua['changepoint_label']})")
ax1.set_title("A) Türkiye (TUR) Gerçek FAO Avcılık ve Akuakültür Üretimi (1970–2024)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Üretim (Bin Metrik Ton)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: 5 Deniz Havzasında MEDITS Demersal Biyokütle Evrimi (1995–2025)
b_colors = {
    "BASIN_MARMARA": "#f43f5e",
    "BASIN_MED_LEV": "#f59e0b",
    "BASIN_MED_AEG": "#38bdf8",
    "BASIN_BLACKSEA_W": "#22c55e",
    "BASIN_BLACKSEA_E": "#a855f7",
}
for b_code, b_df in basin_panels.items():
    ax2.plot(b_df["year"], b_df["biomass_kg_km2"], lw=2.0, color=b_colors[b_code], label=b_code.replace("BASIN_", ""))
ax2.set_title("B) 5 Havzada Gerçek GOMD MEDITS Demersal Biyokütle (1995–2025)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Demersal Biyokütle İndeksi (kg/km²)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 6: Gerçek Veri FAO Balıkçılık & MEDITS Demersal Biyokütle", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs06_blacksea_med_fisheries_biodiversity_medits.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 07 · KÜRESEL KARBON BÜTÇESİ (GCB), OKYANUS YUTAĞI EŞBÜTÜNLEŞMESİ VE ARKTİK BUZ (1958–2026)

CS07: Küresel Karbon Bütçesi (1959–2024), Mauna Loa Atmosferik CO₂, Okyanus Karbon Yutağı Engle–Granger Eşbütünleşmesi, Okyanus Isı İçeriği (OHC) ve Arktik Deniz Buzu Erimesi Nedensel Analizi

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Sanayi Devrimi’nden bu yana insan kaynaklı fosil yakıt emisyonlarının yaklaşık %26–30’u küresel okyanuslar tarafından soğurularak atmosferik ısınmayı frenleyen dev bir gezegensel tampon (okyanus karbon yutağı) görevi görmüştür. Ancak 1959–2025 döneminde yıllık fosil karbon emisyonlarının 2,42 GtC/yıl’dan 10,20 GtC/yıl’a (~37,4 GtCO₂/yıl) çıkması ve atmosferik CO₂ derişiminin 315,98 ppm’den 427,43 ppm’e yükselmesi, okyanusların hem karbon tutma kapasitesini (Revelle faktörü artışı nedeniyle azalan marjinal yutak oranı) hem de üst 0–700 m okyanus ısı içeriğini (NCEI OHC) zorlamaktadır. Okyanusta biriken bu devasa ısı (24,10 × 10²² Joule), Atlantik ve Pasifik su kütleleri aracılığıyla Arktik Okyanusu’na taşınarak Eylül ayı minimum deniz buzu örtüsünü hızla eritmektedir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
gml_mauna_loa_co2_ppm NOAA Küresel İzleme Laboratuvarı (GML) Küresel / Mauna Loa (1958-03 .. 2026-09, Toplam 3.813 Kayıt; Çizilen N = 823 Aylık Gözlem) ppm (Aylık) 68 yıllık aylık Keeling Eğrisi (mevsimsel salınımlı tam seri) ve 12 aylık eğilim
nsidc_seaice_extent_daily NSIDC Uydu Kriosfer Günlük Kayıtları Arktik ve Antarktik (1978-10-26 .. 2026-09-05, Toplam 31.662 Günlük Gözlem; Arktik N = 15.831 Gün) Milyon km² (Günlük) Arktik Okyanusu 15.831 günlük uydu deniz buzu yayılımı ve Eylül minimumları
gcb2025_fossil / ocean_sink / land_sink / atmosphere Küresel Karbon Projesi (GCB 2025) Küresel (1959–2024, 4 Gösterge × 66 Yıl = 264 Yıllık Gözlem) GtC / Yıl Fosil emisyonlar, okyanus karbon yutağı (S_okyanus), karasal yutak ve atmosferik birikim (Engle–Granger eşbütünleşmesi)
noaa_gml_ch4_global NOAA GML Küresel Metan Ağı Küresel (1983–2026, 514 Aylık Gözlem) ppb (Aylık) Küresel atmosferik metan (CH₄) aylık referans serisi

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Engle ve Granger (1987) Uzun Dönem Eşbütünleşme Kanıtı: 1959–2024 küresel fosil karbon emisyonları (X) ile okyanus karbon yutağı (Y) arasında uzun dönemli eğim katsayısı β = 0,2746 (yani her 1 GtC fosil emisyonun ortalama %27,46’sı okyanus tarafından yutulmaktadır) olarak tahmin edilmiş; kalıntılar üzerinde yapılan Genişletilmiş Dickey–Fuller (ADF) birim kök testi t = -3,913 < -3,34 (%5 MacKinnon kritik değeri) sonucuyla iki serinin %5 anlamlılık düzeyinde eşbütünleşik olduğunu kanıtlamıştır.
  • Okyanus Yutağı Oranındaki Marjinal Zayıflama Uyarı Sinyali: Son yıllarda fosil emisyonlar 10,20 GtC/yıl’a çıkarken okyanusun tuttuğu oran %28,92 (2,95 GtC/yıl) düzeyindedir; yüzey sularının ısınması çözünürlük pompasını yavaşlatmaktadır.
  • Şen (2020) Yenilikçi Poligon Trend Analizi (IPTA): Mauna Loa CO₂ serisinin birinci yarısında (1959–1991) ortalama 334,47 ppm olan derişim, ikinci yarıda (1992–2024) 388,31 ppm’e çıkmış; yüksek kantillerde 1,165x uç değer ivmelenmesi ve +1,639 ppm/yıl eğim ölçülmüştür.
  • Okyanus Isı İçeriğinden (OHC) Arktik Deniz Buzuna Nedensel Bilgi Akışı: NSIDC Arktik Eylül deniz buzu her on yılda -0,762 Milyon km² (p < 10⁻⁶) hızla erimektedir (1979’da ~7,2 Milyon km² -> 2025’te 4,38 Milyon km²). OHC serisinden Arktik deniz buzuna doğru T(OHC -> Arktik Buz) = 0,2655 bit Shannon Transfer Entropisi tespit edilmiştir.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı NOAA GML Mauna Loa Aylık CO₂ Keeling Eğrisi (N = 823 Ay · WLD)

1958–2026 NOAA Mauna Loa aylık atmosferik CO₂ gözlemlerini (3.813 toplam kayıt) canlı zaman serisi grafiğinde inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı NSIDC Arktik Günlük Deniz Buzu Yayılımı (N = 15.831 Gün · NSIDC_ARCTIC)

1978–2026 günlük uydu Arktik deniz buzu yayılımını (toplam 31.662 günlük kutup kaydı) canlı grafikte açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Küresel Karbon Bütçesi (GCB 2025) Okyanus Karbon Yutağı (1959–2024)

Küresel okyanus karbon yutağı (gcb2025_ocean_sink) ve fosil emisyon (gcb2025_fossil) 66 yıllık serilerini canlı inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 COP31 İklim Bilimi ve Küresel Karbon Panosu

Küresel karbon bütçesi eşiklerini ve COP31 okyanus-iklim müzakere başlıklarını takip edin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

17.432 gerçek günlük/aylık/yıllık gözlemle çizilen 4-panelli küresel karbon bütçesi ve Arktik buz grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs07_global_carbon_budget_mauna_loa_ocean_sink_cointegration) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 07 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. COP31 Antalya "Okyanus Karbon Yutağı Koruma ve Mavi Ulusal Katkı Beyanı (NDC)" Deklarasyonu: Okyanusların fosil emisyonların %27,46’sını yutan eşbütünleşik tampon mekanizmasının termal doygunluğa yaklaşması nedeniyle, COP31 Türkiye Başkanlığında UNFCCC Ulusal Katkı Beyanlarına (NDC) "Okyanus Karbon Yutağı ve Denizel Biyojeokimyasal İzleme" bölümü eklenmelidir.
  2. TÜBİTAK MAM Kutup Araştırmaları Enstitüsü (KARE) Arktik/Antarktik Şamandıra Entegrasyonu: Türkiye’nin Ulusal Kutup Bilim Seferleri kapsamında toplanan CTD ve deniz buzu verileri doğrudan GOMD doğrulama katmanına bağlanmalıdır.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Küresel Karbon Bütçesi (GCB 2025), NOAA Mauna Loa Atmosferik CO₂, NCEI Okyanus Isı İçeriği (OHC) ve NSIDC Arktik Deniz Buzu Eşbütünleşme Madenciliği (1958–2026)
Global Carbon Budget (GCB 2025), NOAA Mauna Loa Atmospheric CO₂, NCEI Ocean Heat Content & NSIDC Arctic Sea Ice Cointegration Mining (1958–2026)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan Küresel İklim Referans Serilerinin Çekimi
# STEP 1: Live Retrieval of Global Climate Benchmark Series from GOMD
# ==============================================================================
from gomd.stats import (
    cointegration_eg_test,
    transfer_entropy_causal,
    innovative_polygon_trend,
    mann_kendall_sen,
    pettitt_changepoint,
)

co2_map   = fetch_gomd_annual_series("gml_mauna_loa_co2_ppm", entity="WLD", period_from=1959, period_to=2025)
fos_map   = fetch_gomd_annual_series("gcb2025_fossil", entity="WLD", period_from=1959, period_to=2024)
atm_map   = fetch_gomd_annual_series("gcb2025_atmosphere", entity="WLD", period_from=1959, period_to=2024)
ocn_map   = fetch_gomd_annual_series("gcb2025_ocean_sink", entity="WLD", period_from=1959, period_to=2024)
lnd_map   = fetch_gomd_annual_series("gcb2025_land_sink", entity="WLD", period_from=1959, period_to=2024)
ohc_map   = fetch_gomd_annual_series("ncei_ohc_0_700m", entity="WLD", period_from=1959, period_to=2025)
ice_min_m = fetch_gomd_annual_series("nsidc_arctic_ice_min", entity="ARCTIC", period_from=1979, period_to=2025)
ice_max_m = fetch_gomd_annual_series("nsidc_arctic_ice_max", entity="ARCTIC", period_from=1979, period_to=2025)

gcb_years = sorted(set(co2_map) & set(fos_map) & set(atm_map) & set(ocn_map) & set(lnd_map) & set(ohc_map))
df_gcb = pd.DataFrame([
    {
        "year": y,
        "co2_ppm": round(co2_map[y], 2),
        "fossil_gtc": round(fos_map[y], 3),
        "atmos_gtc": round(atm_map[y], 3),
        "ocean_sink_gtc": round(ocn_map[y], 3),
        "land_sink_gtc": round(lnd_map[y], 3),
        "ocean_sink_fraction_pct": round((ocn_map[y] / max(fos_map[y], 0.1)) * 100.0, 2),
        "ohc_10_22j": round(ohc_map[y], 3),
    }
    for y in gcb_years
])

# 1. Engle & Granger (1987) Eşbütünleşme Testi: Fosil Emisyon -> Okyanus Karbon Yutağı
eg_coint = cointegration_eg_test(df_gcb["fossil_gtc"].tolist(), df_gcb["ocean_sink_gtc"].tolist())

# 2. 1979–2025 Arktik Deniz Buzu ve OHC Nedensellik Analizi
ice_years = sorted(set(ice_min_m) & set(ohc_map) & set(co2_map))
df_ice = pd.DataFrame([
    {
        "year": y,
        "co2_ppm": co2_map[y],
        "ohc_10_22j": ohc_map[y],
        "arctic_ice_min_mkm2": ice_min_m[y],
        "arctic_ice_max_mkm2": ice_max_m.get(y, np.nan),
    }
    for y in ice_years
])

te_ohc_ice = transfer_entropy_causal(
    x=df_ice["ohc_10_22j"].tolist(),
    y=df_ice["arctic_ice_min_mkm2"].tolist(),
    bins=3,
)
mk_ice = mann_kendall_sen(df_ice["arctic_ice_min_mkm2"].tolist(), t=df_ice["year"].tolist())
ipta_co2 = innovative_polygon_trend(df_gcb["co2_ppm"].tolist())

print("\n🌍 Küresel Karbon Bütçesi (GCB 2025) & Mauna Loa CO₂ Özeti (Son 8 Yıl):")
print(df_gcb.tail(8).to_string(index=False))
print(f"\n🔗 Engle-Granger Eşbütünleşme (Fosil -> Okyanus Yutağı) : β = {eg_coint['long_run_slope_beta']:.4f}, ADF t = {eg_coint['engle_granger_adf_t_stat']:.3f} (Kritik %5 = {eg_coint['critical_value_5pct']}, Eşbütünleşik = {eg_coint['cointegrated_at_5pct']})")
print(f"🧊 NSIDC Arktik Eylül Deniz Buzu Trendi                 : {mk_ice['theil_sen_slope']*10:.3f} Milyon km² / 10-yıl (p = {mk_ice['p_value']:.2e})")
print(f"⚡ Shannon Transfer Entropisi T(OHC -> Arktik Buz)      : {te_ohc_ice['transfer_entropy_x_to_y_bits']:.4f} bits ({te_ohc_ice['dominant_causal_direction']})")
print(f"📐 Şen (2020) IPTA Mauna Loa CO₂ Eğimi                   : +{ipta_co2['ita_slope_per_step']:.3f} ppm/yıl (Birinci Yarı = {ipta_co2['first_half_mean']:.2f} -> İkinci Yarı = {ipta_co2['second_half_mean']:.2f} ppm, Kuyruk Çarpanı = {ipta_co2['tail_amplification_ratio']}x)")

# ==============================================================================
# ADIM 2: Küresel Karbon Yutakları ve OHC vs Arktik Deniz Buzu Görselleştirmesi
# STEP 2: Visualization of Global Carbon Sinks & OHC vs. Arctic Sea Ice
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Global Carbon Budget 1959–2024 Gerçek GOMD Serileri (GtC/yıl)
ax1.plot(df_gcb["year"], df_gcb["fossil_gtc"], color="#f43f5e", lw=2.3, label="Fosil CO₂ Emisyonları (GtC/yıl)")
ax1.plot(df_gcb["year"], df_gcb["ocean_sink_gtc"], color="#38bdf8", lw=2.2, label="Okyanus Karbon Yutağı (GtC/yıl)")
ax1.plot(df_gcb["year"], df_gcb["land_sink_gtc"], color="#22c55e", lw=1.9, ls="--", label="Karasal Biyosfer Yutağı (GtC/yıl)")
ax1.set_title("A) Küresel Karbon Bütçesi (GCB 1959–2024 Gerçek GOMD Verisi)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Karbon Akısı (GtC / yıl)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: NCEI Okyanus Isı İçeriği (0–700m) vs NSIDC Arktik Eylül Deniz Buzu (1979–2025)
ax2.plot(df_ice["year"], df_ice["ohc_10_22j"], color="#f59e0b", marker="o", lw=2.0, label="NCEI OHC 0–700m (10²² J)")
ax2_t = ax2.twinx()
ax2_t.plot(df_ice["year"], df_ice["arctic_ice_min_mkm2"], color="#38bdf8", marker="s", ls="--", lw=2.0, label="NSIDC Arktik Eylül Minimum Buz (Milyon km²)")
ax2_t.tick_params(colors="#7dd3fc")
ax2.set_title("B) Okyanus Isı İçeriği (OHC) ve Arktik Deniz Buzu Erimesi (1979–2025)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Okyanus Isı İçeriği (10²² Joule)", color="#f59e0b")
ax2_t.set_ylabel("Arktik Deniz Buzu Alanı (Milyon km²)", color="#38bdf8")
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 7: Küresel Karbon Bütçesi, OHC & Arktik Buz Eşbütünleşmesi", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs07_global_carbon_budget_mauna_loa_ocean_sink_cointegration.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 08 · 10 HAVZA VE BOĞAZDA YÜKSEK FREKANSLI MET-OCEAN VE GUMBEL 100-YILLIK DALGA ANALİZİ (2019–2026)

CS08: Doğu Akdeniz, Ege, Karadeniz, Marmara ve Küresel Deniz Darboğazlarında Yüksek Frekanslı Met-Ocean Telemetrisi: Gumbel (EV1) 100-Yıllık Ekstrem Dalga, OU Termal Hafıza ve Sabit Etkiler Paneli

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Açık deniz rüzgâr enerjisi türbinleri, dalgakıranlar, liman yanaşma yapıları ve stratejik boğazlardan (İstanbul ve Çanakkale Boğazları, Süveyş, Cebelitarık, Hürmüz, Babülmendep) geçen ticari gemilerin seyir emniyeti; ortalama hava durumundan ziyade 10, 50 ve 100 yıllık ekstrem dalga yüksekliklerine (Hs,100), ölü dalga enerji transferine ve yüzey akıntı hızlarına bağlıdır. Aynı zamanda günlük deniz yüzeyi sıcaklığındaki (SST) ani sıçramalar, deniz canlılarında fizyolojik uyum gecikmesi (Genin vd., PNAS 2020) ve Q10 metabolik termal şok yaratmaktadır. Bu vaka çalışması, GOMD veritabanındaki 8 küresel boğazın günlük AIS gemi geçişlerini (22.336 kayıt) ve 10 deniz havzasının günlük Met-Ocean dalga/akıntı gözlemlerini analiz etmektedir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
IMF_PW_N_TOTAL (Darboğaz Günlük AIS) IMF PortWatch / BM Küresel Platform AIS 8 Küresel Boğaz (2019–2026, Toplam 22.336 Günlük Gözlem; Çizilen 4 Boğaz: İstanbul Boğazı, Süveyş, Babülmendep, Hürmüz N = 11.168 Gün) Gemi / Gün 4 stratejik deniz darboğazında 2.792’şer günlük gerçek AIS gemi geçiş trafiği (2024 Kızıldeniz/Süveyş kırılması dahil)
metocean_global_basin_wave_height_max_m Open-Meteo Marine / ECMWF ERA5-Ocean 10 Havza ve Boğaz (N = 930 Günlük Gözlem) Metre (m) Günlük maksimum belirgin dalga yüksekliği (Hs,max) ve Gumbel EV1 T=100 yıl tasarım dalgası
metocean_global_basin_swell_height_max_m & wind_wave_height_max_m Open-Meteo Marine / ECMWF WAM 10 Havza ve Boğaz (N = 1.860 Günlük Gözlem) Metre (m) Ölü dalga ve rüzgâr dalgası bileşenleri (Sabit Etkiler paneli N = 930)
metocean_global_basin_current_velocity_max_ms & sst_mean_c CMEMS / Open-Meteo Marine 10 Havza ve Boğaz (N = 1.860 Günlük Gözlem) m/s ve °C Yüzey akıntı hızı ve Ornstein–Uhlenbeck termal hafıza serileri

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • 10 Havza ve Boğazda Gumbel (EV Tip I) 100-Yıllık Ekstrem Dalga Yüksekliği (Hs,100): Euler–Mascheroni momentler yöntemiyle tahmin edilen Gumbel dağılımına göre Türkiye ve yakın havzalarda 100 yıllık dönüş dalga yüksekliği Ege Denizi’nde (OCN_MED_AEGEAN) 4,02 m (Hs,50 = 3,66 m), Karadeniz’de (OCN_BLACKSEA_CENTRAL) 3,14 m, İyon Denizi’nde 3,16 m, Cebelitarık Boğazı’nda 2,67 m, Süveyş/Kızıldeniz’de 2,52 m ve Doğu Akdeniz Levant Havzası’nda 2,14 m olarak hesaplanmıştır.
  • 930 Havza-Günlük Sabit Etkiler (FE) Dalga-Ölü Dalga Paneli: Havza sabit etkileri arındırıldığında ölü dalga yüksekliğindeki 1 metrelik artış, toplam maksimum dalga yüksekliğini β_FE = +1,1390 m (t = 29,39, p < 10⁻⁶, grup-içi R² = 0,4845) artırmaktadır.
  • Ornstein–Uhlenbeck (Hasselmann 1976 / Martinez-Villalobos 2022) Termal Hafıza ve Q10 Şok: Doğu Akdeniz günlük SST serisinde stokastik sönümlenme hızı λ = 0,1486 gün⁻¹ ve termal hafıza süresi τ_hafıza = 6,73 gün (%95 tahmin ufku = 20,2 gün) olarak tahmin edilmiş; Genin vd. (PNAS, 2020) ektoterm termal şok indeksi TSI = 2,102 (Orta Düzey Fizyolojik Uyum Gecikmesi Stresi) olarak ölçülmüştür.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı Küresel Boğazlar Günlük AIS Gemi Trafiği (N = 22.336 Gün · Süveyş ve Boğazlar)

Süveyş Kanalı (IMF_CP_1), İstanbul Boğazı (IMF_CP_3), Babülmendep (IMF_CP_4) ve Hürmüz (IMF_CP_6) günlük AIS geçiş serilerini canlı açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Ege ve Doğu Akdeniz Günlük Maksimum Dalga Yüksekliği (Hs,max)

10 deniz havzası ve darboğazda günlük maksimum belirgin dalga yüksekliği (Hs,max) serilerini ve haritasını canlı inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Ölü Dalga Yüksekliği ve Akıntı Telemetrisi (OCN_MED_AEGEAN)

Ege, Levant ve Karadeniz havzalarında günlük ölü dalga yüksekliği ve yüzey akıntı hızı serilerini canlı grafikte açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 İnteraktif Bilimsel Okyanus ve Deniz Darboğazları Haritası

Boğaz geçiş noktalarını, batimetriyi, gemi emisyonlarını ve oşinografik katmanları interaktif harita üzerinde izleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

13.958 gerçek günlük AIS ve Met-Ocean dalga gözlemiyle çizilen 4-panelli kanıt grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs08_high_frequency_metocean_wave_extremes_chokepoints) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 08 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Kıyı Yapıları ve Liman Dalgakıran Tasarım Standartlarının Gumbel Hs,100 Bulgularıyla Güncellenmesi: Ulaştırma ve Altyapı Bakanlığı Altyapı Yatırımları Genel Müdürlüğü (AYGM), Ege (Hs,100 = 4,02 m) ve Karadeniz (Hs,100 = 3,14 m) liman tahkimatlarında ve potansiyel açık deniz rüzgâr enerjisi (YEKA-RES) sahalarında güncellenmiş Gumbel dönüş seviyelerini tasarım kriteri olarak zorunlu kılmalıdır.
  2. KEGM Türk Boğazları Gemi Trafik Hizmetleri (VTS) Dinamik Akıntı-Dalga Eşiği: Kıyı Emniyeti Genel Müdürlüğü (KEGM), boğaz geçişlerinde anlık akıntı hızı ve ölü dalga periyodu eşiklerini GOMD Met-Ocean telemetrisiyle birleştirerek yedekli römorkör refakati kararlarını otomatikleştirmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Doğu Akdeniz, Ege ve Küresel Deniz Darboğazlarında Yüksek Frekanslı Met-Ocean Telemetrisi: Gumbel 100-Yıllık Ekstrem Dalga, OU Termal Hafıza ve Sabit Etkiler Paneli
High-Frequency Met-Ocean Telemetry Across Mediterranean Basins & Global Chokepoints: Gumbel Return Levels, Ornstein–Uhlenbeck Thermal Memory & Fixed-Effects Panel
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: 10 Havza ve Darboğaz İçin Gerçek Günlük Met-Ocean Serilerinin Çekimi
# STEP 1: Live Retrieval of Daily Met-Ocean Telemetry Across 10 Basins/Chokepoints
# ==============================================================================
from gomd.ocean import ectotherm_thermal_shock_index, stochastic_sst_memory_ou
from gomd.stats import (
    extreme_return_levels,
    panel_fixed_effects,
)

basins = [
    "OCN_MED_LEVANTINE",
    "OCN_MED_AEGEAN",
    "OCN_MARMARA_STRAITS",
    "OCN_BLACKSEA_CENTRAL",
    "OCN_MED_IONIAN",
    "OCN_MED_WEST",
    "OCN_CHOKE_SUEZ_REDSEA",
    "OCN_CHOKE_GIBRALTAR",
    "OCN_CHOKE_HORMUZ",
    "OCN_CHOKE_BABELMANDEB",
]

met_summary = []
all_daily_rows = []
lev_daily_df = None

for b_code in basins:
    sst_r  = client.get_series("metocean_global_basin_sst_mean_c", entity=b_code, as_df=False)
    hs_r   = client.get_series("metocean_global_basin_wave_height_max_m", entity=b_code, as_df=False)
    tp_r   = client.get_series("metocean_global_basin_wave_period_max_s", entity=b_code, as_df=False)
    sw_r   = client.get_series("metocean_global_basin_swell_height_max_m", entity=b_code, as_df=False)
    ww_r   = client.get_series("metocean_global_basin_wind_wave_height_max_m", entity=b_code, as_df=False)
    cur_r  = client.get_series("metocean_global_basin_current_velocity_max_ms", entity=b_code, as_df=False)

    by_date = {}
    for label, rows in [("sst", sst_r), ("hs", hs_r), ("tp", tp_r), ("swell", sw_r), ("ww", ww_r), ("cur", cur_r)]:
        for r in rows:
            d = str(r.get("period") or "")
            if d and r.get("value") is not None:
                by_date.setdefault(d, {})[label] = float(r["value"])

    valid_dates = sorted([d for d, vals in by_date.items() if len(vals) == 6])
    print(f"📡 [GERÇEK MET-OCEAN TELEMETRİSİ] {b_code:<22} | N={len(valid_dates)} gün ({valid_dates[0]} -> {valid_dates[-1]})")

    b_rows = [{"basin": b_code, "date": d, **by_date[d]} for d in valid_dates]
    all_daily_rows.extend(b_rows)
    if b_code == "OCN_MED_LEVANTINE":
        lev_daily_df = pd.DataFrame(b_rows)

    sst_vals = [by_date[d]["sst"] for d in valid_dates]
    hs_vals  = [by_date[d]["hs"] for d in valid_dates]
    cur_vals = [by_date[d]["cur"] for d in valid_dates]

    ev_hs = extreme_return_levels(hs_vals, return_periods=(10, 50, 100))
    ou_sst = stochastic_sst_memory_ou(sst_vals, dt_days=1.0)
    ect = ectotherm_thermal_shock_index(sst_series=sst_vals, dt_days=1.0)

    met_summary.append({
        "Basin": b_code.replace("OCN_", ""),
        "Days": len(valid_dates),
        "Mean_SST_C": round(float(np.mean(sst_vals)), 2),
        "OU_Memory_Days": round(ou_sst["thermal_memory_tau_days"], 2),
        "Max_Hs_Obs_m": round(float(np.max(hs_vals)), 2),
        "Gumbel_Hs_100yr_m": ev_hs["return_levels"]["return_level_100yr"],
        "Max_Current_ms": round(float(np.max(cur_vals)), 3),
        "Max_Q10_Surge": ect["max_q10_metabolic_demand_multiplier"],
    })

df_met = pd.DataFrame(met_summary)
print("\n🌊 10 Küresel Havza ve Darboğazda Gerçek Met-Ocean Ekstrem Dalga & Termal Hafıza Tablosu:")
print(df_met.to_string(index=False))

fe_wave = panel_fixed_effects(all_daily_rows, entity_col="basin", y_col="hs", x_col="swell")
print(f"\n📐 Havza Sabit Etkiler (FE) Panel Regresyonu (N={fe_wave['n_obs']} günlük gözlem, 10 havza): β_FE(Swell -> Hs) = {fe_wave['beta_fe']:+.4f} (t = {fe_wave['t_stat']:.2f}, Within R² = {fe_wave['r_squared_within']:.4f})")

# ==============================================================================
# ADIM 2: Doğu Akdeniz Günlük Dalga/SST Telemetrisi ve 10 Havza Gumbel Tasarım Dalgası
# STEP 2: Visualization of Eastern Med Daily Telemetry & 10-Basin Gumbel Return Waves
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Doğu Akdeniz (OCN_MED_LEVANTINE) Gerçek Günlük Dalga Boyu (Hs), Swell ve Rüzgar Dalgası
x_days = np.arange(len(lev_daily_df))
ax1.plot(x_days, lev_daily_df["hs"], color="#38bdf8", lw=2.0, label="Toplam Belirgin Dalga Hs (m)")
ax1.plot(x_days, lev_daily_df["swell"], color="#22c55e", lw=1.6, ls="--", label="Solugan (Swell) Yüksekliği (m)")
ax1.plot(x_days, lev_daily_df["ww"], color="#f59e0b", lw=1.5, ls=":", label="Rüzgar Dalgası Yüksekliği (m)")
ax1.set_title("A) Doğu Akdeniz (OCN_MED_LEVANTINE) Günlük Dalga Telemetrisi", color="#f8fafc", fontweight="bold")
ax1.set_xlabel("Gün İndeksi (2025–2026 Gözlem Penceresi)", color="#cbd5e1")
ax1.set_ylabel("Dalga Yüksekliği (m)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: 10 Havza/Darboğazda Gözlenen Maksimum Hs vs Gumbel T=100 Dönüş Seviyesi
x_b = np.arange(len(df_met))
ax2.bar(x_b - 0.18, df_met["Max_Hs_Obs_m"], width=0.35, color="#38bdf8", label="Gözlenen Maksimum Hs (m)")
ax2.bar(x_b + 0.18, df_met["Gumbel_Hs_100yr_m"], width=0.35, color="#f43f5e", label="Gumbel T=100 Tasarım Dalgası (m)")
ax2.set_xticks(x_b)
ax2.set_xticklabels(df_met["Basin"], rotation=28, ha="right", fontsize=8)
ax2.set_title("B) 10 Havza & Darboğazda Gumbel Ekstrem Dalga Yüksekliği", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Belirgin Dalga Yüksekliği Hs (m)", color="#cbd5e1")
ax2.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8)
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 8: Yüksek Frekanslı Met-Ocean & Gumbel Ekstrem Dalga Analizi", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs08_high_frequency_metocean_wave_extremes_chokepoints.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 09 · COP31 ENERJİ DÖNÜŞÜMÜ, YENİLENEBİLİR ENERJİ VE SEKTÖREL SERA GAZI PANELİ (1970–2026)

CS09: COP31 Türkiye İklim Diplomasisi Perspektifinden 6 Akdeniz ve Avrupa Ekonomisinde Yenilenebilir Enerji Dönüşümü ve Sektörel Sera Gazı (Enerji, Ulaştırma, Sanayi, Toplam GHG) Karbonsuzlaşma Paneli (1970–2026)

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Türkiye’nin 2053 Net Sıfır Emisyon hedefi ve COP31 (Antalya) ev sahipliği vizyonu; elektrik üretimi, ulaştırma/denizcilik ve sanayi sektörlerindeki sera gazı emisyonlarının ekonomik büyümeyi aksatmadan düşürülmesini gerektirmektedir. 1990–2024 döneminde Avrupa Birliği ülkeleri (Almanya, Fransa, İtalya, İspanya, Yunanistan) yenilenebilir enerji payını artırarak toplam sera gazı emisyonlarında mutlak ayrışma sağlarken, hızlı sanayileşen ve nüfusu/ticaret hacmi büyüyen Türkiye’de toplam sera gazı emisyonları 229,9 Mt CO₂e’den 576,4 Mt CO₂e’ye yükselmiş, ancak yenilenebilir enerji kapasitesindeki sıçrama ile emisyon yoğunluğu kırılma noktasına ulaşmıştır.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
cm_co2_daily Carbon Monitor Günlük Emisyon Konsorsiyumu Küresel ve AB-27 (2019-01-01 .. 2026-07-31, Toplam 5.538 Günlük Gözlem; 2.769’ar Gün) Mt CO₂ / Gün Küresel ve AB-27 günlük yüksek frekanslı CO₂ emisyon telemetrisi (2020 pandemi çöküşü ve mevsimsel çevrimler)
edgar_wb_total_ghg_excl_lulucf_mt_co2e JRC EDGAR v8.0 / Dünya Bankası 203 Ülke (1970–2024, Toplam 11.715 Gözlem; Türkiye için 55 Yıl) Mt CO₂e / Yıl LULUCF hariç toplam ulusal sera gazı emisyonları
edgar_wb_co2_power_industry_mt & industrial_combustion_mt & transport_mt JRC EDGAR v8.0 / IEA 204 Ülke (1970–2024, Toplam 33.605 Gözlem; Türkiye için 3 × 55 = 165 Yıl) Mt CO₂ / Yıl Enerji endüstrisi (11.220 kayıt), sanayi yanması (11.165 kayıt) ve ulaştırma (11.220 kayıt) sektörel CO₂ serileri
iea_wb_renewable_electricity_output_pct IEA / Dünya Bankası WDI 210 Ülke (1990–2021, Toplam 5.829 Gözlem; 6 Ülke FE Paneli N = 192) % (Elektrik Üretimi) Toplam elektrik üretiminde yenilenebilir enerji payı

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • 6 Ülkeli Sabit Etkiler (FE) Yenilenebilir Enerji Karbonsuzlaşma Esnekliği (N = 192): Ülke sabit etkileri (α_i) kontrol edildiğinde, elektrik üretimindeki yenilenebilir enerji payındaki her +1 yüzde puanlık artış, toplam sera gazı emisyonlarını (log_ghg_mt) istatistiksel olarak son derece anlamlı biçimde azaltmaktadır (p < 10⁻⁶).
  • Enerji Sektörü Sürücü Etkisi: Elektrik ve ısı üretimi CO₂ emisyonlarının toplam sera gazı üzerindeki grup-içi esnekliği β_FE = +0,5792 (t = 31,48, grup-içi R² = 0,8423) olup, toplam karbonsuzlaşmanın %84’ünün elektrik şebekesinin temizlenmesinden geçtiğini kanıtlamaktadır.
  • Türkiye ve AB-5 Karşılaştırmalı Dinamikler: 1990–2024 döneminde Türkiye’nin enerji sektörü CO₂ emisyonları 2024’te 156,53 Mt CO₂, sanayi yanması 88,40 Mt CO₂, ulaştırma emisyonları ise 99,66 Mt CO₂ olarak gerçekleşmiştir.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı Carbon Monitor Günlük CO₂ Emisyon Telemetrisi (N = 5.538 Gün · WLD ve EU27)

2019–2026 küresel (WLD) ve AB-27 (EU27) günlük yüksek frekanslı CO₂ emisyon serisini canlı zaman grafiğinde inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı JRC EDGAR Toplam Sera Gazı Serisi (N = 11.715 · TUR)

1970–2024 JRC EDGAR v8.0 toplam ve sektörel (enerji, sanayi, ulaştırma) sera gazı serilerini Türkiye ve 203 ülke için canlı açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı IEA / Dünya Bankası Yenilenebilir Elektrik Üretimi Payı (N = 5.829 · TUR)

Türkiye ve Avrupa ekonomilerinin yenilenebilir elektrik üretim payı serilerini harita ve zaman grafiğinde karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 COP31 Türkiye İklim ve Enerji Dönüşümü Panosu

COP31 Antalya zirvesi öncesinde Türkiye ve Akdeniz ülkelerinin iklim ve enerji dönüşümü göstergelerini inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

6.280 gerçek günlük/yıllık gözlemle çizilen 4-panelli enerji dönüşümü ve sektörel GHG grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs09_energy_transition_sectoral_ghg_green_shipping_corridors) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 09 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. COP31 "Akdeniz Yeşil Deniz ve Enerji Koridoru" Girişimi: Enerji sektörü emisyonlarının toplam sera gazı varyansının %84,2’sini açıklaması nedeniyle, Türkiye’nin 2035 yılına kadar güneş ve rüzgâr kurulu gücünü 120 GW’a çıkarma hedefi, liman elektrifikasyonu (yeşil kıyı elektriği) ve yeşil hidrojen/metanol yakıt ikmal koridorlarıyla doğrudan eşleştirilmelidir.
  2. Yük Taşımacılığında Karayolundan Denizyoluna (Kabotaj ve Kısa Mesafeli Deniz Taşımacılığı) Geçiş: Türkiye’de 99,66 Mt CO₂’ye ulaşan ulaştırma emisyonlarını kırmak için Marmara, Ege ve Karadeniz limanları arasında Ro-Ro ve demiryolu-liman iltisak hatlarına karbon kredisi teşviki verilmelidir.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
COP31 Türkiye Enerji Dönüşümü, JRC EDGAR Sektörel Sera Gazı Envanteri, IEA Yenilenebilir Enerji ve BIST Denizcilik İklim Geçiş VaR Analizi (1970–2026)
COP31 Energy Transition, JRC EDGAR Sectoral GHG Inventory, IEA Renewable Energy & BIST Maritime Climate Transition VaR Analysis (1970–2026)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan JRC EDGAR Sektörel GHG, IEA ve BIST VaR Serileri
# STEP 1: Live Retrieval of JRC EDGAR Sectoral GHG, IEA Renewables & BIST VaR
# ==============================================================================
from gomd.stats import (
    panel_fixed_effects,
    cointegration_eg_test,
    mann_kendall_sen,
    pettitt_changepoint,
)

panel_countries = ["TUR", "DEU", "FRA", "ITA", "ESP", "GRC"]

# 1. Türkiye (TUR) 1970–2024 JRC EDGAR sektörel emisyonları
tur_ghg_tot  = fetch_gomd_annual_series("edgar_wb_total_ghg_excl_lulucf_mt_co2e", entity="TUR", period_from=1970, period_to=2024)
tur_co2_trn  = fetch_gomd_annual_series("edgar_wb_co2_transport_mt", entity="TUR", period_from=1970, period_to=2024)
tur_co2_pwr  = fetch_gomd_annual_series("edgar_wb_co2_power_industry_mt", entity="TUR", period_from=1970, period_to=2024)
tur_ren_elec = fetch_gomd_annual_series("iea_wb_renewable_electricity_output_pct", entity="TUR", period_from=1990, period_to=2024)
tur_bist_var = fetch_gomd_annual_series("bist_maritime_climate_transition_var_pct", entity="TUR", period_from=1990, period_to=2026)
tur_port_slr = fetch_gomd_annual_series("coastal_port_slr_inundation_exposure_idx", entity="TUR", period_from=1990, period_to=2026)

edgar_years = sorted(set(tur_ghg_tot) & set(tur_co2_trn) & set(tur_co2_pwr))
df_tur_edgar = pd.DataFrame([
    {
        "year": y,
        "total_ghg_mt": round(tur_ghg_tot[y], 2),
        "transport_co2_mt": round(tur_co2_trn[y], 2),
        "power_co2_mt": round(tur_co2_pwr[y], 2),
        "transport_share_pct": round((tur_co2_trn[y] / max(tur_ghg_tot[y], 1.0)) * 100.0, 2),
    }
    for y in edgar_years
])

# 2. 6 Ülkeli (TUR, DEU, FRA, ITA, ESP, GRC) Gerçek GOMD Panel Regresyonu (Fixed Effects Within)
fe_panel_rows = []
country_latest_rows = []

for iso in panel_countries:
    ghg_s = fetch_gomd_annual_series("edgar_wb_total_ghg_excl_lulucf_mt_co2e", entity=iso, period_from=1990, period_to=2024)
    trn_s = fetch_gomd_annual_series("edgar_wb_co2_transport_mt", entity=iso, period_from=1990, period_to=2024)
    pwr_s = fetch_gomd_annual_series("edgar_wb_co2_power_industry_mt", entity=iso, period_from=1990, period_to=2024)
    ren_s = fetch_gomd_annual_series("iea_wb_renewable_energy_final_consumption_pct", entity=iso, period_from=1990, period_to=2024)

    common_y = sorted(set(ghg_s) & set(trn_s) & set(pwr_s) & set(ren_s))
    for y in common_y:
        fe_panel_rows.append({
            "ISO3": iso,
            "year": y,
            "log_ghg": math.log(max(ghg_s[y], 1.0)),
            "ren_share": ren_s[y],
            "log_trn": math.log(max(trn_s[y], 0.1)),
            "log_pwr": math.log(max(pwr_s[y], 0.1)),
        })

    ly = max(set(ghg_s) & set(trn_s) & set(pwr_s))
    ry = max(ren_s)
    country_latest_rows.append({
        "ISO3": iso,
        "Year": ly,
        "Total_GHG_MtCO2e": round(ghg_s[ly], 2),
        "Transport_CO2_Mt": round(trn_s[ly], 2),
        "Power_CO2_Mt": round(pwr_s[ly], 2),
        "IEA_Renewable_Final_%": round(ren_s[ry], 2),
    })

df_edgar_peers = pd.DataFrame(country_latest_rows)
fe_ren = panel_fixed_effects(fe_panel_rows, entity_col="ISO3", y_col="log_ghg", x_col="ren_share")
fe_pwr = panel_fixed_effects(fe_panel_rows, entity_col="ISO3", y_col="log_ghg", x_col="log_pwr")
eg_trn = cointegration_eg_test(df_tur_edgar["transport_co2_mt"].tolist(), df_tur_edgar["total_ghg_mt"].tolist())

print("\n⚡ 6 Akdeniz/Avrupa Ekonomisinde Gerçek JRC EDGAR Emisyon ve IEA Yenilenebilir Enerji Tablosu:")
print(df_edgar_peers.to_string(index=False))
print(f"\n📊 Sabit Etkiler (FE Within) Panel Regresyonu (N={fe_ren['n_obs']} gerçek gözlem, 6 ülke):")
print(f"   • IEA Yenilenebilir Enerji Payı -> log(GHG) (β_FE) : {fe_ren['beta_fe']:+.5f} (SE = {fe_ren['std_error']:.5f}, t = {fe_ren['t_stat']:.2f}, p = {fe_ren['p_value']:.4e})")
print(f"   • log(Enerji Endüstrisi CO₂) -> log(GHG) (β_FE)    : {fe_pwr['beta_fe']:+.4f} (SE = {fe_pwr['std_error']:.4f}, Within R² = {fe_pwr['r_squared_within']:.4f})")
print(f"   • Türkiye Ulaştırma CO₂ <-> Toplam GHG Eşbütünleşme: ADF t = {eg_trn['engle_granger_adf_t_stat']:.3f}")

# ==============================================================================
# ADIM 2: Türkiye EDGAR Sektörel Emisyonları ve BIST Denizcilik Geçiş VaR Grafiği
# STEP 2: Visualization of Türkiye EDGAR Sectoral Emissions & BIST Maritime VaR
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Türkiye (TUR) 1970–2024 Gerçek JRC EDGAR Toplam GHG, Enerji ve Ulaştırma CO₂
ax1.plot(df_tur_edgar["year"], df_tur_edgar["total_ghg_mt"], color="#f43f5e", lw=2.3, label="Toplam Sera Gazı (Mt CO₂e)")
ax1.plot(df_tur_edgar["year"], df_tur_edgar["power_co2_mt"], color="#f59e0b", lw=2.0, ls="--", label="Enerji Endüstrisi CO₂ (Mt)")
ax1.plot(df_tur_edgar["year"], df_tur_edgar["transport_co2_mt"], color="#38bdf8", lw=2.0, label="Ulaştırma Sektörü CO₂ (Mt)")
ax1.set_title("A) Türkiye (TUR) JRC EDGAR Sektörel Emisyon Serileri (1970–2024)", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Emisyon Hacmi (Mt CO₂e / yıl)", color="#cbd5e1")
ax1.legend(facecolor="#0f172a", edgecolor="#334155", labelcolor="#f8fafc", fontsize=8.5)
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: Türkiye (TUR) 1990–2026 BIST Denizcilik İklim Geçiş VaR (%) ve Liman SLR Maruziyeti
yrs_bist = sorted(set(tur_bist_var) & set(tur_port_slr))
ax2.plot(yrs_bist, [tur_bist_var[y] for y in yrs_bist], color="#22c55e", marker="o", lw=2.2, label="BIST Denizcilik İklim Geçiş VaR (%)")
ax2_t = ax2.twinx()
ax2_t.plot(yrs_bist, [tur_port_slr[y] for y in yrs_bist], color="#38bdf8", marker="s", ls="--", lw=2.0, label="Kıyısal Liman SLR Maruziyet İndeksi")
ax2_t.tick_params(colors="#7dd3fc")
ax2.set_title("B) BIST Denizcilik İklim Geçiş VaR ve Liman SLR Riski (1990–2026)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("BIST İklim Geçiş VaR (%)", color="#22c55e")
ax2_t.set_ylabel("Liman SLR Taşkın Maruziyet İndeksi", color="#38bdf8")
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 9: COP31 Enerji Dönüşümü, EDGAR Emisyonları & BIST VaR", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs09_energy_transition_sectoral_ghg_green_shipping_corridors.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()
VAKA 10 · DENİZ TİCARETİ, LİMAN KONTEYNER (TEU), UNCTAD LSCI VE LPI PANELİ (1970–2026)

CS10: Küresel Deniz Ticareti, Konteyner Liman Elleçleme Trafiği (TEU), UNCTAD Doğrusal Deniz Taşımacılığı Bağlantılılık İndeksi (LSCI), Dünya Bankası LPI ve OECD Okyanus Ekonomisi Panel Analizi (1970–2026)

🌊 1. Olayın Ayrıntılı Hikayesi ve Bilimsel Arka Plan

Küresel mal ticaretinin hacimsel olarak %80’inden fazlası deniz yoluyla ve konteyner liman ağları üzerinden gerçekleştirilmektedir. Bir ülkenin küresel tedarik zincirlerindeki merkeziliği; limanlarında elleçlenen 20-ayak eşdeğeri konteyner hacmi (TEU), UNCTAD Doğrusal Deniz Taşımacılığı Bağlantılılık İndeksi (LSCI) ve Dünya Bankası Lojistik Performans İndeksi (LPI) ile ölçülmektedir. Türkiye (TUR), İstanbul/Ambarlı, Kocaeli, Mersin, Tekirdağ/Asyaport ve İzmir/Aliağa liman kümeleriyle Doğu Akdeniz ve Karadeniz havzasının ana aktarma ve ihracat üssüne dönüşmüştür. Bu vaka çalışması, 1970–2026 döneminde Türkiye ve karşılaştırma ekonomilerinin gerçek DTÖ (WTO), UNCTAD, Dünya Bankası ve OECD deniz ticareti serilerini ekonometrik olarak modellemektedir.

📊 2. Kullanılan Gerçek GOMD Veri Setleri ve Modeldeki Kullanım Amaçları

GOMD Gösterge Anahtarı Birincil Kurumsal Kaynak Uzamsal ve Zamansal Kapsam Birim Bilimsel Modeldeki Rolü ve Kullanım Amacı
UNCTAD_LSCI_MONTHLY UNCTAD Düzenli Hat Bağlantılılık Veritabanı 31 Denizci Ülke (2006-02 .. 2026-06, Toplam 3.410 Aylık/Dönemlik Gözlem; 5 Ülke Çizilen N = 550 Dönem) LSCI Skoru Aylık/dönemlik UNCTAD Doğrusal Deniz Taşımacılığı Bağlantılılık İndeksi
OECD_SOE_TRANSPORT_CONT_SEA_TEU_NA_NA & wb_container_port_traffic OECD / UNCTAD / Dünya Bankası WDI 168 Ülke (1990–2024, Toplam 3.384 Gözlem; Türkiye için 1990–2023 Gerçek N = 34 Yıl) TEU / Yıl Türkiye ve karşılaştırma ülkelerinin gerçek liman konteyner elleçleme trafiği (TEU)
wto_wb_merchandise_exports_usd & imports_usd DTÖ (WTO) / Dünya Bankası WDI 213 Ülke (1970–2025, Toplam 21.769 Gözlem; Türkiye için 112 Yıllık Gözlem) Cari ABD$ Ulusal yıllık mal ihracatı (10.905 kayıt) ve mal ithalatı (10.864 kayıt) serileri
lpi_wb_overall_score Dünya Bankası LPI 168 Ülke (2007–2023, Toplam 1.141 Gözlem; 6 Ülke N = 42 Dalga) Skor (1–5) Gümrük, liman altyapısı ve deniz sevkiyat kalitesini ölçen Lojistik Performans İndeksi

🔬 3. Bilimsel Çıkarımlar, Ekonometrik Testler ve Ampirik Kanıtlar

  • Türkiye Konteyner Liman Trafiği (TEU) ve Dış Ticaret Büyümesi: Canlı GOMD verilerine göre Türkiye limanlarında elleçlenen konteyner hacmi her yıl ortalama +0,368 Milyon TEU/yıl (Mann–Kendall τ = 0,8892, p < 10⁻⁶) artarak 13,89 Milyon TEU seviyesine, toplam mal dış ticareti (ihracat + ithalat) ise 638,73 Milyar ABD$’a ulaşmıştır (Pettitt yapısal kırılma yılı = 2012).
  • Türkiye LSCI ve LPI Lojistik Performansı: Türkiye’nin UNCTAD LSCI deniz bağlantılılık skoru 88,92’ye (İtalya 81,22 ve Yunanistan 64,25’in üzerinde!), LPI lojistik skoru ise 3,40–3,52 bandına yükselmiştir.
  • Sabit Etkiler (FE) Deniz Bağlantılılığı – Ticaret Esnekliği: Ülke sabit etkileri arındırıldığında UNCTAD LSCI deniz bağlantılılık indeksindeki %1’lik artış, ülkenin toplam mal dış ticaret hacmini istatistiksel olarak anlamlı biçimde artırmaktadır (p < 10⁻⁶).
  • Engle–Granger Eşbütünleşme: Türkiye’nin konteyner liman trafiği (Milyon TEU) ile toplam mal ticareti (Milyar ABD$) arasında uzun dönemli eğim β = 49,95 Milyar ABD$ / Milyon TEU (ADF t = -2,374) olarak hesaplanmıştır.

📈 4. Olayı Canlı İzleme: GOMD Sistem Görselleştirmeleri ve Python Bilimsel Grafik Kanıtı

🧭 Canlı UNCTAD Aylık/Dönemlik Düzenli Hat Bağlantılılık İndeksi (N = 3.410 · TUR)

2006–2026 UNCTAD LSCI deniz bağlantılılık serisini Türkiye (110 dönem) ve 31 denizci ülke için canlı grafikte inceleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı OECD / WDI Konteyner Liman Elleçleme Trafiği (TEU · TUR)

Türkiye ve karşılaştırma ülkelerinin 1990–2024 gerçek konteyner liman elleçleme hacmini (TEU) canlı zaman grafiğinde açın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı DTÖ (WTO) / Dünya Bankası Yıllık Mal İhracatı (N = 10.905 · TUR)

1970–2025 DTÖ/WDI mal ihracatı ve ithalatı (toplam 21.769 kayıt) serilerini ülke bazında karşılaştırın.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Canlı Dünya Bankası Lojistik Performans İndeksi (LPI · TUR)

168 ülkenin gümrük, liman altyapısı ve deniz sevkiyat kalitesini ölçen LPI skorlarını canlı harita ve tabloda görüntüleyin.

🔗 GOMD Modülünde Canlı İzle ↗
🧭 Tam Çözünürlüklü 4-Panelli (2×2) Python Kanıt Grafiği (PNG)

1.199 gerçek aylık/yıllık gözlemle çizilen 4-panelli deniz ticareti, TEU, LSCI ve LPI grafiğini tam ekran açın.

🔗 GOMD Modülünde Canlı İzle ↗
🐍 Python (gomd v2.0.0) ve Matplotlib 4-Panelli Kanıt Grafiği — Canlı https://gomd.pirireis.edu.tr Verisiyle Üretilmiştir (cs10_maritime_trade_port_connectivity_logistics_panel) 🔍 Tam Çözünürlüklü Grafiği Aç ↗
Vaka Çalışması 10 Bilimsel Görselleştirme Grafiği

🏛️ 5. Kanıta Dayalı Politika ve Yönetişim Önerileri (COP31 Türkiye ve Kamu Kurumları)

  1. Doğu Akdeniz ve Karadeniz "Akıllı ve Yeşil Aktarma Limanları" Stratejisi: Türkiye’nin LSCI skorunda (88,92) İtalya ve Yunanistan’ı geride bırakmış olması stratejik bir avantajdır; Mersin/Doğu Akdeniz Ana Konteyner Limanı, Filyos (Karadeniz) ve Çandarlı/Aliağa yatırımlarında otomatik vinç elektrifikasyonu ve dijital gümrük tek pencere sistemiyle LPI skoru 3,52’den 4,0+ bandına taşınmalıdır.
  2. Orta Koridor Deniz-Demiryolu Çok Modlu Entegrasyonu: Her +1 Milyon TEU liman kapasitesinin ~50 Milyar ABD$ dış ticaret hacmiyle ilişkili olduğu bulgusuna dayanarak, Karadeniz ve Marmara limanlarının Bakü–Tiflis–Kars ve Kalkınma Yolu demiryolu koridorlarıyla kesintisiz konteyner blok tren bağlantısı tamamlanmalıdır.

🚀 6. Google Colab’da Doğrudan Çalıştırılabilir Tam Python Kodu (Canlı Sunucu: https://gomd.pirireis.edu.tr)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Küresel Deniz Ticareti, Konteyner Liman Trafiği (TEU), UNCTAD LSCI Doğrusal Bağlantılılık, Dünya Bankası LPI ve OECD Mavi Ekonomi GSYH Paneli (1970–2025)
Global Maritime Trade, Container Port Throughput (TEU), UNCTAD LSCI, World Bank LPI & OECD Ocean Economy GDP Panel (1970–2025)
==============================================================================
GOMD Python SDK v2.0.0 — Official 100% Real-Data Reproducible Case Study
Google Colab Install: !pip install -q --force-reinstall --no-cache-dir https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl
"""

# ==============================================================================
# ADIM 0: GOMD Python SDK v2.0.0 Kurulumu ve Canlı Veri Doğrulama Yardımcıları
# STEP 0: Install GOMD Python SDK v2.0.0 & Live GOMD Data Verification Helpers
# ==============================================================================
import importlib
import os
import subprocess
import sys
import math
import json
from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if hasattr(sys.stdout, "reconfigure"):
    try:
        sys.stdout.reconfigure(encoding="utf-8", errors="replace")
    except Exception:
        pass

# Yerel geliştirme ortamında sdk/python varsa önceliklendir; Colab'da resmi wheel kur
_local_sdk = Path(__file__).resolve().parent.parent / "python" if "__file__" in globals() else None
if _local_sdk and (_local_sdk / "gomd" / "__init__.py").is_file():
    if str(_local_sdk) not in sys.path:
        sys.path.insert(0, str(_local_sdk))

_IN_COLAB = "google.colab" in sys.modules
_GOMD_WHEEL_URL = "https://gomd.pirireis.edu.tr/sdk/dist/gomd-2.0.0-py3-none-any.whl"
try:
    import gomd  # noqa: F401
    if _IN_COLAB:
        subprocess.check_call([
            sys.executable, "-m", "pip", "install", "-q",
            "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
        ])
except ImportError:
    subprocess.check_call([
        sys.executable, "-m", "pip", "install", "-q",
        "--force-reinstall", "--no-cache-dir", _GOMD_WHEEL_URL
    ])

import gomd
for _mod_name in list(sys.modules.keys()):
    if _mod_name == "gomd" or _mod_name.startswith("gomd."):
        importlib.reload(sys.modules[_mod_name])
import gomd
from gomd import GOMDClient

client = GOMDClient("https://gomd.pirireis.edu.tr")


def fetch_gomd_annual_series(
    indicator: str,
    entity: str = "TUR",
    period_from: int = 1950,
    period_to: int = 2026,
) -> dict:
    """
    GOMD sunucusundan (https://gomd.pirireis.edu.tr) gerçek gözlem serisini çeker
    ve {yıl: float(değer)} sözlüğü olarak döndürür. Sentetik veri üretmez.
    """
    rows = client.get_series(
        indicator=indicator,
        entity=entity,
        period_from=period_from,
        period_to=period_to,
        limit=5000,
        as_df=False,
    )
    annual = {}
    for r in rows:
        p_str = str(r.get("period") or "").strip()
        val = r.get("value")
        if val is None or not p_str:
            continue
        # Yıllık kayıtları doğrudan al; aylık kayıt varsa yıl bazında ortalamasını/değerini tut
        yr_str = p_str[:4]
        if yr_str.isdigit():
            yr = int(yr_str)
            if period_from <= yr <= period_to:
                if len(p_str) == 4 or yr not in annual:
                    annual[yr] = float(val)
    if not annual:
        raise RuntimeError(f"GOMD API'den gerçek veri alınamadı: indicator={indicator}, entity={entity}")
    print(f"📡 [GERÇEK GOMD VERİSİ] {indicator:<44} | Entity={entity:<18} | N={len(annual):<3} yıl ({min(annual)}–{max(annual)})")
    return dict(sorted(annual.items()))


print(f"✅ GOMD Python SDK Sürümü / Version : v{gomd.__version__}")
print(f"🌐 Canlı Veri Sunucusu / Server     : {client.base_url}")
print(f"🏛️ Kurum / Institution              : Pîrî Reis Üniversitesi — GOMD Bilimsel Veri Konsorsiyumu (COP31 Türkiye)")
print(f"📚 Akademik Atıf / Citation          : {gomd.cite('apa')[:115]}...")

# ==============================================================================
# ADIM 1: Canlı GOMD Sunucusundan WTO Ticaret, Liman TEU, LSCI, LPI ve OECD Serileri
# STEP 1: Live Retrieval of WTO Trade, Port TEU, LSCI, LPI & OECD Ocean GDP Series
# ==============================================================================
from gomd.stats import (
    panel_fixed_effects,
    cointegration_eg_test,
    mann_kendall_sen,
    pettitt_changepoint,
)

# 1. Türkiye (TUR) 1970–2025 WTO İhracat/İthalat, Liman TEU ve OECD Mavi Ekonomi GSYH Payı
tur_exp  = fetch_gomd_annual_series("wto_wb_merchandise_exports_usd", entity="TUR", period_from=1970, period_to=2025)
tur_imp  = fetch_gomd_annual_series("wto_wb_merchandise_imports_usd", entity="TUR", period_from=1970, period_to=2025)
tur_teu  = fetch_gomd_annual_series("wb_port_traffic", entity="TUR", period_from=2000, period_to=2025)
tur_lsci = fetch_gomd_annual_series("wb_liner_connectivity_annual", entity="TUR", period_from=2006, period_to=2024)
tur_lpi  = fetch_gomd_annual_series("lpi_wb_overall_score", entity="TUR", period_from=2007, period_to=2024)
tur_ogdp = fetch_gomd_annual_series("oecd_ocean_economy_gdp_share_pct", entity="TUR", period_from=1995, period_to=2025)
tur_capx = fetch_gomd_annual_series("unctad_imo_maritime_decarbonization_capex_usd_bn", entity="TUR", period_from=1995, period_to=2025)

# 2. 6 Deniz Ticaret Ekonomisinde Çok Ülkeli Karşılaştırma ve Sabit Etkiler (FE) Panel Tahmini
trade_countries = ["TUR", "CHN", "DEU", "ITA", "ESP", "GRC"]
trade_summary = []
fe_trade_rows = []

for iso in trade_countries:
    exp_s  = fetch_gomd_annual_series("wto_wb_merchandise_exports_usd", entity=iso, period_from=2006, period_to=2025)
    imp_s  = fetch_gomd_annual_series("wto_wb_merchandise_imports_usd", entity=iso, period_from=2006, period_to=2025)
    lsci_s = fetch_gomd_annual_series("wb_liner_connectivity_annual", entity=iso, period_from=2006, period_to=2024)
    lpi_s  = fetch_gomd_annual_series("lpi_wb_overall_score", entity=iso, period_from=2007, period_to=2024)

    common_t = sorted(set(exp_s) & set(imp_s) & set(lsci_s))
    for y in common_t:
        tot_trade_bn = (exp_s[y] + imp_s[y]) / 1e9
        fe_trade_rows.append({
            "ISO3": iso,
            "year": y,
            "log_trade_bn": math.log(max(tot_trade_bn, 1.0)),
            "log_lsci": math.log(max(lsci_s[y], 1.0)),
        })

    ly_tr = max(set(exp_s) & set(imp_s))
    ly_ls = max(lsci_s)
    ly_lp = max(lpi_s)
    trade_summary.append({
        "ISO3": iso,
        "WTO_Exports_BnUSD": round(exp_s[ly_tr] / 1e9, 2),
        "WTO_Imports_BnUSD": round(imp_s[ly_tr] / 1e9, 2),
        "Total_Trade_BnUSD": round((exp_s[ly_tr] + imp_s[ly_tr]) / 1e9, 2),
        "UNCTAD_LSCI": round(lsci_s[ly_ls], 2),
        "WB_LPI_Score": round(lpi_s[ly_lp], 3),
    })

df_trade = pd.DataFrame(trade_summary)
fe_trade = panel_fixed_effects(fe_trade_rows, entity_col="ISO3", y_col="log_trade_bn", x_col="log_lsci")
mk_teu = mann_kendall_sen(list(tur_teu.values()), t=list(tur_teu.keys()))
yrs_teu_exp = sorted(set(tur_teu) & set(tur_exp))
eg_teu_exp = cointegration_eg_test([tur_teu[y] / 1e6 for y in yrs_teu_exp], [tur_exp[y] / 1e9 for y in yrs_teu_exp])

print("\n🚢 6 Deniz Ticaret Ekonomisinde Gerçek WTO Ticaret, UNCTAD LSCI ve Dünya Bankası LPI Tablosu:")
print(df_trade.to_string(index=False))
print(f"\n📈 Türkiye (TUR) Konteyner Liman Trafiği (TEU) Trendi : +{mk_teu['theil_sen_slope']/1e6:.3f} Milyon TEU/yıl (Son Gözlem = {tur_teu[max(tur_teu)]/1e6:.2f} Milyon TEU)")
print(f"📊 Deniz Ticareti Sabit Etkiler (FE) Panel Regresyonu (N={fe_trade['n_obs']} gözlem, Within R² = {fe_trade['r_squared_within']:.4f}):")
print(f"   • log(UNCTAD LSCI) -> log(Dış Ticaret) Esnekliği (β_FE) : {fe_trade['beta_fe']:+.4f} (SE = {fe_trade['std_error']:.4f}, t = {fe_trade['t_stat']:.2f}, p = {fe_trade['p_value']:.4e})")
print(f"   • Türkiye Liman TEU <-> WTO İhracat Eşbütünleşme Eğimi  : +{eg_teu_exp['long_run_slope_beta']:.2f} Milyar USD / Milyon TEU (ADF t = {eg_teu_exp['engle_granger_adf_t_stat']:.3f})")

# ==============================================================================
# ADIM 2: Türkiye Konteyner Liman Trafiği (TEU), WTO İhracatı ve Mavi Ekonomi GSYH
# STEP 2: Visualization of Türkiye Container Port Traffic (TEU), Exports & Ocean GDP
# ==============================================================================
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13.5, 5.0), dpi=120)
fig.patch.set_facecolor("#071324")
for ax in (ax1, ax2):
    ax.set_facecolor("#0b1d36")
    ax.tick_params(colors="#cbd5e1")
    for s in ax.spines.values():
        s.set_color("#1e3a5f")

# Panel A: Türkiye (TUR) Gerçek Konteyner Liman Trafiği (Milyon TEU) ve WTO Mal İhracatı (Milyar USD)
yrs_teu = sorted(set(tur_teu) & set(tur_exp))
ax1.bar(yrs_teu, [tur_teu[y] / 1e6 for y in yrs_teu], color="#38bdf8", alpha=0.82, label="Türkiye Konteyner Liman Trafiği (Milyon TEU)")
ax1_t = ax1.twinx()
ax1_t.plot(yrs_teu, [tur_exp[y] / 1e9 for y in yrs_teu], color="#22c55e", marker="o", lw=2.2, label="WTO Mal İhracatı (Milyar USD)")
ax1_t.tick_params(colors="#86efac")
ax1.set_title("A) Türkiye (TUR) Konteyner Liman Trafiği (TEU) & WTO İhracatı", color="#f8fafc", fontweight="bold")
ax1.set_ylabel("Konteyner Liman Trafiği (Milyon TEU)", color="#38bdf8")
ax1_t.set_ylabel("WTO Mal İhracatı (Milyar USD)", color="#22c55e")
ax1.grid(alpha=0.18, color="#64748b")

# Panel B: Türkiye (TUR) OECD Okyanus Ekonomisi GSYH Payı (%) ve Denizcilik Karbonsuzlaştırma CapEx (Milyar USD)
yrs_ogdp = sorted(set(tur_ogdp) & set(tur_capx))
ax2.plot(yrs_ogdp, [tur_ogdp[y] for y in yrs_ogdp], color="#14b8a6", marker="o", lw=2.2, label="OECD Okyanus Ekonomisi GSYH Payı (%)")
ax2_t = ax2.twinx()
ax2_t.plot(yrs_ogdp, [tur_capx[y] for y in yrs_ogdp], color="#f59e0b", marker="s", ls="--", lw=2.0, label="UNCTAD/IMO Karbonsuzlaştırma CapEx (Milyar USD)")
ax2_t.tick_params(colors="#fcd34d")
ax2.set_title("B) Türkiye Okyanus Ekonomisi GSYH Payı & Karbonsuzlaştırma CapEx (1995–2025)", color="#f8fafc", fontweight="bold")
ax2.set_ylabel("Okyanus Ekonomisi GSYH Payı (%)", color="#14b8a6")
ax2_t.set_ylabel("Karbonsuzlaştırma CapEx (Milyar USD)", color="#f59e0b")
ax2.grid(alpha=0.18, color="#64748b")

fig.suptitle("GOMD Python SDK v2.0.0 — Vaka Çalışması 10: Gerçek Veri Deniz Ticareti, Liman TEU, LSCI & Mavi Ekonomi", color="#ffffff", fontsize=12.5, fontweight="bold", y=1.01)
plt.tight_layout()
fig.savefig("cs10_maritime_trade_port_connectivity_logistics_panel.png", dpi=140, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.show()