obophenotype / cell-ontology

An ontology of cell types
https://obophenotype.github.io/cell-ontology/
Creative Commons Attribution 4.0 International
146 stars 49 forks source link

How to get a map of GO Cell Components to CL classes? #2317

Open lubianat opened 8 months ago

lubianat commented 8 months ago

Hello!

I am looking for ways to get a map of cell types in CL to Cell Components in the Gene Ontology.

I think this can be a path to get a set of markers for classes in some smart ways, as some Cell Components are very type specific (related to some things @dosumis was thinking)

Some mappings are explicit, e.g.neuron projection (https://www.ebi.ac.uk/QuickGO/term/GO:0043005) has a "part of --> neuron" axiom.

But there are some other mappings that seem possible, e.g. "glutamatergic synapse" --> "glutamatergic neuron", but I don't know if they are asserted somewhere.

Examples of similar class-specific components include:

Maybe using ROBOT/OAK to get a 3 column table with already asserted Cell Component, CL Term and Source Ontology could be a starting point. Likely some manual curation needed to fill gaps and get a complete picture.

A natural second step would be getting the genes annotated to such Cell Components. Maybe this will provide a nice CL signature, complementary to scRNA-seq where markers are dependent on the background.

lubianat commented 8 months ago

Such could even be part of the Cell Guides in cellxgene, indicating these gene ontology connections and/or adding markers to a new tab.

(pinging @jahilton)

dosumis commented 8 months ago

Possible to get these from UberGraph. I can share some queries. We can also link cells to GO processes. Part of our plan over the next year is to improve these links. They will also be a key part of a knowledge graph we are building.

lubianat commented 7 months ago

@dosumis I was playing with this idea on Ubergraph:

https://api.triplydb.com/s/ZcjBxmcVp

# functional GO Biological Processes (excluding regulation and differentiation) which some cell class in CL is capable of

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT 
(SAMPLE(?a) as ?sample_a )
(SAMPLE(?a_label) as ?sample_a_label )
?b
?b_label
WHERE {
  ?a <http://purl.obolibrary.org/obo/RO_0002215> ?b .
  ?a rdfs:subClassOf obo:CL_0000000 . 
  FILTER(CONTAINS(STR(?a), "CL_"))  # Ensure that ?a is a cell class in the CL ontology
  ?b rdfs:subClassOf obo:GO_0008150 . 
  ?b rdfs:label ?b_label . 
  ?a rdfs:label ?a_label . 
  FILTER NOT EXISTS {?b rdfs:subClassOf obo:GO_0050789 .}
  FILTER NOT EXISTS {?b rdfs:subClassOf obo:GO_0030154 .}
}
GROUP BY ?b ?b_label

and

https://api.triplydb.com/s/jKyiXFERl

# GO cell components that are part of some cell class

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT 
(SAMPLE(?a) as ?sample_a )
(SAMPLE(?a_label) as ?sample_a_label )
?b
?b_label
WHERE {
  ?b <http://purl.obolibrary.org/obo/BFO_0000050> ?a .
  ?a rdfs:subClassOf obo:CL_0000000 . 
  FILTER(CONTAINS(STR(?a), "CL_")) 
  MINUS { VALUES ?a {obo:CL_0000000} } 
  ?b rdfs:subClassOf obo:GO_0005575 . 
  ?b rdfs:label ?b_label . 
  ?a rdfs:label ?a_label . 
}
GROUP BY ?b ?b_label

They are fun queries, but I imagine quite similar to yours

github-actions[bot] commented 1 month ago

This issue has not seen any activity in the past 6 months; it will be closed automatically in one year from now if no action is taken.