FusionAtlasPaths={"~/projects/fusionatlas/code/package/"};
$Path=$Path~Join~FusionAtlasPaths;
<<FusionAtlas`

GradedBigraph[M_?MatrixQ,p_Integer]:=Module[{n,MM,V,depths},
n=Length[M];
MM=ArrayFlatten[{{ZeroMatrix[n],M},{Transpose[M],ZeroMatrix[n]}}];
V[-1]={};
V[0]={p};V[k_]:=Complement[Flatten[Position[Plus@@(MM.UnitVector[2 n,#]&/@V[k-1]),m_/;m>0]],V[k-2]];
depths=TakeWhile[Table[V[k],{k,0,2n-1}],Length[#]>0&];
GradedBigraph@@Table[MM[[depths[[i+1]],depths[[i]]]],{i,1,Length[depths]-1}]
]

OneZeroVectors[0]={{}};
OneZeroVectors[n_]:=Flatten[Outer[Join,OneZeroVectors[n-1],{{0},{1}},1],1]

EnlargeSymmetricMatrix[M_?MatrixQ]:=Flatten[Outer[ArrayFlatten[{{M,Transpose[{#1}]},{{#1},{{#2}}}}]&,DeleteCases[{0}~Join~#&/@OneZeroVectors[Length[M]-1],ZeroVector[Length[M]]],{0,1},1],1]~Join~{ArrayFlatten[{{{{0}},{UnitVector[Length[M],1]}},{Transpose[{UnitVector[Length[M],1]}],M}}]}

EnlargeSymmetricBigraph[M_?MatrixQ]:=EnlargeSymmetricBigraph[M]=Last/@(First/@SplitBy[SortBy[{CanonicalizeBigraph[GradedBigraph[#,1]],#}&/@EnlargeSymmetricMatrix[M],First],First])

EnlargeSymmetricBigraph[Ms:{___?MatrixQ}]:=EnlargeSymmetricBigraph[Ms]=
Last/@(First/@SplitBy[SortBy[{CanonicalizeBigraph[GradedBigraph[#,1]],#}&/@Flatten[EnlargeSymmetricBigraph/@Ms,1],First],First])

SymmetricBigraphMatrices[n_]:=Nest[EnlargeSymmetricBigraph,{{{1}}},n-1]

SymmetricBigraphs[n_]:=GradedBigraph[#,1]&/@SymmetricBigraphMatrices[n/2]

MatrixForm/@SymmetricBigraphMatrices[3]

N[GlobalEvenDimension/@SymmetricBigraphsWithMultiplicities[SymmetricBigraphMatrices[3][[1]],60]]

N[GlobalEvenDimension/@SymmetricBigraphsWithMultiplicities[SymmetricBigraphMatrices[3][[1]],120]]

SymmetricBigraphs[n_Integer,D_,K_]:=Flatten[SymmetricBigraphsWithMultiplicities[#,D,K]&/@SymmetricBigraphMatrices[n/2]]

GraphDegrees[g_GradedBigraph]:=With[{m=MatrixPower[GraphAdjacencyMatrix[g],2]},
Table[m[[i,i]],{i,1,GraphRank[g]}]]

GraphDegrees/@(GradedBigraph[#,1]&/@SymmetricBigraphMatrices[3])

UnivalentVertices[g_GradedBigraph]:=Count[GraphDegrees[g],1]

SymmetricBigraphs[8,120]

Length[%69]

DisplayBigraph/@(Union[%69/.n_Integer/;n≥1:>1])

SymmetricBigraphs[10,120]

Odometer[outOfBoundsQ_,initial_]:=
Module[{k=2,n=Length[initial],odometer=initial},
While[k≤n,If[outOfBoundsQ[odometer],odometer=Take[initial,k-1]~Join~{initial[[k]]+1}~Join~Drop[initial,k];++k,Sow[odometer];k=2]]
]

N[DimensionOfGenerator/@SymmetricBigraphs[6,60,1]]

N[DimensionOfGenerator/@SymmetricBigraphs[6,60,2]]

SymmetricBigraphs[n_Integer,D_]:=Join@@Table[SymmetricBigraphs[n,D,K],{K,1,Max[UnivalentVertices/@(GradedBigraph[#,1]&/@SymmetricBigraphMatrices[n/2])]/2}]

Clear[SymmetricBigraphsWithMultiplicities]
SymmetricBigraphsWithMultiplicities[M_?MatrixQ,D_,K_]:=SymmetricBigraphsWithMultiplicities[M,D,K]=Module[{n,d,a,i,j,k,Ma,L,As,graphs},
If[UnivalentVertices[GradedBigraph[M,1]]<2K,Return[{}]];
n=Length[M];
d=(Sqrt[((D-1)/(n-K))]);
i=0;a[1,_]=1;
Ma=M Table[a@@Sort[{i,j}],{i,1,n},{j,1,n}];
L[x_a]:=(k=1;While[DimensionOfGenerator[GradedBigraph[Ma/.x->k/._a->1,1]]≤d,++k];k);
As=Union[Cases[Ma,_a,∞]];
Print[L/@As];
graphs=GradedBigraph[#,1]&/@Flatten[Table[Ma,Evaluate[Sequence@@({#,1,L[#]}&/@As)]],Length[As]-1];
Cases[graphs,g_/;DimensionOfGenerator[g]≤d∧KnownObstructions[g]=={}∧GlobalEvenDimension[g]≤D∧Count[Flatten[ReducedDimensionsByDepth[g]],1]≥2K]
]

DisplayBigraph/@SymmetricBigraphs[8]