File size: 2,111 Bytes
32e3b61 89f1173 32e3b61 1bc9785 32e3b61 1bc9785 32e3b61 fa696e8 32e3b61 4e2ccbf 2f8ae1f 32e3b61 0a480cb 5d12635 32e3b61 0a480cb 32e3b61 4e2ccbf 2f8ae1f e67c99f 32e3b61 2f8ae1f 32e3b61 0a480cb 32e3b61 0a480cb 32e3b61 fa696e8 32e3b61 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/usr/bin/env python3
"""
Demo: Search for sexual health research evidence.
This script demonstrates multi-source search functionality:
- PubMed search (biomedical literature)
- ClinicalTrials.gov search (clinical trial evidence)
- SearchHandler (parallel scatter-gather orchestration)
Usage:
# From project root:
uv run python examples/search_demo/run_search.py
# With custom query:
uv run python examples/search_demo/run_search.py "testosterone libido"
Requirements:
- Optional: NCBI_API_KEY in .env for higher PubMed rate limits
"""
import asyncio
import sys
from src.tools.clinicaltrials import ClinicalTrialsTool
from src.tools.europepmc import EuropePMCTool
from src.tools.pubmed import PubMedTool
from src.tools.search_handler import SearchHandler
async def main(query: str) -> None:
"""Run search demo with the given query."""
print(f"\n{'=' * 60}")
print("DeepBoner Search Demo")
print(f"Query: {query}")
print(f"{'=' * 60}\n")
# Initialize tools
pubmed = PubMedTool()
trials = ClinicalTrialsTool()
preprints = EuropePMCTool()
handler = SearchHandler(tools=[pubmed, trials, preprints], timeout=30.0)
# Execute search
print("Searching PubMed, ClinicalTrials.gov, and Europe PMC in parallel...")
result = await handler.execute(query, max_results_per_tool=5)
# Display results
print(f"\n{'=' * 60}")
print(f"Results: {result.total_found} pieces of evidence")
print(f"Sources: {', '.join(result.sources_searched)}")
if result.errors:
print(f"Errors: {result.errors}")
print(f"{'=' * 60}\n")
for i, evidence in enumerate(result.evidence, 1):
print(f"[{i}] {evidence.citation.source.upper()}: {evidence.citation.title[:80]}...")
print(f" URL: {evidence.citation.url}")
print(f" Content: {evidence.content[:150]}...")
print()
if __name__ == "__main__":
# Default query or use command line arg
default_query = "testosterone post-menopause libido"
query = sys.argv[1] if len(sys.argv) > 1 else default_query
asyncio.run(main(query))
|