Comments (35)
Also:
protein-complex, RO_0002436
from pheknowlator.
This is fantastic! Yes, let’s chat this afternoon.
from pheknowlator.
Thanks, great! I think molecularly interacts with
is fine for protein-protein interactions, as that interaction implies physical binding.
from pheknowlator.
And for chemical-gene is probably better to leave it as the more generic interacts with
, as you suggested. Because there are many possible ways for the chemical to affect expression (which is what we imply by this interaction).
from pheknowlator.
from pheknowlator.
Awesome! One less thing to worry about, then.
from pheknowlator.
Yup! That makes sense.
from pheknowlator.
@ignaciot - can you confirm that you agree with how I am building the protein-protein
and protein-complex
edges from the ComplexParticipantsPubMedIdentifiers_human.txt file:
FILE DATA
File Columns: [0] identifier
; [1] name
; [2] participants
; [3] participatingComplex
; [4] pubMedIdentifiers
Example File Output:
NOTE. '|" substituted for ";" to build table in example below
identifier | name | participants | participatingComplex | pubMedIdentifiers |
---|---|---|---|---|
R-HSA-1006173 | "CFH:Host cell surface [plasma membrane]" | uniprot:P08603;chebi:24505;chebi:28879 | R-ALL-1006146 | 762425;16192651 |
R-HSA-1008206 | "NF-E2:Promoter region of beta-globin [nucleoplasm]" | uniprot:Q16621;uniprot:Q9ULX9;uniprot:O15525;uniprot:O60675 | R-HSA-1008229 | 8816476 |
BUILDING EDGES
Protein-Complex:
- complexes are parsed from
column [0]
- proteins are parsed from
column [2]
Example from file (from table above):
complex | protein |
---|---|
R-HSA-1006173 | uniprot:P08603 |
R-HSA-1008206 | uniprot:Q16621 uniprot:Q9ULX9 uniprot:O15525 uniprot:O6067 |
Complex-Complex:
- complex_i parsed from
column [0]
- complex_j parsed from
column [3]
Example from file (from table above):
complex | complex |
---|---|
R-HSA-1006173 | R-ALL-1006146 |
R-HSA-1008206 | R-HSA-1008229 |
from pheknowlator.
These all look correct!
from pheknowlator.
Good news, the draft of the sources of data for the edges and documentation of sources are complete. The edge counts will be updated and the files listed on the release page will be added as the KG is built.
@ignaciot - would you mind taking a gander at the following pages and let me know if anything seems incorrect?
Release V2.0.0
- All sources here are hyperlinked to the page in the next bullet.
Release V2.0.0 Knowledge Graph Data Sources
- The build of all sources in the mapping and filtering section of this page are now fully automated in a Jupyter Notebook, which is in progress (pending completion of PRO filtering), but can be viewed here if you are curious.
What's Left before KG Build:
- Creating Human PRO ➞ In progress, running BFS for human protein nodes as I type
- Adding
f()
for:- Generate RO inverse edges ➞ will complete tomorrow, just needs testing
- Label instances ➞ will complete tomorrow, just needs testing
- Option to build a normal or abnormal KG ➞ will complete tomorrow, just needs testing
Once I confirm a few last details with @bill-baumgartner tomorrow (who was super helpful today, thanks Bill!), I will begin the build!
from pheknowlator.
This looks AWESOME!! I'm glad those Uniprot/Reactome triples resulted to be useful, can't wait to play with the built graph. I went through all of the above and didn't see any errors. Thanks for adding those inverse relations, too!
Happy to help check the items above that need testing. Maybe we could think of a set of unit tests to write for each build, too (can wait until the next subrelease).
from pheknowlator.
Oh, absolutely, I don't think this is a reason to halt building the next KG version! I'm excited to try this out once it's built!
from pheknowlator.
Also:
protein-complex, RO_0002436
Good catch, I will add to the original issue, thanks!
from pheknowlator.
@ignaciot and @bill-baumgartner - the updated KR is shown below (click on image to enlarge). Note that the main data types are ontologies (yellow), open data sources (purple), and experimental data (blue). Note, that this has been verified by Adrianne as well.
You will notice that I have added the cell ontology and BRENDA in addition to experimental data in order to satisfy a component of my comps -- creating a KG, which actually includes the central dogma. GTEx is a great source to start with since it includes many disease types and has the results of both microarray and RNA-seq (for several types of samples), and includes connections to phenotypes.
Anywho, happy to talk about this more this afternoon!
from pheknowlator.
UPDATES: Incorporating feedback from @bill-baumgartner and @LEHunter resulted in the updated KR shown below.
Some important questions that I would like help answering:
- @ignaciot - you've asked that I use the relation
molecularly interacts with
and the definition of this relation includes alternative terms, which specify that this relation specifically means binding interactions.- Did you intend it to be used that way?
- If you did intend this relation be used then it might make sense to change the protein-protein and gene-gene interactions (or at least the gene-gene interactions) to
genetically interacts with
-- @LEHunter, thoughts?
- @LEHunter - @bill-baumgartner and I were talking about the possibility of adding the inverse properties. What are your thoughts on this? Do you think it would have negative ramifications for things like random walk?
- @bill-baumgartner - I kept the edge
causally influences
. I was unable to find anything in theRO
for options likealters
orhas variant
.
- Any other errors or anything weird that needs editing?
- I'd like to substitute the following
BFO
terms for the proposedRO
terms, do you agree?:
BFO:realizes
toRO:realized in response to
- EXAMPLE: Biological Process
realized in
a pathway
- EXAMPLE: Biological Process
BFO:has component
toRO:has function
- EXAMPLE: Pathway
has function
molecular function
- EXAMPLE: Pathway
BFO:has part
toRO:has component
- EXAMPLE: Pathway
has component
cellular location
- EXAMPLE: Pathway
from pheknowlator.
Yup, that is the reason I chose molecularly interacts with
(binding). Looking at the definition of that other relation (An interaction that holds between two genetic entities (genes, alleles) through some genetic interaction (e.g. epistasis)
) I don't think that is appropriate for protein-protein interactions. It's probably fine for gene-gene interactions.
Maybe we could generate two graphs, one with the inverse relations where applicable and another without, to assess how much it could mess with random walk-based algorithms? I do suspect it may affect the node2vec results.
The rest looks fine to me (BTW, I like the new diagram!).
from pheknowlator.
Yup, that is the reason I chose
molecularly interacts with
(binding). Looking at the definition of that other relation (An interaction that holds between two genetic entities (genes, alleles) through some genetic interaction (e.g. epistasis)
) I don't think that is appropriate for protein-protein interactions. It's probably fine for gene-gene interactions.
OK, great. I also agree about the protein-protein interactions. Maybe we do this:
- gene-gene
genetically interacts with
- protein-protein
molecularly interacts with
- chemical-gene
interacts with
- protein-cofactor/catalyst
molecularly interacts with
- chemical-complex
molecularly interacts with
- protein-complex
molecularly interacts with
- complex-complex
molecularly interacts with
Maybe we could generate two graphs, one with the inverse relations where applicable and another without, to assess how much it could mess with random walk-based algorithms? I do suspect it may affect the node2vec results.
Yep, that's what Bill and I were thinking too :D.
The rest looks fine to me (BTW, I like the new diagram!).
Great, thanks for your feedback!
from pheknowlator.
from pheknowlator.
I suggest getting Mike to weigh in on these. I would like to be consistent with what he is doing with CRAFT for relations.
OK, I will reach out to Mike. Thanks @LEHunter!
from pheknowlator.
@LEHunter - I'd like to substitute the following BFO
terms for the proposed RO
terms, do you agree?:
BFO:realizes
toRO:realized in response to
- EXAMPLE: Biological Process
realized in
a pathway
- EXAMPLE: Biological Process
BFO:has component
toRO:has function
- EXAMPLE: Pathway
has function
molecular function
- EXAMPLE: Pathway
BFO:has part
toRO:has component
- EXAMPLE: Pathway
has component
cellular location
- EXAMPLE: Pathway
from pheknowlator.
from pheknowlator.
Seems reasonable to me, but please do check with Mike. It’s important to be consistent with CRAFT. And Mike has thought a lot about this stuff L
Sounds good, I will follow-up with him. Thanks!
from pheknowlator.
UPDATE: Mike has been emailed to ask about the BFO-RO and interaction triples. In the meantime, I am going to move forward with the representation shown below. Will also create a Bada-version 😉, once I hear back from him.
NOTE. For space reasons, I am not showing all edges with labels, but am suggesting there are inverse edges via the inclusion of a dotted line.
from pheknowlator.
- @bill-baumgartner - I kept the edge
causally influences
. I was unable to find anything in theRO
for options likealters
orhas variant
.
Turns out the relation I was thinking of is in the Sequence Ontology and not the RO: https://www.ebi.ac.uk/ols/ontologies/so/properties?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2Fso%23variant_of
from pheknowlator.
- @bill-baumgartner - I kept the edge
causally influences
. I was unable to find anything in theRO
for options likealters
orhas variant
.Turns out the relation I was thinking of is in the Sequence Ontology and not the RO: https://www.ebi.ac.uk/ols/ontologies/so/properties?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2Fso%23variant_of
Thanks for letting me know! In that case, unless you are opposed, I will keep causally influences
.
from pheknowlator.
@ignaciot - would mind telling me how you found these?
- protein-protein
- protein-cofactor/catalyst (ChEBI)
- protein-complex (reactome)
- chemical (ChEBI)-complex
- complex (reactome)-complex (reactome)
- protein-pathway (reactome)
- protein-reaction (reactome)
from pheknowlator.
protein-protein
These came from Uniprot, and they are sourced from the IntAct database monthly (so it would be a good idea to keep those from STRING as well).
protein-cofactor/catalyst (ChEBI)
protein-complex (reactome)
chemical (ChEBI)-complex
complex (reactome)-complex (reactome)
protein-pathway (reactome)
protein-reaction (reactome)
All of those came from Reactome, where they specified the participants (from Uniprot or ChEBI) to pathways, complexes and reactions.
from pheknowlator.
protein-protein
These came from Uniprot, and they are sourced from the IntAct database monthly (so it would be a good idea to keep those from STRING as well).
Thanks! Update on protein-protein interactions. It looks like we will only need STRING as they already cover the data in IntAct (see screenshot below) 🎉
protein-cofactor/catalyst (ChEBI)
protein-complex (reactome)
chemical (ChEBI)-complex
complex (reactome)-complex (reactome)
protein-pathway (reactome)
protein-reaction (reactome)All of those came from Reactome, where they specified the participants (from Uniprot or ChEBI) to pathways, complexes and reactions.
Perfect! I will update the file parsers.
from pheknowlator.
@ignaciot - to build the gene - has_gene_product - protein
triples, we need to identify all human protein coding genes and their gene products.
To get this, I'm using the human proteome (reviewed Swiss-Prot version) from Uniprot (here). Sound OK to you?
from pheknowlator.
This looks AWESOME!! I'm glad those Uniprot/Reactome triples resulted to be useful, can't wait to play with the built graph. I went through all of the above and didn't see any errors. Thanks for adding those inverse relations, too!
Happy to help check the items above that need testing. Maybe we could think of a set of unit tests to write for each build, too (can wait until the next subrelease).
Thanks so much for your help @ignaciot! I think writing tests is a great idea. I also think it would be great if we added continuous integration. Perhaps we can chat more about this on Monday?
from pheknowlator.
@bill-baumgartner and @ignaciot - the human version of the PRO is finally done! 🎉
Things to keep in mind:
- It was created by building a new graph from running forward and reverse breadth first search over all human pro classes. Human pro classes were identified by querying the ontology for all ontology classes
only_in_taxon some Homo sapiens
(n=61,064 classes).- @ignaciot - I found a way to do this such that it includes all of the things we discussed needed to be included (e.g.
PR_000000019
) 😄
- @ignaciot - I found a way to do this such that it includes all of the things we discussed needed to be included (e.g.
- The human version contains a single connected component
- It includes
pr:lacks_part
andowl:disjointWith
axioms. Given the articles I have read, I think this is totally acceptable for now. I will still removeowl:disjointWith
axioms from the full KG before closing it, but until that point, I will keep the individual ontologies as complete as possible. This ensures the new human PRO is useful for others who might want to use it. - The human pro has been deductively closed using
hermit
. I compared the results to runningELK
and they both stated the ontology was consistent and produced the same set of inferred axioms (n=174).
If you'd like to use it, you can download the closed and unclosed versions here:
@LEHunter and @bill-baumgartner - should we offer this version and/or the script used to create it to the ProConsortium?
📢Now that the core ontologies are good to go, I will begin building KG. Updates to follow!
from pheknowlator.
@ignaciot - I found a way to do this such that it includes all of the things we discussed needed to be included (e.g. PR_000000019) :-)
Awesome!! This is really cool.
I take it the pr:lacks_part
and owl:disjointWith
had to be kept to keep it a single connected component? (my only concert would be the incorrect assumption of a relation when creating node embeddings)
from pheknowlator.
@ignaciot - I found a way to do this such that it includes all of the things we discussed needed to be included (e.g. PR_000000019) :-)
Awesome!! This is really cool.
I take it the
pr:lacks_part
andowl:disjointWith
had to be kept to keep it a single connected component? (my only concert would be the incorrect assumption of a relation when creating node embeddings)
Thanks! 😄 After reading a bunch of articles, I chose to leave both types in for now as this is the way to create the most "correct"/authentic version of the human PRO. There is a way to keep 1 single component with removing each type. The owl:disjointWith
will continued to be removed prior to closing the graph (we have been doing that since the first release (the reasoners ignore this axiom anyways) so they should not give you trouble with the embeddings. I believe the pr:lacks_part
axioms should be OK. I read some of Hohendorf's papers about the pr:lacks_part
axioms and given how they are constructed in PRO and CL, we should be fine. The real problem with including these are when they are constructed in the way PATO uses them. Either way, I'm happy to discuss this again once the KG is built 😄
from pheknowlator.
Oh, absolutely, I don't think this is a reason to halt building the next KG version! I'm excited to try this out once it's built!
Awesome! I’ll let you know when it’s ready for you!
from pheknowlator.
Final KR for V2.0 builds are shown below.
Closing this issue.
from pheknowlator.
Related Issues (20)
- July 2021 Build -- Delay
- Incorporating Ensmallen -- 🔮 Magic ✨ 🎩
- Script Notebook: OWLNETS_Example_Application.ipynb HOT 1
- New Resource Request: LINCS
- Adding Edge Pattern and Relation Types HOT 3
- requirements.txt HOT 7
- Newline char in node description/definition causes dirty lines in node metadata files HOT 5
- Foreign characters in node labels HOT 18
- Simplify input files -- input yaml HOT 5
- GitHub Actions -- Docker build-push-action failing HOT 3
- Migrate from Google Cloud Container Registry to Artifact Registry
- Disappearing edges when creating KG HOT 6
- Create Build Dashboard
- Wiki: Create Endpoint Page
- CI/CD Pipeline: Ensuring Builds Use Most Current Data HOT 3
- Enabling Google GCS Directory Listing HOT 6
- Pheknowlator knowledge graph in OBO format HOT 4
- log directory is not created when pkt_kg is imported HOT 1
- Consider switching to https://identifiers.org/ URI or CURIEs HOT 2
- Create Edge-Type Attribute File HOT 15
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pheknowlator.