Frage:
Was ist das effizienteste Dateiformat für die Speicherung von DNA-Sequenzen?
kenorb
2017-05-16 23:01:06 UTC
view on stackexchange narkive permalink

Ich möchte erfahren, welches Format am häufigsten zum Speichern der vollständigen menschlichen Genomsequenz (4 Buchstaben ohne Qualitätsfaktor) verwendet wird und warum.

Ich gehe davon aus, dass es im Klartextformat gespeichert wird wäre sehr ineffizient. Ich gehe davon aus, dass ein Binärformat besser geeignet ist (z. B. 2 Bit pro Nukleotid).

Welches Format ist im Hinblick auf die Raumeffizienz am gebräuchlichsten?

Siehe: https://www.biostars.org/p/75178/ "Warum verwenden wir kein Binärformat?"
Ebenfalls wichtige Frage: Ist das Ziel, den kleinsten Footprint auf der Festplatte für ein isoliertes einzelnes Genom oder mehrere Genome zu erstellen?
@GWW Selbst wenn Sie 5 Buchstaben (d. H. Mit N) hätten, könnten Sie mit 3 Bits pro Nukleotid davonkommen und immer noch Platz für 3 weitere Nukleotidkodierungen haben, möglicherweise für U, mC, hmC.
Acht antworten:
juniper-
2017-05-16 23:09:58 UTC
view on stackexchange narkive permalink

Genome werden üblicherweise entweder als Fasta-Dateien (.fa) oder als TwoBit-Dateien (.2bit) gespeichert. Fasta-Dateien speichern die gesamte Sequenz als Text und sind daher nicht besonders komprimiert.

twoBit-Dateien speichern jedes Nukleotid in zwei Bits und enthalten zusätzliche Metadaten, die angeben, wo sich Regionen befinden, die N (unbekannte) Basen enthalten.

Weitere Informationen finden Sie unter Die Dokumentation zum TwoBit-Format im UCSC-Genombrowser.

Mit den Dienstprogrammen faToTwoBit und twoBitToFa können Sie zwischen dem TwoBit- und dem Fasta-Format konvertieren.

Für das menschliche Genom können Sie es hier im Fasta- oder TwoBit-Format herunterladen: http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/

Greg
2017-05-16 23:11:55 UTC
view on stackexchange narkive permalink

Die Standardformate zum Speichern von Sequenzdaten sind fasta und fastq. Fasta wird verwendet, wenn Sie nur die rohen Sequenzdaten benötigen. Fastq wird verwendet, wenn Sie die Sequenzdaten zusammen mit den Qualitätsinformationen aus dem Basisaufruf speichern möchten. Jedes dieser Elemente kann mit gzip oder einem anderen Standardkomprimierungsalgorithmus komprimiert werden.

Normalerweise möchten wir die Qualitätsinformationen zusammen mit den Rohdaten der Sequenz beibehalten, aber die Qualitätsinformationen machen die Hälfte des erforderlichen Speicherplatzes aus. Einige Leute haben Algorithmen für die verlustbehaftete Komprimierung der Qualitätsdaten entwickelt, mit denen wir die Speicheranforderungen reduzieren können.

Wenn Sie daran interessiert sind, Variantenaufrufdaten zu speichern, das Standardformat dafür ist VCF. VCF ist nützlich, wenn Sie Qualitätsinformationen zu den Variantenaufrufen, genomischen Positionen und eventuellen Anmerkungen zur Position speichern möchten. VCFs können mit bgzip und tabix komprimiert und indiziert werden. Bei vielen Tools müssen Variantendaten mit diesen Tools komprimiert und indiziert werden.

fastq wird im Allgemeinen zum Speichern von Leseinformationen verwendet, die aus der Sequenzierung gewonnen wurden. Die Informationen in einem Fastq sind sicherlich nicht in Chromosomen- oder Positionsreihenfolge und können mit mehreren Lesevorgängen dupliziert werden, die eine Position darstellen.
Ich kann mit FASTA bestätigen. Sogar [Matlabs Bioinformatics Toolbox] (https://www.mathworks.com/help/bioinfo/ref/fastaread.html) verfügt über eine Funktion ("fastaread") für den Import solcher Daten. Außerdem sind alle Genomdaten (zumindest die, die ich verwendet habe) auf NCBI in [fasta] verfügbar (https://www.ncbi.nlm.nih.gov/nuccore/357579630?report=fasta).
Ich habe die Frage so gelesen, dass es um das Speichern der Referenzsequenz geht, nicht um das Sequenzieren von Daten.
Ja, bei dieser Antwort handelt es sich um rohe Sequenzdaten aus Sequenzierungsprojekten. Dies ist ein sehr ineffizientes Format zum Speichern stabiler, großer Sequenzen. FASTA ist in der Tat sehr beliebt, aber nicht FASTQ, nicht für Dinge wie Genome.
user172818
2017-05-17 00:17:39 UTC
view on stackexchange narkive permalink

Das Standard- und das häufigste Sequenzformat ist mit Sicherheit FASTA. Sie können es mit einem Kompressor komprimieren. Für das menschliche Genom mit ~ 3 GB reduziert gzip die Größe je nach verwendeter Option auf ~ 900 MB.

Ein weiteres häufig verwendetes Format ist das 2-Bit-Format von UCSC. Dieses Format hält jede Klimaanlage / G / T mit 2 Bits. Wie ich mich erinnere, werden Nicht-A / C / G / T-Basen und Kleinbuchstaben in zwei separaten Listen gespeichert. Diese Listen sagen Ihnen im Grunde, dass Basen zwischen Versatz x und y alle "N" / Kleinbuchstaben sind. Das 2-Bit-Format verliert die IUB-Codes von GRCh37. Das hg19 von UCSC unterscheidet sich in einigen Punkten von GRCh37.

BWA erzeugt auch ein eigenes 2-Bit-Format mit Indizierung. Sie können es separat generieren mit:

  bwa fa2pac -f hg19.fa  

Im Gegensatz zu UCSC behält BWA alle IUB-Codes bei, verliert jedoch Groß- und Kleinschreibung. BWA bietet auch keine Dienstprogramme zum Konvertieren der 2-Bit-Darstellung in FASTA an.

Das 2-Bit-Format reduziert die Dateigröße normalerweise auf 1/4 der ursprünglichen Größe, es sei denn, es sind zu viele verstreut mehrdeutige Grundlagen. Für das menschliche Genom erhalten Sie eine Datei mit einer Größe von ~ 784 MB. Sie können es mit gzip weiter komprimieren, aber das funktioniert eigentlich nicht gut. Eine gzip'd 2-Bit-Datei ist nur ~ 5-10% kleiner.

Wenn Sie eine noch kleinere Dateigröße erzielen möchten, können Sie die BWT einer 2-Bit-Datei komprimieren. Dies gibt Ihnen eine ~ 633 MB große Datei:

  bwa pac2bwtgen hg19.fa.pac tmp.bwt && gzip tmp.bwt  

Ein bitbewusster Komprimierungsalgorithmus kann ein noch höheres Kompressionsverhältnis erreichen. Eine solche BWT-basierte Komprimierung verhindert jedoch, dass Sie Teilsequenzen extrahieren können. In der Praxis ist dies wahrscheinlich von geringem Nutzen.

BWA ersetzt mehrdeutige Basen durch zufällige Nukleotide. Siehe das Original-BWA-Papier: Abschnitt 2.7.1 ... "Nicht-A / C / G / T-Basen auf dem Referenzgenom werden in zufällige Nukleotide umgewandelt. Doingso kann zu falschen Treffern in Regionen mit mehrdeutigen Basen führen. Glücklicherweise besteht die Chance Dass dies passieren kann, ist bei relativ langen Lesevorgängen sehr gering. Wir haben 2 Millionen Lesevorgänge mit 32 bp versucht und keine Lesevorgänge gesehen, die zufällig Poly-Nregionen zugeordnet wurden. "
@Karel Alle mehrdeutigen Basen werden in der .amb-Datei gespeichert. BWA kann zumindest prinzipiell jede Basis rekonstruieren.
Vielen Dank für diese Information !! Ich habe noch nie .amb-Dateien verwendet und sie scheinen für mich sehr nützlich zu sein. Ich wünschte, ich wäre mir ihrer früher bewusst gewesen. Übrigens. Ich denke, wir haben Code, um die ursprünglichen Sequenzen aus BWA .bwt-Dateien zu rekonstruieren. Während unserer Arbeit an ProPhyle haben wir ein bisschen mit dieser Art der Komprimierung gespielt. Vielleicht erstellen wir ein separates Programm für bwt2fa.
BaCh
2017-05-16 23:31:12 UTC
view on stackexchange narkive permalink

Es gibt verschiedene Dinge zu beachten, wenn Sie nach der "effizientesten" Methode zum Speichern von Daten fragen. Dies hängt alles von Ihrem Anwendungsfall ab. Benötigen Sie nur ACGT oder gibt es auch IUPAC-Codierungen für Kombinationen? Benötigen Sie zusätzliche Daten (wie Qualitätswerte)? Für welche Art von Anwendung verwenden Sie die Daten (muss sie alle auf einmal oder in Blöcken geladen werden? Einmal oder mehrmals? Sequentieller oder wahlfreier Zugriff? Usw.pp)?

ZB am effizientesten für:

  1. Niedrigster Platzbedarf auf der Festplatte, ohne großen Aufwand: Verwenden Sie entweder FASTA oder 2 Bit, aber verwenden Sie den Standardkompressor (gzip, bzip2, andere). Die Literatur, die Sie hier konsultieren möchten, ist meiner Meinung nach die der Standardtextkomprimierung. Ebenfalls von Interesse Benchmark für die Komprimierung großer Texte
  2. Halten Sie die Datei auf der Festplatte, laden Sie jedoch kleine Teilmengen ultraschnell in den Speicher, und arbeiten Sie im Speicher mit Entitäten in Zeichengröße: eine einfache Speicherauszug der DNA als Zeichen auf die Festplatte, möglicherweise kombiniert mit einer Indexdatei, um zu wissen, welches Chromosom wo beginnt. Verwenden Sie dann mmap
  3. Speichern von Qualitätswerten: Siehe Artikel wie Komprimierung von FASTQ- und SAM-Format-Sequenzierungsdaten oder Sequence Squeeze: ein offener Wettbewerb für Sequenzkomprimierung
  4. Jede Kombination der oben genannten Anwendungsfälle + viel mehr
  5. ol>
Ich würde das 2-Bit-Format als 1b klassifizieren. Niedrigster Platzbedarf auf der Festplatte, was einige Probleme ermöglicht. Um es für etwas anderes als Speicher zu verwenden, muss es wieder in Klartext (fasta) oder komprimierten Klartext (z. B. fasta.gz) konvertiert werden.
In Ihrem Fall 2 muss nicht im unkomprimierten Zeichendatenformat gespeichert werden. Tatsächlich kann ein komprimierter Index (zum Beispiel) den Zugriff * schneller * machen, indem [Cache-Thrashing] vermieden wird (https://en.wikipedia.org/wiki/Thrashing_ (computer_science)).
abetusk
2017-05-17 08:20:01 UTC
view on stackexchange narkive permalink

Ich denke, die Frage ist etwas mehrdeutig. Bitte entschuldigen Sie diese Antwort, die von den übrigen Antworten etwas überflüssig ist.

Wie andere bereits erwähnt haben, wenn Sie ein vollständiges Genom speichern möchten, FASTA und 2bit sind geeignet. In einigen Fällen ist hg19 für die FASTA -Datei etwa 900 MB und für die 2bit -Datei etwa 780 MB komprimiert. hg19 ist eine Referenz und haploide, stellt also kein "vollständiges" menschliches Genom dar, das normalerweise zwei Allele für das Autosom (nicht geschlechtsspezifische Chromosomen) aufweist.

Eine häufige Das Format zur Darstellung von Varianteninformationen ist das Variantenaufrufformat ( VCF ). Das VCF -Format stellt Unterschiede zu einer Referenz dar (z. B. hg19 ), mit der die ursprüngliche vollständige Sequenz unter Verwendung der Referenz und der im codierten Unterschiede wiederhergestellt werden kann VCF -Datei. Ich habe VCF -Dateien im Bereich von 100 MB gesehen, aber es wird noch eine Referenzdatei benötigt, um die vollständige Genomsequenz wiederherzustellen, die im Bereich von 800 MB + liegt, wie oben erwähnt.

Wenn Sie nur ein "ganzes Genom" isoliert betrachten, ist die Antwort ziemlich klar: Das 2bit -Format nähert sich wahrscheinlich der Entropie-Grenze des menschlichen Genoms und Sie werden es wahrscheinlich nicht können Der Grund, warum Ihre Frage etwas mehrdeutig ist, ist, dass Sie, sobald Sie mehr als ein Genom, beispielsweise eine Population von Genomen, codieren, die Redundanz des Genoms ausnutzen können, die von der Population geteilt wird.

Angenommen, Sie möchten zwei "ganze Genome" speichern. Sie können die Referenz hg19 herunterladen und zwei VCF -Dateien herunterladen, die Daten im Wert von ca. 1 GB liefern (ca. 800 MB für die Datei 2bit und ca. 200 MB) für beide VCF -Dateien). Jetzt konnten Sie ein "ganzes Genom" in 500 MB anstelle von 800 MB darstellen. Sie können ein ähnliches Argument für das Herunterladen von 3 VCF -Dateien und mehr sehen.

Die Mindestmenge an Informationen, die zur Darstellung einer Population von Genomen benötigt wird, ist meines Wissens unbekannt. aber ich würde im Bereich von 2,5 MB bis 5 MB raten. Siehe beispielsweise "Menschliche Genome als E-Mail-Anhänge" von Christley, Lu, Li und Xie, in dem eine 4-MB-Codierung eines Genoms behauptet wird.

Die Dinge werden schwierig, weil Sie fragen müssen, was Sie als "ganzes Genom" behaupten. VCF -Dateien sind notorisch schlecht, da ältere Versionen der Spezifikation nur Qualitätsunterschiede von der Referenz speichern und so genannte Abschnitte von hoher Qualität wegwerfen. Wenn Sie Informationen von geringer Qualität speichern möchten, hängt die Codierung jetzt auf seltsame Weise von der Sequenzierungstechnologie ab.

Einfügungen, Löschungen, mobile Einfügungselemente, Kopienzahlvarianten, andere Strukturvarianten usw. erschweren diese Angelegenheit weiter. Genomgraphen versuchen, zumindest einige dieser Probleme anzugehen, aber der Schwerpunkt liegt eher auf Variantenaufrufen als auf einer effizienten individuellen Darstellung des gesamten Genoms, kann aber möglicherweise in Zukunft angepasst werden.

Wie kann es zwischen der 2-Bit-Komprimierung (Hunderte von MB) und dem "E-Mail-Anhang" (einige MB) Unterschiede von 2 Größenordnungen geben? Ist der Fall "E-Mail-Anhang" ein wirklich unpraktisches Speicherformat, sodass niemand es tatsächlich verwendet? Die Zusammenfassung sagt es nicht, aber es scheint, dass das, was sie speichern, tatsächlich Variationen sind als die vollständigen eigenständigen Informationen.
@bli, Die Größenordnungsdifferenz ergibt sich aus der Ausnutzung der Redundanz in einer Population. Das Speichern einer (codierten) DNA einer Person erfordert ~ 800 MB. Das Speichern von Tausenden von Menschen dauert (wahrscheinlich) ein paar Megabyte (jeweils). Wenn Sie mit einer Population von DNA-Daten arbeiten, die Sie codieren möchten, gibt es viele Möglichkeiten, dies zu tun. Eine Möglichkeit besteht darin, Varianten aus einer Referenz zu speichern. Eine andere Möglichkeit besteht darin, eine Bibliothek mit kurzen "Lesevorgängen" zu speichern und dann auf diese Bibliothek zu verweisen. Das Papier ist als Proof of Concept gedacht, um die zugrunde liegende Frage zu beantworten: "Was ist der theoretische Mindestraum, der zum Speichern eines gesamten Genoms erforderlich ist?".
woemler
2017-05-16 23:46:52 UTC
view on stackexchange narkive permalink

Es ist noch nicht standardisiert, aber das Grafikformat kann die platzsparendste Methode zur Speicherung von Genomen sein. Die Idee ist folgende: Anstatt ein Genom als eine lineare Folge von sequenzierten Nukleotiden zu speichern, werden Genome als überlappende Graphen gespeichert, in denen Sequenzvarianten vom Referenzgenom abzweigen und sich dann wieder verbinden, wenn das Alignment fortgesetzt wird. Grundsätzlich beginnen Sie mit einem Referenzgenom, und für jedes nachfolgende Genom, das dem Diagramm hinzugefügt wird, werden nur die Unterschiede gespeichert. Dies könnte einen enormen Gewinn an Raumeffizienz ermöglichen.

niallhaslam
2017-05-16 23:08:41 UTC
view on stackexchange narkive permalink

In Bezug auf die Rohspeicherkapazität wären 2 Bit pro Nukleotid und die weitere Komprimierung mit Standardkomprimierungstechniken am effizientesten. Sie hätten jedoch noch andere Überlegungen zum Speicher. Zum Beispiel, was mit nicht standardmäßigen Basen zu tun ist: Zum Beispiel, wenn Sie eine Lücke oder Mehrdeutigkeit anzeigen möchten.

Ich würde auch fragen, ob es wirklich notwendig ist, sie als binär zu speichern, da dies die Lesbarkeit der Daten verringert. Es ist sehr praktisch, eine ganze Reihe von Unix- und Programmiertools zu haben, die in Textdateien auf Zeichenfolgenebene ausgeführt werden können.

In Bezug auf den Speicherplatz wären 2 Bit pro Nukleotid und * komprimiert * eine Möglichkeit, Ressourcen zu sparen.
Daniel Standage
2017-05-22 23:11:11 UTC
view on stackexchange narkive permalink

Im Ernst, der effizienteste Weg, DNA-Sequenzdaten zu speichern, ist ... Sie haben es erraten ... in DNA. (Church, Gao und Kasuri, 2012) und andere haben die DNA-Synthese und -Sequenzierung als Mechanismus zum Schreiben / Lesen von Informationen verwendet.

Praktisch? Noch nicht.

Speichereffizienz? Beispiellos!



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...