Kysymys:
Kuinka kirjoitat .gz fastq -tiedoston Biopythonilla?
Mark Ebbert
2017-06-24 08:12:53 UTC
view on stackexchange narkive permalink

Kuinka kirjoitat .gz (tai .bgz ) fastq -tiedoston Biopython -ominaisuudella?

Haluan mieluummin välttää erillisen järjestelmäkutsun.

Tyypillinen tapa kirjoittaa ASCII .fastq tehdään kuten seuraa:

  tietueelle SeqIO.parse (fasta, "fasta"): SeqIO.write (ennätys, fastq, "fastq")  

-tietue on SeqRecord -objekti, fastq on -tiedoston kahva , ja "fastq" on pyydetty tiedostomuoto. Tiedostomuoto voi olla fastq , fasta jne., Mutta en näe vaihtoehtoa koodille .gz .

Tässä on SeqIO -sovellusliittymä.

Kolme vastused:
bli
2017-06-24 11:49:27 UTC
view on stackexchange narkive permalink

En ole varma, että teen sen parhaalla mahdollisella tavalla, mutta tässä on esimerkki, jossa luin pakatun gzip fastq -tiedoston ja kirjoitin tietueet lohkoon gzip fastq:

  from Bio import SeqIO, bgzf # Käytetään muuntamaan fastq-virta tiedostokahvaan io-tuonnista StringIO gzip-tuonnista auki muodossa gzopenrecords = SeqIO.parse (# On todella yksinkertaisempaa (kiitos @peterjc) # MerkkijonoIO (gzopen ("random_10.fastq.gz"). Lue (). Dekoodaa ("utf-8")), gzopen ("random_10.fastq.gz", "rt"), format = "fastq") ja bgzf .BgzfWriter ("test.fastq.bgz", "wb") outgz: SeqIO.write (sekvenssit = tietueet, kahva = outgz, format = "fastq")  
Sinun ei tarvitse tarvita StringIO-bittiä jäsentämiseen, varmista, että avaat gzip-kahvan tekstitilassa Python3-kohdassa: `` records = SeqIO.parse (gzopen ("random_10.fastq.gz", "rt"), "fastq ")"
@peterjc En tiennyt "tekstitilasta", kiitos. Tämä selittää virheilmoituksen, jonka sain: "ValueError: Eikö tämä kahva binaaritilassa ole tekstitila?"
John Blischak
2017-08-10 01:19:16 UTC
view on stackexchange narkive permalink

Näin pystyin viemään tavalliseen gzipattuun FASTQ-tiedostoon Biopythonin avulla. Pohjimmiltaan sen sijaan, että käytän SeqIO.write -ohjelmaa, kutsuin suoraan SeqRecord-objektin .format -menetelmää. Alla oleva esimerkkikoodi tuo gzipitetyn FASTQ-tiedoston, poistaa lukemat, jotka eivät sisällä G: tä asemissa 7, 8 ja 9, ja kirjoittaa tulokset gzipattuun FASTQ-tiedostoon.

  Bio-tuonnista SeqIOimport gzippath_in = "polku / sisään / sisään.fastq.gz" polku_out = "polku / ulos / ulos.fastq.gz" kahva_tu = gzip.open (polku_ sisään, "rt") kahva_out = gzip.open (polku_out "wt" ) fq = SeqIO.parse (handle_in, "fastq") lukemiselle fq: # Vie vain lukut, joiden G on asemissa 7, 8, # ja 9, jos read.seq [6: 9] == "GGG": handle_out.write (read.format ("fastq")) handle_in.close () handle_out.close ()  

Käytä alkuperäisen kysymyksen koodiesimerkkiä, joka muuntaa FASTA-tiedoston FASTQ: ksi tiedosto, se näyttäisi olevan seuraavanlainen:

  fastq = gzip.open ("path / to / out.fastq.gz", "wt") tallennettavaksi SeqIO.parse (fasta , "fasta"): fastq.write (record.format ("fastq")) fastq.close ()  

Varoitus: Tämä toimii vain Python 3: ssa Python 3 eroaa Python 2: sta siinä, miten se on vie tietoja binaaritiedostoista ( lähde). Itse asiassa ihannetapauksessa sinun tulisi käyttää Python 3.4: ää tai uudempaa, koska Biopythonilla on yhteensopivuusongelmia Python 3.3: n ( lähde) kanssa.

Bioathlete
2017-06-24 09:11:02 UTC
view on stackexchange narkive permalink

Sikäli kuin tiedän, et voi kirjoittaa pakattua fastqia lennossa. Sinun on kirjoitettava koko fastq ja pakattava se sitten.

Hei Aaron Berlin, kiitos vastauksestasi ja tervetuloa bioinformatiikan pino-vaihtoon. Vastauksesi on vähän lyhyt; onko sinulla lähdettä, jonka voit antaa siitä, ettet pysty kirjoittamaan pakattua fastq-tiedostoa Biopythonilla, tai vaihtoehtoisella python-koukulla, jota voitaisiin käyttää kiertämään kyvyttömyys tukea pakatun tiedoston kirjoittamista?


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...