Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unstable output for owltools --save-closure-for-chado #256

Open
kimrutherford opened this issue Jun 5, 2018 · 8 comments
Open

Unstable output for owltools --save-closure-for-chado #256

kimrutherford opened this issue Jun 5, 2018 · 8 comments

Comments

@kimrutherford
Copy link

kimrutherford commented Jun 5, 2018

This is a follow on from pombase/pombase-chado#678

We're using owltools --save-closure-for-chado to generate the closure we load into Chado.

@ValWood noticed that the output changes regularly for parts of the ontology that aren't changing.

We have been using these two files for testing because they are very similar:
https://curation.pombase.org/kmr44/go-basic-2018-05-07.obo
https://curation.pombase.org/kmr44/go-basic-2018-05-08.obo

We ran these commands:

owltools ./go-basic-2018-05-07.obo --save-closure-for-chado 2018-05-07.out
owltools ./go-basic-2018-05-08.obo --save-closure-for-chado 2018-05-08.out

Using owltools from the master branch, the output from go-basic-2018-05-08.obo go-basic-2018-05-07.obo includes these lines:

GO:1904788    RO:0002213    4    GO:0000747
GO:1904788    RO:0002211    5    GO:0000747

but the output from go-basic-2018-05-07.obo go-basic-2018-05-08.obo doesn't have any lines that mention those two GO terms. We can't see any ontology changes that could cause this difference.

With the owltools from May 2017 (version 447e415) that we have been using to load Canto, the output is quite different. For go-basic-2018-05-07.obo, the output is:

GO:1904788   regulates   5       GO:0000747
GO:1904788   positively_regulates        4       GO:0000747

and for go-basic-2018-05-08.obo the output is:

GO:1904788   regulates   4       GO:0000747

In case it's useful here are the four output files:
https://curation.pombase.org/kmr44/owltools-chado-closure.tar.xz

(Also the recent version of owltools uses "RO:..." IDs for the relations but the older owltools uses term names like "positively_regulates". Is that a bug or should we upload our Chado loading code?)

@cmungall

@kimrutherford
Copy link
Author

Sorry, I got my file names swapped. I've edited the issue.

@ValWood
Copy link

ValWood commented Jun 5, 2018

This probably isn't very helpful, but I think it's something to do with "regulation of regulation " terms.
The terms which disappear and reappear in the cytoskeleton organization branch are in the "septation initiation signalling" area. This is an is_a child of some regulation terms (this parentage should probably be removed and captured at annotation time, but we can deal with that later).

@kimrutherford
Copy link
Author

Hi.

In case it helps, we've found another example of this problem. The output of owltools --save-closure-for-chado is inconsistent for:

  • meiosis I spindle assembly checkpoint (GO:1905318)

regulates:

  • sister chromatid segregation (GO:0000819)

Sometimes we get this line in the output, sometimes not:

GO:1905318    RO:0002211      10      GO:0000819

It changes when go-basic.obo changes, but not in a predictable way.

The command line is:

owltools go-basic.obo --save-closure-for-chado  closure.out

The version of OWLTools seems to make a difference too. We've tried with the current master and v 0.3.0. The version build from the master branch doesn't give us the line above, v0.3.0 does. This was using the go-basic.obo with data-version: releases/2019-01-27 downloaded from http://purl.obolibrary.org/obo/go/snapshot/go-basic.obo.

Is there any work-around for this problem that we could try?

@kimrutherford
Copy link
Author

There's another example in this issue: geneontology/go-ontology#17171

balhoff added a commit that referenced this issue Apr 24, 2019
Use -jar option to run from embedded jar. Possible fix for #256.
@balhoff
Copy link
Member

balhoff commented Apr 26, 2019

@cmungall @fbastian the behavior of this method is unstable (see above) across different Java versions (8 vs 11) and also sometimes jar packaging schemes:

public Set<OWLGraphEdge> getOutgoingEdgesClosure(OWLObject s, Set<? extends OWLPropertyExpression> overProperties) {

Curious if you have any idea why that might be. I have verified that the same number of axioms are parsed when loading the file in all situations.

@balhoff
Copy link
Member

balhoff commented Apr 27, 2019

I may have this figured out—I think it's to do with the usage of synchronized. I will try to understand why on Monday.

@balhoff
Copy link
Member

balhoff commented Apr 30, 2019

When I removed the synchronized usages from this code, it works as expected on Java 11. Initially I thought this made sense, because there are methods here that call each other and they are locking on the same object, which seemed like it might cause issues. But I am not very experienced with synchronized, and based on my reading it sounds like it is okay to do this, because a given thread can repeatedly obtain the same lock and shouldn't deadlock itself. So I don't know why getting rid of synchronized seems to fix the issue.

@balhoff
Copy link
Member

balhoff commented Oct 19, 2020

We are working around this for PomBase by using a different tool to compute the closures: geneontology/go-ontology#17171 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants