【问题标题】:fuzzy search / approximate string matching with standard unix tools使用标准 unix 工具进行模糊搜索/近似字符串匹配
【发布时间】:2018-10-06 01:46:38
【问题描述】:

我正在使用 prokka 注释文件,这些文件为我提供了 uniprot 数据库中发现的基因的蛋白质产物。不幸的是,许多基因与多个非常相似的产品名称相关联,例如

1%2C2-phenylacetyl-CoA epoxidase%2C subunit A
1%2C2 phenylacetyl-CoA epoxidase%2C subunit A
1%2C2-phenylacetyl CoA epoxidase%2C subunit A
1%2C2-Phenylacetyl CoA Epoxidase%2C subunit A

而这些变体实际上是不同的产品

1%2C2-phenylacetyl-CoA epoxidase%2C subunit A
1%2C2-phenylacetyl-CoA epoxidase%2C subunit B
1%2C2-phenylacetyl-CoA epoxidase%2C subunit C
1%2C2-phenylacetyl-CoA epoxidase%2C subunit E

为了避免在将我的基因映射到它们各自的产品时遇到麻烦,我决定用“@”替换所有可能的歧义和有问题的字符,例如“-”、“/”,并将所有字符串都小写。

但是有没有办法搜索例如对于

1%2C2-Phenylacetyl CoA Epoxidase%2C subunit A

是否包括与标准 unix 工具(如 grep)密切相关的条目?到目前为止我找不到答案。

【问题讨论】:

  • 你的意思是说1%2C2-Phenylacetyl CoA Epoxidase%2C subunit A和1%2C2-phenylacetyl CoA epoxidase%2C subunit A不一样?
  • 您的要求是完全匹配文件中的字符串1%2C2-Phenylacetyl CoA Epoxidase%2C subunit A吗?
  • 第一组4个名称代表同一个产品,但存入数据库略有不同。后4个名字实际上是不同的。我想使用例如前 4 个字符串之一也可以找到其他 3 个版本。希望这会有所帮助

标签: string bash unix fuzzy-search approximate


【解决方案1】:

如果您想要真正的模糊搜索,由字符串距离指标定义,请查看tre-agrep。 对于您的应用程序,我会使用不区分大小写的匹配和句点特殊字符的 grep。

grep -i "1.2C2.phenylacetyl.CoA.epoxidase.2C subunit A" drugNames.txt

会在句点的位置匹配任何字符,并且不区分大小写,这是你想要的。

【讨论】:

  • 谢谢,我想我会研究一下 tre-agrep,因为对于不同的查询,我总是需要知道是否可能存在模棱两可的字符
猜你喜欢
  • 1970-01-01
  • 2015-11-27
  • 2014-12-30
  • 2023-03-23
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
相关资源
最近更新 更多