Skip to main content

Build keras generator for genomic application

Project description

Keras_dna: simplifying deep genomics

Keras_dna logo

license

Description:

Keras_dna is an API that helps quick experimentation in applying deep learning to genomics. It enables to quickly feed a keras model (tensorflow) with genomic data without the need of laborious file convertion and storing tremendous amount of converted data. It reads the most commun bioinformatics file types and create a generator adapted to a keras model.

Use Keras_dna if you need a library that:

  • Allows fast usage of standard bioinformatics data to feed a keras model (nowaday standard for tensorflow).
  • Is able to adapt to the needed format of data.
  • Facilitates the standard evaluation of a model with genomics data (correlation, AUPRC, AUROC)

Read the documentation at keras_dna.

Keras_dna is compatible with: Python 3.6.


Guiding principles:

  • Fournishing a simplified API to create generator of genomical data.

  • Reading the DNA sequence directly and effectively in fasta file to discard the need of storing huge amounts of data.

  • Generating the DNA sequence corresponding to the desired annotation (can be sparse annotation or continuous), passed with standard bioinformatic files (gff, bed, bigWig, bedGraph).

  • Easily adapt to the type of annotation, their number, the number of different cell type or species.


Getting started:

The core data structures of Keras_dna are a generator, to feed the keras model with genomical data, and a modelwrapper to attach a keras model to its keras_dna generator.

Generator is able to create batch of DNA sequence corresponding to the desired annotation.

First example, a Generator that will return DNA subsequences corresponding to a given function (here binding site) as positive class and subsequences far away as negative class. The DNA sequence is fournished through a fasta file and the annotation is fournished with a gff file (could have been a bed), the DNA is one-hot-encoded, the function names that we want to target need to be passed in a list.

from keras_dna import Generator

generator = Generator(batch_size=64,
                      fasta_file='species.fa',
                      annotation_files=['annotation.gff'],
                      annotation_list=['binding site'])

Second example, a Generator for continuous annotation, this time the file is a bigWig file (it can also be passed with a wig or a bedGraph, but then a file containing the size of chromosome need to be passed as size), the length of desired window need to be passed. This generator will generate all the window of length 100 in the DNA and will label it with the coverage at the center nucleotid.

from keras_dna import Generator

generator = Generator(batch_size=64,
                      fasta_file='species.fa',
                      annotation_files=['annotation.bw'],
                      window=100)

Generator owns a lot of keywords to adapt the format of the data both to the keras model and to our task (predicting the sequence function in different cellular type, choosing between several different functions, adding a secondary input, adding a secondary target...)

ModelWrapper is a class designed to unify a keras model to its generator in order to simplify further usage of the model (prediction, evaluation).

from keras_dna import ModelWrapper, Generator
from tensorflow.keras.models import Sequential()

generator = Generator(batch_size=64,
                      fasta_file='species.fa',
                      annotation_files=['annotation.bw'],
                      window=100)

model = Sequential()
### the model need to be compiled
model.compile(loss='mse', optimizer='adam')

wrapper = ModelWrapper(model=model,
                       generator_train=generator)

Train the model with .train()

wrapper.train(epochs=10)

Evaluate the model on a chromosome with .evaluate()

wrapper.evaluate(incl_chromosomes=['chr1'])

Predict on a chromosome with .predict()

wrapper.predict(incl_chromosomes=['chr1'], chrom_size='species.chrom.sizes')

Save the wrapper in hdf5 with .save()

wrapper.save(path='./path/to/wrapper', save_model=True)

Installation:

Dependencies:

  • pandas
  • numpy
  • pybedtools
  • pyBigWig
  • kipoiseq
  • tensorflow 2

We also strongly advice to install genomelake for fast reading in fasta file.

  • Install Keras_dna from PyPI:

Note: These installation steps assume that you are on a Linux or Mac environment. If you are on Windows, you will need to remove sudo to run the commands below.

sudo pip install keras_dna

If you are using a virtualenv, you may want to avoid using sudo:

pip install keras_dna

Note that libcurl (and the curl-config command) are required for installation. This is typically already installed on many Linux and OSX systems (this is also available easily if using a conda env).

  • Alternatively: install Keras_dna from the GitHub source:

First, clone Keras using git:

git clone https://github.com/etirouthier/keras_dna.git

Then, cd to the Keras_dna folder and run the install command:

cd keras_dna
sudo python setup.py install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keras_dna-0.0.16.tar.gz (34.7 kB view details)

Uploaded Source

Built Distribution

keras_dna-0.0.16-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

Details for the file keras_dna-0.0.16.tar.gz.

File metadata

  • Download URL: keras_dna-0.0.16.tar.gz
  • Upload date:
  • Size: 34.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0.post20200209 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for keras_dna-0.0.16.tar.gz
Algorithm Hash digest
SHA256 aba2aefd7c6a9a5b3191491f47e54d98bd406569f40a4731174ef87262396077
MD5 4a552d0fef7c79bec62388d11b97a4ec
BLAKE2b-256 8b4c4b8d7e8c0b5449e6baa71cca6a07fef2cd058aa09bfe07315c5e37d9854a

See more details on using hashes here.

File details

Details for the file keras_dna-0.0.16-py3-none-any.whl.

File metadata

  • Download URL: keras_dna-0.0.16-py3-none-any.whl
  • Upload date:
  • Size: 37.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0.post20200209 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for keras_dna-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 236c9736400c8eb7aa6460edaf7aa63b1d5772e881cb36e2532397606a46338c
MD5 7f5d0a9c42553c32aef54ed32cd9a015
BLAKE2b-256 9d0f00ef21848236a3694116df7acce7817db6cbf50d1ce32108dceed53572f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page