用于帮助应用专家规则到sonobat输出的实用程序
项目描述
Echoclean
Echoclean是一个实用程序,用于帮助将专家规则应用到sonobat输出。然而,该程序旨在非常通用,可能适用于其他生成类似电子表格输出的自动分类器的输出。
依赖关系
- openpyxl (版本 2.5.14,不得更新!)
- click
安装
pip install echoclean
开发安装
下载或克隆此存储库,然后运行
python setup.py install
使用方法
从命令行,在您的激活Python环境中
Usage: echoclean apply [OPTIONS] RULES DATA OUTPUT
Apply the rules to the input data.
Options:
-v, --verbose Verbose output
--help Show this message and exit.
详细选项可以重复两次-v -v
以提供更多详细输出。
工作原理
Echoclean通过将RULES文件中的专家规则应用到DATA文件中工作。文件可以是XLSX、CSV或制表符分隔的。如果找到XLSX文件和多个工作表,您将被提示选择正确的工作表。
程序首先比较DATA和RULES文件之间的列。存在于两个文件中的任何列都用于构建规则。在将规则应用到DATA的行时,仅存在于RULE文件中的任何列都用作结果集。DATA文件中未在规则中找到的任何列都复制到OUTPUT中。这种灵活性允许您为几乎任何可以用行/列格式表示的简单数据开发规则。
注意:如果您将此程序的输出再次作为DATA运行,您必须重命名结果集的列,否则它们将被用作条件并产生意外结果。
此程序不关心您如何命名列,但对于DATA中的某一列,规则必须完全相同(包括大小写)。此程序不期望任何特定的列,但如果它找到名为'Filename'的列,它将尝试使用Sonobat格式解析日期戳。然后使用这些日期戳来确定文件录制的夜晚,任何中午之前的时间都被假定为前一个夜晚的一部分。
规则按顺序应用,按照从文件中读取的顺序。
输出文件始终是一个包含多个工作表的XLSX电子表格。一个工作表包含分类结果,即DATA文件中的每一行,前面是用于分类该行的RULES文件的结果集。对于结果集中的每一列,都会创建一个额外的工作表,其中包含在分类结果中找到的每个唯一结果值的行数。
规则
规则是一组必须满足的条件,才能应用该规则。一旦应用规则,就不再测试其他规则。
可以将规则视为形成二分法关键;当DATA中的一行未通过给定规则时,它将与其进行下一规则的测试,因此不符合先前的任何规则。因此,您的规则可以是累加的,因为您可以安全地假设该行未满足任何先前条件,您应该从最严格到最不严格地构建您的规则。
示例
给定以下规则
规则1 Consensus: 'ANPA'
规则2 Consensus: 'MYLU'
这些规则将按如下方式评估:任何与规则2进行测试的DATA中的行都隐式地不是规则1中的任何标准。因此,在这种情况下,它等同于
Consensus是 'MYLU' 且不是 'ANPA'
.
我们建议您为规则编号以帮助调试。这样做可以更容易地直观比较给定行中的值与应用或期望的规则。
注意:此程序不会检查您的规则的有效性。您负责确保您的规则在逻辑上是正确的,并且顺序正确。
标准
标准必须与列的数据类型匹配。范围或相等比较仅适用于数值类型。
任何 如果在给定规则中为列留空,则允许数据中的该列具有任何值以匹配。您也可以提供值'任何',但这是不必要的。
空白 如果您在给定规则中指定'空白',则该列必须在数据中为空白才能匹配。
数值类型 您可以指定这样的相等比较
> 10
< 12
>= 40
<= 20
= 2
4 - 10 (equivalent to >= 4 AND <= 10)
文本类型 您可以指定要比较的可能值的列表。数据中的行只需包含其中之一。
示例
规则1 Consensus: LANO, COTO, TABR, LACI, 或空白
将匹配COTO
,但不会匹配EPFU
。这也是一个特殊情况,空白可以匹配,但列表中未列出的任何值都会失败。
您还可以使用否定条件,但只能允许一个值
Consensus: Not EPFU
项目详情
echoclean-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6df8960583a58334bbc2921b52974fcc558edf7ce7232035ffe821bc6c76338 |
|
MD5 | b894baba8d55f9736251e0f913f7aa13 |
|
BLAKE2b-256 | 3bb8a643ac5a61b7eaa6a3ce1695428e59a21c5bd54a390d464842d9da331885 |