4 个版本
0.2.4 | 2021年2月13日 |
---|---|
0.2.3 | 2019年3月24日 |
0.2.2 | 2019年3月22日 |
0.2.0 | 2019年3月21日 |
在 数据库接口 中排名第 1746
每月下载量 36 次
29KB
559 行
CSV Fish
CSV 分类数据分析器。根据指定的行/列分组条件生成2x2列联表,并应用Fisher精确检验。
安装
如果您不想自己构建程序(请参阅下面的说明),您可以通过Cargo工具获取它。首先 安装Cargo,然后运行
cargo install csv_fish
用法
要使用程序,指向数据、分组规范和所需的输出位置
csv-fish --data data.csv --groups groups.csv --output output.csv
请参阅 示例文件 了解文件内容的相关灵感,并在使用程序之前阅读以下输入/输出规范。
分组 CSV 文件包含在SQLite中执行的SQL查询。不要在您无法信任的输入文件上运行程序。
输入
-
所有CSV输入都应使用分号分隔。
-
数据 CSV -单个样本的分类变量值。
-
第一行是标题 - 数据集中分类变量的名称。每一行后续表示一个样本。
-
每一列代表一个分类变量。
-
每个单元格代表给定样本的给定分类变量的值。
-
在运行任何数据查询之前,所有单元格值都去除了前后空白,以防止意外不匹配。(不要使用前后空白作为数据中意图不同的区分器。)
-
支持每个分类变量超过两个可能的值。
-
-
分组 CSV -选择要测试的组的SQL。
-
第一行是标题,后续行表示组(选择组的条件)。
-
条件是用于选择列联表的行、列,或同时选择行和列。
-
当使用仅行和仅列条件时,程序将每个仅行条件与每个仅列条件(笛卡尔积)组合,以生成行和列条件,然后这些条件被用于生成列联表。
-
当使用行和列条件时,分组 CSV 文件中的每一行都对应一个列联表。
-
可以在单个“组CSV”文件中将行仅条件和列仅条件与行列条件结合起来。
-
请参阅示例文件,它们可能比千言万语的描述更好。
-
-
“组CSV”的标题必须是
condtype;filter;r1cond;r2cond;c1cond;c2cond
-
condtype
- 必需 - 值可以是row
、col
或rowcol
。row
和col
类型用于分别指定行和列的条件,而rowcol
类型则同时指定这些条件。 -
filter
- 可选 - 在执行Fisher精确检验之前,应用于所有数据的初始SQL WHERE条件。可用于在执行任何其他操作之前缩小样本集。- 如果你的数据包含一些分类变量未知(空单元格)的样本,你可能想添加筛选条件,这样使用该变量的查询就不会使用这些样本。 例如,
my_var != ''
。请参阅groups.csv示例。由于filter
是SQL,因此如果需要引用多个列,可以在条件中使用运算符(如AND
)。
- 如果你的数据包含一些分类变量未知(空单元格)的样本,你可能想添加筛选条件,这样使用该变量的查询就不会使用这些样本。 例如,
-
r1cond
- 当condtype
为row
或rowcol
时必需 - 选择第1行的SQL WHERE条件。 -
r2cond
- 可选 - 选择第2行的SQL WHERE条件。如果为空,则使用r1cond
的补码(结果仍受filter
的限制)。 -
c1cond
- 当condtype
为col
或rowcol
时必需 - 选择第1列的SQL WHERE条件。 -
c2cond
- 可选 - 选择第2列的SQL WHERE条件。如果为空,则使用c1cond
的补码(结果仍受filter
的限制)。 -
为了避免
r1cond//r2cond或
c1cond//c2cond之间的样本重叠,建议不要使用空的
r2cond
和c2cond
,并在需要时使用filter
预先选择一个更窄的样本集(例如,跳过具有未知值的样本),然后仅使用r1cond
和c1cond
进行行/列选择,使得第二行/列始终是第一行/列的补码。
输出
-
结果CSV - Fisher精确检验结果。
-
第一行是标题,随后的每一行代表一个Fisher精确检验。
-
标题是
filter;r1cond;r2cond;c1cond;c2cond;r1c1;r1c1;r2c1;r2c2;fisher_l;fisher_r;fisher_2t
-
前5列中的值与输入的“组CSV”中的值相同。
-
r1c1,r1c2,r2c1,r2c2列中的值是列联表中满足相应条件的样本计数。
-
fisher_l,fisher_r,fisher_2t是Fisher精确检验的左侧、右侧和双尾p值。
-
构建
仅在Linux上进行测试。要构建二进制文件
make
要运行所有测试
make test
如果你愿意冒险,也可以为Windows交叉编译程序。这需要podman
。在运行脚本之前,请务必阅读脚本。然后运行它
bash tools/compile-for-windows.sh
许可证
GNU GPL v3+
依赖项
~24MB
~434K SLoC