Skip to content

studentiz/comed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

53 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Benchmarking Large Language Models for Drug Combination Alerts: Achieving Expert-Level Reliability via Knowledge Grounding and Contextual Reasoning

  • doi: 10.1021/acs.jmedchem.5c03511

Python 3.8+ PyPI version License: BSD-2-Clause

โš ๏ธ IMPORTANT DISCLAIMER

๐Ÿšจ CRITICAL NOTICE: This tool is designed for research and educational purposes only.

CoMed is NOT intended for direct clinical use and should NOT be used as the sole basis for clinical decision-making.

  • โœ… Intended Use: Research, education, and clinical decision support for healthcare professionals
  • โŒ NOT for: Direct patient care, automated clinical decisions, or replacing professional medical judgment
  • ๐Ÿ”ฌ Target Users: Clinical researchers, healthcare professionals, and medical students
  • โš–๏ธ Responsibility: Always consult qualified healthcare professionals for clinical decisions

By using this software, you acknowledge that it is for research and educational purposes only.

๐ŸŽฏ Overview

CoMed is a comprehensive framework for analyzing drug co-medication risks using advanced AI techniques including Retrieval-Augmented Generation (RAG), Chain-of-Thought (CoT) reasoning, and multi-agent collaboration. It automates the process of searching medical literature, analyzing drug interactions, and generating detailed risk assessment reports.

Why CoMed?

  • Research Efficiency: Automate literature review for drug interaction studies
  • Comprehensive Analysis: Combine multiple AI approaches for thorough risk assessment
  • Reproducible Results: Standardized methodology for consistent analysis
  • Scalable Processing: Handle multiple drug combinations efficiently
  • Evidence-Based: Ground analysis in peer-reviewed medical literature

๐Ÿ”ง Key Features

1. Literature Retrieval & Analysis

  • Automated PubMed search with intelligent query construction
  • Relevance filtering and ranking of medical literature
  • Statistical analysis of retrieved papers
  • Support for custom search parameters

2. Advanced AI Reasoning

  • Chain-of-Thought reasoning for step-by-step analysis
  • Multi-agent collaboration for comprehensive assessment
  • Conflict resolution and consensus building
  • Confidence-weighted decision making

3. Comprehensive Risk Assessment

  • Multi-dimensional risk analysis (pharmacokinetic, pharmacodynamic, clinical)
  • Evidence-based risk scoring
  • Detailed interaction mechanism analysis
  • Clinical recommendation generation

4. Flexible Architecture

  • Modular design for easy customization
  • Support for different LLM providers
  • Configurable analysis parameters
  • Extensible agent system

๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.8 or higher
  • OpenAI API key (or compatible LLM API)

Install from PyPI

pip install comed

Install from Source

git clone https://github.com/studentiz/comed.git
cd comed
pip install -e .

๐Ÿš€ Quick Start

Basic Setup

import os
import comed

# Configure your LLM API
os.environ["MODEL_NAME"] = "gpt-4o"  # or "gpt-3.5-turbo", "qwen2.5-32b-instruct"
os.environ["API_BASE"] = "https://api.openai.com/v1"
os.environ["API_KEY"] = "your-api-key-here"

# Initialize with drug list
drugs = ["warfarin", "aspirin", "ibuprofen"]
com = comed.CoMedData(drugs)

# Run complete analysis
report_path = com.run_full_analysis(retmax=30, verbose=True)
print(f"Report generated at: {report_path}")

Step-by-Step Analysis

# 1. Search medical literature
com.search(retmax=20, email="your.email@example.com")

# 2. Analyze drug associations
com.analyze_associations()

# 3. Assess risks
com.analyze_risks()

# 4. Generate report
com.generate_report("Drug_Interaction_Report.html")

๐Ÿ“š Usage Examples

Example 1: Cardiovascular Drug Interactions

import os
import comed

# Set up API credentials
os.environ["MODEL_NAME"] = "gpt-4o"
os.environ["API_BASE"] = "https://api.openai.com/v1"
os.environ["API_KEY"] = "your-api-key-here"

# Analyze cardiovascular drug combinations
cardiovascular_drugs = ["warfarin", "aspirin", "clopidogrel", "metoprolol"]
com = comed.CoMedData(cardiovascular_drugs)

# Run analysis with method chaining
com.search(retmax=50) \
   .analyze_associations() \
   .analyze_risks() \
   .generate_report("Cardiovascular_Interactions.html")

Example 2: Diabetes Medication Analysis

# Analyze diabetes medication interactions
diabetes_drugs = ["metformin", "insulin", "glipizide", "pioglitazone"]
com = comed.CoMedData(diabetes_drugs)

# Incremental analysis
com.search(retmax=30)
com.analyze_associations()

# Add more drugs and continue analysis
com.add_drugs(["sitagliptin", "canagliflozin"])
com.search(retmax=30)
com.analyze_risks()
com.generate_report("Diabetes_Medication_Analysis.html")

Example 3: Multi-Agent Collaboration

from comed import MultiAgentSystem

# Initialize multi-agent system
agent_system = MultiAgentSystem(
    model_name="gpt-4o",
    api_key="your-key",
    api_base="https://api.openai.com/v1"
)

# Analyze specific drug combination
drug1, drug2 = "warfarin", "aspirin"
abstract = "Literature abstract content..."

# Use consensus collaboration
result = agent_system.process_drug_combination(
    drug1, drug2, abstract, 
    collaboration_mode="consensus"
)

print(f"Risk Assessment: {result['risk_analysis']}")
print(f"Safety Recommendation: {result['safety_assessment']}")
print(f"Clinical Guidance: {result['clinical_recommendation']}")

Example 4: Batch Processing

# Process multiple drug combinations
drug_combinations = [
    ["warfarin", "aspirin"],
    ["metformin", "lisinopril"],
    ["atorvastatin", "amlodipine"]
]

for i, drugs in enumerate(drug_combinations):
    com = comed.CoMedData(drugs)
    com.search(retmax=20)
    com.analyze_associations()
    com.analyze_risks()
    com.generate_report(f"Combination_{i+1}_Report.html")

๐ŸŽฎ Demo Scripts

Run the included demo scripts to see CoMed in action:

# Basic functionality demo
python examples/basic_demo.py

# Quick start tutorial
python examples/quick_start.py

# Multi-agent system demo
python examples/simple_agent_test.py

# Load existing data and analyze
python examples/load_and_analyze.py

๐Ÿ”ง Advanced Configuration

Environment Variables

export MODEL_NAME="gpt-4o"
export API_BASE="https://api.openai.com/v1"
export API_KEY="your-api-key"
export LOG_DIR="logs"
export OLD_OPENAI_API="No"  # Set to "Yes" for older OpenAI API format

Custom LLM Configuration

# Configure different LLM providers
com = comed.CoMedData(["drug1", "drug2"])
com.set_config({
    'model_name': 'qwen2.5-32b-instruct',
    'api_base': 'https://your-llm-api.com/v1',
    'api_key': 'your-api-key'
})

Analysis Parameters

# Customize search parameters
com.search(
    retmax=50,  # Number of papers to retrieve
    email="your.email@example.com",  # Required for PubMed
    date_range=("2020/01/01", "2024/12/31")  # Optional date filter
)

# Customize analysis depth
com.analyze_associations(
    confidence_threshold=0.7,  # Minimum confidence for associations
    include_mechanisms=True    # Include interaction mechanisms
)

๐Ÿ—๏ธ Architecture

Core Components

CoMed Framework
โ”œโ”€โ”€ RAG Module (rag.py)
โ”‚   โ”œโ”€โ”€ Literature retrieval from PubMed
โ”‚   โ”œโ”€โ”€ Relevance scoring and filtering
โ”‚   โ””โ”€โ”€ Statistical analysis
โ”œโ”€โ”€ CoT Module (cot.py)
โ”‚   โ”œโ”€โ”€ Chain-of-thought reasoning
โ”‚   โ”œโ”€โ”€ Step-by-step analysis
โ”‚   โ””โ”€โ”€ Result interpretation
โ”œโ”€โ”€ Multi-Agent Module (agents.py)
โ”‚   โ”œโ”€โ”€ RiskAnalysisAgent
โ”‚   โ”œโ”€โ”€ SafetyAgent
โ”‚   โ”œโ”€โ”€ ClinicalAgent
โ”‚   โ””โ”€โ”€ Collaboration protocols
โ””โ”€โ”€ Core Module (core.py)
    โ”œโ”€โ”€ Component integration
    โ”œโ”€โ”€ Configuration management
    โ””โ”€โ”€ Result aggregation

Data Flow

Drug Combinations โ†’ Literature Search โ†’ Association Analysis โ†’ Risk Assessment โ†’ Report Generation
        โ†“                    โ†“                    โ†“                    โ†“
   Input Validation    PubMed Retrieval    CoT Reasoning    Multi-Agent Analysis
        โ†“                    โ†“                    โ†“                    โ†“
   Query Construction   Relevance Filtering   Evidence Analysis   Consensus Building
        โ†“                    โ†“                    โ†“                    โ†“
   Search Execution    Statistical Analysis   Risk Scoring      Final Report

๐Ÿ“Š Performance & Evaluation

CoMed provides built-in performance monitoring and evaluation capabilities:

# Monitor analysis performance
com = comed.CoMedData(["warfarin", "aspirin"])
com.search(retmax=20)

# Get performance statistics
stats = com.get_performance_stats()
print(f"Papers retrieved: {stats['papers_retrieved']}")
print(f"Analysis time: {stats['analysis_time']:.2f}s")
print(f"Success rate: {stats['success_rate']:.2%}")

๐Ÿ“š API Reference

Core Classes

  • CoMedData: Main analysis class
  • RAGSystem: Literature retrieval system
  • CoTReasoner: Chain-of-thought reasoning
  • MultiAgentSystem: Multi-agent collaboration

Key Methods

Analysis Methods

  • search(retmax, email, date_range): Search medical literature
  • analyze_associations(confidence_threshold): Analyze drug associations
  • analyze_risks(risk_dimensions): Assess interaction risks
  • generate_report(filename): Generate HTML report

Multi-Agent Methods

  • process_drug_combination(drug1, drug2, abstract, mode): Process with agents
  • get_agent_stats(): Get agent performance statistics
  • set_collaboration_mode(mode): Set collaboration strategy

Configuration Methods

  • set_config(config_dict): Set system configuration
  • add_drugs(drug_list): Add drugs to analysis
  • save_data(filename): Save analysis data
  • load_data(filename): Load existing data

๐Ÿ› ๏ธ Development

Adding Custom Agents

from comed.agents import Agent

class CustomAnalysisAgent(Agent):
    def __init__(self, model_name, api_key, api_base):
        super().__init__(
            name="CustomAnalysisAgent",
            description="Custom drug analysis",
            model_name=model_name,
            api_key=api_key,
            api_base=api_base
        )
    
    def _execute_task(self, input_data):
        # Implement custom analysis logic
        return {"custom_result": "Analysis result"}

Extending Analysis Modules

from comed.rag import RAGSystem

class CustomRAGSystem(RAGSystem):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
    
    def custom_search_method(self, query):
        # Implement custom search logic
        pass

๐Ÿค Contributing

We welcome contributions in various forms:

  1. Code Contributions: New features, bug fixes, performance optimizations
  2. Documentation: Better examples, tutorials, API documentation
  3. Testing: Unit tests, integration tests, benchmark tests
  4. Research: New evaluation metrics, test scenarios, and performance studies

Development Setup

# Clone the repository
git clone https://github.com/studentiz/comed.git
cd comed

# Install in development mode
pip install -e .

# Install development dependencies (optional)
pip install -r requirements-dev.txt

# Set up environment variables
export MODEL_NAME="gpt-4o"
export API_BASE="https://api.openai.com/v1"
export API_KEY="your-api-key-here"

๐Ÿ“„ License

This project is licensed under the BSD-2-Clause License. See LICENSE file for details.

๐Ÿ™ Acknowledgments

Thanks to the research community for valuable feedback and contributions. Special thanks to reviewers who helped improve the framework's modularity and evaluation capabilities.

๐Ÿ“ž Contact


Note: This framework is for research purposes only and should not be used for clinical decision-making. Any medical decisions should be made in consultation with qualified healthcare professionals.

About

CoMed is a comprehensive framework for analyzing drug co-medication risks using Chain-of-Thought (CoT) reasoning and large language models. It automates the process of searching medical literature, analyzing drug interactions, and generating detailed risk assessment reports.

Resources

License

Stars

22 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages