See More

import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * Run multiple sequence scoring algorithms against the same query and database. * @author Dr. Jody Paul * @version 2026-03-10 */ public class AlgorithmComparisonManager { private final List algorithms; /** * Create a manager for a list of algorithms. * @param algorithms the algorithms to run */ public AlgorithmComparisonManager(List algorithms) { Objects.requireNonNull(algorithms, "algorithms must not be null"); if (algorithms.isEmpty()) { throw new IllegalArgumentException("algorithms must not be empty"); } this.algorithms = new ArrayList<>(algorithms); } /** * Run all algorithms against the given query and database. * @param querySequence the query DNA sequence * @param database the database of labeled DNA sequences * @return a list of match results, one per algorithm */ public List compareAll(String querySequence, List database) { List results = new ArrayList<>(); for (SequenceScoringAlgorithm algorithm : algorithms) { SequenceMatcher matcher = new SequenceMatcher(algorithm); MatchResult result = matcher.findBestMatch(querySequence, database); results.add(result); } return results; } /** * Return a defensive copy of the registered algorithms. * @return the registered algorithms */ public List getAlgorithms() { return new ArrayList<>(algorithms); } }