Detectability of orangutan nests at satellite resolution (Pleiades Neo, 30 cm) - simulation code and results
Description
Detectability of orangutan nests at satellite resolution (Pleiades Neo, 30 cm) - simulation code and results
- sim.py: sensor degradation model (Gaussian optics + detector integration, MTF ~0.15 at Nyquist; 1 % noise;
products: colour, panchromatic, pansharpened 30 cm / 1.2 m)
- expB2.py: paired implant design (32 real nests rescaled to 0.8-1.3 m and inserted into nest-free canopy chips
from the PeerJ "Without_nest" frames; the same chip without the nest is the control)
BLEND=alpha|poisson python3 expB2.py frozen -> frozen ResNet50 features + logistic regression
BLEND=alpha|poisson python3 expB2.py cnn -> small CNN trained at satellite pixel size
Five-fold cross-validation grouped by nest; AUC with 95 % bootstrap CI over nests; recall at 5 % and 1 % false-positive rate.
- nestloc.json: centre and diameter (px) of each nest in the "nests pictures" folder
- res_*.json: results
- make_figure2.py: Figure 2 (AUC versus resolution)
- make_figure3.py: Figure 3 (dedicated network AUC, nests found vs false-alarm rate, individuals relocated)
Assumption: native GSD 3.5 cm (Canon S100, f = 5.2 mm, ~100 m above the canopy).
Additional analyses (from nests to individuals)
- run_strict.py: recall at strict false-alarm rates (21 000 held-out nest-free chips) -> res_strict.json
- reg_test.py + run_twodate.py: co-registration of consecutive frames and two-date change detection -> res_twodate.json
- sim_spatial.py, sim_lift.py: forest blocks of 1 km2, nests along travel paths, block flagging -> res_spatial*.json, res_lift.json
Published detector and Grad-CAM (Sections 3.1 and 3.2)
- detect.py, detect_sizes.py: detector of Wich et al. (2025) applied to the PeerJ frames (tiles, and whole frames at 640/1280/1920 px) -> dets_native.json, dets_sizes.json
- tm.py: template matching of the 32 close-up nest photographs against the drone frames -> tm.json
- gradcam.py: retrains the dedicated CNN on the same chips and computes Grad-CAM maps on held-out nests -> gradcam_chips.csv, gradcam_examples.npy (not included, regenerated by the script)
- make_figure_gradcam.py: Figure 2 (Grad-CAM); make_figure2.py now draws Figure 3 and make_figure3.py Figure 4
Statistical analyses (R)
- export_for_R.py: writes the per-chip CSV files used by R
- stats_R/analysis.R: all statistical tests (pROC: AUC with DeLong CI; lme4: mixed-effects logistic regression, odds ratios;
Wilcoxon, Fisher, McNemar and binomial tests). Open stats_R/nest_stats.Rproj in RStudio and run source("analysis.R").
Output: stats_R/results_R.txt (R 4.3.3, pROC 1.18.5, lme4 1.1.35.1).
Sensitivity to sensor sharpness (Section 4.2)
- sim.py now reads SIGMA_K (default 0.542, MTF at Nyquist ~0.15; 0.391 gives ~0.30)
- SIGMA_K=0.391 BLEND=mtf30 python3 mtf_sensitivity.py -> res_B2_cnn_mtf30.json
Files
block_flagging.csv
Files
(1.4 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:6e82852f2e8b4029be5eabf5d9e40367
|
5.9 kB | Download |
|
md5:a4f17ddeb69cc78540724ca26ec352ec
|
1.0 kB | Preview Download |
|
md5:46f34ca3a637d83222403aae21324473
|
669.0 kB | Preview Download |
|
md5:35d8562a6a332f8b484e7da4fb6ba326
|
1.1 kB | Download |
|
md5:1b9b63b01209fd2c9a0646da8c819c18
|
744 Bytes | Download |
|
md5:869b3c293ca6374072aa55338a796adf
|
21.6 kB | Preview Download |
|
md5:7db92c661ac50bbd1c4c41e8f6817017
|
104.3 kB | Preview Download |
|
md5:7e4556baa5d25aa9ddb8e37978453e7e
|
8.6 kB | Download |
|
md5:4bee7284e9b9a80a8ab09562f40a6401
|
3.6 kB | Download |
|
md5:c58883e557931368ba02b85397c5a314
|
6.8 kB | Download |
|
md5:f334919e6f2f72aa44c63340729c53ee
|
236.9 kB | Preview Download |
|
md5:a08bda4bfc35e24e35d40b26c90f8717
|
2.6 kB | Download |
|
md5:82f7beea26a2d092878f2dd38b56c9bd
|
3.5 kB | Download |
|
md5:6bb4d358f899befb85e8b3ff5e5adf77
|
2.4 kB | Download |
|
md5:85ebab77dd157f5b9e83f97edcb1dc56
|
520 Bytes | Download |
|
md5:c82387e551bd6098ec0d8bcf3e9c22c7
|
92 Bytes | Download |
|
md5:c2863cc2ffef36b2e7cb646c6bb8f672
|
5.9 kB | Preview Download |
|
md5:8088d618932d04360dca62fd051d887c
|
27.5 kB | Preview Download |
|
md5:6e8d400d420c1280698653efdd10925a
|
2.8 kB | Preview Download |
|
md5:55c3f97494ea5534405dd3ad7a099ccf
|
1.4 kB | Download |
|
md5:76dd44b63721213435c4db4168650aa6
|
833 Bytes | Preview Download |
|
md5:f36f3a0cf87f2d7caedc5e7017ba8659
|
505 Bytes | Preview Download |
|
md5:b4b932a2817c0b22e562d117a3380198
|
836 Bytes | Preview Download |
|
md5:2c9ee0969b53673a1e1216b887b32c7d
|
3.2 kB | Preview Download |
|
md5:39f42e1a2e6379e18aa769d16bb4ed10
|
3.1 kB | Preview Download |
|
md5:bc7138b699f7f57d58401084071d85ed
|
2.5 kB | Preview Download |
|
md5:fa674ee8fc3e672df099a7b5ad413b33
|
1.2 kB | Preview Download |
|
md5:4e37af51e0b14daa2e71bea787a1c5b0
|
573 Bytes | Preview Download |
|
md5:83fa4d05d1181edce1f3eb5e3579f009
|
577 Bytes | Preview Download |
|
md5:4394f7b9a6a7db6d17c274be4c68de66
|
802 Bytes | Preview Download |
|
md5:95b2e1efbb7165405b92cbf7a14df3fe
|
5.0 kB | Preview Download |
|
md5:c96014968dac220609506e1a7050c36f
|
3.8 kB | Download |
|
md5:0bec14e174bbe1b24b36d744f930f20e
|
6.7 kB | Download |
|
md5:da643633f9bb2f0631ddfe919ac5def0
|
2.0 kB | Download |
|
md5:c481a4128e77a2c632a5c383f9b6fccb
|
708 Bytes | Download |
|
md5:5c538a7293efe6009433453ec35f310c
|
3.6 kB | Download |
|
md5:fe36a952ff8776bd8ed1e686e635a925
|
163.1 kB | Preview Download |
|
md5:4a137b9853010d01dd5fc73d3db80515
|
7.3 kB | Preview Download |
|
md5:1e499238ee52a9d2c7a4509dc2a4fbdc
|
891 Bytes | Download |
|
md5:8f9f3924077dea3cdbf56ea02e34a868
|
67.4 kB | Preview Download |