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
每月下载量675次
12KB
124 行
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.h 、ViennaRNA/subopt_zuker.h 和ViennaRNA/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-sys
在 ViennaRNA
上构建。
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