1 个不稳定版本
0.1.0 | 2023 年 6 月 10 日 |
---|
#291 in 科学
40KB
696 行
schoenerd
Schoener 的 D 指数计算器,用于物种重叠的生态位。
D_{ij} = 1 - \frac{1}{2} \sum_{k = 1}^{S} \left\lvert P_{ik} - P_{jk} \right\rvert
schoenerd
是一个 CLI 程序,旨在通过利用共同资源来计算物种对之间的 Schoener 的 D 指数。
安装
从源码构建[^2]
以下构建说明从 git master
分支编译并安装 schoenerd
。它们假定系统上已安装 Rust stable
工具链(或任何版本 >= 1.70.0
),以及 just
命令运行器。
git clone https://github.com/marcoradocchia/schoenerd
cd schoenerd
just build
sudo just install
默认情况下,安装前缀设置为 /usr/local
。要使用不同的安装前缀,请通过 PREFIX
环境变量指定它,如下所示: PREFIX=<prefix> sudo just install
,其中 <prefix>
是所需路径的占位符。
注意:
justfile
中的install
脚本是 Linux 专用,在其他平台不可用。要在非 Linux 平台上安装schoenerd
,需要手动安装构建工件(二进制文件、补全脚本、手册页等)。
GitHub 版本
最新版本的预编译二进制文件[^4]、shell 补全脚本[^5]和手册页均可在 GitHub 版本中找到。
Cargo
使用 Rust 的 cargo
包管理器在任何平台上(Linux、Windows、macOS 等)都可以安装。
注意:
cargo
将schoenerd
二进制文件安装到$CARGO_HOME/bin
,但会忽略 shell 完整性和 man 页。如果您需要其中任何一个,请考虑使用其他安装选项。
主分支
从 git 主分支在任何平台上使用 cargo
构建 和 安装
cargo install --git https://github.com/marcoradocchia/schoenerd --branch master
crates.io
在任何平台上使用 cargo
从最新版本构建 和 安装
cargo install schoenerd
Arch 用户仓库
对于 Arch Linux 用户,软件包可在 Arch User Repository 中找到
schoenerd
:从源代码,从最新版本构建;schoenerd-bin
:最新版本的预编译二进制文件[^4];schoenerd-git
:从源代码,从 git 主分支构建。
警告:
schoenerd
、schoenerd-bin
和schoenerd-git
AUR 软件包互斥且相互冲突。
您可以使用 AUR 辅助工具安装上述软件包之一,例如 yay
yay -S schoenerd-bin # or `schoenerd`, or `schoenerd-git`
或 paru
paru -S schoenerd-bin # or `schoenerd`, or `schoenerd-git`
用法
schoenerd
可以接受来自 stdin 或输入文件(使用 -i/--input
选项)的输入数据,并将输出数据输出到 stdout 或输出文件(使用 -o/--output
选项)。这使得 schoenerd
可以作为独立程序使用,也可以在 UNIX 管道中使用,这使得它非常适合与其他程序或脚本一起使用。
输入格式
输入数据必须格式化为一个 Comma Separated Value 表格。以下数据表为例
Bombus lapidarius | Bombus mesomelas | Bombus pascuorum | Bombus pratorum | |
---|---|---|---|---|
Carduus chrysacanthus | 0 | 0 | 0 | 1 |
Carlina acaulis | 0 | 0 | 1 | 0 |
Stachys germanica | 18 | 5 | 14 | 134 |
Trifolium pratense | 0 | 1 | 0 | 1 |
Trifolium repens | 0 | 4 | 0 | 6 |
Oxytropis campestris | 3 | 153 | 0 | 53 |
如果想要计算每个传粉者的 Schoener's D 指数,表格的列标题应包含每个传粉物种,而行标题应包含表示可用资源的每个植物物种。每个交点单元格必须表示每个植物/传粉者对之间的非负整数值(例如,访问次数)。
schoenerd
需要这样的表格以 CSV 格式序列化,如下所示
,Bombus pratorum,Bombus lapidarius,Bombus mesomelas,Bombus pascuorum
Carduus chrysacanthus,1,0,0,0
Carlina acaulis,0,0,0,1
Stachys germanica,134,18,5,14
Trifolium pratense,1,0,1,0
Trifolium repens,6,0,4,0
Oxytropis campestris,53,3,153,0
输出格式
默认情况下,schoenerd
生成如下所示的 CSV 格式输出
FIRST SPECIES,SECOND SPECIES,D INDEX
Bombus pratorum,Bombus lapidarius,0.8300366300366301
Bombus pratorum,Bombus mesomelas,0.3321378008494573
Bombus pratorum,Bombus pascuorum,0.6871794871794872
Bombus lapidarius,Bombus mesomelas,0.17353198948290982
Bombus lapidarius,Bombus pascuorum,0.8571428571428571
Bombus mesomelas,Bombus pascuorum,0.030674846625766916
输出数据的每条记录(行)包含三个由 CSV 标题描述的字段:前两个字段包含第三字段中报告 D 指数的两个传粉物种。
美化表格
使用 -p/--pretty-table
标志,输出格式化为表格以快速可视化数据。使用相同的输入,生成的结果是以下表格的 ASCII 版本
第一物种 | 第二物种 | D 指数 |
---|---|---|
Bombus pratorum | Bombus lapidarius | 0.8300366300366301 |
Bombus pratorum | Bombus mesomelas | 0.3321378008494573 |
Bombus pratorum | Bombus pascuorum | 0.6871794871794872 |
Bombus lapidarius | Bombus mesomelas | 0.17353198948290982 |
Bombus lapidarius | Bombus pascuorum | 0.8571428571428571 |
Bombus mesomelas | Bombus pascuorum | 0.030674846625766916 |
帮助
schoenerd -h
的输出如下
schoenerd v0.1.0 - Marco Radocchia <marco.radocchia@outlook.com>, Gaia Di Francescantonio <gaiadfa@virgilio.it>
Schoener's D index calculator for niche overlap.
Usage:
schoenerd [OPTIONS]
Options:
-i, --input <FILE>
Input CSV file path
-f, --input-field-delimiter <CHAR>
Input CSV field delimiter
-t, --input-record-terminator <CHAR>
Input CSV record terminator
-c, --input-quote-character <CHAR>
Input CSV quote character
-o, --output <FILE>
Output CSV file path
-F, --output-field-delimiter <CHAR>
Output CSV field delimiter
-T, --output-record-terminator <CHAR>
Output CSV record terminator
-C, --output-quote-character <CHAR>
Output CSV quote character
-n, --disable-output-headers
Disable output headers
-s, --sort <DIRECTION>
Sort output by D index value [possible values: descending, ascending]
-p, --pretty-table
Display output as a pretty table on stdout
-h, --help
Print help (see more with '--help')
-V, --version
Print version
许可
此项目根据 GPLv3 许可。
参考文献[^1]:Schoener, T.W. (1968) Bimini的Anolis蜥蜴:复杂群落中的资源分配。生态学,49,704–726。[^2]:代码schoenerd
在所有平台(Linux、Windows、macOs、……)上均可编译,只要正确安装了rust
和just
,然而justfile
中的安装说明目前仅适用于Linux。[^3]:[使用rustup
安装](https://rust-lang.net.cn/tools/install)。[^4]:目前仅支持x86_64-linux-gnu
。[^5]:目前支持zsh
、bash
和fish
。
依赖项
~3–12MB
~106K SLoC