нечеткий поиск / приблизительное сопоставление строк с помощью стандартных инструментов Unix - PullRequest
0 голосов
/ 25 апреля 2018

Я работаю с файлами аннотаций 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 Ответ

0 голосов
/ 25 апреля 2018

Если вы хотите истинный нечеткий поиск, определяемый метриками расстояния строки, проверьте tre-agrep . Для вашего приложения я бы использовал grep с нечувствительным к регистру соответствием и специальными символами точки.

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

будет соответствовать любому символу в месте точек и не будет обращать внимания на регистр, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...