Find graph motifs using intuitive notation
DotMotif is a library that identifies subgraphs or motifs in a large graph. It looks like this:
# Look for all motifs of the form,
# Neuron A excites B:
A -> B [type = "excitatory"]
# ...and B inhibits C:
B -> C [type = "inhibitory"]
Or like this:
TwitterInfluencer(person) {
# An influencer has more than a million
# followers and is verified.
person.followers > 1000000
person.verified = true
}
InfluencerAwkward(person1, person2) {
# Two people who are both influencers...
TwitterInfluencer(person1)
TwitterInfluencer(person2)
# ...where one follows the other, but...
person1 -> person2
# ...the other doesn't follow back
person2 !> person1
}
# Search for all awkward twitter influencer
# relationships in the dataset:
InfluencerAwkward(X, Y)
To follow along in an interactive Binder without installing anything, launch a Jupyter Notebook here:
If you have DotMotif, a NetworkX graph, and a curious mind, you already have everything you need to start using DotMotif:
from dotmotif import Motif, GrandIsoExecutor
executor = GrandIsoExecutor(graph=my_networkx_graph)
triangle = Motif("""
A -> B
B -> C
C -> A
""")
results = executor.find(triangle)
You can also pass optional parameters into the constructor for the dotmotif
object. Those arguments are:
Argument | Type, Default | Behavior |
---|---|---|
ignore_direction |
bool : False |
Whether to disregard direction when generating the database query |
limit |
int : None |
A limit (if any) to impose on the query results |
enforce_inequality |
bool : False |
Whether to enforce inequality; in other words, whether two nodes should be permitted to be aliases for the same node. For example, in A->B->C ; if A!=C , then set to True |
exclude_automorphisms |
bool : False |
Whether to return only a single example for each detected automorphism. See more in the documentation |
For more details on how to write a query, see Getting Started.
If this tool is helpful to your research, please consider citing it with:
# https://doi.org/10.1101/2020.06.08.140533
@article {Matelsky_DotMotif,
author = {Matelsky, Jordan K. and Reilly, Elizabeth P. and Johnson, Erik C. and Stiso, Jennifer and Bassett, Danielle S. and Wester, Brock A. and Gray-Roncal, William},
title = {DotMotif: An open-source tool for connectome subgraph isomorphism search and graph queries},
elocation-id = {2020.06.08.140533},
year = {2021},
doi = {10.1101/2020.06.08.140533},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2021/01/14/2020.06.08.140533},
eprint = {https://www.biorxiv.org/content/early/2021/01/14/2020.06.08.140533.full.pdf},
journal = {bioRxiv}
}