Análise de similaridade semântica usando Gene Ontology (GO) - lmigueel/Bioinformatica GitHub Wiki
1. Sobre
A similaridade funcional dos produtos gênicos pode ser estimada por vocabulários biológicos controlados, como Gene Ontology (GO), Disease Ontology (DO) e Medical Subject Headings (MeSH).
Quatro métodos, incluindo Resnik (Philip 1999), Jiang (Jiang e Conrath 1997), Lin (Lin 1998) e Schlicker (Schlicker et al. 2006) foram apresentados para determinar a similaridade semântica de dois termos GO com base nas estatísticas de anotação de seus termos ancestrais comuns. Wang (Wang et al. 2007) propôs um método para medir a similaridade baseado na estrutura de grafos do GO. Cada um desses métodos tem suas próprias vantagens e fraquezas e pode ser aplicado a outras ontologias que têm estrutura semelhante (ou seja, gráfico acíclico direcionado).
2. Dados semânticos
Para medir a similaridade semântica, precisamos preparar anotações GO, incluindo estrutura GO (ou seja, relações de termos GO) e mapeamento gene para GO. Para métodos baseados em IC (information content), as informações do termo GO são específicas da espécie. Precisamos calcular o IC para todos os termos GO de uma espécie antes de medir a similaridade semântica.
O pacote GOSemSim
fornece a função godata() para preparar dados semânticos para dar suporte à medição de GO e semelhança de genes. Ele usou internamente o pacote GO.db para obter a estrutura GO e o OrgDb para mapeamento de gene para GO. Vamos carregar o do Homo sapiens como exemplo,
library(GOSemSim)
hsGO <- godata('org.Hs.eg.db', ont="MF")
O usuário pode definir computeIC = FALSE se quiser apenas usar o método de Wang.
3. Organismos suportados
O GOSemSim
oferece suporte a todos os organismos que possuem um objeto OrgDb disponível.
Bioconductor já forneceu OrgDb para cerca de 20 espécies.
Podemos consultar o OrgDb online por meio do pacote AnnotationHub. Por exemplo:
library(AnnotationHub)
hub <- AnnotationHub()
q <- query(hub, "Cricetulus")
id <- q$ah_id[length(q)]
Cgriseus <- hub[id](/lmigueel/Bioinformatica/wiki/id)
Se um organismo não é suportado pelo AnnotationHub, o usuário pode usar o pacote AnnotationForge para construir o OrgDb manualmente.
4. Medição de similaridade semântica GO
A função goSim() calcula a similaridade semântica entre dois termos GO, enquanto a função mgoSim() calcula a similaridade semântica entre dois conjuntos de termos GO.
goSim("GO:0004022", "GO:0005515", semData=hsGO, measure="Jiang")
## [1] 0.16
go1 = c("GO:0004022","GO:0004024","GO:0004174")
go2 = c("GO:0009055","GO:0005515")
mgoSim(go1, go2, semData=hsGO, measure="Wang", combine=NULL)
## GO:0009055 GO:0005515
## GO:0004022 0.368 0.116
## GO:0004024 0.335 0.107
## GO:0004174 0.663 0.119
mgoSim(go1, go2, semData=hsGO, measure="Wang", combine="BMA")
## [1] 0.43
5. Medição de similaridade semântica de genes
Com base na semelhança semântica entre os termos GO, o GOSemSim
também pode calcular a semelhança semântica entre conjuntos de termos GO, produtos gênicos e clusters de genes.
Suponha que temos o gene g1 anotado por conjuntos de termos GO igual a GO1 = {go11, go12 ⋯ go1m}, e g2 anotado por GO2 = {go21, go22 ⋯ go2n}, GOSemSim
implementou quatro métodos de combinação, incluindo max, avg, rcmax e BMA, , para agregar pontuações de similaridade semântica de vários termos GO.
GOSemSim
tem a função geneSim() para calcular a similaridade semântica entre dois produtos gênicos, e mgeneSim() para calcular a similaridade semântica entre vários produtos gênicos. Bora ver.
GOSemSim::geneSim("241", "251", semData = hsGO, measure = "Wang", combine = "BMA")
## $ geneSim
## [1] 0.149
##
## $ GO1
## [1] "GO: 0004364" "GO: 0004464" "GO: 0004602" "GO: 0005515" "GO: 0047485"
## [6] "GO: 0050544"
##
## $ GO2
## [1] "GO: 0004035"
mgeneSim(genes = c("835", "5261", "241", "994"),
semData = hsGO, measure = "Wang", verbose = FALSE)
## 835 5261 241 994
## 835 1.000 0.478 0.451 0.578
## 5261 0.478 1.000 0.433 0.499
## 241 0.451 0.433 1.000 0.452
## 994 0.578 0.499 0.452 1.000
6. Dica de leitura
Saiu um novo método, há uns 4 anos, sobre o uso da similaridade semântica de GO, que pode ser usada para comparar as diferenças nos enriquecimento de clusters. Acesse o GOGO AQUI.