12个版本

0.2.3 2024年6月26日
0.2.2 2023年10月3日
0.2.1 2023年8月7日
0.2.0 2023年6月12日
0.1.2 2021年5月24日

生物学中排名第77

Download history 1/week @ 2024-05-17 131/week @ 2024-06-21 15/week @ 2024-06-28 1/week @ 2024-07-05

每月下载量675

MIT许可证

12KB
124

DOI

librna-sys

该crate提供了对libRNA/RNAlib/ViennaRNA的低级Rust绑定的支持。

当前状态

librna-sys处于高度实验阶段,并提供了unsafe低级绑定。构建或链接可能不可靠。该crate仅在Linux上进行了测试,但MacOS也应该可以工作。

兼容性

librna-sys ViennaRNA 备注
<=0.1.4 <= 2.4.18 ViennaRNA/pk_plex.h中引入的绑定(自2.4.18版起)未包含
0.1.5 <=2.5.* 未包含对新头文件ViennaRNA/pf_multifold.hViennaRNA/subopt_zuker.hViennaRNA/wrap_dlib.h的绑定
0.1.6-0.1.7 <=2.6.0 见上方
0.2.0 2.6.0 - 2.6.2 添加了自2.4.18至2.6.0版本中引入的新头文件
0.2.1 >=2.6.3 移除了已修复问题的解决方案,该问题已在#189中修复。
>=0.2.2 >=2.6.4 重新添加了在0.2.1版本中被删除的vrna_config.h,作为修复#199中修复的问题的解决方案。

此图表可能不一致且不完整。请报告任何不准确之处。一般来说,仅支持最新的ViennaRNA版本,但如果您尝试使旧版本工作,请告知。从librna-sys@0.2.0版本开始,我旨在与ViennaRNA的新向后不兼容版本同步发布新次要版本。

先决条件

此crate需要静态库(Linux和MacOS上的libRNA.a)以及C头文件。

配置

使用环境变量

librna-sys 提供了两个环境变量,以便在自定义目录中安装 ViennaRNA 时使用。使用方法如下

export LIBRNA_INCLUDE_DIR=/path/to/headerdirectory # default: /usr/include
export LIBRNA_LIB_DIR=/path/to/librarydirectory # default: /usr/lib

之后,可以将该包作为 Cargo.toml 中的依赖项使用。

[dependencies]
librna-sys = "0.2"

使用 pkg-config

如果您的系统上安装了 pkg-config 并且 ViennaRNA 已正确安装

[dependencies]
librna-sys = { version = "0.2" , features = ["auto"] }

则可以使用它来代替设置环境变量。

用法

请参阅 C API 的原始文档。在大多数情况下,您可能希望使用官方的 Python 绑定。

仅当某些 C API 的功能尚未作为 Python 绑定公开,并且您出于某种原因更喜欢用 不安全Rust 而不是 C 编写时,才使用此包。

示例:扩展 ViennaRNA

注意:自版本 2.5.0 开始,ViennaRNA 支持带有假结的碱基对距离。

此示例旨在说明如何使用 librna-sysViennaRNA 上构建。

examples/bpdist.rs 扩展了 ViennaRNA 的碱基对距离,以支持具有假结的二级结构。通过运行以下命令构建此示例

cargo build --release --example bpdist #--features auto

生成一个动态库 target/release/examples/libbpdist.so,其中公开了 Python 绑定。将其复制到您想要的位置,并按如下方式导入

from libbpdist import bp_distance_pk

structures = [".((..[[[..))..]]].", ".((.[.[[..))..]]]."]
print(bp_distance_pk(structures[0], structures[1]))

贡献

我欢迎任何想法或建议。目前,还不清楚这将走向何方,但以下是一些想法

  • 提供完整的 安全 绑定到 ViennaRNA 可能与在 Rust 中完全重写一样复杂。
  • 也许一个单独的包可以作为扩展 ViennaRNA安全 API 的中央集合。

已知问题

如果您遇到包含错误的消息,包括使用 X.Y.0 而不是预期的 Y.Z.0 生成的 LTO 版本,您可以自己重新编译 ViennaRNA降级您的 Rust 工具链。调整一些与链接器相关的代码生成选项也可能有所帮助,但尚未彻底测试。

依赖项

~0–1.9MB
~37K SLoC