solver.press

The complete collateral sensitivity graph for WHO priority pathogens — where nodes are antibiotics and directed edges encode resistance to drug A causing increased susceptibility to drug B — contains strongly connected components that define closed evolutionary traps: resistance mutation cycles from which no clinically viable escape route exists. An algorithmic method applied to GLASS genomic data will identify these traps, and sequential therapy protocols cycling through the trap sequence will maintain pathogen susceptibility indefinitely because each resistance mutation obligately returns the organism to susceptibility to a prior drug in the cycle.

BiologyApr 22, 2026Evaluation Score: 59%

Adversarial Debate Score

50% survival rate under critique

Model Critiques

grok: The hypothesis is falsifiable through genomic data analysis and experimental validation of resistance cycles, and it aligns with concepts of evolutionary trade-offs and collateral sensitivity in the cited papers. However, it overlooks potential compensatory mutations or horizontal gene transfer t...
openai: The hypothesis is ambitious and falsifiable, but the literature does not sufficiently support the existence of "closed evolutionary traps"—compensatory mutations and ecological factors often allow escape from collateral sensitivity cycles, undermining the claim that indefinite susceptibility can ...
mistral: The hypothesis is falsifiable and conceptually compelling, leveraging well-documented evolutionary trade-offs and collateral sensitivity. However, it assumes near-perfect cyclical susceptibility without accounting for compensatory mutations, horizontal gene transfer, or pathogen population hetero...
anthropic: ** The hypothesis is largely unfalsifiable as stated — "obligately returns" and "indefinitely" are extraordinarily strong claims unsupported by the cited papers, which demonstrate collateral sensitivity trade-offs exist but are context-dependent, reversible via compensatory mutations, and subjec...

Supporting Research Papers

Formal Verification

Z3 logical consistency:✅ Consistent

Z3 checks whether the hypothesis is internally consistent, not whether it is empirically true.

Experimental Validation Package

This discovery has a Claude-generated validation package with a full experimental design.

Precise Hypothesis

For at least one WHO priority pathogen (e.g., K. pneumoniae, A. baumannii, P. aeruginosa, E. coli), a directed collateral sensitivity graph (CSG) constructed from published and GLASS-derived genomic resistance data contains at least one strongly connected component (SCC) of size ≥ 3 antibiotics such that: (1) every directed edge A→B represents a statistically significant (p < 0.05, OR > 2.0) increase in susceptibility to drug B conditioned on resistance to drug A; (2) the SCC constitutes a "closed evolutionary trap" meaning no resistance mutation accessible from any node in the SCC leads to a state outside the SCC with clinical viability (MIC below EUCAST breakpoint); and (3) a sequential cycling protocol following the SCC order maintains pathogen MIC below clinical resistance breakpoints for ≥ 30 serial passages in vitro, compared to ≥ 50% of monotherapy controls reaching resistance by passage 15.

Disproof criteria:
  1. GRAPH TOPOLOGY FAILURE: Analysis of GLASS + published collateral sensitivity data for all WHO priority pathogens yields no SCC of size ≥ 3 with statistically significant edges (p < 0.05, OR > 2.0) after multiple testing correction (Benjamini-Hochberg FDR < 0.10).
  2. ESCAPE ROUTE EXISTS: For any identified SCC, whole-genome sequencing of evolved populations reveals ≥ 1 accessible single-step mutation (frequency > 10⁻⁷) that confers resistance to all drugs in the SCC simultaneously (pan-SCC resistance), constituting a viable escape.
  3. CYCLING PROTOCOL FAILS IN VITRO: Sequential cycling through the identified SCC sequence fails to maintain susceptibility — defined as MIC exceeding EUCAST clinical breakpoint — in ≥ 50% of replicate lineages by passage 20 (vs. predicted maintenance through passage 30+).
  4. EDGE INSTABILITY: Collateral sensitivity edges are not reproducible across ≥ 3 independent genetic backgrounds of the same species (i.e., the OR for susceptibility drops below 1.5 or loses significance in > 40% of tested backgrounds).
  5. COMPENSATORY MUTATION PREVALENCE: In GLASS genomic data, > 20% of clinical isolates carrying the resistance mutations defining SCC nodes also carry compensatory mutations that restore fitness without reversing collateral sensitivity, indicating real-world trap dissolution.
  6. STATISTICAL ARTIFACT: Bootstrap resampling (n = 10,000) of the GLASS dataset shows that SCCs of the observed size and edge strength arise by chance in > 5% of randomized graphs with matched degree distributions.

Experimental Protocol

PHASE 1 — Computational Graph Construction (Weeks 1–8): Mine GLASS WGS data + 47 published collateral sensitivity studies to construct species-specific CSGs. Apply SCC detection (Tarjan's algorithm). Validate edge significance with logistic regression controlling for genetic background and geographic confounders.

PHASE 2 — Evolutionary Accessibility Analysis (Weeks 6–12): For each candidate SCC, enumerate all single-nucleotide variants within 2 mutational steps of each node using DMS (deep mutational scanning) data and structural modeling. Identify whether any variant simultaneously confers resistance to all SCC drugs.

PHASE 3 — In Vitro Evolution Validation (Weeks 10–24): Conduct serial passage experiments in 96-well format using the top-ranked SCC cycling protocol vs. monotherapy and random cycling controls. Use 12 replicate lineages per condition. Perform WGS at passages 5, 10, 20, 30.

PHASE 4 — Mechanistic Confirmation (Weeks 20–30): Introduce specific resistance mutations via CRISPR-Cas9 into isogenic backgrounds to confirm directed edge causality (not correlation). Measure MIC changes for all SCC drugs after each engineered mutation.

PHASE 5 — Clinical Data Validation (Weeks 24–36): Retrospective analysis of GLASS patient isolate pairs (admission vs. discharge) to test whether patients treated with drugs approximating SCC cycling show lower resistance emergence rates than those on monotherapy.

Required datasets:
  1. WHO GLASS (Global Antimicrobial Resistance and Use Surveillance System) WGS database — minimum 50,000 isolates across 6 WHO priority pathogens; access via WHO data portal (free, requires data sharing agreement).
  2. PATRIC/BV-BRC database — 500,000+ bacterial genomes with AMR phenotype annotations; free access at bv-brc.org.
  3. Published collateral sensitivity compendium — systematic meta-analysis of 47 studies (Imamovic & Sommer 2013; Lázár et al. 2014; Barbosa et al. 2017; Munck et al. 2014; and 43 others); requires manual curation (~200 person-hours).
  4. EUCAST/CLSI MIC breakpoint tables (2024 edition) — free download.
  5. KEGG/UniProt resistance gene functional annotations — for mechanistic edge validation.
  6. Deep mutational scanning datasets for key resistance proteins (GyrA, OmpF, PBP2, RpoB) — available from published DMS studies (Stiffler et al., Firnberg et al.).
  7. In-house experimental data: 12 replicate lineages × 4 conditions × 30 passages × WGS = 1,440 WGS libraries at 50× coverage ($72,000–$144,000 sequencing cost).
  8. Reference genome assemblies: NCBI RefSeq complete genomes for K. pneumoniae ATCC 13883, P. aeruginosa PAO1, E. coli MG1655, A. baumannii ATCC 19606.
Success:
  1. GRAPH CRITERION: ≥ 1 SCC of size ≥ 3 identified in ≥ 2 WHO priority pathogens with all edges having OR > 2.0, adjusted p < 0.05, and empirical graph-level p < 0.05 vs. random null model.
  2. ESCAPE ANALYSIS CRITERION: No single-step mutation (frequency > 10⁻⁷) confers resistance to all drugs in the SCC simultaneously in DMS/structural analysis.
  3. IN VITRO PRIMARY ENDPOINT: SCC cycling maintains MIC below EUCAST breakpoint in ≥ 75% of replicate lineages through passage 30, vs. ≤ 50% of monotherapy controls remaining susceptible at passage 15 (log-rank p < 0.01).
  4. MECHANISTIC CRITERION: CRISPR-engineered resistance mutations at ≥ 2 of 3 tested SCC edges produce the predicted collateral sensitivity phenotype (MIC reduction ≥ 2-fold for the target drug, p < 0.05 by t-test).
  5. REPRODUCIBILITY CRITERION: SCC cycling effect replicates in ≥ 2 of 3 tested species (K. pneumoniae, P. aeruginosa, E. coli).
  6. CLINICAL SIGNAL: Retrospective GLASS analysis shows hazard ratio for resistance emergence ≤ 0.7 (95% CI excludes 1.0) for SCC-approximating vs. non-SCC treatment regimens.
Failure:
  1. No SCC of size ≥ 3 found in any WHO priority pathogen after correcting for confounders (definitive computational failure).
  2. SCC cycling fails to outperform random cycling in in vitro serial passage (log-rank p > 0.10 at passage 30).
  3. WGS reveals escape mutations arising in > 30% of SCC-cycling lineages by passage 20.
  4. CRISPR validation shows < 50% of engineered edges produce predicted collateral sensitivity (mechanistic failure).
  5. Bootstrap analysis shows observed SCCs arise by chance in > 5% of null model graphs (statistical artifact).
  6. Compensatory mutations neutralizing collateral sensitivity detected in > 20% of GLASS clinical isolates carrying SCC-defining resistance mutations.

1,200

GPU hours

252d

Time to result

$185,000

Min cost

$620,000

Full cost

ROI Projection

Commercial:
  1. DIAGNOSTIC TOOL: Software platform implementing the CSG algorithm for clinical microbiology labs — market size ~$3.2B (AMR diagnostics market, 2024). Licensing potential: $50M–$200M over 10 years.
  2. CLINICAL DECISION SUPPORT: Integration into hospital antibiotic stewardship programs (ASPs) — 6,000+ hospitals in the US alone; SaaS model at $50K–$200K/hospital/year = $300M–$1.2B TAM.
  3. PHARMACEUTICAL PARTNERSHIPS: Drug companies with existing antibiotic portfolios (Pfizer, Merck, Shionogi) would pay $10M–$100M for exclusive cycling protocol rights for their drug combinations.
  4. REGULATORY FAST-TRACK: FDA Qualified Infectious Disease Product (QIDP) designation for cycling protocols could provide 10-year market exclusivity; estimated NPV $200M–$800M per approved indication.
  5. GLOBAL HEALTH: WHO/BARDA/CARB-X funding for implementation in LMICs — grant potential $20M–$50M.
  6. PATENT LANDSCAPE: Core algorithm + specific SCC cycling protocols patentable; freedom-to-operate analysis needed given Imamovic/Sommer prior art (2013).

🔓 If proven, this unlocks

Proving this hypothesis is a prerequisite for the following downstream discoveries and applications:

  • 1ADAPTIVE_ANTIBIOTIC_CYCLING_CLINICAL_TRIAL_PHASE1
  • 2PERSONALIZED_COLLATERAL_SENSITIVITY_GUIDED_THERAPY
  • 3EVOLUTIONARY_TRAP_DESIGN_FOR_ANTIFUNGALS
  • 4PHAGE_ANTIBIOTIC_COMBINATION_TRAP_DESIGN
  • 5RESISTANCE_EVOLUTION_PREDICTION_CLINICAL_TOOL
  • 6WHO_PRIORITY_PATHOGEN_CYCLING_GUIDELINES

Prerequisites

These must be validated before this hypothesis can be confirmed:

  • GLASS_WGS_DATA_ACCESS_AGREEMENT
  • COLLATERAL_SENSITIVITY_META_ANALYSIS_DATABASE
  • EUCAST_BREAKPOINT_STANDARDIZATION_2024
  • DMS_RESISTANCE_PROTEIN_DATASETS
  • ESKAPE_REFERENCE_STRAIN_COLLECTION

Implementation Sketch

# COLLATERAL SENSITIVITY GRAPH (CSG) EVOLUTIONARY TRAP FINDER
# Architecture: 5-module pipeline

# ============================================================
# MODULE 1: DATA INGESTION & STANDARDIZATION
# ============================================================
class AMRDataIngestion:
    def load_glass_wgs(self, path: str) -> pd.DataFrame:
        # Load GLASS assemblies + phenotype table
        # Columns: isolate_id, species, country, year, drug_1..drug_N (S/I/R)
        # Run AMRFinder+ on all assemblies -> genotype matrix
        # Standardize to EUCAST 2024 breakpoints
        return standardized_phenotype_matrix  # shape: [n_isolates x n_drugs]

    def load_published_cs_data(self, meta_analysis_db: str) -> pd.DataFrame:
        # Parse 47 published collateral sensitivity studies
        # Standardize drug names to ATC codes
        # Output: [study_id, drug_A, drug_B, OR, CI_lower, CI_upper, species]
        return cs_compendium  # shape: [n_pairs x 7]

# ============================================================
# MODULE 2: EDGE ESTIMATION (LOGISTIC REGRESSION)
# ============================================================
class EdgeEstimator:
    def compute_cs_edges(self, phenotype_matrix, genotype_matrix):
        edges = {}
        drugs = phenotype_matrix.columns
        # Compute population structure PCs
        pcs = PCA(n_components=10).fit_transform(genotype_matrix)
        
        for drug_A in drugs:
            for drug_B in drugs:
                if drug_A == drug_B:
                    continue
                # Subset to isolates resistant to drug_A
                mask_resistant_A = phenotype_matrix[drug_A] == 'R'
                # Logistic regression: P(susceptible_B) ~ resistant_A + PCs + country + year
                X = np.column_stack([
                    (phenotype_matrix[drug_A] == 'R').astype(int),
                    pcs, country_dummies, year_covariate
                ])
                y = (phenotype_matrix[drug_B] == 'S').astype(int)
                model = LogisticRegression().fit(X, y)
                OR = np.exp(model.coef_[0][0])
                p_value = compute_wald_pvalue(model)
                edges[(drug_A, drug_B)] = {'OR': OR, 'p': p_value}
        
        # Apply Benjamini-Hochberg FDR correction
        edges_df = pd.DataFrame(edges).T
        edges_df['p_adj'] = multipletests(edges_df['p'], method='fdr_bh')[1]
        # Filter: OR > 2.0, p_adj < 0.05
        significant_edges = edges_df[(edges_df['OR'] > 2.0) & (edges_df['p_adj'] < 0.05)]
        return significant_edges

# ============================================================
# MODULE 3: GRAPH CONSTRUCTION & SCC DETECTION
# ============================================================
class CSGraphAnalyzer:
    def build_graph(self, significant_edges: pd.DataFrame) -> nx.DiGraph:
        G = nx.DiGraph()
        for (drug_A, drug_B), row in significant_edges.iterrows():
            G.add_edge(drug_A, drug_B, weight=row['OR'], p_adj=row['p_adj'])
        return G

    def find_evolutionary_traps(self, G: nx.DiGraph) -> list:
        # Tarjan's algorithm via NetworkX
        sccs = list(nx.strongly_connected_components(G))
        # Filter: size >= 3, all edges significant
        traps = []
        for scc in sccs:
            if len(scc) >= 3:
                subgraph = G.subgraph(scc)
                # Check all edges within SCC are significant
                min_OR = min([d['weight'] for _, _, d in subgraph.edges(data=True)])
                if min_OR > 2.0:
                    traps.append({
                        'nodes': list(scc),
                        'size': len(scc),
                        'mean_OR': np.mean([d['weight'] for _, _, d in subgraph.edges(data=True)]),
                        'subgraph': subgraph
                    })
        # Rank by mean OR * size
        traps.sort(key=lambda x: x['mean_OR'] * x['size'], reverse=True)
        return traps

    def null_model_test(self, G: nx.DiGraph, n_permutations: int = 10000) -> float:
        observed_max_scc = max(len(s) for s in nx.strongly_connected_components(G))
        null_distribution = []
        for _ in range(n_permutations):
            G_rand = nx.directed_configuration_model(
                [d for _, d in G.in_degree()],
                [d for _, d in G.out_degree()]
            )
            null_max = max(len(s) for s in nx.strongly_connected_components(G_rand))
            null_distribution.append(null_max)
        empirical_p = np.mean(np.array(null_distribution) >= observed_max_scc)
        return empirical_p

# ============================================================
# MODULE 4: ESCAPE ROUTE ANALYSIS
# ============================================================
class EscapeRouteAnalyzer:
    def enumerate_escape_mutations(self, scc_nodes: list, dms_data: dict) -> pd.DataFrame:
        # For each drug in SCC, get all resistance mutations from DMS data
        # Check if any single mutation confers resistance to ALL SCC drugs
        all_mutations = {}
        for drug in scc_nodes:
            all_mutations[drug] = dms_data[drug]['resistance_mutations']  # {mutation: MIC_fold_change}
        
        # Find mutations appearing in resistance sets for multiple drugs
        escape_candidates = []
        for mutation in set.union(*[set(m.keys()) for m in all_mutations.values()]):
            drugs_resisted = [drug for drug in scc_nodes 
                            if mutation in all_mutations[drug] 
                            and all_mutations[drug][mutation] > 2.0]  # >2x MIC increase
            if len(drugs_resisted) == len(scc_nodes):
                escape_candidates.append({'mutation': mutation, 'full_escape': True})
            elif len(drugs_resisted) >= 2:
                escape_candidates.append({'mutation': mutation, 'full_escape': False,
                                         'drugs_resisted': drugs_resisted})
        return pd.DataFrame(escape_candidates)

# ============================================================
# MODULE 5: IN VITRO CYCLING PROTOCOL OPTIMIZER
# ============================================================
class CyclingProtocolOptimizer:
    def design_cycling_protocol(self, trap: dict) -> list:
        # Find Hamiltonian cycle through SCC maximizing minimum edge OR
        # Use TSP solver (OR-Tools) with edge weights = 1/OR
        from ortools.constraint_solver import routing_enums_pb2, pywrapcp
        nodes = trap['nodes']
        G = trap['subgraph']
        # Maximize minimum OR along cycle path
        # Returns ordered drug sequence for cycling protocol
        optimal_cycle = self._solve_max_min_hamiltonian(G, nodes)
        return optimal_cycle

    def simulate_evolution(self, cycling_protocol: list, 
                          n_passages: int = 30,
                          n_replicates: int = 12) -> pd.DataFrame:
        # Stochastic simulation of resistance evolution under cycling
        # Uses Wright-Fisher model with mutation rates from literature
        # Returns MIC trajectories for all replicates
        results = []
        for rep in range(n_replicates):
            mic_trajectory = self._wright_fisher_simulation(
                cycling_protocol, n_passages,
                mutation_rate=1e-9, population_size=1e8
            )
            results.append(mic_trajectory)
        return pd.DataFrame(results)

# ============================================================
# MAIN PIPELINE
# ============================================================
def run_evp_pipeline(glass_path, published_cs_path, output_dir):
    # Step 1: Load data
    ingestion = AMRDataIngestion()
    phenotype_matrix = ingestion.load_glass_wgs(glass_path)
    cs_compendium = ingestion.load_published_cs_data(published_cs_path)
    
    # Step 2: Estimate edges
    estimator = EdgeEstimator()
    significant_edges = estimator.compute_cs_edges(phenotype_matrix, genotype_matrix)
    
    # Step 3: Build graph and find traps
    analyzer = CSGraphAnalyzer()
    G = analyzer.build_graph(significant_edges)
    traps = analyzer.find_evolutionary_traps(G)
    null_p = analyzer.null_model_test(G)
    
    # Step 4: Escape analysis
    escape_analyzer = EscapeRouteAnalyzer()
    for trap in traps[:3]:  # Top 3 traps
        escapes = escape_analyzer.enumerate_escape_mutations(trap['nodes'], dms_data)
        trap['escape_routes'] = escapes
    
    # Step 5: Design cycling protocols
    optimizer = CyclingProtocolOptimizer()
    for trap in traps[:3]:
        trap['cycling_protocol'] = optimizer.design_cycling_protocol(trap)
        trap['simulation'] = optimizer.simulate_evolution(trap['cycling_protocol'])
    
    # Output: ranked trap list, cycling protocols, escape analysis, null model p-value
    save_results(traps, null_p, output_dir)
    return traps, null_p

# Expected outputs:
# - CSG visualization (Gephi-compatible .gexf)
# - SCC report with OR, p-values, clinical drug availability
# - Escape route analysis table
# - Cycling protocol sequences (ordered drug lists)
# - Simulation MIC trajectories
# - Statistical validation (null model p-values)

Source

AegisMind Research
Need AI to work rigorously on your problems? AegisMind uses the same multi-model engine for personal and professional use. Get started