feat: initial commit - oncology literature search platform
OncoLit: a multi-tenant oncology literature search, feed, and collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL. Includes PubMed pipeline, drug approvals, AI summaries, and systematic review tools.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import asyncio
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
|
||||
DATABASE_URL = 'postgresql+asyncpg://scilit:scilit_prod_2026@postgres:5432/scilit'
|
||||
|
||||
async def main():
|
||||
engine = create_async_engine(DATABASE_URL)
|
||||
async with engine.connect() as conn:
|
||||
# Check cited_by_count distribution
|
||||
r = await conn.execute(text("""
|
||||
SELECT
|
||||
CASE
|
||||
WHEN cited_by_count IS NULL OR cited_by_count = 0 THEN '0 or NULL'
|
||||
WHEN cited_by_count BETWEEN 1 AND 5 THEN '1-5'
|
||||
WHEN cited_by_count BETWEEN 6 AND 20 THEN '6-20'
|
||||
WHEN cited_by_count BETWEEN 21 AND 100 THEN '21-100'
|
||||
ELSE '100+'
|
||||
END as bucket,
|
||||
COUNT(*) as cnt,
|
||||
MAX(cited_by_count) as max_in_bucket
|
||||
FROM global_literature
|
||||
GROUP BY bucket
|
||||
ORDER BY MIN(COALESCE(cited_by_count, 0))
|
||||
"""))
|
||||
print('=== Cited by count distribution ===')
|
||||
for row in r:
|
||||
print(f' {row.bucket}: {row.cnt}')
|
||||
|
||||
# Latest citation update time
|
||||
r = await conn.execute(text("""
|
||||
SELECT MAX(updated_at) as last_update, COUNT(*) as total_with_citations
|
||||
FROM global_literature WHERE cited_by_count IS NOT NULL AND cited_by_count > 0
|
||||
"""))
|
||||
for row in r:
|
||||
print(f'\nLast citation update: {row.last_update}')
|
||||
print(f'Articles with citations: {row.total_with_citations}')
|
||||
|
||||
# Check what refresh_hot_articles_cache filters by
|
||||
r = await conn.execute(text("""
|
||||
SELECT cited_by_count, pub_date, pmid FROM global_literature
|
||||
WHERE cited_by_count IS NOT NULL AND cited_by_count > 0
|
||||
AND pub_date >= CURRENT_DATE - INTERVAL '365 days'
|
||||
ORDER BY cited_by_count DESC LIMIT 10
|
||||
"""))
|
||||
print('\nTop cited articles in last year:')
|
||||
for row in r:
|
||||
print(f' PMID={row.pmid} cited={row.cited_by_count} pub_date={row.pub_date}')
|
||||
|
||||
await engine.dispose()
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user