Working with Memberships¶
Memberships represent relationships between PLEXOS components. With an Infrasys system with PLEXOS components you can query memberships as below
Get All Memberships¶
from r2x_plexos.models import PLEXOSMembership
memberships = list(system.get_supplemental_attributes(PLEXOSMembership))
print(f"Total memberships: {len(memberships)}")
Access Membership Details¶
for membership in memberships:
print(f"ID: {membership.membership_id}")
print(f"Parent: {membership.parent_object}")
print(f"Collection: {membership.collection}")
print(f"Child: {membership.child_object}")
Filter Memberships by Parent¶
# Get memberships for a specific component
generator = system.get_component(PLEXOSGenerator, "Gen1")
gen_memberships = [
m for m in system.get_supplemental_attributes(PLEXOSMembership)
if m.parent_object == generator.name
]
Filter by Collection Type¶
# Get all generator-node memberships
node_memberships = [
m for m in system.get_supplemental_attributes(PLEXOSMembership)
if m.collection == "Nodes"
]
Create New Membership¶
# Add membership as supplemental attribute
new_membership = PLEXOSMembership(
membership_id=None, # Will be assigned
parent_object="Gen1",
collection="Nodes",
child_object="Node1"
)
system.add_supplemental_attributes(new_membership)