Saved in:
Bibliographic Details
Main Author: Favoretto, Fabio
Format: Recurso digital
Language:
Published: Zenodo 2026
Online Access:https://doi.org/10.5281/zenodo.20268179
Tags: Add Tag
No Tags, Be the first to tag this record!
Table of Contents:
  • <p># Regulatory Language Limits Satellite-Based Enforcement in Marine Protected Areas</p> <p>**Submission package for *Science* (Policy Forum) + Zenodo archive**</p> <p>Authors: Fabio Favoretto, Catalina López-Sagástegui, Paolo Guidetti, Aldo Simone, Jennifer Sletten, Virgil Zetterlind, Octavio Aburto-Oropeza, Keiron Fraser, Enric Sala.</p> <p>Corresponding author: Fabio Favoretto — <fabio.favoretto@plymouth.ac.uk></p> <p>---</p> <p>## Contents</p> <p>```<br>for_submission/<br>├── manuscript/<br>│   ├── Favoretto_Main_Manuscript.docx          Final main text<br>│   ├── Favoretto_Supplementary_Materials.docx  Final supplementary<br>│   └── Favoretto_Cover_Letter_Science.docx     Cover letter to Science editors<br>├── figures/<br>│   ├── Figure1_regulation_preparedness.{pdf,png}<br>│   ├── Figure2_improvement_potential.{pdf,png}<br>│   ├── Figure3_legislation_enforcement.{pdf,png}<br>│   ├── FigureS1_country_comparison.{pdf,png}<br>│   ├── FigureS2_enforcement_features.{pdf,png}<br>│   ├── FigureS3_legislative_age.{pdf,png}<br>│   └── FigureS4_score_vs_recency.{pdf,png}<br>├── code/<br>│   ├── python/<br>│   │   ├── nlp_contextual_scoring.py    Primary scoring (RPI + Legislation Readiness)<br>│   │   ├── build_legislation_index.py   Document-year metadata + country index<br>│   │   └── nlp_validation_scoring.py    Optional LLM validation cross-check<br>│   └── R/<br>│       ├── 01_policy_unpreparedness_analysis.R   Generates Fig 1, 2, S1, S2<br>│       └── 02_legislation_readiness_figures.R    Generates Fig 3, S3, S4<br>├── data/<br>│   ├── input/<br>│   │   └── navigator_priority_countries_202507.csv   9,740 MPA regulations<br>│   ├── legislation_texts/                            119 FAOLEX PDFs + 7 EN translations<br>│   ├── faolex_fisheries_legislation.csv              FAOLEX document metadata<br>│   └── legislation_extracted_metadata.csv            Extracted year/title metadata<br>├── outputs/                                  Pre-computed analysis outputs<br>│   ├── regulation_scores.csv                 9,740 scored MPAs<br>│   ├── legislation_country_scores.csv        15 country legislation scores<br>│   ├── legislation_scores.csv                119 document-level scores<br>│   ├── legislation_readiness_index.csv       Country index with year metadata<br>│   ├── manuscript_statistics.json            Key stats cited in main text<br>│   ├── manuscript_legislation_statistics.json<br>│   └── derived/{country_summary.csv,fix_impact_summary.csv}<br>├── requirements.txt                          Python dependencies<br>├── R_dependencies.txt                        R package list<br>├── LICENSE                                   MIT<br>└── README.md                                 This file<br>```</p> <p>**One file is intentionally excluded** from this package due to size: `navigator_priority_countries_202507_clean.gpkg` (~581 MB), the GeoPackage of MPA polygon geometries. It is required only to regenerate **Figure 1A** (the map). It can be rebuilt from the ProtectedSeas Navigator shapefile distribution at <https://navigatormap.org/> or obtained on request from the corresponding author.</p> <p>---</p> <p>## Reproducing every number in the paper (≤ 5 minutes)</p> <p>The analysis is **fully deterministic**: no machine-learning models, no random seeds, no external APIs in the scoring path. Given the same input data, any machine with Python 3.8+ produces identical scores.</p> <p>### Environment</p> <p>```bash<br># Python (only pdfplumber is strictly required; lxml is used by nlp_validation_scoring.py)<br>pip install -r requirements.txt</p> <p># R packages<br>Rscript -e 'install.packages(c("tidyverse","sf","viridis","scales","patchwork","ggrepel"))'<br>```</p> <p>### Run</p> <p>From the root of this package:</p> <p>```bash<br># 1. Score all 9,740 MPAs and all 119 FAOLEX documents (~2 minutes)<br>python3 code/python/nlp_contextual_scoring.py</p> <p># 2. Build the year-metadata-enriched legislation index<br>python3 code/python/build_legislation_index.py</p> <p># 3. Generate figures 1, 2, S1, S2 (regulation side)<br>Rscript code/R/01_policy_unpreparedness_analysis.R</p> <p># 4. Generate figures 3, S3, S4 (legislation side)<br>Rscript code/R/02_legislation_readiness_figures.R<br>```</p> <p>Outputs are written to `outputs/latest/` next to the inputs. Compare against the pre-computed `outputs/` directory in this package to verify reproducibility.</p> <p>> ⚠ **Workflow note:** `build_legislation_index.py` and `nlp_contextual_scoring.py` both write `manuscript_legislation_statistics.json`. To reproduce the manuscript numbers, run `nlp_contextual_scoring.py` **last** so its statistics overwrite the build-script's.</p> <p>### Optional: LLM validation cross-check</p> <p>`code/python/nlp_validation_scoring.py` reproduces the Claude-API-based independent scoring used to validate the keyword Legislation Readiness Index. Requires `ANTHROPIC_API_KEY` and is NOT needed to reproduce any number in the manuscript — it is only a cross-validation that the keyword scoring captures meaningful legal provisions.</p> <p>---</p> <p>## Key reproduced numbers (cross-checked against fresh outputs)</p> <p>| Claim in manuscript | Output value | Source file |<br>|---|---|---|<br>| 9,740 zonations, 15 countries | 9,740 / 15 | `navigator_priority_countries_202507.csv` |<br>| Mean RPI = 33 | 33.0 | `manuscript_statistics.json` |<br>| Median RPI = 33 | 33.4 | `manuscript_statistics.json` |<br>| ~40% MPAs below 30 | 39.2% | `manuscript_statistics.json` |<br>| No MPA above 75 | max score 71.3 | `regulation_scores.csv` |<br>| 4% mention monitoring | 3.7% | `manuscript_statistics.json` |<br>| 68% with prohibition | 68.1% | `manuscript_statistics.json` |<br>| 61% with discretionary | 61.3% | `manuscript_statistics.json` |<br>| Mean RPI → 76 after fixes (+130%) | 75.9 / 129.7% | `manuscript_statistics.json` |<br>| Mean Legislation Readiness = 47 | 47.0 | `manuscript_legislation_statistics.json` |<br>| Best: Maldives 67; Worst: Ecuador 19, Gabon 19 | 67 / 19 / 19 | `legislation_country_scores.csv` |<br>| Evidence admissibility mean = 11/22 | 10.9 | `manuscript_legislation_statistics.json` |<br>| Pearson r = 0.32, p = 0.25 (recency vs readiness) | 0.316 / 0.2506 | computed by `02_legislation_readiness_figures.R` |</p> <p>---</p> <p>## Data provenance & licensing</p> <p>- **ProtectedSeas Navigator** regulatory text and zone polygons: © ProtectedSeas / Anthropocene Institute, distributed under the Navigator data-use terms. The CSV extract included here covers the 15 countries used in our sample (release 2025-07).<br>- **FAOLEX** fisheries legislation PDFs: © FAO. Included for reproducibility of the keyword scoring. Original documents are publicly accessible at <https://www.fao.org/faolex/>.<br>- **Analysis code** (`code/`): MIT License (see `LICENSE`).<br>- **Pre-computed outputs and figures**: CC-BY-4.0.</p> <p>---</p> <p>## Citing this work</p> <p>```<br>Favoretto, F., López-Sagástegui, C., Guidetti, P., Simone, A., Sletten, J.,<br>Zetterlind, V., Aburto-Oropeza, O., Fraser, K., & Sala, E. (2026).<br>Regulatory Language Limits Satellite-Based Enforcement in Marine Protected<br>Areas. Submitted to Science (Policy Forum). Zenodo. doi:[to be assigned]<br>```</p> <p>Once the *Science* DOI is issued, please cite the paper directly and use the Zenodo archive only for the data and code.</p> <p>---</p> <p>## Acknowledgments</p> <p>AI tools were used as a coding assistant and for proofreading the manuscript.</p> <p>## Competing interests</p> <p>The authors declare no competing interests.</p>