{"id":31056579,"url":"https://github.com/arjuncodess/astroscope","last_synced_at":"2025-09-15T05:58:53.394Z","repository":{"id":308166903,"uuid":"1031828649","full_name":"ArjunCodess/astroscope","owner":"ArjunCodess","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-04T14:52:04.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-04T17:05:38.042Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://astroscope.streamlit.app/","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/ArjunCodess.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2025-08-04T11:49:15.000Z","updated_at":"2025-08-04T14:52:07.000Z","dependencies_parsed_at":"2025-08-04T17:08:18.498Z","dependency_job_id":"fff435c4-103b-4c0b-ae48-742a3a5ce8f8","html_url":"https://github.com/ArjunCodess/astroscope","commit_stats":null,"previous_names":["arjuncodess/astro-scope"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ArjunCodess/astroscope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArjunCodess%2Fastroscope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArjunCodess%2Fastroscope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArjunCodess%2Fastroscope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArjunCodess%2Fastroscope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArjunCodess","download_url":"https://codeload.github.com/ArjunCodess/astroscope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArjunCodess%2Fastroscope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275213871,"owners_count":25424887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"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":[],"created_at":"2025-09-15T05:58:49.216Z","updated_at":"2025-09-15T05:58:53.381Z","avatar_url":"https://github.com/ArjunCodess.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔭 AstroScope: NASA Asteroid Dashboard\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/VmNRG0jzy6o\"\u003e\n    \u003cimg src=\"https://img.youtube.com/vi/VmNRG0jzy6o/0.jpg\" alt=\"AstroScope Demo\" width=\"600\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nAstroScope is an interactive dashboard that visualizes near-Earth asteroid data from NASA's NeoWs API. It provides insights into asteroid sizes, velocities, miss distances, and potential hazards.\n\n## 📋 Features\n\n- **Data Fetching**: Automatically fetches asteroid data from NASA's NeoWs API\n- **Data Analysis**: Calculates risk scores, identifies anomalies, and generates time series data\n- **Interactive Dashboard**: Visualizes asteroid data with interactive charts and tables\n- **Filtering**: Filter data by date range and risk threshold\n- **Risk Heatmap Calendar**: GitHub-style calendar heatmap of daily average risk scores\n- **Daily Closest Miss Table**: Ranks the top 10 dates by the closest asteroid approach, with details per day\n- **Responsive Design**: Works on desktop and mobile devices\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Python 3.7 or higher\n- NASA API key (get one at [https://api.nasa.gov](https://api.nasa.gov))\n\n### Getting a NASA API Key\n\n1. Go to [https://api.nasa.gov](https://api.nasa.gov).\n2. In the \"Generate API Key\" form, fill in the required fields:\n   - First Name (required)\n   - Last Name (required)\n   - Email (required)\n   - How will you use the APIs? (optional)\n3. Submit the form and check your email to receive your API key.\n4. Add the key to your `.env` file:\n   ```\n   NASA_API_KEY=\"YOUR_KEY_HERE\"\n   ```\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/ArjunCodess/astroscope.git\n   cd astroscope\n   ```\n\n2. Install dependencies:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n3. Duplicate the `.env.example` file to create a `.env` file in the project root directory and update the `NASA_API_KEY` with your own key:\n   ```\n   NASA_API_KEY=\"\"\n   ```\n\n### Configuration\n\nThe application can be configured using environment variables in the `.env` file:\n\n- `NASA_API_KEY`: Your NASA API key (required)\n- `DATA_FETCH_DAYS`: Number of days to fetch asteroid data for (default: 30)\n- `DATA_DIR`: Directory to store data files (default: \"data\")\n- `API_CHUNK_SIZE`: Maximum number of days per API request (default: 7, NASA API limit)\n- `RISK_THRESHOLD`: Threshold for classifying asteroids as high risk (default: 0.6)\n\n## 📊 Running the Application\n\nStart the Streamlit dashboard with a single command:\n\n```bash\npython -m streamlit run app.py\n```\n\nThe dashboard will be available at [http://localhost:8501](http://localhost:8501).\n\nThe application will automatically:\n1. Check if data files exist\n2. If not, fetch asteroid data from NASA's NeoWs API\n3. Process the raw data into a clean format\n4. Analyze the data to calculate risk scores and generate time series data\n5. Display the interactive dashboard\n   - Includes a \"Daily Closest Miss\" table showing the closest approach per day and ranking the top 10 dates by proximity\n\n\u003e **Note**: You can still run the data pipeline steps separately if needed:\n\u003e - `python -m lib.data_fetcher` - Fetch data only\n\u003e - `python -m lib.data_processing` - Process data only\n\u003e - `python -m lib.analysis` - Analyze data only\n\n## 📁 Project Structure\n\n- `app.py`: Main Streamlit application\n- `lib/`: Library modules\n  - `data_fetcher.py`: Fetches data from NASA's NeoWs API\n  - `data_processing.py`: Processes raw data into clean format\n  - `analysis.py`: Analyzes data and calculates risk scores\n  - `visualizer.py`: Creates visualizations for the dashboard\n- `data/`: Data directory (created automatically)\n- `docs/`: Documentation\n  - `PRD.md`: Product Requirements Document\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farjuncodess%2Fastroscope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farjuncodess%2Fastroscope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farjuncodess%2Fastroscope/lists"}