Skip to content

Latest commit

 

History

History
66 lines (46 loc) · 2.88 KB

File metadata and controls

66 lines (46 loc) · 2.88 KB

RMACC NSF OAC Grant Visualization

An interactive map showing RMACC (Rocky Mountain Advanced Computing Consortium) member institutions and the NSF Office of Advanced Cyberinfrastructure (OAC) grants active among them.

What it shows

  • All 41 RMACC member institutions plotted on a US map, color-coded by institution type
  • Arc lines connecting institutions that share collaborative NSF OAC grants
  • Sidebar with grant cards sortable by award value, filterable by grant type
  • Grants filtered to a configurable active window (default: May 1, 2025 – April 30, 2026)

The visualization loads from rmacc_grants.json, which is generated by the collector script and committed to this repo.

Refreshing the grant data

Data is pulled from the NSF Awards API on demand via GitHub Actions — there is no automatic schedule.

Steps

  1. Go to the Actions tab in this repo
  2. Click Refresh Grant Data in the left sidebar
  3. Click the Run workflow button (top right)
  4. Optionally adjust the date window:
    • Window start — grants must still be active after this date (default: 05/01/2025)
    • Window end — grants must have started before this date (default: 04/30/2026)
  5. Click Run workflow to start

The job takes roughly 4–5 minutes. When it finishes, it commits an updated rmacc_grants.json to main and the live site reflects the new data automatically.

How the collection works

Grants are collected in three phases to ensure completeness:

  1. Global OAC query — fetches all NSF OAC division awards active in the date window, then filters to RMACC institutions
  2. State-based supplemental — queries each of the 9 RMACC states separately to catch any grants the global query may have missed
  3. Priority PI search — targeted searches by PI name for key RMACC staff (currently: Shelley Knuth)

Phases 2 and 3 exist because the NSF API's institution name matching is imprecise — the belt-and-suspenders approach ensures no RMACC grants are missed.

Running locally

# Serve the visualization
python3 -m http.server 8765
# Open http://localhost:8765/index.html

# Re-collect grant data
source .venv/bin/activate
python3 rmacc_nsf_collector.py --export

# Custom date window
python3 rmacc_nsf_collector.py --export --window-start 05/01/2026 --window-end 04/30/2027

# Run tests
python3 -m pytest test_rmacc_nsf_collector.py -v

Files

File Description
index.html D3.js + TopoJSON interactive map visualization
rmacc_nsf_collector.py NSF Awards API collector (stdlib only, Python 3.7+)
rmacc_grants.json Exported grant data loaded by the visualization
test_rmacc_nsf_collector.py Test suite for the collector script
.github/workflows/refresh-grants.yml GitHub Actions on-demand refresh workflow