go4bio icon indicating copy to clipboard operation
go4bio copied to clipboard

Golang for Bioinformatics

Golang for bioinformatics

About Golang

Wikipedia

Open source programming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing, memory safety features and CSP-style concurrent programming features added

Official site: https://golang.org/

Advantages

  • Easy to deploy, surports cross-compilation.

    部署简单,跨平台编译。Go编译生成各流行操作系统的二进制文件,直接运行即可,无依赖。

  • High performance.

    高性能。

  • Statically Typeed.

    静态类型语言。

  • Concurrency of language level.

    语言级别的并发支持。

  • Good language design, full tool-chains.

    关键字少,语法简单,工具链完善。

  • Embedded runtime, has Garbage Collection.

    内置runtime,支持GC。

Disadvantages

  • Lacking of bioinformatical libraries, you may reinvent wheels.
  • To be added...

Should I learn

You should try if you

  • Want to write some high-performance tools in short time.
  • Want to protect your source code.
  • Tired of complicated installation, deployment and configuration process.
  • Tired of bewildering symbols of Perl, and slow speed of Python.
  • Tired of the long compilation time and complication of C++.

You may think carefully if you

  • Have no programming experience.
  • Want to write tools with GUI.

Try

Discussions

Golang in Bioinformatcis

Golang

Books

Talks

Tools

Libraries

  • biogo - biogo is a bioinformatics library for Go
  • bio - A lightweight and high-performance bioinformatics package in Go
  • irelate - Streaming relation (overlap, distance, KNN) of (any number of) sorted genomic interval sets. #golang
  • hts - biogo high throughput sequencing repository
  • cfgo - a golang library to read, write and manipulate files in the variant call format.

Tools

  • vcfanno - annotate a VCF with other VCFs/BEDs/tabixed files
  • SeqKit - A cross-platform and ultrafast toolkit for FASTA/Q file manipulation in Golang http://shenwei356.github.io/seqkit
  • gsort - sort genomic data
  • fastcov - A novel algorithm for detecting multiple covariance and clustering of biological sequences

Others