Dieser Artikel ist ein Artikel eines bestimmten Asahi Shimbun Digital "Können Sie die Anzahl vieler Proben" gemeinsam "PCR-Tests erhöhen? Ich fand die in " beschriebene PCR-Testmethode interessant und veröffentlichte die Ergebnisse und Überlegungen verschiedener Experimente selbst. ** Ich habe keine Erfahrung mit dem PCR-Test selbst. Stellen Sie sich diesen Artikel als Gedankenexperiment in einer extrem idealisierten Situation vor. **
Was ist laut Wikipedia ein PCR-Test?
Eine Reihe von Reaktionen oder Techniken, die eine bestimmte Region aus einer DNA-Probe millionen- bis milliardenfach amplifizieren.
Unter Verwendung der Wirkung eines Enzyms namens DNA-Polymerase wird eine kleine Menge DNA durch eine Reihe von Temperaturänderungszyklen exponentiell (mauseal, verkettet) amplifiziert, um eine Kopie einer beliebigen Genregion oder Genomregion zu amplifizieren. Der Zweck besteht darin, die Probe auf eine ausreichende Menge zu amplifizieren, um ihre Details zu untersuchen.
Es ist eine Technik wie. Ich kann nichts über den speziellen Inhalt sagen, weil ich ein Außenseiter bin, aber es scheint, dass ein Test viel Zeit in Anspruch nimmt und viel kostet, weil ich dies für jeden Patienten mache.
Laut dem oben erwähnten Artikel von Asahi Shimbun Digital
Wenn theoretisch auch nur eine der 500 Proben das Virus enthält, sollte die Nukleinsäure des Virus amplifiziert und positiv sein.
Wie Sie sehen, scheinen wir zu versuchen, die Effizienz zu verbessern, indem wir zuerst positive Proben treffen, indem wir mehrere Proben gleichzeitig testen, anstatt PCR-Tests einzeln durchzuführen. Was für eine Dynamik ** Ist das wirklich in Ordnung? Es fühlt sich an wie **, aber das Folgende kann aus der Beschreibung in diesem Artikel abgeleitet werden.
Wenn die positive Rate niedrig genug ist, ist es möglich, die Effizienz des PCR-Tests zu verbessern, indem die Mischung einmal getestet und dann einzeln erneut getestet wird, wenn sie positiv ist, anstatt einzeln zu testen. Ich denke. Es scheint, dass eine solche Methode ** Pool-Methode ** und so weiter heißt.
Lassen Sie uns simulieren, wie effizient es tatsächlich sein kann. ** Ich denke, es gibt verschiedene Probleme in der Realität **, aber im Folgenden werde ich es vergessen und das Problem in einer extrem idealisierten Situation definieren. Angenommen, es werden * N * Proben erhalten. Angenommen, Sie möchten die folgenden Vorgänge ausführen, um festzustellen, ob alle Proben positiv sind **, und zwar mit möglichst wenigen Tests **.
Wenn Sie einen PCR-Test für alle Proben einzeln durchführen, können Sie den Test natürlich in * N * -Zeiten abschließen. Das Folgende ist eine Simulation, wie effizient Pooling sein kann.
Die Probengröße * N = 100.000 *, die Anzahl der Proben * 1000 *, verschiedene Poolgrößen * M * und die positive Rate jeder Probe wurden für die Simulation eingestellt. Sehen wir uns das Ergebnis an, während der verwendete Python-Code angezeigt wird. Importieren Sie die erforderlichen Bibliotheken
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from numpy.random import rand
Stellen Sie verschiedene Parameter ein. (Hier wird der Fall einer positiven Rate von 0,01 gezeigt)
sample_number = 10**5 #Stichprobengröße
positive_rate = 0.01 #Positive Rate
sample_size = 1000 #Anzahl von Beispielen
#Kandidaten für die Zusammenlegung von Größen
pool_sizes = [2,3,4,5,8,10,15,20,25,50,75,100,200,500,1000,5000]
Hier definieren wir eine Funktion, die die Gesamtzahl der Prüfungen für die Stichprobe und die Poolgröße zurückgibt.
#Eine Funktion, die die Gesamtzahl der Prüfungen zurückgibt
def pcr(pool_size,sample):
#pool_size:Anzahl der Proben, die bei einer Inspektion zusammengefasst werden sollen
#sample:Stichprobe
count=0
count += (len(sample)+pool_size-1)//pool_size#Anzahl der Poolinspektionen
count += len(np.unique(sample[0:-1:pool_size]))*pool_size#Erneut auf positives Pooling testen
return count
Jetzt, da wir bereit sind, werden wir tatsächlich Daten mit Zufallszahlen generieren und experimentieren.
#Datengenerierung
samples = [np.insert((rand(sample_number)<positive_rate).cumsum(),0,0) for _ in range(sample_size)]
#Cumsum zur Verbesserung der Effizienz der nachfolgenden Verarbeitung(Kumulative Summe)Nimmt
#Führen Sie eine Simulation durch und speichern Sie die Ergebnisse
rslt = dict()
for pool_size in pool_sizes:
rslt[pool_size] = [pcr(pool_size,sample) for sample in samples]
rslt_binary[positive_rate] = [binary_pcr(sample) for sample in samples]
Schließlich visualisiert ein Box-Whisker-Diagramm die Ergebnisse bei jeder Poolgröße.
#Zeichnen Sie die Box-Whisker
plt.rcParams["font.size"] = 18
points = tuple(rslt.values())
fig, ax = plt.subplots()
bp = ax.boxplot(points)
ax.set_xticklabels(tuple(rslt.keys()))
plt.title("Positive Rate"+str(int(100*positive_rate))+"%Im Falle von")
plt.xlabel("Poolgröße")
plt.xticks(rotation=45)
plt.ylabel("Gesamtzahl der Inspektionen")
plt.axhline(sample_number,color='black',ls='--')
Die Ergebnisse, wenn die positive Rate 1%, 5%, 10%, 30% beträgt, sind wie folgt. Sie können sehen, dass die Effizienz jedes Diagramms zunimmt, wenn die Poolgröße zuerst erhöht wird, aber wenn sie zu stark erhöht wird, nimmt die Effizienz ab. Wie Sie sehen können, kann die Poolgröße nicht zu groß oder zu klein sein, und es scheint einen optimalen Wert zu geben, der von der positiven Rate abhängt. Je kleiner die positive Rate jeder Probe ist, desto effizienter kann sie erwartet werden. Wenn die positive Rate 1% beträgt, ist ersichtlich, dass ein Maximum von ungefähr 20000 Tests für 100.000 Proben (ungefähr 5-mal) ausreicht. Effizienz). Wenn andererseits die positive Rate jeder Probe hoch ist, wurde bestätigt, dass das Pooling die Effizienz nicht verbessert und dass es weniger effizient ist als das Testen nacheinander.
Gibt es eine Möglichkeit, die Inspektion effizienter durchzuführen? Bei der vorherigen Methode wurde die Poolgröße unabhängig vom Ergebnis der Inspektion in der Mitte festgelegt. Es scheint jedoch möglich zu sein, eine effizientere Inspektion durchzuführen, indem die Poolgröße entsprechend dem Inspektionsergebnis dynamisch geändert wird (z. B. zuerst). Nimmt eine große Poolgröße an und verringert dann die Poolgröße. Hier werden wir die Effizienz weiter verbessern, indem wir die Poolgröße dichotom ändern. Ich werde den spezifischen Algorithmus beschreiben.
Nennen wir diesen Algorithmus ** Bisection Pooling Test **. Beim zweiminütigen Pooling-PCR-Test ist es nicht erforderlich, zuerst die Pooling-Größe festzulegen, und der Test kann durchgeführt werden, während die Anzahl der Pools dynamisch geändert wird, indem die Probe jedes Mal gemäß dem Testergebnis in zwei Hälften gepoolt wird. Ich kann es schaffen Intuitiv scheint dies effizienter zu sein als das Festlegen der Poolgröße. Lassen Sie es uns implementieren. Der dichotome Pooling-Test kann mit einer rekursiven Funktion relativ sauber geschrieben werden.
def binary_pcr(sample):
N = len(sample)
if(N<=1): #Prüfen Sie ordnungsgemäß, ob weniger als eine Probe vorhanden ist
return N
if(sample[0] == sample[-1]): #Wenn der gepoolte negativ ist, werden keine weiteren Tests durchgeführt
return 1
#Andernfalls die linke und rechte Hälfte erneut mischen und prüfen
return binary_pcr(spcm[:N//2]) + binary_pcr(spcm[N//2:])
Das Simulationsergebnis des Halbierungspooling-Tests ist wie folgt.
Sie können sehen, dass die Inspektion effizienter ist als die vorherige Methode, bei der die Poolgröße festgelegt wurde. (Insbesondere wenn die positive Rate 1% beträgt, beträgt die Gesamtzahl der Tests für 100.000 Proben weniger als 6000, sodass mit einer 16-fachen Effizienzsteigerung zu rechnen ist.)
Simulationen haben bestätigt, dass die Anzahl kostspieliger PCR-Tests reduziert werden kann, indem PCR-Tests an den Proben zusammen in einer idealen Problemstellung durchgeführt werden. Bei der Methode, zuerst die Poolgröße festzulegen, ist es jedoch erforderlich, einen geeigneten Wert entsprechend der positiven Rate auszuwählen. Andererseits ist es beim Dichotomie-Pool-Test, der die Anzahl der Pools des nächsten Tests dynamisch anhand des Ergebnisses des Pool-Tests bestimmt, nicht erforderlich, über so etwas nachzudenken, und es ist eine hohe Leistung. Bei beiden Methoden ist der Wirkungsgrad umso höher, je niedriger die positive Rate ist.
In der Realität kann es einen Grund geben, warum nur Spezialisten und Fachleute verstehen können, warum wir keine PCR-Tests vom Pool-Typ durchführen.