Core Flow Concepts
Groups
Overview
Groups in Flow provide a powerful way to collaborate on bioinformatics projects. By creating groups, you can share projects, samples, data, and pipeline executions with your team members, lab colleagues, or external collaborators.
Groups enable:
- Team collaboration - Share resources with multiple users at once
- Access control - Manage who can view, edit, or share your data
- Simplified permissions - Grant access to entire teams without individual sharing
- Organizational structure - Reflect your lab or institutional hierarchy
Core Concepts
Group Membership Levels
Each user in a group has one of three membership levels:
- Invited - User has been invited but hasn't accepted yet
- Member - Regular member with access to shared resources
- Admin - Can manage the group and its members
Permission Types
When sharing resources with a group, you can grant three levels of permissions:
- View - Read-only access to the resource
- Edit - Can modify the resource
- Share - Can share the resource with others
Group Ownership
Resources in Flow can be owned by either:
- Individual users - Traditional single-owner model
- Groups - Shared ownership by all group admins
Group ownership is particularly useful for core facilities, shared instruments, or collaborative projects where no single person should have exclusive control.
Creating Groups
To create a new group:
- Navigate to your profile menu and select "Groups"
- Click "Create New Group"
- Provide:
- Group Name - A descriptive name for your group
- Slug - A unique identifier (auto-generated from name)
- Description - Optional details about the group's purpose
# Using the Python client
import flowbio
client = flowbio.Client()
group = client.create_group(
name="Smith Lab RNA-seq",
description="RNA-seq analysis group for the Smith Lab"
)
Managing Groups
Inviting Members
As a group admin, you can invite new members:
- Go to the group's page
- Click "Invite Members"
- Enter the email addresses of users to invite
- Select their initial permission level
Invited users will receive an email notification and must accept the invitation to join.
Managing Members
Group admins can:
- Promote members to admin - Share group management responsibilities
- Demote admins to member - Remove admin privileges
- Remove members - Revoke access to group resources
- View member list - See all current members and their roles
Leaving a Group
Members can leave a group at any time through the group settings. However, the last admin cannot leave a group - they must either:
- Promote another member to admin first
- Delete the group entirely
Sharing with Groups
Sharing Projects
To share a project with a group:
- Navigate to the project settings
- Click "Share with Group"
- Select the group and permission level
- Click "Share"
All group members will immediately gain access according to the permission level you selected.
Sharing Samples
Samples can be shared with groups either:
- Individually - Share specific samples
- In bulk - Share multiple samples at once
- Automatically - When uploaded to a group-owned project
Sharing Data
Data files follow the same sharing model:
# Share data with a group
data_file = client.get_data("data-123")
data_file.share_with_group(
group_slug="smith-lab",
permission="view"
)
Sharing Executions
Pipeline execution results can be shared with groups, allowing team members to:
- View execution status and logs
- Download results
- Use outputs in subsequent analyses
Group Permissions
Permission Inheritance
When a resource is shared with a group:
- All current members receive the specified permissions
- New members automatically gain access when they join
- Members who leave lose access immediately
Permission Hierarchy
Permissions follow a hierarchy:
- Share permission includes edit and view
- Edit permission includes view
- View is read-only access
Checking Permissions
You can verify your permissions on any resource:
# Check if you can edit a sample
sample = client.get_sample("sample-123")
if sample.can_edit:
print("You can edit this sample")
API Reference
REST Endpoints
GET /api/groups/
- List your groupsPOST /api/groups/
- Create a new groupGET /api/groups/{slug}/
- Get group detailsPUT /api/groups/{slug}/
- Update group (admin only)DELETE /api/groups/{slug}/
- Delete group (admin only)
Member Management
POST /api/groups/{slug}/invite/
- Invite membersPOST /api/groups/{slug}/remove/
- Remove a memberPOST /api/groups/{slug}/promote/
- Promote to adminPOST /api/groups/{slug}/demote/
- Demote to memberPOST /api/groups/{slug}/leave/
- Leave group
Best Practices
Group Organization
- Create purpose-specific groups - "Smith Lab RNA-seq" rather than just "Smith Lab"
- Use descriptive names - Include the institution, lab, or project name
- Document group purpose - Use the description field to explain the group's role
- Regular membership review - Periodically review and update member lists
Security Considerations
- Limit admin count - Only promote trusted users to admin
- Review sharing settings - Ensure appropriate permission levels
- Remove inactive members - Maintain group hygiene
- Use group ownership carefully - Understand that all admins have full control
Collaboration Patterns
- Project-based groups - Create groups for specific research projects
- Lab-wide groups - Share common resources and protocols
- Core facility groups - Manage client access to services
- Teaching groups - Share datasets and pipelines with students
Common Workflows
Setting Up a New Lab
# Create lab group
lab_group = client.create_group(
name="Johnson Lab",
description="Computational biology lab at University X"
)
# Create project
project = client.create_project(
name="RNA-seq Time Series",
group_owner=lab_group.slug # Group owns the project
)
# All lab members can now access the project
Core Facility Management
# Create client group for a specific project
client_group = client.create_group(
name="Project ABC - Smith Lab",
description="Sequencing project for Smith Lab grant ABC123"
)
# Share results when ready
execution = client.get_execution("exec-123")
execution.share_with_group(
group_slug=client_group.slug,
permission="view" # Clients can view but not modify
)
Teaching Environment
# Create course group
course_group = client.create_group(
name="BIOL 585 - Fall 2024",
description="Computational Biology course"
)
# Share example data
for sample in course_samples:
sample.share_with_group(
group_slug=course_group.slug,
permission="view"
)
# Share analysis pipeline
pipeline.share_with_group(
group_slug=course_group.slug,
permission="edit" # Students can modify for assignments
)
Troubleshooting
Cannot Invite Users
- Verify you have admin privileges in the group
- Check that the user has a Flow account
- Ensure the email address is correct
Cannot Leave Group
- You may be the last admin - promote another member first
- Check for resources you own that should be transferred
Missing Shared Resources
- Verify your group membership status
- Check the permission level on the shared resource
- Ensure you've accepted the group invitation
Permission Denied
- Confirm the resource was shared with sufficient permissions
- Check your membership level in the group
- Verify the sharing user had permission to share
Related Topics
- Permissions - Understanding Flow's permission system
- Projects - Managing projects
- Samples - Working with samples
- API Authentication - API access for groups