Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aplbrain/dotmotif
A performant, powerful query framework to search for network motifs
https://github.com/aplbrain/dotmotif
aplbrain bossdb connectome connectomics dotmotif graph graph-database graph-matching motif-discovery motifs neo4j networkx python query-language subgraph-isomorphism vf2
Last synced: 7 days ago
JSON representation
A performant, powerful query framework to search for network motifs
- Host: GitHub
- URL: https://github.com/aplbrain/dotmotif
- Owner: aplbrain
- License: apache-2.0
- Created: 2018-04-24T17:51:51.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-21T17:09:13.000Z (5 months ago)
- Last Synced: 2025-01-18T22:40:25.095Z (14 days ago)
- Topics: aplbrain, bossdb, connectome, connectomics, dotmotif, graph, graph-database, graph-matching, motif-discovery, motifs, neo4j, networkx, python, query-language, subgraph-isomorphism, vf2
- Language: Python
- Homepage: https://bossdb.org/tools/dotmotif
- Size: 888 KB
- Stars: 84
- Watchers: 11
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
d o t m o t i f
Find graph motifs using intuitive notation
---
DotMotif is a library that identifies subgraphs or motifs in a large graph. It looks like this:
```py
# Look for all motifs of the form,# Neuron A synapses on Neuron B:
A -> B
# ...and B inhibits C:
B -> C [type = "inhibitory"]
```# Examples
| Notebook | Description |
|----------|-------------|
| | Looking for motifs in the IARPA MICrONS Pinky100 Dataset |
| | Motif search in a custom graph |
| | Subgraph search in the Janelia Hemibrain dataset |# Get Started
If you have [DotMotif](https://github.com/aplbrain/dotmotif/wiki/Installation), a NetworkX graph, and a curious mind, you already have everything you need to start using DotMotif:
```python
from dotmotif import Motif, GrandIsoExecutorexecutor = GrandIsoExecutor(graph=my_networkx_graph)
triangle = Motif("""
A -> B
B -> C
C -> A
""")results = executor.find(triangle)
```# Parameters
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](https://github.com/aplbrain/dotmotif/wiki/Automorphisms) |For more details on how to write a query, see [Getting Started](https://github.com/aplbrain/dotmotif/wiki/Getting-Started).
---
# Citing
If this tool is helpful to your research, please consider citing it with:
```bibtex
# https://doi.org/10.1038/s41598-021-91025-5
@article{Matelsky_Motifs_2021,
title={{DotMotif: an open-source tool for connectome subgraph isomorphism search and graph queries}},
volume={11},
ISSN={2045-2322},
url={http://dx.doi.org/10.1038/s41598-021-91025-5},
DOI={10.1038/s41598-021-91025-5},
number={1},
journal={Scientific Reports},
publisher={Springer Science and Business Media LLC},
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},
year={2021},
month={Jun}
}
```