Jul 20, 2023

Read and write FASTQ and FASTA

dnaio is a Python 3 library for fast input and output of FASTQ and FASTA files. It supports paired-end data in separate files, interleaved paired-end in a single file and compression using gzip, bzip, and xz.

One of the fascinating aspects of FreeBSD is its ability to offer a broad selection of ports each designed to fulfill a specific role. One such port is py-dnaio, a high-level interface for reading and writing DNA sequence files in various formats. This particular port is specifically designed to cater to the needs of biologists. By the end of this article, we’ll have covered how to install and use py-dnaio, along with the benefits it offers to its users.


Installing py-dnaio on your FreeBSD system is as straightforward as it gets. Open your terminal and enter the following command to ensure your Ports Collection is up-to-date.

# portsnap fetch update

This will fetch and extract the latest available versions of all FreeBSD ports. Next, navigate to the py-dnaio directory.

# cd /usr/ports/biology/py-dnaio/

Finally, install the port with the command

# make install clean

After the installation process finishes, py-dnaio will be ready for use on your FreeBSD system.

Using py-dnaio

py-dnaio is a Python library that provides a fast and easy-to-use reader and writer for common DNA sequencing file formats like FASTA/Q, and it also handles files compressed with gzip, bzip2, and xz. The library gracefully handles other aspects such as managing file headers and sequence annotations.

Importing py-dnaio in Python

import dnaio

Reading Sequence File

To read a sequence file using py-dnaio, the function can be used.

with'path_to_your_file.fasta' as file
    for record in file

In the code snippet above, ‘path_to_your_file.fasta’ is the location of your file. Replace it with the path of the file you want to read.

Writing a Sequence File

records = [...]  # List of dnaio.Sequence objects
with'path_to_your_file.fasta', 'w' as file
    file.writer for r in records

In the line records = [...], replace ... with a list of dnaio.Sequence objects.

Benefits of py-dnaio

For biologists working with DNA sequence data, py-dnaio is an invaluable tool. It offers ease through its intuitive high-level interface. Interacting with sequence data files, be it for reading or writing, is made extremely straightforward. By being able to handle various file formats, it saves the user from having to manually convert between them.

In addition, py-dnaio has the added advantage of performance. The underlying implementation is highly optimized, resulting in a significant speed-up compared to many other sequence file handling libraries. Therefore, it can comfortably handle large sequence files, a common scenario in biology.

The second benefit is the seamless handling of compressed files. Natively handling different compression types eliminates the need for additional steps of compression or decompression, which can be time-consuming especially with large files.

Finally, py-dnaio being a Python library, there’s a large community and plenty of resources available on Python. This makes the process of learning and troubleshooting py-dnaio easier.

If you’re a biologist working with FreeBSD who regularly interacts with sequence data, py-dnaio is likely to make your work a lot more efficient.

In conclusion, the FreeBSD ports system is a rich collection of handy tools tailored to specific needs. For biologists dealing with DNA sequencing data, py-dnaio is a must-have tool. Just like you’d use the [nmap port]https// for IT security, py-dnaio should be your go-to option for handling DNA sequence files on FreeBSD.

Checkout these related ports:
  • Wise - Intelligent algorithms for DNA searches
  • Wfa2-lib - Exact gap-affine algorithm using homology to accelerate alignment
  • Vt - Discovers short variants from Next Generation Sequencing data
  • Vsearch - Versatile open-source tool for metagenomics
  • Viennarna - Alignment tools for the structural analysis of RNA
  • Velvet - Sequence assembler for very short reads
  • Vcftools - Tools for working with VCF genomics files
  • Vcflib - C++ library and CLI tools for parsing and manipulating VCF files
  • Vcf2hap - Generate .hap file from VCF for haplohseq
  • Vcf-split - Split a multi-sample VCF into single-sample VCFs
  • Unikmer - Toolkit for nucleic acid k-mer analysis, set operations on k-mers
  • Unanimity - Pacific Biosciences consensus library and applications
  • Ugene - Integrated bioinformatics toolkit
  • Ucsc-userapps - Command line tools from the UCSC Genome Browser project
  • Trimmomatic - Flexible read trimming tool for Illumina NGS data