Я использую две таблицы, которые описывают одни и те же концепции, но используют разные формулировки в записях, так что во многих случаях существует идеальное взаимно однозначное соответствие.
Можно ли выполнить соединение, используя список слов, которые соответствуют друг другу, но не равны? Например, одна организация использует слово protein
, тогда как NCBI называет эти функции CDS
. NCBI также ссылается на базы данных перекрестных ссылок по неидентичному тексту, UniProtKB
- это их имя, но NCBI использует UniProtKB/Swiss_Prot
.
Table: `gene_ontology`
database entry type go_id
---------- ---------- ---------- ----------
UniProtKB P0A776 gene GO:0016818
UniProtKB P37351 gene GO:0004751
UniProtKB P14375 protein GO:0006351
Table: `NCBI_xref`
database entry type locus_tag
-------------------- ------------ ---------- ------------
UniProtKB/Swiss_Prot P14375 CDS b4004
NCBI ABUW_RS19635 gene ABUW_RS19635
NCBI WP_000271233 CDS ABUW_RS19635
Я бы хотел внутреннее соединение, но очевидно, что есть проблемы с нестандартным неймингом. Нижняя строка в gene_ontology
должна совпадать с верхней строкой из NCBI_xref
. Это связано с тем, что database
и type
соответствуют, а entry
идентичны.
Должна быть возможность сгенерировать список синонимов между ними, но я бы предпочел не изменять или продублируйте данные.