【问题标题】:NLM UMLS MRREL is broken / incompleteNLM UMLS MRREL 损坏/不完整
【发布时间】:2021-10-15 10:42:18
【问题描述】:

几十年来,我一直在使用统一医学语言系统 (UMLS)。但几年来(自 2017 年以来)我已经意识到 MRREL 表存在严重缺陷。我想知道这怎么可能?

我有很多例子,但我只是让它变得非常简单。 ATC 代码是一个简单的树。其中有一个顶级类别“G”(CUI:C3653431)和另一个“C”(CUI:C3540036)。

为了确保我不会因为将过程导入关系数据库而丢失任何东西,我正在检查来自 UMLS 分发的原始文件:

(  unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.aa.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ab.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ac.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ad.gz |zcat ; 
) |egrep 'C3540036|C3653431'

这是我得到的:

|||PAR|C3540036|A22726695||inverse_isa|R162880348||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162896206||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162888235||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162884662||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162904098||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162892260||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162895918||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162895969||||||N||
|||PAR|C3540036|A22726695||inverse_isa|R162884408||||||N||
|||CHD|C3540036|A22726695||isa|R162905548||||||N||
|||CHD|C3653431|A22724193||isa|R145149031||||||N||
C3540036|A22726695|AUI|CHD|C0001645|A22729715|AUI|isa|R162894118||ATC||||N||
C3653431|A22724193|AUI|CHD|C3653561|A22721518|AUI|isa|R145152424||ATC||||N||
|||PAR|C3653431|A22724193||inverse_isa|R145147348||||||N||
|||PAR|C3653431|A22724193||inverse_isa|R145150236||||||N||
|||PAR|C3653431|A22724193||inverse_isa|R145153001||||||N||
|||PAR|C3653431|A22724193||inverse_isa|R162904046||||||N||

为什么每个顶级 ATC 类别只有一个链接?

  • CUI:C0001645 是 ATC C07 - BETA 阻断剂
  • CUI:C3653561 是 ATC G03 - 生殖系统的性激素和调节剂

但是C06、C05(CUI:C0304533)、G02(CUI:C3653939)等在哪里?

让我们反过来搜索:

(  unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.aa.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ab.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ac.gz |zcat ;
   unzip -p 2021AA-full/2021aa-2-meta.nlm 2021AA/META/MRREL.RRF.ad.gz |zcat ; 
) |egrep 'C0001645|C0304533|C3653561|C3653939' \
|fgrep '|ATC|' 

这一次我从源 ATC 中过滤掉除了 MRREL 之外的所有内容。首先是 C07 的 C07AA 子

C0001645|A22726519|AUI|CHD|C0304515|A22728404|AUI|isa|R145146143||ATC||||N||
C0001645|A22729715|AUI|CHD|C0001645|A22726519|AUI|isa|R162909942||ATC||||N||

看上面竟然有一个循环! C07 的所有其他孩子都在哪里。无处。 C07 唯一的另一行是我们已经拥有的到 C 的链接。

C3540036|A22726695|AUI|CHD|C0001645|A22729715|AUI|isa|R162894118||ATC||||N||

C05 呢?只有一个子 C05B,但没有指向 C 或任何其他子的父链接!

C0304533|A22730499|AUI|CHD|C0360720|A22722089|AUI|isa|R162902080||ATC||||N||

现在这里是 G02 及其 3 个(当然更多)孩子:

C3653939|A22723315|AUI|CHD|C3653712|A22724891|AUI|isa|R162905420||ATC||||N||
C3653939|A22731353|AUI|CHD|C3653306|A22721882|AUI|isa|R162890442||ATC||||N||
C3653939|A22722139|AUI|CHD|C0164398|A22725073|AUI|member_of|R162897807||ATC||||N||

然后我们有反向链接,实际上并非来自 ATC,这些概念来自 SNOMED 和其他来源:

C0164398|A22725073|AUI|PAR|C3653939|A22722139|AUI|has_member|R162896052||ATC||||N||
C0754280|A26456152|AUI|PAR|C3653939|A22722139|AUI|has_member|R171341743||ATC||||N||
C1721339|A32510681|AUI|PAR|C3653939|A22722139|AUI|has_member|R202594180||ATC||||N||
C3652943|A22728555|AUI|PAR|C3653939|A22722139|AUI|has_member|R162895991||ATC||||N||
C3652944|A22730286|AUI|PAR|C3653939|A22722139|AUI|has_member|R162884649||ATC||||N||

这里是 G 到 G03

C3653431|A22724193|AUI|CHD|C3653561|A22721518|AUI|isa|R145152424||ATC||||N||

这里也不是 ATC 链接,目标在 SNOMED 和其他来源中,但不在 ATC 中:

C3653561|A22721518|AUI|CHD|C0002844|A22722789|AUI|isa|R145149338||ATC||||N||

所以这是完全随机的。

我记得几十年前的 MRREL 对于所有关系都有两个方向是非常多余的。但不再是了。这是怎么回事?

【问题讨论】:

    标签: terminology medical


    【解决方案1】:

    我有同样的问题。感谢您的自动回复!

    我想确保他们用以前的项目填充空项目,是的,他们这样做了。 例如,这是解析 MRREL 的代码摘录:

    (文件第 2865-2891 行:gov.nih.nlm.umls.meta/src/gov/nih/nlm/umls/meta/io/RRFConceptInputStream.java)

            //
            // Process matching line
            //
            else if (line.startsWith(concept.getUi())
                    || (prevCui != null && line.startsWith("|") && prevCui.equals(concept
                            .getUi()))) {
    
                //
                // Parse line and count fields
                // CUI1,AUI1,STYPE1,REL,CUI2,AUI2,STYPE2,RELA,RUI,SRUI,SAB,SL,RG,DIR,SUPPRESS,CVF
                //
                String[] tokens = FieldedStringTokenizer.split(line, "|", 17);
    
                // Set blank fields based on prev values.
                if (tokens[0].equals("")) {
                    tokens[0] = prevCui;
                    tokens[1] = prevAui;
                    tokens[2] = prevStype1;
                    tokens[6] = prevStype2;
                    tokens[10] = prevSab;
                } else {
                    prevCui = tokens[0];
                    prevAui = tokens[1];
                    prevStype1 = tokens[2];
                    prevStype2 = tokens[6];
                    prevSab = tokens[10];
                } 
    

    【讨论】:

    • 有趣的是,它是如何具体实施的。通常只需几行代码就可以完成: String[] tokens = line.split("|"); if(line.startsWith(currentPrefix)) for(int i = 1; i
    【解决方案2】:

    我已向 NLM 发送了一份问题报告,他们回复说 UMLS-Full.zip 中的文件,以 .nlm 结尾的文件,也包含 UMLS 数据表,不知何故不完整,需要他们的 MetamorphoSys 程序组装正确的文件。

    他们似乎在行中进行了一些数据压缩(无论出于何种原因),这样他们可以将 MRREL 文件的大小减少大约 20%。

    • 来自 metathesaurus 分布的 MRREL.RRF 5,137,657,601 字节

    • UMLS-Full .nlm 文件中的 MRREL.RRF 3,662,797,614 字节

      $ 头 MRREL.RRF.met C0000005|A13433185|SCUI|RB|C0036775|A7466261|SCUI||R86000559||MSHFRE|MSHFRE|||N|| C0000005|A26634265|SCUI|RB|C0036775|A0115649|SCUI||R31979041||MSH|MSH|||N|| C0000039|A0016515|AUI|SY|C0000039|A11754881|AUI|translation_of|R101808683||MSHSWE|MSHSWE|||N|| C0000039|A0016515|AUI|SY|C0000039|A12080359|AUI|sort_version_of|R64565540||MSH|MSH|||N|| C0000039|A0016515|AUI|SY|C0000039|A12091182|AUI|entry_version_of|R64592881||MSH|MSH|||N|| C0000039|A0016515|AUI|SY|C0000039|A13042554|AUI|translation_of|R193408122||MSHCZE|MSHCZE|||N|| C0000039|A0016515|AUI|SY|C0000039|A13096036|AUI|translation_of|R73331672||MSHPOR|MSHPOR|||N|| C0000039|A0016515|AUI|SY|C0000039|A1317708|AUI|permuted_term_of|R28482432||MSH|MSH|||N|| C0000039|A0016515|AUI|SY|C0000039|A18972171|AUI|translation_of|R124061564||MSHPOL|MSHPOL|||N|| C0000039|A0016515|AUI|SY|C0000039|A28315139|AUI||R173174221||RXNORM|RXNORM|||N||

      $ 头 MRREL.RRF.nlm C0000005|A13433185|SCUI|RB|C0036775|A7466261|SCUI||R86000559||MSHFRE||||N|| C0000005|A26634265|SCUI|RB|C0036775|A0115649|SCUI||R31979041||MSH||||N|| C0000039|A0016515|AUI|SY|C0000039|A11754881|AUI|translation_of|R101808683||MSHSWE||||N|| C0000039|A0016515|AUI|SY|C0000039|A12080359|AUI|sort_version_of|R64565540||MSH||||N|| |||SY|C0000039|A12091182||entry_version_of|R64592881||||||N|| C0000039|A0016515|AUI|SY|C0000039|A13042554|AUI|translation_of|R193408122||MSHCZE||||N|| C0000039|A0016515|AUI|SY|C0000039|A13096036|AUI|translation_of|R73331672||MSHPOR||||N|| C0000039|A0016515|AUI|SY|C0000039|A1317708|AUI|permuted_term_of|R28482432||MSH||||N|| C0000039|A0016515|AUI|SY|C0000039|A18972171|AUI|translation_of|R124061564||MSHPOL||||N|| C0000039|A0016515|AUI|SY|C0000039|A28315139|AUI||R173174221||RXNORM||||N||

    您可以通过将前面的列复制到空列中来查看如何从第 4 行生成第 5 行。

    这似乎是个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多