<｜begin▁of▁sentence｜>### Instruction:
Imagine you are investigating a biological system where each organism can engage in two types of interactions: independent interactions and communal gatherings, akin to forming connections and participating in group functions within a cellular network. Each organism, analogous to a network node, has a set number of times it prefers to engage in solo interactions (independent edges) and collective events (triangles). We have a data set that represents these preferrable interaction patterns for a selection of organisms, which is encoded as pairs of numbers where the first number in each pair corresponds to the independent interactions and the second number to the communal engagements.

Here is the specific interaction pattern data set for our current study subjects: 
[(1, 0), (1, 0), (1, 0), (2, 0), (1, 0), (2, 1), (0, 1), (0, 1)].

We need to create a hypothetical model of this biological network that respects these individual interaction preferences. However, our model must also reflect a natural setting where each organism can only engage in a unique interaction with another once (no parallel interactions) and cannot engage in an interaction with itself (no self-interactions).

For our simulation purposes in NetworkX, how can we construct such a network that adheres to our interaction data set while satisfying the conditions of no parallel or self interactions to maintain the integrity of our biological network model?
### Response:
import networkx as nx

# Define the joint degree sequence
joint_degree_sequence = [(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(joint_degree_sequence)

# Remove parallel edges
G = nx.Graph(G)

# Remove self loops
G.remove_edges_from(nx.selfloop_edges(G))

# Print the edges of the graph
print(G.edges())
<|EOT|>
