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.