subgraph generation