Spaces:
Running
Running
Update drone sightings base-event release
Browse filesVerified local release drone-sightings-base-events-uap-20260425-r1: 10 event clusters, 32 source rows, 0 verifier failures.
- dataset_bundle/README.md +3 -0
- dataset_bundle/daily_area_rollup.csv +0 -0
- dataset_bundle/event_sources.csv +0 -0
- dataset_bundle/events.csv +0 -0
- dataset_bundle/limitations_and_blind_spots.md +4 -1
- dataset_bundle/methodology.md +4 -2
- dataset_bundle/public_release_manifest.json +44 -27
- dataset_bundle/quality_checks.md +8 -8
- dataset_bundle/schema_notes.md +3 -0
- dataset_bundle/uap_language_overlay_report.json +91 -0
- public_space_app.py +19 -3
dataset_bundle/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
| 3 |
A small, review-oriented slice of U.S. public-source and FAA-reported drone sightings mapped against official covered-area registries.
|
| 4 |
|
| 5 |
This release tracks reported drone sightings from public-source news stories and FAA preliminary UAS sighting reports; it does not prove intent, wrongdoing, threat, or a verified security breach.
|
|
|
|
| 6 |
|
| 7 |
## Included Files
|
| 8 |
|
|
@@ -10,6 +11,7 @@ This release tracks reported drone sightings from public-source news stories and
|
|
| 10 |
- `monitored_areas.csv`
|
| 11 |
- `event_sources.csv`
|
| 12 |
- `daily_area_rollup.csv`
|
|
|
|
| 13 |
- `public_release_manifest.json`
|
| 14 |
- `methodology.md`
|
| 15 |
- `limitations_and_blind_spots.md`
|
|
@@ -19,6 +21,7 @@ This release tracks reported drone sightings from public-source news stories and
|
|
| 19 |
## Caveats
|
| 20 |
|
| 21 |
- This release tracks reported drone sightings from public-source news stories and official FAA UAS sighting reports; FAA reports are still preliminary sighting records, not verified federal incident findings.
|
|
|
|
| 22 |
- A reported sighting does not by itself prove intent, threat, wrongdoing, or the presence of a hostile actor.
|
| 23 |
- Events are plotted at the covered-area point or centroid, not at a freehand geocoded story location.
|
| 24 |
- Some event dates use article publication dates as bounded proxies when an observed date is not extractable from the story.
|
|
|
|
| 3 |
A small, review-oriented slice of U.S. public-source and FAA-reported drone sightings mapped against official covered-area registries.
|
| 4 |
|
| 5 |
This release tracks reported drone sightings from public-source news stories and FAA preliminary UAS sighting reports; it does not prove intent, wrongdoing, threat, or a verified security breach.
|
| 6 |
+
It also includes a conservative UAP/drone language overlay so readers can distinguish official UAS records from ordinary drone language and sources that explicitly use mystery-drone, UFO, or UAP wording.
|
| 7 |
|
| 8 |
## Included Files
|
| 9 |
|
|
|
|
| 11 |
- `monitored_areas.csv`
|
| 12 |
- `event_sources.csv`
|
| 13 |
- `daily_area_rollup.csv`
|
| 14 |
+
- `uap_language_overlay_report.json`
|
| 15 |
- `public_release_manifest.json`
|
| 16 |
- `methodology.md`
|
| 17 |
- `limitations_and_blind_spots.md`
|
|
|
|
| 21 |
## Caveats
|
| 22 |
|
| 23 |
- This release tracks reported drone sightings from public-source news stories and official FAA UAS sighting reports; FAA reports are still preliminary sighting records, not verified federal incident findings.
|
| 24 |
+
- UAP-adjacent labels are source-language overlap labels only; they do not verify that an object was a UAP, anomalous, or non-human.
|
| 25 |
- A reported sighting does not by itself prove intent, threat, wrongdoing, or the presence of a hostile actor.
|
| 26 |
- Events are plotted at the covered-area point or centroid, not at a freehand geocoded story location.
|
| 27 |
- Some event dates use article publication dates as bounded proxies when an observed date is not extractable from the story.
|
dataset_bundle/daily_area_rollup.csv
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
dataset_bundle/event_sources.csv
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
dataset_bundle/events.csv
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
dataset_bundle/limitations_and_blind_spots.md
CHANGED
|
@@ -1,9 +1,12 @@
|
|
| 1 |
# Limitations And Blind Spots
|
| 2 |
|
| 3 |
- This release tracks reported drone sightings from public-source news stories and FAA preliminary UAS sighting reports; it does not prove intent, wrongdoing, threat, or a verified security breach.
|
|
|
|
| 4 |
- This is a public-source and preliminary-reporting dataset, not a verified government incident ledger.
|
| 5 |
- Stories behind paywalls, JavaScript-heavy pages, or blocked fetches can fall out of the slice.
|
| 6 |
- Event points are covered-area centroids or official point locations, not narrative story coordinates.
|
| 7 |
- Publication dates are used as bounded proxies when a direct observation date is not extractable.
|
| 8 |
- Ambiguous multi-area stories stay in the internal review queue and are excluded from the public map.
|
| 9 |
-
- Current gap: `
|
|
|
|
|
|
|
|
|
| 1 |
# Limitations And Blind Spots
|
| 2 |
|
| 3 |
- This release tracks reported drone sightings from public-source news stories and FAA preliminary UAS sighting reports; it does not prove intent, wrongdoing, threat, or a verified security breach.
|
| 4 |
+
- UAP-adjacent labels mean the source language overlaps with mystery-drone or UFO/UAP wording; they are not UAP determinations.
|
| 5 |
- This is a public-source and preliminary-reporting dataset, not a verified government incident ledger.
|
| 6 |
- Stories behind paywalls, JavaScript-heavy pages, or blocked fetches can fall out of the slice.
|
| 7 |
- Event points are covered-area centroids or official point locations, not narrative story coordinates.
|
| 8 |
- Publication dates are used as bounded proxies when a direct observation date is not extractable.
|
| 9 |
- Ambiguous multi-area stories stay in the internal review queue and are excluded from the public map.
|
| 10 |
+
- Current gap: `airport` has `19407` monitored areas but no public events in this slice.
|
| 11 |
+
- Current gap: `port` has `370` monitored areas but no public events in this slice.
|
| 12 |
+
- Current gap: `power_plant` has `16104` monitored areas but no public events in this slice.
|
dataset_bundle/methodology.md
CHANGED
|
@@ -8,11 +8,13 @@ This release shows a bounded set of U.S. public-source and FAA-reported drone si
|
|
| 8 |
- News candidates are harvested through a bounded search layer and then fetched as raw article HTML for deterministic parsing.
|
| 9 |
- Official FAA UAS sighting report rows are included only when a strict airport-code match resolves to one monitored airport.
|
| 10 |
- Source records are matched only to covered-area registry entries and deduped into area-scoped events.
|
|
|
|
| 11 |
- When a source mentions more than one plausible area and a single primary area cannot be resolved deterministically, the source is kept out of the public map.
|
| 12 |
|
| 13 |
## Source Window
|
| 14 |
-
- Start: `
|
| 15 |
- End: `2026-04-24`
|
| 16 |
|
| 17 |
## What This Does Not Prove
|
| 18 |
-
This release tracks reported drone sightings from public sources and FAA preliminary sighting reports; it does not prove intent, threat, wrongdoing, illegality, or the identity of any aircraft operator.
|
|
|
|
|
|
| 8 |
- News candidates are harvested through a bounded search layer and then fetched as raw article HTML for deterministic parsing.
|
| 9 |
- Official FAA UAS sighting report rows are included only when a strict airport-code match resolves to one monitored airport.
|
| 10 |
- Source records are matched only to covered-area registry entries and deduped into area-scoped events.
|
| 11 |
+
- Each event also gets a deterministic source-language overlay that separates official UAS reports, ordinary drone-language reports, mystery-drone language, and explicit UFO/UAP language.
|
| 12 |
- When a source mentions more than one plausible area and a single primary area cannot be resolved deterministically, the source is kept out of the public map.
|
| 13 |
|
| 14 |
## Source Window
|
| 15 |
+
- Start: `2023-01-01`
|
| 16 |
- End: `2026-04-24`
|
| 17 |
|
| 18 |
## What This Does Not Prove
|
| 19 |
+
This release tracks reported drone sightings from public sources and FAA preliminary sighting reports; it does not prove intent, threat, wrongdoing, illegality, or the identity of any aircraft operator.
|
| 20 |
+
The UAP-adjacent overlay is a language classifier only; it does not verify that a reported object was anomalous or a UAP.
|
dataset_bundle/public_release_manifest.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
| 1 |
{
|
| 2 |
-
"public_version": "drone-sightings-
|
| 3 |
"title": "Drone Sightings Near Covered U.S. Military and Civilian Areas",
|
| 4 |
-
"release_date": "2026-04-
|
| 5 |
-
"source_run_name": "
|
| 6 |
"slice_description": "A small, review-oriented slice of U.S. public-source and FAA-reported drone sightings mapped against official covered-area registries.",
|
| 7 |
"source_window": {
|
| 8 |
-
"start_date": "
|
| 9 |
"end_date": "2026-04-24",
|
| 10 |
-
"window_days":
|
| 11 |
},
|
| 12 |
"counts": {
|
| 13 |
-
"events":
|
| 14 |
"monitored_areas": 36702,
|
| 15 |
-
"event_sources":
|
| 16 |
-
"daily_area_rollup_rows":
|
| 17 |
-
"article_candidates":
|
| 18 |
-
"article_fetch_failed":
|
| 19 |
},
|
| 20 |
"covered_area_counts_by_type": {
|
| 21 |
"airport": 19407,
|
|
@@ -24,37 +24,53 @@
|
|
| 24 |
"power_plant": 16104
|
| 25 |
},
|
| 26 |
"event_counts_by_type": {
|
| 27 |
-
"
|
| 28 |
-
"military_installation": 6,
|
| 29 |
-
"power_plant": 1
|
| 30 |
},
|
| 31 |
"event_counts_by_class": {
|
| 32 |
-
"
|
| 33 |
-
"military": 6
|
| 34 |
},
|
| 35 |
"quality_summary": {
|
| 36 |
-
"unresolved_area_share": 0.
|
| 37 |
-
"review_article_count":
|
| 38 |
-
"weak_area_review_count":
|
| 39 |
-
"weak_area_context_review_count":
|
| 40 |
-
"weak_event_context_review_count":
|
| 41 |
-
"off_scope_review_count":
|
| 42 |
-
"false_match_canary_review_count":
|
| 43 |
-
"article_fetch_failure_share": 0.
|
| 44 |
-
"article_fetch_failure_count":
|
| 45 |
"news_search_failure_count": 0,
|
| 46 |
"official_source_failure_count": 0,
|
| 47 |
"source_unavailable_count": 0,
|
| 48 |
-
"duplicate_cluster_share": 0.
|
| 49 |
"conflicting_area_cluster_count": 0,
|
| 50 |
-
"review_conflicting_area_cluster_count":
|
| 51 |
-
"report_date_proxy_share": 0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
},
|
| 53 |
"included_tables": [
|
| 54 |
"events.csv",
|
| 55 |
"monitored_areas.csv",
|
| 56 |
"event_sources.csv",
|
| 57 |
"daily_area_rollup.csv",
|
|
|
|
| 58 |
"public_release_manifest.json",
|
| 59 |
"methodology.md",
|
| 60 |
"limitations_and_blind_spots.md",
|
|
@@ -63,6 +79,7 @@
|
|
| 63 |
],
|
| 64 |
"caveats": [
|
| 65 |
"This release tracks reported drone sightings from public-source news stories and official FAA UAS sighting reports; FAA reports are still preliminary sighting records, not verified federal incident findings.",
|
|
|
|
| 66 |
"A reported sighting does not by itself prove intent, threat, wrongdoing, or the presence of a hostile actor.",
|
| 67 |
"Events are plotted at the covered-area point or centroid, not at a freehand geocoded story location.",
|
| 68 |
"Some event dates use article publication dates as bounded proxies when an observed date is not extractable from the story.",
|
|
|
|
| 1 |
{
|
| 2 |
+
"public_version": "drone-sightings-base-events-uap-20260425-r1",
|
| 3 |
"title": "Drone Sightings Near Covered U.S. Military and Civilian Areas",
|
| 4 |
+
"release_date": "2026-04-25T15:17:58.986193+00:00",
|
| 5 |
+
"source_run_name": "drone_sightings_curated_base_events_20260425_r6",
|
| 6 |
"slice_description": "A small, review-oriented slice of U.S. public-source and FAA-reported drone sightings mapped against official covered-area registries.",
|
| 7 |
"source_window": {
|
| 8 |
+
"start_date": "2023-01-01",
|
| 9 |
"end_date": "2026-04-24",
|
| 10 |
+
"window_days": 1209
|
| 11 |
},
|
| 12 |
"counts": {
|
| 13 |
+
"events": 10,
|
| 14 |
"monitored_areas": 36702,
|
| 15 |
+
"event_sources": 32,
|
| 16 |
+
"daily_area_rollup_rows": 10,
|
| 17 |
+
"article_candidates": 44,
|
| 18 |
+
"article_fetch_failed": 2
|
| 19 |
},
|
| 20 |
"covered_area_counts_by_type": {
|
| 21 |
"airport": 19407,
|
|
|
|
| 24 |
"power_plant": 16104
|
| 25 |
},
|
| 26 |
"event_counts_by_type": {
|
| 27 |
+
"military_installation": 10
|
|
|
|
|
|
|
| 28 |
},
|
| 29 |
"event_counts_by_class": {
|
| 30 |
+
"military": 10
|
|
|
|
| 31 |
},
|
| 32 |
"quality_summary": {
|
| 33 |
+
"unresolved_area_share": 0.272727,
|
| 34 |
+
"review_article_count": 12,
|
| 35 |
+
"weak_area_review_count": 2,
|
| 36 |
+
"weak_area_context_review_count": 0,
|
| 37 |
+
"weak_event_context_review_count": 2,
|
| 38 |
+
"off_scope_review_count": 1,
|
| 39 |
+
"false_match_canary_review_count": 0,
|
| 40 |
+
"article_fetch_failure_share": 0.045455,
|
| 41 |
+
"article_fetch_failure_count": 2,
|
| 42 |
"news_search_failure_count": 0,
|
| 43 |
"official_source_failure_count": 0,
|
| 44 |
"source_unavailable_count": 0,
|
| 45 |
+
"duplicate_cluster_share": 0.9,
|
| 46 |
"conflicting_area_cluster_count": 0,
|
| 47 |
+
"review_conflicting_area_cluster_count": 0,
|
| 48 |
+
"report_date_proxy_share": 0.5
|
| 49 |
+
},
|
| 50 |
+
"uap_language_overlay": {
|
| 51 |
+
"interpretation": "This is a source-language overlay. It labels whether sources use drone/UAS, mystery-drone, or explicit UFO/UAP language; it does not verify that a reported object was a drone or a UAP.",
|
| 52 |
+
"event_counts_by_uap_overlap_label": {
|
| 53 |
+
"drone_or_uas_report": 1,
|
| 54 |
+
"explicit_ufo_uap_language": 2,
|
| 55 |
+
"known_non_uap_drone_language": 2,
|
| 56 |
+
"uap_adjacent_drone_language": 5
|
| 57 |
+
},
|
| 58 |
+
"event_counts_by_language_family": {
|
| 59 |
+
"drone_or_uas_report": 1,
|
| 60 |
+
"explicit_ufo_uap_language": 2,
|
| 61 |
+
"known_operator_or_mundane_drone": 2,
|
| 62 |
+
"mystery_drone_language": 5
|
| 63 |
+
},
|
| 64 |
+
"uap_adjacent_event_count": 5,
|
| 65 |
+
"explicit_ufo_uap_event_count": 2,
|
| 66 |
+
"official_uas_event_count": 0
|
| 67 |
},
|
| 68 |
"included_tables": [
|
| 69 |
"events.csv",
|
| 70 |
"monitored_areas.csv",
|
| 71 |
"event_sources.csv",
|
| 72 |
"daily_area_rollup.csv",
|
| 73 |
+
"uap_language_overlay_report.json",
|
| 74 |
"public_release_manifest.json",
|
| 75 |
"methodology.md",
|
| 76 |
"limitations_and_blind_spots.md",
|
|
|
|
| 79 |
],
|
| 80 |
"caveats": [
|
| 81 |
"This release tracks reported drone sightings from public-source news stories and official FAA UAS sighting reports; FAA reports are still preliminary sighting records, not verified federal incident findings.",
|
| 82 |
+
"UAP-adjacent labels are source-language overlap labels only; they do not verify that an object was a UAP, anomalous, or non-human.",
|
| 83 |
"A reported sighting does not by itself prove intent, threat, wrongdoing, or the presence of a hostile actor.",
|
| 84 |
"Events are plotted at the covered-area point or centroid, not at a freehand geocoded story location.",
|
| 85 |
"Some event dates use article publication dates as bounded proxies when an observed date is not extractable from the story.",
|
dataset_bundle/quality_checks.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
| 1 |
# Quality Checks
|
| 2 |
|
| 3 |
-
- Event rows: `
|
| 4 |
- Monitored areas: `36702`
|
| 5 |
-
- Event source rows: `
|
| 6 |
-
- Article fetch failure share: `0.
|
| 7 |
- Source unavailable count: `0`
|
| 8 |
-
- Review article count: `
|
| 9 |
-
- False-match canary review count: `
|
| 10 |
-
- Duplicate cluster share: `0.
|
| 11 |
- Conflicting area clusters: `0`
|
| 12 |
-
- Review-suppressed conflicting area clusters: `
|
| 13 |
-
- Unresolved area share: `0.
|
| 14 |
|
| 15 |
## Public Integrity Language
|
| 16 |
|
|
|
|
| 1 |
# Quality Checks
|
| 2 |
|
| 3 |
+
- Event rows: `10`
|
| 4 |
- Monitored areas: `36702`
|
| 5 |
+
- Event source rows: `32`
|
| 6 |
+
- Article fetch failure share: `0.045455`
|
| 7 |
- Source unavailable count: `0`
|
| 8 |
+
- Review article count: `12`
|
| 9 |
+
- False-match canary review count: `0`
|
| 10 |
+
- Duplicate cluster share: `0.9`
|
| 11 |
- Conflicting area clusters: `0`
|
| 12 |
+
- Review-suppressed conflicting area clusters: `0`
|
| 13 |
+
- Unresolved area share: `0.272727`
|
| 14 |
|
| 15 |
## Public Integrity Language
|
| 16 |
|
dataset_bundle/schema_notes.md
CHANGED
|
@@ -4,6 +4,9 @@
|
|
| 4 |
- `event_date`: observed date when extractable, otherwise a publication-date proxy.
|
| 5 |
- `review_status`: public rows are auto-included deterministic event rows only.
|
| 6 |
- `source_count`: number of supporting stories retained in the dedupe cluster.
|
|
|
|
|
|
|
|
|
|
| 7 |
|
| 8 |
## monitored_areas.csv
|
| 9 |
- Rows represent official covered-area points or centroids used for event plotting.
|
|
|
|
| 4 |
- `event_date`: observed date when extractable, otherwise a publication-date proxy.
|
| 5 |
- `review_status`: public rows are auto-included deterministic event rows only.
|
| 6 |
- `source_count`: number of supporting stories retained in the dedupe cluster.
|
| 7 |
+
- `language_family`: deterministic source-language bucket such as official UAS report, ordinary drone report, mystery-drone language, or explicit UFO/UAP language.
|
| 8 |
+
- `uap_overlap_label`: conservative language-overlap label; it is not a verification that the object was a UAP.
|
| 9 |
+
- `ambiguity_score`: deterministic language score, not a confidence score or factual finding.
|
| 10 |
|
| 11 |
## monitored_areas.csv
|
| 12 |
- Rows represent official covered-area points or centroids used for event plotting.
|
dataset_bundle/uap_language_overlay_report.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"report_kind": "drone_uap_language_overlay_v1",
|
| 3 |
+
"interpretation": "This is a source-language overlay. It labels whether sources use drone/UAS, mystery-drone, or explicit UFO/UAP language; it does not verify that a reported object was a drone or a UAP.",
|
| 4 |
+
"event_count": 10,
|
| 5 |
+
"review_article_count": 12,
|
| 6 |
+
"normalized_article_count": 43,
|
| 7 |
+
"event_counts_by_uap_overlap_label": {
|
| 8 |
+
"drone_or_uas_report": 1,
|
| 9 |
+
"explicit_ufo_uap_language": 2,
|
| 10 |
+
"known_non_uap_drone_language": 2,
|
| 11 |
+
"uap_adjacent_drone_language": 5
|
| 12 |
+
},
|
| 13 |
+
"event_counts_by_language_family": {
|
| 14 |
+
"drone_or_uas_report": 1,
|
| 15 |
+
"explicit_ufo_uap_language": 2,
|
| 16 |
+
"known_operator_or_mundane_drone": 2,
|
| 17 |
+
"mystery_drone_language": 5
|
| 18 |
+
},
|
| 19 |
+
"review_counts_by_uap_overlap_label": {
|
| 20 |
+
"drone_or_uas_report": 5,
|
| 21 |
+
"known_non_uap_drone_language": 3,
|
| 22 |
+
"uap_adjacent_drone_language": 4
|
| 23 |
+
},
|
| 24 |
+
"article_counts_by_uap_overlap_label": {
|
| 25 |
+
"drone_or_uas_report": 9,
|
| 26 |
+
"explicit_ufo_uap_language": 3,
|
| 27 |
+
"known_non_uap_drone_language": 21,
|
| 28 |
+
"uap_adjacent_drone_language": 10
|
| 29 |
+
},
|
| 30 |
+
"uap_adjacent_event_count": 5,
|
| 31 |
+
"explicit_ufo_uap_event_count": 2,
|
| 32 |
+
"official_uas_event_count": 0,
|
| 33 |
+
"sample_uap_adjacent_events": [
|
| 34 |
+
{
|
| 35 |
+
"event_id": "event:dod:joint-base-langley-eustis:va:2024-10-13:0001",
|
| 36 |
+
"event_date": "2024-10-13",
|
| 37 |
+
"area_name": "Joint Base Langley-Eustis",
|
| 38 |
+
"uap_overlap_label": "explicit_ufo_uap_language",
|
| 39 |
+
"headline": "Pentagon Baffled By 17-Day Drone Swarm At US Military Base",
|
| 40 |
+
"primary_source_url": "https://dronexl.co/2024/10/13/pentagon-drone-swarm-us-military-base/"
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"event_id": "event:dod:hill-air-force-base:ut:2024-12-18:0002",
|
| 44 |
+
"event_date": "2024-12-18",
|
| 45 |
+
"area_name": "Hill Air Force Base",
|
| 46 |
+
"uap_overlap_label": "uap_adjacent_drone_language",
|
| 47 |
+
"headline": "Multiple Drone Sightings Reported Near Hill Air Force Base Amid Nationwide Military Installation Incidents",
|
| 48 |
+
"primary_source_url": "https://dronexl.co/2024/12/17/multiple-drone-sightings-reported-near-hill-air-force-base/"
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"event_id": "event:dod:wright-patterson-air-force-base:oh:2024-12-16:0003",
|
| 52 |
+
"event_date": "2024-12-16",
|
| 53 |
+
"area_name": "Wright-Patterson Air Force Base",
|
| 54 |
+
"uap_overlap_label": "uap_adjacent_drone_language",
|
| 55 |
+
"headline": "Multiple Drone Incursions Force Temporary Shutdown At Ohio's Wright-Patterson Air Force Base",
|
| 56 |
+
"primary_source_url": "https://dronexl.co/2024/12/15/drone-incursions-ohio-wright-patterson-air-force-base/"
|
| 57 |
+
},
|
| 58 |
+
{
|
| 59 |
+
"event_id": "event:dod:naval-weapons-station-earle-nj:nj:2024-12-09:0004",
|
| 60 |
+
"event_date": "2024-12-09",
|
| 61 |
+
"area_name": "Naval Weapons Station Earle NJ",
|
| 62 |
+
"uap_overlap_label": "uap_adjacent_drone_language",
|
| 63 |
+
"headline": "Nearly 12 Drones Flew Over Naval Weapons Station Earle In Middletown",
|
| 64 |
+
"primary_source_url": "https://patch.com/new-jersey/middletown-nj/6-drones-flew-over-naval-weapons-station-earle-friday-night"
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"event_id": "event:dod:joint-base-mcguire-dix-lakehurst:nj:2024-09-15:0008",
|
| 68 |
+
"event_date": "2024-09-15",
|
| 69 |
+
"area_name": "Joint Base McGuire-Dix-Lakehurst",
|
| 70 |
+
"uap_overlap_label": "explicit_ufo_uap_language",
|
| 71 |
+
"headline": "New Jersey military base confirms multiple drone contraband-smuggling incursions this year",
|
| 72 |
+
"primary_source_url": "https://www.foxnews.com/us/new-jersey-military-base-confirms-multiple-drone-contraband-smuggling-incursions-year"
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"event_id": "event:dod:barksdale-air-force-base:la:2026-03-09:0009",
|
| 76 |
+
"event_date": "2026-03-09",
|
| 77 |
+
"area_name": "Barksdale Air Force Base",
|
| 78 |
+
"uap_overlap_label": "uap_adjacent_drone_language",
|
| 79 |
+
"headline": "Leak Reveals Major Drone Incident at Air Force Base in Trump’s War",
|
| 80 |
+
"primary_source_url": "https://www.thedailybeast.com/leak-reveals-major-drone-incident-at-louisiana-air-force-base-in-trumps-war/"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"event_id": "event:dod:joint-base-myer-henderson-hall:va:2026-03-19:0010",
|
| 84 |
+
"event_date": "2026-03-19",
|
| 85 |
+
"area_name": "Joint Base Myer-Henderson Hall",
|
| 86 |
+
"uap_overlap_label": "uap_adjacent_drone_language",
|
| 87 |
+
"headline": "Unidentified drones reported flying over Fort McNair; expert calls it security concern",
|
| 88 |
+
"primary_source_url": "https://ktul.com/news/nation-world/unidentified-drones-fly-over-fort-mcnair-expert-calls-it-security-concern"
|
| 89 |
+
}
|
| 90 |
+
]
|
| 91 |
+
}
|
public_space_app.py
CHANGED
|
@@ -56,6 +56,9 @@ def _visible_events(events: pd.DataFrame, frame_dates: list[str], frame_index: i
|
|
| 56 |
def _point_table(events: pd.DataFrame) -> pd.DataFrame:
|
| 57 |
ordered = events.copy()
|
| 58 |
ordered["event_date"] = ordered["event_date"].astype(str)
|
|
|
|
|
|
|
|
|
|
| 59 |
ordered = ordered.sort_values(["event_date", "event_id", "headline"], ascending=[True, True, True]).reset_index(drop=True)
|
| 60 |
return ordered[
|
| 61 |
[
|
|
@@ -70,6 +73,9 @@ def _point_table(events: pd.DataFrame) -> pd.DataFrame:
|
|
| 70 |
"lon",
|
| 71 |
"source_count",
|
| 72 |
"confidence_label",
|
|
|
|
|
|
|
|
|
|
| 73 |
"review_status",
|
| 74 |
"primary_source_url",
|
| 75 |
]
|
|
@@ -79,6 +85,10 @@ def _point_table(events: pd.DataFrame) -> pd.DataFrame:
|
|
| 79 |
def _build_map(events: pd.DataFrame, frame_label: str):
|
| 80 |
if events.empty:
|
| 81 |
return px.scatter_mapbox(pd.DataFrame({"lat": [], "lon": []}), lat="lat", lon="lon", zoom=3, height=560)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
fig = px.scatter_mapbox(
|
| 83 |
events,
|
| 84 |
lat="lat",
|
|
@@ -92,6 +102,8 @@ def _build_map(events: pd.DataFrame, frame_label: str):
|
|
| 92 |
"event_date": True,
|
| 93 |
"source_count": True,
|
| 94 |
"confidence_label": True,
|
|
|
|
|
|
|
| 95 |
"primary_source_url": True,
|
| 96 |
"lat": False,
|
| 97 |
"lon": False,
|
|
@@ -132,9 +144,13 @@ def _detail_markdown(event_sources: pd.DataFrame, events: pd.DataFrame, event_id
|
|
| 132 |
f"- `state`: `{event_row['state']}`",
|
| 133 |
f"- `lat`: `{event_row['lat']}`",
|
| 134 |
f"- `lon`: `{event_row['lon']}`",
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
f"- `primary_source_url`: {event_row['primary_source_url']}",
|
| 139 |
"",
|
| 140 |
"#### Summary",
|
|
|
|
| 56 |
def _point_table(events: pd.DataFrame) -> pd.DataFrame:
|
| 57 |
ordered = events.copy()
|
| 58 |
ordered["event_date"] = ordered["event_date"].astype(str)
|
| 59 |
+
for column in ["uap_overlap_label", "language_family", "ambiguity_score", "phenomenon_terms"]:
|
| 60 |
+
if column not in ordered.columns:
|
| 61 |
+
ordered[column] = ""
|
| 62 |
ordered = ordered.sort_values(["event_date", "event_id", "headline"], ascending=[True, True, True]).reset_index(drop=True)
|
| 63 |
return ordered[
|
| 64 |
[
|
|
|
|
| 73 |
"lon",
|
| 74 |
"source_count",
|
| 75 |
"confidence_label",
|
| 76 |
+
"uap_overlap_label",
|
| 77 |
+
"language_family",
|
| 78 |
+
"ambiguity_score",
|
| 79 |
"review_status",
|
| 80 |
"primary_source_url",
|
| 81 |
]
|
|
|
|
| 85 |
def _build_map(events: pd.DataFrame, frame_label: str):
|
| 86 |
if events.empty:
|
| 87 |
return px.scatter_mapbox(pd.DataFrame({"lat": [], "lon": []}), lat="lat", lon="lon", zoom=3, height=560)
|
| 88 |
+
events = events.copy()
|
| 89 |
+
for column in ["uap_overlap_label", "language_family"]:
|
| 90 |
+
if column not in events.columns:
|
| 91 |
+
events[column] = ""
|
| 92 |
fig = px.scatter_mapbox(
|
| 93 |
events,
|
| 94 |
lat="lat",
|
|
|
|
| 102 |
"event_date": True,
|
| 103 |
"source_count": True,
|
| 104 |
"confidence_label": True,
|
| 105 |
+
"uap_overlap_label": True,
|
| 106 |
+
"language_family": True,
|
| 107 |
"primary_source_url": True,
|
| 108 |
"lat": False,
|
| 109 |
"lon": False,
|
|
|
|
| 144 |
f"- `state`: `{event_row['state']}`",
|
| 145 |
f"- `lat`: `{event_row['lat']}`",
|
| 146 |
f"- `lon`: `{event_row['lon']}`",
|
| 147 |
+
f"- `source_count`: `{event_row['source_count']}`",
|
| 148 |
+
f"- `confidence_label`: `{event_row['confidence_label']}`",
|
| 149 |
+
f"- `uap_overlap_label`: `{event_row.get('uap_overlap_label', '')}`",
|
| 150 |
+
f"- `language_family`: `{event_row.get('language_family', '')}`",
|
| 151 |
+
f"- `ambiguity_score`: `{event_row.get('ambiguity_score', '')}`",
|
| 152 |
+
f"- `phenomenon_terms`: `{event_row.get('phenomenon_terms', '')}`",
|
| 153 |
+
f"- `review_status`: `{event_row['review_status']}`",
|
| 154 |
f"- `primary_source_url`: {event_row['primary_source_url']}",
|
| 155 |
"",
|
| 156 |
"#### Summary",
|