对深度学习模型的基因组数据进行简单有效的随机访问。
项目描述
# 基因组湖
[](https://circleci.com/gh/kundajelab/genomelake)[![覆盖状态] (https://coveralls.io/repos/github/kundajelab/genomelake/badge.svg)](https://coveralls.io/github/kundajelab/genomelake)
高效随机访问深度学习模型的基因组数据。
支持以下类型的输入数据:
- bigwig
- DNA 序列
基因组湖在提供的 BED 间隔中从基因组输入中提取信号。
## 要求
- python 2.7 或 3.5
- bcolz
- cython
- numpy
- pybedtools
- pysam
## 安装
克隆存储库并运行:
`python setup.py install`
## 入门:训练蛋白质-DNA 结合模型
将全基因组序列数据提取到基因组湖数据源中:
```python
from geneslake.backend import extract_fasta_to_file
genes_fasta = "/mnt/data/annotations/by_release/hg19.GRCh37/ hg19.genome.fa"基因组数据
目录 = "./hg19_data_directory"
extract_fasta_to_file(genome_fasta, 基因组数据目录)
```
使用带有标签的 BED 区间文件、基因组数据源和基因组湖的 `ArrayExtractor`,生成输入 DNA 序列和标签:
` `python从基因组湖
导入
pybedtools.extractors 导入 ArrayExtractor
导入 numpy 作为 np
def batch_iter(iterable, batch_size):
it = iter(iterable)
try:
while True:
values = []
for n in range(batch_size):
values += (next(it),)
产生
除 StopIteration 之外的值:
产生值
def generate_inputs_and_labels(intervals_file, data_source, batch_size=128):
bt = pybedtools. BedTool(intervals_file)
extractor = ArrayExtractor(data_source)
intervals_generator = batch_iter(bt,batch_size)
用于intervals_generator中的intervals_batch:
输入=extractor(intervals_batch)
标签= []
用于intervals_batch中的间隔:
labels.append(float(interval.name))
标签= np.array(标签)
产生输入,标签
```
使用 101 个碱基对间隔和标签在 `./examples/JUND.HepG2.chr22.101bp_intervals.tsv.gz` 中训练 JUND 与 DNA 结合的 keras 模型:
```
来自 keras.models从 keras.layers 导入Sequential
导入 Conv1D、展平、密集区间_file =
"./examples/JUND.HepG2.chr22.101bp_intervals.tsv.gz" 15, 25, input_shape=(101, 4))) model.add(Flatten()) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam ',指标=['准确性'])
model.fit_generator(inputs_labels_generator, steps_per_epoch=100)
```
这是预期的结果:
```
100/100 [======================= ======] - 7s - loss: 0.0584 - acc: 0.9905
```
## 许可证
基因组湖是在 BSD-3 许可证下发布的。有关详细信息,请参阅“许可证”。
[](https://circleci.com/gh/kundajelab/genomelake)[![覆盖状态] (https://coveralls.io/repos/github/kundajelab/genomelake/badge.svg)](https://coveralls.io/github/kundajelab/genomelake)
高效随机访问深度学习模型的基因组数据。
支持以下类型的输入数据:
- bigwig
- DNA 序列
基因组湖在提供的 BED 间隔中从基因组输入中提取信号。
## 要求
- python 2.7 或 3.5
- bcolz
- cython
- numpy
- pybedtools
- pysam
## 安装
克隆存储库并运行:
`python setup.py install`
## 入门:训练蛋白质-DNA 结合模型
将全基因组序列数据提取到基因组湖数据源中:
```python
from geneslake.backend import extract_fasta_to_file
genes_fasta = "/mnt/data/annotations/by_release/hg19.GRCh37/ hg19.genome.fa"基因组数据
目录 = "./hg19_data_directory"
extract_fasta_to_file(genome_fasta, 基因组数据目录)
```
使用带有标签的 BED 区间文件、基因组数据源和基因组湖的 `ArrayExtractor`,生成输入 DNA 序列和标签:
` `python从基因组湖
导入
pybedtools.extractors 导入 ArrayExtractor
导入 numpy 作为 np
def batch_iter(iterable, batch_size):
it = iter(iterable)
try:
while True:
values = []
for n in range(batch_size):
values += (next(it),)
产生
除 StopIteration 之外的值:
产生值
def generate_inputs_and_labels(intervals_file, data_source, batch_size=128):
bt = pybedtools. BedTool(intervals_file)
extractor = ArrayExtractor(data_source)
intervals_generator = batch_iter(bt,batch_size)
用于intervals_generator中的intervals_batch:
输入=extractor(intervals_batch)
标签= []
用于intervals_batch中的间隔:
labels.append(float(interval.name))
标签= np.array(标签)
产生输入,标签
```
使用 101 个碱基对间隔和标签在 `./examples/JUND.HepG2.chr22.101bp_intervals.tsv.gz` 中训练 JUND 与 DNA 结合的 keras 模型:
```
来自 keras.models从 keras.layers 导入Sequential
导入 Conv1D、展平、密集区间_file =
"./examples/JUND.HepG2.chr22.101bp_intervals.tsv.gz" 15, 25, input_shape=(101, 4))) model.add(Flatten()) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam ',指标=['准确性'])
model.fit_generator(inputs_labels_generator, steps_per_epoch=100)
```
这是预期的结果:
```
100/100 [======================= ======] - 7s - loss: 0.0584 - acc: 0.9905
```
## 许可证
基因组湖是在 BSD-3 许可证下发布的。有关详细信息,请参阅“许可证”。