Temel Kavramlar
Provider
Provider, deprem kaydini belirli bir kaynaktan getiren bilesendir.
Mevcut provider'lar:
ProviderName.PEER: Paket icindeki NGA-West2 flatfile verisini kullanir.ProviderName.AFAD: AFAD/TADAS API uzerinden veri ceker ve waveform indirir.ProviderName.ESM: Engineering Strong-Motion veritabanindan (esm-db.eu; Avrupa, Turkiye, Orta Dogu) islenmis kayitlari arar ve waveform indirir (2.2.0). Herkese acik veri icin anahtar gerekmez. Ayrintilar: ESM saglayicisi.ProviderName.FDSN: FDSN web servislerini dogrudan HTTP ile sorgular (ObsPy gerekmez). Varsayilan olarak event katalogu icinUSGS, istasyon ve waveform icinIRISkullanilir.service/base_urlevent servisini,data_service/data_base_urlise istasyon ve waveform servisini degistirir.record_search=Trueile kayit basina satir doner ve kayitlar indirilebilir. Ayrintilar: FDSN saglayicisi.
FDSN etkin bir EarthquakeAPI uzerinden istasyon ve waveform servisleri de
kullanilabilir:
stations = api.search_fdsn_stations(
network="TU", station="*", channel="HN?",
starttime="2023-02-06", endtime="2023-02-07",
)
traces = api.search_fdsn_waveforms(
network="TU", station="ANK", location="*", channel="HN?",
starttime="2023-02-06T01:16:00Z",
endtime="2023-02-06T01:17:00Z",
)
Istasyon sonucu kanal basina bir DataFrame satiri, waveform sonucu ise
selection_service.waveform.Trace listesidir. Ayni metotlar _async son ekiyle asenkron kullanilabilir.
Provider'lar ortak IDataFetcher sozlesmesini uygular:
get_name()map_criteria(criteria)fetch_data_sync(criteria)fetch_data_async(criteria)
Download destekleyen provider'lar ek olarak IWaveformDownloader uygular.
Mapper
Her provider kendi ham kolonlarini STANDARD_COLUMNS semasina donusturur.
Bu sayede AFAD, PEER ve ESM verileri ayni pipeline icinde birlestirilebilir.
SearchCriteria
Kullanici tarafindan verilen ortak arama modelidir. Provider'lara ozel
parametre formatlarina to_afad_params(), to_peer_params() ve
to_fdsn_params() metotlariyla donusur.
Strategy
Selection strategy, bir DataFrame'i puanlayip secilecek kayitlari belirler.
Ana strateji TBDYSelectionStrategy sinifidir.
Ek stratejiler:
TBDY2018ConstraintStrategy: Sert kriter, hata metrikleri ve cesitlilik limitleriyle izlenebilir secim yapar.ConstraintSelectionStrategy: Eski importlari bozmamak icinTBDY2018ConstraintStrategyalias'i olarak kalir.
Bu stratejiler ERROR_METRICS, ERROR_TOTAL, HARD_FILTERS ve
SELECTION_REASON kolonlarini uretir. PEER ve AFAD mapper ciktilari ortak
STANDARD_COLUMNS semasina geldigi icin iki provider icin ayni kolonlari
uretmek mumkundur.
Eksik veri
Cikti DataFrame'lerinde sayisal bosluklar 0 ile doludur. Secim algoritmasi ise
bosluklari gorur: VS30(m/s) ve MAGNITUDE icin 0 "bilinmiyor" sayilir. Vs30
araligi verildiyse Vs30'u bilinmeyen kayit missing:VS30(m/s) nedeniyle elenir.
Tekrar tespiti ve olay limiti
Birden fazla provider kullanildiginda ayni deprem farkli adlarla gelebilir.
Pipeline bunlari EVENT_GROUP altinda birlestirir (ayni yil, buyukluk farki
<= 0.5, episantr mesafesi <= 50 km; provider ici artci soklar birlestirilmez)
ve ayni istasyonun (<= 1 km) ikinci kopyasini aday havuzundan cikarir.
"Ayni depremden en fazla max_per_event kayit" siniri EVENT_GROUP'a gore
uygulanir. Esikler ve tercih edilen provider SelectionConfig.dedup ile ayarlanir:
from selection_service.enums.enums import DesignCode, ProviderName
from selection_service.processing.criteria import DedupConfig, SelectionConfig
config = SelectionConfig(
design_code=DesignCode.TBDY_2018,
dedup=DedupConfig(
prefer_provider=ProviderName.AFAD, # tekrar kayitlarda AFAD korunur
max_event_distance_km=50,
max_mag_diff=0.5,
max_station_distance_km=1.0,
# enabled=False -> olay birlestirme ve tekrar elemesi kapali
),
)
Ayrintilar icin 2.0 Gecis Rehberi.
TBDY uygunluk raporu
report["compliance"], secilen ve istenen kayit sayisini (num_records; TBDY icin
her yon 11 kayit, 11 x 2 = 22), eksik kayit sayisini, ayni depremden secilen en
fazla kayit sayisini ve warnings listesini icerir. Kayit takimi (H1 + H2) olarak
sayiyorsaniz num_records=11 verin.
Pipeline
Pipeline sirasi:
- Girdi kontrolu.
- Provider'lardan veri cekme.
- Verileri birlestirme.
- Stratejiyi uygulama.
PipelineResultve rapor uretme.
Result modeli
Metotlar hata firlatmak yerine cogu yerde Result.ok(value) veya
Result.fail(error) dondurur.
result = api.run_sync(criteria, strategy.get_name())
if result.success:
data = result.value
else:
print(result.error)