Commit 515bb68b authored by Andreas Tille's avatar Andreas Tille
Browse files

New upstream version 0.2.2

parent e4f91173
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3,3 +3,7 @@ docs.json
__dummy.html
*.o
*.obj
dub.selections.json
bin/
old_biod/
build/

Makefile

0 → 100644
+46 −0
Original line number Diff line number Diff line
# Simple Makefile

D_COMPILER=ldc2
DFLAGS = -wi -g -relocation-model=pic -unittest -main -Icontrib/undead

ifndef GUIX
  ifdef GUIX_ENVIRONMENT
    GUIX=$(GUIX_ENVIRONMENT)
  endif
endif
ifdef GUIX
  LIBRARY_PATH=$(GUIX)/lib
endif

DLIBS       = $(LIBRARY_PATH)/libphobos2-ldc.a $(LIBRARY_PATH)/libdruntime-ldc.a
DLIBS_DEBUG = $(LIBRARY_PATH)/libphobos2-ldc-debug.a $(LIBRARY_PATH)/libdruntime-ldc-debug.a

SRC         = $(wildcard contrib/undead/*.d) contrib/undead/*/*.d $(wildcard bio/*.d bio/*/*.d bio/*/*/*.d bio/*/*/*/*.d bio/*/*/*/*/*.d bio/*/*/*/*/*/*.d)
OBJ         = $(SRC:.d=.o)
BIN         = bin/biod_tests

debug:          DFLAGS += -O0 -d-debug -link-debuglib
release static: DFLAGS += -O3 -release -enable-inlining -boundscheck=off
static:         DFLAGS += -static -L-Bstatic

all: debug

default: all

default debug release static: $(BIN)

%.o: %.d
	$(D_COMPILER) $(DFLAGS) -c $< -od=$(dir $@)

$(BIN): $(OBJ)
	$(info linking...)
	$(D_COMPILER) $(DFLAGS) $(OBJ) -of=$(BIN)

check: $(BIN)
	$(info running tests...)
	$(BIN)

clean:
	rm -vf $(OBJ)
	rm -v $(BIN)
        # find -name '*.o' -exec rm \{\} \;
+68 −42
Original line number Diff line number Diff line
# BioD [![Build Status](https://travis-ci.org/biod/BioD.svg?branch=master)](https://travis-ci.org/biod/BioD) [![DUB Package](https://img.shields.io/badge/dub-v0.1.0-red.svg)](https://code.dlang.org/packages/biod)

[BioD](https://github.com/biod/BioD) is a fast and memory efficient bioinformatics library written in the [D programming language](http://dlang.org).
[BioD](https://github.com/biod/BioD) is a fast and memory efficient bioinformatics library written in the [D programming language](http://www.dlang.org)
whose aim is to:

BioD aims to:
* Provide a platform for developing high-performance computational biology applications using the [D programming language](http://www.dlang.org) through
  - Automatic parallelization of tasks where possible
  - Avoiding unnecessary memory allocations

* Provide a platform for writing high-performance bioinformatics applications in D. BioD achieves this by:
  - automatic parallelization of tasks where possible for example reading and writing BAM files
  - reducing the GC overhead by avoiding unnecessary memory allocations
* Offer support for manipulating common biological data formats
## Why BioD?

## Why D?
BioD leverages on [D programming language](http://www.dlang.org)
features to develop high performance bioinformatics tools
(e.g. [sambamba](https://github.com/biod/sambamba)). The D programming
language is both a low and high-level hybrid object orientated and
functional (OOP/FP) programming language with templating/generic
features are far easier than that of C++.

D is a language that suits parallel programming because of guarantees
the compiler provides. D is both a low-level language and a high-level
hybrid OOP/FP language. There is no other programming language that
matches those features. Also, D templating/generics is far easier that
that of C++ or, say, Scala.
## D programming language resources

That is not to say that D is an easy language. A powerful toolbox will
be complicated. If you want to do everything with a hammer, maybe
better choose Java instead ;).

For more information about D find Andrei Alexandrecu's D book. It is a
classic. Ali Çehreli's book also is recommended.
* [Programming in D](http://ddili.org/ders/d.en/index.html) is online by Ali Çehreli.
* [The D Programming Language](https://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361) by Andrei Alexandrecu (great book, slightly out of date)
* [The D Cookbook](https://www.amazon.com/D-Cookbook-Adam-D-Ruppe/dp/1783287217) by Adam D. Ruppe

## Current development

Our current focus is to provide a bamreader and bamwriter that is
really fast and easy to use. We believe the BAM format is here to stay
for the foreseeable future in pipelines. With D we have an good way to
write performance parsers, particularly with three typical scenarios:
Our aim is to provide a set of D modules to manipulate and work with
biological datasets.  BioD provides modules for manipulating high
throughput data formats by provifing fast and easy to use native BAM
file reader and writer with ability to iterate a BAM file a read at a
time,a nucleotide at a time (pileup) or via a sliding window.


1. Go through a BAM file a read at a time
2. Go through a BAM file a nucleotide at a time (pileup)
3. Go through a BAM file with a sliding window
## Install

The sliding window is a derivation of the first - a read at a time or
a nucleotide at a time.
The current default is to provide the path to the checked out repo to
the D-compiler. For example,

At this point this functionality is mostly in BioD, but not in an
intuitive way. We are building up this functionality and will give
examples (WIP).
    DFLAGS = -wi -I. -IBioD -g

# Install
## Build environment

The current default is to provide the path to the checked out repo to the D-compiler. For example
in sambamba we use
After installing ldc and dub

    DFLAGS = -wi -I. -IBioD -g
    dub
    dub test

It is possible to create a recent build container with the
[GNU guix](https://www.gnu.org/software/guix/) transactional package
manager

    guix environment -C guix --ad-hoc ldc dub zlib gdb binutils-gold --network

after getting dropped in the container simply run dub.

If you want to use the make file instead (not requiring the network) use

# Usage
    guix environment -C guix --ad-hoc ldc zlib gdb make binutils-gold --no-grafts
    make -j 4
    make check

See the [examples directory](https://github.com/biod/BioD/tree/master/examples)
## Debugging

When using gdb, switch off these handlers

`handle SIGUSR1 SIGUSR2 nostop noprint`

It can be passed in from the command line

`gdb -iex "handle SIGUSR1 SIGUSR2 no stop noprint" biod_test`

## Usage

See the [examples directory](examples)
for examples and usage.

BioD is also a crucial part of the [sambamba](https://github.com/biod/sambamba) tool.
## Mailing list

# Contributing
[The BioD mailing list](https://groups.google.com/forum/#!forum/dlang_biod)

## Contributing

Simply clone the repository on github and put in a pull request.

# BioD contributors and support
## BioD contributors and support

See
[contributors](https://github.com/biod/BioD/graphs/contributors). For
support use the [issue tracker](https://github.com/biod/BioD/issues) or contact

* [Pjotr Prins](https://github.com/pjotrp)
* [Artem Tarasov](https://github.com/lomereiter)
* [George Githinji](https://github.com/George-Githinji)
* [Prasun Anand](https://github.com/prasunanand)

## License

# License
BioD is free software and licensed under the MIT (expat) [license](./LICENSE).

BioD is licensed under the liberal MIT (expat) [license](./LICENSE).
BioD includes some files from the
[undeaD project](https://github.com/dlang/undeaD) in ./contrib which
are published under a Boost license. This code should be phased out in time.
+11 −0
Original line number Diff line number Diff line
## ChangeLog v0.2.2 (20190316)

+ Restored make so we can compile without dub
+ Fasta and fasta indexing (.fai) support added (thanks Emilio Palumbo https://github.com/emi80)
+ Mate pair comparison and HI tag support added for BAM (thanks https://github.com/emi80)
+ Added Picard-style comparison for BAM (thanks https://github.com/TimurIs)
+ Added fast whitespace line splitter/tokenizer, a Phobos-style version and a faster C-style version (thanks https://github.com/pjotrp)
+ Added multi-allelic frequencies (MAF) support (thanks https://github.com/pjotrp)
+ Name spaces and directories reorganised (thanks George Gethinji https://github.com/george-githinji)
+ Pulled in D's undead repo (dropped dependency) and minimalised it to actual used files (@pjotrp)

## ChangeLog v0.2.1 (20181004)

+ Fix bunch of deprecation warnings
+1 −1
Original line number Diff line number Diff line
0.2.1
0.2.2
Loading