import { useMemo } from 'react' import { MODELS, displayAuroc } from '../data/models' import { rankModels, distinctEnzymes, distinctProtocols, distinctSpecies, type Conditions, } from '../lib/rankModels' interface ConditionMatcherProps { conditions: Conditions onChange: (c: Conditions) => void onPick: (code: string) => void // set the active model selected: string // active model code (to highlight) } // Let the user describe how their peptides were generated (species / enzyme / MS // protocol) and rank the models by condition similarity, species first, then // enzyme, then protocol. The top matches are offered as one-click model choices. export default function ConditionMatcher({ conditions, onChange, onPick, selected, }: ConditionMatcherProps) { const enzymes = useMemo(() => distinctEnzymes(MODELS), []) const protocols = useMemo(() => distinctProtocols(MODELS), []) const species = useMemo(() => distinctSpecies(MODELS), []) const anySet = !!(conditions.species || conditions.enzyme || conditions.protocol) const ranked = useMemo( () => (anySet ? rankModels(MODELS, conditions) : []), [conditions, anySet], ) const top = ranked.slice(0, 3) return (