Skip to main content

practable-python

a library for connecting to experiments in python

Example Usage

import matplotlib.pyplot as plt
import numpy as np
from practable.core import Experiment
import time

messages = []
   
#modify with actual group code and experiment name
with Experiment('g-open-x3fca8','Spinner 51 (Open Days)', exact=True) as expt:
    
    # Command a step of 2 radians & collect the data
    expt.command('{"set":"mode","to":"stop"}')
    expt.command('{"set":"mode","to":"position"}')
    expt.command('{"set":"parameters","kp":1,"ki":0,"kd":0}')

    time.sleep(0.5)
        
    expt.command('{"set":"position","to":2}')    
    
    expt.ignore(0.5)
    messages = expt.collect(1.5)
    
    # Process the data
    ts = expt.extract_series(messages, "t")
    ds = expt.extract_series(messages, "d")
    cs = expt.extract_series(messages, "c")
    
    t = np.array(ts)
    t = t - t[0]
    
    # Plot the data
    plt.figure()        
    plt.plot(t/1e3,ds,'-b',label="position")
    plt.plot(t/1e3,cs,':r',label="set point")
    plt.xlabel("time(s)")
    plt.ylabel("position(rad)")
    plt.legend()

This script produces the following text output

Command: {"set":"mode","to":"stop"}
Command: {"set":"mode","to":"position"}
Command: {"set":"parameters","kp":1,"ki":0,"kd":0}
Command: {"set":"position","to":2}
Ignoring messages for 0.5 seconds |██████████████████████████████████████████████████| 100.0% Complete

Collecting messages for 1.5 seconds |██████████████████████████████████████████████████| 100.0% Complete

An a graph:

Example graphic from a spinner

Additional information

A user name is obtained and stored locally.

Bookings last only as long as the experiment is needed, because they are cancelled when the with environment exits. The default booking duration is 3 min.

You can use an existing booking by specifying user="cxxxxxxxxxx" where the username is found on the user tab of the booking system that holds the booking.

Other practable instances can be accessed by specifying it e.g. booking-server="https://some.booking.server"

Requirements

Recommend python >= 3.8 because we're using websockets 12.0

Release files for practable 0.0.25

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for practable 0.0.25
File Size Uploaded
practable-0.0.25.tar.gz 79.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for practable 0.0.25
File Interpreter ABI Platform
practable-0.0.25-py3-none-any.whl Python 3 none any Details

Total release size: 101.5 kB

Release files / practable-0.0.25.tar.gz

Download URL practable-0.0.25.tar.gz
Size 79.9 kB
Tags Source
SHA-256 checksum
How to use checksums
df4aef11abb218fb039a490faf485f35195d87c3410cd511732f7972fab09e0f
BLAKE2b-256 checksum
How to use checksums
28de4267c21d52374c2631c3a205c881e1f130301fbf7c194016a9695a9207e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.0 CPython/3.12.5

Release files / practable-0.0.25-py3-none-any.whl

Download URL practable-0.0.25-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
add4e38848c7b117f41a110653983eff3d04a0151e10625af5bdacbacb815a5e
BLAKE2b-256 checksum
How to use checksums
a1f5bad3d426326adb120ea8f7b3b587e9dc55bcbf45711d3e0681d7803cbbda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.0 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.0.25 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page