Stockage de données d’ADN à grande capacité avec des Oligonucléotides de longueur variable utilisant un code d’accumulation répétée et une cartographie hybride
Un système pratique de stockage de données d’ADN à grande capacité
Nous avons commencé par construire une architecture de stockage de données et de récupération de données à partir d’un stockage basé sur l’ADN (Fig. 1 A)). Les données utilisateur ont d’abord été segmentées en 11 400 paquets utilisateur binaires avec chaque longueur de paquet de 266 bits. Pour corriger les erreurs survenant à n’importe quelle étape des processus de stockage de l’ADN, y compris la synthèse, l’amplification, le stockage et la préparation d’échantillons pour le séquençage, nous avons appliqué un codage RA sur des paquets utilisateur binaires où 5% de paquets redondants / de parité ont été générés. Avec chacun des 12 000 paquets binaires, 14 bits ont été ajoutés pour l’indexation afin d’ordonner les oligos stochastiques et 20 bits ont été ajoutés pour le Contrôle de redondance Cyclique (CRC) pour détecter les erreurs intérieures dans chaque paquet. En conséquence, le nombre total de bits associés à chaque paquet est devenu de 300 bits (Voir Fichier supplémentaire 1: Figure S4). Ensuite, nous avons cartographié toutes les séquences binaires en séquences d’ADN grâce au schéma de cartographie hybride proposé. Ensuite, les séquences d’ADN ont été envoyées à Twist Bioscience pour la synthèse d’oligos. Après avoir reçu le pool d’oligos synthétisés, nous l’avons amplifié par Réaction en Chaîne par Polymérase (PCR) avant d’envoyer les échantillons à NovogeneAIT pour le séquençage à l’aide d’Illumina HiSeq. Dans la dernière étape, nous avons analysé et décodé les données de séquençage pour convertir les enregistrements ADN en données binaires numériques. Nous avons d’abord sous-échantillonné les millions de lectures de séquences à partir du résultat du séquençage et effectué l’inverse du codage et du mappage RA pour reconstruire les données utilisateur d’origine sans erreurs, validant ainsi la faisabilité de notre méthode.
En plus de la récupération complète des données à l’aide des résultats du séquençage, nous avons également analysé quantitativement le schéma de stockage à base d’ADN proposé et l’avons comparé à d’autres schémas de pointe, en référençant un tableau de comparaison précédent (Fig. 1 C)). La définition détaillée des mesures de performance dans le tableau est décrite dans le fichier supplémentaire 1 : Section S7. Dans le tableau, nous avons uniquement comparé les schémas conçus et testés avec les prémisses du format de stockage en piscine oligo où les oligos courts monocaténaires de longueur autour de 200nt ont été synthétisés. Notez qu’avec l’hypothèse équivalente de stocker des brins d’ADN beaucoup plus longs comme, c’est-à-dire, 1000bp, le schéma de codage proposé reste réalisable, et la densité nette d’informations augmentera avec la longueur, atteignant une densité supérieure à, c’est-à-dire 1,84 bits / base sur 1,74 bits / base (voir fichier supplémentaire 1: section S3).
La densité d’information nette élevée de 1.67 bits/nt obtenus par le schéma de stockage à base d’ADN proposé (Fig. 1(D)) est principalement dû aux deux techniques suivantes que nous avons utilisées. Premièrement, le schéma de cartographie hybride proposé présente un potentiel de cartographie de 1,98 bits / nt avec un petit écart de 1% par rapport à la limite supérieure théorique de 2 bits / nt. Deuxièmement, le code RA optimisé pour le contrôle des erreurs a une faible redondance de 1,05. Avec l’indexation de 14 bits et 20 bits CRC, le schéma obtient une densité d’information nette de 1,67 bits/nt, ce qui donne 91% de la capacité de Shannon (1,83 bits/nt avec 0.taux d’abandon scolaire de 5 %), soit 6 % de plus que le dernier taux le plus élevé signalé dans (fichier supplémentaire 1 : section S3). Théoriquement, par rapport à, l’augmentation de notre densité d’informations est le résultat combiné des oligos d’ADN de longueur variable légèrement plus longs (151nt-159nt contre 152nt, à l’exclusion des sites de liaison des amorces), de la redondance de contrôle d’erreur moindre (1,05 contre 1,07) et de l’indexation plus courte (14 bits contre 32 bits). La longueur des oligos d’ADN est minutieusement conçue pour utiliser pleinement les techniques actuelles de synthèse d’ADN largement disponibles (TWIST Bioscience, États-Unis), qui peuvent synthétiser efficacement des oligos de 200nt de long. La conception optimisée du code RA offre une redondance de contrôle des erreurs légèrement réduite avec l’hypothèse équivalente d’un taux d’abandon pratique de 1,3%, tandis que la récupération complète avec une couverture 10x (10,5 x in) indique que la résilience des erreurs est maintenue. La différence la plus nette réside dans l’indexation, dans laquelle nous utilisons 14 bits uniquement pour indiquer l’ordre des 12000 oligos codés, tandis que nous utilisons 32 bits pour représenter les graines requises pour la transformée de Luby qui définit la base du code fountain, ce qui entraîne des bits d’indexation redondants.
Pour vérifier en outre que les performances de haute capacité du schéma de codage proposé se maintiennent bien avec l’augmentation de la taille des données (évolutivité), nous avons estimé la densité nette d’informations pour le codage de la taille des données avec des magnitudes plus élevées in silico, c’est-à-dire de 2 Mo à 2000 Mo. Les densités estimées diminuent légèrement avec l’augmentation exponentielle de la taille des données en raison de l’augmentation de la longueur d’indexation requise pour enregistrer des données de plus grande taille (fichier supplémentaire 1: Section S3 et Fig. 1 E)). Une densité de 1,66 bits / nt est obtenue pour stocker 2 Mo de données source, ce qui est encore 6% supérieur à. En outre, le code RA et la stratégie de cartographie hybride consistant en le schéma de codage proposé ont une faible complexité et sont efficaces à mettre en œuvre dans la pratique. En particulier, l’utilisation du code RA permet d’éviter l’échec potentiel du décodage (dû à la perte des entrées initiales pour commencer le décodage dans le processus de criblage) et la redondance d’adresse qui peut survenir dans le DNA fountain, et le mappage hybride permet d’atteindre un potentiel de mappage très élevé qui est compétitif avec le DNA fountain tout en évitant une complexité élevée qui se manifeste dans les codes blocs contraints classiques.
De plus, nous avons estimé par calcul la densité physique que le schéma proposé pourrait présenter. Grâce à des expériences de dilution, les auteurs ont observé un taux d’abandon de 4% avec un échantillon de stockage d’ADN de 10pg, qui s’approchait presque de leur limite de décodeur (prédéterminée par la redondance du code). Le code RA utilisé dans notre schéma a été conçu de manière optimale avec un niveau de redondance dans la même hypothèse de taux d’abandon considéré dans. Nous avons également montré que théoriquement notre code peut tolérer jusqu’à 4,75% de taux d’abandon (fichier supplémentaire 1: Figure S4), ce qui est supérieur au taux d’abandon de 4% observé dans le séquençage de l’échantillon 10pg. Avec une limite de décodage similaire, notre schéma proposé fonctionnerait probablement de la même manière que la fontaine d’ADN dans les expériences de faible poids moléculaire (par exemple, avec un échantillon de 10pg) en raison de l’utilisation des mêmes pipelines, protocoles et normes d’expérience. En d’autres termes, la conception du code au stade initial permet au système proposé de récupérer des données à partir de conditions sujettes aux erreurs dans les expériences de dilution similaires à celles de la fontaine d’ADN. En supposant une moyenne de 1300 molécules par oligo, une profondeur de séquençage de 511x et des pipelines, protocoles et normes équivalents à ceux de l’expérience de dilution 10pg dans DNA fountain, nous pourrions estimer par calcul que notre schéma atteindra une densité physique de 239 PB / g \(\left(\frac {266 * 11400/8\text{octet}}{1300*11400*1.0688*10^{-19}\ texte {gram}} \ right)\). Cependant, une expérience rigoureuse est nécessaire pour vérifier cette densité physique estimée par calcul.
Conception de code RA et schéma de cartographie hybride pour le stockage de l’ADN
Nous avons conçu une méthode de codage qui comprend du code d’accumulation de répétition au niveau oligo (RA) et un schéma de cartographie hybride efficace.
Conception de code RA
Dans les systèmes de communication traditionnels, le code RA est utilisé au niveau des bits, où des bits redondants sont générés pour atténuer les erreurs de substitution. Cependant, le stockage de l’ADN est sujet non seulement à des erreurs de substitution, mais également à des erreurs d’insertion et de suppression. Par conséquent, au lieu du codage RA classique au niveau des bits, nous avons conçu un codage RA au niveau des paquets pour le stockage de l’ADN de sorte qu’un paquet soumis à des erreurs d’insertion, de suppression ou de substitution puisse être récupéré par le décodeur RA. Comme décrit précédemment, nous avons segmenté un gros fichier numérique en petits paquets de même taille. Ces paquets ont été considérés comme les paquets sources qui ont été utilisés pour générer les paquets redondants ou de parité en utilisant le code RA systématique Fig. 2 A). Notez que chaque paquet a été incorporé avec CRC pour détecter les erreurs dans le paquet. Pour les paquets qui ont passé le test CRC dans le décodeur, nous les avons considérés comme correctement récupérés, tandis que les autres étaient considérés comme supprimés ou effacés. Ainsi, le problème global de conception du code pour le stockage de l’ADN est devenu la conception du code pour le canal d’effacement. Pour assurer une fiabilité élevée, la conception du code a été effectuée en considérant une probabilité d’abandon légèrement supérieure à la probabilité d’abandon réelle. Dans ce travail, nous avons considéré le taux d’abandon réel comme 1,3%, ce qui a été rapporté dans le document fountain. Ainsi, nous avons conçu le code RA de telle sorte que le code résultant présente un seuil asymptotique supérieur à la probabilité d’abandon de 0,013. En suivant la procédure d’optimisation (voir Fichier supplémentaire 1 : Section S2), nous avons conçu un code RA de taux 0,95, ce qui donne un seuil asymptotique de 0,0475. Le code résultant ne montre qu’un écart de 0,0025 par rapport à la limite de capacité de Shannon (0,05). La performance de correction d’erreur simulée du code RA conçu est illustrée dans le fichier supplémentaire 1: Figure S4. En raison du taux 0.95 code RA, nous avons généré 600 paquets redondants / à parité basés sur 11 400 paquets sources, recevant 12 000 paquets binaires au total après codage.
Schéma de cartographie hybride
Ensuite, nous considérons la représentation des données numériques dans un contexte d’ADN que nous dénommons cartographie d’ADN. Une stratégie de cartographie de l’ADN devrait permettre aux séquences oligo cartographiées de satisfaire aux contraintes biochimiques, apportant ainsi une stabilité au stockage. Il existe deux contraintes de ce type dans les données d’ADN comme suit: (i) La teneur en GC (le rapport entre le nombre total de « G » et « C » et le nombre total de nucléotides dans une séquence) doit être proche de 50% (ii) Toutes les longueurs de course d’homopolymères (la longueur des nucléotides consécutifs de manière répétitive) doit être inférieure à 4. On notera que la cartographie binaire-quaternaire, c’est-à-dire la cartographie de deux bits sur un nucléotide, qui présente le potentiel de cartographie optimal (2 bits/nt), ne répond pas toujours aux exigences mentionnées ci-dessus. Au lieu de cela, il ne respecte souvent pas la contrainte d’exécution maximale des homopolymères. Les contraintes existant dans le stockage des données ADN réduisent le potentiel de cartographie efficace, ce qui nuit à la capacité de stockage des données ADN. Par conséquent, nous avons exploré l’approche de la conception de code contraint avec un taux de code élevé et développé une stratégie de cartographie hybride pour nous assurer que les séquences oligo répondent aux exigences biochimiques avec un minimum de sacrifice du potentiel de cartographie.
Ce schéma de mappage se compose de deux méthodes de mappage différentes, à savoir le mappage entrelacé et le mappage VLC. Le premier fonctionne comme la cartographie primaire en raison de son potentiel de cartographie approximativement optimal, c’est-à-dire 1.995 bits / nt et ce dernier fonctionne comme la sauvegarde qui entre en jeu lorsque le premier mappage ne produit pas de séquences d’ADN valides (c’est-à-dire des séquences qui satisfont aux contraintes de contenu en GC et d’exécution des homopolymères). Dans la méthode de mappage ultérieure, une table de recherche auxiliaire est construite avec une faible complexité de codage et de décodage. Pendant ce temps, cette méthode présente un potentiel de mappage de 1,976 bits / nt qui est beaucoup plus élevé que les codes blocs de complexité équivalente. La combinaison de ces deux stratégies de cartographie donne un potentiel de cartographie moyen d’environ 1,98 bit/nt avec les données stochastiques. En d’autres termes, dans le pire des cas où toutes les données sont codées à l’aide de VLC, nous avons tout de même obtenu une estimation de potentiel de cartographie élevée (1,976 bits/nt). Cependant, dans le meilleur des cas, lorsque toutes les données sont mappées à l’aide du mappage entrelacé, nous pourrions atteindre un potentiel très élevé de 1,995 bits / nt.
Les données numériques passent d’abord par la méthode de cartographie entrelacée pour générer les séquences d’ADN. Dans la méthode de mappage entrelacé, les séquences binaires sont d’abord mappées à l’aide d’un mappage binaire à quaternaire. Avec l’augmentation de la longueur oligo, la contrainte de contenu GC est souvent satisfaite en raison de la caractéristique stochastique des données binaires. Cependant, ce mappage a tendance à ne pas satisfaire la contrainte d’exécution des homopolymères. Pour résoudre ce problème, nous introduisons un entrelaceur après la cartographie binaire-quaternaire, qui brouille l’ordre d’origine des séquences nucléotidiques. Après entrelacement, un test de criblage est effectué pour vérifier le déroulement de l’homopolymère de la séquence résultante. Si la séquence résultante réussit le test, cette séquence est considérée comme une séquence valide pour la synthèse, sinon l’entrelacement est à nouveau effectué sur la séquence d’origine avec un motif d’entrelacement différent. Dans ce travail, nous considérons 4 motifs d’entrelacement prédéfinis, où un nucléotide indicateur (A /T/G/C) est ajouté à la fin de la séquence d’ADN entrelacée pour indiquer le motif d’entrelacement (fichier supplémentaire 1: Section S8). Il est à noter que le nucléotide indicateur annexé est inclus dans la détermination du cycle d’homopolymère de la séquence pendant le test de criblage. Nous n’utilisons qu’un seul nucléotide supplémentaire (indicateur) pour maintenir une densité d’information nette élevée. Par conséquent, le nombre d’essais d’entrelacement est limité à 4. Si la séquence ne répond toujours pas à la demande après le nombre maximal d’essais, la séquence est envoyée à la méthode de mappage VLC (Fig. 2 B) et dossier supplémentaire 1 : Section S4).
Le mappage VLC est inspiré de la construction de code de séquence contrainte à longueur variable (VLCS), couramment utilisé pour coder des données dans des codes satisfaisant aux contraintes dans des systèmes contraints, comme les systèmes d’enregistrement optique où des problèmes de limite de longueur d’exécution et sans courant continu surviennent. Dans un scénario de stockage d’ADN où des contraintes similaires existent, le code VLCS peut être efficacement modifié en une méthode de mappage. Notez que comme nous utilisons le code RA au niveau du paquet pour le contrôle des erreurs, la propagation des erreurs menée par le code VLCS est limitée dans un paquet et n’a aucune influence sur le taux d’abandon global des séquences codées.
Nous avons généré cette règle de mappage dans les quatre étapes suivantes. Tout d’abord, compte tenu de la contrainte des séries d’homopolymères maximales, le stockage basé sur l’ADN a été vu comme un système contraint avec une limite de longueur d’exécution (RLL), notée par (M, d, k), où M = 4, d = 0 et k = 2 (fichier supplémentaire 1: Section S5). En conséquence, le diagramme de transition d’états finis (FSTD) du stockage de données d’ADN à contraintes d’homopolymères (4,0,2) a été généré (fichier supplémentaire 1: Section S5 et Fig. 2 C, i)). Dans la deuxième étape, sur la base du FSTD généré, nous avons déduit que la capacité du stockage d’ADN contraint par un homopolymère (4, 0, 2) est de 1,982 bits/nt (fichier supplémentaire 1: Section S5). Nous avons également établi un ensemble minimal complet (un ensemble fini de mots dont les concaténations incluent toutes les séquences satisfaisantes de contraintes possibles), où nous avons énuméré tous les mots qui proviennent et se terminent dans l’état s0 de la Fig. 2 C, i). En conséquence. nous avons obtenu un ensemble minimal {1,2,3,01,02,03,001,002,003}, dans lequel tous les éléments sont satisfaisants aux contraintes et sans préfixe. Ces deux propriétés garantissent que toute concaténation des éléments de cet ensemble produit des séquences satisfaisant aux contraintes qui sont des mots de code de transition potentiels pour le système contraint. Notez que le jeu de mots de code de transition résultant concerne la profondeur et la largeur de la concaténation. Pour réduire la complexité du codage, nous avons directement utilisé l’ensemble minimal complet comme ensemble de mots de code de transition.
Dans la troisième étape, nous avons utilisé l’arbre de codage de Huffman pour générer un mappage optimal à partir de l’ensemble de mots sources binaires de longueur variable vers l’ensemble de mots de code de transition mentionné ci-dessus (Fig. 2 C, ii)). Cette affectation individuelle optimale a donné un débit de code moyen de 1,976 bits/nt (Fig. 2(C, iii) et voir Dossier supplémentaire 1 : Section S5). Pendant ce temps, l’efficacité de ce mappage approche \(\sigma=\frac {1.976}{1.982}=99.7\%\), ne présentant qu’un écart de 0,3% par rapport à la capacité du système contraint (4,0,2). En termes de potentiel de mappage, ce mappage surpasse le code contraint par blocs proposé dans, dans lequel un code contraint (4,0,2) a été construit en utilisant des blocs d’ADN 39nt comme mots de code, atteignant un potentiel de mappage de 1,95 bits / nt. En outre, le code de bloc 39nt est également peu pratique pour le stockage de données d’ADN traditionnel où des séquences d’ADN beaucoup plus longues (mots de code), c’est-à-dire 200nt, sont considérées. En revanche, l’approche de mappage à longueur variable présente une faible complexité de codage quelle que soit la longueur totale des séquences oligo résultantes.
Dans la dernière étape, après avoir mappé successivement les mots sources sur les mots de code de transition par rapport à chaque séquence binaire, nous avons effectué un précodage sur les séquences quaternaires codées selon la fonction de changement d’état yj = yj-1 + xj (mod M), où yj est le symbole de précodage de sortie courant, yj-1 est le dernier symbole pré−codé de sortie, xj est le symbole d’entrée courant, M est la taille de l’alphabet du système. Ce précodage transférera le code contraint codé (M, d, k) au code RLL (M, d+1, k+1). Nous avons ensuite converti les symboles quaternaires de {0,1,2,3} en {‘A’, ’T’, ’C’, ’G’} et obtenu les séquences oligo finales qui satisfont à la contrainte d’aucun homopolymère ne dépasse 3nt. Un exemple de cette stratégie de cartographie peut être trouvé dans le fichier supplémentaire 1: Section S6.
Grâce au schéma de cartographie hybride, nous avons généré 12 000 séquences d’ADN avec une distribution de longueur allant de 150nt à 159nt (à l’exclusion de 40nt de sites d’amorces) pour le flux de données binaires (Fig. 2 E)). Plus précisément, la longueur des séquences cartographiées via le mappage entrelacé est devenue 151nt, tandis que la longueur des séquences cartographiées via le mappage VLC allait de 150, 152 à 159nt. Notez qu’il n’y avait aucune séquence de longueur de 151nt provenant de la cartographie VLC car un nucléotide a été ajouté pour que ces séquences cartographiées par 151nt soient 152nt (Fig. 2 C, iv)). Le nucléotide ajouté était de faire la distinction entre les méthodes de cartographie. Cela permet l’utilisation d’un dépotage correct lors de la récupération des données stockées dans le décodeur.
Pour récupérer des données, les séquences préparées à partir du processus de séquençage sont envoyées au décodeur pour récupérer les données utilisateur (Fig. 2 D)). Le décodeur distingue d’abord la méthode de mappage. Si la longueur de la séquence reçue est de 151nt, le décodeur applique l’inverse du mappage entrelacé sur la base du nucléotide indicateur et de la règle de mappage binaire à quaternaire. Sinon, le décodeur applique l’inverse du mappage VLC où l’inverse du précodage et du mappage sont effectués. Après cela, chaque séquence binaire inversée est considérée comme une séquence correcte ou une séquence d’effacement basée sur la vérification CRC. Enfin, avec un algorithme de passage de message, le décodeur RA récupère tous les paquets de séquence effacés en fonction des connexions entre les paquets.
Séquençage des résultats et analyse de récupération de données
Après séquençage du pool d’oligos synthétisés, nous avons reçu de NovogeneAIT plus de 10 millions de lectures de séquences brutes d’une taille totale de 3,2 gigaoctets. Ces séquences incluent des lectures bruyantes générées lors du séquençage. Sur la base des résultats du séquençage, nous avons tout d’abord analysé la fiabilité des données de séquençage en termes d’examen de la qualité des données, de distribution du contenu A / T / G / C et de distribution du taux d’erreur. Sur la base du résultat de l’analyse des erreurs, nous avons ensuite étudié la fiabilité de notre schéma de décodage dans la récupération des données codées avec différentes couvertures d’échantillons.
Résultats du séquençage
Nous avons analysé la valeur de qualité pour chaque position de base le long des lectures séquencées pour évaluer la qualité des données. Le score de qualité est une estimation de la fiabilité des lectures séquencées qui se rapporte au taux d’erreur de chaque position de base. Il est calculé par Q =-10log10e, où e est le taux d’erreur de la position de base. Les scores de qualité de chaque base des lectures de séquençage vont de 30 à 40 (Fig. 3(A)), représentant une qualité élevée. De plus, nous observons que le taux d’erreur augmente avec l’extension des lectures séquencées alors qu’avec un taux moyen de 0,015% dans chaque base le long des lectures (Fig. 3 B)). Cela est probablement dû à la consommation de réactif de séquençage, phénomène courant dans la plate-forme de séquençage à haut débit Illumina basée sur la technologie de séquençage par synthèse (SBS). Comme prévu, les premières bases ont un taux d’erreur de séquençage plus élevé que les autres. Cela pourrait être dû à la focalisation de l’élément de détection du capteur d’image en fluorescence du séquenceur qui peut ne pas être assez sensible au début du séquençage. En conséquence, la qualité de la lecture de fluorescence acquise est faible. Rappelons que les séquences ont été ajoutées avec une paire de sites de liaison d’amorces 20nt aux deux extrémités et donc que les premières bases sujettes aux erreurs (autour de 6nt) n’ont aucune influence sur le décodage, car le test CRC et le codage / décodage RA ont été conçus en excluant les sites de liaison. En d’autres termes, une séquence sera identifiée comme effacée par le décodeur CRC en raison des erreurs dans d’autres positions (en dehors des amorces).
Sur la Fig. 3 (C), une distribution de contenu de base de A, T, C et G le long des lectures est présentée pour montrer la distribution du contenu GC. Selon le principe des bases complémentaires, la teneur en AT et en GC doit être égale à chaque cycle de séquençage et être constante et stable dans toute la procédure de séquençage. Notamment, la teneur moyenne en GC observée dans une lecture de séquençage et dans chaque position de base était d’environ 50% indépendamment du premier 20nt. La raison de la distribution dans le premier 20nt est due aux deux sites de liaison aux deux extrémités. La distribution montre que la teneur en GC des oligos séquencés satisfait bien la contrainte biochimique et assure donc un processus de séquençage stable.
Analyse de récupération de données
Pour vérifier la résilience du code de notre schéma de codage de correction d’erreur RA conçu, nous avons étudié les performances de récupération de données du schéma sur différentes couvertures de la Fig. 3 D). Cela nous donne une estimation de la résistance aux erreurs du code de RA conçu contre différents taux d’abandon en raison de couvertures variées. Il existe des séquences brutes inutilisables dans les lectures de séquençage reçues en raison de leur longueur en dehors de la plage acceptable. Pour imiter différentes couvertures (de 8x à 12x), nous avons généré des ensembles de données de tailles différentes en effectuant un échantillonnage aléatoire sur les séquences brutes utilisables, dans lequel la distribution de chaque message oligo peut varier. Par exemple, pour une couverture de 8x, nous avons échantillonné aléatoirement les séquences brutes utilisables pour générer un ensemble de données de 96 000 séquences brutes. Pour chaque couverture, nous avons généré 5 ensembles de données différents échantillonnés aléatoirement et déterminé les performances moyennes de séquençage et de décodage. Pour chaque séquence brute, nous avons effectué un dé-mappage pour convertir la séquence nucléotidique en séquence binaire et effectué un test CRC pour identifier les séquences sans erreur / correctes. Le nombre moyen de séquences sans erreur pour chaque couverture est illustré à la Fig. 3 (E) (points noirs), comme prévu, il augmente avec l’augmentation de la couverture. Les séquences sans erreur ont ensuite été envoyées au décodeur RA pour récupérer les séquences erronées. Nous avons observé qu’à partir de la couverture 10x et au-delà, pour chaque couverture, le décodeur était capable de récupérer parfaitement les séquences originales dans 5 des 5 expériences de down-sampling aléatoires (diamants verts sur la Fig. 3 E)). Cela montre que le décodeur est robuste pour récupérer des données erronées avec une couverture minimale de 10x, où 3,3% des séquences oligo étaient en erreur (c’est-à-dire un taux d’abandon de 3,3%)