This module provides comprehensive research tools and experimental features for Active Inference research, including advanced analysis, experimental workflows, and research methodology support.
src/research/
├── __init__.py # Module initialization and exports
├── README.md # This documentation
└── mcp.py # Model Context Protocol integration
Main function for processing research-related tasks.
Features:
- Advanced research analysis
- Experimental workflow support
- Research methodology tools
- Data analysis and visualization
- Research documentation
Returns:
bool: Success status of research operations
Conducts comprehensive research analysis on GNN models and pipeline results.
Analysis Features:
- Statistical analysis
- Pattern recognition
- Hypothesis testing
- Comparative analysis
- Research insights generation
Generates research insights from analysis results.
Insights:
- Model performance insights
- Algorithmic improvements
- Theoretical contributions
- Practical applications
- Future research directions
Validates research hypotheses against experimental data.
Validation Features:
- Hypothesis testing
- Statistical significance
- Effect size analysis
- Confidence intervals
- Power analysis
Designs research experiments with proper methodology.
Design Features:
- Experimental design
- Control group setup
- Variable manipulation
- Measurement protocols
- Statistical power analysis
Executes research experiments according to design.
Execution Features:
- Data collection
- Process monitoring
- Quality control
- Error handling
- Result recording
Analyzes experimental results with statistical rigor.
Analysis Features:
- Descriptive statistics
- Inferential statistics
- Effect size calculation
- Significance testing
- Result interpretation
Applies specific research methodologies to data analysis.
Methodologies:
- Quantitative Analysis: Statistical analysis and modeling
- Qualitative Analysis: Content analysis and interpretation
- Mixed Methods: Combined quantitative and qualitative approaches
- Case Study: In-depth analysis of specific cases
- Longitudinal Study: Time-series analysis and trends
Generates research protocols for different study types.
Protocol Types:
- Experimental Protocol: Controlled experiments
- Observational Protocol: Naturalistic observations
- Survey Protocol: Questionnaire-based studies
- Interview Protocol: Qualitative interviews
- Meta-Analysis Protocol: Literature synthesis
from research import process_research
# Process research-related tasks
success = process_research(
target_dir=Path("research_data/"),
output_dir=Path("research_output/"),
verbose=True
)
if success:
print("Research processing completed successfully")
else:
print("Research processing failed")from research import conduct_research_analysis
# Conduct comprehensive research analysis
analysis_results = conduct_research_analysis(research_data)
print(f"Statistical tests: {len(analysis_results['statistical_tests'])}")
print(f"Significant findings: {len(analysis_results['significant_findings'])}")
print(f"Effect sizes: {len(analysis_results['effect_sizes'])}")from research import generate_research_insights
# Generate research insights
insights = generate_research_insights(analysis_results)
for insight in insights:
print(f"Insight: {insight['description']}")
print(f"Confidence: {insight['confidence']:.2f}")
print(f"Implications: {insight['implications']}")from research import validate_research_hypotheses
# Validate research hypotheses
hypotheses = [
"Model A performs better than Model B",
"Active Inference improves prediction accuracy",
"GNN models scale linearly with complexity"
]
validation_results = validate_research_hypotheses(hypotheses, experimental_data)
for hypothesis, result in validation_results.items():
print(f"Hypothesis: {hypothesis}")
print(f"Supported: {result['supported']}")
print(f"P-value: {result['p_value']:.4f}")
print(f"Effect size: {result['effect_size']:.3f}")from research import design_experiment
# Design research experiment
experiment_config = {
"type": "comparative_study",
"variables": ["model_type", "complexity", "performance"],
"sample_size": 100,
"significance_level": 0.05
}
experiment_design = design_experiment(experiment_config)
print(f"Experimental groups: {len(experiment_design['groups'])}")
print(f"Sample size per group: {experiment_design['sample_size_per_group']}")
print(f"Statistical power: {experiment_design['statistical_power']:.3f}")graph TD
Input[Research Data] --> Design[Experiment Design]
Design --> Exec[Execution]
Exec --> Data[Data Collection]
Data --> QC[Quality Control]
QC --> Analysis[Research Analysis]
Analysis --> Stats[Statistical Tests]
Analysis --> Trends[Pattern Recog]
Stats & Trends --> Insights[Insight Gen]
Insights --> Hypothesis[Hypothesis Valid]
Hypothesis --> Report[Research Report]
# Formulate research questions
research_questions = formulate_research_questions(domain_data)
hypotheses = generate_hypotheses(research_questions)# Design experiments
experiment_designs = design_experiments(hypotheses)
protocols = generate_research_protocols(experiment_designs)# Collect experimental data
experimental_data = collect_experimental_data(protocols)
quality_control = validate_data_quality(experimental_data)# Execute research analysis
analysis_results = conduct_research_analysis(experimental_data)
statistical_tests = perform_statistical_tests(analysis_results)# Interpret research results
insights = generate_research_insights(analysis_results)
conclusions = draw_research_conclusions(insights)# Called from 19_research.py
def process_research(target_dir, output_dir, verbose=False, **kwargs):
# Conduct research analysis
research_results = conduct_research_analysis(target_dir, verbose)
# Generate research insights
insights = generate_research_insights(research_results)
# Create research documentation
research_docs = create_research_documentation(research_results, insights)
return Trueoutput/19_research_output/
├── research_analysis.json # Research analysis results
├── experimental_results.json # Experimental results
├── statistical_tests.json # Statistical test results
├── research_insights.json # Research insights
├── hypothesis_validation.json # Hypothesis validation results
├── research_protocols.json # Research protocols
├── research_summary.md # Research summary
└── research_report.md # Comprehensive research report
- Descriptive Statistics: Mean, median, standard deviation
- Inferential Statistics: T-tests, ANOVA, regression
- Effect Size Analysis: Cohen's d, eta-squared, R-squared
- Power Analysis: Sample size determination
- Confidence Intervals: Uncertainty quantification
- Randomized Controlled Trials: RCT design and analysis
- Quasi-Experimental Designs: Non-randomized studies
- Longitudinal Studies: Time-series analysis
- Cross-Sectional Studies: Point-in-time analysis
- Meta-Analysis: Literature synthesis
- Quantitative Methods: Statistical analysis and modeling
- Qualitative Methods: Content analysis and interpretation
- Mixed Methods: Combined approaches
- Case Studies: In-depth analysis
- Action Research: Participatory research
- Exploratory Data Analysis: Initial data exploration
- Confirmatory Data Analysis: Hypothesis testing
- Predictive Modeling: Future outcome prediction
- Causal Inference: Cause-effect relationships
- Sensitivity Analysis: Robustness testing
# Research configuration
config = {
'significance_level': 0.05, # Statistical significance level
'confidence_level': 0.95, # Confidence interval level
'power_threshold': 0.8, # Statistical power threshold
'effect_size_threshold': 0.1, # Minimum effect size
'sample_size_minimum': 30, # Minimum sample size
'randomization_enabled': True # Enable randomization
}# Analysis configuration
analysis_config = {
'statistical_tests': ['t_test', 'anova', 'regression'],
'effect_size_measures': ['cohens_d', 'eta_squared'],
'confidence_intervals': True,
'power_analysis': True,
'sensitivity_analysis': True
}# Handle research failures gracefully
try:
results = process_research(target_dir, output_dir)
except ResearchError as e:
logger.error(f"Research processing failed: {e}")
# Provide recovery research or error reporting# Handle analysis failures gracefully
try:
analysis = conduct_research_analysis(data)
except AnalysisError as e:
logger.warning(f"Research analysis failed: {e}")
# Provide recovery analysis or error reporting# Handle experimental failures gracefully
try:
experiment_results = execute_experiment(experiment_design)
except ExperimentError as e:
logger.error(f"Experiment failed: {e}")
# Provide recovery experiment or error reporting- Caching: Cache research results
- Parallel Processing: Parallel research analysis
- Incremental Analysis: Incremental research updates
- Optimized Algorithms: Optimize research algorithms
- Design Optimization: Optimize experimental designs
- Sample Size Optimization: Optimize sample sizes
- Power Optimization: Optimize statistical power
- Resource Optimization: Optimize resource usage
- Statistical Optimization: Optimize statistical tests
- Computational Optimization: Optimize computational methods
- Memory Optimization: Optimize memory usage
- Time Optimization: Optimize analysis time
# Test individual research functions
def test_research_analysis():
results = conduct_research_analysis(test_data)
assert 'statistical_tests' in results
assert 'significant_findings' in results
assert 'effect_sizes' in results# Test complete research pipeline
def test_research_pipeline():
success = process_research(test_dir, output_dir)
assert success
# Verify research outputs
research_files = list(output_dir.glob("**/*"))
assert len(research_files) > 0# Test research validation
def test_hypothesis_validation():
validation = validate_research_hypotheses(test_hypotheses, test_data)
for hypothesis, result in validation.items():
assert 'supported' in result
assert 'p_value' in result
assert 'effect_size' in result- numpy: Numerical computations
- scipy: Scientific computing
- pandas: Data manipulation
- matplotlib: Plotting and visualization
- statsmodels: Statistical modeling
- scikit-learn: Machine learning
- plotly: Interactive visualizations
- seaborn: Statistical visualizations
- Small Studies (< 100 samples): < 10 seconds
- Medium Studies (100-1000 samples): 10-60 seconds
- Large Studies (> 1000 samples): 60-600 seconds
- Base Memory: ~50MB
- Per Study: ~10-100MB depending on complexity
- Peak Memory: 2-3x base usage during analysis
- Statistical Accuracy: 95-99% accuracy
- Effect Size Precision: 90-95% precision
- Power Analysis: 80-95% power
- Confidence Intervals: 90-99% coverage
Error: Research processing failed - insufficient data
Solution: Ensure adequate sample size and data quality
Error: Statistical analysis failed - invalid assumptions
Solution: Check data distribution and test assumptions
Error: Experiment failed - design problems
Solution: Review experimental design and randomization
Error: Research analysis taking too long
Solution: Optimize algorithms or use sampling
# Enable debug mode for detailed research information
results = process_research(target_dir, output_dir, debug=True, verbose=True)- Advanced Analytics: Advanced statistical analysis methods
- Machine Learning Integration: ML-based research analysis
- Real-time Research: Real-time research monitoring
- Collaborative Research: Multi-researcher collaboration tools
- Advanced Algorithms: Advanced research algorithms
- Parallel Processing: Parallel research processing
- Incremental Analysis: Incremental research analysis
- Automated Insights: Automated research insights generation
The Research module provides comprehensive research tools and experimental features for Active Inference research, including advanced analysis, experimental workflows, and research methodology support. The module ensures rigorous research practices, statistical validity, and meaningful insights to support Active Inference research and development.
This module is part of the GeneralizedNotationNotation project. See the main repository for license and citation information.
- Project overview: ../../README.md
- Comprehensive docs: ../../DOCS.md
- Architecture guide: ../../ARCHITECTURE.md
- Pipeline details: ../../doc/pipeline/README.md