Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Biopesticide-AI | dsRNA Biopesticide Design Platform</title> | |
| <meta name="description" content="Design species-specific dsRNA biopesticides in minutes. Local Llama 3.2 3B + PyTorch + 14-species safety panel."> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700;9..144,800;9..144,900&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script> | |
| <link rel="stylesheet" href="/static/styles.css"> | |
| </head> | |
| <body> | |
| <header class="site-header"> | |
| <div class="header-inner"> | |
| <a href="/" class="logo"> | |
| <span class="logo-mark"></span> | |
| <span class="logo-text">Biopesticide<span class="logo-accent">-AI</span></span> | |
| </a> | |
| <nav class="header-nav"> | |
| <a href="#design">Design</a> | |
| <a href="#about">About</a> | |
| <a href="https://github.com" target="_blank" rel="noopener">GitHub</a> | |
| </nav> | |
| <div class="header-status" id="header-status"> | |
| <span class="status-dot" id="status-dot"></span> | |
| <span class="status-text" id="status-text">Initializing...</span> | |
| </div> | |
| </div> | |
| </header> | |
| <section class="hero"> | |
| <div class="hero-inner"> | |
| <div class="hero-badge"> | |
| <span class="hero-badge-dot"></span> | |
| AMD Developer Hackathon · Unicorn Track | |
| </div> | |
| <h1 class="hero-title"> | |
| Designing the future of<br> | |
| <span class="hero-title-accent">biopesticides</span> | |
| </h1> | |
| <p class="hero-subtitle"> | |
| An AI pipeline that designs ranked, safety-checked dsRNA candidates — in minutes, not months. | |
| Powered by local Llama 3.2 3B, PyTorch, and a 14-species safety panel. | |
| </p> | |
| <div class="hero-metrics"> | |
| <div class="hero-metric"><div class="hero-metric-num">7</div><div class="hero-metric-lbl">Pest targets</div></div> | |
| <div class="hero-metric-sep"></div> | |
| <div class="hero-metric"><div class="hero-metric-num">14</div><div class="hero-metric-lbl">Safety species</div></div> | |
| <div class="hero-metric-sep"></div> | |
| <div class="hero-metric"><div class="hero-metric-num">~4 min</div><div class="hero-metric-lbl">Design loop</div></div> | |
| <div class="hero-metric-sep"></div> | |
| <div class="hero-metric"><div class="hero-metric-num">$0</div><div class="hero-metric-lbl">Per design</div></div> | |
| <div class="hero-metric-sep"></div> | |
| <div class="hero-metric"><div class="hero-metric-num">100%</div><div class="hero-metric-lbl">Local compute</div></div> | |
| </div> | |
| </div> | |
| <div class="hero-bg-pattern"></div> | |
| </section> | |
| <section class="design-section" id="design"> | |
| <div class="container"> | |
| <div class="section-header"> | |
| <h2 class="section-title">Select your pest target</h2> | |
| <p class="section-subtitle">Click a pest card to design dsRNA candidates. The pipeline runs immediately — no waiting for LLM parsing.</p> | |
| </div> | |
| <!-- Pest selector grid --> | |
| <div class="pest-grid" id="pest-grid"> | |
| <button class="pest-card" data-species="nilaparvata_lugens" data-crop="Rice" data-prompt="Brown planthopper infestation in rice paddy in Tamil Nadu. Severity moderate."> | |
| <div class="pest-card-icon pest-icon-rice"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Brown planthopper</div> | |
| <div class="pest-card-latin">Nilaparvata lugens</div> | |
| <div class="pest-card-crop">Rice</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="spodoptera_frugiperda" data-crop="Maize" data-prompt="Fall armyworm outbreak in maize field in Karnataka. Severe damage."> | |
| <div class="pest-card-icon pest-icon-maize"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Fall armyworm</div> | |
| <div class="pest-card-latin">Spodoptera frugiperda</div> | |
| <div class="pest-card-crop">Maize</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="schistocerca_gregaria" data-crop="Wheat" data-prompt="Desert locust swarm in wheat fields of Rajasthan. Need rapid response."> | |
| <div class="pest-card-icon pest-icon-wheat"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Desert locust</div> | |
| <div class="pest-card-latin">Schistocerca gregaria</div> | |
| <div class="pest-card-crop">Wheat</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="chilo_suppressalis" data-crop="Rice" data-prompt="Striped stem borer infestation in rice field. Moderate severity."> | |
| <div class="pest-card-icon pest-icon-rice"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Striped stem borer</div> | |
| <div class="pest-card-latin">Chilo suppressalis</div> | |
| <div class="pest-card-crop">Rice</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="myzus_persicae" data-crop="Vegetables" data-prompt="Peach-potato aphid outbreak in vegetable garden. Organic farm, need bee-safe solution."> | |
| <div class="pest-card-icon pest-icon-veg"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Peach-potato aphid</div> | |
| <div class="pest-card-latin">Myzus persicae</div> | |
| <div class="pest-card-crop">Vegetables</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="leptinotarsa_decemlineata" data-crop="Potato" data-prompt="Colorado potato beetle devastating potato crop in Himachal Pradesh. Resistance to neonicotinoids suspected."> | |
| <div class="pest-card-icon pest-icon-potato"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Colorado potato beetle</div> | |
| <div class="pest-card-latin">Leptinotarsa decemlineata</div> | |
| <div class="pest-card-crop">Potato</div> | |
| </div> | |
| </button> | |
| <button class="pest-card" data-species="bemisia_tabaci" data-crop="Tomato" data-prompt="Tobacco whitefly infestation in tomato greenhouse in Maharashtra. Mild severity but persistent."> | |
| <div class="pest-card-icon pest-icon-tomato"></div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Tobacco whitefly</div> | |
| <div class="pest-card-latin">Bemisia tabaci</div> | |
| <div class="pest-card-crop">Tomato</div> | |
| </div> | |
| </button> | |
| <button class="pest-card pest-card-custom" id="custom-input-btn"> | |
| <div class="pest-card-icon pest-icon-custom">+</div> | |
| <div class="pest-card-body"> | |
| <div class="pest-card-name">Describe in your own words</div> | |
| <div class="pest-card-latin">Natural language input</div> | |
| <div class="pest-card-crop">Any crop</div> | |
| </div> | |
| </button> | |
| </div> | |
| <!-- Custom input (hidden by default, revealed when "custom" card is clicked) --> | |
| <div class="input-card" id="custom-input-card" style="display: none;"> | |
| <textarea id="pest-report" class="pest-input" placeholder="e.g. 'Brown planthopper infestation in my rice paddy near Coimbatore, Tamil Nadu. Severity moderate, second generation this season.'" rows="4"></textarea> | |
| <div class="input-footer"> | |
| <div class="examples"> | |
| <span class="examples-label">Try:</span> | |
| <button class="example-chip" data-text="Brown planthopper infestation in my rice paddy near Coimbatore, Tamil Nadu. Severity moderate, second generation this season.">Brown planthopper</button> | |
| <button class="example-chip" data-text="Fall armyworm outbreak in maize field in Karnataka. Severe damage on 30% of plants, spreading fast.">Fall armyworm</button> | |
| <button class="example-chip" data-text="Desert locust swarm reported in wheat fields of Rajasthan. Need rapid response biopesticide design.">Desert locust</button> | |
| </div> | |
| <div class="input-actions"> | |
| <label class="topk-control"> | |
| <span class="topk-label">Top-K</span> | |
| <input type="number" id="top-k" value="10" min="1" max="20" class="topk-input"> | |
| </label> | |
| <button id="design-btn" class="design-btn"> | |
| <span class="design-btn-text">Design dsRNA candidates</span> | |
| <span class="design-btn-arrow">→</span> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Top-K control (visible in card mode too) --> | |
| <div class="card-mode-controls" id="card-mode-controls"> | |
| <label class="topk-control"> | |
| <span class="topk-label">Top-K candidates</span> | |
| <input type="number" id="top-k-card" value="10" min="1" max="20" class="topk-input"> | |
| </label> | |
| </div> | |
| <!-- Loading state --> | |
| <div class="loading-state" id="loading-state" style="display: none;"> | |
| <div class="loading-spinner"></div> | |
| <p class="loading-text">Running design pipeline...</p> | |
| <p class="loading-subtext" id="loading-subtext">Loading pest transcripts...</p> | |
| </div> | |
| <!-- Error state --> | |
| <div class="error-state" id="error-state" style="display: none;"> | |
| <p class="error-text" id="error-text"></p> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="results-section" id="results-section" style="display: none;"> | |
| <div class="container"> | |
| <div class="stats-strip" id="stats-strip"></div> | |
| <div class="result-block"> | |
| <h3 class="block-title">Parsed pest report</h3> | |
| <div class="pest-report-card" id="pest-report-card"></div> | |
| </div> | |
| <div class="result-block"> | |
| <h3 class="block-title">Top candidates</h3> | |
| <div class="candidates-grid" id="candidates-grid"></div> | |
| </div> | |
| <div class="result-block"> | |
| <div class="tabs"> | |
| <button class="tab active" data-tab="analytics">Analytics</button> | |
| <button class="tab" data-tab="simulation">Wet-lab simulation</button> | |
| <button class="tab" data-tab="safety">Safety cards</button> | |
| <button class="tab" data-tab="regulatory">Regulatory memo</button> | |
| <button class="tab" data-tab="export">Export</button> | |
| </div> | |
| <div class="tab-content active" id="tab-analytics"> | |
| <div class="chart-grid"> | |
| <div class="chart-card"> | |
| <h4 class="chart-title">Efficacy scores (0–1 scale)</h4> | |
| <div class="chart-container"><canvas id="efficacy-chart"></canvas></div> | |
| </div> | |
| <div class="chart-card"> | |
| <h4 class="chart-title">Environmental half-life (hours)</h4> | |
| <div class="chart-container"><canvas id="halflife-chart"></canvas></div> | |
| </div> | |
| </div> | |
| <div class="chart-card chart-card-wide"> | |
| <h4 class="chart-title">Off-target risk heatmap (candidates × 14 species)</h4> | |
| <div class="chart-container chart-container-tall" id="heatmap-container"></div> | |
| </div> | |
| </div> | |
| <div class="tab-content" id="tab-simulation"> | |
| <div class="sim-intro"> | |
| <h4 class="sim-title">Virtual wet-lab validation</h4> | |
| <p class="sim-desc">Simulates the cellular knockdown pipeline: dsRNA delivery → uptake → Dicer processing → RISC loading → target mRNA cleavage → phenotypic response. Runs 1000 Monte Carlo trials per candidate with noise at each step.</p> | |
| <button id="simulate-btn" class="design-btn sim-btn">Run wet-lab simulation</button> | |
| </div> | |
| <div id="simulation-results" class="sim-results"></div> | |
| </div> | |
| <div class="tab-content" id="tab-safety"> | |
| <div id="safety-cards-content" class="safety-cards-content"></div> | |
| </div> | |
| <div class="tab-content" id="tab-regulatory"> | |
| <div id="regulatory-memo-content" class="regulatory-memo-content"></div> | |
| </div> | |
| <div class="tab-content" id="tab-export"> | |
| <div class="export-section"> | |
| <div class="export-card"> | |
| <h4 class="export-title">CSV export</h4> | |
| <p class="export-desc">Download the top candidates as a CSV file.</p> | |
| <button class="export-btn" id="export-csv-btn">Download CSV</button> | |
| </div> | |
| <div class="export-card"> | |
| <h4 class="export-title">JSON export</h4> | |
| <p class="export-desc">Download the full design result as JSON.</p> | |
| <button class="export-btn" id="export-json-btn">Download JSON</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="about-section" id="about"> | |
| <div class="container"> | |
| <h2 class="section-title">How it works</h2> | |
| <div class="pipeline-grid"> | |
| <div class="pipeline-step"><div class="pipeline-num">01</div><h4>Select</h4><p>Click a pest target card (7 species supported) or describe the problem in natural language.</p></div> | |
| <div class="pipeline-step"><div class="pipeline-num">02</div><h4>Tile & Dice</h4><p>PyTorch backend tiles pest transcripts into 200-nt dsRNA precursors, then dices them into 21-nt siRNAs.</p></div> | |
| <div class="pipeline-step"><div class="pipeline-num">03</div><h4>Score</h4><p>Dilated CNN scores each siRNA for efficacy. K-mer index checks off-target risk against 14 species.</p></div> | |
| <div class="pipeline-step"><div class="pipeline-num">04</div><h4>Predict</h4><p>Physics-Informed Neural Network predicts environmental half-life based on sequence and field conditions.</p></div> | |
| <div class="pipeline-step"><div class="pipeline-num">05</div><h4>Rank</h4><p>Learned ranker combines efficacy, safety, and fate into a final score. Top candidates are selected.</p></div> | |
| <div class="pipeline-step"><div class="pipeline-num">06</div><h4>Simulate</h4><p>Virtual wet-lab runs 1000 Monte Carlo trials per candidate, modeling delivery, uptake, Dicer, RISC, and knockdown.</p></div> | |
| </div> | |
| </div> | |
| </section> | |
| <footer class="site-footer"> | |
| <div class="container"> | |
| <p>Built for the AMD Developer Hackathon Unicorn Track · PyTorch + Ollama Llama 3.2 3B · 14-species safety panel · MIT licensed</p> | |
| </div> | |
| </footer> | |
| <script src="/static/app.js"></script> | |
| </body> | |
| </html> | |