-
Notifications
You must be signed in to change notification settings - Fork 0
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
Update extensions structure in JSON to explicitly define order in models #3
Comments
Need a bit more context here.. the syngo model correctly nests the synapse in the amygdala. The export to GPAD is valid but lossy: this is because GAF/GPAD extensions do not allow nesting. There is no way around this without extending GAF/GPAD (The nesting is implicitly there, especially with the separate CC annotation with its amygdala extension. But it's not explicit and any attempt to recover the nesting is heuristic rather than 100% guaranteed valid) I suggest we simply call this done. People rarely use the extensions, never mind care about nesting. If people want the full info, it's there in the GO-CAM, we should focus energies on making this more accessible. Maybe I'm missing something, but where does the JSON you are generating fit in? |
OK @cmungall , so is the nesting implicit due to the ontology hierarchy between the CC term and the UBERON? If so, I probably just forgot that and can then expect to handle this in code because I can check the ontology when generating the model. As far as I know, the JSON that is specced here is the export from SynGO and the input for the syngo2lego Scala code to generate the GO-CAM TTL. |
The nesting is absolutely explicit in the GO-CAM In the GPAD, the nesting is strongly suggested by a number of factors: syngo2lego - ok, get the context now. So I don't know enough about the source syngo representation and how flexible it is. I don't know if it reliably has nesting or if this is something you must do heuristically when converting to go-cam |
Thanks @cmungall for explaining the resulting GPAD limitations! I think for now we can just depend on the syngo2lego code I have to nest these in the model. If someone finds a model with incorrect nesting order I can address it in the syngo2lego code rather than adding flexibility/complexity to the JSON source spec. |
Currently the JSON structure for terms under a relation in the extensions field only allow a list, which may be unordered. If we think we should change this spec to better represent the desired nesting structure of the SynGO GO-CAM models I have some ideas.
The existing structure for SYNGO_2082 is:
Perhaps, to represent the desired nesting order it should be:
where the value in each dictionary determines whether the chain should be terminated? Dictionary="keep going" whereas String="we're done"?
There's also the method used in the ontobio python library for parsing GAF/GPAD, which structures extensions as described here.
After adjusting @cmungall 's example a bit (replacing "union_of" key with "extensions"):
And then putting in our example values:
Hm, though now I see that the ontobio solution doesn't really specify order. Perhaps our use case in SynGO is so specialized maybe we shouldn't worry about the spec being changed and just handle this in code? What do you guys think @ftwkoopmans @thomaspd ?
The text was updated successfully, but these errors were encountered: