Skip to content

Latest commit

 

History

History

fqcnt

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Program Language Library tgzip (s) tplain (s) Comments
fqcnt_rs2_needletail.rs Rust needletail 9.3 0.8 fasta/4-line fastq
fqcnt_c1_kseq.c C kseq.h 9.7 1.4 multi-line fasta/fastq
fqcnt_cr1_klib.cr Crystal klib.cr 9.7 1.5 kseq.h port
fqcnt_rs1_rustbio.rs Rust rust-bio 10.0 2.4 rust-bio
fqcnt_nim1_klib.nim Nim klib.nim 10.5 2.3 kseq.h port
fqcnt_jl1_klib.jl Julia Klib.jl 11.1 2.9 kseq.h port
fqcnt_py8x_fx.py PyPy Fastx; cffi 11.5 3.1 kseq.h binding
fqcnt_py6x_pyfx.py Python PyFastx 15.8 7.3 kseq.h binding
fqcnt_py3x_mappy.py Python mappy 16.6 8.7 kseq.h binding
fqcnt_js1_k8.js Javascript 17.5 9.4 kseq.h port
fqcnt_py7x_pysam.py Python pysam 18.5 12.7 kseq.h binding
fqcnt_go1.go Go 19.1 2.8 4-line only
fqcnt_jl2x_fastx.jl Julia Fastx.jl 19.5 2.6 4-line only; no startup
fqcnt_lua2_4l.lua LuaJIT 22.8 10.4 4-line only
fqcnt_py8x_fx.py Python Fastx; cffi 24.2 15.9 kseq.h binding
fqcnt_py1_4l.py PyPy 27.5 13.9 4-line only
fqcnt_lua1_klib.lua LuaJIT 28.6 27.2 partial kseq.h port
fqcnt_py2_rfq.py PyPy 28.9 14.6 partial kseq.h port
fqcnt_py1_4l.py Python 34.8 14.2 4-line only
fqcnt_py4x_bpitr.py Python BioPython 37.9 18.1 FastqGeneralIterator
fqcnt_py2_rfq.py Python 42.7 19.1 partial kseq.h port
fqcnt_py5x_bp.py Python BioPython 135.8 107.1 SeqIO.parse
fqcnt_scala_fgbio.sc Scala/Ammonite fgbio,[ammonite][ammonite] TBD TBD FastqSource
fqcnt_scala_fgbio.sc Scala/Ammnoite commons.io[ammonite][ammonite] TBD TBD Io.readlines
FgBio.scala Scala/JAR fgbio TBD TBD FastqSource
FgBio.scala Scala/JAR commons.io TBD TBD Io.readlines
  • Crystal, Nim, Julia (jl1) and Javascript use an algorithm very similar to kseq.h. LuaJIT and the second Python script (py2) are somewhat similar but they use the languages' builtin line readers instead. All these implementations seamlessly work with FASTA and multi-line FASTQ files.

  • C, Crystal, Nim and Javascript use the system zlib. Julia is forced to bind to the system zlib by manually modifying Klib.jl. Go calls its own zlib. LuaJIT pipes gzip.

  • Julia takes ~11 seconds to compile the Fastx.jl implementation. The numbers in the table exclude this startup time.

  • Julia by default uses its own precompiled zlib. However, the zlib binary in Julia-1.4.1 is misconfigured and is slow.

  • External libraries: biopython-1.76, pyfastx-0.6.10, fastx-0.0.2, mappy-2.17 and Fastx.jl-1.0.0.

  • C, Crystal, Nim, Rust, Javascript, Go, Julia, LuaJIT, PyPy and Python C binding runs were timed by hyperfine.

  • Scala takes ~TBD seconds to compile the fqcnt_scala_fgbio.sc implementation. The numbers in the table exclude this startup time.