# A graph_id function in SageMath

While GAP has a group_id function which locates a “small” group in a small groups database (see the SageMath page or the GAP page for more info), AFAIK, SageMath doesn’t have something similar. I’ve written one (see below) based on the mountain of hard work done years ago by Emily Kirkman.

```def graph_id_graph6(Gamma, verbose=False):
"""
Returns the graph6 id of Gamma = (V,E).
If verbose then it also displays the table of all graphs with
|V| vertices and |E| edges.

Assumes Gamma is a "small" graph.

EXAMPLES:
sage: Gamma = graphs.HouseGraph()
sage: graph_id_graph6(Gamma, verbose=False)
'Dbk'
sage: graph_id_graph6(Gamma, verbose=True)

graphs with 5 vertices and 6 edges:

Graph6               Aut Grp Size         Degree Sequence
------------------------------------------------------------
DB{                  2                    [1, 2, 2, 3, 4]
DFw                  12                   [2, 2, 2, 3, 3]
DJ[                  24                   [0, 3, 3, 3, 3]
DJk                  2                    [1, 2, 3, 3, 3]
DK{                  8                    [2, 2, 2, 2, 4]
Dbk                  2                    [2, 2, 2, 3, 3]

'Dbk'

"""
n = len(Gamma.vertices())
m = len(Gamma.edges())
ds = Gamma.degree_sequence()
Q = GraphQuery(display_cols=['graph6', 'aut_grp_size', 'degree_sequence'], num_edges=['=', m], num_vertices=["=", n])
for g in Q:
if g.is_isomorphic(Gamma):
if verbose:
print("\n graphs with %s vertices"%n+" and %s edges:\n"%m)
Q.show()
print("\n")
return g.graph6_string()
```