You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ctakes.apache.org by "Miller, Timothy" <Ti...@childrens.harvard.edu> on 2016/01/26 20:59:25 UTC

umls graph api

I've been working on some code for easy querying of the UMLS relation
graph that I think might be useful in ctakes. The repo is here:
https://github.com/tmills/umls-graph-api

If you point it at your umls download you can build the db in about 5
minutes (45 MB). Then the API has a class GraphFunctions with the
following methods:

  public static List<String> getHypernyms(String cui);
  public static List<String> getHyponyms(String cui);
  public static boolean isa(String cui1, String cui2);

These make use of just the "isa" relation in the MRREL file, and could
tell you, for example, that

isa("C0007102",  "C3662248") is true (colon cancer is a finding)
but that
isa("C3662248", "C0007102") is not true.

If people find it useful enough we may wish to add it to ctakes and
perhaps we could redistribute this view of the UMLS subject to the same
username checking we do now for the dictionary. We may wish to include
other relations and ontologies as well -- right now just SNOMED. But
this is the skeleton and I think with this starting point adding new
capabilities will be pretty easy.

Tim


RE: umls graph api

Posted by "Finan, Sean" <Se...@childrens.harvard.edu>.
Very cool, thanks Tim

-----Original Message-----
From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
Sent: Tuesday, January 26, 2016 2:59 PM
To: dev@ctakes.apache.org
Subject: umls graph api

I've been working on some code for easy querying of the UMLS relation
graph that I think might be useful in ctakes. The repo is here:
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmills_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=fs67GvlGZstTpyIisCYNYmQCP6r0bcpKGd4f7d4gTao&m=Nhcsz3GtrcQR0eMVCOiN6D4EV4bNJLT8aCIjiX0A5Jw&s=-qCcjEC3A1say2LAZQ59sjZRQZGOyqthGVvuOaX3IHY&e= 

If you point it at your umls download you can build the db in about 5
minutes (45 MB). Then the API has a class GraphFunctions with the
following methods:

  public static List<String> getHypernyms(String cui);
  public static List<String> getHyponyms(String cui);
  public static boolean isa(String cui1, String cui2);

These make use of just the "isa" relation in the MRREL file, and could
tell you, for example, that

isa("C0007102",  "C3662248") is true (colon cancer is a finding)
but that
isa("C3662248", "C0007102") is not true.

If people find it useful enough we may wish to add it to ctakes and
perhaps we could redistribute this view of the UMLS subject to the same
username checking we do now for the dictionary. We may wish to include
other relations and ontologies as well -- right now just SNOMED. But
this is the skeleton and I think with this starting point adding new
capabilities will be pretty easy.

Tim


RE: umls graph api

Posted by "Geise, Brandon D." <bd...@geisinger.edu>.
That's the other weird thing.  I don't see that either.  Let me try to build the graph again.

-----Original Message-----
From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
Sent: Friday, January 29, 2016 1:16 PM
To: dev@ctakes.apache.org
Subject: Re: umls graph api

I don't have 2015AA downloaded but I'll try to get it and see if I can reproduce. Before the test fails, do you see output from the other tests
like:

Ancestor (hypernym) is: C1304819
Ancestor (hypernym) is: C0346629
Ancestor (hypernym) is: C0009375
Ancestor (hypernym) is: C0009373
Ancestor (hypernym) is: C0006826
... (many more lines like this)

If so, it could be that it is indexing correctly but my test is 2015AB specific somehow.

Tim


On 01/29/2016 01:12 PM, Geise, Brandon D. wrote:
> java.lang.AssertionError
> 	at org.junit.Assert.fail(Assert.java:92)
> 	at org.junit.Assert.assertTrue(Assert.java:43)
> 	at org.junit.Assert.assertTrue(Assert.java:54)
> 	at TestGraphFunctions.testHypernyms(TestGraphFunctions.java:38)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
> 	at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTest
> Runner.java:192)
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
> Sent: Friday, January 29, 2016 1:09 PM
> To: dev@ctakes.apache.org
> Subject: Re: umls graph api
>
> I was using 2015AB. Can you copy/paste the error trace that junit gives you?
> Thanks
> Tim
>
>
> On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
>> Very cool.
>>
>> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>>
>> Thanks,
>> Brandon
>>
>> -----Original Message-----
>> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
>> Sent: Tuesday, January 26, 2016 2:59 PM
>> To: dev@ctakes.apache.org
>> Subject: umls graph api
>>
>> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmill
>> s_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCo
>> ppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6
>> 674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI
>> 06-lORddJf83jmbb_I-MwkC_3Zg&e=
>>
>> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>>
>>   public static List<String> getHypernyms(String cui);
>>   public static List<String> getHyponyms(String cui);
>>   public static boolean isa(String cui1, String cui2);
>>
>> These make use of just the "isa" relation in the MRREL file, and 
>> could tell you, for example, that
>>
>> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>>
>> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>>
>> Tim
>>
>>
>>
>> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>>
>> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>>
>
>



Re: umls graph api

Posted by "Miller, Timothy" <Ti...@childrens.harvard.edu>.
No problem, glad you got it working and glad to hear someone is trying
it out.
Tim


On 01/29/2016 01:35 PM, Geise, Brandon D. wrote:
> Sorry for the trouble.  I rebuilt the graph database and it seems to pass the Junit test now.
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
> Sent: Friday, January 29, 2016 1:16 PM
> To: dev@ctakes.apache.org
> Subject: Re: umls graph api
>
> I don't have 2015AA downloaded but I'll try to get it and see if I can reproduce. Before the test fails, do you see output from the other tests
> like:
>
> Ancestor (hypernym) is: C1304819
> Ancestor (hypernym) is: C0346629
> Ancestor (hypernym) is: C0009375
> Ancestor (hypernym) is: C0009373
> Ancestor (hypernym) is: C0006826
> ... (many more lines like this)
>
> If so, it could be that it is indexing correctly but my test is 2015AB specific somehow.
>
> Tim
>
>
> On 01/29/2016 01:12 PM, Geise, Brandon D. wrote:
>> java.lang.AssertionError
>> 	at org.junit.Assert.fail(Assert.java:92)
>> 	at org.junit.Assert.assertTrue(Assert.java:43)
>> 	at org.junit.Assert.assertTrue(Assert.java:54)
>> 	at TestGraphFunctions.testHypernyms(TestGraphFunctions.java:38)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> 	at java.lang.reflect.Method.invoke(Unknown Source)
>> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
>> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
>> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
>> 	at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTest
>> Runner.java:192)
>>
>> -----Original Message-----
>> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
>> Sent: Friday, January 29, 2016 1:09 PM
>> To: dev@ctakes.apache.org
>> Subject: Re: umls graph api
>>
>> I was using 2015AB. Can you copy/paste the error trace that junit gives you?
>> Thanks
>> Tim
>>
>>
>> On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
>>> Very cool.
>>>
>>> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>>>
>>> Thanks,
>>> Brandon
>>>
>>> -----Original Message-----
>>> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
>>> Sent: Tuesday, January 26, 2016 2:59 PM
>>> To: dev@ctakes.apache.org
>>> Subject: umls graph api
>>>
>>> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmill
>>> s_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCo
>>> ppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6
>>> 674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI
>>> 06-lORddJf83jmbb_I-MwkC_3Zg&e=
>>>
>>> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>>>
>>>   public static List<String> getHypernyms(String cui);
>>>   public static List<String> getHyponyms(String cui);
>>>   public static boolean isa(String cui1, String cui2);
>>>
>>> These make use of just the "isa" relation in the MRREL file, and 
>>> could tell you, for example, that
>>>
>>> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>>>
>>> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>>>
>>> Tim
>>>
>>>
>>>
>>> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>>>
>>> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>>>
>>
>
>


RE: umls graph api

Posted by "Geise, Brandon D." <bd...@geisinger.edu>.
Sorry for the trouble.  I rebuilt the graph database and it seems to pass the Junit test now.

-----Original Message-----
From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
Sent: Friday, January 29, 2016 1:16 PM
To: dev@ctakes.apache.org
Subject: Re: umls graph api

I don't have 2015AA downloaded but I'll try to get it and see if I can reproduce. Before the test fails, do you see output from the other tests
like:

Ancestor (hypernym) is: C1304819
Ancestor (hypernym) is: C0346629
Ancestor (hypernym) is: C0009375
Ancestor (hypernym) is: C0009373
Ancestor (hypernym) is: C0006826
... (many more lines like this)

If so, it could be that it is indexing correctly but my test is 2015AB specific somehow.

Tim


On 01/29/2016 01:12 PM, Geise, Brandon D. wrote:
> java.lang.AssertionError
> 	at org.junit.Assert.fail(Assert.java:92)
> 	at org.junit.Assert.assertTrue(Assert.java:43)
> 	at org.junit.Assert.assertTrue(Assert.java:54)
> 	at TestGraphFunctions.testHypernyms(TestGraphFunctions.java:38)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
> 	at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTest
> Runner.java:192)
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
> Sent: Friday, January 29, 2016 1:09 PM
> To: dev@ctakes.apache.org
> Subject: Re: umls graph api
>
> I was using 2015AB. Can you copy/paste the error trace that junit gives you?
> Thanks
> Tim
>
>
> On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
>> Very cool.
>>
>> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>>
>> Thanks,
>> Brandon
>>
>> -----Original Message-----
>> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu]
>> Sent: Tuesday, January 26, 2016 2:59 PM
>> To: dev@ctakes.apache.org
>> Subject: umls graph api
>>
>> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmill
>> s_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCo
>> ppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6
>> 674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI
>> 06-lORddJf83jmbb_I-MwkC_3Zg&e=
>>
>> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>>
>>   public static List<String> getHypernyms(String cui);
>>   public static List<String> getHyponyms(String cui);
>>   public static boolean isa(String cui1, String cui2);
>>
>> These make use of just the "isa" relation in the MRREL file, and 
>> could tell you, for example, that
>>
>> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>>
>> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>>
>> Tim
>>
>>
>>
>> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>>
>> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>>
>
>



Re: umls graph api

Posted by "Miller, Timothy" <Ti...@childrens.harvard.edu>.
I don't have 2015AA downloaded but I'll try to get it and see if I can
reproduce. Before the test fails, do you see output from the other tests
like:

Ancestor (hypernym) is: C1304819
Ancestor (hypernym) is: C0346629
Ancestor (hypernym) is: C0009375
Ancestor (hypernym) is: C0009373
Ancestor (hypernym) is: C0006826
... (many more lines like this)

If so, it could be that it is indexing correctly but my test is 2015AB
specific somehow.

Tim


On 01/29/2016 01:12 PM, Geise, Brandon D. wrote:
> java.lang.AssertionError
> 	at org.junit.Assert.fail(Assert.java:92)
> 	at org.junit.Assert.assertTrue(Assert.java:43)
> 	at org.junit.Assert.assertTrue(Assert.java:54)
> 	at TestGraphFunctions.testHypernyms(TestGraphFunctions.java:38)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
> Sent: Friday, January 29, 2016 1:09 PM
> To: dev@ctakes.apache.org
> Subject: Re: umls graph api
>
> I was using 2015AB. Can you copy/paste the error trace that junit gives you?
> Thanks
> Tim
>
>
> On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
>> Very cool.
>>
>> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>>
>> Thanks,
>> Brandon
>>
>> -----Original Message-----
>> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
>> Sent: Tuesday, January 26, 2016 2:59 PM
>> To: dev@ctakes.apache.org
>> Subject: umls graph api
>>
>> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmills_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI06-lORddJf83jmbb_I-MwkC_3Zg&e= 
>>
>> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>>
>>   public static List<String> getHypernyms(String cui);
>>   public static List<String> getHyponyms(String cui);
>>   public static boolean isa(String cui1, String cui2);
>>
>> These make use of just the "isa" relation in the MRREL file, and could tell you, for example, that
>>
>> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>>
>> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>>
>> Tim
>>
>>
>>
>> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>>
>> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>>
>
>


RE: umls graph api

Posted by "Geise, Brandon D." <bd...@geisinger.edu>.
java.lang.AssertionError
	at org.junit.Assert.fail(Assert.java:92)
	at org.junit.Assert.assertTrue(Assert.java:43)
	at org.junit.Assert.assertTrue(Assert.java:54)
	at TestGraphFunctions.testHypernyms(TestGraphFunctions.java:38)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

-----Original Message-----
From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
Sent: Friday, January 29, 2016 1:09 PM
To: dev@ctakes.apache.org
Subject: Re: umls graph api

I was using 2015AB. Can you copy/paste the error trace that junit gives you?
Thanks
Tim


On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
> Very cool.
>
> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>
> Thanks,
> Brandon
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
> Sent: Tuesday, January 26, 2016 2:59 PM
> To: dev@ctakes.apache.org
> Subject: umls graph api
>
> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmills_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI06-lORddJf83jmbb_I-MwkC_3Zg&e= 
>
> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>
>   public static List<String> getHypernyms(String cui);
>   public static List<String> getHyponyms(String cui);
>   public static boolean isa(String cui1, String cui2);
>
> These make use of just the "isa" relation in the MRREL file, and could tell you, for example, that
>
> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>
> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>
> Tim
>
>
>
> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>
> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>



Re: umls graph api

Posted by "Miller, Timothy" <Ti...@childrens.harvard.edu>.
I was using 2015AB. Can you copy/paste the error trace that junit gives you?
Thanks
Tim


On 01/29/2016 01:04 PM, Geise, Brandon D. wrote:
> Very cool.
>
> I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?
>
> Thanks,
> Brandon
>
> -----Original Message-----
> From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
> Sent: Tuesday, January 26, 2016 2:59 PM
> To: dev@ctakes.apache.org
> Subject: umls graph api
>
> I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tmills_umls-2Dgraph-2Dapi&d=BQIFAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=Heup-IbsIg9Q1TPOylpP9FE4GTK-OqdTDRRNQXipowRLRjx0ibQrHEo8uYx6674h&m=VF6tEMHRXUuomFk3Rma04eOozJC4amQHvm7PfAsXqvw&s=J_kg_cPwEhOWJIDI06-lORddJf83jmbb_I-MwkC_3Zg&e= 
>
> If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:
>
>   public static List<String> getHypernyms(String cui);
>   public static List<String> getHyponyms(String cui);
>   public static boolean isa(String cui1, String cui2);
>
> These make use of just the "isa" relation in the MRREL file, and could tell you, for example, that
>
> isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.
>
> If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.
>
> Tim
>
>
>
> IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.
>
> Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.
>


RE: umls graph api

Posted by "Geise, Brandon D." <bd...@geisinger.edu>.
Very cool.

I started going through your instructions.  Everything seemed to be working except for the GraphFunction Junit test fails on the first assertion.  I'm using 2015AA and it doesn't appear that the isa relationship holds true, unless I messed something up.  What UMLS version did you test with?

Thanks,
Brandon

-----Original Message-----
From: Miller, Timothy [mailto:Timothy.Miller@childrens.harvard.edu] 
Sent: Tuesday, January 26, 2016 2:59 PM
To: dev@ctakes.apache.org
Subject: umls graph api

I've been working on some code for easy querying of the UMLS relation graph that I think might be useful in ctakes. The repo is here:
https://github.com/tmills/umls-graph-api

If you point it at your umls download you can build the db in about 5 minutes (45 MB). Then the API has a class GraphFunctions with the following methods:

  public static List<String> getHypernyms(String cui);
  public static List<String> getHyponyms(String cui);
  public static boolean isa(String cui1, String cui2);

These make use of just the "isa" relation in the MRREL file, and could tell you, for example, that

isa("C0007102",  "C3662248") is true (colon cancer is a finding) but that isa("C3662248", "C0007102") is not true.

If people find it useful enough we may wish to add it to ctakes and perhaps we could redistribute this view of the UMLS subject to the same username checking we do now for the dictionary. We may wish to include other relations and ontologies as well -- right now just SNOMED. But this is the skeleton and I think with this starting point adding new capabilities will be pretty easy.

Tim



IMPORTANT WARNING: The information in this message (and the documents attached to it, if any) is confidential and may be legally privileged. It is intended solely for the addressee. Access to this message by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken, or omitted to be taken, in reliance on it is prohibited and may be unlawful. If you have received this message in error, please delete all electronic copies of this message (and the documents attached to it, if any), destroy any hard copies you may have created and notify me immediately by replying to this email. Thank you.

Geisinger Health System utilizes an encryption process to safeguard Protected Health Information and other confidential data contained in external e-mail messages. If email is encrypted, the recipient will receive an e-mail instructing them to sign on to the Geisinger Health System Secure E-mail Message Center to retrieve the encrypted e-mail.