import React, { useState, useEffect } from 'react'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, PieChart, Pie, Cell } from 'recharts'; import { Loader2, TrendingUp, Brain, Cpu, MessageSquare } from 'lucide-react'; import { Link } from 'react-router-dom'; import api from '../services/api'; interface AlgorithmStat { algorithm: string; name: string; count: number; } interface DashboardStats { classical_ml: AlgorithmStat[]; deep_learning: AlgorithmStat[]; llms: AlgorithmStat[]; } const Dashboard: React.FC = () => { const [stats, setStats] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchDashboardStats(); }, []); const fetchDashboardStats = async () => { try { setLoading(true); const response = await api.get('/search/dashboard-stats'); setStats(response.data); } catch (err) { setError('Failed to load dashboard statistics'); } finally { setLoading(false); } }; if (loading) { return (
Loading dashboard...
); } if (error) { return (

{error}

); } if (!stats) return null; const combinedData = [ ...stats.classical_ml.map(item => ({ ...item, category: 'Classical ML' })), ...stats.deep_learning.map(item => ({ ...item, category: 'Deep Learning' })), ...stats.llms.map(item => ({ ...item, category: 'LLMs' })) ].sort((a, b) => b.count - a.count).slice(0, 12); const categoryTotals = [ { name: 'Classical ML', value: stats.classical_ml.reduce((sum, item) => sum + item.count, 0), color: '#3B82F6' }, { name: 'Deep Learning', value: stats.deep_learning.reduce((sum, item) => sum + item.count, 0), color: '#8B5CF6' }, { name: 'LLMs', value: stats.llms.reduce((sum, item) => sum + item.count, 0), color: '#10B981' } ]; const totalPapers = categoryTotals.reduce((sum, cat) => sum + cat.value, 0); return (

AI Algorithms in Medical Research

Explore the landscape of AI algorithms used in PubMed medical papers

Total Papers

{totalPapers.toLocaleString()}

Classical ML Papers

{categoryTotals[0].value.toLocaleString()}

Deep Learning Papers

{categoryTotals[1].value.toLocaleString()}

LLMs Papers

{categoryTotals[2].value.toLocaleString()}

Algorithm Distribution

`${name} ${(percent * 100).toFixed(1)}%`} outerRadius={80} fill="#8884d8" dataKey="value" > {categoryTotals.map((entry, index) => ( ))}

Top Algorithms by Usage

Classical ML Algorithms

{stats.classical_ml.slice(0, 8).map((algo, index) => (
{algo.name}
{algo.count.toLocaleString()}
))}

Deep Learning Algorithms

{stats.deep_learning.slice(0, 8).map((algo, index) => (
{algo.name}
{algo.count.toLocaleString()}
))}

Large Language Models

{stats.llms.slice(0, 8).map((algo, index) => (
{algo.name}
{algo.count.toLocaleString()}
))}
); }; export default Dashboard;