| # Getting Started with GeoBotv1 | |
| This guide will help you get up and running with GeoBotv1. | |
| ## Installation | |
| ### 1. Clone the repository | |
| ```bash | |
| git clone https://github.com/yourusername/AIGEOPOLITICAL.git | |
| cd AIGEOPOLITICAL | |
| ``` | |
| ### 2. Create a virtual environment (recommended) | |
| ```bash | |
| python -m venv venv | |
| source venv/bin/activate # On Windows: venv\Scripts\activate | |
| ``` | |
| ### 3. Install dependencies | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| Or install in development mode: | |
| ```bash | |
| pip install -e . | |
| ``` | |
| ### 4. Install optional dependencies | |
| For full data ingestion capabilities: | |
| ```bash | |
| pip install pypdf pdfplumber beautifulsoup4 newspaper3k trafilatura feedparser | |
| ``` | |
| ## Quick Start | |
| ### Example 1: Basic Scenario Analysis | |
| ```python | |
| from geobot.core.scenario import Scenario | |
| from geobot.simulation.monte_carlo import MonteCarloEngine, SimulationConfig | |
| import numpy as np | |
| # Create a scenario | |
| scenario = Scenario( | |
| name="tension_scenario", | |
| features={ | |
| 'military_tension': np.array([0.7]), | |
| 'diplomatic_relations': np.array([0.3]), | |
| } | |
| ) | |
| # Run Monte Carlo simulation | |
| config = SimulationConfig(n_simulations=1000, time_horizon=50) | |
| engine = MonteCarloEngine(config) | |
| # Define dynamics | |
| def transition_fn(state, t, noise): | |
| new_state = {} | |
| new_state['tension'] = state.get('tension', 0.5) + noise.get('tension', 0) | |
| return new_state | |
| def noise_fn(t): | |
| return {'tension': np.random.normal(0, 0.05)} | |
| initial_state = {'tension': 0.3} | |
| trajectories = engine.run_basic_simulation(initial_state, transition_fn, noise_fn) | |
| # Analyze results | |
| stats = engine.compute_statistics(trajectories) | |
| print(f"Mean tension at end: {stats['tension']['mean'][-1]:.3f}") | |
| ``` | |
| ### Example 2: Causal Inference | |
| ```python | |
| from geobot.models.causal_graph import CausalGraph | |
| # Build causal graph | |
| graph = CausalGraph(name="conflict_model") | |
| # Add variables | |
| graph.add_node('sanctions', node_type='policy') | |
| graph.add_node('tension', node_type='state') | |
| graph.add_node('conflict', node_type='outcome') | |
| # Define causal relationships | |
| graph.add_edge('sanctions', 'tension', | |
| strength=0.7, | |
| mechanism="Sanctions increase tension") | |
| graph.add_edge('tension', 'conflict', | |
| strength=0.8, | |
| mechanism="Tension leads to conflict") | |
| # Visualize | |
| graph.visualize('causal_graph.png') | |
| ``` | |
| ### Example 3: Intervention Simulation | |
| ```python | |
| from geobot.inference.do_calculus import InterventionSimulator | |
| from geobot.models.causal_graph import StructuralCausalModel | |
| # Create SCM with your causal graph | |
| scm = StructuralCausalModel(graph) | |
| # Define structural equations | |
| # (See examples/03_intervention_simulation.py for full details) | |
| # Create simulator | |
| simulator = InterventionSimulator(scm) | |
| # Simulate intervention | |
| result = simulator.simulate_intervention( | |
| intervention={'sanctions': 0.8}, | |
| n_samples=1000, | |
| outcomes=['conflict'] | |
| ) | |
| print(f"Expected conflict under sanctions: {result['conflict'].mean():.3f}") | |
| ``` | |
| ### Example 4: Bayesian Belief Updating | |
| ```python | |
| from geobot.inference.bayesian_engine import BeliefUpdater | |
| # Create updater | |
| updater = BeliefUpdater() | |
| # Initialize belief | |
| updater.initialize_belief( | |
| name='conflict_risk', | |
| prior_mean=0.3, | |
| prior_std=0.1, | |
| belief_type='probability' | |
| ) | |
| # Update with new intelligence | |
| posterior = updater.update_from_intelligence( | |
| belief='conflict_risk', | |
| observation=0.6, | |
| reliability=0.8 | |
| ) | |
| print(f"Updated risk: {posterior['mean']:.3f} ± {posterior['std']:.3f}") | |
| ``` | |
| ### Example 5: PDF Processing | |
| ```python | |
| from geobot.data_ingestion.pdf_reader import PDFProcessor | |
| # Create processor | |
| processor = PDFProcessor() | |
| # Process document | |
| result = processor.extract_intelligence('report.pdf') | |
| print(f"Risk Level: {result['intelligence']['risk_level']}") | |
| print(f"Countries: {result['intelligence']['mentioned_countries']}") | |
| print(f"Conflict Indicators: {result['intelligence']['conflict_indicators']}") | |
| ``` | |
| ### Example 6: Web Scraping | |
| ```python | |
| from geobot.data_ingestion.web_scraper import ArticleExtractor | |
| # Create extractor | |
| extractor = ArticleExtractor() | |
| # Extract article | |
| article = extractor.extract_article('https://example.com/article') | |
| print(f"Title: {article['title']}") | |
| print(f"Summary: {article['text'][:200]}...") | |
| ``` | |
| ## Running Examples | |
| The `examples/` directory contains comprehensive demonstrations: | |
| ```bash | |
| cd examples | |
| # Basic usage | |
| python 01_basic_usage.py | |
| # Data ingestion | |
| python 02_data_ingestion.py | |
| # Intervention simulation | |
| python 03_intervention_simulation.py | |
| ``` | |
| ## Core Concepts | |
| ### 1. Scenarios | |
| Scenarios represent geopolitical states with features and probabilities. | |
| ### 2. Causal Graphs | |
| DAGs that model causal relationships between variables. | |
| ### 3. Structural Causal Models | |
| Mathematical models with functional equations for each variable. | |
| ### 4. Monte Carlo Simulation | |
| Stochastic simulation for uncertainty quantification. | |
| ### 5. Bayesian Inference | |
| Principled belief updating as new evidence arrives. | |
| ### 6. Do-Calculus | |
| Intervention reasoning for "what if" questions. | |
| ### 7. Optimal Transport | |
| Measuring distances between probability distributions. | |
| ## Next Steps | |
| 1. Read the full README.md | |
| 2. Explore the examples directory | |
| 3. Check out the module documentation | |
| 4. Build your own models! | |
| ## Need Help? | |
| - Check the examples directory for detailed code | |
| - Review module docstrings for API documentation | |
| - Open an issue on GitHub | |
| ## Tips | |
| 1. Start with simple models and gradually add complexity | |
| 2. Always validate your causal assumptions | |
| 3. Use Monte Carlo for uncertainty quantification | |
| 4. Combine multiple methods for robust forecasting | |
| 5. Document your assumptions and data sources | |
| Happy forecasting! | |