Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #423
This PR introduces the
pybel.io.sbgnml
I/O module, which first consumes SBGN-ML and converts it into a facile JSON-like data structure (which is generally reusable) then reasons over it and converts to BEL.The code also has some grounding mechanisms built in to deal with the often missing identifiers from the COVID-Pathways content, but I might remove this to make the tool more generally reusable. I'm not really sure who else generates SBGN-ML if not from CellDesigner (and more specifically, coming out of MINERVA)
DEMO NOTEBOOK
Example SBGN-ML Content
For an example, see the content posted by @cannin https://cannin.github.io/covid19-sbgn. The SBGN-ML file (disregard the SIF and SIF SVG, since those are derived resources).
He notes on his site that these SBGN-ML files were converted from CellDesigner using https://github.com/sbgn/cd2sbgnml. It's clear that there's some lost information due to
cd2sbgnml
(or there are strange pockets of incredibly low quality curation), so it will be a future step to write a CellDesigner importer later (see #440).For example, this script can be run (after installing this branch in development mode) with the following code in the python REPL: