На прошлой неделе COVID-19 был объявлен пандемией, унесшей тысячи жизней, и конца этому не видно. Одним из наиболее серьезных препятствий на пути к прекращению распространения болезни является доступность и стоимость наборов для тестирования на вирус.

Стандартный анализ для проверки наличия вируса в образце называется ПЦР в реальном времени (ОТ-ПЦР). Проще говоря, ОТ-ПЦР включает химическую реакцию, которая производит флуоресцентный свет, если в образце присутствует вирусная ДНК.

В стандартном протоколе анализируется один образец на пробирку/лунка. Объединение нескольких образцов в одну лунку — это решение, которое изучалось в нескольких исследованиях. В одном таком исследовании было показано, что при объединении нескольких образцов в одну лунку/пробирку требуется на 37% меньше тестов ОТ-ПЦР. Типичный метод объединения включает объединение нескольких образцов на лунку, и если в одной из лунок обнаруживается положительный образец (путем испускания флуоресцентного сигнала выше заданного порога), каждый из образцов в пуле анализируется отдельно, что приводит только к незначительное уменьшение количества тестов.

Здесь я предлагаю очень простой алгоритм определения положительных образцов из большей коллекции образцов с использованием только 1/10 количества тестов, требуемых стандартным протоколом. Мой метод предполагает, что 1% образцов являются положительными на наличие вируса, что является разумным предположением, учитывая опубликованные данные. Анализ экономической эффективности объединения по сравнению с соотношением положительных образцов можно найти здесь.

Во-первых, давайте определим: 1 … n — набор образцов для тестирования, предполагая, что только 1% из них являются положительными. Определим Xᵢ =1, если образец i положительный (0 в противном случае).

Учитывая mлунок (или пробирок, m = n/10 — помните, мы хотим провести только 1/10 тестов!)составляем следующую матрицу:

В приведенной выше матрице Sᵢ,ⱼ = 1 тогда и только тогда, когда образец i был помещен в лунку/пробирку j. В каждую лунку мы помещаем случайное подмножество из n/2 образцов (такое, что сумма каждой строки = n/2). Помещение n/2 образцов в каждую лунку является предположением, которое можно оптимизировать в более поздних реализациях.

Эта матрица позволяет построить следующую систему линейных уравнений:

ЗдесьW₁…Wₘ — мощность флуоресцентного сигнала в лунках 1…m (сумма сигналов каждого из положительных образцов в этой лунке), а X определен выше как: Xᵢ = 1, если образец i положителен на вирус.

Теперь у нас есть система уравнений, где нам нужно найти вектор X. Матрица S и вектор W даны нам в результате эксперимента. Такое выражение легко решается простым алгоритмом типа наименьших квадратов с высокой точностью. Вот пример кода Python, использующего вышеуказанные предположения, что приводит к 100% точности (Ссылка):