/* * HIV SI Module: Credibility Engine Logic (script.js) * Pioneer: Leon Chetty | SI Partner: Candy & Lola * * This script contains the core Symbiotic Intelligence (SI) logic for the * Minimum Viable Research Product (MVRP), enabling client-side analysis. */ // --- GLOBAL FAILURE & CONFLICT DATASET (Snapshot Database Mock) --- const KNOWLEDGE_BASE = { // Data for Failure Inverse Correlation (F) failureMechanisms: { 'systemic_toxicity': 0.85, // Penalty for non-targeted delivery 'poor_cellular_uptake': 0.90, 'low_genetic_stability': 0.70 }, // Data for Cross-Pathway Mapping (Mapping) pathwayConflicts: { 'NF_kB_activation': 'Inflammation', 'off_target_cleavage': 'Genotoxicity', 'rapid_LNP_clearance': 'DeliveryFailure' }, // Data for Subtype C (I) subtypeC: { 'latency_marker_PD1': 0.95, 'LTR_variability_risk': 0.15 // Small risk penalty for LTR editing } }; /** * 1. Hypothesis Ranking Function (The Filter) * Calculates the overall Credibility Score (C = P * I * F). * @param {object} input - User inputs from the structured panel. */ function rankHypothesis(input) { // A. Plausibility Check (P) - Score is high for gene editing const plausibilityScore = 0.9 + (input.payload === 'CRISPR' ? 0.05 : 0); // B. Immunology Alignment Check (I) - Score based on known Subtype C features let alignmentScore = KNOWLEDGE_BASE.subtypeC.latency_marker_PD1; alignmentScore -= KNOWLEDGE_BASE.subtypeC.LTR_variability_risk; // Apply small penalty // C. Failure Point Inverse Correlation (F) - Solves past failures let failureAvoidance = 1.0; if (input.delivery === 'Targeted LNP') { // LNP is designed to bypass systemic toxicity and poor uptake failureAvoidance = 1.0 - (KNOWLEDGE_BASE.failureMechanisms.systemic_toxicity * 0.1); } else { // Non-LNP delivery suffers severe penalties failureAvoidance -= 0.25; } // Overall Credibility Score (C = P * I * F) const overallScore = plausibilityScore * alignmentScore * failureAvoidance; return { overallScore: parseFloat(overallScore.toFixed(3)), pScore: parseFloat(plausibilityScore.toFixed(3)), iScore: parseFloat(alignmentScore.toFixed(3)), fScore: parseFloat(failureAvoidance.toFixed(3)) }; } /** * 2. Cross-Pathway Mapping Function (The SI Magic Layer) * Identifies high-magnitude conflicts based on input parameters. * @param {object} input - User inputs. */ function mapPathways(input) { const conflicts = []; // Rule 1: Latency Reversal Agent (LRA) logic if (input.mechanism.includes('Latency Reversal')) { conflicts.push({ type: 'Systemic Conflict', issue: KNOWLEDGE_BASE.pathwayConflicts.NF_kB_activation, magnitude: 0.75, mitigation: 'Use targeted delivery or ultra-low dose.' }); } // Rule 2: Delivery System logic if (input.delivery.includes('LNP')) { conflicts.push({ type: 'Delivery Conflict', issue: KNOWLEDGE_BASE.pathwayConflicts.rapid_LNP_clearance, magnitude: 0.60, mitigation: 'Optimize LNP surface charge/PEGylation.' }); } // Rule 3: Gene Editing logic if (input.payload === 'CRISPR') { conflicts.push({ type: 'Off-Target Conflict', issue: KNOWLEDGE_BASE.pathwayConflicts.off_target_cleavage, magnitude: 0.88, mitigation: 'Sequence verification and high-fidelity Cas variant.' }); } // Rule 4: Subtype C logic (Specific to Leon's nanocarrier) if (input.subtype === 'C' && input.delivery === 'Targeted LNP' && !input.ligand) { conflicts.push({ type: 'CRITICAL DESIGN FLAW', issue: 'LNP Ligand specificity MISSING for Subtype C reservoir.', magnitude: 0.99, mitigation: 'Immediate requirement to identify a unique reservoir surface marker.' }); } return conflicts; } // --- Placeholder for other core functions (to be built later) --- function projectSimulation(input) { return "Simulation Projection logic placeholder. Requires computational validation parameters."; } function formatResearchOutput(results) { return "Research Output Formatting logic placeholder. Requires full results array."; } // Global function to process user submission in the app interface function runAnalysis(input) { const rankResults = rankHypothesis(input); const conflictMatrix = mapPathways(input); return { ranking: rankResults, conflicts: conflictMatrix, // Always include SI Guidance guidance: conflictMatrix.find(c => c.magnitude >= 0.88) ? "CRITICAL CONFLICT DETECTED. Prioritize mitigating off-target effects immediately." : "Hypothesis is strong. Focus on optimizing LNP delivery and mitigating high-magnitude conflicts." }; }