semvec/pypi-packages huggingface dataset:
ouster-os1 1.1.1
Python client for the Ouster Lidar OS-1

# Python client for the Ouster Lidar OS-1

Compatible with Firmware Version 1.10.0 and python 3
> Your milage may vary with other versions, it was tested against a device OS1-16
> device running 1.10.0

## Installing
`pip install --upgrade ouster-os1`

## Quick start
```python
from os1 import OS1
from os1.utils import xyz_points


def handler(raw_packet):
    """Takes each packet and log it to a file as xyz points"""
    with open('points.csv', 'a') as f:
        x, y, z = xyz_points(raw_packet)
        for coords in zip(x, y, z):
            f.write("{}\n".format(','.join(coords)))


os1 = OS1('10.0.0.3', '10.0.0.1', mode='1024x10')  # OS1 sensor IP, destination IP, and resolution
# Inform the sensor of the destination host and reintialize it
os1.start()
# Start the loop which will handle and dispatch each packet to the handler
# function for processing
os1.run_forever(handler)
```

> You can run the server as threaded with `os1.run_forever(handler, threaded=True)`

## Recipes
Generally speed is a concern since the OS1 is sending 12,608 bytes/packet at a
rate of 1280 packets/sec (in 1024x20 or 2048x10 mode).
So a multiprocessing producer consumer model works well.
```python
import json
from multiprocessing import Process, Queue

from os1 import OS1
from os1.utils import build_trig_table, xyz_points


OS1_IP = '10.0.0.3'
HOST_IP = '10.0.0.2'
unprocessed_packets = Queue()


def handler(packet):
    unprocessed_packets.put(packet)


def worker(queue, beam_altitude_angles, beam_azimuth_angles) :
    build_trig_table(beam_altitude_angles, beam_azimuth_angles)
    while True:
        packet = queue.get()
        coords = xyz_points(packet) 
        # do work...


def spawn_workers(n, worker, *args, **kwargs):
    processes = []
    for i in range(n):
        process = Process(
            target=worker,
            args=args,
            kwargs=kwargs
        )
        process.start()
        processes.append(process)
    return processes


os1 = OS1(OS1_IP, HOST_IP)
beam_intrinsics = json.loads(os1.get_beam_intrinsics())
beam_alt_angles = beam_intrinsics['beam_altitude_angles']
beam_az_angles = beam_intrinsics['beam_azimuth_angles']
workers = spawn_workers(4, worker, unprocessed_packets, beam_alt_angles, beam_az_angles)
os1.start()
try:
    os1.run_forever(handler)
except KeyboardInterrupt:
    for w in workers:
        w.terminate()
```

## TCP API Commands

The TCP API commands can be accessed through an instance of the `OS1` object.

The following methods are supported:

* `get_config_txt`
* `get_sensor_info`
* `get_beam_intrinsics`
* `get_imu_intrinsics`
* `get_lidar_intrinsics`
* `get_config_param` - Supports querying active and staged parameters. Example: `os1.get_config_param('active', 'udp_ip')`
* `set_config_param` - Supports settings parameters to be staged. Example: `os1.set_config_param('udp_ip', '10.0.0.1')`
* `reinitialize` - Will reinitialize the sensor and apply all staged parameters to be active.
GameBenchAPI-PyClient-BigFish 1.0.3
A GameBench API Client Library.
Requires Python: >=3.7

A Python Client for the GameBench API

[![Build Status](https://travis-ci.com/bigfishgames/GameBenchAPI-PyClient.svg?branch=master)](https://travis-ci.com/bigfishgames/GameBenchAPI-PyClient)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=bigfishgames_GameBenchAPI&metric=coverage)](https://sonarcloud.io/dashboard?id=bigfishgames_GameBenchAPI)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=bigfishgames_GameBenchAPI&metric=alert_status)](https://sonarcloud.io/dashboard?id=bigfishgames_GameBenchAPI)
[![BCH compliance](https://bettercodehub.com/edge/badge/bigfishgames/GameBenchAPI-PyClient?branch=master)](https://bettercodehub.com/)
[![Gitter](https://badges.gitter.im/bigfishgames/GameBench-API-PyClient.svg)](https://gitter.im/bigfishgames/GameBench-API-PyClient?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

Please check out our [ZenHub Board](https://app.zenhub.com/workspaces/gamebenchapi-pyclient-5cabf535a736c27636b0283d/board?repos=180245554) for open issues and feature
requests.

Repository: [GitHub](https://github.com/bigfishgames/GameBenchAPI-PyClient)

For full documentation, go to the [ReadtheDocs](https://gamebenchapi-pyclient.readthedocs.io/) page.

[PyPi](https://pypi.org/project/GameBenchAPI-PyClient-BigFish/#description)

## Overview
To install, run `pip install GameBenchAPI-PyClient-BigFish`

The GameBench API Client library supplies a high-level object-oriented interface to the GameBench API. It is built in
Python 3.7 and uses the Requests library and Pandas data frames to easily integrate into data analysis software.

The library has two main architectural components; the models and API packages. The API package is responsible for
URL requests and dealing with the responses. The models are the objects representing the data returned. A mediator
provides the glue between the api and the models.

As a user of the library, you should only ever need to interact with the models creator class and the model objects
it can return.

Right now, the models are very thin. They only contain a property that has the data frame assigned. Over time we
would like to add common functionality, like aggregates, to these classes.

## The Basics
To make a request, import the ModelCreator class.
Instantiating the ModelCreator requires two arguments.  The first is a CamelCase style 'model'
named after the metric that you are looking for; the model is dynamically imported based on this
name.  The second argument is a dictionary that must include specific key/value pairs for
querying the GameBench API.

```python
from gamebench_api_client.models.creator.model_creator import ModelCreator



time_series_request = {
    'session_id': '66d926f47ff5a7a5d853d1058c6305614e1ae6a5'
}

creator = ModelCreator('Cpu', time_series_request)
cpu_time_series = creator.get_model()

results = cpu_time_series.data

print(results)

"""
      appUsage  daemonUsage    gbUsage  timestamp  totalCpuUsage
0  1372571.375            0  12.658228       5257      39.688461
"""

```