Skip to main content

用于基因组学深度学习的实用程序和数据集

项目描述

长谷标志

Janggu 是一个 python 包,可在基因组学的背景下促进深度学习。该软件包在 GPL-3.0 许可下免费提供。

长谷视觉摘要

特别是,该软件包允许轻松访问典型的基因组学数据格式开箱即用的评估(特别是针对 keras 模型),以便您可以专注于设计神经网络架构以快速测试生物学假设。此处提供了全面的文档。

长谷的标志:

  1. Janggu 提供特殊的基因组学数据集,允许您访问 FASTA、BAM、BIGWIG、BED 和 GFF 文件格式的原始数据。

  2. 支持处理基因组数据集的各种标准化程序,包括“TPM”、“zscore”或自定义标准化程序。

  3. 生物特征可以用更高阶的序列特征来表示,例如基于二核苷酸的特征。

  4. 数据集对象可直接用于神经网络,例如使用keras或使用scikit-learn实现(请参阅此存储库中的 src/examples)。

  5. keras 模型的 Numpy 格式输出可以转换为表示基因组覆盖轨迹,这允许将预测导出为 BIGWIG 文件并可视化类似基因组浏览器的图。

  6. 基因组数据集可以多种方式存储,包括 numpy 数组、稀疏数据集或 hdf5 格式。

  7. 基因组数据集的缓存避免了耗时的预处理步骤并有助于快速重新加载。

  8. Janggu 为具有内置日志记录功能和自动结果评估的keras模型提供了一个包装器。

  9. Janggu 支持使用集成梯度法和变量效应预测评估的输入特征重要性归因。

  10. Janggu 提供了一个实用程序,例如 keras 层,用于扫描两条 DNA 链以查找基序出现。

入门

Janggu 可以轻松访问基因组文件格式的数据并将其用于机器学习目的。

dna = Bioseq.create_from_genome('dna', refgenome=<refgenome.fa>, roi=<roi.bed>)
labels = Cover.create_from_bed('labels', bedfiles=<labels.bed>, roi=<roi.bed>)

kerasmodel.fit(dna, labels)

可以在此存储库的“./src/examples”中找到一系列示例,其中包括说明 Janggu 功能以及如何将其与流行的深度学习框架(包括 keras、sklearn 或 pytorch)一起使用的 jupyter notebook。

为什么叫长谷?

长鼓是一种看起来像沙漏的韩国打击乐器。

与仪器的两端一样,Janggu 包的理念是帮助基因组学中深度学习应用的两端,即数据采集和评估。

安装

在setup.py中定义了一个 python 依赖项列表。此外,janggu所依赖的pybedtools需要bedtools 。

Janggu 依赖于 tensorflow 和 keras。要使用 tensorflow 版本 1 和 2 安装 janggu,请使用

# to install with tensorflow==1.14 and keras==2.2
pip install janggu[tf] # or janggu[tf_gpu]

# to install with tensorflow==2.2 and keras==2.4.3
pip install janggu[tf2] # or janggu[tf2_gpu]

根据 pip 版本(例如 20.2.2),某些包依赖项可能无法准确解析,从而安装不兼容的包版本。如果是这种情况,您可以尝试使用 pip install ... –use-feature=2020-resolver 或手动安装所需的软件包版本。

或者,您可以使用 conda 环境安装 tensorflow 和 keras

# tensorflow v1
conda install tensorflow==1.14 keras==2.2  # or tensorflow-gpu

# tensorflow v2
conda install tensorflow==2.2 keras==2.4.3  # or tensorflow-gpu

有关 tensorflow 安装的更多信息可以在官方tensorflow 网页上找到

要验证安装是否有效,请尝试运行 jangu 包中包含的示例,如下所示

git clone https://github.com/BIMSBbioinfo/janggu
cd janggu
python ./src/examples/classify_fasta.py single

然后训练一个模型来预测两组玩具序列的类别标签,方法是扫描正向链的序列模式并使用普通的单核苷酸 one-hot 序列编码。整个训练过程在 CPU 后端需要几分钟。最后,显示了 Oct4 和 Mafk 序列的一些示例预测分数。准确率应该在 85% 左右,Oct4 的单个示例预测分数应该比 Mafk 高。

您还可以尝试通过评估两条链上的序列特征并使用命令行参数使用高阶序列编码来重新运行训练:dnaconv -order 2。与前一个示例相比,单个示例序列的准确度和预测分数应该会有所提高。

引文

Kopp, W.、Monti, R.、Tamburrini, A.、Ohler, U.、Akalin, A. 使用 Janggu 进行基因组学深度学习。Nat Commun 11, 3488 (2020)。https://doi.org/10.1038/s41467-020-17155-y

变更日志

0.10.2 (2021-09-29)

  • 修正了文档中的错别字

0.10.1 (2021-06-28)

  • 适应 pysam 依赖

  • 修复了从 BAM 文件加载覆盖率的错误

0.10.0 (2020-10-01)

  • 添加了 predict_variant_effect 作为独立函数。

  • 除了先前需要的 Bioseq 对象外,还调整了 predict_variant_effect 以接受 fasta 格式的基因组。

  • 添加了 idx 参数 input_attribution 以允许选择 Bioseq 对象的第 i^th 序列。

0.9.9 (2020-08-04)

  • 添加了对 tensorflow 2.2 的兼容性和测试。

  • 调整 setup.py 以分别与 tensorflow 1.14 和 tensorflow 2.2 以及兼容的 keras 版本一起使用。

  • Cover.create_from_bed 的扩展模式选项。新选项:'bedgraph'、'score_category'('categorical' 的同义词)、'name_category'

  • Cover.create_from_bed 的固定模式='categorical'/'score_category' 行为

  • 模式 'bedgraph' 支持与 bedgraph 格式的兼容性。

  • 修复了 Cover.create_from_bigwig 和 Cover.create_from_bam 的染色体末端的间隔和不存在染色体上的间隔的问题。

  • 如果已经构建了 forward 和 revcomp 层,则修复了构建 DnaConv2D 包装器的问题。

0.9.8 (2020-07-13)

  • 改进的 JangguSequence 可与 keras 和 tensorflow 2.0 一起使用

0.9.7 (2020-05-07)

  • 加载 BED 文件的性能改进。

  • 如果没有提供 binsize,则 binsize 会自动检测为 roi 中的最长间隔。以前的自动检测仅在所有间隔长度相等时才提供,否则需要手动指定 binsize。

0.9.6 (2020-02-26)

  • 不再支持 python 2.7

  • 用于 DNA/蛋白质序列的数据增强的 RandomShift 包装器由(感谢@remomomo)添加。

  • 可以使用 Cover.create_from_bed 读取床位图文件

  • 提高 Cover.export_to_bigwig 的效率

  • 提高 Cover.create_from_bed 的效率

  • 内部重构

0.9.5 (2019-10-17)

  • 变体效果预测:添加了注释参数,该参数可以使用注释文件中特征的搁浅性进行链特定的变体效果预测。

  • 变异效果预测:添加了 ignore_reference_match 参数,可以忽略 VCF 参考碱基和参考基因组之间的不匹配核苷酸。默认情况下,仅当参考基因组和 VCF 文件中的核苷酸一致时才会评估变异效应。

  • 添加了文件有效性检查

  • 添加了控制详细程度的选项

  • 提高读取 BAM 和 BIGWIG 文件的效率

  • 使用 random_state 创建一个新的缓存文件,仅用于不存储整个基因组

  • 使用具有 ROI 间隔的分辨率 > 1 的放宽约束。仍然间隔开始必须被分辨率整除。否则,可能会出现奇怪的舍入错误。

  • 修复了由于网络输出层数不同而导致的问题。

  • 添加了单独的数据版本以更好地控制何时需要从头开始重新加载缓存文件。

0.9.4 (2019-07-15)

  • 添加了 SqueezeDim 包装器以与 sklearn 兼容

  • 添加了转置包装器,替换了数据集的 channel_last 选项

  • 使用pairedend='5pend' 选项加载双端bam 文件现在计算两端。

  • 分辨率选项添加到 create_from_array

  • 序列特征顺序的宽松限制

  • 现在,无论 store_whole_genome 选项如何,通过间隔进行覆盖访问都会返回核苷酸分辨率数据,以确保一致性。

  • 重构

0.9.3 (2019-07-08)

  • 添加了查看机制,允许将相同的数据集用于不同的目的,例如训练集和测试集。

  • 添加了数据集随机化,允许在内部随机化数据,以避免必须使用 shuffle=True 和 fit 方法。这允许从 hdf5 格式文件中获取连贯块中的随机数据,从而提高访问时间。

  • 为 DNA 和 BED 文件添加了延迟加载机制,该机制将基因组大小的确定推迟到数据集创建阶段,但在加载缓存文件时不执行以缩短重新加载时间。

  • 缓存逻辑得到改进,以最大限度地提高数据集的可重用性。例如,当加载整个基因组时,稍后可以使用不同的 binsize 重新加载数据。

  • 添加了变体效果预测功能。

  • 提高了从阵列加载覆盖率的效率。

  • 为 ReduceDim 添加了轴选项

  • 添加了 Track 类以提高 plotGenomeTrack 的灵活性

0.9.2 (2019-05-04)

  • 错误修正:Bioseq 缓存机制已修复。

0.9.1 (2019-05-03)

  • 删除了 HTSeq 依赖,转而使用 pybedtools 来解析 BED、GFF 等。这也引入了在系统上安装 bedtools 的要求,但它允许更快、更方便地解析 BED 类文件。

  • GenomicArray store_whole_genome=False 的内部重排。现在,将数据作为一个数组存储在具有虚拟键“数据”的类似字典的句柄中,而不是使用基因组间隔和与它们相关联的相应覆盖率作为键值以分段方式存储数据。这使得存储和处理更加高效。

  • 错误修正:为包装数据集添加了条件属性。

0.9.0 (2019-03-20)

添加了各种功能和错误修复:

jangu.data 的变化

  • 添加了新的数据集包装器以删除 NaN:NanToNumConverter

  • 为数据增强添加了新的数据集包装器:RandomOrientation、RandomSignalScale

  • 改编的 ReduceDim 包装器:添加了聚合器参数

  • plotGenomeTrack 添加了 figsize 选项

  • plotGenomeTrack 添加了其他绘图类型,包括 heatmap 和 seqplot。

  • plotGenomeTrack 重构内部代码

  • Bioseq 错误修复:修复了序列中反向补充 N 的问题。

  • GenomicArray:条件、顺序、分辨率不再从缓存中读取,而是从参数中读取以避免不一致

  • Cover 的规范化可以处理依次应用的规范化器可调用列表

  • 规范化和转换:添加 PercentileTrimming、RegionLengthNormalization、LogTransform

  • ZScore 和 ZScoreLog 默认不再应用 RegionLengthNormalization。

  • 包含数据集的 janggu.data 版本感知缓存

  • 添加了 jangu 数据集的复制方法。

  • split_train_test 重构

  • 从数据集中删除过时的转换属性

  • 改编了文档

  • 根据 isort 和 pylint 的建议进行重构

长谷的变化

  • 通过集成梯度添加了 input_attribution 以进行特征重要性分配

  • 按名称为 Janggu 进行绩效评分。评估一些常见指标,包括 ROC、PRC、相关性、解释的方差等。

  • training.log 默认为每个模型存储

  • 添加了 model_from_json、model_from_yaml 包装器

  • inputlayer 装饰器仅在输入 == None 时实例化输入层,这使得在使用嵌套函数时对 inputlayer 的使用限制较少

  • 添加 create_model 方法,直接创建 keras 模型

  • 改编了文档

  • 根据 isort 和 pylint 的建议进行重构

0.8.6 (2019-03-03)

  • 加载 Bioseq 数据集时超出染色体的 ROI 的错误修复。现在,对延伸到序列末端的间隔执行零填充。

0.8.5 (2019-01-09)

  • 更新摘要,添加徽标

  • 实用程序:用于切割床文件区域以避免不必要的舍入效果的 janggutrim 命令行工具。如果检测到舍入问题,则会引发错误。

  • 重新审视缓存机制。数据集的缓存基于确定数据集的 sha256 哈希值。如果数据或某些参数发生变化,文件会自动重新加载。因此,参数覆盖和数据标签变得过时并已被标记为弃用。

  • GenomicArray 的重构访问

  • 添加了 ReduceDim 包装器以将 4D Cover 对象转换为 2D 类表对象。

0.8.4 (2018-12-11)

  • 更新了自述文件中的安装说明

0.8.3 (2018-12-05)

  • 修复了加载 SparseGenomicArray 的问题

  • 使 GenomicIndexer.filter_by_region 意识到侧翼

  • 使用 filter_by_region 修复了部分重叠 ROI 和床文件问题的 BedLoader。

  • 在 setup.py 中调整了分类器、许可证和关键字

  • 固定超链接

0.8.2 (2018-12-04)

  • 零填充功能的错误修复

  • 为 keras 兼容性添加了 ndim

0.8.1 (2018-12-03)

  • GenomicIndexer.create_from_region 中的错误修复

0.8.0 (2018-12-02)

  • 改进的测试覆盖率

  • 改进的 linter 问题

  • 已修复的错误

  • 改进了记分员的文档

  • 删除了得分手和出口商的 kwargs

  • 使出口商适应类

0.7.0 (2018-12-01)

  • 第一个公开版本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

janggu-0.10.2.tar.gz (4.0 MB 查看哈希

已上传 source

内置分布

janggu-0.10.2-py2.py3-none-any.whl (1.3 MB 查看哈希

已上传 py2 py3