{"id":50822756,"url":"https://github.com/ranjithguggilla/glider-data-curation","last_synced_at":"2026-06-13T15:37:08.182Z","repository":{"id":358580853,"uuid":"1240402360","full_name":"ranjithguggilla/glider-data-curation","owner":"ranjithguggilla","description":"Slocum glider mission archive pipeline: ingest, merge, QC, and package IOOS DAC trajectory data","archived":false,"fork":false,"pushed_at":"2026-05-18T02:42:26.000Z","size":253,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T04:51:45.695Z","etag":null,"topics":["cf-conventions","data-curation","fair-data","glider","gulf-of-mexico","marine-science","netcdf","oceanography","python","qartod"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ranjithguggilla.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T05:07:22.000Z","updated_at":"2026-05-18T02:42:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ranjithguggilla/glider-data-curation","commit_stats":null,"previous_names":["ranjithguggilla/glider-data-curation"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ranjithguggilla/glider-data-curation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithguggilla%2Fglider-data-curation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithguggilla%2Fglider-data-curation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithguggilla%2Fglider-data-curation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithguggilla%2Fglider-data-curation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ranjithguggilla","download_url":"https://codeload.github.com/ranjithguggilla/glider-data-curation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithguggilla%2Fglider-data-curation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34290347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cf-conventions","data-curation","fair-data","glider","gulf-of-mexico","marine-science","netcdf","oceanography","python","qartod"],"created_at":"2026-06-13T15:37:07.441Z","updated_at":"2026-06-13T15:37:08.176Z","avatar_url":"https://github.com/ranjithguggilla.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# glider-data-curation\n\nSlocum glider mission archive pipeline. Ingests IOOS Glider DAC segment files, merges into CF-1.8 trajectory NetCDF, computes derived oceanographic variables, applies QARTOD quality control, and produces publication-ready archive packages with interactive maps, mission reports, and DataCite DOI metadata.\n\n[![CI](https://github.com/ranjithguggilla/glider-data-curation/actions/workflows/ci.yml/badge.svg)](https://github.com/ranjithguggilla/glider-data-curation/actions)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n![Mission Track](docs/screenshots/mission_map.png)\n\n![Mission Dashboard](docs/screenshots/mission_dashboard.png)\n\n## Architecture\n\n```\nIOOS Glider DAC (ERDDAP)\n         │\n         ▼\n   ┌─────────────┐\n   │   Ingest     │  Download segments, SHA-256 checksums\n   └──────┬──────┘\n          ▼\n   ┌─────────────┐\n   │    Merge     │  Concatenate → CF-1.8 trajectory NetCDF\n   └──────┬──────┘\n          ▼\n   ┌─────────────┐\n   │   Derived    │  GSW: SA, CT, sigma0, sound speed\n   └──────┬──────┘\n          ▼\n   ┌─────────────┐\n   │     QC       │  QARTOD flags: range, spike, gap\n   └──────┬──────┘\n          ▼\n   ┌─────────────┐\n   │   Metrics    │  Distance, depth, dives, uptime\n   └──────┬──────┘\n          ▼\n   ┌─────────────┐\n   │   Package    │  NetCDF + report + map + DataCite XML\n   └─────────────┘\n```\n\n## Installation\n\n```bash\ngit clone https://github.com/ranjithguggilla/glider-data-curation.git\ncd glider-data-curation\npip install -e .\n```\n\nFor development:\n\n```bash\npip install -e \".[dev]\"\n```\n\n## Usage\n\n### Ingest from IOOS Glider DAC\n\n```bash\n# Download mission data from ERDDAP\nglidercure ingest usf-bass-2024 --dataset-id allDatasets\n\n# Or use a config file\nglidercure ingest usf-bass-2024 --config missions/bass.yaml\n```\n\n### Merge segments\n\n```bash\n# Merge downloaded segments into a single CF trajectory file\nglidercure merge usf-bass-2024 -i data/usf-bass-2024/raw\n\n# Or specify output path\nglidercure merge usf-bass-2024 -i data/raw/ -o output/trajectory.nc\n```\n\n### Compute metrics\n\n```bash\n# Compute and display mission statistics\nglidercure metrics usf-bass-2024\n\n# Export as JSON\nglidercure metrics usf-bass-2024 --json output/metrics.json\n```\n\n### Generate mission map\n\n```bash\n# Create interactive Folium map\nglidercure map usf-bass-2024 -o output/map.html\n```\n\n### Build archive package\n\n```bash\n# Full pipeline: derived vars → QC → metrics → report → map → package\nglidercure package usf-bass-2024 --version 1.0.0\n\n# Skip optional outputs\nglidercure package usf-bass-2024 --no-map --no-report\n```\n\n### Verify package integrity\n\n```bash\n# Check all SHA-256 checksums against MANIFEST\nglidercure verify usf-bass-2024\n```\n\n### Generate release metadata\n\n```bash\n# DataCite XML for DOI registration\nglidercure release usf-bass-2024 --version 1.0.0 --doi 10.5281/zenodo.12345\n```\n\n## Configuration\n\nMission configuration uses YAML files:\n\n```yaml\nmission_id: usf-bass-2024\nglider_name: bass\ninstitution: University of South Florida\npi_name: Dr. Chad Lembke\nregion: Gulf of Mexico\nvariables:\n  - temperature\n  - salinity\n  - conductivity\n  - pressure\n  - depth\nerddap_dataset_id: usf-bass\n```\n\n## Output Structure\n\n```\nusf-bass-2024_v1.0.0/\n├── usf-bass-2024_trajectory.nc    # CF-1.8 trajectory NetCDF\n├── datacite.xml                    # DataCite 4.4 DOI metadata\n├── metrics.json                    # Machine-readable metrics\n├── usf-bass-2024_report.html      # Mission summary report\n├── usf-bass-2024_map.html         # Interactive Folium map\n├── package.json                    # Package descriptor\n├── MANIFEST.json                   # SHA-256 checksums\n└── README.txt                      # Package documentation\n```\n\n## Standards Compliance\n\n| Standard | Implementation |\n|----------|---------------|\n| CF-1.8 | Trajectory discrete sampling geometry, standard variable attributes |\n| ACDD-1.3 | Global discovery metadata attributes |\n| IOOS QARTOD | Flag values 1/2/3/4/9 with range, spike, and gap tests |\n| TEOS-10 | GSW-derived absolute salinity, conservative temperature, sigma0 |\n| DataCite 4.4 | DOI registration XML with geospatial bounding box |\n| CC-BY-4.0 | Default license for archive packages |\n\n## Derived Variables\n\nComputed using the Gibbs SeaWater (GSW) library following TEOS-10:\n\n- **Absolute Salinity (SA)**: from practical salinity, pressure, and position\n- **Conservative Temperature (CT)**: from in-situ temperature\n- **Potential Density Anomaly (sigma0)**: referenced to 0 dbar\n- **Sound Speed**: for acoustic applications\n- **Mixed Layer Depth**: density threshold criterion (0.03 kg/m³)\n\n## Quality Control\n\nQARTOD flag application per variable:\n\n1. **Range test** — physically plausible bounds (bad if outside, suspect near edges)\n2. **Spike test** — rolling median MAD outlier detection\n3. **Gap test** — temporal discontinuity detection\n\n## Testing\n\n```bash\n# Run all tests\nmake test\n\n# With coverage\nmake test-cov\n\n# Lint\nmake lint\n```\n\n## Project Structure\n\n```\nglidercure/\n├── __init__.py          # Package metadata\n├── cli.py               # Click CLI entry point\n├── config.py            # Mission configuration\n├── ingest.py            # ERDDAP data download\n├── merge.py             # Segment merge + CF attributes\n├── derived.py           # TEOS-10 derived variables\n├── qc.py                # QARTOD quality control\n├── metrics.py           # Mission-level statistics\n├── mission_map.py       # Folium interactive map\n├── report.py            # Jinja2 HTML report\n├── datacite.py          # DataCite 4.4 XML\n├── package.py           # Archive assembly\n└── templates/\n    └── mission_report.html\n```\n\n## Technical Details\n\nSee [docs/METHODS.md](docs/METHODS.md) for detailed documentation of algorithms, standards compliance, and references.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjithguggilla%2Fglider-data-curation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franjithguggilla%2Fglider-data-curation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjithguggilla%2Fglider-data-curation/lists"}