#hdf5 #genomics #intervals #genetic #keras #interval

app 基因组区间_pipeline

从基因组区间创建 HDF5 数据库的管道

2 个版本

0.1.3 2020 年 12 月 3 日
0.1.0 2020 年 11 月 28 日

#505 in 科学

MIT 许可证

33KB
363

用于深度学习的基因组注释数据集构建管道

Crates.io Crates.io Docs

这是一个从 Rust 中的基因组区域和注释创建 HDF5 输入到 Keras 的管道。它是 Basset 的预处理管道的(某种程度上)直接替代品,旨在将 BED 文件列表转换为用于深度学习模型的注释 one-hot 编码序列。两个管道的输入和输出应相似,但这个管道对于大数据集来说要快得多。

要安装,请使用 cargo,或者从源代码构建。

cargo install genomic_interval_pipeline

从源代码构建

确保您已经在系统上安装了 cargo 和 Rust,然后克隆此仓库。

git clone [email protected]:Chris1221/genomic_interval_pipeline.rs.git
cd genomic_interval_pipeline.rs

使用 cargo 构建可执行文件。它应该会为您找出所有依赖项。

cargo build --release

二进制文件将在 target/release/genomic_interval_pipeline 中。

用法

您必须提供

  1. 以换行符分隔的 gzipped BED 文件列表。
  2. 参考基因组的路径。这必须使用 bgzip 压缩,并使用 samtools faidx 索引。

第一个的示例可以在 data/metadata.txt 中找到

data/file1.bed.gz
data/file2.bed.gz

创建相关的参考基因组很简单。

  1. 下载您选择的参考基因组,例如 hg19。这里,我只是使用了 UCSC 基因组浏览器。
wget https://hgdownload.soe.ucsc.edu/goldenPath/hg19/bigZips/hg19.fa.gz
  1. 使用 bgzip 压缩您的参考基因组(如果已经这样做,请跳过此步骤。)
gunzip hg19.fa.gz
bgzip hg19.fa
  1. 使用 samtools 索引。
samtools faidx hg19.fa.gz

运行管道

使用 BED 文件元数据的路径和参考基因组的路径调用二进制文件(您不必指定索引的位置)。

genomic_interval_pipeline -i data/metadata.txt -f hg19.fa.gz -o small_dataset

这将创建您的数据集在 small_dataset.h5

参数

描述
-i --input 字符串 处理床文件的新行分隔列表的路径。
-f --fastq 字符串 faidx索引的,bgzip压缩的参考FASTQ文件的路径
-o --output 字符串 输出.h5文件的路径。
-m --min_overlap 数字 合并段所需的最小重叠数(默认:200
-e --exclusive 布尔值 执行多类学习而不是多标签学习(即排除多个细胞类型注释的情况,只写入唯一值)(默认:false
--length 数字 区域的标准化长度(默认:600
--test_chr 字符串 测试集中使用的染色体列表,用逗号分隔(默认:chr19,chr20
--valid_chr 字符串 验证集中使用的染色体列表,用逗号分隔(默认:chr21,chr22
--loglevel 字符串 日志级别(默认:info

数据集格式

HDF5文件实际上是数据目录。数据集内有六个表格,对应于训练、测试和验证序列及其标签。

序列是3维数组,维度为(batch, length, 4),其中length在构建数据集时可选,表示段的标准化长度。

标签是2维数组,维度为(batch, number_of_labels),其中number_of_labels是元数据文件的长度。您可以在HDF5文件中轻松重新编码此数据集以获得更定制的训练输出。

非标准标签

标签按顺序分配给bed文件(如SQL表中的序列号),然而此行为可以被覆盖。您可能有一个由空格分隔的两列元数据文件,而不是一个列的元数据文件。该文件的第二列是该文件的数字标签。

path/to/file1.bed.gz numeric_label_1
path/to/file2/bed.gz numeric_label_2

请参阅data/metadata_custom.txt中的示例。

Keras中使用数据集

您可以使用TensorFlow I/O API将此数据用于您自己的神经网络。以下是一个Python示例。

import tensorflow     as tf
import tensorflow_io  as tfio

dataset = "small_dataset.h5"

train_x = tfio.Dataset.from_hdf5(dataset, "training_sequences")
train_y = tfio.Dataset.from_hdf5(dataset, "training_labels")
train_dataset = tf.data.Dataset.zip((train_x, train_y))

将此train_dataset(以及类似地测试和验证)传递给model.fit

依赖关系

~18–28MB
~461K SLoC