=== versions === python 3.12.0 | numpy 2.5.4 | scipy 1.18.1 | rasterio 1.5.2 | geopandas 1.2.0 | pystac-client 0.9.1 === Step 1: search and read Sentinel-1 RTC === grid: 1112 x 1141 pixels of 10 m in EPSG:32637 orbit pass pre_scenes first_pre last_pre post_scenes first_post valid_% 14 ascending 10 12 Oct 2022 28 Jan 2023 1 09 Feb 2023 100.0 21 descending 11 01 Oct 2022 29 Jan 2023 1 10 Feb 2023 100.0 94 descending 11 06 Oct 2022 03 Feb 2023 1 15 Feb 2023 100.0 read in 34.4 s === Step 2: download the HOT/OSM destroyed-buildings reference === 3239 destroyed-building polygons in Turkey | sources: {'cscrs': 1542, 'CopernicusEMS': 739, 'microsoft/BuildingFootprints': 115, 'cscrc': 107, 'OpenAerialMap': 31, 'mapillary': 5, 'HGM': 3, 'SkySat': 3, 'cscrs;microsoft/BuildingFootprints': 2, 'microsoft/BuildingFootprints;cscrs': 2, 'OpenAerialMap;Maxar': 2, 'maxar Premium': 1, 'cscrs;Bing': 1, 'cscrsm': 1} 730 of them inside the Antakya study area === Step 3: ESA WorldCover 2021 built-up mask === built-up: 25.3% of the study area (32.1 km2) === Step 4: log ratio and pre-event z-score per orbit and polarisation === orbit pol post built_sd_dB |LR|>3dB_% |z|>2_% |z|>2_%_control 14 VV 09 Feb 1.71 30.2 19.2 8.6 14 VH 09 Feb 1.64 28.3 18.4 9.3 21 VV 10 Feb 1.74 29.7 18.6 7.6 21 VH 10 Feb 1.64 28.9 19.5 8.3 94 VV 15 Feb 1.41 27.3 22.6 9.0 94 VH 15 Feb 1.41 23.5 19.5 8.4 control = last pre-event date scored against the earlier pre-event dates (no earthquake in between) exceedance by WorldCover class (mean of the 6 orbit/polarisation pairs): land cover pixels |z|>2 % event |z|>2 % control tree cover 499947 11.4 8.9 grassland 192410 11.0 8.5 cropland 117546 11.5 8.4 built-up 321099 19.6 8.5 === Step 5: aggregate to a 200 m grid === 732 cells of 200 m are >= 50 % built-up; 116 contain >= 1 destroyed building (698 of 730 reference buildings fall in scored cells) damage index (mean share of built pixels with |z| > 2 over 6 orbit/polarisation pairs): median 0.200, 95th pct 0.330 === Step 6: how well does each score rank the reference cells? (ROC AUC, 0.5 = random) === score AUC |log ratio|, mean of 6 0.749 share |z|>2, mean of 6 0.838 share |z|>2, orbit 14 VV 0.790 share |z|>2, orbit 14 VH 0.744 share |z|>2, orbit 21 VV 0.781 share |z|>2, orbit 21 VH 0.791 share |z|>2, orbit 94 VV 0.772 share |z|>2, orbit 94 VH 0.774 Spearman rho (damage index vs number of destroyed buildings per cell) = 0.433, p = 9.3e-35 sensitivity to cell size and reference threshold: cell_m damaged_if_>= cells damaged AUC_logratio AUC_zindex 100 1 3150 242 0.723 0.825 100 3 3150 90 0.717 0.828 200 1 732 116 0.749 0.838 200 3 732 65 0.730 0.845 400 1 175 51 0.757 0.858 400 3 175 38 0.755 0.860 === Step 7: unsupervised thresholds and the agreement table === rule threshold flagged precision recall f1 overall_accuracy kappa control 99th pct 0.120 712 0.163 1.000 0.280 0.186 0.011 Otsu on event index 0.226 261 0.356 0.802 0.493 0.739 0.351 event mean + 1 sd 0.271 111 0.541 0.517 0.529 0.854 0.442 event mean + 2 sd 0.331 34 0.706 0.207 0.320 0.861 0.267 confusion table at the Otsu threshold (0.226), 200 m built-up cells: SAR: damaged SAR: not flagged total reference: >= 1 destroyed 93 23 116 reference: none mapped 168 448 616 total 261 471 732 odds ratio 10.8; Fisher exact p = 6.9e-27 === Step 8: figures === saved 01-pre-post-logratio.png, 02-zscore-control-vs-event.png, 03-exceedance-time-series.png, 04-damage-index-vs-reference.png, 05-roc.png, 06-agreement-map.png total run time 46.9 s