Skip to main content

Python client for kaleidoscope.bio

Project description

Kalbio

Kalbio is a Python Client library for building applications with the Kaleidoscope platform.

Key features

  • Type-safe API Client: Built with Pydantic models for full type safety and IDE autocomplete support
  • Intuitive Resource Management: Clean, object-oriented interface for programs, activities, records, and more
  • Advanced Search & Filtering: Powerful query capabilities with type-safe filter operators
  • File Upload Support: Direct file upload to record fields with support for multiple file types
  • Bulk Operations: Import and export capabilities for efficient data management

Requirements

Authentication

Set your API credentials as environment variables before running examples:

export KALEIDOSCOPE_API_CLIENT_ID="your_client_id"
export KALEIDOSCOPE_API_CLIENT_SECRET="your_client_secret"

Example

Create it

Create a file main.py with:

from kalbio.client import KaleidoscopeClient
from kalbio.activities import ActivityStatusEnum

# Initialize the client using environment variables
client = KaleidoscopeClient()

# # Or with explicit arguements
# client = KaleidoscopeClient(
#     client_id="your_api_client_id",
#     client_secret="your_api_client_secret"
# )

# Work with activities
activities = client.activities.get_activities()
for activity in activities:
    print(f"Activity: {activity.title} - Status: {activity.status.value}")

Run it

Run the program with:

python main.py

Output:

Activity: Experiment 1 - Status: to do
Activity: Task 1 - Status: to do
Activity: Drug Tests - Status: in progress

Check it

You now have a fully functional Kaleidoscope API client.

Features

Intuitive API Design

Work with resources naturally:

# Records
record = client.records.get_record_by_id("record-uuid")

if record:
    record.add_value(
        field_id="field-uuid",
        content="Experiment result",
        activity_id="activity-uuid"
    )

# Entity Types
entity_types = client.entity_types.get_types()
compound_type = client.entity_types.get_type_by_name("Compound")

File Upload Support

Upload files directly to records:

# Upload a file to a record field
with open("experiment_data.csv", "rb") as file:
    record.update_field_file(
        field_id="data-field-id",
        file_name="experiment_data.csv",
        file_data=file,
        file_type="text/csv",
        activity_id="activity-uuid"
    )

Resource Management

Kalbio provides services for the following Kaleidoscope resources:

  • Programs: Organize your work
  • Activities: Tasks, experiments, projects, etc.
  • Records: Structured entity records
  • Entity Types: Define your data schemas
  • Entity Fields: Manage field definitions
  • Labels: Tag and categorize
  • Imports/Exports: Bulk data operations
  • Workspace: User and group management

Interactive Documentation

Available Services

Once you have a client instance, you have access to:

Service Description
client.programs Program management
client.activities Activities (tasks, experiments, projects)
client.records Entity record CRUD operations
client.entity_types Entity type definitions
client.entity_fields Field definitions (key fields, data fields)
client.labels Label management
client.imports Import operations and templates
client.exports Export operations
client.workspace Workspace, users, and groups

Activity Management

# Create an activity
new_activity = client.activities.create_activity(
    title="Synthesis Experiment",
    activity_type="experiment",
    program_ids=["program-uuid"],
    assigned_user_ids=["user-uuid"]
)

if new_activity:
    # Update activity status
    new_activity.update(status=ActivityStatusEnum.IN_PROGRESS)

    # Add records to activity
    new_activity.add_records(["record-uuid-1", "record-uuid-2"])

    # Get activity data
    record_data = new_activity.get_record_data()

Record Operations

# Get record by ID
record = client.records.get_record_by_id("record-uuid")

if record:
    # Add a value
    record.add_value(
        field_id="field-uuid",
        content="High purity sample",
        activity_id="activity-uuid"
    )

    # Get field value
    value = record.get_value_content(field_id="field-uuid")

    # Get values for specific activity
    activity_values = record.get_activity_data(activity_id="activity-uuid")

Full Example

Here's a complete workflow example:

# Initialize client
client = KaleidoscopeClient(
    KALEIDOSCOPE_API_CLIENT_ID,
    KALEIDOSCOPE_API_CLIENT_SECRET,
    "https://api.kaleidoscope.bio",
)

# 1. Get or create a program
programs = client.programs.get_programs()
program = programs[0] if programs else None

if program:
    print(f"Working with program: {program.title}")

    # 2. Get entity types
    entity_types = client.entity_types.get_types()
    compound_type = next(
        (et for et in entity_types if et.slice_name == "Compound"),
        None
    )

    if compound_type:
        # 3. Search for records
        record_ids = client.records.search_records(
            entity_slice_id=compound_type.id,
            limit=10
        )

        print(f"Found {len(record_ids)} compound records")

        # 4. Get detailed record information
        if record_ids:
            record = client.records.get_record_by_id(record_ids[0])
            assert record
            print(f"Record: {record.record_identifier}")

            # 5. Create an activity
            activity = client.activities.create_activity(
                title="Quality Check",
                activity_type="task",
                program_ids=[program.id]
            )
            assert activity

            # 6. Add data to record
            record.add_value(
                field_id="notes-field-id",
                content="Quality check completed successfully",
                activity_id=activity.id
            )

            # 7. Update activity status
            activity.update(task_status=ActivityStatusEnum.COMPLETE)

            print("Workflow completed successfully!")

Support

For support, email support@kaleidoscope.bio.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kalbio-0.2.5.tar.gz (47.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kalbio-0.2.5-py3-none-any.whl (55.2 kB view details)

Uploaded Python 3

File details

Details for the file kalbio-0.2.5.tar.gz.

File metadata

  • Download URL: kalbio-0.2.5.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Darwin/24.6.0

File hashes

Hashes for kalbio-0.2.5.tar.gz
Algorithm Hash digest
SHA256 43aabd9b926d54fbe48b1f2f0f0f19f02e371fdbc52d7e247a34ca50389d37de
MD5 03de46c14efae95bded0852e5667ff2c
BLAKE2b-256 fc152bf71b8f1bdeedb6898af7f06eb540e63aeb909be48aaf9785c71c442e23

See more details on using hashes here.

File details

Details for the file kalbio-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: kalbio-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 55.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Darwin/24.6.0

File hashes

Hashes for kalbio-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ee6629ffed8e1bbdc769874e08d6c0d602b41f2dc8a762a8b458fa4ea8d64635
MD5 2c05a9b5815cecc37eb6d669572cbd89
BLAKE2b-256 b662e9335923b408bc006cf8799ebe97135b046b08e9c170cf56093808c0e1de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page