<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 This loads the large dolphin social network into a graph $G$.
Step1:  Since this bound is small enough, one could check all 7-membered or smaller subgraphs of the graph $G$ to see if they were complete and get a clique. But one can do better, presumably.
Step2:  This was a terrible idea. Should have gone with Bronn-Kerbosch, which finds all maximal cliques. It works by starting off with 2-cliques, and expanding them, until no more cliques can be expanded. Why didn't I think of that?
Let's try Bronn-Kerbosch along with the naive bound on maximal clique size.
<ASSISTANT_TASK:>
Python Code:
bound = cd.bound_clique_size(graph)
Explanation: This loads the large dolphin social network into a graph $G$.
End of explanation
clique_size = 7
valid_nodes = cd.find_possible_clique_member_nodes(clique_size, graph)
print(cd.get_cliques(clique_size, valid_nodes, graph))
print(cd.find_maximum_clique(graph))
Explanation: Since this bound is small enough, one could check all 7-membered or smaller subgraphs of the graph $G$ to see if they were complete and get a clique. But one can do better, presumably.
End of explanation
num_nodes2, adjacency_list2 = cd.parse_file_into_adjacency_list("small.dat")
graph2 = cd.parse_graph(num_nodes2, adjacency_list2)
small_clique = (0,1)
print(cd.get_clique_extensions(small_clique, graph2))
print(cd.get_two_cliques(graph2))
cd.find_maximal_cliques(graph)
%timeit cd.find_maximal_cliques(graph)
%prun cd.find_maximal_cliques(graph)
Explanation: This was a terrible idea. Should have gone with Bronn-Kerbosch, which finds all maximal cliques. It works by starting off with 2-cliques, and expanding them, until no more cliques can be expanded. Why didn't I think of that?
Let's try Bronn-Kerbosch along with the naive bound on maximal clique size.
End of explanation
<END_TASK>