Vraag:
Wat is het meest efficiënte bestandsformaat voor de opslag van DNA-sequenties?
kenorb
2017-05-16 23:01:06 UTC
view on stackexchange narkive permalink

Ik zou graag willen weten welk formaat het meest wordt gebruikt voor het opslaan van de volledige menselijke genoomsequentie (4 letters zonder kwaliteitsscore) en waarom.

Ik neem aan dat het opslaan in tekst zonder opmaak zou erg inefficiënt zijn. Ik verwacht dat een binair formaat geschikter is (bijv. 2 bits per nucleotide).

Welk formaat komt het meest voor in termen van ruimte-efficiëntie?

zie: https://www.biostars.org/p/75178/ "Waarom gebruiken we geen binair formaat?"
Ook belangrijke vraag: is het doel om de kleinste footprint op schijf te creëren voor een geïsoleerd enkel genoom, of meerdere genomen?
@GWW Zelfs als je 5 letters had (d.w.z. met N), zou je weg kunnen komen met 3 bits per nucleotide en toch ruimte hebben voor nog 3 nucleotide-coderingen, misschien voor bijvoorbeeld U, mC, hmC.
Acht antwoorden:
juniper-
2017-05-16 23:09:58 UTC
view on stackexchange narkive permalink

Genomen worden gewoonlijk opgeslagen als fasta-bestanden (.fa) of twoBit-bestanden (.2bit). Fasta-bestanden slaan de hele reeks op als tekst en zijn dus niet bijzonder gecomprimeerd.

twoBit-bestanden slaan elke nucleotide op in twee bits en bevatten aanvullende metadata die aangeven waar regio's zijn met N (onbekende) basen.

Zie voor meer informatie de documentatie over het twoBit-formaat in de UCSC-genoombrowser.

U kunt converteren tussen twoBit- en fasta-formaat met behulp van de faToTwoBit- en twoBitToFa-hulpprogramma's.

Voor het menselijk genoom kunt u het hier downloaden in fasta- of twoBit-indeling: http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/

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

De standaardindelingen voor het opslaan van sequentiegegevens zijn fasta en fastq. Fasta wordt gebruikt als u alleen de onbewerkte sequentiegegevens nodig heeft, fastq wordt gebruikt als u de sequentiegegevens samen met de kwaliteitsinformatie van de basisoproep wilt opslaan. Elk van deze kan worden gecomprimeerd met gzip of een ander standaard compressiealgoritme.

Meestal willen we de kwaliteitsinformatie samen met de onbewerkte sequentiegegevens behouden, maar de kwaliteitsinformatie is goed voor de helft van de benodigde opslagruimte. Sommige mensen hebben algoritmen ontwikkeld voor compressie met verlies van de kwaliteitsgegevens waarmee we de opslagvereisten kunnen verminderen.

Als u geïnteresseerd bent in het opslaan van variante oproepgegevens, is het standaardformaat daarvoor is VCF. VCF is handig als u kwaliteitsinformatie van de variantoproepen, genomische posities en eventuele annotaties over de positie wilt opslaan. VCF's kunnen worden gecomprimeerd en geïndexeerd met bgzip en tabix. Veel tools vereisen dat variantgegevens met deze tools worden gecomprimeerd en geïndexeerd.

fastq wordt over het algemeen gebruikt voor het opslaan van gelezen informatie die is verzameld tijdens sequencing. De informatie in een fastq is zeker niet in chromosoom- of positionele volgorde en kan worden gedupliceerd met meerdere reads die een positie vertegenwoordigen.
Ik kan bevestigen met FASTA. Zelfs [Matlab's Bioinformatics Toolbox] (https://www.mathworks.com/help/bioinfo/ref/fastaread.html) heeft een functie (`fastaread`) voor het importeren van dergelijke gegevens. Bovendien zijn alle genoomgegevens (tenminste die ik heb gebruikt) op NCBI beschikbaar in [fasta] (https://www.ncbi.nlm.nih.gov/nuccore/357579630?report=fasta).
Ik las de vraag als een kwestie van het opslaan van de referentiereeks, niet van het sequencen van gegevens.
Ja, dit antwoord gaat over onbewerkte sequentiegegevens van sequencing-projecten, wat een zeer inefficiënt formaat is voor het opslaan van stabiele, grote sequenties. FASTA is inderdaad erg populair, maar niet FASTQ, niet voor zaken als genomen.
user172818
2017-05-17 00:17:39 UTC
view on stackexchange narkive permalink

Het standaard en meest voorkomende sequentieformaat is zeker FASTA. Je kunt het comprimeren met een compressor. Voor het menselijk genoom van ~ 3GB verkleint gzip de grootte tot ~ 900MB, afhankelijk van de gebruikte optie.

Een ander vaak gebruikt formaat is het 2-bits formaat van UCSC. Dit formaat houdt elke A / C / G / T met 2 bits. Zoals ik me herinner, worden niet-A / C / G / T-basissen en kleine letters in twee afzonderlijke lijsten bewaard. Deze lijsten vertellen je in feite dat basen tussen offset x en y allemaal "N" / kleine letters zijn. Het 2-bits formaat verliest IUB-codes die GRCh37 heeft. UCSC's hg19 verschilt op een paar basis van GRCh37.

BWA produceert ook zijn eigen 2-bit formaat met indexering. U kunt het afzonderlijk genereren met:

  bwa fa2pac -f hg19.fa  

In tegenstelling tot UCSC bewaart BWA alle IUB-codes, maar verliest het hoofdletters. BWA biedt ook geen hulpprogramma's om de 2-bits weergave naar FASTA te converteren.

De 2-bits indeling verkleint de bestandsgrootte doorgaans tot 1/4 van de oorspronkelijke grootte, tenzij er teveel verspreide dubbelzinnige bases. Voor het menselijk genoom krijgt u een bestand van ~ 784 MB groot. Je kunt het verder comprimeren met gzip, maar dat werkt eigenlijk niet goed. Een gziped 2-bits bestand is slechts ~ 5-10% kleiner.

Als u een nog kleinere bestandsgrootte wilt bereiken, kunt u de BWT van 2-bits bestanden comprimeren. Dit geeft je een bestand van ~ 633 MB:

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

Een bitbewust compressie-algoritme kan een nog hogere compressieverhouding bereiken. Een dergelijke op BWT gebaseerde compressie voorkomt echter dat u subreeksen extraheert. In de praktijk heeft het waarschijnlijk weinig nut.

BWA vervangt dubbelzinnige basen door willekeurige nucleotiden. Zie het originele BWA-artikel: Sectie 2.7.1 ... "Niet-A / C / G / Tbases op het referentiegenoom worden omgezet in willekeurige nucleotiden. Doingso kan leiden tot valse treffers in regio's vol met dubbelzinnige basen. Gelukkig is de kans dat dit kan gebeuren is erg klein gezien relatief lange reads. We hebben 2 miljoen 32 bp reads geprobeerd en zagen geen enkele reads die toevallig werden toegewezen aan poly-Nregions. "
@Karel Alle dubbelzinnige bases worden bewaard in het .amb-bestand. BWA kan elke basis reconstrueren, in ieder geval in principe.
Hartelijk dank voor deze informatie !! Ik heb nog nooit .amb-bestanden gebruikt en ze lijken erg handig voor mij te zijn. Ik wou dat ik er eerder van op de hoogte was. Btw. Ik denk dat we wat code hebben om de originele sequenties van BWA .bwt-bestanden te reconstrueren. Tijdens ons werk aan ProPhyle hebben we een beetje met dit type compressie gespeeld. Misschien maken we een apart programma voor bwt2fa.
BaCh
2017-05-16 23:31:12 UTC
view on stackexchange narkive permalink

Er zijn verschillende dingen waarmee u rekening moet houden wanneer u vraagt ​​naar "de meest efficiënte" manier om gegevens op te slaan, het hangt allemaal af van uw gebruikssituatie. Heeft u alleen ACGT nodig, of zijn er ook IUPAC-coderingen voor combinaties? Heeft u aanvullende gegevens nodig (zoals kwaliteitswaarden)? Voor wat voor soort applicatie gebruikt u de gegevens (moet het allemaal tegelijk of in brokken laden? Een of meerdere keren? Opeenvolgende of willekeurige toegang? Enz. Pp)?

Bijv. Meest efficiënt voor:

  1. Laagste footprint op schijf, zonder veel gedoe: gebruik FASTA of 2bit, maar gebruik de standaardcompressor (gzip, bzip2, anderen). De literatuur die u hier wilt raadplegen is die van standaard tekstcompressie denk ik. Ook interessant Benchmark voor grote tekstcompressie
  2. Het bestand op schijf houden, maar supersnel kleine subsets in het geheugen laden, in staat zijn om in het geheugen te werken met entiteiten van tekengrootte: een eenvoudige dump van het DNA als karakters naar schijf, eventueel gecombineerd met een indexbestand om te weten welk chromosoom waar begint. Gebruik vervolgens mmap
  3. Kwaliteitswaarden opslaan: zie artikelen als Compression of FASTQ and SAM Format Sequencing Data of Sequence squeeze: een open wedstrijd voor sequentiecompressie
  4. Elke combinatie van de bovenstaande gebruiksscenario's + nog veel meer
Ik zou het 2-bits formaat classificeren als 1b. Laagste footprint op schijf, wat wat gedoe toelaat. Om het voor iets anders dan opslag te gebruiken, moet het weer worden geconverteerd naar platte tekst (fasta) of gecomprimeerde platte tekst (bijvoorbeeld fasta.gz).
Uw case 2 hoeft niet te worden opgeslagen in een niet-gecomprimeerd gegevensformaat voor tekens. In feite kan een gecomprimeerde index (bijvoorbeeld) toegang * sneller * maken door [cache thrashing] te vermijden (https://en.wikipedia.org/wiki/Thrashing_ (computer_science)).
abetusk
2017-05-17 08:20:01 UTC
view on stackexchange narkive permalink

Ik denk dat de vraag een beetje dubbelzinnig is, dus excuseer dit antwoord dat een beetje overbodig is van de rest van de gegeven antwoorden.

Zoals anderen al hebben gezegd, als je een volledig genoom wilt opslaan, FASTA en 2bit formaten zijn geschikt. Voor een bepaalde context is hg19 ongeveer 900 MB gecomprimeerd voor het FASTA -bestand en ongeveer 780 MB gecomprimeerd voor het 2bit -bestand. hg19 is een referentie en is haploïde en vertegenwoordigt dus geen "volledig" menselijk genoom dat normaal gesproken twee allelen zou hebben voor het autosoom (niet-geslachtschromosomen).

Een veel voorkomende formaat voor het weergeven van variantinformatie is Variant Call Format ( VCF ). Het VCF -formaat vertegenwoordigt verschillen met een referentie (bijvoorbeeld hg19 ) die kan worden gebruikt om de originele volledige reeks te herstellen door de referentie en de verschillen gecodeerd in de VCF -bestand. Ik heb VCF -bestanden in het bereik van 100 MB gezien, maar er is nog steeds een referentiebestand nodig om de volledige genoomsequentie te herstellen, namelijk het bereik van 800 MB +, zoals hierboven vermeld.

Als u slechts één 'heel genoom' afzonderlijk beschouwt, is het antwoord vrij duidelijk: het 2bit -formaat nadert waarschijnlijk de entropielimiet van het menselijk genoom en u zult waarschijnlijk niet kunnen doen De reden waarom uw vraag een beetje dubbelzinnig is, is dat zodra u begint met het coderen van meer dan één genoom, bijvoorbeeld een genomen populatie, u de overtolligheid van het genoom zoals gedeeld door de populatie kunt gaan exploiteren. p>

Stel dat u bijvoorbeeld twee "hele genomen" wilt opslaan. U kunt de hg19 -referentie downloaden en twee VCF -bestanden downloaden die ongeveer 1 GB aan gegevens zouden opleveren (ongeveer 800 MB voor het 2-bits -bestand en ongeveer 200 MB voor beide VCF -bestanden). Nu ben je in staat geweest om een ​​"heel genoom" in 500 MB te vertegenwoordigen in plaats van in 800 MB. U kunt een soortgelijk argument zien voor het downloaden van 3 VCF -bestanden en meer.

De minimale hoeveelheid informatie die nodig is om een ​​genomen populatie weer te geven is, voor zover ik weet, onbekend, maar ik vermoed in het bereik van 2,5 MB tot 5 MB. Zie bijvoorbeeld "Menselijke genomen als e-mailbijlagen" door Christley, Lu, Li en Xie waarin wordt beweerd dat een genoom met 4 MB codeert.

Dingen worden lastig omdat je moet vragen wat je claimt als een "heel genoom". VCF -bestanden zijn notoir slecht omdat oudere versies van de specificatie alleen verschillen van hoge kwaliteit ten opzichte van referentie opslaan, waardoor secties van hoge kwaliteit worden weggegooid. Als u informatie van lage kwaliteit wilt opslaan, zal de codering nu op rare manieren afhangen van de sequencing-technologie.

Invoegingen, verwijderingen, mobiele invoegelementen, kopie-nummervarianten, andere structurele varianten, enz. Allemaal deze kwestie nog ingewikkelder maken. Genoomgrafieken proberen ten minste enkele van deze problemen aan te pakken, maar de nadruk ligt op het aanroepen van varianten in plaats van op een efficiënte individuele weergave van het hele genoom, hoewel dit in de toekomst misschien kan worden aangepast.

Hoe kunnen er 2 orden van grootte verschillen zijn tussen de 2-bits compressie (honderden Mb) en de "e-mailbijlage" (enkele Mb)? Is het geval van een "e-mailbijlage" een echt onpraktisch opslagformaat, zodat niemand het daadwerkelijk gebruikt? De samenvatting zegt het niet, maar het lijkt erop dat wat ze opslaan eigenlijk variaties zijn dan de volledige stand-alone informatie.
@bli, het verschil in grootteorde komt voort uit het uitbuiten van de overtolligheid in een populatie. Het opslaan van (gecodeerd) DNA van één persoon vereist ~ 800Mb. Het opslaan van duizenden mensen kost (waarschijnlijk) een paar megabytes (elk). Als u te maken heeft met een populatie van DNA-gegevens die u wilt coderen, zijn er veel manieren om dit te doen. Een manier is om varianten van een referentie op te slaan. Een andere is om een ​​bibliotheek met korte "leesbewerkingen" op te slaan en vervolgens naar die bibliotheek te verwijzen. Het artikel is bedoeld als een proof of concept om de onderliggende vraag te beantwoorden "wat is de theoretische minimumruimte die nodig is om een ​​heel genoom op te slaan".
woemler
2017-05-16 23:46:52 UTC
view on stackexchange narkive permalink

Het is nog niet gestandaardiseerd, maar grafiekformaat kan de meest ruimtebesparende methode zijn voor het opslaan van genomen. Het idee is dit: in plaats van een genoom op te slaan als een lineaire reeks van gesequentieerde nucleotiden, worden genomen opgeslagen als overlappende grafieken, waar sequentievarianten zich aftakken van het referentiegenoom en vervolgens weer samenkomen wanneer de uitlijning doorgaat. Kortom, u begint met een referentiegenoom en voor elk volgend genoom dat aan de grafiek wordt toegevoegd, worden alleen de verschillen opgeslagen. Dit zou een enorme winst in ruimte-efficiëntie kunnen opleveren.

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

In termen van onbewerkte opslagcapaciteit zou 2 bits per nucleotide, en vervolgens verder gecomprimeerd met standaard compressietechnieken, het meest efficiënt zijn. U hebt echter nog andere overwegingen voor opslag. Zoals wat u kunt doen met niet-standaard bases: bijvoorbeeld als u een leemte of dubbelzinnigheid wilt aangeven.

Ik zou ook vragen of het echt nodig is om ze als binair op te slaan, aangezien dit de leesbaarheid van de gegevens vermindert. Het is best handig om een ​​heleboel unix- en programmeertools te hebben die op stringniveau in tekstbestanden kunnen werken.

In termen van opslagruimte zouden '2 bits per nucleotide' en * gecomprimeerd * een manier zijn om bronnen te besparen.
Daniel Standage
2017-05-22 23:11:11 UTC
view on stackexchange narkive permalink

In alle ernst, de meest efficiënte manier om DNA-sequentiegegevens op te slaan is ... je raadt het al ... in DNA. (Church, Gao en Kasuri, 2012) en anderen hebben DNA-synthese en sequentiebepaling gebruikt als een mechanisme voor het schrijven / lezen van informatie.

Praktisch? Nog niet.

Opslag-efficiëntie? Ongeëvenaard!



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...