<｜begin▁of▁sentence｜>### Instruction:
Imagine that at the school science fair, a group of students is presenting a project exploring social dynamics. To illustrate their findings, they plan to create a computer simulation of a social network. In this network, each person (let's think of them like nodes in a network) has a specific number of connections (edges) to others and is part of a certain number of small close-knit groups (triangles). The students have collected data on how many friends (edges) everyone has and how many tight-knit trios (triangles) they belong to, resulting in a unique friendship and group involvement profile for each participant.

The collected data looks like this: each person's profile is represented as a pair of numbers where the first number signifies how many friends they have, and the second number indicates how many triads they are a part of. Here's the data for eight individuals: [(1, 0), (1, 0), (1, 0), (2, 0), (1, 0), (2, 1), (0, 1), (0, 1)].

The students now face a challenge: how to build a computer-generated version of this social network that reflects these friendship patterns and group connections — but without anyone being their own friend (no self-loops) and with all friendships being unique (no parallel edges). After setting up their simulation with these parameters using NetworkX, they also want to display this network visually as part of their presentation. 

Can you think of a way to guide them through this process, using NetworkX to create and visualize a graph that accurately represents their social network data, while adhering to the criteria of no self-loops and no parallel edges?
### Response:
import networkx as nx

# Define the joint independent edge degree and triangle degree sequence
deg = [(1, 0), (1, 0), (1, 0), (2, 0), (1, 0), (2, 1), (0, 1), (0, 1)]

# Generate the random clustered graph
G = nx.random_clustered_graph(deg)

# Remove parallel edges by creating a simple graph from G
G = nx.Graph(G)

# Remove self-loops from the graph
G.remove_edges_from(nx.selfloop_edges(G))

# Draw the graph
nx.draw(G, with_labels=True)
<|EOT|>
