Skip to content

Commit 31a8b27

Browse files
committed
Implement metagraph.get_metaedge
1 parent c33bdba commit 31a8b27

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

hetio/abbreviation.py

+3
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ def metaedges_from_metapath(abbreviation, standardize_by=None):
136136

137137

138138
def metaedge_id_from_abbreviation(metagraph, abbreviation):
139+
"""
140+
Return the metaedge_id corresponding to a metaedge abbreviation.
141+
"""
139142
source_abbrev, target_abbrev = regex.split('[a-z<>]+', abbreviation)
140143
edge_abbrev = regex.search('[a-z<>]+', abbreviation).group()
141144
abbrev_to_kind = {v: k for k, v in metagraph.kind_to_abbrev.items()}

hetio/hetnet.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,19 @@ def get_metanode(self, metanode):
220220
# Assume metanode must be an abbreviation
221221
return self.get_node(self.abbrev_to_kind[metanode])
222222

223-
def get_metaedge(self, metanode):
224-
pass
223+
def get_metaedge(self, metaedge):
224+
"""
225+
Return the metaedge specified by the input, which can be either a:
226+
- MetaEdge (passthrough)
227+
- metaedge_id (tuple)
228+
- metaedge abbreviation
229+
"""
230+
if isinstance(metaedge, MetaEdge):
231+
return metaedge
232+
if isinstance(metaedge, tuple):
233+
return self.get_edge(metaedge)
234+
metaedge_id = hetio.abbreviation.metaedge_id_from_abbreviation(metaedge)
235+
return self.get_edge(metaedge_id)
225236

226237
@staticmethod
227238
def from_edge_tuples(metaedge_tuples, kind_to_abbrev=None):

test/graph_test.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,9 @@ def test_disase_gene_example():
104104
"""
105105
Recreate hetnet from https://doi.org/10.1371/journal.pcbi.1004259.g002.
106106
"""
107+
metaedge_id_GaD = 'Gene', 'Disease', 'association', 'both'
107108
metaedge_tuples = [
108-
('Gene', 'Disease', 'association', 'both'),
109+
metaedge_id_GaD,
109110
('Gene', 'Tissue', 'expression', 'both'),
110111
('Disease', 'Tissue', 'localization', 'both'),
111112
('Gene', 'Gene', 'interaction', 'both'),
@@ -117,6 +118,11 @@ def test_disase_gene_example():
117118
assert metagraph.get_metanode(gene_metanode) == gene_metanode
118119
assert metagraph.get_metanode('Gene') == gene_metanode
119120
assert metagraph.get_metanode('G') == gene_metanode
121+
metaedge_GaD = metagraph.get_edge(metaedge_id_GaD)
122+
assert metagraph.get_metaedge(metaedge_GaD) == metaedge_GaD
123+
assert metaedge_id_GaD == metaedge_GaD.get_id()
124+
assert metagraph.get_metaedge(metaedge_id_GaD) == metaedge_GaD
125+
assert metagraph.get_metaedge('GaD') == metaedge_GaD
120126

121127
# Create graph
122128
graph = hetio.hetnet.Graph(metagraph)

0 commit comments

Comments
 (0)